diff options
Diffstat (limited to 'source/pdf/js')
-rw-r--r-- | source/pdf/js/pdf-js-none.c | 13 | ||||
-rw-r--r-- | source/pdf/js/pdf-js.c | 54 |
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; } |