summaryrefslogtreecommitdiffstats
path: root/carousel/java
diff options
context:
space:
mode:
authorBryan Mawhinney <bryanmawhinney@google.com>2010-12-09 14:59:26 +0000
committerBryan Mawhinney <bryanmawhinney@google.com>2010-12-09 14:59:26 +0000
commit358868df5043b240c9a241c7bb75128ff94b1f34 (patch)
treeeca40e090fb1101b96acab1c722b4f996048de44 /carousel/java
parente8cab95c5f73ddf6843d82793decc3adb4692860 (diff)
downloadandroid_frameworks_ex-358868df5043b240c9a241c7bb75128ff94b1f34.tar.gz
android_frameworks_ex-358868df5043b240c9a241c7bb75128ff94b1f34.tar.bz2
android_frameworks_ex-358868df5043b240c9a241c7bb75128ff94b1f34.zip
Use ids rather than Meshes when specifying default / loading geometries.
This allows them to be reloaded when required, thus fixing http:/b/3237395 Change-Id: I9eea73d85a8c272debbfb45d5577ded185cf8112
Diffstat (limited to 'carousel/java')
-rw-r--r--carousel/java/com/android/ex/carousel/CarouselController.java26
-rw-r--r--carousel/java/com/android/ex/carousel/CarouselRS.java15
-rw-r--r--carousel/java/com/android/ex/carousel/CarouselView.java18
3 files changed, 37 insertions, 22 deletions
diff --git a/carousel/java/com/android/ex/carousel/CarouselController.java b/carousel/java/com/android/ex/carousel/CarouselController.java
index d432e28..40853d5 100644
--- a/carousel/java/com/android/ex/carousel/CarouselController.java
+++ b/carousel/java/com/android/ex/carousel/CarouselController.java
@@ -59,8 +59,8 @@ public class CarouselController {
private Bitmap mBackgroundBitmap;
private Bitmap mDefaultLineBitmap = Bitmap.createBitmap(
new int[] {0x00000000, 0xffffffff, 0x00000000}, 0, 3, 3, 1, Bitmap.Config.ARGB_4444);
- private Mesh mDefaultGeometry;
- private Mesh mLoadingGeometry;
+ private int mDefaultGeometry;
+ private int mLoadingGeometry;
private float[] mDefaultCardMatrix;
private int mCardCount = 0;
private int mVisibleSlots = 0;
@@ -144,13 +144,11 @@ public class CarouselController {
* @param resId
* @return the loaded mesh or null if it cannot be loaded
*/
- public Mesh loadGeometry(Resources res, int resId) {
- FileA3D model = FileA3D.createFromResource(mRS, res, resId);
- FileA3D.IndexEntry entry = model.getIndexEntry(0);
- if(entry == null || entry.getClassID() != FileA3D.ClassID.MESH) {
- return null;
+ public Mesh loadGeometry(int resId) {
+ if (mRenderScript != null) {
+ return mRenderScript.loadGeometry(resId);
}
- return (Mesh) entry.getObject();
+ return null;
}
/**
@@ -477,9 +475,10 @@ public class CarouselController {
*
* @param mesh
*/
- public void setDefaultGeometry(Mesh mesh) {
- mDefaultGeometry = mesh;
+ public void setDefaultGeometry(int resId) {
+ mDefaultGeometry = resId;
if (mRenderScript != null) {
+ Mesh mesh = mRenderScript.loadGeometry(resId);
mRenderScript.setDefaultGeometry(mesh);
}
}
@@ -505,11 +504,12 @@ public class CarouselController {
* simple planar geometry is used, consider enabling depth test with
* {@link CarouselView#setForceBlendCardsWithZ(boolean)}
*
- * @param mesh
+ * @param resId
*/
- public void setLoadingGeometry(Mesh mesh) {
- mLoadingGeometry = mesh;
+ public void setLoadingGeometry(int resId) {
+ mLoadingGeometry = resId;
if (mRenderScript != null) {
+ Mesh mesh = mRenderScript.loadGeometry(resId);
mRenderScript.setLoadingGeometry(mesh);
}
}
diff --git a/carousel/java/com/android/ex/carousel/CarouselRS.java b/carousel/java/com/android/ex/carousel/CarouselRS.java
index 1e9175c..a5e53d2 100644
--- a/carousel/java/com/android/ex/carousel/CarouselRS.java
+++ b/carousel/java/com/android/ex/carousel/CarouselRS.java
@@ -752,4 +752,19 @@ public class CarouselRS {
throw new IllegalArgumentException("Unknown configuration");
}
}
+
+ public Mesh loadGeometry(int resId) {
+ if (resId == 0) {
+ return null;
+ }
+ FileA3D model = FileA3D.createFromResource(mRS, mRes, resId);
+ if (model == null) {
+ return null;
+ }
+ FileA3D.IndexEntry entry = model.getIndexEntry(0);
+ if(entry == null || entry.getClassID() != FileA3D.ClassID.MESH) {
+ return null;
+ }
+ return (Mesh) entry.getObject();
+ }
}
diff --git a/carousel/java/com/android/ex/carousel/CarouselView.java b/carousel/java/com/android/ex/carousel/CarouselView.java
index cd1a919..471e827 100644
--- a/carousel/java/com/android/ex/carousel/CarouselView.java
+++ b/carousel/java/com/android/ex/carousel/CarouselView.java
@@ -188,13 +188,13 @@ public abstract class CarouselView extends RSSurfaceView {
* @return the loaded mesh or null if it cannot be loaded
*/
public Mesh loadGeometry(int resId) {
- return mController.loadGeometry(mContext.getResources(), resId);
+ return mController.loadGeometry(resId);
}
/**
- * Load A3D file from resource. If resId == 0, will clear geometry for this item.
+ * Set the geometry for a given item.
* @param n
- * @param resId
+ * @param mesh
*/
public void setGeometryForItem(int n, Mesh mesh) {
mController.setGeometryForItem(n, mesh);
@@ -408,10 +408,10 @@ public abstract class CarouselView extends RSSurfaceView {
* simple planar geometry is used, consider enabling depth test with
* {@link CarouselView#setForceBlendCardsWithZ(boolean)}
*
- * @param mesh
+ * @param resId
*/
- public void setDefaultGeometry(Mesh mesh) {
- mController.setDefaultGeometry(mesh);
+ public void setDefaultGeometry(int resId) {
+ mController.setDefaultGeometry(resId);
}
/**
@@ -432,10 +432,10 @@ public abstract class CarouselView extends RSSurfaceView {
* simple planar geometry is used, consider enabling depth test with
* {@link CarouselView#setForceBlendCardsWithZ(boolean)}
*
- * @param mesh
+ * @param resId
*/
- public void setLoadingGeometry(Mesh mesh) {
- mController.setLoadingGeometry(mesh);
+ public void setLoadingGeometry(int resId) {
+ mController.setLoadingGeometry(resId);
}
/**