summaryrefslogtreecommitdiff
path: root/source/pdf/js
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2014-03-20 16:55:55 +0100
committerRobin Watts <robin.watts@artifex.com>2014-03-25 16:44:44 +0000
commit80292f4511278d6ec3c7b3c0cc8d860f1d9bb8c5 (patch)
tree3e4366e31fa24cca79617164408cefb12a28c42c /source/pdf/js
parent95361b7f10880776f0db3030030842d94ba341a9 (diff)
downloadmupdf-80292f4511278d6ec3c7b3c0cc8d860f1d9bb8c5.tar.xz
Break dependencies on pdf-form.c and pdf-js.c
Split functions out of pdf-form.c that shouldn't be there, and make javascript initialization explicit.
Diffstat (limited to 'source/pdf/js')
-rw-r--r--source/pdf/js/pdf-js-none.c13
-rw-r--r--source/pdf/js/pdf-js.c54
2 files changed, 39 insertions, 28 deletions
diff --git a/source/pdf/js/pdf-js-none.c b/source/pdf/js/pdf-js-none.c
index 00cc5b54..37597b53 100644
--- a/source/pdf/js/pdf-js-none.c
+++ b/source/pdf/js/pdf-js-none.c
@@ -1,16 +1,16 @@
#include "mupdf/pdf.h"
-pdf_js *pdf_new_js(pdf_document *doc)
+void pdf_enable_js(pdf_document *doc)
{
- return NULL;
}
-void pdf_js_load_document_level(pdf_js *js)
+void pdf_disable_js(pdf_document *doc)
{
}
-void pdf_drop_js(pdf_js *js)
+int pdf_js_supported(pdf_document *doc)
{
+ return 0;
}
void pdf_js_setup_event(pdf_js *js, pdf_js_event *e)
@@ -29,8 +29,3 @@ void pdf_js_execute(pdf_js *js, char *code)
void pdf_js_execute_count(pdf_js *js, char *code, int count)
{
}
-
-int pdf_js_supported(void)
-{
- return 0;
-}
diff --git a/source/pdf/js/pdf-js.c b/source/pdf/js/pdf-js.c
index f18da8ac..8364fc95 100644
--- a/source/pdf/js/pdf-js.c
+++ b/source/pdf/js/pdf-js.c
@@ -770,7 +770,22 @@ static void preload_helpers(pdf_js *js)
);
}
-pdf_js *pdf_new_js(pdf_document *doc)
+static void pdf_drop_js(pdf_js *js)
+{
+ if (js)
+ {
+ fz_context *ctx = js->doc->ctx;
+ fz_free(ctx, js->event.value);
+ pdf_jsimp_drop_type(js->imp, js->apptype);
+ pdf_jsimp_drop_type(js->imp, js->eventtype);
+ pdf_jsimp_drop_type(js->imp, js->fieldtype);
+ pdf_jsimp_drop_type(js->imp, js->doctype);
+ pdf_drop_jsimp(js->imp);
+ fz_free(ctx, js);
+ }
+}
+
+static pdf_js *pdf_new_js(pdf_document *doc)
{
fz_context *ctx = doc->ctx;
pdf_js *js = NULL;
@@ -805,7 +820,7 @@ pdf_js *pdf_new_js(pdf_document *doc)
return js;
}
-void pdf_js_load_document_level(pdf_js *js)
+static void pdf_js_load_document_level(pdf_js *js)
{
pdf_document *doc = js->doc;
fz_context *ctx = doc->ctx;
@@ -854,21 +869,6 @@ void pdf_js_load_document_level(pdf_js *js)
}
}
-void pdf_drop_js(pdf_js *js)
-{
- if (js)
- {
- fz_context *ctx = js->doc->ctx;
- fz_free(ctx, js->event.value);
- pdf_jsimp_drop_type(js->imp, js->apptype);
- pdf_jsimp_drop_type(js->imp, js->eventtype);
- pdf_jsimp_drop_type(js->imp, js->fieldtype);
- pdf_jsimp_drop_type(js->imp, js->doctype);
- pdf_drop_jsimp(js->imp);
- fz_free(ctx, js);
- }
-}
-
void pdf_js_setup_event(pdf_js *js, pdf_js_event *e)
{
if (js)
@@ -920,7 +920,23 @@ void pdf_js_execute_count(pdf_js *js, char *code, int count)
}
}
-int pdf_js_supported(void)
+void pdf_enable_js(pdf_document *doc)
+{
+ if (!doc->js) {
+ doc->js = pdf_new_js(doc);
+ doc->drop_js = pdf_drop_js;
+ pdf_js_load_document_level(doc->js);
+ }
+}
+
+void pdf_disable_js(pdf_document *doc)
+{
+ if (doc->js)
+ doc->drop_js(doc->js);
+ doc->js = NULL;
+}
+
+int pdf_js_supported(pdf_document *doc)
{
- return 1;
+ return doc->js != NULL;
}