Mercurial > MadButterfly
comparison 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 |
comparison
equal
deleted
inserted
replaced
495:9e36e06fcc18 | 496:71ad34f73a6e |
---|---|
1 #include <SkCanvas.h> | |
2 | |
3 #define DECL_C extern "C" { | |
4 #define END_C } | |
5 | |
6 DECL_C | |
7 | |
8 #include <stdio.h> | |
9 #include <mb.h> | |
10 #include <jni.h> | |
11 | |
12 | |
13 jint Java_org_madbutterfly__1jni_redraw_1man_1new(JNIEnv *env, | |
14 jobject cr, | |
15 jobject backend) { | |
16 jclass cls; | |
17 jfieldID fid; | |
18 SkCanvas *_cr, *_backend; | |
19 redraw_man_t *rdman; | |
20 | |
21 cls = env->GetObjectClass(cr); | |
22 fid = env->GetFieldID(cls, "mNativeCanvas", "I"); | |
23 _cr = (SkCanvas *)env->GetIntField(cr, fid); | |
24 _backend = (SkCanvas *)env->GetIntField(backend, fid); | |
25 rdman = (redraw_man_t *)malloc(sizeof(redraw_man_t)); | |
26 redraw_man_init(rdman, (mbe_t *)_cr, (mbe_t *)_backend); | |
27 | |
28 return (jint)rdman; | |
29 } | |
30 | |
31 void Java_org_madbutterfly__1jni_redraw_1man_1free(JNIEnv *env, | |
32 jint rdman) { | |
33 redraw_man_destroy((redraw_man_t *)rdman); | |
34 free((redraw_man_t *)rdman); | |
35 } | |
36 | |
37 jint Java_org_madbutterfly__1jni_rdman_1add_1shape(JNIEnv *env, | |
38 jint rdman, | |
39 jint shape, | |
40 jint coord) { | |
41 jint r; | |
42 | |
43 r = rdman_add_shape((redraw_man_t *)rdman, | |
44 (shape_t *)shape, | |
45 (coord_t *)coord); | |
46 return r; | |
47 } | |
48 | |
49 jint Java_org_madbutterfly__1jni_rdman_1get_1root(JNIEnv *env, | |
50 jint rdman) { | |
51 jint root; | |
52 | |
53 root = (jint)rdman_get_root((redraw_man_t *)rdman); | |
54 return root; | |
55 } | |
56 | |
57 jint Java_org_madbutterfly__1jni_rdman_1redraw_1all(JNIEnv *env, | |
58 jint rdman) { | |
59 jint r; | |
60 | |
61 r = rdman_redraw_all((redraw_man_t *)rdman); | |
62 return r; | |
63 } | |
64 | |
65 void Java_org_madbutterfly__1jni_rdman_1paint_1fill(JNIEnv *env, | |
66 jint rdman, | |
67 jint paint, | |
68 jint shape) { | |
69 rdman_paint_fill((redraw_man_t *)rdman, | |
70 (paint_t *)paint, | |
71 (shape_t *)shape); | |
72 } | |
73 | |
74 void Java_org_madbutterfly__1jni_rdman_1paint_1stroke(JNIEnv *env, | |
75 jint rdman, | |
76 jint paint, | |
77 jint shape) { | |
78 rdman_paint_stroke((redraw_man_t *)rdman, | |
79 (paint_t *)paint, | |
80 (shape_t *)shape); | |
81 } | |
82 | |
83 jint Java_org_madbutterfly__1jni_rdman_1coord_1new(JNIEnv *env, | |
84 jint rdman, | |
85 jint parent) { | |
86 jint coord; | |
87 | |
88 coord = (jint)rdman_coord_new((redraw_man_t *)rdman, | |
89 (coord_t *)parent); | |
90 return coord; | |
91 } | |
92 | |
93 void Java_org_madbutterfly__1jni_rdman_1coord_1free(JNIEnv *env, | |
94 jint rdman, | |
95 jint coord) { | |
96 rdman_coord_free((redraw_man_t *)rdman, | |
97 (coord_t *)coord); | |
98 } | |
99 | |
100 void Java_org_madbutterfly__1jni_rdman_1coord_1subtree_1free(JNIEnv *env, | |
101 jint rdman, | |
102 jint coord) { | |
103 rdman_coord_subtree_free((redraw_man_t *)rdman, | |
104 (coord_t *)coord); | |
105 } | |
106 | |
107 void Java_org_madbutterfly__1jni_rdman_1coord_1changed(JNIEnv *env, | |
108 jint rdman, | |
109 jint coord) { | |
110 rdman_coord_changed((redraw_man_t *)rdman, | |
111 (coord_t *)coord); | |
112 } | |
113 | |
114 void Java_org_madbutterfly__1jni_rdman_1shape_1changed(JNIEnv *env, | |
115 jint rdman, | |
116 jint shape) { | |
117 rdman_shape_changed((redraw_man_t *)rdman, | |
118 (shape_t *)shape); | |
119 } | |
120 | |
121 void Java_org_madbutterfly__1jni_rdman_1shape_1free(JNIEnv *env, | |
122 jint rdman, | |
123 jint shape) { | |
124 rdman_shape_free((redraw_man_t *)rdman, | |
125 (shape_t *)shape); | |
126 } | |
127 | |
128 jint Java_org_madbutterfly__1jni_rdman_1shape_1path_1new(JNIEnv *env, | |
129 jint rdman, | |
130 jstring data) { | |
131 const char *str; | |
132 jint shape; | |
133 | |
134 str = env->GetStringUTFChars(data, NULL); | |
135 shape = (jint)rdman_shape_path_new((redraw_man_t *)rdman, (char *)str); | |
136 env->ReleaseStringUTFChars(data, str); | |
137 | |
138 return shape; | |
139 } | |
140 | |
141 jint Java_org_madbutterfly__1jni_rdman_1paint_1color_1new(JNIEnv *env, | |
142 jint rdman, | |
143 jfloat r, jfloat g, | |
144 jfloat b, jfloat a) { | |
145 jint paint; | |
146 | |
147 paint = (jint)rdman_paint_color_new((redraw_man_t *)rdman, | |
148 r, g, b, a); | |
149 return paint; | |
150 } | |
151 | |
152 jint Java_org_madbutterfly__1jni_rdman_1paint_1free(JNIEnv *env, | |
153 jint rdman, | |
154 jint paint) { | |
155 jint r; | |
156 | |
157 r = rdman_paint_free((redraw_man_t *)rdman, | |
158 (paint_t *)paint); | |
159 return r; | |
160 } | |
161 | |
162 void Java_org_madbutterfly__1jni_paint_1color_1set(JNIEnv *env, | |
163 jint paint, | |
164 jfloat r, jfloat g, | |
165 jfloat b, jfloat a) { | |
166 paint_color_set((paint_t *)paint, r, g, b, a); | |
167 } | |
168 | |
169 jfloatArray Java_org_madbutterfly__1jni_paint_1color_1get(JNIEnv *env, | |
170 jint paint) { | |
171 co_comp_t r, g, b, a; | |
172 jfloat color[4]; | |
173 jfloatArray result; | |
174 | |
175 paint_color_get((paint_t *)paint, &r, &g, &b, &a); | |
176 color[0] = r; | |
177 color[1] = g; | |
178 color[2] = b; | |
179 color[3] = a; | |
180 | |
181 result = env->NewFloatArray(4); | |
182 env->SetFloatArrayRegion(result, 0, 4, color); | |
183 | |
184 return result; | |
185 } | |
186 | |
187 END_C | |
188 |