OLD | NEW |
---|---|
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2011 Skia | 3 * Copyright 2011 Skia |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 #include "com_skia_SkiaSampleRenderer.h" | 8 #include "com_skia_SkiaSampleRenderer.h" |
9 | 9 |
10 #include "GrContext.h" | 10 #include "GrContext.h" |
(...skipping 26 matching lines...) Expand all Loading... | |
37 m_setSlideList = NULL; | 37 m_setSlideList = NULL; |
38 m_addToDownloads = NULL; | 38 m_addToDownloads = NULL; |
39 } | 39 } |
40 } gActivityGlue; | 40 } gActivityGlue; |
41 | 41 |
42 struct WindowGlue { | 42 struct WindowGlue { |
43 jweak m_obj; | 43 jweak m_obj; |
44 jmethodID m_inval; | 44 jmethodID m_inval; |
45 jmethodID m_queueSkEvent; | 45 jmethodID m_queueSkEvent; |
46 jmethodID m_startTimer; | 46 jmethodID m_startTimer; |
47 jmethodID m_getMSAASampleCount; | |
47 WindowGlue() { | 48 WindowGlue() { |
48 m_obj = NULL; | 49 m_obj = NULL; |
49 m_inval = NULL; | 50 m_inval = NULL; |
50 m_queueSkEvent = NULL; | 51 m_queueSkEvent = NULL; |
51 m_startTimer = NULL; | 52 m_startTimer = NULL; |
53 m_getMSAASampleCount = NULL; | |
52 } | 54 } |
53 } gWindowGlue; | 55 } gWindowGlue; |
54 | 56 |
55 SampleWindow* gWindow; | 57 SampleWindow* gWindow; |
56 | 58 |
57 /////////////////////////////////////////// | 59 /////////////////////////////////////////// |
58 ///////////// SkOSWindow impl ///////////// | 60 ///////////// SkOSWindow impl ///////////// |
59 /////////////////////////////////////////// | 61 /////////////////////////////////////////// |
60 | 62 |
63 bool SkOSWindow::attach(SkBackEndTypes /* attachType */, int msaaSampleCount, At tachmentInfo* info) | |
64 { | |
65 JNIEnv* env = gActivityGlue.m_env; | |
66 if (!env || !gWindowGlue.m_getMSAASampleCount || !gWindowGlue.m_obj) { | |
67 return false; | |
68 } | |
69 if (env->IsSameObject(gWindowGlue.m_obj, NULL)) { | |
70 SkDebugf("ERROR: The JNI WeakRef to the Window is invalid"); | |
71 return false; | |
72 } | |
73 info->fSampleCount = env->CallIntMethod(gWindowGlue.m_obj, gWindowGlue.m_get MSAASampleCount); | |
74 | |
75 // This is the value requested in SkiaSampleView.java. | |
76 info->fStencilBits = 8; | |
77 return true; | |
78 } | |
79 | |
61 void SkOSWindow::onSetTitle(const char title[]) | 80 void SkOSWindow::onSetTitle(const char title[]) |
62 { | 81 { |
63 JNIEnv* env = gActivityGlue.m_env; | 82 JNIEnv* env = gActivityGlue.m_env; |
64 if (!env) { | 83 if (!env) { |
65 return; | 84 return; |
66 } | 85 } |
67 if (env->IsSameObject(gActivityGlue.m_obj, NULL)) { | 86 if (env->IsSameObject(gActivityGlue.m_obj, NULL)) { |
68 SkDebugf("ERROR: The JNI WeakRef to the Activity is invalid"); | 87 SkDebugf("ERROR: The JNI WeakRef to the Activity is invalid"); |
69 return; | 88 return; |
70 } | 89 } |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
148 | 167 |
149 static jmethodID GetJMethod(JNIEnv* env, jclass clazz, const char name[], | 168 static jmethodID GetJMethod(JNIEnv* env, jclass clazz, const char name[], |
150 const char signature[]) | 169 const char signature[]) |
151 { | 170 { |
152 jmethodID m = env->GetMethodID(clazz, name, signature); | 171 jmethodID m = env->GetMethodID(clazz, name, signature); |
153 if (!m) SkDebugf("Could not find Java method %s\n", name); | 172 if (!m) SkDebugf("Could not find Java method %s\n", name); |
154 return m; | 173 return m; |
155 } | 174 } |
156 | 175 |
157 JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_init(JNIEnv* env, | 176 JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_init(JNIEnv* env, |
158 jobject thiz, jobject jsampleActivity) | 177 jobject thiz, jobject jsampleActivity, jint msaaSampleCount) |
159 { | 178 { |
160 // setup jni hooks to the java activity | 179 // setup jni hooks to the java activity |
161 gActivityGlue.m_env = env; | 180 gActivityGlue.m_env = env; |
162 jclass clazz = env->FindClass("com/skia/SkiaSampleActivity"); | 181 jclass clazz = env->FindClass("com/skia/SkiaSampleActivity"); |
163 gActivityGlue.m_obj = env->NewWeakGlobalRef(jsampleActivity); | 182 gActivityGlue.m_obj = env->NewWeakGlobalRef(jsampleActivity); |
164 gActivityGlue.m_setTitle = GetJMethod(env, clazz, "setTitle", "(Ljava/lang/C harSequence;)V"); | 183 gActivityGlue.m_setTitle = GetJMethod(env, clazz, "setTitle", "(Ljava/lang/C harSequence;)V"); |
165 gActivityGlue.m_setSlideList = GetJMethod(env, clazz, "setSlideList", "([Lja va/lang/String;)V"); | 184 gActivityGlue.m_setSlideList = GetJMethod(env, clazz, "setSlideList", "([Lja va/lang/String;)V"); |
166 gActivityGlue.m_addToDownloads = GetJMethod(env, clazz, "addToDownloads", | 185 gActivityGlue.m_addToDownloads = GetJMethod(env, clazz, "addToDownloads", |
167 "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); | 186 "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); |
168 env->DeleteLocalRef(clazz); | 187 env->DeleteLocalRef(clazz); |
169 | 188 |
170 // setup jni hooks to the java renderer | 189 // setup jni hooks to the java renderer |
171 clazz = env->FindClass("com/skia/SkiaSampleRenderer"); | 190 clazz = env->FindClass("com/skia/SkiaSampleRenderer"); |
172 gWindowGlue.m_obj = env->NewWeakGlobalRef(thiz); | 191 gWindowGlue.m_obj = env->NewWeakGlobalRef(thiz); |
173 gWindowGlue.m_inval = GetJMethod(env, clazz, "requestRender", "()V"); | 192 gWindowGlue.m_inval = GetJMethod(env, clazz, "requestRender", "()V"); |
174 gWindowGlue.m_queueSkEvent = GetJMethod(env, clazz, "queueSkEvent", "()V"); | 193 gWindowGlue.m_queueSkEvent = GetJMethod(env, clazz, "queueSkEvent", "()V"); |
175 gWindowGlue.m_startTimer = GetJMethod(env, clazz, "startTimer", "(I)V"); | 194 gWindowGlue.m_startTimer = GetJMethod(env, clazz, "startTimer", "(I)V"); |
195 gWindowGlue.m_getMSAASampleCount = GetJMethod(env, clazz, "getMSAASampleCoun t", "()I"); | |
176 env->DeleteLocalRef(clazz); | 196 env->DeleteLocalRef(clazz); |
177 | 197 |
178 application_init(); | 198 application_init(); |
199 SkTArray<const char*> args; | |
200 | |
201 args.push_back("SampleApp"); | |
179 // TODO: push ability to select skp dir into the UI | 202 // TODO: push ability to select skp dir into the UI |
180 const char* argv[] = { "SampleApp", "--pictureDir", "/sdcard/skiabot/skia_sk p" }; | 203 args.push_back("--pictureDir"); |
181 gWindow = new SampleWindow(NULL, sizeof(argv)/sizeof(char*), const_cast<char **>(argv), NULL); | 204 args.push_back("/sdcard/skiabot/skia_skp"); |
205 | |
206 SkString msaaSampleCountString; | |
207 if (msaaSampleCount > 0) { | |
208 args.push_back("--msaa"); | |
209 msaaSampleCountString.printf("%d", msaaSampleCount); | |
djsollen
2013/11/07 16:57:43
printf in this case is a little more than you need
Kimmo Kinnunen
2013/11/20 13:45:00
Done.
| |
210 args.push_back(msaaSampleCountString.c_str()); | |
211 } | |
212 | |
213 gWindow = new SampleWindow(NULL, args.count(), const_cast<char**>(args.begin ()), NULL); | |
182 | 214 |
183 // send the list of slides up to the activity | 215 // send the list of slides up to the activity |
184 const int slideCount = gWindow->sampleCount(); | 216 const int slideCount = gWindow->sampleCount(); |
185 jobjectArray slideList = env->NewObjectArray(slideCount, env->FindClass("jav a/lang/String"), env->NewStringUTF("")); | 217 jobjectArray slideList = env->NewObjectArray(slideCount, env->FindClass("jav a/lang/String"), env->NewStringUTF("")); |
186 for (int i = 0; i < slideCount; i++) { | 218 for (int i = 0; i < slideCount; i++) { |
187 jstring slideTitle = env->NewStringUTF(gWindow->getSampleTitle(i).c_str( )); | 219 jstring slideTitle = env->NewStringUTF(gWindow->getSampleTitle(i).c_str( )); |
188 env->SetObjectArrayElement(slideList, i, slideTitle); | 220 env->SetObjectArrayElement(slideList, i, slideTitle); |
189 env->DeleteLocalRef(slideTitle); | 221 env->DeleteLocalRef(slideTitle); |
190 } | 222 } |
191 env->CallVoidMethod(gActivityGlue.m_obj, gActivityGlue.m_setSlideList, slide List); | 223 env->CallVoidMethod(gActivityGlue.m_obj, gActivityGlue.m_setSlideList, slide List); |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
315 JNIEnv* env, jobject thiz) | 347 JNIEnv* env, jobject thiz) |
316 { | 348 { |
317 gWindow->saveToPdf(); | 349 gWindow->saveToPdf(); |
318 } | 350 } |
319 | 351 |
320 JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_postInval( | 352 JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_postInval( |
321 JNIEnv* env, jobject thiz) | 353 JNIEnv* env, jobject thiz) |
322 { | 354 { |
323 gWindow->postInvalDelay(); | 355 gWindow->postInvalDelay(); |
324 } | 356 } |
OLD | NEW |