diff options
author | Alex Sakhartchouk <alexst@google.com> | 2011-02-10 15:46:01 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2011-02-10 15:46:01 -0800 |
commit | cc3b7cd293b5b68d7e4c255b4e0ef449bd200fc5 (patch) | |
tree | 039e56ab9fb18bedf63a1925d4ebaebd2ee20a12 /libs/rs | |
parent | f2270583fd7db6465c61683deef7e81a1376bad7 (diff) | |
parent | bf3aae10b5fa73cced245276f3b2f433c9cd635e (diff) | |
download | frameworks_base-cc3b7cd293b5b68d7e4c255b4e0ef449bd200fc5.zip frameworks_base-cc3b7cd293b5b68d7e4c255b4e0ef449bd200fc5.tar.gz frameworks_base-cc3b7cd293b5b68d7e4c255b4e0ef449bd200fc5.tar.bz2 |
am bf3aae10: am efc48eea: Merge "HelloWorld graphics sample for Renderscript." into honeycomb
* commit 'bf3aae10b5fa73cced245276f3b2f433c9cd635e':
HelloWorld graphics sample for Renderscript.
Diffstat (limited to 'libs/rs')
-rw-r--r-- | libs/rs/java/HelloWorld/Android.mk | 30 | ||||
-rw-r--r-- | libs/rs/java/HelloWorld/AndroidManifest.xml | 31 | ||||
-rw-r--r-- | libs/rs/java/HelloWorld/res/drawable/test_pattern.png | bin | 0 -> 307 bytes | |||
-rw-r--r-- | libs/rs/java/HelloWorld/src/com/android/rs/helloworld/HelloWorld.java | 54 | ||||
-rw-r--r-- | libs/rs/java/HelloWorld/src/com/android/rs/helloworld/HelloWorldRS.java | 52 | ||||
-rw-r--r-- | libs/rs/java/HelloWorld/src/com/android/rs/helloworld/HelloWorldView.java | 76 | ||||
-rw-r--r-- | libs/rs/java/HelloWorld/src/com/android/rs/helloworld/helloworld.rs | 47 |
7 files changed, 290 insertions, 0 deletions
diff --git a/libs/rs/java/HelloWorld/Android.mk b/libs/rs/java/HelloWorld/Android.mk new file mode 100644 index 0000000..72f0f03 --- /dev/null +++ b/libs/rs/java/HelloWorld/Android.mk @@ -0,0 +1,30 @@ +# +# Copyright (C) 2011 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +ifneq ($(TARGET_SIMULATOR),true) + +LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_MODULE_TAGS := optional + +LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src) + +LOCAL_PACKAGE_NAME := HelloWorld + +include $(BUILD_PACKAGE) + +endif diff --git a/libs/rs/java/HelloWorld/AndroidManifest.xml b/libs/rs/java/HelloWorld/AndroidManifest.xml new file mode 100644 index 0000000..e7c9a95 --- /dev/null +++ b/libs/rs/java/HelloWorld/AndroidManifest.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2011 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.rs.helloworld"> + <uses-sdk android:minSdkVersion="11" /> + <application android:label="HelloWorld" + android:icon="@drawable/test_pattern"> + <activity android:name="HelloWorld" + android:label="HelloWorld" + android:theme="@android:style/Theme.Black.NoTitleBar"> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + </application> +</manifest> diff --git a/libs/rs/java/HelloWorld/res/drawable/test_pattern.png b/libs/rs/java/HelloWorld/res/drawable/test_pattern.png Binary files differnew file mode 100644 index 0000000..e7d1455 --- /dev/null +++ b/libs/rs/java/HelloWorld/res/drawable/test_pattern.png diff --git a/libs/rs/java/HelloWorld/src/com/android/rs/helloworld/HelloWorld.java b/libs/rs/java/HelloWorld/src/com/android/rs/helloworld/HelloWorld.java new file mode 100644 index 0000000..f63015e --- /dev/null +++ b/libs/rs/java/HelloWorld/src/com/android/rs/helloworld/HelloWorld.java @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.rs.helloworld; + +import android.app.Activity; +import android.os.Bundle; + +// Renderscript activity +public class HelloWorld extends Activity { + + // Custom view to use with RenderScript + private HelloWorldView mView; + + @Override + public void onCreate(Bundle icicle) { + super.onCreate(icicle); + + // Create our view and set it as the content of our Activity + mView = new HelloWorldView(this); + setContentView(mView); + } + + @Override + protected void onResume() { + // Ideally an app should implement onResume() and onPause() + // to take appropriate action when the activity loses focus + super.onResume(); + mView.resume(); + } + + @Override + protected void onPause() { + // Ideally an app should implement onResume() and onPause() + // to take appropriate action when the activity loses focus + super.onPause(); + mView.pause(); + } + +} + diff --git a/libs/rs/java/HelloWorld/src/com/android/rs/helloworld/HelloWorldRS.java b/libs/rs/java/HelloWorld/src/com/android/rs/helloworld/HelloWorldRS.java new file mode 100644 index 0000000..c9c1316 --- /dev/null +++ b/libs/rs/java/HelloWorld/src/com/android/rs/helloworld/HelloWorldRS.java @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.rs.helloworld; + +import android.content.res.Resources; +import android.renderscript.*; + +// This is the renderer for the HelloWorldView +public class HelloWorldRS { + private Resources mRes; + private RenderScriptGL mRS; + + private ScriptC_helloworld mScript; + + public HelloWorldRS() { + } + + // This provides us with the renderscript context and resources that + // allow us to create the script that does rendering + public void init(RenderScriptGL rs, Resources res) { + mRS = rs; + mRes = res; + initRS(); + } + + public void onActionDown(int x, int y) { + mScript.set_gTouchX(x); + mScript.set_gTouchY(y); + } + + private void initRS() { + mScript = new ScriptC_helloworld(mRS, mRes, R.raw.helloworld); + mRS.bindRootScript(mScript); + } +} + + + diff --git a/libs/rs/java/HelloWorld/src/com/android/rs/helloworld/HelloWorldView.java b/libs/rs/java/HelloWorld/src/com/android/rs/helloworld/HelloWorldView.java new file mode 100644 index 0000000..8cddb2a --- /dev/null +++ b/libs/rs/java/HelloWorld/src/com/android/rs/helloworld/HelloWorldView.java @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.rs.helloworld; + +import android.renderscript.RSSurfaceView; +import android.renderscript.RenderScriptGL; + +import android.content.Context; +import android.view.MotionEvent; + +public class HelloWorldView extends RSSurfaceView { + // Renderscipt context + private RenderScriptGL mRS; + // Script that does the rendering + private HelloWorldRS mRender; + + public HelloWorldView(Context context) { + super(context); + ensureRenderScript(); + } + + private void ensureRenderScript() { + if (mRS == null) { + // Initialize renderscript with desired surface characteristics. + // In this case, just use the defaults + RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig(); + mRS = createRenderScriptGL(sc); + // Create an instance of the script that does the rendering + mRender = new HelloWorldRS(); + mRender.init(mRS, getResources()); + } + } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + ensureRenderScript(); + } + + @Override + protected void onDetachedFromWindow() { + // Handle the system event and clean up + mRender = null; + if (mRS != null) { + mRS = null; + destroyRenderScriptGL(); + } + } + + @Override + public boolean onTouchEvent(MotionEvent ev) { + // Pass touch events from the system to the rendering script + if (ev.getAction() == MotionEvent.ACTION_DOWN) { + mRender.onActionDown((int)ev.getX(), (int)ev.getY()); + return true; + } + + return false; + } +} + + diff --git a/libs/rs/java/HelloWorld/src/com/android/rs/helloworld/helloworld.rs b/libs/rs/java/HelloWorld/src/com/android/rs/helloworld/helloworld.rs new file mode 100644 index 0000000..fa171f5 --- /dev/null +++ b/libs/rs/java/HelloWorld/src/com/android/rs/helloworld/helloworld.rs @@ -0,0 +1,47 @@ +// Copyright (C) 2011 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#pragma version(1) + +// Tell which java package name the reflected files should belong to +#pragma rs java_package_name(com.android.rs.helloworld) + +// Built-in header with graphics API's +#include "rs_graphics.rsh" + +// gTouchX and gTouchY are variables that will be reflected for use +// by the java API. We can use them to notify the script of touch events. +int gTouchX; +int gTouchY; + +// This is invoked automatically when the script is created +void init() { + gTouchX = 50.0f; + gTouchY = 50.0f; +} + +int root(int launchID) { + + // Clear the background color + rsgClearColor(0.0f, 0.0f, 0.0f, 0.0f); + // Tell the runtime what the font color should be + rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f); + // Introuduce ourselves to the world by drawing a greeting + // at the position user touched on the screen + rsgDrawText("Hello World!", gTouchX, gTouchY); + + // Return value tells RS roughly how often to redraw + // in this case 20 ms + return 20; +} |