static void InitPasteboardJni(JNIEnv *env, jobject obj) { LOGD("InitPasteboardJni"); jclass clazz = env->FindClass("android/webkit/WebClipboard"); m_javaGlueForPasteBoard.m_obj = env->NewWeakGlobalRef(obj); m_javaGlueForPasteBoard.m_getText = GetJMethod(env, clazz, "getText", "()Ljava/lang/String;"); m_javaGlueForPasteBoard.m_getHTML = GetJMethod(env, clazz, "getHTML", "()Ljava/lang/String;"); m_javaGlueForPasteBoard.m_setDataToClipBoard = GetJMethod(env, clazz, "setDataToClipboard", "(Ljava/lang/String;Ljava/lang/String;)V"); }
JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_init(JNIEnv* env, jobject thiz, jobject jsampleActivity, jint msaaSampleCount) { // setup jni hooks to the java activity gActivityGlue.m_env = env; jclass clazz = env->FindClass("com/skia/SkiaSampleActivity"); gActivityGlue.m_obj = env->NewWeakGlobalRef(jsampleActivity); gActivityGlue.m_setTitle = GetJMethod(env, clazz, "setTitle", "(Ljava/lang/CharSequence;)V"); gActivityGlue.m_setSlideList = GetJMethod(env, clazz, "setSlideList", "([Ljava/lang/String;)V"); gActivityGlue.m_addToDownloads = GetJMethod(env, clazz, "addToDownloads", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); env->DeleteLocalRef(clazz); // setup jni hooks to the java renderer clazz = env->FindClass("com/skia/SkiaSampleRenderer"); gWindowGlue.m_obj = env->NewWeakGlobalRef(thiz); gWindowGlue.m_inval = GetJMethod(env, clazz, "requestRender", "()V"); gWindowGlue.m_queueSkEvent = GetJMethod(env, clazz, "queueSkEvent", "()V"); gWindowGlue.m_startTimer = GetJMethod(env, clazz, "startTimer", "(I)V"); gWindowGlue.m_getMSAASampleCount = GetJMethod(env, clazz, "getMSAASampleCount", "()I"); env->DeleteLocalRef(clazz); application_init(); SkTArray<const char*> args; args.push_back("SampleApp"); // TODO: push ability to select skp dir into the UI args.push_back("--pictureDir"); args.push_back("/sdcard/skiabot/skia_skp"); SkString msaaSampleCountString; if (msaaSampleCount > 0) { args.push_back("--msaa"); msaaSampleCountString.appendS32(static_cast<uint32_t>(msaaSampleCount)); args.push_back(msaaSampleCountString.c_str()); } gWindow = new SampleWindow(NULL, args.count(), const_cast<char**>(args.begin()), NULL); // send the list of slides up to the activity const int slideCount = gWindow->sampleCount(); jobjectArray slideList = env->NewObjectArray(slideCount, env->FindClass("java/lang/String"), env->NewStringUTF("")); for (int i = 0; i < slideCount; i++) { jstring slideTitle = env->NewStringUTF(gWindow->getSampleTitle(i).c_str()); env->SetObjectArrayElement(slideList, i, slideTitle); env->DeleteLocalRef(slideTitle); } env->CallVoidMethod(gActivityGlue.m_obj, gActivityGlue.m_setSlideList, slideList); env->DeleteLocalRef(slideList); }