Mercurial > MadButterfly
diff Android/jni/mbfly.cpp @ 496:71ad34f73a6e Android_Skia
JNI interface for Android
author | Thinker K.F. Li <thinker@branda.to> |
---|---|
date | Thu, 26 Nov 2009 15:03:01 +0800 |
parents | |
children | a53fc3eff8f1 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Android/jni/mbfly.cpp Thu Nov 26 15:03:01 2009 +0800 @@ -0,0 +1,188 @@ +#include <SkCanvas.h> + +#define DECL_C extern "C" { +#define END_C } + +DECL_C + +#include <stdio.h> +#include <mb.h> +#include <jni.h> + + +jint Java_org_madbutterfly__1jni_redraw_1man_1new(JNIEnv *env, + jobject cr, + jobject backend) { + jclass cls; + jfieldID fid; + SkCanvas *_cr, *_backend; + redraw_man_t *rdman; + + cls = env->GetObjectClass(cr); + fid = env->GetFieldID(cls, "mNativeCanvas", "I"); + _cr = (SkCanvas *)env->GetIntField(cr, fid); + _backend = (SkCanvas *)env->GetIntField(backend, fid); + rdman = (redraw_man_t *)malloc(sizeof(redraw_man_t)); + redraw_man_init(rdman, (mbe_t *)_cr, (mbe_t *)_backend); + + return (jint)rdman; +} + +void Java_org_madbutterfly__1jni_redraw_1man_1free(JNIEnv *env, + jint rdman) { + redraw_man_destroy((redraw_man_t *)rdman); + free((redraw_man_t *)rdman); +} + +jint Java_org_madbutterfly__1jni_rdman_1add_1shape(JNIEnv *env, + jint rdman, + jint shape, + jint coord) { + jint r; + + r = rdman_add_shape((redraw_man_t *)rdman, + (shape_t *)shape, + (coord_t *)coord); + return r; +} + +jint Java_org_madbutterfly__1jni_rdman_1get_1root(JNIEnv *env, + jint rdman) { + jint root; + + root = (jint)rdman_get_root((redraw_man_t *)rdman); + return root; +} + +jint Java_org_madbutterfly__1jni_rdman_1redraw_1all(JNIEnv *env, + jint rdman) { + jint r; + + r = rdman_redraw_all((redraw_man_t *)rdman); + return r; +} + +void Java_org_madbutterfly__1jni_rdman_1paint_1fill(JNIEnv *env, + jint rdman, + jint paint, + jint shape) { + rdman_paint_fill((redraw_man_t *)rdman, + (paint_t *)paint, + (shape_t *)shape); +} + +void Java_org_madbutterfly__1jni_rdman_1paint_1stroke(JNIEnv *env, + jint rdman, + jint paint, + jint shape) { + rdman_paint_stroke((redraw_man_t *)rdman, + (paint_t *)paint, + (shape_t *)shape); +} + +jint Java_org_madbutterfly__1jni_rdman_1coord_1new(JNIEnv *env, + jint rdman, + jint parent) { + jint coord; + + coord = (jint)rdman_coord_new((redraw_man_t *)rdman, + (coord_t *)parent); + return coord; +} + +void Java_org_madbutterfly__1jni_rdman_1coord_1free(JNIEnv *env, + jint rdman, + jint coord) { + rdman_coord_free((redraw_man_t *)rdman, + (coord_t *)coord); +} + +void Java_org_madbutterfly__1jni_rdman_1coord_1subtree_1free(JNIEnv *env, + jint rdman, + jint coord) { + rdman_coord_subtree_free((redraw_man_t *)rdman, + (coord_t *)coord); +} + +void Java_org_madbutterfly__1jni_rdman_1coord_1changed(JNIEnv *env, + jint rdman, + jint coord) { + rdman_coord_changed((redraw_man_t *)rdman, + (coord_t *)coord); +} + +void Java_org_madbutterfly__1jni_rdman_1shape_1changed(JNIEnv *env, + jint rdman, + jint shape) { + rdman_shape_changed((redraw_man_t *)rdman, + (shape_t *)shape); +} + +void Java_org_madbutterfly__1jni_rdman_1shape_1free(JNIEnv *env, + jint rdman, + jint shape) { + rdman_shape_free((redraw_man_t *)rdman, + (shape_t *)shape); +} + +jint Java_org_madbutterfly__1jni_rdman_1shape_1path_1new(JNIEnv *env, + jint rdman, + jstring data) { + const char *str; + jint shape; + + str = env->GetStringUTFChars(data, NULL); + shape = (jint)rdman_shape_path_new((redraw_man_t *)rdman, (char *)str); + env->ReleaseStringUTFChars(data, str); + + return shape; +} + +jint Java_org_madbutterfly__1jni_rdman_1paint_1color_1new(JNIEnv *env, + jint rdman, + jfloat r, jfloat g, + jfloat b, jfloat a) { + jint paint; + + paint = (jint)rdman_paint_color_new((redraw_man_t *)rdman, + r, g, b, a); + return paint; +} + +jint Java_org_madbutterfly__1jni_rdman_1paint_1free(JNIEnv *env, + jint rdman, + jint paint) { + jint r; + + r = rdman_paint_free((redraw_man_t *)rdman, + (paint_t *)paint); + return r; +} + +void Java_org_madbutterfly__1jni_paint_1color_1set(JNIEnv *env, + jint paint, + jfloat r, jfloat g, + jfloat b, jfloat a) { + paint_color_set((paint_t *)paint, r, g, b, a); +} + +jfloatArray Java_org_madbutterfly__1jni_paint_1color_1get(JNIEnv *env, + jint paint) { + co_comp_t r, g, b, a; + jfloat color[4]; + jfloatArray result; + + paint_color_get((paint_t *)paint, &r, &g, &b, &a); + color[0] = r; + color[1] = g; + color[2] = b; + color[3] = a; + + result = env->NewFloatArray(4); + env->SetFloatArrayRegion(result, 0, 4, color); + + return result; +} + +END_C +