diff options
author | Bryan Mawhinney <bryanmawhinney@google.com> | 2010-12-09 14:59:26 +0000 |
---|---|---|
committer | Bryan Mawhinney <bryanmawhinney@google.com> | 2010-12-09 14:59:26 +0000 |
commit | 358868df5043b240c9a241c7bb75128ff94b1f34 (patch) | |
tree | eca40e090fb1101b96acab1c722b4f996048de44 /carousel/java | |
parent | e8cab95c5f73ddf6843d82793decc3adb4692860 (diff) | |
download | android_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')
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); } /** |