Merge "AArch64: Use long for pointers in graphics/Camera"
This commit is contained in:
@ -7,84 +7,102 @@ static jfieldID gNativeInstanceFieldID;
|
|||||||
|
|
||||||
static void Camera_constructor(JNIEnv* env, jobject obj) {
|
static void Camera_constructor(JNIEnv* env, jobject obj) {
|
||||||
Sk3DView* view = new Sk3DView;
|
Sk3DView* view = new Sk3DView;
|
||||||
env->SetIntField(obj, gNativeInstanceFieldID, (int)view);
|
env->SetLongField(obj, gNativeInstanceFieldID, reinterpret_cast<jlong>(view));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Camera_destructor(JNIEnv* env, jobject obj) {
|
static void Camera_destructor(JNIEnv* env, jobject obj) {
|
||||||
delete (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
|
jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
|
||||||
|
Sk3DView* view = reinterpret_cast<Sk3DView*>(viewHandle);
|
||||||
|
delete view;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Camera_save(JNIEnv* env, jobject obj) {
|
static void Camera_save(JNIEnv* env, jobject obj) {
|
||||||
Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
|
jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
|
||||||
|
Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
|
||||||
v->save();
|
v->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Camera_restore(JNIEnv* env, jobject obj) {
|
static void Camera_restore(JNIEnv* env, jobject obj) {
|
||||||
Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
|
jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
|
||||||
|
Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
|
||||||
v->restore();
|
v->restore();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Camera_translate(JNIEnv* env, jobject obj,
|
static void Camera_translate(JNIEnv* env, jobject obj,
|
||||||
float dx, float dy, float dz) {
|
jfloat dx, jfloat dy, jfloat dz) {
|
||||||
Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
|
jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
|
||||||
|
Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
|
||||||
v->translate(SkFloatToScalar(dx), SkFloatToScalar(dy), SkFloatToScalar(dz));
|
v->translate(SkFloatToScalar(dx), SkFloatToScalar(dy), SkFloatToScalar(dz));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Camera_rotateX(JNIEnv* env, jobject obj, float degrees) {
|
static void Camera_rotateX(JNIEnv* env, jobject obj, jfloat degrees) {
|
||||||
Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
|
jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
|
||||||
|
Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
|
||||||
v->rotateX(SkFloatToScalar(degrees));
|
v->rotateX(SkFloatToScalar(degrees));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Camera_rotateY(JNIEnv* env, jobject obj, float degrees) {
|
static void Camera_rotateY(JNIEnv* env, jobject obj, jfloat degrees) {
|
||||||
Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
|
jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
|
||||||
|
Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
|
||||||
v->rotateY(SkFloatToScalar(degrees));
|
v->rotateY(SkFloatToScalar(degrees));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Camera_rotateZ(JNIEnv* env, jobject obj, float degrees) {
|
static void Camera_rotateZ(JNIEnv* env, jobject obj, jfloat degrees) {
|
||||||
Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
|
jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
|
||||||
|
Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
|
||||||
v->rotateZ(SkFloatToScalar(degrees));
|
v->rotateZ(SkFloatToScalar(degrees));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Camera_rotate(JNIEnv* env, jobject obj, jfloat x, jfloat y, jfloat z) {
|
static void Camera_rotate(JNIEnv* env, jobject obj, jfloat x, jfloat y, jfloat z) {
|
||||||
Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
|
jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
|
||||||
|
Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
|
||||||
v->rotateX(SkFloatToScalar(x));
|
v->rotateX(SkFloatToScalar(x));
|
||||||
v->rotateY(SkFloatToScalar(y));
|
v->rotateY(SkFloatToScalar(y));
|
||||||
v->rotateZ(SkFloatToScalar(z));
|
v->rotateZ(SkFloatToScalar(z));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Camera_setLocation(JNIEnv* env, jobject obj, jfloat x, jfloat y, jfloat z) {
|
static void Camera_setLocation(JNIEnv* env, jobject obj, jfloat x, jfloat y, jfloat z) {
|
||||||
Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
|
jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
|
||||||
|
Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
|
||||||
v->setCameraLocation(SkFloatToScalar(x), SkFloatToScalar(y), SkFloatToScalar(z));
|
v->setCameraLocation(SkFloatToScalar(x), SkFloatToScalar(y), SkFloatToScalar(z));
|
||||||
}
|
}
|
||||||
|
|
||||||
static jfloat Camera_getLocationX(JNIEnv* env, jobject obj) {
|
static jfloat Camera_getLocationX(JNIEnv* env, jobject obj) {
|
||||||
Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
|
jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
|
||||||
|
Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
|
||||||
return SkScalarToFloat(v->getCameraLocationX());
|
return SkScalarToFloat(v->getCameraLocationX());
|
||||||
}
|
}
|
||||||
|
|
||||||
static jfloat Camera_getLocationY(JNIEnv* env, jobject obj) {
|
static jfloat Camera_getLocationY(JNIEnv* env, jobject obj) {
|
||||||
Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
|
jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
|
||||||
|
Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
|
||||||
return SkScalarToFloat(v->getCameraLocationY());
|
return SkScalarToFloat(v->getCameraLocationY());
|
||||||
}
|
}
|
||||||
|
|
||||||
static jfloat Camera_getLocationZ(JNIEnv* env, jobject obj) {
|
static jfloat Camera_getLocationZ(JNIEnv* env, jobject obj) {
|
||||||
Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
|
jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
|
||||||
|
Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
|
||||||
return SkScalarToFloat(v->getCameraLocationZ());
|
return SkScalarToFloat(v->getCameraLocationZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Camera_getMatrix(JNIEnv* env, jobject obj, int native_matrix) {
|
static void Camera_getMatrix(JNIEnv* env, jobject obj, jlong matrixHandle) {
|
||||||
Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
|
SkMatrix* native_matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
|
||||||
v->getMatrix((SkMatrix*)native_matrix);
|
jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
|
||||||
|
Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
|
||||||
|
v->getMatrix(native_matrix);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Camera_applyToCanvas(JNIEnv* env, jobject obj, int native_canvas) {
|
static void Camera_applyToCanvas(JNIEnv* env, jobject obj, jlong canvasHandle) {
|
||||||
Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
|
SkCanvas* native_canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
|
||||||
|
jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
|
||||||
|
Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
|
||||||
v->applyToCanvas((SkCanvas*)native_canvas);
|
v->applyToCanvas((SkCanvas*)native_canvas);
|
||||||
}
|
}
|
||||||
|
|
||||||
static float Camera_dotWithNormal(JNIEnv* env, jobject obj,
|
static jfloat Camera_dotWithNormal(JNIEnv* env, jobject obj,
|
||||||
float x, float y, float z) {
|
jfloat x, jfloat y, jfloat z) {
|
||||||
Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
|
jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
|
||||||
|
Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
|
||||||
SkScalar dot = v->dotWithNormal(SkFloatToScalar(x), SkFloatToScalar(y),
|
SkScalar dot = v->dotWithNormal(SkFloatToScalar(x), SkFloatToScalar(y),
|
||||||
SkFloatToScalar(z));
|
SkFloatToScalar(z));
|
||||||
return SkScalarToFloat(dot);
|
return SkScalarToFloat(dot);
|
||||||
@ -111,8 +129,8 @@ static JNINativeMethod gCameraMethods[] = {
|
|||||||
{ "getLocationX", "()F", (void*)Camera_getLocationX },
|
{ "getLocationX", "()F", (void*)Camera_getLocationX },
|
||||||
{ "getLocationY", "()F", (void*)Camera_getLocationY },
|
{ "getLocationY", "()F", (void*)Camera_getLocationY },
|
||||||
{ "getLocationZ", "()F", (void*)Camera_getLocationZ },
|
{ "getLocationZ", "()F", (void*)Camera_getLocationZ },
|
||||||
{ "nativeGetMatrix", "(I)V", (void*)Camera_getMatrix },
|
{ "nativeGetMatrix", "(J)V", (void*)Camera_getMatrix },
|
||||||
{ "nativeApplyToCanvas", "(I)V", (void*)Camera_applyToCanvas },
|
{ "nativeApplyToCanvas", "(J)V", (void*)Camera_applyToCanvas },
|
||||||
{ "dotWithNormal", "(FFF)F", (void*)Camera_dotWithNormal }
|
{ "dotWithNormal", "(FFF)F", (void*)Camera_dotWithNormal }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -121,7 +139,7 @@ int register_android_graphics_Camera(JNIEnv* env) {
|
|||||||
if (clazz == 0) {
|
if (clazz == 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
gNativeInstanceFieldID = env->GetFieldID(clazz, "native_instance", "I");
|
gNativeInstanceFieldID = env->GetFieldID(clazz, "native_instance", "J");
|
||||||
if (gNativeInstanceFieldID == 0) {
|
if (gNativeInstanceFieldID == 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -159,7 +159,7 @@ public class Camera {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public native float dotWithNormal(float dx, float dy, float dz);
|
public native float dotWithNormal(float dx, float dy, float dz);
|
||||||
|
|
||||||
protected void finalize() throws Throwable {
|
protected void finalize() throws Throwable {
|
||||||
try {
|
try {
|
||||||
nativeDestructor();
|
nativeDestructor();
|
||||||
@ -170,8 +170,8 @@ public class Camera {
|
|||||||
|
|
||||||
private native void nativeConstructor();
|
private native void nativeConstructor();
|
||||||
private native void nativeDestructor();
|
private native void nativeDestructor();
|
||||||
private native void nativeGetMatrix(int native_matrix);
|
private native void nativeGetMatrix(long native_matrix);
|
||||||
private native void nativeApplyToCanvas(int native_canvas);
|
private native void nativeApplyToCanvas(long native_canvas);
|
||||||
|
|
||||||
int native_instance;
|
long native_instance;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user