Mercurial > MadButterfly
annotate Android/jni/mbfly.cpp @ 506:47c6fd9dd83c Android_Skia
Use mbfly-java as android API
author | Thinker K.F. Li <thinker@branda.to> |
---|---|
date | Tue, 01 Dec 2009 22:55:26 +0800 |
parents | a53fc3eff8f1 |
children | 0d9f1f4d3154 |
rev | line source |
---|---|
496 | 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, | |
502
a53fc3eff8f1
Every static native method has the 2rd argument as class object.
Thinker K.F. Li <thinker@branda.to>
parents:
496
diff
changeset
|
14 jobject cls, |
496 | 15 jobject cr, |
16 jobject backend) { | |
502
a53fc3eff8f1
Every static native method has the 2rd argument as class object.
Thinker K.F. Li <thinker@branda.to>
parents:
496
diff
changeset
|
17 jclass canvas_cls; |
496 | 18 jfieldID fid; |
19 SkCanvas *_cr, *_backend; | |
20 redraw_man_t *rdman; | |
21 | |
502
a53fc3eff8f1
Every static native method has the 2rd argument as class object.
Thinker K.F. Li <thinker@branda.to>
parents:
496
diff
changeset
|
22 canvas_cls = env->GetObjectClass(cr); |
a53fc3eff8f1
Every static native method has the 2rd argument as class object.
Thinker K.F. Li <thinker@branda.to>
parents:
496
diff
changeset
|
23 fid = env->GetFieldID(canvas_cls, "mNativeCanvas", "I"); |
496 | 24 _cr = (SkCanvas *)env->GetIntField(cr, fid); |
502
a53fc3eff8f1
Every static native method has the 2rd argument as class object.
Thinker K.F. Li <thinker@branda.to>
parents:
496
diff
changeset
|
25 canvas_cls = env->GetObjectClass(backend); |
a53fc3eff8f1
Every static native method has the 2rd argument as class object.
Thinker K.F. Li <thinker@branda.to>
parents:
496
diff
changeset
|
26 fid = env->GetFieldID(canvas_cls, "mNativeCanvas", "I"); |
496 | 27 _backend = (SkCanvas *)env->GetIntField(backend, fid); |
28 rdman = (redraw_man_t *)malloc(sizeof(redraw_man_t)); | |
29 redraw_man_init(rdman, (mbe_t *)_cr, (mbe_t *)_backend); | |
30 | |
31 return (jint)rdman; | |
32 } | |
33 | |
34 void Java_org_madbutterfly__1jni_redraw_1man_1free(JNIEnv *env, | |
502
a53fc3eff8f1
Every static native method has the 2rd argument as class object.
Thinker K.F. Li <thinker@branda.to>
parents:
496
diff
changeset
|
35 jobject cls, |
496 | 36 jint rdman) { |
37 redraw_man_destroy((redraw_man_t *)rdman); | |
38 free((redraw_man_t *)rdman); | |
39 } | |
40 | |
41 jint Java_org_madbutterfly__1jni_rdman_1add_1shape(JNIEnv *env, | |
502
a53fc3eff8f1
Every static native method has the 2rd argument as class object.
Thinker K.F. Li <thinker@branda.to>
parents:
496
diff
changeset
|
42 jobject cls, |
496 | 43 jint rdman, |
44 jint shape, | |
45 jint coord) { | |
46 jint r; | |
47 | |
48 r = rdman_add_shape((redraw_man_t *)rdman, | |
49 (shape_t *)shape, | |
50 (coord_t *)coord); | |
51 return r; | |
52 } | |
53 | |
54 jint Java_org_madbutterfly__1jni_rdman_1get_1root(JNIEnv *env, | |
502
a53fc3eff8f1
Every static native method has the 2rd argument as class object.
Thinker K.F. Li <thinker@branda.to>
parents:
496
diff
changeset
|
55 jobject cls, |
496 | 56 jint rdman) { |
57 jint root; | |
58 | |
59 root = (jint)rdman_get_root((redraw_man_t *)rdman); | |
60 return root; | |
61 } | |
62 | |
63 jint Java_org_madbutterfly__1jni_rdman_1redraw_1all(JNIEnv *env, | |
502
a53fc3eff8f1
Every static native method has the 2rd argument as class object.
Thinker K.F. Li <thinker@branda.to>
parents:
496
diff
changeset
|
64 jobject cls, |
496 | 65 jint rdman) { |
66 jint r; | |
67 | |
68 r = rdman_redraw_all((redraw_man_t *)rdman); | |
69 return r; | |
70 } | |
71 | |
72 void Java_org_madbutterfly__1jni_rdman_1paint_1fill(JNIEnv *env, | |
502
a53fc3eff8f1
Every static native method has the 2rd argument as class object.
Thinker K.F. Li <thinker@branda.to>
parents:
496
diff
changeset
|
73 jobject cls, |
496 | 74 jint rdman, |
75 jint paint, | |
76 jint shape) { | |
77 rdman_paint_fill((redraw_man_t *)rdman, | |
78 (paint_t *)paint, | |
79 (shape_t *)shape); | |
80 } | |
81 | |
82 void Java_org_madbutterfly__1jni_rdman_1paint_1stroke(JNIEnv *env, | |
502
a53fc3eff8f1
Every static native method has the 2rd argument as class object.
Thinker K.F. Li <thinker@branda.to>
parents:
496
diff
changeset
|
83 jobject cls, |
496 | 84 jint rdman, |
85 jint paint, | |
86 jint shape) { | |
87 rdman_paint_stroke((redraw_man_t *)rdman, | |
88 (paint_t *)paint, | |
89 (shape_t *)shape); | |
90 } | |
91 | |
92 jint Java_org_madbutterfly__1jni_rdman_1coord_1new(JNIEnv *env, | |
502
a53fc3eff8f1
Every static native method has the 2rd argument as class object.
Thinker K.F. Li <thinker@branda.to>
parents:
496
diff
changeset
|
93 jobject cls, |
496 | 94 jint rdman, |
95 jint parent) { | |
96 jint coord; | |
97 | |
98 coord = (jint)rdman_coord_new((redraw_man_t *)rdman, | |
99 (coord_t *)parent); | |
100 return coord; | |
101 } | |
102 | |
103 void Java_org_madbutterfly__1jni_rdman_1coord_1free(JNIEnv *env, | |
502
a53fc3eff8f1
Every static native method has the 2rd argument as class object.
Thinker K.F. Li <thinker@branda.to>
parents:
496
diff
changeset
|
104 jobject cls, |
496 | 105 jint rdman, |
106 jint coord) { | |
107 rdman_coord_free((redraw_man_t *)rdman, | |
108 (coord_t *)coord); | |
109 } | |
110 | |
111 void Java_org_madbutterfly__1jni_rdman_1coord_1subtree_1free(JNIEnv *env, | |
502
a53fc3eff8f1
Every static native method has the 2rd argument as class object.
Thinker K.F. Li <thinker@branda.to>
parents:
496
diff
changeset
|
112 jobject cls, |
496 | 113 jint rdman, |
114 jint coord) { | |
115 rdman_coord_subtree_free((redraw_man_t *)rdman, | |
116 (coord_t *)coord); | |
117 } | |
118 | |
119 void Java_org_madbutterfly__1jni_rdman_1coord_1changed(JNIEnv *env, | |
502
a53fc3eff8f1
Every static native method has the 2rd argument as class object.
Thinker K.F. Li <thinker@branda.to>
parents:
496
diff
changeset
|
120 jobject cls, |
496 | 121 jint rdman, |
122 jint coord) { | |
123 rdman_coord_changed((redraw_man_t *)rdman, | |
124 (coord_t *)coord); | |
125 } | |
126 | |
127 void Java_org_madbutterfly__1jni_rdman_1shape_1changed(JNIEnv *env, | |
502
a53fc3eff8f1
Every static native method has the 2rd argument as class object.
Thinker K.F. Li <thinker@branda.to>
parents:
496
diff
changeset
|
128 jobject cls, |
496 | 129 jint rdman, |
130 jint shape) { | |
131 rdman_shape_changed((redraw_man_t *)rdman, | |
132 (shape_t *)shape); | |
133 } | |
134 | |
135 void Java_org_madbutterfly__1jni_rdman_1shape_1free(JNIEnv *env, | |
502
a53fc3eff8f1
Every static native method has the 2rd argument as class object.
Thinker K.F. Li <thinker@branda.to>
parents:
496
diff
changeset
|
136 jobject cls, |
496 | 137 jint rdman, |
138 jint shape) { | |
139 rdman_shape_free((redraw_man_t *)rdman, | |
140 (shape_t *)shape); | |
141 } | |
142 | |
143 jint Java_org_madbutterfly__1jni_rdman_1shape_1path_1new(JNIEnv *env, | |
502
a53fc3eff8f1
Every static native method has the 2rd argument as class object.
Thinker K.F. Li <thinker@branda.to>
parents:
496
diff
changeset
|
144 jobject cls, |
496 | 145 jint rdman, |
146 jstring data) { | |
147 const char *str; | |
148 jint shape; | |
149 | |
150 str = env->GetStringUTFChars(data, NULL); | |
151 shape = (jint)rdman_shape_path_new((redraw_man_t *)rdman, (char *)str); | |
152 env->ReleaseStringUTFChars(data, str); | |
153 | |
154 return shape; | |
155 } | |
156 | |
157 jint Java_org_madbutterfly__1jni_rdman_1paint_1color_1new(JNIEnv *env, | |
502
a53fc3eff8f1
Every static native method has the 2rd argument as class object.
Thinker K.F. Li <thinker@branda.to>
parents:
496
diff
changeset
|
158 jobject cls, |
496 | 159 jint rdman, |
160 jfloat r, jfloat g, | |
161 jfloat b, jfloat a) { | |
162 jint paint; | |
163 | |
164 paint = (jint)rdman_paint_color_new((redraw_man_t *)rdman, | |
165 r, g, b, a); | |
166 return paint; | |
167 } | |
168 | |
169 jint Java_org_madbutterfly__1jni_rdman_1paint_1free(JNIEnv *env, | |
502
a53fc3eff8f1
Every static native method has the 2rd argument as class object.
Thinker K.F. Li <thinker@branda.to>
parents:
496
diff
changeset
|
170 jobject cls, |
496 | 171 jint rdman, |
172 jint paint) { | |
173 jint r; | |
174 | |
175 r = rdman_paint_free((redraw_man_t *)rdman, | |
176 (paint_t *)paint); | |
177 return r; | |
178 } | |
179 | |
180 void Java_org_madbutterfly__1jni_paint_1color_1set(JNIEnv *env, | |
502
a53fc3eff8f1
Every static native method has the 2rd argument as class object.
Thinker K.F. Li <thinker@branda.to>
parents:
496
diff
changeset
|
181 jobject cls, |
496 | 182 jint paint, |
183 jfloat r, jfloat g, | |
184 jfloat b, jfloat a) { | |
185 paint_color_set((paint_t *)paint, r, g, b, a); | |
186 } | |
187 | |
188 jfloatArray Java_org_madbutterfly__1jni_paint_1color_1get(JNIEnv *env, | |
502
a53fc3eff8f1
Every static native method has the 2rd argument as class object.
Thinker K.F. Li <thinker@branda.to>
parents:
496
diff
changeset
|
189 jobject cls, |
496 | 190 jint paint) { |
191 co_comp_t r, g, b, a; | |
192 jfloat color[4]; | |
193 jfloatArray result; | |
194 | |
195 paint_color_get((paint_t *)paint, &r, &g, &b, &a); | |
196 color[0] = r; | |
197 color[1] = g; | |
198 color[2] = b; | |
199 color[3] = a; | |
200 | |
201 result = env->NewFloatArray(4); | |
202 env->SetFloatArrayRegion(result, 0, 4, color); | |
203 | |
204 return result; | |
205 } | |
206 | |
207 END_C | |
208 |