blob: e47e23c6224adc5e8a84404e404d2c6106802958 [file] [log] [blame]
Chris Craik54389792013-12-20 13:28:11 -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
26#include <DisplayList.h>
27#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
40// ----------------------------------------------------------------------------
41// DisplayList view properties
42// ----------------------------------------------------------------------------
43
44static void android_view_DisplayList_reset(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +000045 jobject clazz, jlong displayListPtr) {
Chris Craik7a02ea32013-12-27 16:43:22 -080046 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -080047 displayList->reset();
48}
49
50static jint android_view_DisplayList_getDisplayListSize(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +000051 jobject clazz, jlong displayListPtr) {
Chris Craik7a02ea32013-12-27 16:43:22 -080052 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -080053 return displayList->getSize();
54}
55
56static void android_view_DisplayList_setDisplayListName(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +000057 jobject clazz, jlong displayListPtr, jstring name) {
Chris Craik7a02ea32013-12-27 16:43:22 -080058 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -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_DisplayList_output(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +000067 jobject clazz, jlong displayListPtr) {
Chris Craik7a02ea32013-12-27 16:43:22 -080068 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -080069 displayList->output();
70}
71
72static void android_view_DisplayList_destroyDisplayList(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +000073 jobject clazz, jlong displayListPtr) {
Chris Craik7a02ea32013-12-27 16:43:22 -080074 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -080075 DisplayList::destroyDisplayListDeferred(displayList);
76}
77
78// ----------------------------------------------------------------------------
79// DisplayList view properties
80// ----------------------------------------------------------------------------
81
82static void android_view_DisplayList_setCaching(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +000083 jobject clazz, jlong displayListPtr, jboolean caching) {
Chris Craik7a02ea32013-12-27 16:43:22 -080084 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -080085 displayList->setCaching(caching);
86}
87
88static void android_view_DisplayList_setStaticMatrix(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +000089 jobject clazz, jlong displayListPtr, jlong matrixPtr) {
Chris Craik7a02ea32013-12-27 16:43:22 -080090 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
91 SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixPtr);
Chris Craik54389792013-12-20 13:28:11 -080092 displayList->setStaticMatrix(matrix);
93}
94
95static void android_view_DisplayList_setAnimationMatrix(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +000096 jobject clazz, jlong displayListPtr, jlong matrixPtr) {
Chris Craik7a02ea32013-12-27 16:43:22 -080097 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
98 SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixPtr);
Chris Craik54389792013-12-20 13:28:11 -080099 displayList->setAnimationMatrix(matrix);
100}
101
102static void android_view_DisplayList_setClipToBounds(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000103 jobject clazz, jlong displayListPtr, jboolean clipToBounds) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800104 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800105 displayList->setClipToBounds(clipToBounds);
106}
107
Chris Craik6657a6c2014-01-26 11:30:58 -0800108static void android_view_DisplayList_setIsolatedZVolume(JNIEnv* env,
109 jobject clazz, jlong displayListPtr, jboolean shouldIsolate) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800110 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik6657a6c2014-01-26 11:30:58 -0800111 displayList->setIsolatedZVolume(shouldIsolate);
Chris Craikd863a102013-12-19 13:31:15 -0800112}
113
Chris Craik6657a6c2014-01-26 11:30:58 -0800114static void android_view_DisplayList_setProjectBackwards(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000115 jobject clazz, jlong displayListPtr, jboolean shouldProject) {
Alan Viverette58f09b32014-01-08 17:18:19 -0800116 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik6657a6c2014-01-26 11:30:58 -0800117 displayList->setProjectBackwards(shouldProject);
Alan Viverette58f09b32014-01-08 17:18:19 -0800118}
119
Chris Craik1df26442014-02-05 16:50:41 -0800120static void android_view_DisplayList_setProjectionReceiver(JNIEnv* env,
121 jobject clazz, jlong displayListPtr, jboolean shouldRecieve) {
122 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
123 displayList->setProjectionReceiver(shouldRecieve);
124}
125
Chris Craika2fe7af2014-01-28 17:25:06 -0800126static void android_view_DisplayList_setOutline(JNIEnv* env,
127 jobject clazz, jlong displayListPtr, jlong outlinePathPtr) {
128 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
129 SkPath* outline = reinterpret_cast<SkPath*>(outlinePathPtr);
130 displayList->setOutline(outline);
131}
132
ztenghuifad45932014-02-06 10:33:58 -0800133static void android_view_DisplayList_setClipToOutline(JNIEnv* env,
134 jobject clazz, jlong displayListPtr, jboolean clipToOutline) {
135 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
136 displayList->setClipToOutline(clipToOutline);
137}
138
Chris Craikb67a7bf2014-02-07 15:58:23 -0800139static void android_view_DisplayList_setCastsShadow(JNIEnv* env,
140 jobject clazz, jlong displayListPtr, jboolean castsShadow) {
141 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
142 displayList->setCastsShadow(castsShadow);
143}
144
Chris Craike9b88172014-02-10 16:30:14 -0800145static void android_view_DisplayList_setUsesGlobalCamera(JNIEnv* env,
146 jobject clazz, jlong displayListPtr, jboolean usesGlobalCamera) {
Chris Craikb67a7bf2014-02-07 15:58:23 -0800147 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craike9b88172014-02-10 16:30:14 -0800148 displayList->setUsesGlobalCamera(usesGlobalCamera);
Chris Craikb67a7bf2014-02-07 15:58:23 -0800149}
150
Chris Craik54389792013-12-20 13:28:11 -0800151static void android_view_DisplayList_setAlpha(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000152 jobject clazz, jlong displayListPtr, float alpha) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800153 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800154 displayList->setAlpha(alpha);
155}
156
157static void android_view_DisplayList_setHasOverlappingRendering(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000158 jobject clazz, jlong displayListPtr, bool hasOverlappingRendering) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800159 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800160 displayList->setHasOverlappingRendering(hasOverlappingRendering);
161}
162
163static void android_view_DisplayList_setTranslationX(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000164 jobject clazz, jlong displayListPtr, float tx) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800165 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800166 displayList->setTranslationX(tx);
167}
168
169static void android_view_DisplayList_setTranslationY(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000170 jobject clazz, jlong displayListPtr, float ty) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800171 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800172 displayList->setTranslationY(ty);
173}
174
175static void android_view_DisplayList_setTranslationZ(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000176 jobject clazz, jlong displayListPtr, float tz) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800177 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800178 displayList->setTranslationZ(tz);
179}
180
181static void android_view_DisplayList_setRotation(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000182 jobject clazz, jlong displayListPtr, float rotation) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800183 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800184 displayList->setRotation(rotation);
185}
186
187static void android_view_DisplayList_setRotationX(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000188 jobject clazz, jlong displayListPtr, float rx) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800189 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800190 displayList->setRotationX(rx);
191}
192
193static void android_view_DisplayList_setRotationY(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000194 jobject clazz, jlong displayListPtr, float ry) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800195 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800196 displayList->setRotationY(ry);
197}
198
199static void android_view_DisplayList_setScaleX(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000200 jobject clazz, jlong displayListPtr, float sx) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800201 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800202 displayList->setScaleX(sx);
203}
204
205static void android_view_DisplayList_setScaleY(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000206 jobject clazz, jlong displayListPtr, float sy) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800207 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800208 displayList->setScaleY(sy);
209}
210
211static void android_view_DisplayList_setTransformationInfo(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000212 jobject clazz, jlong displayListPtr, float alpha,
Chris Craik54389792013-12-20 13:28:11 -0800213 float translationX, float translationY, float translationZ,
214 float rotation, float rotationX, float rotationY, float scaleX, float scaleY) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800215 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800216 displayList->setAlpha(alpha);
217 displayList->setTranslationX(translationX);
218 displayList->setTranslationY(translationY);
219 displayList->setTranslationZ(translationZ);
220 displayList->setRotation(rotation);
221 displayList->setRotationX(rotationX);
222 displayList->setRotationY(rotationY);
223 displayList->setScaleX(scaleX);
224 displayList->setScaleY(scaleY);
225}
226
227static void android_view_DisplayList_setPivotX(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000228 jobject clazz, jlong displayListPtr, float px) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800229 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800230 displayList->setPivotX(px);
231}
232
233static void android_view_DisplayList_setPivotY(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000234 jobject clazz, jlong displayListPtr, float py) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800235 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800236 displayList->setPivotY(py);
237}
238
239static void android_view_DisplayList_setCameraDistance(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000240 jobject clazz, jlong displayListPtr, float distance) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800241 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800242 displayList->setCameraDistance(distance);
243}
244
245static void android_view_DisplayList_setLeft(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000246 jobject clazz, jlong displayListPtr, int left) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800247 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800248 displayList->setLeft(left);
249}
250
251static void android_view_DisplayList_setTop(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000252 jobject clazz, jlong displayListPtr, int top) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800253 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800254 displayList->setTop(top);
255}
256
257static void android_view_DisplayList_setRight(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000258 jobject clazz, jlong displayListPtr, int right) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800259 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800260 displayList->setRight(right);
261}
262
263static void android_view_DisplayList_setBottom(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000264 jobject clazz, jlong displayListPtr, int bottom) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800265 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800266 displayList->setBottom(bottom);
267}
268
269static void android_view_DisplayList_setLeftTopRightBottom(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000270 jobject clazz, jlong displayListPtr, int left, int top,
Chris Craik54389792013-12-20 13:28:11 -0800271 int right, int bottom) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800272 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800273 displayList->setLeftTopRightBottom(left, top, right, bottom);
274}
275
276static void android_view_DisplayList_offsetLeftAndRight(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000277 jobject clazz, jlong displayListPtr, float offset) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800278 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800279 displayList->offsetLeftRight(offset);
280}
281
282static void android_view_DisplayList_offsetTopAndBottom(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000283 jobject clazz, jlong displayListPtr, float offset) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800284 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800285 displayList->offsetTopBottom(offset);
286}
287
288static void android_view_DisplayList_getMatrix(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000289 jobject clazz, jlong displayListPtr, jlong matrixPtr) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800290 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
291 SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixPtr);
Chris Craik54389792013-12-20 13:28:11 -0800292 SkMatrix* source = displayList->getStaticMatrix();
293 if (source) {
294 matrix->setConcat(SkMatrix::I(), *source);
295 } else {
296 matrix->setIdentity();
297 }
298}
299
300static jboolean android_view_DisplayList_hasOverlappingRendering(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000301 jobject clazz, jlong displayListPtr) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800302 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800303 return displayList->hasOverlappingRendering();
304}
305
306static jfloat android_view_DisplayList_getAlpha(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000307 jobject clazz, jlong displayListPtr) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800308 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800309 return displayList->getAlpha();
310}
311
312static jfloat android_view_DisplayList_getLeft(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000313 jobject clazz, jlong displayListPtr) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800314 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800315 return displayList->getLeft();
316}
317
318static jfloat android_view_DisplayList_getTop(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000319 jobject clazz, jlong displayListPtr) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800320 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800321 return displayList->getTop();
322}
323
324static jfloat android_view_DisplayList_getRight(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000325 jobject clazz, jlong displayListPtr) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800326 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800327 return displayList->getRight();
328}
329
330static jfloat android_view_DisplayList_getBottom(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000331 jobject clazz, jlong displayListPtr) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800332 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800333 return displayList->getBottom();
334}
335
336static jfloat android_view_DisplayList_getCameraDistance(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000337 jobject clazz, jlong displayListPtr) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800338 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800339 return displayList->getCameraDistance();
340}
341
342static jfloat android_view_DisplayList_getScaleX(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000343 jobject clazz, jlong displayListPtr) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800344 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800345 return displayList->getScaleX();
346}
347
348static jfloat android_view_DisplayList_getScaleY(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000349 jobject clazz, jlong displayListPtr) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800350 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800351 return displayList->getScaleY();
352}
353
354static jfloat android_view_DisplayList_getTranslationX(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000355 jobject clazz, jlong displayListPtr) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800356 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800357 return displayList->getTranslationX();
358}
359
360static jfloat android_view_DisplayList_getTranslationY(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000361 jobject clazz, jlong displayListPtr) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800362 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800363 return displayList->getTranslationY();
364}
365
366static jfloat android_view_DisplayList_getRotation(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000367 jobject clazz, jlong displayListPtr) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800368 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800369 return displayList->getRotation();
370}
371
372static jfloat android_view_DisplayList_getRotationX(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000373 jobject clazz, jlong displayListPtr) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800374 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800375 return displayList->getRotationX();
376}
377
378static jfloat android_view_DisplayList_getRotationY(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000379 jobject clazz, jlong displayListPtr) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800380 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800381 return displayList->getRotationY();
382}
383
384static jfloat android_view_DisplayList_getPivotX(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000385 jobject clazz, jlong displayListPtr) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800386 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800387 return displayList->getPivotX();
388}
389
390static jfloat android_view_DisplayList_getPivotY(JNIEnv* env,
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000391 jobject clazz, jlong displayListPtr) {
Chris Craik7a02ea32013-12-27 16:43:22 -0800392 DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListPtr);
Chris Craik54389792013-12-20 13:28:11 -0800393 return displayList->getPivotY();
394}
395
396#endif // USE_OPENGL_RENDERER
397
398// ----------------------------------------------------------------------------
399// JNI Glue
400// ----------------------------------------------------------------------------
401
402const char* const kClassPathName = "android/view/DisplayList";
403
404static JNINativeMethod gMethods[] = {
405#ifdef USE_OPENGL_RENDERER
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000406 { "nDestroyDisplayList", "(J)V", (void*) android_view_DisplayList_destroyDisplayList },
407 { "nGetDisplayListSize", "(J)I", (void*) android_view_DisplayList_getDisplayListSize },
408 { "nSetDisplayListName", "(JLjava/lang/String;)V",
Chris Craik54389792013-12-20 13:28:11 -0800409 (void*) android_view_DisplayList_setDisplayListName },
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000410 { "nOutput", "(J)V", (void*) android_view_DisplayList_output },
Chris Craik54389792013-12-20 13:28:11 -0800411
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000412 { "nReset", "(J)V", (void*) android_view_DisplayList_reset },
413 { "nSetCaching", "(JZ)V", (void*) android_view_DisplayList_setCaching },
414 { "nSetStaticMatrix", "(JJ)V", (void*) android_view_DisplayList_setStaticMatrix },
415 { "nSetAnimationMatrix", "(JJ)V", (void*) android_view_DisplayList_setAnimationMatrix },
416 { "nSetClipToBounds", "(JZ)V", (void*) android_view_DisplayList_setClipToBounds },
Chris Craik6657a6c2014-01-26 11:30:58 -0800417 { "nSetIsolatedZVolume", "(JZ)V", (void*) android_view_DisplayList_setIsolatedZVolume },
Chris Craik1df26442014-02-05 16:50:41 -0800418 { "nSetProjectBackwards", "(JZ)V", (void*) android_view_DisplayList_setProjectBackwards },
419 { "nSetProjectionReceiver","(JZ)V", (void*) android_view_DisplayList_setProjectionReceiver },
Chris Craika2fe7af2014-01-28 17:25:06 -0800420 { "nSetOutline", "(JJ)V", (void*) android_view_DisplayList_setOutline },
ztenghuifad45932014-02-06 10:33:58 -0800421 { "nSetClipToOutline", "(JZ)V", (void*) android_view_DisplayList_setClipToOutline },
Chris Craikb67a7bf2014-02-07 15:58:23 -0800422 { "nSetCastsShadow", "(JZ)V", (void*) android_view_DisplayList_setCastsShadow },
Chris Craike9b88172014-02-10 16:30:14 -0800423 { "nSetUsesGlobalCamera", "(JZ)V", (void*) android_view_DisplayList_setUsesGlobalCamera },
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000424 { "nSetAlpha", "(JF)V", (void*) android_view_DisplayList_setAlpha },
425 { "nSetHasOverlappingRendering", "(JZ)V",
Chris Craik54389792013-12-20 13:28:11 -0800426 (void*) android_view_DisplayList_setHasOverlappingRendering },
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000427 { "nSetTranslationX", "(JF)V", (void*) android_view_DisplayList_setTranslationX },
428 { "nSetTranslationY", "(JF)V", (void*) android_view_DisplayList_setTranslationY },
429 { "nSetTranslationZ", "(JF)V", (void*) android_view_DisplayList_setTranslationZ },
430 { "nSetRotation", "(JF)V", (void*) android_view_DisplayList_setRotation },
431 { "nSetRotationX", "(JF)V", (void*) android_view_DisplayList_setRotationX },
432 { "nSetRotationY", "(JF)V", (void*) android_view_DisplayList_setRotationY },
433 { "nSetScaleX", "(JF)V", (void*) android_view_DisplayList_setScaleX },
434 { "nSetScaleY", "(JF)V", (void*) android_view_DisplayList_setScaleY },
435 { "nSetTransformationInfo","(JFFFFFFFFF)V",
Chris Craik54389792013-12-20 13:28:11 -0800436 (void*) android_view_DisplayList_setTransformationInfo },
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000437 { "nSetPivotX", "(JF)V", (void*) android_view_DisplayList_setPivotX },
438 { "nSetPivotY", "(JF)V", (void*) android_view_DisplayList_setPivotY },
439 { "nSetCameraDistance", "(JF)V", (void*) android_view_DisplayList_setCameraDistance },
440 { "nSetLeft", "(JI)V", (void*) android_view_DisplayList_setLeft },
441 { "nSetTop", "(JI)V", (void*) android_view_DisplayList_setTop },
442 { "nSetRight", "(JI)V", (void*) android_view_DisplayList_setRight },
443 { "nSetBottom", "(JI)V", (void*) android_view_DisplayList_setBottom },
444 { "nSetLeftTopRightBottom","(JIIII)V", (void*) android_view_DisplayList_setLeftTopRightBottom },
445 { "nOffsetLeftAndRight", "(JF)V", (void*) android_view_DisplayList_offsetLeftAndRight },
446 { "nOffsetTopAndBottom", "(JF)V", (void*) android_view_DisplayList_offsetTopAndBottom },
Chris Craik54389792013-12-20 13:28:11 -0800447
Ashok Bhat36bef0b2014-01-20 20:08:01 +0000448 { "nGetMatrix", "(JJ)V", (void*) android_view_DisplayList_getMatrix },
449 { "nHasOverlappingRendering", "(J)Z", (void*) android_view_DisplayList_hasOverlappingRendering },
450 { "nGetAlpha", "(J)F", (void*) android_view_DisplayList_getAlpha },
451 { "nGetLeft", "(J)F", (void*) android_view_DisplayList_getLeft },
452 { "nGetTop", "(J)F", (void*) android_view_DisplayList_getTop },
453 { "nGetRight", "(J)F", (void*) android_view_DisplayList_getRight },
454 { "nGetBottom", "(J)F", (void*) android_view_DisplayList_getBottom },
455 { "nGetCameraDistance", "(J)F", (void*) android_view_DisplayList_getCameraDistance },
456 { "nGetScaleX", "(J)F", (void*) android_view_DisplayList_getScaleX },
457 { "nGetScaleY", "(J)F", (void*) android_view_DisplayList_getScaleY },
458 { "nGetTranslationX", "(J)F", (void*) android_view_DisplayList_getTranslationX },
459 { "nGetTranslationY", "(J)F", (void*) android_view_DisplayList_getTranslationY },
460 { "nGetRotation", "(J)F", (void*) android_view_DisplayList_getRotation },
461 { "nGetRotationX", "(J)F", (void*) android_view_DisplayList_getRotationX },
462 { "nGetRotationY", "(J)F", (void*) android_view_DisplayList_getRotationY },
463 { "nGetPivotX", "(J)F", (void*) android_view_DisplayList_getPivotX },
464 { "nGetPivotY", "(J)F", (void*) android_view_DisplayList_getPivotY },
Chris Craik54389792013-12-20 13:28:11 -0800465#endif
466};
467
468#ifdef USE_OPENGL_RENDERER
469 #define FIND_CLASS(var, className) \
470 var = env->FindClass(className); \
471 LOG_FATAL_IF(! var, "Unable to find class " className);
472
473 #define GET_METHOD_ID(var, clazz, methodName, methodDescriptor) \
474 var = env->GetMethodID(clazz, methodName, methodDescriptor); \
475 LOG_FATAL_IF(! var, "Unable to find method " methodName);
476#else
477 #define FIND_CLASS(var, className)
478 #define GET_METHOD_ID(var, clazz, methodName, methodDescriptor)
479#endif
480
481int register_android_view_DisplayList(JNIEnv* env) {
482 return AndroidRuntime::registerNativeMethods(env, kClassPathName, gMethods, NELEM(gMethods));
483}
484
485};
486