aboutsummaryrefslogtreecommitdiffhomepage
path: root/platform_tools/android/app/jni
diff options
context:
space:
mode:
authorGravatar djsollen@google.com <djsollen@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-04-29 12:09:31 +0000
committerGravatar djsollen@google.com <djsollen@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-04-29 12:09:31 +0000
commitdcdd57faf02fb4fd23bb8265392b9c22e068907e (patch)
tree9fd7bfc2238672202dd72f29fd3b3c8c1c7fb776 /platform_tools/android/app/jni
parent48115de566aaa861b06371fc649899915174279f (diff)
Copy the top level Android directory into trunk.
This CL is the first step in a series needed to move the android directory into trunk. After the copy we will update GYP and DEPS to point to the new location and only then remove the original directory. git-svn-id: http://skia.googlecode.com/svn/trunk@8891 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'platform_tools/android/app/jni')
-rw-r--r--platform_tools/android/app/jni/com_skia_SkiaIntentService.cpp38
-rw-r--r--platform_tools/android/app/jni/com_skia_SkiaIntentService.h21
-rw-r--r--platform_tools/android/app/jni/com_skia_SkiaSampleRenderer.cpp324
-rw-r--r--platform_tools/android/app/jni/com_skia_SkiaSampleRenderer.h157
4 files changed, 540 insertions, 0 deletions
diff --git a/platform_tools/android/app/jni/com_skia_SkiaIntentService.cpp b/platform_tools/android/app/jni/com_skia_SkiaIntentService.cpp
new file mode 100644
index 0000000000..cd1d6a1275
--- /dev/null
+++ b/platform_tools/android/app/jni/com_skia_SkiaIntentService.cpp
@@ -0,0 +1,38 @@
+#include "com_skia_SkiaIntentService.h"
+
+#include <stdint.h>
+#include <stdio.h>
+
+extern int main(int argc, char * const argv[]);
+
+void cleanUp(JNIEnv* env, jobjectArray jstrs, const char** strs, int32_t count) {
+ for (int32_t i = 0; i < count; ++i)
+ env->ReleaseStringUTFChars(
+ (jstring) env->GetObjectArrayElement(jstrs, i), strs[i]);
+}
+
+JNIEXPORT jint JNICALL Java_com_skia_SkiaIntentService_run(
+ JNIEnv* env,
+ jobject,
+ jobjectArray args) {
+
+ // Convert command line arguments to C format.
+ int argc = env->GetArrayLength(args);
+ const char** argv = new const char*[argc];
+ for (int32_t i = 0; i < argc; ++i) {
+ jstring str = (jstring) env->GetObjectArrayElement(args, i);
+ argv[i] = env->GetStringUTFChars(str, NULL);
+ if (NULL == argv[i]) {
+ cleanUp(env, args, argv, i - 1);
+ return 1;
+ }
+ }
+
+ // Execute program main()
+ int retval = main(argc, (char* const*) argv);
+
+ // Clean up temporaries and return the exit code.
+ cleanUp(env, args, argv, argc);
+ delete[] argv;
+ return retval;
+}
diff --git a/platform_tools/android/app/jni/com_skia_SkiaIntentService.h b/platform_tools/android/app/jni/com_skia_SkiaIntentService.h
new file mode 100644
index 0000000000..89fbfd2957
--- /dev/null
+++ b/platform_tools/android/app/jni/com_skia_SkiaIntentService.h
@@ -0,0 +1,21 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class com_skia_SkiaIntentService */
+
+#ifndef _Included_com_skia_SkiaIntentService
+#define _Included_com_skia_SkiaIntentService
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: com_skia_SkiaIntentService
+ * Method: run
+ * Signature: ([Ljava/lang/String;)I
+ */
+JNIEXPORT jint JNICALL Java_com_skia_SkiaIntentService_run
+ (JNIEnv *, jobject, jobjectArray);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/platform_tools/android/app/jni/com_skia_SkiaSampleRenderer.cpp b/platform_tools/android/app/jni/com_skia_SkiaSampleRenderer.cpp
new file mode 100644
index 0000000000..9817074c68
--- /dev/null
+++ b/platform_tools/android/app/jni/com_skia_SkiaSampleRenderer.cpp
@@ -0,0 +1,324 @@
+
+/*
+ * Copyright 2011 Skia
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "com_skia_SkiaSampleRenderer.h"
+
+#include "GrContext.h"
+#include "gl/GrGLInterface.h"
+#include "SampleApp.h"
+#include "SkApplication.h"
+#include "SkCanvas.h"
+#include "SkDevice.h"
+#include "SkEvent.h"
+#include "SkWindow.h"
+
+#include <jni.h>
+#include "android/AndroidKeyToSkKey.h"
+
+
+///////////////////////////////////////////
+///////////////// Globals /////////////////
+///////////////////////////////////////////
+
+struct ActivityGlue {
+ JNIEnv* m_env;
+ jweak m_obj;
+ jmethodID m_setTitle;
+ jmethodID m_setSlideList;
+ jmethodID m_addToDownloads;
+ ActivityGlue() {
+ m_env = NULL;
+ m_obj = NULL;
+ m_setTitle = NULL;
+ m_setSlideList = NULL;
+ m_addToDownloads = NULL;
+ }
+} gActivityGlue;
+
+struct WindowGlue {
+ jweak m_obj;
+ jmethodID m_inval;
+ jmethodID m_queueSkEvent;
+ jmethodID m_startTimer;
+ WindowGlue() {
+ m_obj = NULL;
+ m_inval = NULL;
+ m_queueSkEvent = NULL;
+ m_startTimer = NULL;
+ }
+} gWindowGlue;
+
+SampleWindow* gWindow;
+
+///////////////////////////////////////////
+///////////// SkOSWindow impl /////////////
+///////////////////////////////////////////
+
+void SkOSWindow::onSetTitle(const char title[])
+{
+ JNIEnv* env = gActivityGlue.m_env;
+ if (!env) {
+ return;
+ }
+ if (env->IsSameObject(gActivityGlue.m_obj, NULL)) {
+ SkDebugf("ERROR: The JNI WeakRef to the Activity is invalid");
+ return;
+ }
+
+ jstring string = env->NewStringUTF(title);
+ env->CallVoidMethod(gActivityGlue.m_obj, gActivityGlue.m_setTitle, string);
+ env->DeleteLocalRef(string);
+}
+
+void SkOSWindow::onHandleInval(const SkIRect& rect)
+{
+ JNIEnv* env = gActivityGlue.m_env;
+ if (!env || !gWindowGlue.m_inval || !gWindowGlue.m_obj) {
+ return;
+ }
+ if (env->IsSameObject(gWindowGlue.m_obj, NULL)) {
+ SkDebugf("ERROR: The JNI WeakRef to the Window is invalid");
+ return;
+ }
+ env->CallVoidMethod(gWindowGlue.m_obj, gWindowGlue.m_inval);
+}
+
+void SkOSWindow::onPDFSaved(const char title[], const char desc[],
+ const char path[])
+{
+ JNIEnv* env = gActivityGlue.m_env;
+ if (!env || !gActivityGlue.m_addToDownloads || !gActivityGlue.m_obj) {
+ return;
+ }
+ if (env->IsSameObject(gActivityGlue.m_obj, NULL)) {
+ SkDebugf("ERROR: The JNI WeakRef to the Activity is invalid");
+ return;
+ }
+
+ jstring jtitle = env->NewStringUTF(title);
+ jstring jdesc = env->NewStringUTF(desc);
+ jstring jpath = env->NewStringUTF(path);
+
+ env->CallVoidMethod(gActivityGlue.m_obj, gActivityGlue.m_addToDownloads,
+ jtitle, jdesc, jpath);
+
+ env->DeleteLocalRef(jtitle);
+ env->DeleteLocalRef(jdesc);
+ env->DeleteLocalRef(jpath);
+}
+
+///////////////////////////////////////////
+/////////////// SkEvent impl //////////////
+///////////////////////////////////////////
+
+void SkEvent::SignalQueueTimer(SkMSec ms)
+{
+ JNIEnv* env = gActivityGlue.m_env;
+ if (!env || !gWindowGlue.m_startTimer || !gWindowGlue.m_obj || !ms) {
+ return;
+ }
+ if (env->IsSameObject(gWindowGlue.m_obj, NULL)) {
+ SkDebugf("ERROR: The JNI WeakRef to the Window is invalid");
+ return;
+ }
+ env->CallVoidMethod(gWindowGlue.m_obj,
+ gWindowGlue.m_startTimer, ms);
+}
+
+void SkEvent::SignalNonEmptyQueue()
+{
+ JNIEnv* env = gActivityGlue.m_env;
+ if (!env || !gWindowGlue.m_queueSkEvent || !gWindowGlue.m_obj) {
+ return;
+ }
+ if (env->IsSameObject(gWindowGlue.m_obj, NULL)) {
+ SkDebugf("ERROR: The JNI WeakRef to the Window is invalid");
+ return;
+ }
+ env->CallVoidMethod(gWindowGlue.m_obj, gWindowGlue.m_queueSkEvent);
+}
+
+///////////////////////////////////////////
+////////////////// JNI ////////////////////
+///////////////////////////////////////////
+
+static jmethodID GetJMethod(JNIEnv* env, jclass clazz, const char name[],
+ const char signature[])
+{
+ jmethodID m = env->GetMethodID(clazz, name, signature);
+ if (!m) SkDebugf("Could not find Java method %s\n", name);
+ return m;
+}
+
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_init(JNIEnv* env,
+ jobject thiz, jobject jsampleActivity)
+{
+ // 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");
+ env->DeleteLocalRef(clazz);
+
+ application_init();
+ // TODO: push ability to select skp dir into the UI
+ const char* argv[] = { "SampleApp", "--pictureDir", "/sdcard/skiabot/skia_skp" };
+ gWindow = new SampleWindow(NULL, sizeof(argv)/sizeof(char*), const_cast<char**>(argv), 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);
+}
+
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_term(JNIEnv* env,
+ jobject thiz)
+{
+ delete gWindow;
+ gWindow = NULL;
+ application_term();
+ if (gWindowGlue.m_obj) {
+ env->DeleteWeakGlobalRef(gWindowGlue.m_obj);
+ gWindowGlue.m_obj = NULL;
+ }
+ if (gActivityGlue.m_obj) {
+ env->DeleteWeakGlobalRef(gActivityGlue.m_obj);
+ gActivityGlue.m_obj = NULL;
+ }
+}
+
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_draw(
+ JNIEnv* env, jobject thiz)
+{
+ if (!gWindow) return;
+ gWindow->update(NULL);
+}
+
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_updateSize(JNIEnv* env,
+ jobject thiz, jint w, jint h)
+{
+ gWindow->resize(w, h);
+}
+
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_handleClick(JNIEnv* env,
+ jobject thiz, jint owner, jfloat x, jfloat y, jint jstate)
+{
+ SkView::Click::State state;
+ switch(jstate) {
+ case 0: // MotionEvent.ACTION_DOWN
+ state = SkView::Click::kDown_State;
+ break;
+ case 1: // MotionEvent.ACTION_UP
+ case 3: // MotionEvent.ACTION_CANCEL
+ state = SkView::Click::kUp_State;
+ break;
+ case 2: // MotionEvent.ACTION_MOVE
+ state = SkView::Click::kMoved_State;
+ break;
+ default:
+ SkDebugf("motion event ignored\n");
+ return;
+ }
+ gWindow->handleClick(x, y, state, (void*) owner);
+}
+
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_nextSample(
+ JNIEnv* env, jobject thiz)
+{
+ gWindow->nextSample();
+}
+
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_previousSample(
+ JNIEnv* env, jobject thiz)
+{
+ gWindow->previousSample();
+}
+
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_goToSample(
+ JNIEnv* env, jobject thiz, jint position)
+{
+ gWindow->goToSample(position);
+}
+
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_toggleRenderingMode(
+ JNIEnv* env, jobject thiz)
+{
+ gWindow->toggleRendering();
+}
+
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_showOverview(
+ JNIEnv* env, jobject thiz)
+{
+ gWindow->showOverview();
+}
+
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_toggleSlideshow(
+ JNIEnv* env, jobject thiz)
+{
+ gWindow->toggleSlideshow();
+}
+
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_toggleFPS(
+ JNIEnv* env, jobject thiz)
+{
+ gWindow->toggleFPS();
+}
+
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_toggleTiling(
+ JNIEnv* env, jobject thiz)
+{
+ gWindow->handleChar('t');
+}
+
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_toggleBBox(
+ JNIEnv* env, jobject thiz)
+{
+ gWindow->handleChar('b');
+}
+
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_processSkEvent(
+ JNIEnv* env, jobject thiz)
+{
+ if (SkEvent::ProcessEvent()) {
+ SkEvent::SignalNonEmptyQueue();
+ }
+}
+
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_serviceQueueTimer(
+ JNIEnv* env, jobject thiz)
+{
+ SkEvent::ServiceQueueTimer();
+}
+
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_saveToPDF(
+ JNIEnv* env, jobject thiz)
+{
+ gWindow->saveToPdf();
+}
+
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_postInval(
+ JNIEnv* env, jobject thiz)
+{
+ gWindow->postInvalDelay();
+}
diff --git a/platform_tools/android/app/jni/com_skia_SkiaSampleRenderer.h b/platform_tools/android/app/jni/com_skia_SkiaSampleRenderer.h
new file mode 100644
index 0000000000..5d371235fe
--- /dev/null
+++ b/platform_tools/android/app/jni/com_skia_SkiaSampleRenderer.h
@@ -0,0 +1,157 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class com_skia_SkiaSampleRenderer */
+
+#ifndef _Included_com_skia_SkiaSampleRenderer
+#define _Included_com_skia_SkiaSampleRenderer
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: com_skia_SkiaSampleRenderer
+ * Method: init
+ * Signature: (Lcom/skia/SkiaSampleActivity;)V
+ */
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_init
+ (JNIEnv *, jobject, jobject);
+
+/*
+ * Class: com_skia_SkiaSampleRenderer
+ * Method: term
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_term
+ (JNIEnv *, jobject);
+
+/*
+ * Class: com_skia_SkiaSampleRenderer
+ * Method: draw
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_draw
+ (JNIEnv *, jobject);
+
+/*
+ * Class: com_skia_SkiaSampleRenderer
+ * Method: updateSize
+ * Signature: (II)V
+ */
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_updateSize
+ (JNIEnv *, jobject, jint, jint);
+
+/*
+ * Class: com_skia_SkiaSampleRenderer
+ * Method: handleClick
+ * Signature: (IFFI)V
+ */
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_handleClick
+ (JNIEnv *, jobject, jint, jfloat, jfloat, jint);
+
+/*
+ * Class: com_skia_SkiaSampleRenderer
+ * Method: showOverview
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_showOverview
+ (JNIEnv *, jobject);
+
+/*
+ * Class: com_skia_SkiaSampleRenderer
+ * Method: nextSample
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_nextSample
+ (JNIEnv *, jobject);
+
+/*
+ * Class: com_skia_SkiaSampleRenderer
+ * Method: previousSample
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_previousSample
+ (JNIEnv *, jobject);
+
+/*
+ * Class: com_skia_SkiaSampleRenderer
+ * Method: goToSample
+ * Signature: (I)V
+ */
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_goToSample
+ (JNIEnv *, jobject, jint);
+
+/*
+ * Class: com_skia_SkiaSampleRenderer
+ * Method: toggleRenderingMode
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_toggleRenderingMode
+ (JNIEnv *, jobject);
+
+/*
+ * Class: com_skia_SkiaSampleRenderer
+ * Method: toggleSlideshow
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_toggleSlideshow
+ (JNIEnv *, jobject);
+
+/*
+ * Class: com_skia_SkiaSampleRenderer
+ * Method: toggleFPS
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_toggleFPS
+ (JNIEnv *, jobject);
+
+/*
+ * Class: com_skia_SkiaSampleRenderer
+ * Method: toggleTiling
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_toggleTiling
+ (JNIEnv *, jobject);
+
+/*
+ * Class: com_skia_SkiaSampleRenderer
+ * Method: toggleBBox
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_toggleBBox
+ (JNIEnv *, jobject);
+
+/*
+ * Class: com_skia_SkiaSampleRenderer
+ * Method: processSkEvent
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_processSkEvent
+ (JNIEnv *, jobject);
+
+/*
+ * Class: com_skia_SkiaSampleRenderer
+ * Method: serviceQueueTimer
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_serviceQueueTimer
+ (JNIEnv *, jobject);
+
+/*
+ * Class: com_skia_SkiaSampleRenderer
+ * Method: saveToPdf
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_saveToPDF
+ (JNIEnv *, jobject);
+
+/*
+ * Class: com_skia_SkiaSampleRenderer
+ * Method: postInval
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_postInval
+ (JNIEnv *, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+#endif