1b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy/* 2b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * Copyright (C) 2010 The Android Open Source Project 3b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * 4b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * Licensed under the Apache License, Version 2.0 (the "License"); 5b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * you may not use this file except in compliance with the License. 6b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * You may obtain a copy of the License at 7b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * 8b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * http://www.apache.org/licenses/LICENSE-2.0 9b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * 10b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * Unless required by applicable law or agreed to in writing, software 11b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * distributed under the License is distributed on an "AS IS" BASIS, 12b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * See the License for the specific language governing permissions and 14b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * limitations under the License. 15b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy */ 16b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy 17b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guypackage android.view; 18b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy 19162a0217563f4665da6eb183dfce0fef740f641fJeff Brownimport android.graphics.Bitmap; 209420abd56a2af7ddbeb70562b79d61b2dca8c5a1Chet Haaseimport android.graphics.Matrix; 21162a0217563f4665da6eb183dfce0fef740f641fJeff Brown 22162a0217563f4665da6eb183dfce0fef740f641fJeff Brownimport java.util.ArrayList; 23daf98e941e140e8739458126640183b9f296a2abChet Haase 24b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy/** 25b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * An implementation of display list for OpenGL ES 2.0. 26b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy */ 27b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guyclass GLES20DisplayList extends DisplayList { 28ca479d468be963661fd82634f4b57f21c13f1fe6Chet Haase // These lists ensure that any Bitmaps and DisplayLists recorded by a DisplayList are kept 29ca479d468be963661fd82634f4b57f21c13f1fe6Chet Haase // alive as long as the DisplayList is alive. The Bitmap and DisplayList lists 30ca479d468be963661fd82634f4b57f21c13f1fe6Chet Haase // are populated by the GLES20RecordingCanvas during appropriate drawing calls and are 31ca479d468be963661fd82634f4b57f21c13f1fe6Chet Haase // cleared at the start of a new drawing frame or when the view is detached from the window. 32162a0217563f4665da6eb183dfce0fef740f641fJeff Brown final ArrayList<Bitmap> mBitmaps = new ArrayList<Bitmap>(5); 33ca479d468be963661fd82634f4b57f21c13f1fe6Chet Haase final ArrayList<DisplayList> mChildDisplayLists = new ArrayList<DisplayList>(); 34b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy 35162a0217563f4665da6eb183dfce0fef740f641fJeff Brown private GLES20RecordingCanvas mCanvas; 36162a0217563f4665da6eb183dfce0fef740f641fJeff Brown private boolean mValid; 37b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy 3813631f3da855f200a151e7837ed9f6b079622b58Romain Guy // Used for debugging 3913631f3da855f200a151e7837ed9f6b079622b58Romain Guy private final String mName; 4013631f3da855f200a151e7837ed9f6b079622b58Romain Guy 41f890fab5a6715548e520a6f010a3bfe7607ce56ePatrick Dubroy // The native display list will be destroyed when this object dies. 42f890fab5a6715548e520a6f010a3bfe7607ce56ePatrick Dubroy // DO NOT overwrite this reference once it is set. 43f890fab5a6715548e520a6f010a3bfe7607ce56ePatrick Dubroy private DisplayListFinalizer mFinalizer; 44f890fab5a6715548e520a6f010a3bfe7607ce56ePatrick Dubroy 4513631f3da855f200a151e7837ed9f6b079622b58Romain Guy GLES20DisplayList(String name) { 4613631f3da855f200a151e7837ed9f6b079622b58Romain Guy mName = name; 4713631f3da855f200a151e7837ed9f6b079622b58Romain Guy } 4813631f3da855f200a151e7837ed9f6b079622b58Romain Guy 490d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy boolean hasNativeDisplayList() { 500d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy return mValid && mFinalizer != null; 510d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy } 520d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy 53162a0217563f4665da6eb183dfce0fef740f641fJeff Brown int getNativeDisplayList() { 54162a0217563f4665da6eb183dfce0fef740f641fJeff Brown if (!mValid || mFinalizer == null) { 55162a0217563f4665da6eb183dfce0fef740f641fJeff Brown throw new IllegalStateException("The display list is not valid."); 56162a0217563f4665da6eb183dfce0fef740f641fJeff Brown } 57162a0217563f4665da6eb183dfce0fef740f641fJeff Brown return mFinalizer.mNativeDisplayList; 58daf98e941e140e8739458126640183b9f296a2abChet Haase } 59daf98e941e140e8739458126640183b9f296a2abChet Haase 60b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy @Override 6152036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy public HardwareCanvas start(int width, int height) { 629e90a9953b65ae575ec8db3989857e0c145724b1Chet Haase if (mCanvas != null) { 63162a0217563f4665da6eb183dfce0fef740f641fJeff Brown throw new IllegalStateException("Recording has already started"); 649e90a9953b65ae575ec8db3989857e0c145724b1Chet Haase } 65b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy 66162a0217563f4665da6eb183dfce0fef740f641fJeff Brown mValid = false; 67162a0217563f4665da6eb183dfce0fef740f641fJeff Brown mCanvas = GLES20RecordingCanvas.obtain(this); 68162a0217563f4665da6eb183dfce0fef740f641fJeff Brown mCanvas.start(); 6952036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy 7052036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy mCanvas.setViewport(width, height); 7152036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy // The dirty rect should always be null for a display list 7252036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy mCanvas.onPreDraw(null); 7352036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy 74b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy return mCanvas; 75b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy } 76b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy @Override 7752036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy public void clear() { 7852036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy clearDirty(); 7952036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy 80162a0217563f4665da6eb183dfce0fef740f641fJeff Brown if (mCanvas != null) { 81162a0217563f4665da6eb183dfce0fef740f641fJeff Brown mCanvas.recycle(); 82162a0217563f4665da6eb183dfce0fef740f641fJeff Brown mCanvas = null; 83162a0217563f4665da6eb183dfce0fef740f641fJeff Brown } 849e90a9953b65ae575ec8db3989857e0c145724b1Chet Haase mValid = false; 859e90a9953b65ae575ec8db3989857e0c145724b1Chet Haase 8652036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy mBitmaps.clear(); 8752036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy mChildDisplayLists.clear(); 8838c2ece5ce4c59f30e5832779bf1d86d68b1c442Romain Guy } 8938c2ece5ce4c59f30e5832779bf1d86d68b1c442Romain Guy 9038c2ece5ce4c59f30e5832779bf1d86d68b1c442Romain Guy @Override 916a2d17f71342f981c9df1dc5beff33e30eb3ae2bChet Haase public void reset() { 926a2d17f71342f981c9df1dc5beff33e30eb3ae2bChet Haase if (hasNativeDisplayList()) { 936a2d17f71342f981c9df1dc5beff33e30eb3ae2bChet Haase nReset(mFinalizer.mNativeDisplayList); 946a2d17f71342f981c9df1dc5beff33e30eb3ae2bChet Haase } 956a2d17f71342f981c9df1dc5beff33e30eb3ae2bChet Haase } 966a2d17f71342f981c9df1dc5beff33e30eb3ae2bChet Haase 976a2d17f71342f981c9df1dc5beff33e30eb3ae2bChet Haase @Override 98b35ab7b72967adcfd01cec483a705dafe8b951d1Gilles Debunne public boolean isValid() { 999e90a9953b65ae575ec8db3989857e0c145724b1Chet Haase return mValid; 1009e90a9953b65ae575ec8db3989857e0c145724b1Chet Haase } 1019e90a9953b65ae575ec8db3989857e0c145724b1Chet Haase 1029e90a9953b65ae575ec8db3989857e0c145724b1Chet Haase @Override 103b35ab7b72967adcfd01cec483a705dafe8b951d1Gilles Debunne public void end() { 104b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy if (mCanvas != null) { 10552036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy mCanvas.onPostDraw(); 106162a0217563f4665da6eb183dfce0fef740f641fJeff Brown if (mFinalizer != null) { 107162a0217563f4665da6eb183dfce0fef740f641fJeff Brown mCanvas.end(mFinalizer.mNativeDisplayList); 108162a0217563f4665da6eb183dfce0fef740f641fJeff Brown } else { 109162a0217563f4665da6eb183dfce0fef740f641fJeff Brown mFinalizer = new DisplayListFinalizer(mCanvas.end(0)); 11052036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy nSetDisplayListName(mFinalizer.mNativeDisplayList, mName); 111162a0217563f4665da6eb183dfce0fef740f641fJeff Brown } 112162a0217563f4665da6eb183dfce0fef740f641fJeff Brown mCanvas.recycle(); 113162a0217563f4665da6eb183dfce0fef740f641fJeff Brown mCanvas = null; 114162a0217563f4665da6eb183dfce0fef740f641fJeff Brown mValid = true; 115b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy } 116b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy } 117b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy 11865b345fa22b878e141b8fd8ece9c208df00fa40fRomain Guy @Override 119b35ab7b72967adcfd01cec483a705dafe8b951d1Gilles Debunne public int getSize() { 12065b345fa22b878e141b8fd8ece9c208df00fa40fRomain Guy if (mFinalizer == null) return 0; 12152036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return nGetDisplayListSize(mFinalizer.mNativeDisplayList); 12265b345fa22b878e141b8fd8ece9c208df00fa40fRomain Guy } 12365b345fa22b878e141b8fd8ece9c208df00fa40fRomain Guy 12452036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy private static native void nDestroyDisplayList(int displayList); 12552036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy private static native int nGetDisplayListSize(int displayList); 12652036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy private static native void nSetDisplayListName(int displayList, String name); 12752036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy 128a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase /////////////////////////////////////////////////////////////////////////// 129a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase // Native View Properties 130a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase /////////////////////////////////////////////////////////////////////////// 131a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 132a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase @Override 133a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase public void setCaching(boolean caching) { 1340d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 1350d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy nSetCaching(mFinalizer.mNativeDisplayList, caching); 136a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 137a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 138a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 139a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase @Override 140dd671599bed9d3ca28e2c744e8c224e1e15bc914Chet Haase public void setClipToBounds(boolean clipToBounds) { 1410d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 142dd671599bed9d3ca28e2c744e8c224e1e15bc914Chet Haase nSetClipToBounds(mFinalizer.mNativeDisplayList, clipToBounds); 143a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 144a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 145a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 146a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase @Override 14752036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy public void setMatrix(Matrix matrix) { 1480d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 1490d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy nSetStaticMatrix(mFinalizer.mNativeDisplayList, matrix.native_instance); 1509420abd56a2af7ddbeb70562b79d61b2dca8c5a1Chet Haase } 1519420abd56a2af7ddbeb70562b79d61b2dca8c5a1Chet Haase } 1529420abd56a2af7ddbeb70562b79d61b2dca8c5a1Chet Haase 1539420abd56a2af7ddbeb70562b79d61b2dca8c5a1Chet Haase @Override 15452036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy public Matrix getMatrix(Matrix matrix) { 15552036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy if (hasNativeDisplayList()) { 15652036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy nGetMatrix(mFinalizer.mNativeDisplayList, matrix.native_instance); 15752036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 15852036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return matrix; 15952036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 16052036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy 16152036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy @Override 1629420abd56a2af7ddbeb70562b79d61b2dca8c5a1Chet Haase public void setAnimationMatrix(Matrix matrix) { 1630d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 1640d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy nSetAnimationMatrix(mFinalizer.mNativeDisplayList, 165afd5c3ee60c45ebb5d63d2d0d14f08130075883bChet Haase (matrix != null) ? matrix.native_instance : 0); 166a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 167a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 168a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 169a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase @Override 170a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase public void setAlpha(float alpha) { 1710d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 1720d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy nSetAlpha(mFinalizer.mNativeDisplayList, alpha); 173a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 174a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 175a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 176a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase @Override 17752036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy public float getAlpha() { 17852036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy if (hasNativeDisplayList()) { 17952036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return nGetAlpha(mFinalizer.mNativeDisplayList); 18052036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 18152036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return 1.0f; 18252036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 18352036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy 18452036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy @Override 185db8c9a6a4d9bf8c39f834b25611926caf21380f6Chet Haase public void setHasOverlappingRendering(boolean hasOverlappingRendering) { 1860d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 1870d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy nSetHasOverlappingRendering(mFinalizer.mNativeDisplayList, hasOverlappingRendering); 188db8c9a6a4d9bf8c39f834b25611926caf21380f6Chet Haase } 189db8c9a6a4d9bf8c39f834b25611926caf21380f6Chet Haase } 190db8c9a6a4d9bf8c39f834b25611926caf21380f6Chet Haase 191db8c9a6a4d9bf8c39f834b25611926caf21380f6Chet Haase @Override 19252036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy public boolean hasOverlappingRendering() { 19352036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy //noinspection SimplifiableIfStatement 19452036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy if (hasNativeDisplayList()) { 19552036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return nHasOverlappingRendering(mFinalizer.mNativeDisplayList); 19652036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 19752036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return true; 19852036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 19952036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy 20052036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy @Override 201a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase public void setTranslationX(float translationX) { 2020d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 2030d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy nSetTranslationX(mFinalizer.mNativeDisplayList, translationX); 204a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 205a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 206a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 207a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase @Override 20852036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy public float getTranslationX() { 20952036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy if (hasNativeDisplayList()) { 21052036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return nGetTranslationX(mFinalizer.mNativeDisplayList); 21152036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 21252036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return 0.0f; 21352036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 21452036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy 21552036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy @Override 216a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase public void setTranslationY(float translationY) { 2170d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 2180d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy nSetTranslationY(mFinalizer.mNativeDisplayList, translationY); 219a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 220a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 221a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 222a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase @Override 22352036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy public float getTranslationY() { 22452036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy if (hasNativeDisplayList()) { 22552036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return nGetTranslationY(mFinalizer.mNativeDisplayList); 22652036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 22752036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return 0.0f; 22852036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 22952036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy 23052036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy @Override 231a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase public void setRotation(float rotation) { 2320d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 2330d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy nSetRotation(mFinalizer.mNativeDisplayList, rotation); 234a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 235a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 236a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 237a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase @Override 23852036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy public float getRotation() { 23952036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy if (hasNativeDisplayList()) { 24052036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return nGetRotation(mFinalizer.mNativeDisplayList); 24152036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 24252036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return 0.0f; 24352036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 24452036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy 24552036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy @Override 246a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase public void setRotationX(float rotationX) { 2470d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 2480d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy nSetRotationX(mFinalizer.mNativeDisplayList, rotationX); 249a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 250a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 251a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 252a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase @Override 25352036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy public float getRotationX() { 25452036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy if (hasNativeDisplayList()) { 25552036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return nGetRotationX(mFinalizer.mNativeDisplayList); 25652036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 25752036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return 0.0f; 25852036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 25952036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy 26052036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy @Override 261a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase public void setRotationY(float rotationY) { 2620d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 2630d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy nSetRotationY(mFinalizer.mNativeDisplayList, rotationY); 264a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 265a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 266a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 267a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase @Override 26852036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy public float getRotationY() { 26952036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy if (hasNativeDisplayList()) { 27052036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return nGetRotationY(mFinalizer.mNativeDisplayList); 27152036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 27252036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return 0.0f; 27352036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 27452036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy 27552036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy @Override 276a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase public void setScaleX(float scaleX) { 2770d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 2780d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy nSetScaleX(mFinalizer.mNativeDisplayList, scaleX); 279a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 280a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 281a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 282a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase @Override 28352036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy public float getScaleX() { 28452036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy if (hasNativeDisplayList()) { 28552036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return nGetScaleX(mFinalizer.mNativeDisplayList); 28652036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 28752036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return 1.0f; 28852036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 28952036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy 29052036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy @Override 291a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase public void setScaleY(float scaleY) { 2920d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 2930d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy nSetScaleY(mFinalizer.mNativeDisplayList, scaleY); 294a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 295a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 296a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 297a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase @Override 29852036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy public float getScaleY() { 29952036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy if (hasNativeDisplayList()) { 30052036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return nGetScaleY(mFinalizer.mNativeDisplayList); 30152036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 30252036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return 1.0f; 30352036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 30452036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy 30552036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy @Override 306a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase public void setTransformationInfo(float alpha, float translationX, float translationY, 307a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase float rotation, float rotationX, float rotationY, float scaleX, float scaleY) { 3080d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 3090d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy nSetTransformationInfo(mFinalizer.mNativeDisplayList, alpha, translationX, translationY, 310a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase rotation, rotationX, rotationY, scaleX, scaleY); 311a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 312a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 313a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 314a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase @Override 315a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase public void setPivotX(float pivotX) { 3160d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 3170d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy nSetPivotX(mFinalizer.mNativeDisplayList, pivotX); 318a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 319a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 320a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 321a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase @Override 32252036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy public float getPivotX() { 32352036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy if (hasNativeDisplayList()) { 32452036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return nGetPivotX(mFinalizer.mNativeDisplayList); 32552036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 32652036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return 0.0f; 32752036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 32852036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy 32952036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy @Override 330a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase public void setPivotY(float pivotY) { 3310d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 3320d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy nSetPivotY(mFinalizer.mNativeDisplayList, pivotY); 333a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 334a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 335a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 336a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase @Override 33752036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy public float getPivotY() { 33852036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy if (hasNativeDisplayList()) { 33952036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return nGetPivotY(mFinalizer.mNativeDisplayList); 34052036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 34152036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return 0.0f; 34252036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 34352036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy 34452036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy @Override 345a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase public void setCameraDistance(float distance) { 3460d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 3470d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy nSetCameraDistance(mFinalizer.mNativeDisplayList, distance); 348a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 349a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 350a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 351a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase @Override 35252036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy public float getCameraDistance() { 35352036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy if (hasNativeDisplayList()) { 35452036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return nGetCameraDistance(mFinalizer.mNativeDisplayList); 35552036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 35652036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return 0.0f; 35752036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 35852036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy 35952036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy @Override 360a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase public void setLeft(int left) { 3610d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 3620d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy nSetLeft(mFinalizer.mNativeDisplayList, left); 363a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 364a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 365a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 366a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase @Override 36752036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy public float getLeft() { 36852036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy if (hasNativeDisplayList()) { 36952036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return nGetLeft(mFinalizer.mNativeDisplayList); 37052036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 37152036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return 0.0f; 37252036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 37352036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy 37452036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy @Override 375a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase public void setTop(int top) { 3760d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 3770d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy nSetTop(mFinalizer.mNativeDisplayList, top); 378a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 379a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 380a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 381a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase @Override 38252036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy public float getTop() { 38352036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy if (hasNativeDisplayList()) { 38452036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return nGetTop(mFinalizer.mNativeDisplayList); 38552036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 38652036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return 0.0f; 38752036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 38852036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy 38952036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy @Override 390a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase public void setRight(int right) { 3910d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 3920d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy nSetRight(mFinalizer.mNativeDisplayList, right); 393a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 394a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 395a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 396a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase @Override 39752036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy public float getRight() { 39852036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy if (hasNativeDisplayList()) { 39952036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return nGetRight(mFinalizer.mNativeDisplayList); 40052036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 40152036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return 0.0f; 40252036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy } 40352036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy 40452036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy @Override 405a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase public void setBottom(int bottom) { 4060d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 4070d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy nSetBottom(mFinalizer.mNativeDisplayList, bottom); 408a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 409a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 410a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 411a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase @Override 41252036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy public float getBottom() { 4130d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 41452036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return nGetBottom(mFinalizer.mNativeDisplayList); 415a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 41652036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy return 0.0f; 417a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 418a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 419a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase @Override 420a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase public void setLeftTopRightBottom(int left, int top, int right, int bottom) { 4210d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 4220d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy nSetLeftTopRightBottom(mFinalizer.mNativeDisplayList, left, top, right, bottom); 423a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 424a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 425a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 426a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase @Override 42752036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy public void offsetLeftAndRight(float offset) { 4280d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 42952036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy nOffsetLeftAndRight(mFinalizer.mNativeDisplayList, offset); 430a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 431a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 432a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 433a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase @Override 43452036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy public void offsetTopAndBottom(float offset) { 4350d6f4c06df0b0e35125f088ca028c7226b274dc4Romain Guy if (hasNativeDisplayList()) { 43652036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy nOffsetTopAndBottom(mFinalizer.mNativeDisplayList, offset); 437a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 438a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase } 439a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 4406a2d17f71342f981c9df1dc5beff33e30eb3ae2bChet Haase private static native void nReset(int displayList); 44152036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy private static native void nOffsetTopAndBottom(int displayList, float offset); 44252036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy private static native void nOffsetLeftAndRight(int displayList, float offset); 443a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase private static native void nSetLeftTopRightBottom(int displayList, int left, int top, 444a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase int right, int bottom); 445a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase private static native void nSetBottom(int displayList, int bottom); 446a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase private static native void nSetRight(int displayList, int right); 447a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase private static native void nSetTop(int displayList, int top); 448a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase private static native void nSetLeft(int displayList, int left); 449a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase private static native void nSetCameraDistance(int displayList, float distance); 450a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase private static native void nSetPivotY(int displayList, float pivotY); 451a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase private static native void nSetPivotX(int displayList, float pivotX); 452a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase private static native void nSetCaching(int displayList, boolean caching); 453dd671599bed9d3ca28e2c744e8c224e1e15bc914Chet Haase private static native void nSetClipToBounds(int displayList, boolean clipToBounds); 454a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase private static native void nSetAlpha(int displayList, float alpha); 455db8c9a6a4d9bf8c39f834b25611926caf21380f6Chet Haase private static native void nSetHasOverlappingRendering(int displayList, 456db8c9a6a4d9bf8c39f834b25611926caf21380f6Chet Haase boolean hasOverlappingRendering); 457a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase private static native void nSetTranslationX(int displayList, float translationX); 458a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase private static native void nSetTranslationY(int displayList, float translationY); 459a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase private static native void nSetRotation(int displayList, float rotation); 460a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase private static native void nSetRotationX(int displayList, float rotationX); 461a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase private static native void nSetRotationY(int displayList, float rotationY); 462a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase private static native void nSetScaleX(int displayList, float scaleX); 463a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase private static native void nSetScaleY(int displayList, float scaleY); 464a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase private static native void nSetTransformationInfo(int displayList, float alpha, 465a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase float translationX, float translationY, float rotation, float rotationX, 466a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase float rotationY, float scaleX, float scaleY); 4679420abd56a2af7ddbeb70562b79d61b2dca8c5a1Chet Haase private static native void nSetStaticMatrix(int displayList, int nativeMatrix); 4689420abd56a2af7ddbeb70562b79d61b2dca8c5a1Chet Haase private static native void nSetAnimationMatrix(int displayList, int animationMatrix); 469a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 47052036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy private static native boolean nHasOverlappingRendering(int displayList); 47152036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy private static native void nGetMatrix(int displayList, int matrix); 47252036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy private static native float nGetAlpha(int displayList); 47352036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy private static native float nGetLeft(int displayList); 47452036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy private static native float nGetTop(int displayList); 47552036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy private static native float nGetRight(int displayList); 47652036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy private static native float nGetBottom(int displayList); 47752036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy private static native float nGetCameraDistance(int displayList); 47852036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy private static native float nGetScaleX(int displayList); 47952036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy private static native float nGetScaleY(int displayList); 48052036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy private static native float nGetTranslationX(int displayList); 48152036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy private static native float nGetTranslationY(int displayList); 48252036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy private static native float nGetRotation(int displayList); 48352036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy private static native float nGetRotationX(int displayList); 48452036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy private static native float nGetRotationY(int displayList); 48552036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy private static native float nGetPivotX(int displayList); 48652036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy private static native float nGetPivotY(int displayList); 487a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 488a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase /////////////////////////////////////////////////////////////////////////// 489a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase // Finalization 490a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase /////////////////////////////////////////////////////////////////////////// 491a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3Chet Haase 492f890fab5a6715548e520a6f010a3bfe7607ce56ePatrick Dubroy private static class DisplayListFinalizer { 493162a0217563f4665da6eb183dfce0fef740f641fJeff Brown final int mNativeDisplayList; 4945977baa1fa24125c148a72699b53e62abaf08960Chet Haase 495162a0217563f4665da6eb183dfce0fef740f641fJeff Brown public DisplayListFinalizer(int nativeDisplayList) { 496f890fab5a6715548e520a6f010a3bfe7607ce56ePatrick Dubroy mNativeDisplayList = nativeDisplayList; 4975c13d89c1332fcc499379b9064b891187b75ca32Chet Haase } 4985c13d89c1332fcc499379b9064b891187b75ca32Chet Haase 4995c13d89c1332fcc499379b9064b891187b75ca32Chet Haase @Override 500f890fab5a6715548e520a6f010a3bfe7607ce56ePatrick Dubroy protected void finalize() throws Throwable { 5016c319ca1275c8db892c39b48fc54864c949f9171Romain Guy try { 50252036b19a5f82bc4d75cfcbff99c65df8d25a99bRomain Guy nDestroyDisplayList(mNativeDisplayList); 5036c319ca1275c8db892c39b48fc54864c949f9171Romain Guy } finally { 5046c319ca1275c8db892c39b48fc54864c949f9171Romain Guy super.finalize(); 5056c319ca1275c8db892c39b48fc54864c949f9171Romain Guy } 5065c13d89c1332fcc499379b9064b891187b75ca32Chet Haase } 5075c13d89c1332fcc499379b9064b891187b75ca32Chet Haase } 508b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy} 509