summaryrefslogtreecommitdiffstats
path: root/libs/rs/java/Film
diff options
context:
space:
mode:
authorJason Sams <rjsams@android.com>2009-06-19 18:33:44 -0700
committerJason Sams <rjsams@android.com>2009-06-19 18:33:44 -0700
commitaf49c744d0fc7c9ced4a74afda1bbcd08440bdca (patch)
tree2d4f8b03a72c2cc4e484f2843c2495b94e7cb998 /libs/rs/java/Film
parent462d11b880cba72584c135397c0a82618ab63217 (diff)
downloadframeworks_base-af49c744d0fc7c9ced4a74afda1bbcd08440bdca.zip
frameworks_base-af49c744d0fc7c9ced4a74afda1bbcd08440bdca.tar.gz
frameworks_base-af49c744d0fc7c9ced4a74afda1bbcd08440bdca.tar.bz2
implement modeview matrix sliding from within scripts.
Diffstat (limited to 'libs/rs/java/Film')
-rw-r--r--libs/rs/java/Film/AndroidManifest.xml1
-rw-r--r--libs/rs/java/Film/res/raw/filmstrip.c83
-rw-r--r--libs/rs/java/Film/src/com/android/film/FilmRS.java33
-rw-r--r--libs/rs/java/Film/src/com/android/film/FilmView.java2
4 files changed, 48 insertions, 71 deletions
diff --git a/libs/rs/java/Film/AndroidManifest.xml b/libs/rs/java/Film/AndroidManifest.xml
index 491ee14..a5ce8a1 100644
--- a/libs/rs/java/Film/AndroidManifest.xml
+++ b/libs/rs/java/Film/AndroidManifest.xml
@@ -3,6 +3,7 @@
package="com.android.film">
<application android:label="Film">
<activity android:name="Film"
+ android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
diff --git a/libs/rs/java/Film/res/raw/filmstrip.c b/libs/rs/java/Film/res/raw/filmstrip.c
index 75810c0..a3b3d90 100644
--- a/libs/rs/java/Film/res/raw/filmstrip.c
+++ b/libs/rs/java/Film/res/raw/filmstrip.c
@@ -2,8 +2,8 @@
#pragma version(1)
#pragma stateVertex(PV)
-#pragma stateFragment(default)
-#pragma stateFragmentStore(default)
+#pragma stateFragment(PFBackground)
+#pragma stateFragmentStore(PFSBackground)
/*
typedef struct FilmScriptUserEnvRec {
@@ -19,66 +19,54 @@ typedef struct FilmScriptUserEnvRec {
// bank1: (r) The position information
// bank2: (rw) The temporary texture state
-int main(void* con, int ft, int index)
+int main(int index)
{
- int f1;
- int f2;
- int f3;
- int f4;
- int f5;
- int f6;
- int f7;
- int f8;
- int f9;
- int f10;
- int f11;
- int f12;
- int f13;
- int f14;
- int f15;
- int f16;
-
+ int f1,f2,f3,f4, f5,f6,f7,f8, f9,f10,f11,f12, f13,f14,f15,f16;
+ int g1,g2,g3,g4, g5,g6,g7,g8, g9,g10,g11,g12, g13,g14,g15,g16;
+ int float_1;
+ int float_0;
+ int float_2;
+ int float_90;
+ int float_0_5;
int trans; // float
int rot; // float
+ int x;
+ float_2 = intToFloat(2);
+ float_1 = intToFloat(1);
+ float_0 = intToFloat(0);
+ float_90= intToFloat(90);
+ float_0_5 = fixedtoFloat(0x8000);
- //trans = loadEnvF(con, 1, 0);
- //rot = loadEnvF(con, 1, 1);
-
- //matrixLoadTranslate(con, &f1, 0, 0, trans);
- //matrixRotate(con, &f1, rot, 1, 0, 0);
- //matrixScale(con, &f1, 3.0f, 3.0f, 3.0f);
- //storeEnvMatrix(con, 3, RS_PROGRAM_VERTEX_MODELVIEW_OFFSET, &f1);
+ trans = loadF(1, 0);
+ rot = loadF(1, 1);
- //rsc_Matrix m;
- //int imgId = 0;
-
- // This should be replaced in the compiler with a
- // smart load of a structure.
- //const FilmScriptUserEnv *env = loadEnvVp(con, 0,0);
+ matrixLoadScale(&f16, float_2, float_2, float_2);
+ matrixTranslate(&f16, 0, 0, trans);
+ matrixRotate(&f16, float_90, 0, 0, float_1);
+ matrixRotate(&f16, rot, float_1, 0, 0);
+ storeEnvMatrix(3, 0, &f16);
//materialDiffuse(con, 0.0f, 0.0f, 0.0f, 1.0f);
//materialSpecular(con, 0.5f, 0.5f, 0.5f, 0.5f);
- //materialShininess(con, 20.0f);
-
+ //materialShininess(intToFloat(20));
+ //lightPosition(con, 0.2f, -0.2f, -2.0f, 0.0f);
+ //enable(con, GL_LIGHTING);
+ renderTriangleMesh(NAMED_mesh);
- //lightPosition(con, 0.2f, -0.2f, -2.0f, 0.0f);
- //contextBindProgramFragmentStore(con, NAMED_PFSBackground);
- //contextBindProgramFragment(con, NAMED_PFBackground);
- //enable(con, GL_LIGHTING);
- renderTriangleMesh(con, NAMED_mesh);
+ //int imgId = 0;
/*
- contextBindProgramFragmentStore(con, env->fsImages);
- contextBindProgramFragment(con, env->fpImages);
- disable(con, GL_LIGHTING);
+ contextBindProgramFragmentStore(env->fsImages);
+ contextBindProgramFragment(env->fpImages);
+ disable(GL_LIGHTING);
- float focusPos = loadEnvF(con, 1, 2);
- int32_t focusID = 0;
- int32_t lastFocusID = loadEnvI32(con, 2, 0);
- int32_t imgCount = 13;
+ float focusPos = loadEnvF(1, 2);
+ int focusID = 0;
+ int lastFocusID = loadEnvI32(2, 0);
+ int imgCount = 13;
if (trans > (-.3)) {
focusID = -1.0 - focusPos;
@@ -127,5 +115,6 @@ int main(void* con, int ft, int index)
renderTriangleMeshRange(con, env->mesh, env->triangleOffsets[start], env->triangleOffsets[end] - env->triangleOffsets[start]);
}
*/
+ return 0;
}
diff --git a/libs/rs/java/Film/src/com/android/film/FilmRS.java b/libs/rs/java/Film/src/com/android/film/FilmRS.java
index b4b5f4b..5c6a6fa 100644
--- a/libs/rs/java/Film/src/com/android/film/FilmRS.java
+++ b/libs/rs/java/Film/src/com/android/film/FilmRS.java
@@ -51,18 +51,17 @@ public class FilmRS {
public void setFilmStripPosition(int x, int y)
{
- if (x < 0) {
- x = 0;
- }
- if (x > 50) {
+ if (x < 50) {
x = 50;
}
+ if (x > 270) {
+ x = 270;
+ }
- float anim = ((float)x) / 50.f;
- mBufferPos[0] = -2f * anim - .2f; // translation
- mBufferPos[1] = -90 + (anim * 40); // rotation
+ float anim = ((float)x-50) / 270.f;
+ mBufferPos[0] = 2f * anim + 0.5f; // translation
+ mBufferPos[1] = (anim * 40); // rotation
mBufferPos[2] = ((float)y) / 16.f - 8; // focusPos
-
mAllocPos.data(mBufferPos);
}
@@ -166,28 +165,14 @@ public class FilmRS {
mAllocPos = mRS.allocationCreatePredefSized(
RenderScript.ElementPredefined.USER_FLOAT,
mBufferPos.length);
- setFilmStripPosition(0, 0);
mPVA = new ProgramVertexAlloc(mRS);
mPV.bindAllocation(0, mPVA.mAlloc);
mPVA.setupProjectionNormalized(320, 480);
- Matrix m = new Matrix();
-
- m.loadIdentity();
-
- m.translate(0, 0, 1);
- m.rotate(90, 0, 0, 1);
- m.rotate(20, 1, 0, 0);
- mPVA.loadModelview(m);
-
-
-
-
- //mScriptStrip.bindAllocation(mEnvAlloc, 0);
mScriptStrip.bindAllocation(mAllocPos, 1);
- //mScriptStrip.bindAllocation(gStateAlloc, 2);
+ //mScriptStrip.bindAllocation(gStateAlloc, 2);
mScriptStrip.bindAllocation(mPVA.mAlloc, 3);
@@ -234,6 +219,8 @@ public class FilmRS {
mPartAlloc.data(t2);
*/
+ setFilmStripPosition(0, 0);
+
mRS.contextBindRootScript(mScriptStrip);
}
}
diff --git a/libs/rs/java/Film/src/com/android/film/FilmView.java b/libs/rs/java/Film/src/com/android/film/FilmView.java
index 452d522..a743b1b 100644
--- a/libs/rs/java/Film/src/com/android/film/FilmView.java
+++ b/libs/rs/java/Film/src/com/android/film/FilmView.java
@@ -74,7 +74,7 @@ public class FilmView extends RSSurfaceView {
if (act == ev.ACTION_UP) {
ret = false;
}
- //mRender.newTouchPosition((int)ev.getX(), (int)ev.getY());
+ mRender.setFilmStripPosition((int)ev.getX(), (int)ev.getY());
return ret;
}
}