1c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma/* 2c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * Copyright (C) 2010 The Android Open Source Project 3c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 4c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * Licensed under the Apache License, Version 2.0 (the "License"); 5c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * you may not use this file except in compliance with the License. 6c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * You may obtain a copy of the License at 7c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 8c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * http://www.apache.org/licenses/LICENSE-2.0 9c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 10c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * Unless required by applicable law or agreed to in writing, software 11c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * distributed under the License is distributed on an "AS IS" BASIS, 12c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * See the License for the specific language governing permissions and 14c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * limitations under the License. 15c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 16c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 17c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shumapackage com.android.ex.carousel; 18c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 19c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shumaimport com.android.ex.carousel.CarouselRS.CarouselCallback; 207cc5787b49708f63aeb818bdd06efed3d4229925Jim Shumaimport com.android.ex.carousel.CarouselView.DetailAlignment; 21c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 22c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shumaimport android.graphics.Bitmap; 23c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shumaimport android.renderscript.Float4; 24c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shumaimport android.renderscript.Mesh; 25c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shumaimport android.renderscript.RenderScriptGL; 26c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shumaimport android.util.Log; 27c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 28c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma/** 29c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * <p> 30c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * This class represents the basic building block for using a 3D Carousel. The Carousel is 31c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * basically a scene of cards and slots. The spacing between cards is dictated by the number 32c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * of slots and the radius. The number of visible cards dictates how far the Carousel can be moved. 33c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * If the number of cards exceeds the number of slots, then the Carousel will continue to go 34c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * around until the last card can be seen. 35c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 36c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shumapublic class CarouselController { 37c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private final int DEFAULT_SLOT_COUNT = 10; 38c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private final float DEFAULT_RADIUS = 20.0f; 39c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private final int DEFAULT_VISIBLE_DETAIL_COUNT = 3; 404fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma private final int DEFAULT_PREFETCH_CARD_COUNT = 2; 410cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney private final int DEFAULT_ROW_COUNT = 1; 429afded4d212243e554c2695c4a2f90c13628e24bBryan Mawhinney private final float DEFAULT_OVERSCROLL_SLOTS = 1.0f; 430cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney private final float DEFAULT_ROW_SPACING = 0.0f; 44c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private final float DEFAULT_SWAY_SENSITIVITY = 0.0f; 45c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private final float DEFAULT_FRICTION_COEFFICIENT = 10.0f; 46c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private final float DEFAULT_DRAG_FACTOR = 0.25f; 474a8736e22d7b40ab9dfa3fbd8a10de92144912b3Bryan Mawhinney private final int DEFAULT_DETAIL_ALIGNMENT = 484a8736e22d7b40ab9dfa3fbd8a10de92144912b3Bryan Mawhinney DetailAlignment.VIEW_TOP | DetailAlignment.LEFT; 49c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private CarouselRS mRenderScript; 50c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private RenderScriptGL mRS; 51c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private static final String TAG = "CarouselController"; 52c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private static final boolean DBG = false; 53c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 54c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma // These shadow the state of the renderer in case the surface changes so the surface 55c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma // can be restored to its previous state. 56c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private Bitmap mDefaultBitmap; 57c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private Bitmap mLoadingBitmap; 58c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private Bitmap mBackgroundBitmap; 59c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private Bitmap mDefaultLineBitmap = Bitmap.createBitmap( 605621100edc38c6e7f7fd7ef54945ba035204fe49Jim Shuma new int[] {0x00000000, 0xffffffff, 0x00000000}, 0, 3, 3, 1, Bitmap.Config.ARGB_4444); 61358868df5043b240c9a241c7bb75128ff94b1f34Bryan Mawhinney private int mDefaultGeometry; 62358868df5043b240c9a241c7bb75128ff94b1f34Bryan Mawhinney private int mLoadingGeometry; 6351dd0196e4f3bd4086545f5bf30038ca9ad9ac27Bryan Mawhinney private float[] mDefaultCardMatrix; 64c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private int mCardCount = 0; 65c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private int mVisibleSlots = 0; 66c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private int mVisibleDetails = DEFAULT_VISIBLE_DETAIL_COUNT; 674fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma private int mPrefetchCardCount = DEFAULT_PREFETCH_CARD_COUNT; 684a8736e22d7b40ab9dfa3fbd8a10de92144912b3Bryan Mawhinney private int mDetailTextureAlignment = DEFAULT_DETAIL_ALIGNMENT; 69fb179e7afd8f02be63061b478b0283e3085fc25fJim Miller private boolean mForceBlendCardsWithZ = false; 70c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private boolean mDrawRuler = true; 71c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private float mStartAngle; 72a84feeb7e4dc1a75ec6d0b1f2494893987fc3ca3Jack Palevich private float mCarouselRotationAngle; 73c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private float mRadius = DEFAULT_RADIUS; 74c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private float mCardRotation = 0.0f; 7583d7a5f03e6511372f73e3e4e03a6d403b20125dBryan Mawhinney private boolean mCardsFaceTangent = false; 769afded4d212243e554c2695c4a2f90c13628e24bBryan Mawhinney private float mOverscrollSlots = DEFAULT_OVERSCROLL_SLOTS; 77c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private float mSwaySensitivity = DEFAULT_SWAY_SENSITIVITY; 78c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private float mFrictionCoefficient = DEFAULT_FRICTION_COEFFICIENT; 79c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private float mDragFactor = DEFAULT_DRAG_FACTOR; 80c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private int mSlotCount = DEFAULT_SLOT_COUNT; 810cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney private int mRowCount = DEFAULT_ROW_COUNT; 820cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney private float mRowSpacing = DEFAULT_ROW_SPACING; 83c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private float mEye[] = { 20.6829f, 2.77081f, 16.7314f }; 84c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private float mAt[] = { 14.7255f, -3.40001f, -1.30184f }; 85c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private float mUp[] = { 0.0f, 1.0f, 0.0f }; 86c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private Float4 mBackgroundColor = new Float4(0.0f, 0.0f, 0.0f, 1.0f); 87c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private CarouselCallback mCarouselCallback; 88c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private float mRezInCardCount = 0.0f; 89c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private long mFadeInDuration = 250L; 903adf712e636f67265da7a6ff425c87e63fc20884Jim Shuma private long mCardCreationFadeDuration = 0L; 91c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma private Bitmap mDetailLoadingBitmap = Bitmap.createBitmap( 92c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma new int[] {0}, 0, 1, 1, 1, Bitmap.Config.ARGB_4444); 93be5482f170e191aa98a3c2ecefdeaf936b7df412Jim Miller private int mDragModel = CarouselRS.DRAG_MODEL_SCREEN_DELTA; 9414d2c1ec52bb04b5120c2bfdd1a8811a238573ceJim Shuma private int mFillDirection = CarouselRS.FILL_DIRECTION_CCW; 951a5b4d109397ea175b5cbaa7490ca18e78eb040fSimon Wilson private boolean mFirstCardTop = false; 96ac1d1fd9b14ce42aa9e04f8c472039790d736786Jim Shuma private int[] mStoreConfigs; 97c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 98c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public CarouselController() { 99c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma boolean useDepthBuffer = true; 100c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 101c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 102c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setRS(RenderScriptGL rs, CarouselRS renderScript) { 103c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRS = rs; 104c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript = renderScript; 105c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 106c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 107c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void onSurfaceChanged() { 108c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma setSlotCount(mSlotCount); 1099c019da0f3083c4b82552fb2fe5b052f90073cb9Bryan Mawhinney setDefaultCardMatrix(mDefaultCardMatrix); 110c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma createCards(mCardCount); 111c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma setVisibleSlots(mVisibleSlots); 112c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma setVisibleDetails(mVisibleDetails); 1134fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma setPrefetchCardCount(mPrefetchCardCount); 1149afded4d212243e554c2695c4a2f90c13628e24bBryan Mawhinney setOverscrollSlots(mOverscrollSlots); 1150cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney setRowCount(mRowCount); 1160cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney setRowSpacing(mRowSpacing); 1171a5b4d109397ea175b5cbaa7490ca18e78eb040fSimon Wilson setFirstCardTop(mFirstCardTop); 1184a8736e22d7b40ab9dfa3fbd8a10de92144912b3Bryan Mawhinney setDetailTextureAlignment(mDetailTextureAlignment); 119fb179e7afd8f02be63061b478b0283e3085fc25fJim Miller setForceBlendCardsWithZ(mForceBlendCardsWithZ); 120c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma setDrawRuler(mDrawRuler); 121c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma setCallback(mCarouselCallback); 122c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma setDefaultBitmap(mDefaultBitmap); 123c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma setLoadingBitmap(mLoadingBitmap); 124c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma setDefaultGeometry(mDefaultGeometry); 125c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma setLoadingGeometry(mLoadingGeometry); 126c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma setBackgroundColor(mBackgroundColor.x, mBackgroundColor.y, mBackgroundColor.z, 127c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mBackgroundColor.w); 128c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma setBackgroundBitmap(mBackgroundBitmap); 129c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma setDetailLineBitmap(mDefaultLineBitmap); 130c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma setStartAngle(mStartAngle); 131a84feeb7e4dc1a75ec6d0b1f2494893987fc3ca3Jack Palevich setCarouselRotationAngle(mCarouselRotationAngle); 132c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma setRadius(mRadius); 133c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma setCardRotation(mCardRotation); 13483d7a5f03e6511372f73e3e4e03a6d403b20125dBryan Mawhinney setCardsFaceTangent(mCardsFaceTangent); 135c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma setSwaySensitivity(mSwaySensitivity); 136c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma setFrictionCoefficient(mFrictionCoefficient); 137c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma setDragFactor(mDragFactor); 138be5482f170e191aa98a3c2ecefdeaf936b7df412Jim Miller setDragModel(mDragModel); 13914d2c1ec52bb04b5120c2bfdd1a8811a238573ceJim Shuma setFillDirection(mFillDirection); 140c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma setLookAt(mEye, mAt, mUp); 141c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma setRezInCardCount(mRezInCardCount); 142c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma setFadeInDuration(mFadeInDuration); 1433adf712e636f67265da7a6ff425c87e63fc20884Jim Shuma setCardCreationFadeDuration(mCardCreationFadeDuration); 144c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma setDetailLoadingBitmap(mDetailLoadingBitmap); 145ac1d1fd9b14ce42aa9e04f8c472039790d736786Jim Shuma setStoreConfigs(mStoreConfigs); 146c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 147c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 148c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 149c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * Loads geometry from a resource id. 150c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 151c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param resId 152c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @return the loaded mesh or null if it cannot be loaded 153c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 154358868df5043b240c9a241c7bb75128ff94b1f34Bryan Mawhinney public Mesh loadGeometry(int resId) { 155358868df5043b240c9a241c7bb75128ff94b1f34Bryan Mawhinney if (mRenderScript != null) { 156358868df5043b240c9a241c7bb75128ff94b1f34Bryan Mawhinney return mRenderScript.loadGeometry(resId); 157c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 158358868df5043b240c9a241c7bb75128ff94b1f34Bryan Mawhinney return null; 159c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 160c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 161c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 162c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma * Set the geometry to show for a given slot. 163c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma * @param n The card to set the geometry for 164c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma * @param mesh The geometry for that item 165c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma * @see {@link #setDefaultGeometry} 166c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 167c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setGeometryForItem(int n, Mesh mesh) { 168c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 169c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setGeometry(n, mesh); 170c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 171c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 172c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 173c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 174c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma * Load A3D file from resource. If resId == 0, will clear geometry for this item. 175c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma * @param n The card to set the geometry for 176c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma * @param resId The resource ID for the geometry for that item 177c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma * @see {@link #setDefaultGeometry} 178c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma */ 179c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma public void setGeometryForItem(int n, int resId) { 180c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma if (mRenderScript != null) { 181c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma Mesh mesh = mRenderScript.loadGeometry(resId); 182c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma mRenderScript.setGeometry(n, mesh); 183c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma } 184c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma } 185c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma 186c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma /** 187c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma * Set the matrix for the specified card 188c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma * @param n The card to set the matrix for 189c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma * @param matrix The matrix to use 190c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma * @see {@link #setDefaultGeometry} 191c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma */ 192c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma public void setMatrixForItem(int n, float[] matrix) { 193c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma if (mRenderScript != null) { 194c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma mRenderScript.setMatrix(n, matrix); 195c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma } 196c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma } 197c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma 198c2baf88a763ae0e3694c8a10c13f203db9aec363Jim Shuma /** 199c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * Set the number of slots around the Carousel. Basically equivalent to the poles horses 200c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * might attach to on a real Carousel. 201c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 202c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param n the number of slots 203c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 204c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setSlotCount(int n) { 205c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mSlotCount = n; 206c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 207c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setSlotCount(n); 208c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 209c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 210c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 211c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 212c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * Sets the number of visible slots around the Carousel. This is primarily used as a cheap 213c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * form of clipping. The Carousel will never show more than this many cards. 214c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param n the number of visible slots 215c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 216c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setVisibleSlots(int n) { 217c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mVisibleSlots = n; 218c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 219c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setVisibleSlots(n); 220c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 221c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 222c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 223c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 224c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * Set the number of detail textures that can be visible at one time. 225c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 226c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param n the number of slots 227c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 228c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setVisibleDetails(int n) { 229c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mVisibleDetails = n; 230c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 231c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setVisibleDetails(n); 232c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 233c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 234c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 235c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 2364fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma * Set the number of cards to pre-load that are outside of the visible region, as determined by 2374fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma * setVisibleSlots(). This number gets added to the number of visible slots and used to 2384fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma * determine when resources for cards should be loaded. This number should be small (n <= 4) 2394fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma * for systems with limited texture memory or views that show more than half dozen cards in the 2404fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma * view. 2414fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma * 2424fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma * @param n the number of cards; should be even, so the count is the same on each side 2434fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma */ 2444fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma public void setPrefetchCardCount(int n) { 2454fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma mPrefetchCardCount = n; 2464fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma if (mRenderScript != null) { 2474fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma mRenderScript.setPrefetchCardCount(n); 2484fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma } 2494fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma } 2504fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma 2514fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma /** 2520cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney * Sets the number of rows of cards to show in each slot. 2530cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney */ 2540cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney public void setRowCount(int n) { 2550cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney mRowCount = n; 2560cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney if (mRenderScript != null) { 2570cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney mRenderScript.setRowCount(n); 2580cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney } 2590cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney } 2600cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney 2610cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney /** 2620cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney * Sets the spacing between each row of cards when rowCount > 1. 2630cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney */ 2640cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney public void setRowSpacing(float s) { 2650cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney mRowSpacing = s; 2660cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney if (mRenderScript != null) { 2670cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney mRenderScript.setRowSpacing(s); 2680cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney } 2690cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney } 2700cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney 2711a5b4d109397ea175b5cbaa7490ca18e78eb040fSimon Wilson /** 2721a5b4d109397ea175b5cbaa7490ca18e78eb040fSimon Wilson * Sets the position of the first card when rowCount > 1 . 2731a5b4d109397ea175b5cbaa7490ca18e78eb040fSimon Wilson */ 2741a5b4d109397ea175b5cbaa7490ca18e78eb040fSimon Wilson public void setFirstCardTop(boolean f) { 2751a5b4d109397ea175b5cbaa7490ca18e78eb040fSimon Wilson mFirstCardTop = f; 2761a5b4d109397ea175b5cbaa7490ca18e78eb040fSimon Wilson if (mRenderScript != null) { 2771a5b4d109397ea175b5cbaa7490ca18e78eb040fSimon Wilson mRenderScript.setFirstCardTop(f); 2781a5b4d109397ea175b5cbaa7490ca18e78eb040fSimon Wilson } 2791a5b4d109397ea175b5cbaa7490ca18e78eb040fSimon Wilson } 2801a5b4d109397ea175b5cbaa7490ca18e78eb040fSimon Wilson 2810cec8afdb4f9d78adf88c9b9b41e993aef617beaBryan Mawhinney /** 2829afded4d212243e554c2695c4a2f90c13628e24bBryan Mawhinney * Sets the amount of allowed overscroll (in slots) 2839afded4d212243e554c2695c4a2f90c13628e24bBryan Mawhinney */ 2849afded4d212243e554c2695c4a2f90c13628e24bBryan Mawhinney public void setOverscrollSlots(float slots) { 2859afded4d212243e554c2695c4a2f90c13628e24bBryan Mawhinney mOverscrollSlots = slots; 2869afded4d212243e554c2695c4a2f90c13628e24bBryan Mawhinney if (mRenderScript != null) { 2879afded4d212243e554c2695c4a2f90c13628e24bBryan Mawhinney mRenderScript.setOverscrollSlots(slots); 2889afded4d212243e554c2695c4a2f90c13628e24bBryan Mawhinney } 2899afded4d212243e554c2695c4a2f90c13628e24bBryan Mawhinney } 2909afded4d212243e554c2695c4a2f90c13628e24bBryan Mawhinney 2919afded4d212243e554c2695c4a2f90c13628e24bBryan Mawhinney /** 2924a8736e22d7b40ab9dfa3fbd8a10de92144912b3Bryan Mawhinney * Sets how detail textures are aligned with respect to the card. 293c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 2944a8736e22d7b40ab9dfa3fbd8a10de92144912b3Bryan Mawhinney * @param alignment a bitmask of DetailAlignment flags. 295c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 2964a8736e22d7b40ab9dfa3fbd8a10de92144912b3Bryan Mawhinney public void setDetailTextureAlignment(int alignment) { 2974a8736e22d7b40ab9dfa3fbd8a10de92144912b3Bryan Mawhinney int xBits = alignment & DetailAlignment.HORIZONTAL_ALIGNMENT_MASK; 2984a8736e22d7b40ab9dfa3fbd8a10de92144912b3Bryan Mawhinney if (xBits == 0 || ((xBits & (xBits - 1)) != 0)) { 2994a8736e22d7b40ab9dfa3fbd8a10de92144912b3Bryan Mawhinney throw new IllegalArgumentException( 3004a8736e22d7b40ab9dfa3fbd8a10de92144912b3Bryan Mawhinney "Must specify exactly one horizontal alignment flag"); 3014a8736e22d7b40ab9dfa3fbd8a10de92144912b3Bryan Mawhinney } 3024a8736e22d7b40ab9dfa3fbd8a10de92144912b3Bryan Mawhinney int yBits = alignment & DetailAlignment.VERTICAL_ALIGNMENT_MASK; 3034a8736e22d7b40ab9dfa3fbd8a10de92144912b3Bryan Mawhinney if (yBits == 0 || ((yBits & (yBits - 1)) != 0)) { 3044a8736e22d7b40ab9dfa3fbd8a10de92144912b3Bryan Mawhinney throw new IllegalArgumentException( 3054a8736e22d7b40ab9dfa3fbd8a10de92144912b3Bryan Mawhinney "Must specify exactly one vertical alignment flag"); 306c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 307c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 3084a8736e22d7b40ab9dfa3fbd8a10de92144912b3Bryan Mawhinney mDetailTextureAlignment = alignment; 3094fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma if (mRenderScript != null) { 3104a8736e22d7b40ab9dfa3fbd8a10de92144912b3Bryan Mawhinney mRenderScript.setDetailTextureAlignment(alignment); 3114fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma } 3124fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma } 3134fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma 3144fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma /** 315fb179e7afd8f02be63061b478b0283e3085fc25fJim Miller * Set whether depth is enabled while blending. Generally, this is discouraged because 316fb179e7afd8f02be63061b478b0283e3085fc25fJim Miller * it causes bad artifacts. Careful attention to geometry and alpha transparency of 317fb179e7afd8f02be63061b478b0283e3085fc25fJim Miller * textures can mitigate much of this. Geometry for an individual item must be drawn 318fb179e7afd8f02be63061b478b0283e3085fc25fJim Miller * back-to-front, for example. 319bfc5ce2da9e0d8d0ec2535c465624574d98418d7Jim Shuma * 320fb179e7afd8f02be63061b478b0283e3085fc25fJim Miller * @param enabled True to enable depth while blending, and false to disable it. 321bfc5ce2da9e0d8d0ec2535c465624574d98418d7Jim Shuma */ 322fb179e7afd8f02be63061b478b0283e3085fc25fJim Miller public void setForceBlendCardsWithZ(boolean enabled) { 323fb179e7afd8f02be63061b478b0283e3085fc25fJim Miller mForceBlendCardsWithZ = enabled; 324bfc5ce2da9e0d8d0ec2535c465624574d98418d7Jim Shuma if (mRenderScript != null) { 325fb179e7afd8f02be63061b478b0283e3085fc25fJim Miller mRenderScript.setForceBlendCardsWithZ(enabled); 326bfc5ce2da9e0d8d0ec2535c465624574d98418d7Jim Shuma } 327bfc5ce2da9e0d8d0ec2535c465624574d98418d7Jim Shuma } 328bfc5ce2da9e0d8d0ec2535c465624574d98418d7Jim Shuma 329bfc5ce2da9e0d8d0ec2535c465624574d98418d7Jim Shuma /** 330c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * Set whether to draw a ruler from the card to the detail texture 331c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 332c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param drawRuler True to draw a ruler, false to draw nothing where the ruler would go. 333c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 334c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setDrawRuler(boolean drawRuler) { 335c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mDrawRuler = drawRuler; 336c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 337c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setDrawRuler(drawRuler); 338c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 339c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 340c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 341c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 342c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * This dictates how many cards are in the deck. If the number of cards is greater than the 343c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * number of slots, then the Carousel goes around n / slot_count times. 344c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 345c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * Can be called again to increase or decrease the number of cards. 346c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 347c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param n the number of cards to create. 348c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 349c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void createCards(int n) { 350c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mCardCount = n; 351c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 352c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.createCards(n); 353c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 354c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 355c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 356c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public int getCardCount() { 357c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma return mCardCount; 358c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 359c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 360c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 361c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * This sets the texture on card n. It should only be called in response to 362c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * {@link CarouselCallback#onRequestTexture(int)}. Since there's no guarantee 363c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * that a given texture is still on the screen, replacing this texture should be done 364c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * by first setting it to null and then waiting for the next 365c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * {@link CarouselCallback#onRequestTexture(int)} to swap it with the new one. 366c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 367c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param n the card given by {@link CarouselCallback#onRequestTexture(int)} 368c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param bitmap the bitmap image to show 369c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 370c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setTextureForItem(int n, Bitmap bitmap) { 371c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma // Also check against mRS, to handle the case where the result is being delivered by a 372c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma // background thread but the sender no longer exists. 373c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null && mRS != null) { 374c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (DBG) Log.v(TAG, "setTextureForItem(" + n + ")"); 375c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setTexture(n, bitmap); 376c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (DBG) Log.v(TAG, "done"); 377c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 378c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 379c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 380c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 381c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * This sets the detail texture that floats above card n. It should only be called in response 382c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * to {@link CarouselCallback#onRequestDetailTexture(int)}. Since there's no guarantee 383c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * that a given texture is still on the screen, replacing this texture should be done 384c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * by first setting it to null and then waiting for the next 385c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * {@link CarouselCallback#onRequestDetailTexture(int)} to swap it with the new one. 386c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 387c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param n the card to set detail texture for 388c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param offx an optional offset to apply to the texture (in pixels) from top of detail line 389c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param offy an optional offset to apply to the texture (in pixels) from top of detail line 390c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param loffx an optional offset to apply to the line (in pixels) from left edge of card 391c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param loffy an optional offset to apply to the line (in pixels) from top of screen 392c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param bitmap the bitmap to show as the detail 393c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 394c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setDetailTextureForItem(int n, float offx, float offy, float loffx, float loffy, 395c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma Bitmap bitmap) { 3967ec486bf1373232a35efa96622f31ac1aff5456bBryan Mawhinney if (mRenderScript != null && mRS != null) { 397c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (DBG) Log.v(TAG, "setDetailTextureForItem(" + n + ")"); 398c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setDetailTexture(n, offx, offy, loffx, loffy, bitmap); 399c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (DBG) Log.v(TAG, "done"); 4006af401bca5f8854524d128e9df5700035fae1160Jim Shuma } 4016af401bca5f8854524d128e9df5700035fae1160Jim Shuma } 4026af401bca5f8854524d128e9df5700035fae1160Jim Shuma 4036af401bca5f8854524d128e9df5700035fae1160Jim Shuma /** 4048441b1025afe64748f9e3483baacee92171bbfa3Jeff Sharkey * Sets the specified texture as invalid. If {@code eraseCurrent} is true, 4058441b1025afe64748f9e3483baacee92171bbfa3Jeff Sharkey * the texture will be immediately cleared from view and an invalidate 4068441b1025afe64748f9e3483baacee92171bbfa3Jeff Sharkey * handler will be called. If {@code eraseCurrent} is false, a replacement 4078441b1025afe64748f9e3483baacee92171bbfa3Jeff Sharkey * texture will be requested, and the old texture will be left in place in 4088441b1025afe64748f9e3483baacee92171bbfa3Jeff Sharkey * the meantime. 4098441b1025afe64748f9e3483baacee92171bbfa3Jeff Sharkey * 4108441b1025afe64748f9e3483baacee92171bbfa3Jeff Sharkey * @param n the card to invalidate the detail texture for 4118441b1025afe64748f9e3483baacee92171bbfa3Jeff Sharkey * @param eraseCurrent whether to erase the current texture 4128441b1025afe64748f9e3483baacee92171bbfa3Jeff Sharkey */ 4138441b1025afe64748f9e3483baacee92171bbfa3Jeff Sharkey public void invalidateTexture(int n, boolean eraseCurrent) { 4148441b1025afe64748f9e3483baacee92171bbfa3Jeff Sharkey if (mRenderScript != null && mRS != null) { 4158441b1025afe64748f9e3483baacee92171bbfa3Jeff Sharkey if (DBG) Log.v(TAG, "invalidateTexture(" + n + ", " + eraseCurrent + ")"); 4168441b1025afe64748f9e3483baacee92171bbfa3Jeff Sharkey mRenderScript.invalidateTexture(n, eraseCurrent); 4178441b1025afe64748f9e3483baacee92171bbfa3Jeff Sharkey if (DBG) Log.v(TAG, "done"); 4188441b1025afe64748f9e3483baacee92171bbfa3Jeff Sharkey } 4198441b1025afe64748f9e3483baacee92171bbfa3Jeff Sharkey } 4208441b1025afe64748f9e3483baacee92171bbfa3Jeff Sharkey 4218441b1025afe64748f9e3483baacee92171bbfa3Jeff Sharkey /** 4226af401bca5f8854524d128e9df5700035fae1160Jim Shuma * Sets the specified detail texture as invalid. If eraseCurrent is true, the texture will be 4236af401bca5f8854524d128e9df5700035fae1160Jim Shuma * immediately cleared from view and an invalidate handler will be called. If eraseCurrent is 4246af401bca5f8854524d128e9df5700035fae1160Jim Shuma * false, a replacement texture will be requested, and the old texture will be left in place 4256af401bca5f8854524d128e9df5700035fae1160Jim Shuma * in the meantime. 4266af401bca5f8854524d128e9df5700035fae1160Jim Shuma * @param n the card to invalidate the detail texture for 4276af401bca5f8854524d128e9df5700035fae1160Jim Shuma * @param eraseCurrent whether to erase the current texture 4286af401bca5f8854524d128e9df5700035fae1160Jim Shuma */ 4296af401bca5f8854524d128e9df5700035fae1160Jim Shuma public void invalidateDetailTexture(int n, boolean eraseCurrent) { 4306af401bca5f8854524d128e9df5700035fae1160Jim Shuma if (mRenderScript != null && mRS != null) { 4318441b1025afe64748f9e3483baacee92171bbfa3Jeff Sharkey if (DBG) Log.v(TAG, "invalidateDetailTexture(" + n + ", " + eraseCurrent + ")"); 4328441b1025afe64748f9e3483baacee92171bbfa3Jeff Sharkey mRenderScript.invalidateDetailTexture(n, eraseCurrent); 4336af401bca5f8854524d128e9df5700035fae1160Jim Shuma if (DBG) Log.v(TAG, "done"); 434c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 435c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 436c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 437c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 438c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * Sets the bitmap to show on a card when the card draws the very first time. 439c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * Generally, this bitmap will only be seen during the first few frames of startup 440c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * or when the number of cards are changed. It can be ignored in most cases, 441c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * as the cards will generally only be in the loading or loaded state. 442c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 443c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param bitmap 444c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 445c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setDefaultBitmap(Bitmap bitmap) { 446c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mDefaultBitmap = bitmap; 447c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 448c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setDefaultBitmap(bitmap); 449c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 450c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 451c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 452c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 453c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * Sets the bitmap to show on the card while the texture is loading. It is set to this 454c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * value just before {@link CarouselCallback#onRequestTexture(int)} is called and changed 455c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * when {@link CarouselView#setTextureForItem(int, Bitmap)} is called. It is shared by all 456c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * cards. 457c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 458c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param bitmap 459c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 460c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setLoadingBitmap(Bitmap bitmap) { 461c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mLoadingBitmap = bitmap; 462c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 463c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setLoadingBitmap(bitmap); 464c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 465c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 466c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 467c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 468c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * Sets background to specified color. If a background texture is specified with 469c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * {@link CarouselView#setBackgroundBitmap(Bitmap)}, then this call has no effect. 470c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 471c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param red the amount of red 472c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param green the amount of green 473c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param blue the amount of blue 474c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param alpha the amount of alpha 475c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 476c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setBackgroundColor(float red, float green, float blue, float alpha) { 477c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mBackgroundColor = new Float4(red, green, blue, alpha); 478c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 479c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setBackgroundColor(mBackgroundColor); 480c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 481c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 482c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 483c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 484c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * Can be used to optionally set the background to a bitmap. When set to something other than 4854fe6ea729d1fc44c8126de7a92a710c3885fb2ecJim Shuma * null, this overrides {@link CarouselController#setBackgroundColor(Float4)}. 486c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 487c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param bitmap 488c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 489c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setBackgroundBitmap(Bitmap bitmap) { 490c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mBackgroundBitmap = bitmap; 491c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 492c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setBackgroundTexture(bitmap); 493c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 494c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 495c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 496c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 497c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * Can be used to optionally set a "loading" detail bitmap. Typically, this is just a black 498c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * texture with alpha = 0 to allow details to slowly fade in. 499c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 500c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param bitmap 501c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 502c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setDetailLoadingBitmap(Bitmap bitmap) { 503c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mDetailLoadingBitmap = bitmap; 504c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 505c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setDetailLoadingTexture(bitmap); 506c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 507c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 508c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 509c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 510c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * This texture is used to draw a line from the card alongside the texture detail. The line 511c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * will be as wide as the texture. It can be used to give the line glow effects as well as 512c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * allowing other blending effects. It is typically one dimensional, e.g. 3x1. 513c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 514c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param bitmap 515c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 516c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setDetailLineBitmap(Bitmap bitmap) { 517c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mDefaultLineBitmap = bitmap; 518c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 519c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setDetailLineTexture(bitmap); 520c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 521c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 522c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 523c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 524c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * This geometry will be shown when no geometry has been loaded for a given slot. If not set, 525fb179e7afd8f02be63061b478b0283e3085fc25fJim Miller * a quad will be drawn in its place. It is shared for all cards. If something other than 526fb179e7afd8f02be63061b478b0283e3085fc25fJim Miller * simple planar geometry is used, consider enabling depth test with 527fb179e7afd8f02be63061b478b0283e3085fc25fJim Miller * {@link CarouselController#setForceBlendCardsWithZ(boolean)} 528c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 529c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param mesh 530c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 531358868df5043b240c9a241c7bb75128ff94b1f34Bryan Mawhinney public void setDefaultGeometry(int resId) { 532358868df5043b240c9a241c7bb75128ff94b1f34Bryan Mawhinney mDefaultGeometry = resId; 533c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 534358868df5043b240c9a241c7bb75128ff94b1f34Bryan Mawhinney Mesh mesh = mRenderScript.loadGeometry(resId); 535c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setDefaultGeometry(mesh); 536c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 537c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 538c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 539c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 54051dd0196e4f3bd4086545f5bf30038ca9ad9ac27Bryan Mawhinney * Sets the matrix used to transform card geometries. By default, this 54151dd0196e4f3bd4086545f5bf30038ca9ad9ac27Bryan Mawhinney * is the identity matrix, but you can specify a different matrix if you 54251dd0196e4f3bd4086545f5bf30038ca9ad9ac27Bryan Mawhinney * want to scale, translate and / or rotate the card before drawing. 54351dd0196e4f3bd4086545f5bf30038ca9ad9ac27Bryan Mawhinney * 54451dd0196e4f3bd4086545f5bf30038ca9ad9ac27Bryan Mawhinney * @param matrix array of 9 or 16 floats representing a 3x3 or 4x4 matrix, 54551dd0196e4f3bd4086545f5bf30038ca9ad9ac27Bryan Mawhinney * or null as a shortcut for an identity matrix. 54651dd0196e4f3bd4086545f5bf30038ca9ad9ac27Bryan Mawhinney */ 54751dd0196e4f3bd4086545f5bf30038ca9ad9ac27Bryan Mawhinney public void setDefaultCardMatrix(float[] matrix) { 54851dd0196e4f3bd4086545f5bf30038ca9ad9ac27Bryan Mawhinney mDefaultCardMatrix = matrix; 54951dd0196e4f3bd4086545f5bf30038ca9ad9ac27Bryan Mawhinney if (mRenderScript != null) { 55051dd0196e4f3bd4086545f5bf30038ca9ad9ac27Bryan Mawhinney mRenderScript.setDefaultCardMatrix(matrix); 55151dd0196e4f3bd4086545f5bf30038ca9ad9ac27Bryan Mawhinney } 55251dd0196e4f3bd4086545f5bf30038ca9ad9ac27Bryan Mawhinney } 55351dd0196e4f3bd4086545f5bf30038ca9ad9ac27Bryan Mawhinney 55451dd0196e4f3bd4086545f5bf30038ca9ad9ac27Bryan Mawhinney /** 555c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * This is an intermediate version of the object to show while geometry is loading. If not set, 556fb179e7afd8f02be63061b478b0283e3085fc25fJim Miller * a quad will be drawn in its place. It is shared for all cards. If something other than 557fb179e7afd8f02be63061b478b0283e3085fc25fJim Miller * simple planar geometry is used, consider enabling depth test with 558fb179e7afd8f02be63061b478b0283e3085fc25fJim Miller * {@link CarouselView#setForceBlendCardsWithZ(boolean)} 559c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 560358868df5043b240c9a241c7bb75128ff94b1f34Bryan Mawhinney * @param resId 561c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 562358868df5043b240c9a241c7bb75128ff94b1f34Bryan Mawhinney public void setLoadingGeometry(int resId) { 563358868df5043b240c9a241c7bb75128ff94b1f34Bryan Mawhinney mLoadingGeometry = resId; 564c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 565358868df5043b240c9a241c7bb75128ff94b1f34Bryan Mawhinney Mesh mesh = mRenderScript.loadGeometry(resId); 566c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setLoadingGeometry(mesh); 567c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 568c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 569c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 570c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 571c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * Sets the callback for receiving events from RenderScript. 572c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 573c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param callback 574c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 575c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setCallback(CarouselCallback callback) 576c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma { 577c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mCarouselCallback = callback; 578c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 579c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setCallback(callback); 580c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 581c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 582c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 583c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 584594ff62c170509c0d69b30f4c2a5e71d4799a9c8Jim Shuma * Gets the callback for receiving events from Renderscript. 585594ff62c170509c0d69b30f4c2a5e71d4799a9c8Jim Shuma */ 586594ff62c170509c0d69b30f4c2a5e71d4799a9c8Jim Shuma public CarouselCallback getCallback() { 587594ff62c170509c0d69b30f4c2a5e71d4799a9c8Jim Shuma return mCarouselCallback; 588594ff62c170509c0d69b30f4c2a5e71d4799a9c8Jim Shuma } 589594ff62c170509c0d69b30f4c2a5e71d4799a9c8Jim Shuma 590594ff62c170509c0d69b30f4c2a5e71d4799a9c8Jim Shuma /** 591c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * Sets the startAngle for the Carousel. The start angle is the first position of the first 592c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * slot draw. Cards will be drawn from this angle in a counter-clockwise manner around the 593c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * Carousel. 594c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 595c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param angle the angle, in radians. 596c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 597c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setStartAngle(float angle) 598c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma { 599c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mStartAngle = angle; 600c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 601c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setStartAngle(angle); 602c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 603c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 604c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 605a84feeb7e4dc1a75ec6d0b1f2494893987fc3ca3Jack Palevich /** 606a84feeb7e4dc1a75ec6d0b1f2494893987fc3ca3Jack Palevich * Set the current carousel rotation angle, in card units. 607a84feeb7e4dc1a75ec6d0b1f2494893987fc3ca3Jack Palevich * This is measured in card positions, not in radians or degrees. 608a84feeb7e4dc1a75ec6d0b1f2494893987fc3ca3Jack Palevich * 609a84feeb7e4dc1a75ec6d0b1f2494893987fc3ca3Jack Palevich * A value of 0.0 means that card 0 is in the home position. 610a84feeb7e4dc1a75ec6d0b1f2494893987fc3ca3Jack Palevich * A value of 1.0 means that card 1 is in the home position, and so on. 611a84feeb7e4dc1a75ec6d0b1f2494893987fc3ca3Jack Palevich * The maximum value will be somewhat less than the total number of cards. 612a84feeb7e4dc1a75ec6d0b1f2494893987fc3ca3Jack Palevich * 613a84feeb7e4dc1a75ec6d0b1f2494893987fc3ca3Jack Palevich * @param angle 614a84feeb7e4dc1a75ec6d0b1f2494893987fc3ca3Jack Palevich */ 615a84feeb7e4dc1a75ec6d0b1f2494893987fc3ca3Jack Palevich public void setCarouselRotationAngle(float angle) { 616a84feeb7e4dc1a75ec6d0b1f2494893987fc3ca3Jack Palevich mCarouselRotationAngle = angle; 617a84feeb7e4dc1a75ec6d0b1f2494893987fc3ca3Jack Palevich if (mRenderScript != null) { 618a84feeb7e4dc1a75ec6d0b1f2494893987fc3ca3Jack Palevich mRenderScript.setCarouselRotationAngle(angle); 619a84feeb7e4dc1a75ec6d0b1f2494893987fc3ca3Jack Palevich } 620a84feeb7e4dc1a75ec6d0b1f2494893987fc3ca3Jack Palevich } 621a84feeb7e4dc1a75ec6d0b1f2494893987fc3ca3Jack Palevich 6228debeb8a0a785f0ad66bc75200cdb47c137602bcArnaud Berry /** 6238debeb8a0a785f0ad66bc75200cdb47c137602bcArnaud Berry * Triggers a rotation of the carousel. All angles are in card units, see: 6248debeb8a0a785f0ad66bc75200cdb47c137602bcArnaud Berry * {@link CarouselController#setCarouselRotationAngle(float)}) for more details. 6258debeb8a0a785f0ad66bc75200cdb47c137602bcArnaud Berry * 6268debeb8a0a785f0ad66bc75200cdb47c137602bcArnaud Berry * @param endAngle the card unit to which the carousel should rotate to 6278debeb8a0a785f0ad66bc75200cdb47c137602bcArnaud Berry * @param milliseconds the length of the animation 6288debeb8a0a785f0ad66bc75200cdb47c137602bcArnaud Berry * @param interpolationMode three modes are currently supported : 6298debeb8a0a785f0ad66bc75200cdb47c137602bcArnaud Berry * {@link CarouselView.InterpolationMode#LINEAR} 6308debeb8a0a785f0ad66bc75200cdb47c137602bcArnaud Berry * {@link CarouselView.InterpolationMode#DECELERATE_QUADRATIC} 6318debeb8a0a785f0ad66bc75200cdb47c137602bcArnaud Berry * {@link CarouselView.InterpolationMode#ACCELERATE_DECELERATE_CUBIC} 6328debeb8a0a785f0ad66bc75200cdb47c137602bcArnaud Berry * @param maxAnimatedArc the maximum angular distance over which the transition will be 6338debeb8a0a785f0ad66bc75200cdb47c137602bcArnaud Berry * animated. 6348debeb8a0a785f0ad66bc75200cdb47c137602bcArnaud Berry * If the current position is further away, it is set at maxAnimatedArc from endAngle. 6358debeb8a0a785f0ad66bc75200cdb47c137602bcArnaud Berry * This parameter is ignored when <= 0. 6368debeb8a0a785f0ad66bc75200cdb47c137602bcArnaud Berry */ 6378debeb8a0a785f0ad66bc75200cdb47c137602bcArnaud Berry public void setCarouselRotationAngle(float endAngle, int milliseconds, int interpolationMode, 6388debeb8a0a785f0ad66bc75200cdb47c137602bcArnaud Berry float maxAnimatedArc) { 6398debeb8a0a785f0ad66bc75200cdb47c137602bcArnaud Berry if (mRenderScript != null) { 6408debeb8a0a785f0ad66bc75200cdb47c137602bcArnaud Berry mRenderScript.setCarouselRotationAngle(endAngle, milliseconds, 6418debeb8a0a785f0ad66bc75200cdb47c137602bcArnaud Berry interpolationMode, maxAnimatedArc); 6428debeb8a0a785f0ad66bc75200cdb47c137602bcArnaud Berry } 6438debeb8a0a785f0ad66bc75200cdb47c137602bcArnaud Berry } 6448debeb8a0a785f0ad66bc75200cdb47c137602bcArnaud Berry 645c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setRadius(float radius) { 646c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRadius = radius; 647c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 648c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setRadius(radius); 649c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 650c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 651c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 652be5482f170e191aa98a3c2ecefdeaf936b7df412Jim Miller /** 653be5482f170e191aa98a3c2ecefdeaf936b7df412Jim Miller * Sets the current model for dragging. There are currently four drag models: 654be5482f170e191aa98a3c2ecefdeaf936b7df412Jim Miller * {@link CarouselView#DRAG_MODEL_SCREEN_DELTA} 655be5482f170e191aa98a3c2ecefdeaf936b7df412Jim Miller * {@link CarouselView#DRAG_MODEL_PLANE} 656be5482f170e191aa98a3c2ecefdeaf936b7df412Jim Miller * {@link CarouselView#DRAG_MODEL_CYLINDER_INSIDE} 657be5482f170e191aa98a3c2ecefdeaf936b7df412Jim Miller * {@link CarouselView#DRAG_MODEL_CYLINDER_OUTSIDE} 658be5482f170e191aa98a3c2ecefdeaf936b7df412Jim Miller * 659be5482f170e191aa98a3c2ecefdeaf936b7df412Jim Miller * @param model 660be5482f170e191aa98a3c2ecefdeaf936b7df412Jim Miller */ 661be5482f170e191aa98a3c2ecefdeaf936b7df412Jim Miller public void setDragModel(int model) { 662be5482f170e191aa98a3c2ecefdeaf936b7df412Jim Miller mDragModel = model; 663be5482f170e191aa98a3c2ecefdeaf936b7df412Jim Miller if (mRenderScript != null) { 664be5482f170e191aa98a3c2ecefdeaf936b7df412Jim Miller mRenderScript.setDragModel(model); 665be5482f170e191aa98a3c2ecefdeaf936b7df412Jim Miller } 666be5482f170e191aa98a3c2ecefdeaf936b7df412Jim Miller } 667be5482f170e191aa98a3c2ecefdeaf936b7df412Jim Miller 66814d2c1ec52bb04b5120c2bfdd1a8811a238573ceJim Shuma /** Sets the direction to fill in cards around the carousel. 66914d2c1ec52bb04b5120c2bfdd1a8811a238573ceJim Shuma * 67014d2c1ec52bb04b5120c2bfdd1a8811a238573ceJim Shuma * @param direction Either {@link CarouselRS#FILL_DIRECTION_CCW} or 67114d2c1ec52bb04b5120c2bfdd1a8811a238573ceJim Shuma * {@link CarouselRS#FILL_DIRECTION_CW}. 67214d2c1ec52bb04b5120c2bfdd1a8811a238573ceJim Shuma */ 67314d2c1ec52bb04b5120c2bfdd1a8811a238573ceJim Shuma public void setFillDirection(int direction) { 67414d2c1ec52bb04b5120c2bfdd1a8811a238573ceJim Shuma mFillDirection = direction; 67514d2c1ec52bb04b5120c2bfdd1a8811a238573ceJim Shuma if (mRenderScript != null) { 67614d2c1ec52bb04b5120c2bfdd1a8811a238573ceJim Shuma mRenderScript.setFillDirection(direction); 67714d2c1ec52bb04b5120c2bfdd1a8811a238573ceJim Shuma } 67814d2c1ec52bb04b5120c2bfdd1a8811a238573ceJim Shuma } 67914d2c1ec52bb04b5120c2bfdd1a8811a238573ceJim Shuma 680c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setCardRotation(float cardRotation) { 681c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mCardRotation = cardRotation; 682c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 683c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setCardRotation(cardRotation); 684c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 685c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 686c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 68783d7a5f03e6511372f73e3e4e03a6d403b20125dBryan Mawhinney public void setCardsFaceTangent(boolean faceTangent) { 68883d7a5f03e6511372f73e3e4e03a6d403b20125dBryan Mawhinney mCardsFaceTangent = faceTangent; 68983d7a5f03e6511372f73e3e4e03a6d403b20125dBryan Mawhinney if (mRenderScript != null) { 69083d7a5f03e6511372f73e3e4e03a6d403b20125dBryan Mawhinney mRenderScript.setCardsFaceTangent(faceTangent); 69183d7a5f03e6511372f73e3e4e03a6d403b20125dBryan Mawhinney } 69283d7a5f03e6511372f73e3e4e03a6d403b20125dBryan Mawhinney } 69383d7a5f03e6511372f73e3e4e03a6d403b20125dBryan Mawhinney 694c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setSwaySensitivity(float swaySensitivity) { 695c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mSwaySensitivity = swaySensitivity; 696c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 697c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setSwaySensitivity(swaySensitivity); 698c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 699c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 700c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 701c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setFrictionCoefficient(float frictionCoefficient) { 702c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mFrictionCoefficient = frictionCoefficient; 703c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 704c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setFrictionCoefficient(frictionCoefficient); 705c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 706c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 707c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 708c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setDragFactor(float dragFactor) { 709c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mDragFactor = dragFactor; 710c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 711c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setDragFactor(dragFactor); 712c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 713c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 714c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 715c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setLookAt(float[] eye, float[] at, float[] up) { 716c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mEye = eye; 717c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mAt = at; 718c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mUp = up; 719c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 720c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setLookAt(eye, at, up); 721c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 722c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 723c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 724c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 725c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * This sets the number of cards in the distance that will be shown "rezzing in". 726c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * These alpha values will be faded in from the background to the foreground over 727c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 'n' cards. A floating point value is used to allow subtly changing the rezzing in 728c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * position. 729c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 730c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param n the number of cards to rez in. 731c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 732c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setRezInCardCount(float n) { 733c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRezInCardCount = n; 734c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 735c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setRezInCardCount(n); 736c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 737c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 738c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 739c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 740c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * This sets the duration (in ms) that a card takes to fade in when loaded via a call 741c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * to {@link CarouselView#setTextureForItem(int, Bitmap)}. The timer starts the 742c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * moment {@link CarouselView#setTextureForItem(int, Bitmap)} is called and continues 743c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * until all of the cards have faded in. Note: using large values will extend the 744c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * animation until all cards have faded in. 745c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * 7463adf712e636f67265da7a6ff425c87e63fc20884Jim Shuma * @param t The time, in milliseconds 747c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 748c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma public void setFadeInDuration(long t) { 749c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mFadeInDuration = t; 750c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma if (mRenderScript != null) { 751c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma mRenderScript.setFadeInDuration(t); 752c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 753c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 754c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 755c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 7563adf712e636f67265da7a6ff425c87e63fc20884Jim Shuma * This sets the duration (in ms) that a card takes to fade in when it is initially created, 7573adf712e636f67265da7a6ff425c87e63fc20884Jim Shuma * such as when it is added or when the application starts. The timer starts at the moment 7583adf712e636f67265da7a6ff425c87e63fc20884Jim Shuma * when the card is first created. Replacing a card's contents does not affect the timer. 7593adf712e636f67265da7a6ff425c87e63fc20884Jim Shuma * @param t The time, in milliseconds 7603adf712e636f67265da7a6ff425c87e63fc20884Jim Shuma */ 7613adf712e636f67265da7a6ff425c87e63fc20884Jim Shuma public void setCardCreationFadeDuration(long t) { 7623adf712e636f67265da7a6ff425c87e63fc20884Jim Shuma mCardCreationFadeDuration = t; 7633adf712e636f67265da7a6ff425c87e63fc20884Jim Shuma if (mRenderScript != null) { 7643adf712e636f67265da7a6ff425c87e63fc20884Jim Shuma mRenderScript.setCardCreationFadeDuration(t); 7653adf712e636f67265da7a6ff425c87e63fc20884Jim Shuma } 7663adf712e636f67265da7a6ff425c87e63fc20884Jim Shuma } 7673adf712e636f67265da7a6ff425c87e63fc20884Jim Shuma 7683adf712e636f67265da7a6ff425c87e63fc20884Jim Shuma /** 769c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * Tells the carousel that a touch event has started at the designated location. 770c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param x The number of pixels from the left edge that the event occurred 771c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param y The number of pixels from the top edge that the event occurred 7721882cebdc1b7b0551189ca33fb7cb77ef10c988bJim Miller * @param t The time stamp of the event 773c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 7741882cebdc1b7b0551189ca33fb7cb77ef10c988bJim Miller public void onTouchStarted(float x, float y, long t) { 7751882cebdc1b7b0551189ca33fb7cb77ef10c988bJim Miller mRenderScript.doStart(x, y, t); 776c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 777c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 778c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 779c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * Tells the carousel that a touch event has moved to the designated location. 780c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param x The number of pixels from the left edge that the event occurred 781c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param y The number of pixels from the top edge that the event occurred 7821882cebdc1b7b0551189ca33fb7cb77ef10c988bJim Miller * @param t The time stamp of the event 783c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 7841882cebdc1b7b0551189ca33fb7cb77ef10c988bJim Miller public void onTouchMoved(float x, float y, long t) { 7851882cebdc1b7b0551189ca33fb7cb77ef10c988bJim Miller mRenderScript.doMotion(x, y, t); 786c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 787c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma 788c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma /** 789594ff62c170509c0d69b30f4c2a5e71d4799a9c8Jim Shuma * Tells the carousel that the user has long-pressed. 790594ff62c170509c0d69b30f4c2a5e71d4799a9c8Jim Shuma */ 791594ff62c170509c0d69b30f4c2a5e71d4799a9c8Jim Shuma public void onLongPress() { 792594ff62c170509c0d69b30f4c2a5e71d4799a9c8Jim Shuma mRenderScript.doLongPress(); 793594ff62c170509c0d69b30f4c2a5e71d4799a9c8Jim Shuma } 794594ff62c170509c0d69b30f4c2a5e71d4799a9c8Jim Shuma 795594ff62c170509c0d69b30f4c2a5e71d4799a9c8Jim Shuma /** 796c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * Tells the carousel that a touch event has stopped at the designated location. 797c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param x The number of pixels from the left edge that the event occurred 798c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma * @param y The number of pixels from the top edge that the event occurred 7991882cebdc1b7b0551189ca33fb7cb77ef10c988bJim Miller * @param t The time stamp of the event 800c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma */ 8011882cebdc1b7b0551189ca33fb7cb77ef10c988bJim Miller public void onTouchStopped(float x, float y, long t) { 8021882cebdc1b7b0551189ca33fb7cb77ef10c988bJim Miller mRenderScript.doStop(x, y, t); 803c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma } 804f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma 805f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma /** 806f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma * Whether to use alpha when drawing a primitive: on for translucent, off for opaque. 807f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma */ 808f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma public static final int STORE_CONFIG_ALPHA = 1; 809f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma 810f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma /** 811f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma * Whether to read from the depth buffer when rendering. Determines with glDepthFunc() 812f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma * is given GL_LESS or GL_ALWAYS. On for GL_LESS, off for GL_ALWAYS. 813f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma */ 814f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma public static final int STORE_CONFIG_DEPTH_READS = 2; 815f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma 816f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma /** 817f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma * Whether to write to the depth buffer when rendering. Passed to glDepthMask(). 818f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma */ 819f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma public static final int STORE_CONFIG_DEPTH_WRITES = 4; 820f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma 821f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma /** 822f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma * Set the StoreConfig parameters that will be used for each mesh primitive. 823f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma * 824f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma * Each integer in the array is a bitfield composed of 825f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma * {@link CarouselController#STORE_CONFIG_ALPHA}, 826f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma * {@link CarouselController#STORE_CONFIG_DEPTH_READS}, and 827f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma * {@link CarouselController#STORE_CONFIG_DEPTH_WRITES}. 828f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma * 829f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma * These parameters MUST correspond to primitives in geometry previously set in 830f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma * {@link CarouselController#setDefaultGeometry(int)} or 831f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma * {@link CarouselController#setLoadingGeometry(int)} or 832f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma * {@link CarouselController#setGeometryForItem(int,Mesh)}. 833f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma * 834f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma * @param configs An array, each element of which corresponds to an ordered mesh primitive 835f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma */ 836f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma public void setStoreConfigs(int configs[]) { 837ac1d1fd9b14ce42aa9e04f8c472039790d736786Jim Shuma mStoreConfigs = configs; 838ac1d1fd9b14ce42aa9e04f8c472039790d736786Jim Shuma if (mRenderScript != null) { 839ac1d1fd9b14ce42aa9e04f8c472039790d736786Jim Shuma mRenderScript.setStoreConfigs(configs); 840ac1d1fd9b14ce42aa9e04f8c472039790d736786Jim Shuma } 841f664659f79399e92025e1dfe1ffbb682ff05613cJim Shuma } 842c7f405d16c2c7143de7fcda9c4f77f9758b5342aJim Shuma} 843