blob: 8e19efd0a086a05be644d9f2b4ec1a9ccbd166f3 [file] [log] [blame]
Chet Haasea1cff502012-02-21 13:43:44 -08001/*
2 * Copyright (C) 2012 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#define LOG_TAG "OpenGLRenderer"
18
19#include <EGL/egl.h>
20
21#include "jni.h"
22#include "GraphicsJNI.h"
23#include <nativehelper/JNIHelp.h>
24#include <android_runtime/AndroidRuntime.h>
25
Romain Guy52036b12013-02-14 18:03:37 -080026#include <DisplayList.h>
Chet Haasea1cff502012-02-21 13:43:44 -080027#include <DisplayListRenderer.h>
28
29namespace android {
30
31using namespace uirenderer;
32
33/**
34 * Note: OpenGLRenderer JNI layer is generated and compiled only on supported
35 * devices. This means all the logic must be compiled only when the
36 * preprocessor variable USE_OPENGL_RENDERER is defined.
37 */
38#ifdef USE_OPENGL_RENDERER
39
Romain Guy52036b12013-02-14 18:03:37 -080040// ----------------------------------------------------------------------------
41// DisplayList view properties
42// ----------------------------------------------------------------------------
43
Chet Haase6a2d17f2012-09-30 12:14:13 -070044static void android_view_GLES20DisplayList_reset(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +000045 jobject clazz, jlong displayListHandle) {
46 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Chet Haase6a2d17f2012-09-30 12:14:13 -070047 displayList->reset();
48}
49
Romain Guy52036b12013-02-14 18:03:37 -080050static jint android_view_GLES20DisplayList_getDisplayListSize(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +000051 jobject clazz, jlong displayListHandle) {
52 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Romain Guy52036b12013-02-14 18:03:37 -080053 return displayList->getSize();
54}
55
56static void android_view_GLES20DisplayList_setDisplayListName(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +000057 jobject clazz, jlong displayListHandle, jstring name) {
58 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Romain Guy52036b12013-02-14 18:03:37 -080059 if (name != NULL) {
60 const char* textArray = env->GetStringUTFChars(name, NULL);
61 displayList->setName(textArray);
62 env->ReleaseStringUTFChars(name, textArray);
63 }
64}
65
66static void android_view_GLES20DisplayList_destroyDisplayList(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +000067 jobject clazz, jlong displayListHandle) {
68 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Romain Guy52036b12013-02-14 18:03:37 -080069 DisplayList::destroyDisplayListDeferred(displayList);
70}
71
Chet Haasea1cff502012-02-21 13:43:44 -080072// ----------------------------------------------------------------------------
73// DisplayList view properties
74// ----------------------------------------------------------------------------
75
76static void android_view_GLES20DisplayList_setCaching(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +000077 jobject clazz, jlong displayListHandle, jboolean caching) {
78 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Chet Haasea1cff502012-02-21 13:43:44 -080079 displayList->setCaching(caching);
80}
81
Ashok Bhata0398432014-01-20 20:08:01 +000082//serban
Chet Haase9420abd2012-03-29 16:28:32 -070083static void android_view_GLES20DisplayList_setStaticMatrix(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +000084 jobject clazz, jlong displayListHandle, jlong matrixHandle) {
85 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
86 SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
Chet Haase9420abd2012-03-29 16:28:32 -070087 displayList->setStaticMatrix(matrix);
88}
89
90static void android_view_GLES20DisplayList_setAnimationMatrix(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +000091 jobject clazz, jlong displayListHandle, jlong matrixHandle) {
92 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
93 SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
Chet Haase9420abd2012-03-29 16:28:32 -070094 displayList->setAnimationMatrix(matrix);
Chet Haasea1cff502012-02-21 13:43:44 -080095}
96
Chet Haasedd671592013-04-19 14:54:34 -070097static void android_view_GLES20DisplayList_setClipToBounds(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +000098 jobject clazz, jlong displayListHandle, jboolean clipToBounds) {
99 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Chet Haasedd671592013-04-19 14:54:34 -0700100 displayList->setClipToBounds(clipToBounds);
Chet Haasea1cff502012-02-21 13:43:44 -0800101}
102
103static void android_view_GLES20DisplayList_setAlpha(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000104 jobject clazz, jlong displayListHandle, jfloat alpha) {
105 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Chet Haasea1cff502012-02-21 13:43:44 -0800106 displayList->setAlpha(alpha);
107}
108
Chet Haasedb8c9a62012-03-21 18:54:18 -0700109static void android_view_GLES20DisplayList_setHasOverlappingRendering(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000110 jobject clazz, jlong displayListHandle, jboolean hasOverlappingRendering) {
111 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Chet Haasedb8c9a62012-03-21 18:54:18 -0700112 displayList->setHasOverlappingRendering(hasOverlappingRendering);
113}
114
Chet Haasea1cff502012-02-21 13:43:44 -0800115static void android_view_GLES20DisplayList_setTranslationX(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000116 jobject clazz, jlong displayListHandle, jfloat tx) {
117 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Chet Haasea1cff502012-02-21 13:43:44 -0800118 displayList->setTranslationX(tx);
119}
120
121static void android_view_GLES20DisplayList_setTranslationY(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000122 jobject clazz, jlong displayListHandle, jfloat ty) {
123 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Chet Haasea1cff502012-02-21 13:43:44 -0800124 displayList->setTranslationY(ty);
125}
126
127static void android_view_GLES20DisplayList_setRotation(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000128 jobject clazz, jlong displayListHandle, jfloat rotation) {
129 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Chet Haasea1cff502012-02-21 13:43:44 -0800130 displayList->setRotation(rotation);
131}
132
133static void android_view_GLES20DisplayList_setRotationX(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000134 jobject clazz, jlong displayListHandle, jfloat rx) {
135 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Chet Haasea1cff502012-02-21 13:43:44 -0800136 displayList->setRotationX(rx);
137}
138
139static void android_view_GLES20DisplayList_setRotationY(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000140 jobject clazz, jlong displayListHandle, jfloat ry) {
141 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Chet Haasea1cff502012-02-21 13:43:44 -0800142 displayList->setRotationY(ry);
143}
144
145static void android_view_GLES20DisplayList_setScaleX(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000146 jobject clazz, jlong displayListHandle, jfloat sx) {
147 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Chet Haasea1cff502012-02-21 13:43:44 -0800148 displayList->setScaleX(sx);
149}
150
151static void android_view_GLES20DisplayList_setScaleY(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000152 jobject clazz, jlong displayListHandle, jfloat sy) {
153 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Chet Haasea1cff502012-02-21 13:43:44 -0800154 displayList->setScaleY(sy);
155}
156
157static void android_view_GLES20DisplayList_setTransformationInfo(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000158 jobject clazz, jlong displayListHandle, jfloat alpha,
159 jfloat translationX, jfloat translationY, jfloat rotation, jfloat rotationX, jfloat rotationY,
160 jfloat scaleX, jfloat scaleY) {
161 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Chet Haasea1cff502012-02-21 13:43:44 -0800162 displayList->setAlpha(alpha);
163 displayList->setTranslationX(translationX);
164 displayList->setTranslationY(translationY);
165 displayList->setRotation(rotation);
166 displayList->setRotationX(rotationX);
167 displayList->setRotationY(rotationY);
168 displayList->setScaleX(scaleX);
169 displayList->setScaleY(scaleY);
170}
171
172static void android_view_GLES20DisplayList_setPivotX(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000173 jobject clazz, jlong displayListHandle, jfloat px) {
174 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Chet Haasea1cff502012-02-21 13:43:44 -0800175 displayList->setPivotX(px);
176}
177
178static void android_view_GLES20DisplayList_setPivotY(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000179 jobject clazz, jlong displayListHandle, jfloat py) {
180 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Chet Haasea1cff502012-02-21 13:43:44 -0800181 displayList->setPivotY(py);
182}
183
184static void android_view_GLES20DisplayList_setCameraDistance(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000185 jobject clazz, jlong displayListHandle, jfloat distance) {
186 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Chet Haasea1cff502012-02-21 13:43:44 -0800187 displayList->setCameraDistance(distance);
188}
189
190static void android_view_GLES20DisplayList_setLeft(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000191 jobject clazz, jlong displayListHandle, jint left) {
192 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Chet Haasea1cff502012-02-21 13:43:44 -0800193 displayList->setLeft(left);
194}
195
196static void android_view_GLES20DisplayList_setTop(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000197 jobject clazz, jlong displayListHandle, jint top) {
198 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Chet Haasea1cff502012-02-21 13:43:44 -0800199 displayList->setTop(top);
200}
201
202static void android_view_GLES20DisplayList_setRight(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000203 jobject clazz, jlong displayListHandle, jint right) {
204 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Chet Haasea1cff502012-02-21 13:43:44 -0800205 displayList->setRight(right);
206}
207
208static void android_view_GLES20DisplayList_setBottom(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000209 jobject clazz, jlong displayListHandle, jint bottom) {
210 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Chet Haasea1cff502012-02-21 13:43:44 -0800211 displayList->setBottom(bottom);
212}
213
Chet Haasea1cff502012-02-21 13:43:44 -0800214static void android_view_GLES20DisplayList_setLeftTopRightBottom(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000215 jobject clazz, jlong displayListHandle, jint left, jint top,
Chet Haasea1cff502012-02-21 13:43:44 -0800216 int right, int bottom) {
Ashok Bhata0398432014-01-20 20:08:01 +0000217 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Chet Haasea1cff502012-02-21 13:43:44 -0800218 displayList->setLeftTopRightBottom(left, top, right, bottom);
219}
220
Romain Guy52036b12013-02-14 18:03:37 -0800221static void android_view_GLES20DisplayList_offsetLeftAndRight(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000222 jobject clazz, jlong displayListHandle, jfloat offset) {
223 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Chet Haasea1cff502012-02-21 13:43:44 -0800224 displayList->offsetLeftRight(offset);
225}
226
Romain Guy52036b12013-02-14 18:03:37 -0800227static void android_view_GLES20DisplayList_offsetTopAndBottom(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000228 jobject clazz, jlong displayListHandle, jfloat offset) {
229 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Chet Haasea1cff502012-02-21 13:43:44 -0800230 displayList->offsetTopBottom(offset);
231}
232
Romain Guy52036b12013-02-14 18:03:37 -0800233static void android_view_GLES20DisplayList_getMatrix(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000234 jobject clazz, jlong displayListHandle, jlong matrixHandle) {
235 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
236 SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
Romain Guy52036b12013-02-14 18:03:37 -0800237 SkMatrix* source = displayList->getStaticMatrix();
238 if (source) {
239 matrix->setConcat(SkMatrix::I(), *source);
240 } else {
241 matrix->setIdentity();
242 }
243}
244
245static jboolean android_view_GLES20DisplayList_hasOverlappingRendering(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000246 jobject clazz, jlong displayListHandle) {
247 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Romain Guy52036b12013-02-14 18:03:37 -0800248 return displayList->hasOverlappingRendering();
249}
250
251static jfloat android_view_GLES20DisplayList_getAlpha(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000252 jobject clazz, jlong displayListHandle) {
253 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Romain Guy52036b12013-02-14 18:03:37 -0800254 return displayList->getAlpha();
255}
256
257static jfloat android_view_GLES20DisplayList_getLeft(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000258 jobject clazz, jlong displayListHandle) {
259 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Romain Guy52036b12013-02-14 18:03:37 -0800260 return displayList->getLeft();
261}
262
263static jfloat android_view_GLES20DisplayList_getTop(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000264 jobject clazz, jlong displayListHandle) {
265 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Romain Guy52036b12013-02-14 18:03:37 -0800266 return displayList->getTop();
267}
268
269static jfloat android_view_GLES20DisplayList_getRight(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000270 jobject clazz, jlong displayListHandle) {
271 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Romain Guy52036b12013-02-14 18:03:37 -0800272 return displayList->getRight();
273}
274
275static jfloat android_view_GLES20DisplayList_getBottom(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000276 jobject clazz, jlong displayListHandle) {
277 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Romain Guy52036b12013-02-14 18:03:37 -0800278 return displayList->getBottom();
279}
280
281static jfloat android_view_GLES20DisplayList_getCameraDistance(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000282 jobject clazz, jlong displayListHandle) {
283 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Romain Guy52036b12013-02-14 18:03:37 -0800284 return displayList->getCameraDistance();
285}
286
287static jfloat android_view_GLES20DisplayList_getScaleX(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000288 jobject clazz, jlong displayListHandle) {
289 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Romain Guy52036b12013-02-14 18:03:37 -0800290 return displayList->getScaleX();
291}
292
293static jfloat android_view_GLES20DisplayList_getScaleY(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000294 jobject clazz, jlong displayListHandle) {
295 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Romain Guy52036b12013-02-14 18:03:37 -0800296 return displayList->getScaleY();
297}
298
299static jfloat android_view_GLES20DisplayList_getTranslationX(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000300 jobject clazz, jlong displayListHandle) {
301 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Romain Guy52036b12013-02-14 18:03:37 -0800302 return displayList->getTranslationX();
303}
304
305static jfloat android_view_GLES20DisplayList_getTranslationY(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000306 jobject clazz, jlong displayListHandle) {
307 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Romain Guy52036b12013-02-14 18:03:37 -0800308 return displayList->getTranslationY();
309}
310
311static jfloat android_view_GLES20DisplayList_getRotation(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000312 jobject clazz, jlong displayListHandle) {
313 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Romain Guy52036b12013-02-14 18:03:37 -0800314 return displayList->getRotation();
315}
316
317static jfloat android_view_GLES20DisplayList_getRotationX(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000318 jobject clazz, jlong displayListHandle) {
319 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Romain Guy52036b12013-02-14 18:03:37 -0800320 return displayList->getRotationX();
321}
322
323static jfloat android_view_GLES20DisplayList_getRotationY(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000324 jobject clazz, jlong displayListHandle) {
325 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Romain Guy52036b12013-02-14 18:03:37 -0800326 return displayList->getRotationY();
327}
328
329static jfloat android_view_GLES20DisplayList_getPivotX(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000330 jobject clazz, jlong displayListHandle) {
331 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Romain Guy52036b12013-02-14 18:03:37 -0800332 return displayList->getPivotX();
333}
334
335static jfloat android_view_GLES20DisplayList_getPivotY(JNIEnv* env,
Ashok Bhata0398432014-01-20 20:08:01 +0000336 jobject clazz, jlong displayListHandle) {
337 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
Romain Guy52036b12013-02-14 18:03:37 -0800338 return displayList->getPivotY();
339}
340
Chet Haasea1cff502012-02-21 13:43:44 -0800341#endif // USE_OPENGL_RENDERER
342
343// ----------------------------------------------------------------------------
344// JNI Glue
345// ----------------------------------------------------------------------------
346
347const char* const kClassPathName = "android/view/GLES20DisplayList";
348
349static JNINativeMethod gMethods[] = {
350#ifdef USE_OPENGL_RENDERER
Ashok Bhata0398432014-01-20 20:08:01 +0000351 { "nDestroyDisplayList", "(J)V", (void*) android_view_GLES20DisplayList_destroyDisplayList },
352 { "nGetDisplayListSize", "(J)I", (void*) android_view_GLES20DisplayList_getDisplayListSize },
353 { "nSetDisplayListName", "(JLjava/lang/String;)V",
Romain Guy52036b12013-02-14 18:03:37 -0800354 (void*) android_view_GLES20DisplayList_setDisplayListName },
355
Ashok Bhata0398432014-01-20 20:08:01 +0000356 { "nReset", "(J)V", (void*) android_view_GLES20DisplayList_reset },
357 { "nSetCaching", "(JZ)V", (void*) android_view_GLES20DisplayList_setCaching },
358 { "nSetStaticMatrix", "(JJ)V", (void*) android_view_GLES20DisplayList_setStaticMatrix },
359 { "nSetAnimationMatrix", "(JJ)V", (void*) android_view_GLES20DisplayList_setAnimationMatrix },
360 { "nSetClipToBounds", "(JZ)V", (void*) android_view_GLES20DisplayList_setClipToBounds },
361 { "nSetAlpha", "(JF)V", (void*) android_view_GLES20DisplayList_setAlpha },
362 { "nSetHasOverlappingRendering", "(JZ)V",
Chet Haasedb8c9a62012-03-21 18:54:18 -0700363 (void*) android_view_GLES20DisplayList_setHasOverlappingRendering },
Ashok Bhata0398432014-01-20 20:08:01 +0000364 { "nSetTranslationX", "(JF)V", (void*) android_view_GLES20DisplayList_setTranslationX },
365 { "nSetTranslationY", "(JF)V", (void*) android_view_GLES20DisplayList_setTranslationY },
366 { "nSetRotation", "(JF)V", (void*) android_view_GLES20DisplayList_setRotation },
367 { "nSetRotationX", "(JF)V", (void*) android_view_GLES20DisplayList_setRotationX },
368 { "nSetRotationY", "(JF)V", (void*) android_view_GLES20DisplayList_setRotationY },
369 { "nSetScaleX", "(JF)V", (void*) android_view_GLES20DisplayList_setScaleX },
370 { "nSetScaleY", "(JF)V", (void*) android_view_GLES20DisplayList_setScaleY },
371 { "nSetTransformationInfo","(JFFFFFFFF)V",
Chet Haasea1cff502012-02-21 13:43:44 -0800372 (void*) android_view_GLES20DisplayList_setTransformationInfo },
Ashok Bhata0398432014-01-20 20:08:01 +0000373 { "nSetPivotX", "(JF)V", (void*) android_view_GLES20DisplayList_setPivotX },
374 { "nSetPivotY", "(JF)V", (void*) android_view_GLES20DisplayList_setPivotY },
375 { "nSetCameraDistance", "(JF)V", (void*) android_view_GLES20DisplayList_setCameraDistance },
376 { "nSetLeft", "(JI)V", (void*) android_view_GLES20DisplayList_setLeft },
377 { "nSetTop", "(JI)V", (void*) android_view_GLES20DisplayList_setTop },
378 { "nSetRight", "(JI)V", (void*) android_view_GLES20DisplayList_setRight },
379 { "nSetBottom", "(JI)V", (void*) android_view_GLES20DisplayList_setBottom },
380 { "nSetLeftTopRightBottom","(JIIII)V",
Chet Haasea1cff502012-02-21 13:43:44 -0800381 (void*) android_view_GLES20DisplayList_setLeftTopRightBottom },
Ashok Bhata0398432014-01-20 20:08:01 +0000382 { "nOffsetLeftAndRight", "(JF)V", (void*) android_view_GLES20DisplayList_offsetLeftAndRight },
383 { "nOffsetTopAndBottom", "(JF)V", (void*) android_view_GLES20DisplayList_offsetTopAndBottom },
Chet Haasea1cff502012-02-21 13:43:44 -0800384
Romain Guy52036b12013-02-14 18:03:37 -0800385
Ashok Bhata0398432014-01-20 20:08:01 +0000386 { "nGetMatrix", "(JJ)V", (void*) android_view_GLES20DisplayList_getMatrix },
387 { "nHasOverlappingRendering", "(J)Z", (void*) android_view_GLES20DisplayList_hasOverlappingRendering },
388 { "nGetAlpha", "(J)F", (void*) android_view_GLES20DisplayList_getAlpha },
389 { "nGetLeft", "(J)F", (void*) android_view_GLES20DisplayList_getLeft },
390 { "nGetTop", "(J)F", (void*) android_view_GLES20DisplayList_getTop },
391 { "nGetRight", "(J)F", (void*) android_view_GLES20DisplayList_getRight },
392 { "nGetBottom", "(J)F", (void*) android_view_GLES20DisplayList_getBottom },
393 { "nGetCameraDistance", "(J)F", (void*) android_view_GLES20DisplayList_getCameraDistance },
394 { "nGetScaleX", "(J)F", (void*) android_view_GLES20DisplayList_getScaleX },
395 { "nGetScaleY", "(J)F", (void*) android_view_GLES20DisplayList_getScaleY },
396 { "nGetTranslationX", "(J)F", (void*) android_view_GLES20DisplayList_getTranslationX },
397 { "nGetTranslationY", "(J)F", (void*) android_view_GLES20DisplayList_getTranslationY },
398 { "nGetRotation", "(J)F", (void*) android_view_GLES20DisplayList_getRotation },
399 { "nGetRotationX", "(J)F", (void*) android_view_GLES20DisplayList_getRotationX },
400 { "nGetRotationY", "(J)F", (void*) android_view_GLES20DisplayList_getRotationY },
401 { "nGetPivotX", "(J)F", (void*) android_view_GLES20DisplayList_getPivotX },
402 { "nGetPivotY", "(J)F", (void*) android_view_GLES20DisplayList_getPivotY },
Chet Haasea1cff502012-02-21 13:43:44 -0800403#endif
404};
405
406#ifdef USE_OPENGL_RENDERER
407 #define FIND_CLASS(var, className) \
408 var = env->FindClass(className); \
409 LOG_FATAL_IF(! var, "Unable to find class " className);
410
411 #define GET_METHOD_ID(var, clazz, methodName, methodDescriptor) \
412 var = env->GetMethodID(clazz, methodName, methodDescriptor); \
413 LOG_FATAL_IF(! var, "Unable to find method " methodName);
414#else
415 #define FIND_CLASS(var, className)
416 #define GET_METHOD_ID(var, clazz, methodName, methodDescriptor)
417#endif
418
419int register_android_view_GLES20DisplayList(JNIEnv* env) {
420 return AndroidRuntime::registerNativeMethods(env, kClassPathName, gMethods, NELEM(gMethods));
421}
422
423};
424