summaryrefslogtreecommitdiff
path: root/platform/java/mupdf_native.c
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebras@gmail.com>2016-08-26 15:52:02 +0800
committerSebastian Rasmussen <sebras@gmail.com>2016-09-01 23:09:05 +0800
commit24be8aa1eebc6e6e0361be9b7d06c11cfd261de5 (patch)
tree2e620d9bce40b2ae35a655bd21f36eed4190b1be /platform/java/mupdf_native.c
parent841fae6c1a458882984c864af4a2ffe7570faee4 (diff)
downloadmupdf-24be8aa1eebc6e6e0361be9b7d06c11cfd261de5.tar.xz
JNI: Support size() and push() for arrays.
Diffstat (limited to 'platform/java/mupdf_native.c')
-rw-r--r--platform/java/mupdf_native.c153
1 files changed, 133 insertions, 20 deletions
diff --git a/platform/java/mupdf_native.c b/platform/java/mupdf_native.c
index 0dfe1f4e..b2a58ef2 100644
--- a/platform/java/mupdf_native.c
+++ b/platform/java/mupdf_native.c
@@ -6802,10 +6802,7 @@ FUN(PDFObject_putArrayBoolean)(JNIEnv *env, jobject self, jint index, jboolean b
return;
fz_try(ctx)
- if (index == pdf_array_len(ctx, arr))
- pdf_array_push(ctx, arr, pdf_new_bool(ctx, pdf, b));
- else
- pdf_array_put(ctx, arr, index, pdf_new_bool(ctx, pdf, b));
+ pdf_array_put(ctx, arr, index, pdf_new_bool(ctx, pdf, b));
fz_catch(ctx)
jni_rethrow(env, ctx);
}
@@ -6822,10 +6819,7 @@ FUN(PDFObject_putArrayInteger)(JNIEnv *env, jobject self, jint index, jint i)
return;
fz_try(ctx)
- if (index == pdf_array_len(ctx, arr))
- pdf_array_push(ctx, arr, pdf_new_int(ctx, pdf, i));
- else
- pdf_array_put(ctx, arr, index, pdf_new_int(ctx, pdf, i));
+ pdf_array_put(ctx, arr, index, pdf_new_int(ctx, pdf, i));
fz_catch(ctx)
jni_rethrow(env, ctx);
}
@@ -6842,10 +6836,7 @@ FUN(PDFObject_putArrayFloat)(JNIEnv *env, jobject self, jint index, jfloat f)
return;
fz_try(ctx)
- if (index == pdf_array_len(ctx, arr))
- pdf_array_push(ctx, arr, pdf_new_real(ctx, pdf, f));
- else
- pdf_array_put(ctx, arr, index, pdf_new_real(ctx, pdf, f));
+ pdf_array_put(ctx, arr, index, pdf_new_real(ctx, pdf, f));
fz_catch(ctx)
jni_rethrow(env, ctx);
}
@@ -6870,10 +6861,7 @@ FUN(PDFObject_putArrayString)(JNIEnv *env, jobject self, jint index, jstring jst
}
fz_try(ctx)
- if (index == pdf_array_len(ctx, arr))
- pdf_array_push(ctx, arr, pdf_new_string(ctx, pdf, str, strlen(str)));
- else
- pdf_array_put(ctx, arr, index, pdf_new_string(ctx, pdf, str, strlen(str)));
+ pdf_array_put(ctx, arr, index, pdf_new_string(ctx, pdf, str, strlen(str)));
fz_always(ctx)
if (str)
(*env)->ReleaseStringUTFChars(env, jstr, str);
@@ -6893,10 +6881,7 @@ FUN(PDFObject_putArrayPDFObject)(JNIEnv *env, jobject self, jint index, jobject
return;
fz_try(ctx)
- if (index == pdf_array_len(ctx, arr))
- pdf_array_push(ctx, arr, obj);
- else
- pdf_array_put(ctx, arr, index, obj);
+ pdf_array_put(ctx, arr, index, obj);
fz_catch(ctx)
jni_rethrow(env, ctx);
}
@@ -7301,6 +7286,134 @@ FUN(PDFObject_toByteString)(JNIEnv *env, jobject self)
return jbs;
}
+JNIEXPORT int JNICALL
+FUN(PDFObject_size)(JNIEnv *env, jobject self)
+{
+ fz_context *ctx = get_context(env);
+ pdf_obj *arr = from_PDFObject(env, self);
+ int len;
+
+ if (!ctx) return 0;
+
+ fz_try(ctx)
+ len = pdf_array_len(ctx, arr);
+ fz_catch(ctx)
+ jni_rethrow(env, ctx);
+
+ return len;
+}
+
+JNIEXPORT void JNICALL
+FUN(PDFObject_pushBoolean)(JNIEnv *env, jobject self, jboolean b)
+{
+ fz_context *ctx = get_context(env);
+ pdf_obj *arr = from_PDFObject(env, self);
+ pdf_obj *item = NULL;
+
+ if (!ctx) return;
+
+ fz_try(ctx)
+ {
+ pdf_document *pdf = pdf_get_bound_document(ctx, arr);
+ item = pdf_new_bool(ctx, pdf, b);
+ pdf_array_push(ctx, arr, item);
+ }
+ fz_always(ctx)
+ pdf_drop_obj(ctx, item);
+ fz_catch(ctx)
+ jni_rethrow(env, ctx);
+}
+
+JNIEXPORT void JNICALL
+FUN(PDFObject_pushInteger)(JNIEnv *env, jobject self, jint i)
+{
+ fz_context *ctx = get_context(env);
+ pdf_obj *arr = from_PDFObject(env, self);
+ pdf_obj *item = NULL;
+
+ if (!ctx) return;
+
+ fz_try(ctx)
+ {
+ pdf_document *pdf = pdf_get_bound_document(ctx, arr);
+ item = pdf_new_int(ctx, pdf, i);
+ pdf_array_push(ctx, arr, item);
+ }
+ fz_always(ctx)
+ pdf_drop_obj(ctx, item);
+ fz_catch(ctx)
+ jni_rethrow(env, ctx);
+}
+
+JNIEXPORT void JNICALL
+FUN(PDFObject_pushFloat)(JNIEnv *env, jobject self, jfloat f)
+{
+ fz_context *ctx = get_context(env);
+ pdf_obj *arr = from_PDFObject(env, self);
+ pdf_obj *item = NULL;
+
+ if (!ctx) return;
+
+ fz_try(ctx)
+ {
+ pdf_document *pdf = pdf_get_bound_document(ctx, arr);
+ item = pdf_new_real(ctx, pdf, f);
+ pdf_array_push(ctx, arr, item);
+ }
+ fz_always(ctx)
+ pdf_drop_obj(ctx, item);
+ fz_catch(ctx)
+ jni_rethrow(env, ctx);
+}
+
+JNIEXPORT void JNICALL
+FUN(PDFObject_pushString)(JNIEnv *env, jobject self, jstring jstr)
+{
+ fz_context *ctx = get_context(env);
+ pdf_obj *arr = from_PDFObject(env, self);
+ const char *str = NULL;
+ pdf_obj *item = NULL;
+
+ if (!ctx) return;
+ if (jstr)
+ {
+ str = (*env)->GetStringUTFChars(env, jstr, NULL);
+ if (!str) return;
+ }
+
+ fz_try(ctx)
+ {
+ pdf_document *pdf = pdf_get_bound_document(ctx, arr);
+ item = str ? pdf_new_string(ctx, pdf, str, strlen(str)) : NULL;
+ pdf_array_push(ctx, arr, item);
+ }
+ fz_always(ctx)
+ {
+ pdf_drop_obj(ctx, item);
+ if (str)
+ (*env)->ReleaseStringUTFChars(env, jstr, str);
+ }
+ fz_catch(ctx)
+ jni_rethrow(env, ctx);
+}
+
+JNIEXPORT void JNICALL
+FUN(PDFObject_pushPDFObject)(JNIEnv *env, jobject self, jobject jitem)
+{
+ fz_context *ctx = get_context(env);
+ pdf_obj *arr = from_PDFObject(env, self);
+ pdf_obj *item = from_PDFObject(env, jitem);
+
+ if (!ctx) return;
+
+ fz_try(ctx)
+ pdf_array_push(ctx, arr, item);
+ fz_always(ctx)
+ pdf_drop_obj(ctx, item);
+ fz_catch(ctx)
+ jni_rethrow(env, ctx);
+}
+
JNIEXPORT jstring JNICALL
FUN(PDFObject_toString)(JNIEnv *env, jobject self, jboolean tight)
{