GLES20Canvas.java revision bd6b79b40247aea7bfe13d0831c6c0472df6c636
1e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy/* 2e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * Copyright (C) 2010 The Android Open Source Project 3e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * 4e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * Licensed under the Apache License, Version 2.0 (the "License"); 5e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * you may not use this file except in compliance with the License. 6e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * You may obtain a copy of the License at 7e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * 8e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * http://www.apache.org/licenses/LICENSE-2.0 9e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * 10e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * Unless required by applicable law or agreed to in writing, software 11e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * distributed under the License is distributed on an "AS IS" BASIS, 12e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * See the License for the specific language governing permissions and 14e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * limitations under the License. 15e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy */ 16e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 17e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guypackage android.view; 18e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 19e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guyimport android.graphics.Bitmap; 20e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guyimport android.graphics.Canvas; 21e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guyimport android.graphics.DrawFilter; 22e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guyimport android.graphics.Matrix; 23e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guyimport android.graphics.Paint; 24e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guyimport android.graphics.Path; 25e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guyimport android.graphics.Picture; 26e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guyimport android.graphics.PorterDuff; 27e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guyimport android.graphics.Rect; 28e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guyimport android.graphics.RectF; 29e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guyimport android.graphics.Region; 30e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 31e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guyimport javax.microedition.khronos.opengles.GL; 32e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 33e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy/** 34e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * An implementation of Canvas on top of OpenGL ES 2.0. 35e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy */ 36e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy@SuppressWarnings({"deprecation"}) 37e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guyclass GLES20Canvas extends Canvas { 38e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @SuppressWarnings({"FieldCanBeLocal", "UnusedDeclaration"}) 39e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy private final GL mGl; 40e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy private final boolean mOpaque; 41e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy private final int mRenderer; 42e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 43e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy private int mWidth; 44e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy private int mHeight; 45e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 46e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy /////////////////////////////////////////////////////////////////////////// 47e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // Constructors 48e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy /////////////////////////////////////////////////////////////////////////// 49e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 50e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy GLES20Canvas(GL gl, boolean translucent) { 51e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy mGl = gl; 52e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy mOpaque = !translucent; 53e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 54e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy mRenderer = nCreateRenderer(); 55e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 56e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 57e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy private native int nCreateRenderer(); 58e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 59e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 60e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy protected void finalize() throws Throwable { 61e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy try { 62e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy super.finalize(); 63e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } finally { 64e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy nDestroyRenderer(mRenderer); 65e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 66e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 67e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 68e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy private native void nDestroyRenderer(int renderer); 69e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 70e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy /////////////////////////////////////////////////////////////////////////// 71e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // Canvas management 72e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy /////////////////////////////////////////////////////////////////////////// 73e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 74e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 75e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public boolean isHardwareAccelerated() { 76e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy return true; 77e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 78e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 79e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 80e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public GL getGL() { 81e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 82e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 83e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 84e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 85e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void setBitmap(Bitmap bitmap) { 86e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 87e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 88e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 89e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 90e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public boolean isOpaque() { 91e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy return mOpaque; 92e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 93e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 94e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 95e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public int getWidth() { 96e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy return mWidth; 97e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 98e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 99e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 100e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public int getHeight() { 101e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy return mHeight; 102e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 103e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 104e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy /////////////////////////////////////////////////////////////////////////// 105e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // Setup 106e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy /////////////////////////////////////////////////////////////////////////// 107e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 108e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 109e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void setViewport(int width, int height) { 110e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy mWidth = width; 111e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy mHeight = height; 112e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 113e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy nSetViewport(mRenderer, width, height); 114e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 115e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 116e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy private native void nSetViewport(int renderer, int width, int height); 117e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 118e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy void onPreDraw() { 119e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy nPrepare(mRenderer); 120e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 121e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 122e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy private native void nPrepare(int renderer); 123e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 124e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy /////////////////////////////////////////////////////////////////////////// 125e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // Clipping 126e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy /////////////////////////////////////////////////////////////////////////// 127e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 128e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 129e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public boolean clipPath(Path path) { 130e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 131e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 132e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 133e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 134e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public boolean clipPath(Path path, Region.Op op) { 135e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 136e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 137e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 138e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 139e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public boolean clipRect(float left, float top, float right, float bottom) { 140bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy return nClipRect(mRenderer, left, top, right, bottom); 141e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 142bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy 143bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy private native boolean nClipRect(int renderer, float left, float top, float right, float bottom); 144e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 145e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 146e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public boolean clipRect(float left, float top, float right, float bottom, Region.Op op) { 147e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 148e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 149e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 150e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 151e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public boolean clipRect(int left, int top, int right, int bottom) { 152bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy return nClipRect(mRenderer, left, top, right, bottom); 153e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 154bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy 155bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy private native boolean nClipRect(int renderer, int left, int top, int right, int bottom); 156e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 157e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 158e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public boolean clipRect(Rect rect) { 159bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy return clipRect(rect.left, rect.top, rect.right, rect.bottom); 160e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 161e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 162e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 163e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public boolean clipRect(Rect rect, Region.Op op) { 164e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 165e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 166e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 167e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 168e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public boolean clipRect(RectF rect) { 169bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy return clipRect(rect.left, rect.top, rect.right, rect.bottom); 170e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 171e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 172e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 173e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public boolean clipRect(RectF rect, Region.Op op) { 174e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 175e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 176e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 177e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 178e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public boolean clipRegion(Region region) { 179e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 180e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 181e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 182e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 183e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public boolean clipRegion(Region region, Region.Op op) { 184e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 185e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 186e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 187e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 188e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public boolean getClipBounds(Rect bounds) { 1899d5316e3f56d138504565ff311145ac01621dff4Romain Guy return nGetClipBounds(mRenderer, bounds); 190e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 191e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 1929d5316e3f56d138504565ff311145ac01621dff4Romain Guy private native boolean nGetClipBounds(int renderer, Rect bounds); 1939d5316e3f56d138504565ff311145ac01621dff4Romain Guy 194e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 195e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public boolean quickReject(float left, float top, float right, float bottom, EdgeType type) { 196c7d53494f1fbd9f9d74af89053ff9fdb1ccbac6cRomain Guy return nQuickReject(mRenderer, left, top, right, bottom, type.nativeInt); 197e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 198c7d53494f1fbd9f9d74af89053ff9fdb1ccbac6cRomain Guy 199c7d53494f1fbd9f9d74af89053ff9fdb1ccbac6cRomain Guy private native boolean nQuickReject(int renderer, float left, float top, 200c7d53494f1fbd9f9d74af89053ff9fdb1ccbac6cRomain Guy float right, float bottom, int edge); 201e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 202e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 203e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public boolean quickReject(Path path, EdgeType type) { 204bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy throw new UnsupportedOperationException(); 205e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 206e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 207e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 208e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public boolean quickReject(RectF rect, EdgeType type) { 209bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy return quickReject(rect.left, rect.top, rect.right, rect.bottom, type); 210e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 211e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 212e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy /////////////////////////////////////////////////////////////////////////// 213e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // Transformations 214e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy /////////////////////////////////////////////////////////////////////////// 215e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 216e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 217e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void translate(float dx, float dy) { 218f6a11b8a9e25ff9861bbba19251bea84d8a5daf2Romain Guy nTranslate(mRenderer, dx, dy); 219e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 220f6a11b8a9e25ff9861bbba19251bea84d8a5daf2Romain Guy 221f6a11b8a9e25ff9861bbba19251bea84d8a5daf2Romain Guy private native void nTranslate(int renderer, float dx, float dy); 222e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 223e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 224e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void skew(float sx, float sy) { 225e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 226e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 227e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 228e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 229e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void rotate(float degrees) { 230f6a11b8a9e25ff9861bbba19251bea84d8a5daf2Romain Guy nRotate(mRenderer, degrees); 231e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 232f6a11b8a9e25ff9861bbba19251bea84d8a5daf2Romain Guy 233f6a11b8a9e25ff9861bbba19251bea84d8a5daf2Romain Guy private native void nRotate(int renderer, float degrees); 234e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 235e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 236e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void scale(float sx, float sy) { 237f6a11b8a9e25ff9861bbba19251bea84d8a5daf2Romain Guy nScale(mRenderer, sx, sy); 238e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 239e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 240f6a11b8a9e25ff9861bbba19251bea84d8a5daf2Romain Guy private native void nScale(int renderer, float sx, float sy); 241f6a11b8a9e25ff9861bbba19251bea84d8a5daf2Romain Guy 242e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 243e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void setMatrix(Matrix matrix) { 244f6a11b8a9e25ff9861bbba19251bea84d8a5daf2Romain Guy nSetMatrix(mRenderer, matrix.native_instance); 245e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 246f6a11b8a9e25ff9861bbba19251bea84d8a5daf2Romain Guy 247f6a11b8a9e25ff9861bbba19251bea84d8a5daf2Romain Guy private native void nSetMatrix(int renderer, int matrix); 248e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 249e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 250f6a11b8a9e25ff9861bbba19251bea84d8a5daf2Romain Guy public void getMatrix(Matrix matrix) { 251f6a11b8a9e25ff9861bbba19251bea84d8a5daf2Romain Guy nGetMatrix(mRenderer, matrix.native_instance); 252e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 253f6a11b8a9e25ff9861bbba19251bea84d8a5daf2Romain Guy 254f6a11b8a9e25ff9861bbba19251bea84d8a5daf2Romain Guy private native void nGetMatrix(int renderer, int matrix); 255e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 256e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 257e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void concat(Matrix matrix) { 258f6a11b8a9e25ff9861bbba19251bea84d8a5daf2Romain Guy nConcatMatrix(mRenderer, matrix.native_instance); 259e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 260e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 261f6a11b8a9e25ff9861bbba19251bea84d8a5daf2Romain Guy private native void nConcatMatrix(int renderer, int matrix); 262f6a11b8a9e25ff9861bbba19251bea84d8a5daf2Romain Guy 263e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy /////////////////////////////////////////////////////////////////////////// 264e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // State management 265e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy /////////////////////////////////////////////////////////////////////////// 266e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 267e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 268e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public int save() { 269bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy return nSave(mRenderer, 0); 270e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 271bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy 272e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 273e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public int save(int saveFlags) { 274bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy return nSave(mRenderer, saveFlags); 275e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 276e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 277bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy private native int nSave(int renderer, int flags); 278bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy 279e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 280e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public int saveLayer(RectF bounds, Paint paint, int saveFlags) { 281bd6b79b40247aea7bfe13d0831c6c0472df6c636Romain Guy return saveLayer(bounds.left, bounds.top, bounds.right, bounds.bottom, paint, saveFlags); 282e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 283e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 284e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 285e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public int saveLayer(float left, float top, float right, float bottom, Paint paint, 286e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy int saveFlags) { 287bd6b79b40247aea7bfe13d0831c6c0472df6c636Romain Guy int nativePaint = paint == null ? 0 : paint.mNativePaint; 288bd6b79b40247aea7bfe13d0831c6c0472df6c636Romain Guy return nSaveLayer(mRenderer, left, top, right, bottom, nativePaint, saveFlags); 289e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 290e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 291bd6b79b40247aea7bfe13d0831c6c0472df6c636Romain Guy private native int nSaveLayer(int renderer, float left, float top, float right, float bottom, 292bd6b79b40247aea7bfe13d0831c6c0472df6c636Romain Guy int paint, int saveFlags); 293bd6b79b40247aea7bfe13d0831c6c0472df6c636Romain Guy 294e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 295e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public int saveLayerAlpha(RectF bounds, int alpha, int saveFlags) { 296bd6b79b40247aea7bfe13d0831c6c0472df6c636Romain Guy return saveLayerAlpha(bounds.left, bounds.top, bounds.right, bounds.bottom, 297bd6b79b40247aea7bfe13d0831c6c0472df6c636Romain Guy alpha, saveFlags); 298e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 299e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 300e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 301e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public int saveLayerAlpha(float left, float top, float right, float bottom, int alpha, 302e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy int saveFlags) { 303bd6b79b40247aea7bfe13d0831c6c0472df6c636Romain Guy return nSaveLayerAlpha(mRenderer, left, top, right, bottom, alpha, saveFlags); 304e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 305e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 306bd6b79b40247aea7bfe13d0831c6c0472df6c636Romain Guy private native int nSaveLayerAlpha(int renderer, float left, float top, float right, 307bd6b79b40247aea7bfe13d0831c6c0472df6c636Romain Guy float bottom, int alpha, int saveFlags); 308bd6b79b40247aea7bfe13d0831c6c0472df6c636Romain Guy 309e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 310e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void restore() { 311bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy nRestore(mRenderer); 312e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 313bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy 314bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy private native void nRestore(int renderer); 315e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 316e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 317e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void restoreToCount(int saveCount) { 318bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy nRestoreToCount(mRenderer, saveCount); 319e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 320e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 321bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy private native void nRestoreToCount(int renderer, int saveCount); 322bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy 323e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 324e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public int getSaveCount() { 325bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy return nGetSaveCount(mRenderer); 326e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 327bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy 328bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4Romain Guy private native int nGetSaveCount(int renderer); 329e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 330e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy /////////////////////////////////////////////////////////////////////////// 331e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // Filtering 332e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy /////////////////////////////////////////////////////////////////////////// 333e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 334e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 335e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void setDrawFilter(DrawFilter filter) { 336e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 337e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 338e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 339e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 340e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public DrawFilter getDrawFilter() { 341e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 342e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 343e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 344e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy /////////////////////////////////////////////////////////////////////////// 345e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // Drawing 346e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy /////////////////////////////////////////////////////////////////////////// 347e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 348e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 349e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, 350e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy Paint paint) { 351e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 352e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 353e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 354e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 355e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawARGB(int a, int r, int g, int b) { 35685bf02fc16784d935fb9eebfa9cb20fe46ff7951Romain Guy drawColor((a & 0xFF) << 24 | (r & 0xFF) << 16 | (g & 0xFF) << 8 | (b & 0xFF)); 357e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 358e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 359e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 360e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawBitmap(Bitmap bitmap, float left, float top, Paint paint) { 361e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // TODO: Implement 362e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 363e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 364e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 365e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint) { 366e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // TODO: Implement 367e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 368e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 369e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 370e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint) { 371e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // TODO: Implement 372e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 373e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 374e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 375e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint) { 376e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // TODO: Implement 377e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 378e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 379e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 380e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawBitmap(int[] colors, int offset, int stride, float x, float y, 381e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy int width, int height, boolean hasAlpha, Paint paint) { 382e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 383e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // TODO: Implement 384e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 385e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 386e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 387e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawBitmap(int[] colors, int offset, int stride, int x, int y, 388e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy int width, int height, boolean hasAlpha, Paint paint) { 389e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 390e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // TODO: Implement 391e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 392e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 393e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 394e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawBitmapMesh(Bitmap bitmap, int meshWidth, int meshHeight, float[] verts, 395e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy int vertOffset, int[] colors, int colorOffset, Paint paint) { 396e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 397e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 398e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 399e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 400e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 401e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawCircle(float cx, float cy, float radius, Paint paint) { 402e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 403e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 404e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 405e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 406e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawColor(int color) { 40785bf02fc16784d935fb9eebfa9cb20fe46ff7951Romain Guy drawColor(color, PorterDuff.Mode.SRC_OVER); 408e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 409e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 410e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 411e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawColor(int color, PorterDuff.Mode mode) { 41285bf02fc16784d935fb9eebfa9cb20fe46ff7951Romain Guy nDrawColor(mRenderer, color, mode.nativeInt); 413e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 41485bf02fc16784d935fb9eebfa9cb20fe46ff7951Romain Guy 41585bf02fc16784d935fb9eebfa9cb20fe46ff7951Romain Guy private native void nDrawColor(int renderer, int color, int mode); 416e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 417e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 418e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawLine(float startX, float startY, float stopX, float stopY, Paint paint) { 419e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // TODO: Implement 420e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 421e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 422e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 423e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawLines(float[] pts, int offset, int count, Paint paint) { 424e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // TODO: Implement 425e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 426e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 427e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 428e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawLines(float[] pts, Paint paint) { 429e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // TODO: Implement 430e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 431e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 432e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 433e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawOval(RectF oval, Paint paint) { 434e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 435e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 436e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 437e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 438e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawPaint(Paint paint) { 439e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // TODO: Implement 440e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 441e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 442e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 443e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawPath(Path path, Paint paint) { 444e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 445e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 446e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 447e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 448e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawPicture(Picture picture) { 449e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 450e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 451e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 452e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 453e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawPicture(Picture picture, Rect dst) { 454e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 455e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 456e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 457e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 458e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawPicture(Picture picture, RectF dst) { 459e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 460e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 461e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 462e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 463e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawPoint(float x, float y, Paint paint) { 464e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // TODO: Implement 465e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 466e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 467e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 468e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawPoints(float[] pts, int offset, int count, Paint paint) { 469e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // TODO: Implement 470e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 471e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 472e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 473e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawPoints(float[] pts, Paint paint) { 474e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // TODO: Implement 475e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 476e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 477e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 478e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawPosText(char[] text, int index, int count, float[] pos, Paint paint) { 479e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 480e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 481e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 482e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 483e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawPosText(String text, float[] pos, Paint paint) { 484e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 485e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 486e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 487e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 488e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawRect(float left, float top, float right, float bottom, Paint paint) { 489c7d53494f1fbd9f9d74af89053ff9fdb1ccbac6cRomain Guy nDrawRect(mRenderer, left, top, right, bottom, paint.mNativePaint); 490e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 491e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 492c7d53494f1fbd9f9d74af89053ff9fdb1ccbac6cRomain Guy private native void nDrawRect(int renderer, float left, float top, float right, float bottom, 493c7d53494f1fbd9f9d74af89053ff9fdb1ccbac6cRomain Guy int paint); 494c7d53494f1fbd9f9d74af89053ff9fdb1ccbac6cRomain Guy 495e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 496e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawRect(Rect r, Paint paint) { 497c7d53494f1fbd9f9d74af89053ff9fdb1ccbac6cRomain Guy drawRect(r.left, r.top, r.right, r.bottom, paint); 498e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 499e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 500e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 501c7d53494f1fbd9f9d74af89053ff9fdb1ccbac6cRomain Guy public void drawRect(RectF r, Paint paint) { 502c7d53494f1fbd9f9d74af89053ff9fdb1ccbac6cRomain Guy drawRect(r.left, r.top, r.right, r.bottom, paint); 503e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 504e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 505e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 506e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawRGB(int r, int g, int b) { 50785bf02fc16784d935fb9eebfa9cb20fe46ff7951Romain Guy drawColor(0xFF000000 | (r & 0xFF) << 16 | (g & 0xFF) << 8 | (b & 0xFF)); 508e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 509e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 510e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 511e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawRoundRect(RectF rect, float rx, float ry, Paint paint) { 512e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 513e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 514e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 515e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 516e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawText(char[] text, int index, int count, float x, float y, Paint paint) { 517e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // TODO: Implement 518e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 519e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 520e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 521e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawText(CharSequence text, int start, int end, float x, float y, Paint paint) { 522e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // TODO: Implement 523e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 524e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 525e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 526e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawText(String text, int start, int end, float x, float y, Paint paint) { 527e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // TODO: Implement 528e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 529e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 530e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 531e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawText(String text, float x, float y, Paint paint) { 532e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy // TODO: Implement 533e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 534e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 535e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 536e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawTextOnPath(char[] text, int index, int count, Path path, float hOffset, 537e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy float vOffset, Paint paint) { 538e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 539e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 540e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 541e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 542e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 543e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawTextOnPath(String text, Path path, float hOffset, float vOffset, Paint paint) { 544e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 545e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 546e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 547e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 548e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawTextRun(char[] text, int index, int count, int contextIndex, int contextCount, 549e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy float x, float y, int dir, Paint paint) { 550e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 551e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 552e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 553e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 554e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 555e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawTextRun(CharSequence text, int start, int end, int contextStart, int contextEnd, 556e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy float x, float y, int dir, Paint paint) { 557e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 558e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 559e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 560e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 561e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy @Override 562e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public void drawVertices(VertexMode mode, int vertexCount, float[] verts, int vertOffset, 563e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy float[] texs, int texOffset, int[] colors, int colorOffset, short[] indices, 564e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy int indexOffset, int indexCount, Paint paint) { 565e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 566e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy throw new UnsupportedOperationException(); 567e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy } 568e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy} 569