summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2016-03-03 13:24:07 +0100
committerTor Andersson <tor.andersson@artifex.com>2016-03-14 17:08:28 +0100
commit34a1439bf392ffcc82193c363df0eb7f999b59c2 (patch)
treea1cabfa638eddce3b1ae3979037eb6bafbad7988
parent257ca2c32111bde33f8d7d92d58a3893e15b9996 (diff)
downloadmupdf-34a1439bf392ffcc82193c363df0eb7f999b59c2.tar.xz
js: More object accessor functions.
-rw-r--r--source/tools/murun.c69
1 files changed, 68 insertions, 1 deletions
diff --git a/source/tools/murun.c b/source/tools/murun.c
index 2dad70ff..9cb86ad6 100644
--- a/source/tools/murun.c
+++ b/source/tools/murun.c
@@ -2173,6 +2173,20 @@ static void ffi_PDFDocument_getTrailer(js_State *J)
ffi_pushobj(J, pdf_keep_obj(ctx, trailer));
}
+static void ffi_PDFDocument_countObjects(js_State *J)
+{
+ fz_context *ctx = js_getcontext(J);
+ pdf_document *pdf = js_touserdata(J, 0, "pdf_document");
+ int count;
+
+ fz_try(ctx)
+ count = pdf_xref_len(ctx, pdf);
+ fz_catch(ctx)
+ rethrow(J);
+
+ js_pushnumber(J, count);
+}
+
static void ffi_PDFDocument_addObject(js_State *J)
{
fz_context *ctx = js_getcontext(J);
@@ -2538,11 +2552,59 @@ static void ffi_PDFObject_valueOf(js_State *J)
js_copy(J, 0);
}
+static void ffi_PDFObject_isArray(js_State *J)
+{
+ fz_context *ctx = js_getcontext(J);
+ pdf_obj *obj = js_touserdata(J, 0, "pdf_obj");
+ int b;
+ fz_try(ctx)
+ b = pdf_is_array(ctx, obj);
+ fz_catch(ctx)
+ rethrow(J);
+ js_pushboolean(J, b);
+}
+
+static void ffi_PDFObject_isDictionary(js_State *J)
+{
+ fz_context *ctx = js_getcontext(J);
+ pdf_obj *obj = js_touserdata(J, 0, "pdf_obj");
+ int b;
+ fz_try(ctx)
+ b = pdf_is_dict(ctx, obj);
+ fz_catch(ctx)
+ rethrow(J);
+ js_pushboolean(J, b);
+}
+
+static void ffi_PDFObject_isIndirect(js_State *J)
+{
+ fz_context *ctx = js_getcontext(J);
+ pdf_obj *obj = js_touserdata(J, 0, "pdf_obj");
+ int b;
+ fz_try(ctx)
+ b = pdf_is_indirect(ctx, obj);
+ fz_catch(ctx)
+ rethrow(J);
+ js_pushboolean(J, b);
+}
+
+static void ffi_PDFObject_toIndirect(js_State *J)
+{
+ fz_context *ctx = js_getcontext(J);
+ pdf_obj *obj = js_touserdata(J, 0, "pdf_obj");
+ int num;
+ fz_try(ctx)
+ num = pdf_to_num(ctx, obj);
+ fz_catch(ctx)
+ rethrow(J);
+ js_pushnumber(J, num);
+}
+
static void ffi_PDFObject_isStream(js_State *J)
{
fz_context *ctx = js_getcontext(J);
pdf_obj *obj = js_touserdata(J, 0, "pdf_obj");
- int b = 0;
+ int b;
fz_try(ctx)
b = pdf_is_stream(ctx, obj);
fz_catch(ctx)
@@ -2872,6 +2934,7 @@ int murun_main(int argc, char **argv)
js_newobject(J);
{
jsB_propfun(J, "PDFDocument.getTrailer", ffi_PDFDocument_getTrailer, 0);
+ jsB_propfun(J, "PDFDocument.countObjects", ffi_PDFDocument_countObjects, 0);
jsB_propfun(J, "PDFDocument.addObject", ffi_PDFDocument_addObject, 1);
jsB_propfun(J, "PDFDocument.addStream", ffi_PDFDocument_addStream, 1);
jsB_propfun(J, "PDFDocument.addSimpleFont", ffi_PDFDocument_addSimpleFont, 1);
@@ -2904,6 +2967,10 @@ int murun_main(int argc, char **argv)
jsB_propfun(J, "PDFObject.resolve", ffi_PDFObject_resolve, 0);
jsB_propfun(J, "PDFObject.toString", ffi_PDFObject_toString, 1);
jsB_propfun(J, "PDFObject.valueOf", ffi_PDFObject_valueOf, 0);
+ jsB_propfun(J, "PDFObject.isArray", ffi_PDFObject_isArray, 0);
+ jsB_propfun(J, "PDFObject.isDictionary", ffi_PDFObject_isDictionary, 0);
+ jsB_propfun(J, "PDFObject.isIndirect", ffi_PDFObject_isIndirect, 0);
+ jsB_propfun(J, "PDFObject.toIndirect", ffi_PDFObject_toIndirect, 0);
jsB_propfun(J, "PDFObject.isStream", ffi_PDFObject_isStream, 0);
jsB_propfun(J, "PDFObject.readStream", ffi_PDFObject_readStream, 0);
jsB_propfun(J, "PDFObject.readRawStream", ffi_PDFObject_readRawStream, 0);