diff options
author | Tor Andersson <tor.andersson@artifex.com> | 2015-01-21 16:42:45 +0100 |
---|---|---|
committer | Tor Andersson <tor.andersson@artifex.com> | 2015-02-17 18:05:39 +0100 |
commit | f84a189d5f94250e46d2cbd1a75aba00130e2dd6 (patch) | |
tree | 8ee614ab90de1baa8941f91ae4946ed5c2e70721 /platform | |
parent | 681039767f2ccc72e236246178893eb0989169c9 (diff) | |
download | mupdf-f84a189d5f94250e46d2cbd1a75aba00130e2dd6.tar.xz |
Add ctx parameter and remove embedded contexts for API regularity.
Purge several embedded contexts:
Remove embedded context in fz_output.
Remove embedded context in fz_stream.
Remove embedded context in fz_device.
Remove fz_rebind_stream (since it is no longer necessary).
Remove embedded context in svg_device.
Remove embedded context in XML parser.
Add ctx argument to fz_document functions.
Remove embedded context in fz_document.
Remove embedded context in pdf_document.
Remove embedded context in pdf_obj.
Make fz_page independent of fz_document in the interface.
We shouldn't need to pass the document to all functions handling a page.
If a page is tied to the source document, it's redundant; otherwise it's
just pointless.
Fix reference counting oddity in fz_new_image_from_pixmap.
Diffstat (limited to 'platform')
-rw-r--r-- | platform/android/jni/mupdf.c | 298 | ||||
-rw-r--r-- | platform/win32/libmupdf.vcproj | 32 | ||||
-rw-r--r-- | platform/x11/curl_stream.c | 28 | ||||
-rw-r--r-- | platform/x11/pdfapp.c | 132 |
4 files changed, 245 insertions, 245 deletions
diff --git a/platform/android/jni/mupdf.c b/platform/android/jni/mupdf.c index 1486e75a..5e6506be 100644 --- a/platform/android/jni/mupdf.c +++ b/platform/android/jni/mupdf.c @@ -137,7 +137,7 @@ static void drop_page_cache(globals *glo, page_cache *pc) pc->page_list = NULL; fz_drop_display_list(ctx, pc->annot_list); pc->annot_list = NULL; - fz_free_page(doc, pc->page); + fz_free_page(ctx, pc->page); pc->page = NULL; drop_changed_rects(ctx, &pc->changed_rects); drop_changed_rects(ctx, &pc->hq_changed_rects); @@ -180,27 +180,28 @@ static void show_alert(globals *glo, pdf_alert_event *alert) pthread_mutex_unlock(&glo->fin_lock2); } -static void event_cb(pdf_doc_event *event, void *data) +static void event_cb(fz_context *ctx, pdf_document *doc, pdf_doc_event *event, void *data) { globals *glo = (globals *)data; switch (event->type) { case PDF_DOCUMENT_EVENT_ALERT: - show_alert(glo, pdf_access_alert_event(event)); + show_alert(glo, pdf_access_alert_event(ctx, event)); break; } } static void alerts_init(globals *glo) { - pdf_document *idoc = pdf_specifics(glo->doc); + fz_context *ctx = glo->ctx; + pdf_document *idoc = pdf_specifics(ctx, glo->doc); if (!idoc || glo->alerts_initialised) return; if (idoc) - pdf_enable_js(idoc); + pdf_enable_js(ctx, idoc); glo->alerts_active = 0; glo->alert_request = 0; @@ -211,20 +212,21 @@ static void alerts_init(globals *glo) pthread_cond_init(&glo->alert_request_cond, NULL); pthread_cond_init(&glo->alert_reply_cond, NULL); - pdf_set_doc_event_callback(idoc, event_cb, glo); + pdf_set_doc_event_callback(ctx, idoc, event_cb, glo); LOGT("alert_init"); glo->alerts_initialised = 1; } static void alerts_fin(globals *glo) { - pdf_document *idoc = pdf_specifics(glo->doc); + fz_context *ctx = glo->ctx; + pdf_document *idoc = pdf_specifics(ctx, glo->doc); if (!glo->alerts_initialised) return; LOGT("Enter alerts_fin"); if (idoc) - pdf_set_doc_event_callback(idoc, NULL, NULL); + pdf_set_doc_event_callback(ctx, idoc, NULL, NULL); // Set alerts_active false and wake up show_alert and waitForAlertInternal, pthread_mutex_lock(&glo->alert_lock); @@ -330,7 +332,7 @@ JNI_FN(MuPDFCore_openFile)(JNIEnv * env, jobject thiz, jstring jfilename) fz_catch(ctx) { LOGE("Failed: %s", ctx->error->message); - fz_drop_document(glo->doc); + fz_drop_document(ctx, glo->doc); glo->doc = NULL; fz_drop_context(ctx); glo->ctx = NULL; @@ -350,7 +352,7 @@ typedef struct buffer_state_s } buffer_state; -static int bufferStreamNext(fz_stream *stream, int max) +static int bufferStreamNext(fz_context *ctx, fz_stream *stream, int max) { buffer_state *bs = (buffer_state *)stream->state; globals *glo = bs->globals; @@ -382,7 +384,7 @@ static void bufferStreamClose(fz_context *ctx, void *state) fz_free(ctx, state); } -static void bufferStreamSeek(fz_stream *stream, int offset, int whence) +static void bufferStreamSeek(fz_context *ctx, fz_stream *stream, int offset, int whence) { buffer_state *bs = (buffer_state *)stream->state; globals *glo = bs->globals; @@ -459,7 +461,7 @@ JNI_FN(MuPDFCore_openBuffer)(JNIEnv * env, jobject thiz, jstring jmagic) { bs = fz_malloc_struct(ctx, buffer_state); bs->globals = glo; - stream = fz_new_stream(ctx, bs, bufferStreamNext, bufferStreamClose, NULL); + stream = fz_new_stream(ctx, bs, bufferStreamNext, bufferStreamClose); stream->seek = bufferStreamSeek; glo->colorspace = fz_device_rgb(ctx); @@ -479,12 +481,12 @@ JNI_FN(MuPDFCore_openBuffer)(JNIEnv * env, jobject thiz, jstring jmagic) } fz_always(ctx) { - fz_drop_stream(stream); + fz_drop_stream(ctx, stream); } fz_catch(ctx) { LOGE("Failed: %s", ctx->error->message); - fz_drop_document(glo->doc); + fz_drop_document(ctx, glo->doc); glo->doc = NULL; fz_drop_context(ctx); glo->ctx = NULL; @@ -506,7 +508,7 @@ JNI_FN(MuPDFCore_countPagesInternal)(JNIEnv *env, jobject thiz) fz_try(ctx) { - count = fz_count_pages(glo->doc); + count = fz_count_pages(ctx, glo->doc); } fz_catch(ctx) { @@ -520,8 +522,9 @@ JNI_FN(MuPDFCore_fileFormatInternal)(JNIEnv * env, jobject thiz) { char info[64]; globals *glo = get_globals(env, thiz); + fz_context *ctx = glo->ctx; - fz_meta(glo->doc, FZ_META_FORMAT_INFO, info, sizeof(info)); + fz_meta(ctx, glo->doc, FZ_META_FORMAT_INFO, info, sizeof(info)); return (*env)->NewStringUTF(env, info); } @@ -533,11 +536,12 @@ JNI_FN(MuPDFCore_isUnencryptedPDFInternal)(JNIEnv * env, jobject thiz) if (glo == NULL) return JNI_FALSE; - pdf_document *idoc = pdf_specifics(glo->doc); + fz_context *ctx = glo->ctx; + pdf_document *idoc = pdf_specifics(ctx, glo->doc); if (idoc == NULL) return JNI_FALSE; // Not a PDF - int cryptVer = pdf_crypt_version(idoc); + int cryptVer = pdf_crypt_version(ctx, idoc); return (cryptVer == 0) ? JNI_TRUE : JNI_FALSE; } @@ -600,9 +604,9 @@ JNI_FN(MuPDFCore_gotoPageInternal)(JNIEnv *env, jobject thiz, int page) { fz_rect rect; LOGI("Load page %d", pc->number); - pc->page = fz_load_page(glo->doc, pc->number); + pc->page = fz_load_page(ctx, glo->doc, pc->number); zoom = glo->resolution / 72; - fz_bound_page(glo->doc, pc->page, &pc->media_box); + fz_bound_page(ctx, pc->page, &pc->media_box); fz_scale(&ctm, zoom, zoom); rect = pc->media_box; fz_round_rect(&bbox, fz_transform_rect(&rect, &ctm)); @@ -635,25 +639,27 @@ JNIEXPORT jboolean JNICALL JNI_FN(MuPDFCore_javascriptSupported)(JNIEnv *env, jobject thiz) { globals *glo = get_globals(env, thiz); - pdf_document *idoc = pdf_specifics(glo->doc); - return pdf_js_supported(idoc); + fz_context *ctx = glo->ctx; + pdf_document *idoc = pdf_specifics(ctx, glo->doc); + return pdf_js_supported(ctx, idoc); } static void update_changed_rects(globals *glo, page_cache *pc, pdf_document *idoc) { + fz_context *ctx = glo->ctx; fz_annot *annot; - pdf_update_page(idoc, (pdf_page *)pc->page); - while ((annot = (fz_annot *)pdf_poll_changed_annot(idoc, (pdf_page *)pc->page)) != NULL) + pdf_update_page(ctx, idoc, (pdf_page *)pc->page); + while ((annot = (fz_annot *)pdf_poll_changed_annot(ctx, idoc, (pdf_page *)pc->page)) != NULL) { /* FIXME: We bound the annot twice here */ rect_node *node = fz_malloc_struct(glo->ctx, rect_node); - fz_bound_annot(glo->doc, annot, &node->rect); + fz_bound_annot(ctx, pc->page, annot, &node->rect); node->next = pc->changed_rects; pc->changed_rects = node; node = fz_malloc_struct(glo->ctx, rect_node); - fz_bound_annot(glo->doc, annot, &node->rect); + fz_bound_annot(ctx, pc->page, annot, &node->rect); node->next = pc->hq_changed_rects; pc->hq_changed_rects = node; } @@ -712,7 +718,7 @@ JNI_FN(MuPDFCore_drawPage)(JNIEnv *env, jobject thiz, jobject bitmap, fz_try(ctx) { fz_irect pixbbox; - pdf_document *idoc = pdf_specifics(doc); + pdf_document *idoc = pdf_specifics(ctx, doc); if (idoc) { @@ -729,8 +735,8 @@ JNI_FN(MuPDFCore_drawPage)(JNIEnv *env, jobject thiz, jobject bitmap, /* Render to list */ pc->page_list = fz_new_display_list(ctx); dev = fz_new_list_device(ctx, pc->page_list); - fz_run_page_contents(doc, pc->page, dev, &fz_identity, cookie); - fz_drop_device(dev); + fz_run_page_contents(ctx, pc->page, dev, &fz_identity, cookie); + fz_drop_device(ctx, dev); dev = NULL; if (cookie != NULL && cookie->abort) { @@ -744,9 +750,9 @@ JNI_FN(MuPDFCore_drawPage)(JNIEnv *env, jobject thiz, jobject bitmap, fz_annot *annot; pc->annot_list = fz_new_display_list(ctx); dev = fz_new_list_device(ctx, pc->annot_list); - for (annot = fz_first_annot(doc, pc->page); annot; annot = fz_next_annot(doc, annot)) - fz_run_annot(doc, pc->page, annot, dev, &fz_identity, cookie); - fz_drop_device(dev); + for (annot = fz_first_annot(ctx, pc->page); annot; annot = fz_next_annot(ctx, pc->page, annot)) + fz_run_annot(ctx, pc->page, annot, dev, &fz_identity, cookie); + fz_drop_device(ctx, dev); dev = NULL; if (cookie != NULL && cookie->abort) { @@ -793,12 +799,12 @@ JNI_FN(MuPDFCore_drawPage)(JNIEnv *env, jobject thiz, jobject bitmap, for (i=0; i<100;i++) { #endif if (pc->page_list) - fz_run_display_list(pc->page_list, dev, &ctm, &rect, cookie); + fz_run_display_list(ctx, pc->page_list, dev, &ctm, &rect, cookie); if (cookie != NULL && cookie->abort) fz_throw(ctx, FZ_ERROR_GENERIC, "Render aborted"); if (pc->annot_list) - fz_run_display_list(pc->annot_list, dev, &ctm, &rect, cookie); + fz_run_display_list(ctx, pc->annot_list, dev, &ctm, &rect, cookie); if (cookie != NULL && cookie->abort) fz_throw(ctx, FZ_ERROR_GENERIC, "Render aborted"); @@ -808,14 +814,14 @@ JNI_FN(MuPDFCore_drawPage)(JNIEnv *env, jobject thiz, jobject bitmap, LOGI("100 renders in %d (%d per sec)", time, CLOCKS_PER_SEC); } #endif - fz_drop_device(dev); + fz_drop_device(ctx, dev); dev = NULL; fz_drop_pixmap(ctx, pix); LOGI("Rendered"); } fz_always(ctx) { - fz_drop_device(dev); + fz_drop_device(ctx, dev); dev = NULL; } fz_catch(ctx) @@ -884,7 +890,7 @@ JNI_FN(MuPDFCore_updatePageInternal)(JNIEnv *env, jobject thiz, jobject bitmap, return JNI_FN(MuPDFCore_drawPage)(env, thiz, bitmap, pageW, pageH, patchX, patchY, patchW, patchH, (jlong)(intptr_t)cookie); } - idoc = pdf_specifics(doc); + idoc = pdf_specifics(ctx, doc); fz_var(pix); fz_var(dev); @@ -927,8 +933,8 @@ JNI_FN(MuPDFCore_updatePageInternal)(JNIEnv *env, jobject thiz, jobject bitmap, /* Render to list */ pc->page_list = fz_new_display_list(ctx); dev = fz_new_list_device(ctx, pc->page_list); - fz_run_page_contents(doc, pc->page, dev, &fz_identity, cookie); - fz_drop_device(dev); + fz_run_page_contents(ctx, pc->page, dev, &fz_identity, cookie); + fz_drop_device(ctx, dev); dev = NULL; if (cookie != NULL && cookie->abort) { @@ -941,9 +947,9 @@ JNI_FN(MuPDFCore_updatePageInternal)(JNIEnv *env, jobject thiz, jobject bitmap, if (pc->annot_list == NULL) { pc->annot_list = fz_new_display_list(ctx); dev = fz_new_list_device(ctx, pc->annot_list); - for (annot = fz_first_annot(doc, pc->page); annot; annot = fz_next_annot(doc, annot)) - fz_run_annot(doc, pc->page, annot, dev, &fz_identity, cookie); - fz_drop_device(dev); + for (annot = fz_first_annot(ctx, pc->page); annot; annot = fz_next_annot(ctx, pc->page, annot)) + fz_run_annot(ctx, pc->page, annot, dev, &fz_identity, cookie); + fz_drop_device(ctx, dev); dev = NULL; if (cookie != NULL && cookie->abort) { @@ -990,16 +996,16 @@ JNI_FN(MuPDFCore_updatePageInternal)(JNIEnv *env, jobject thiz, jobject bitmap, fz_clear_pixmap_rect_with_value(ctx, pix, 0xff, &abox); dev = fz_new_draw_device_with_bbox(ctx, pix, &abox); if (pc->page_list) - fz_run_display_list(pc->page_list, dev, &ctm, &arect, cookie); + fz_run_display_list(ctx, pc->page_list, dev, &ctm, &arect, cookie); if (cookie != NULL && cookie->abort) fz_throw(ctx, FZ_ERROR_GENERIC, "Render aborted"); if (pc->annot_list) - fz_run_display_list(pc->annot_list, dev, &ctm, &arect, cookie); + fz_run_display_list(ctx, pc->annot_list, dev, &ctm, &arect, cookie); if (cookie != NULL && cookie->abort) fz_throw(ctx, FZ_ERROR_GENERIC, "Render aborted"); - fz_drop_device(dev); + fz_drop_device(ctx, dev); dev = NULL; } } @@ -1012,7 +1018,7 @@ JNI_FN(MuPDFCore_updatePageInternal)(JNIEnv *env, jobject thiz, jobject bitmap, } fz_always(ctx) { - fz_drop_device(dev); + fz_drop_device(ctx, dev); dev = NULL; } fz_catch(ctx) @@ -1027,17 +1033,17 @@ JNI_FN(MuPDFCore_updatePageInternal)(JNIEnv *env, jobject thiz, jobject bitmap, } static int -charat(fz_text_page *page, int idx) +charat(fz_context *ctx, fz_text_page *page, int idx) { fz_char_and_box cab; - return fz_text_char_at(&cab, page, idx)->c; + return fz_text_char_at(ctx, &cab, page, idx)->c; } static fz_rect -bboxcharat(fz_text_page *page, int idx) +bboxcharat(fz_context *ctx, fz_text_page *page, int idx) { fz_char_and_box cab; - return fz_text_char_at(&cab, page, idx)->bbox; + return fz_text_char_at(ctx, &cab, page, idx)->bbox; } static int @@ -1120,8 +1126,9 @@ JNIEXPORT jboolean JNICALL JNI_FN(MuPDFCore_needsPasswordInternal)(JNIEnv * env, jobject thiz) { globals *glo = get_globals(env, thiz); + fz_context *ctx = glo->ctx; - return fz_needs_password(glo->doc) ? JNI_TRUE : JNI_FALSE; + return fz_needs_password(ctx, glo->doc) ? JNI_TRUE : JNI_FALSE; } JNIEXPORT jboolean JNICALL @@ -1130,12 +1137,13 @@ JNI_FN(MuPDFCore_authenticatePasswordInternal)(JNIEnv *env, jobject thiz, jstrin const char *pw; int result; globals *glo = get_globals(env, thiz); + fz_context *ctx = glo->ctx; pw = (*env)->GetStringUTFChars(env, password, NULL); if (pw == NULL) return JNI_FALSE; - result = fz_authenticate_password(glo->doc, (char *)pw); + result = fz_authenticate_password(ctx, glo->doc, (char *)pw); (*env)->ReleaseStringUTFChars(env, password, pw); return result; } @@ -1144,7 +1152,8 @@ JNIEXPORT jboolean JNICALL JNI_FN(MuPDFCore_hasOutlineInternal)(JNIEnv * env, jobject thiz) { globals *glo = get_globals(env, thiz); - fz_outline *outline = fz_load_outline(glo->doc); + fz_context *ctx = glo->ctx; + fz_outline *outline = fz_load_outline(ctx, glo->doc); fz_drop_outline(glo->ctx, outline); return (outline == NULL) ? JNI_FALSE : JNI_TRUE; @@ -1160,6 +1169,7 @@ JNI_FN(MuPDFCore_getOutlineInternal)(JNIEnv * env, jobject thiz) fz_outline *outline; int nItems; globals *glo = get_globals(env, thiz); + fz_context *ctx = glo->ctx; jobjectArray ret; olClass = (*env)->FindClass(env, PACKAGENAME "/OutlineItem"); @@ -1167,7 +1177,7 @@ JNI_FN(MuPDFCore_getOutlineInternal)(JNIEnv * env, jobject thiz) ctor = (*env)->GetMethodID(env, olClass, "<init>", "(ILjava/lang/String;I)V"); if (ctor == NULL) return NULL; - outline = fz_load_outline(glo->doc); + outline = fz_load_outline(ctx, glo->doc); nItems = countOutlineItems(outline); arr = (*env)->NewObjectArray(env, @@ -1226,8 +1236,8 @@ JNI_FN(MuPDFCore_searchPage)(JNIEnv * env, jobject thiz, jstring jtext) sheet = fz_new_text_sheet(ctx); text = fz_new_text_page(ctx); dev = fz_new_text_device(ctx, sheet, text); - fz_run_page(doc, pc->page, dev, &ctm, NULL); - fz_drop_device(dev); + fz_run_page(ctx, pc->page, dev, &ctm, NULL); + fz_drop_device(ctx, dev); dev = NULL; hit_count = fz_search_text_page(ctx, text, str, glo->hit_bbox, MAX_SEARCH_HITS); @@ -1236,7 +1246,7 @@ JNI_FN(MuPDFCore_searchPage)(JNIEnv * env, jobject thiz, jstring jtext) { fz_drop_text_page(ctx, text); fz_drop_text_sheet(ctx, sheet); - fz_drop_device(dev); + fz_drop_device(ctx, dev); } fz_catch(ctx) { @@ -1316,8 +1326,8 @@ JNI_FN(MuPDFCore_text)(JNIEnv * env, jobject thiz) sheet = fz_new_text_sheet(ctx); text = fz_new_text_page(ctx); dev = fz_new_text_device(ctx, sheet, text); - fz_run_page(doc, pc->page, dev, &ctm, NULL); - fz_drop_device(dev); + fz_run_page(ctx, pc->page, dev, &ctm, NULL); + fz_drop_device(ctx, dev); dev = NULL; barr = (*env)->NewObjectArray(env, text->len, textBlockClass, NULL); @@ -1356,7 +1366,7 @@ JNI_FN(MuPDFCore_text)(JNIEnv * env, jobject thiz) { fz_text_char *ch = &span->text[c]; fz_rect bbox; - fz_text_char_bbox(&bbox, span, c); + fz_text_char_bbox(ctx, &bbox, span, c); jobject cobj = (*env)->NewObject(env, textCharClass, ctor, bbox.x0, bbox.y0, bbox.x1, bbox.y1, ch->c); if (cobj == NULL) fz_throw(ctx, FZ_ERROR_GENERIC, "NewObjectfailed"); @@ -1380,7 +1390,7 @@ JNI_FN(MuPDFCore_text)(JNIEnv * env, jobject thiz) { fz_drop_text_page(ctx, text); fz_drop_text_sheet(ctx, sheet); - fz_drop_device(dev); + fz_drop_device(ctx, dev); } fz_catch(ctx) { @@ -1424,31 +1434,31 @@ JNI_FN(MuPDFCore_textAsHtml)(JNIEnv * env, jobject thiz) sheet = fz_new_text_sheet(ctx); text = fz_new_text_page(ctx); dev = fz_new_text_device(ctx, sheet, text); - fz_run_page(doc, pc->page, dev, &ctm, NULL); - fz_drop_device(dev); + fz_run_page(ctx, pc->page, dev, &ctm, NULL); + fz_drop_device(ctx, dev); dev = NULL; fz_analyze_text(ctx, sheet, text); buf = fz_new_buffer(ctx, 256); out = fz_new_output_with_buffer(ctx, buf); - fz_printf(out, "<html>\n"); - fz_printf(out, "<style>\n"); - fz_printf(out, "body{margin:0;}\n"); - fz_printf(out, "div.page{background-color:white;}\n"); - fz_printf(out, "div.block{margin:0pt;padding:0pt;}\n"); - fz_printf(out, "div.metaline{display:table;width:100%%}\n"); - fz_printf(out, "div.line{display:table-row;}\n"); - fz_printf(out, "div.cell{display:table-cell;padding-left:0.25em;padding-right:0.25em}\n"); - //fz_printf(out, "p{margin:0;padding:0;}\n"); - fz_printf(out, "</style>\n"); - fz_printf(out, "<body style=\"margin:0\"><div style=\"padding:10px\" id=\"content\">"); + fz_printf(ctx, out, "<html>\n"); + fz_printf(ctx, out, "<style>\n"); + fz_printf(ctx, out, "body{margin:0;}\n"); + fz_printf(ctx, out, "div.page{background-color:white;}\n"); + fz_printf(ctx, out, "div.block{margin:0pt;padding:0pt;}\n"); + fz_printf(ctx, out, "div.metaline{display:table;width:100%%}\n"); + fz_printf(ctx, out, "div.line{display:table-row;}\n"); + fz_printf(ctx, out, "div.cell{display:table-cell;padding-left:0.25em;padding-right:0.25em}\n"); + //fz_printf(ctx, out, "p{margin:0;padding:0;}\n"); + fz_printf(ctx, out, "</style>\n"); + fz_printf(ctx, out, "<body style=\"margin:0\"><div style=\"padding:10px\" id=\"content\">"); fz_print_text_page_html(ctx, out, text); - fz_printf(out, "</div></body>\n"); - fz_printf(out, "<style>\n"); + fz_printf(ctx, out, "</div></body>\n"); + fz_printf(ctx, out, "<style>\n"); fz_print_text_sheet(ctx, out, sheet); - fz_printf(out, "</style>\n</html>\n"); - fz_drop_output(out); + fz_printf(ctx, out, "</style>\n</html>\n"); + fz_drop_output(ctx, out); out = NULL; bArray = (*env)->NewByteArray(env, buf->len); @@ -1461,8 +1471,8 @@ JNI_FN(MuPDFCore_textAsHtml)(JNIEnv * env, jobject thiz) { fz_drop_text_page(ctx, text); fz_drop_text_sheet(ctx, sheet); - fz_drop_device(dev); - fz_drop_output(out); + fz_drop_device(ctx, dev); + fz_drop_output(ctx, out); fz_drop_buffer(ctx, buf); } fz_catch(ctx) @@ -1484,7 +1494,7 @@ JNI_FN(MuPDFCore_addMarkupAnnotationInternal)(JNIEnv * env, jobject thiz, jobjec globals *glo = get_globals(env, thiz); fz_context *ctx = glo->ctx; fz_document *doc = glo->doc; - pdf_document *idoc = pdf_specifics(doc); + pdf_document *idoc = pdf_specifics(ctx, doc); page_cache *pc = &glo->pages[glo->current]; jclass pt_cls; jfieldID x_fid, y_fid; @@ -1556,10 +1566,10 @@ JNI_FN(MuPDFCore_addMarkupAnnotationInternal)(JNIEnv * env, jobject thiz, jobjec fz_transform_point(&pts[i], &ctm); } - annot = (fz_annot *)pdf_create_annot(idoc, (pdf_page *)pc->page, type); + annot = (fz_annot *)pdf_create_annot(ctx, idoc, (pdf_page *)pc->page, type); - pdf_set_markup_annot_quadpoints(idoc, (pdf_annot *)annot, pts, n); - pdf_set_markup_appearance(idoc, (pdf_annot *)annot, color, alpha, line_thickness, line_height); + pdf_set_markup_annot_quadpoints(ctx, idoc, (pdf_annot *)annot, pts, n); + pdf_set_markup_appearance(ctx, idoc, (pdf_annot *)annot, color, alpha, line_thickness, line_height); dump_annotation_display_lists(glo); } @@ -1583,7 +1593,7 @@ JNI_FN(MuPDFCore_addInkAnnotationInternal)(JNIEnv * env, jobject thiz, jobjectAr globals *glo = get_globals(env, thiz); fz_context *ctx = glo->ctx; fz_document *doc = glo->doc; - pdf_document *idoc = pdf_specifics(doc); + pdf_document *idoc = pdf_specifics(ctx, doc); page_cache *pc = &glo->pages[glo->current]; jclass pt_cls; jfieldID x_fid, y_fid; @@ -1651,9 +1661,9 @@ JNI_FN(MuPDFCore_addInkAnnotationInternal)(JNIEnv * env, jobject thiz, jobjectAr (*env)->DeleteLocalRef(env, arc); } - annot = (fz_annot *)pdf_create_annot(idoc, (pdf_page *)pc->page, FZ_ANNOT_INK); + annot = (fz_annot *)pdf_create_annot(ctx, idoc, (pdf_page *)pc->page, FZ_ANNOT_INK); - pdf_set_ink_annot_list(idoc, (pdf_annot *)annot, pts, counts, n, color, INK_THICKNESS); + pdf_set_ink_annot_list(ctx, idoc, (pdf_annot *)annot, pts, counts, n, color, INK_THICKNESS); dump_annotation_display_lists(glo); } @@ -1678,7 +1688,7 @@ JNI_FN(MuPDFCore_deleteAnnotationInternal)(JNIEnv * env, jobject thiz, int annot globals *glo = get_globals(env, thiz); fz_context *ctx = glo->ctx; fz_document *doc = glo->doc; - pdf_document *idoc = pdf_specifics(doc); + pdf_document *idoc = pdf_specifics(ctx, doc); page_cache *pc = &glo->pages[glo->current]; fz_annot *annot; int i; @@ -1688,13 +1698,13 @@ JNI_FN(MuPDFCore_deleteAnnotationInternal)(JNIEnv * env, jobject thiz, int annot fz_try(ctx) { - annot = fz_first_annot(glo->doc, pc->page); + annot = fz_first_annot(ctx, pc->page); for (i = 0; i < annot_index && annot; i++) - annot = fz_next_annot(glo->doc, annot); + annot = fz_next_annot(ctx, pc->page, annot); if (annot) { - pdf_delete_annot(idoc, (pdf_page *)pc->page, (pdf_annot *)annot); + pdf_delete_annot(ctx, idoc, (pdf_page *)pc->page, (pdf_annot *)annot); dump_annotation_display_lists(glo); } } @@ -1718,7 +1728,7 @@ static void close_doc(globals *glo) alerts_fin(glo); - fz_drop_document(glo->doc); + fz_drop_document(glo->ctx, glo->doc); glo->doc = NULL; } @@ -1795,7 +1805,7 @@ JNI_FN(MuPDFCore_getPageLinksInternal)(JNIEnv * env, jobject thiz, int pageNumbe zoom = glo->resolution / 72; fz_scale(&ctm, zoom, zoom); - list = fz_load_links(glo->doc, pc->page); + list = fz_load_links(glo->ctx, pc->page); count = 0; for (link = list; link; link = link->next) { @@ -1883,6 +1893,7 @@ JNI_FN(MuPDFCore_getWidgetAreasInternal)(JNIEnv * env, jobject thiz, int pageNum globals *glo = get_globals(env, thiz); if (glo == NULL) return NULL; + fz_context *ctx = glo->ctx; rectFClass = (*env)->FindClass(env, "android/graphics/RectF"); if (rectFClass == NULL) return NULL; @@ -1894,7 +1905,7 @@ JNI_FN(MuPDFCore_getWidgetAreasInternal)(JNIEnv * env, jobject thiz, int pageNum if (pc->number != pageNumber || pc->page == NULL) return NULL; - idoc = pdf_specifics(glo->doc); + idoc = pdf_specifics(ctx, glo->doc); if (idoc == NULL) return NULL; @@ -1902,17 +1913,17 @@ JNI_FN(MuPDFCore_getWidgetAreasInternal)(JNIEnv * env, jobject thiz, int pageNum fz_scale(&ctm, zoom, zoom); count = 0; - for (widget = pdf_first_widget(idoc, (pdf_page *)pc->page); widget; widget = pdf_next_widget(widget)) + for (widget = pdf_first_widget(ctx, idoc, (pdf_page *)pc->page); widget; widget = pdf_next_widget(ctx, widget)) count ++; arr = (*env)->NewObjectArray(env, count, rectFClass, NULL); if (arr == NULL) return NULL; count = 0; - for (widget = pdf_first_widget(idoc, (pdf_page *)pc->page); widget; widget = pdf_next_widget(widget)) + for (widget = pdf_first_widget(ctx, idoc, (pdf_page *)pc->page); widget; widget = pdf_next_widget(ctx, widget)) { fz_rect rect; - pdf_bound_widget(widget, &rect); + pdf_bound_widget(ctx, widget, &rect); fz_transform_rect(&rect, &ctm); rectF = (*env)->NewObject(env, rectFClass, ctor, @@ -1942,6 +1953,7 @@ JNI_FN(MuPDFCore_getAnnotationsInternal)(JNIEnv * env, jobject thiz, int pageNum globals *glo = get_globals(env, thiz); if (glo == NULL) return NULL; + fz_context *ctx = glo->ctx; annotClass = (*env)->FindClass(env, PACKAGENAME "/Annotation"); if (annotClass == NULL) return NULL; @@ -1957,18 +1969,18 @@ JNI_FN(MuPDFCore_getAnnotationsInternal)(JNIEnv * env, jobject thiz, int pageNum fz_scale(&ctm, zoom, zoom); count = 0; - for (annot = fz_first_annot(glo->doc, pc->page); annot; annot = fz_next_annot(glo->doc, annot)) + for (annot = fz_first_annot(ctx, pc->page); annot; annot = fz_next_annot(ctx, pc->page, annot)) count ++; arr = (*env)->NewObjectArray(env, count, annotClass, NULL); if (arr == NULL) return NULL; count = 0; - for (annot = fz_first_annot(glo->doc, pc->page); annot; annot = fz_next_annot(glo->doc, annot)) + for (annot = fz_first_annot(ctx, pc->page); annot; annot = fz_next_annot(ctx, pc->page, annot)) { fz_rect rect; - fz_annot_type type = pdf_annot_type((pdf_annot *)annot); - fz_bound_annot(glo->doc, annot, &rect); + fz_annot_type type = pdf_annot_type(ctx, (pdf_annot *)annot); + fz_bound_annot(ctx, pc->page, annot, &rect); fz_transform_rect(&rect, &ctm); jannot = (*env)->NewObject(env, annotClass, ctor, @@ -1989,7 +2001,7 @@ JNI_FN(MuPDFCore_passClickEventInternal)(JNIEnv * env, jobject thiz, int pageNum globals *glo = get_globals(env, thiz); fz_context *ctx = glo->ctx; fz_matrix ctm; - pdf_document *idoc = pdf_specifics(glo->doc); + pdf_document *idoc = pdf_specifics(ctx, glo->doc); float zoom; fz_point p; pdf_ui_event event; @@ -2021,9 +2033,9 @@ JNI_FN(MuPDFCore_passClickEventInternal)(JNIEnv * env, jobject thiz, int pageNum event.etype = PDF_EVENT_TYPE_POINTER; event.event.pointer.pt = p; event.event.pointer.ptype = PDF_POINTER_DOWN; - changed = pdf_pass_event(idoc, (pdf_page *)pc->page, &event); + changed = pdf_pass_event(ctx, idoc, (pdf_page *)pc->page, &event); event.event.pointer.ptype = PDF_POINTER_UP; - changed |= pdf_pass_event(idoc, (pdf_page *)pc->page, &event); + changed |= pdf_pass_event(ctx, idoc, (pdf_page *)pc->page, &event); if (changed) { dump_annotation_display_lists(glo); } @@ -2045,14 +2057,14 @@ JNI_FN(MuPDFCore_getFocusedWidgetTextInternal)(JNIEnv * env, jobject thiz) fz_try(ctx) { - pdf_document *idoc = pdf_specifics(glo->doc); + pdf_document *idoc = pdf_specifics(ctx, glo->doc); if (idoc) { - pdf_widget *focus = pdf_focused_widget(idoc); + pdf_widget *focus = pdf_focused_widget(ctx, idoc); if (focus) - text = pdf_text_widget_text(idoc, focus); + text = pdf_text_widget_text(ctx, idoc, focus); } } fz_catch(ctx) @@ -2080,15 +2092,15 @@ JNI_FN(MuPDFCore_setFocusedWidgetTextInternal)(JNIEnv * env, jobject thiz, jstri fz_try(ctx) { - pdf_document *idoc = pdf_specifics(glo->doc); + pdf_document *idoc = pdf_specifics(ctx, glo->doc); if (idoc) { - pdf_widget *focus = pdf_focused_widget(idoc); + pdf_widget *focus = pdf_focused_widget(ctx, idoc); if (focus) { - result = pdf_text_widget_set_text(idoc, focus, (char *)text); + result = pdf_text_widget_set_text(ctx, idoc, focus, (char *)text); dump_annotation_display_lists(glo); } } @@ -2108,7 +2120,7 @@ JNI_FN(MuPDFCore_getFocusedWidgetChoiceOptions)(JNIEnv * env, jobject thiz) { globals *glo = get_globals(env, thiz); fz_context *ctx = glo->ctx; - pdf_document *idoc = pdf_specifics(glo->doc); + pdf_document *idoc = pdf_specifics(ctx, glo->doc); pdf_widget *focus; int type; int nopts, i; @@ -2119,20 +2131,20 @@ JNI_FN(MuPDFCore_getFocusedWidgetChoiceOptions)(JNIEnv * env, jobject thiz) if (idoc == NULL) return NULL; - focus = pdf_focused_widget(idoc); + focus = pdf_focused_widget(ctx, idoc); if (focus == NULL) return NULL; - type = pdf_widget_get_type(focus); + type = pdf_widget_get_type(ctx, focus); if (type != PDF_WIDGET_TYPE_LISTBOX && type != PDF_WIDGET_TYPE_COMBOBOX) return NULL; fz_var(opts); fz_try(ctx) { - nopts = pdf_choice_widget_options(idoc, focus, NULL); + nopts = pdf_choice_widget_options(ctx, idoc, focus, NULL); opts = fz_malloc(ctx, nopts * sizeof(*opts)); - (void)pdf_choice_widget_options(idoc, focus, opts); + (void)pdf_choice_widget_options(ctx, idoc, focus, opts); } fz_catch(ctx) { @@ -2164,7 +2176,7 @@ JNI_FN(MuPDFCore_getFocusedWidgetChoiceSelected)(JNIEnv * env, jobject thiz) { globals *glo = get_globals(env, thiz); fz_context *ctx = glo->ctx; - pdf_document *idoc = pdf_specifics(glo->doc); + pdf_document *idoc = pdf_specifics(ctx, glo->doc); pdf_widget *focus; int type; int nsel, i; @@ -2175,20 +2187,20 @@ JNI_FN(MuPDFCore_getFocusedWidgetChoiceSelected)(JNIEnv * env, jobject thiz) if (idoc == NULL) return NULL; - focus = pdf_focused_widget(idoc); + focus = pdf_focused_widget(ctx, idoc); if (focus == NULL) return NULL; - type = pdf_widget_get_type(focus); + type = pdf_widget_get_type(ctx, focus); if (type != PDF_WIDGET_TYPE_LISTBOX && type != PDF_WIDGET_TYPE_COMBOBOX) return NULL; fz_var(sel); fz_try(ctx) { - nsel = pdf_choice_widget_value(idoc, focus, NULL); + nsel = pdf_choice_widget_value(ctx, idoc, focus, NULL); sel = fz_malloc(ctx, nsel * sizeof(*sel)); - (void)pdf_choice_widget_value(idoc, focus, sel); + (void)pdf_choice_widget_value(ctx, idoc, focus, sel); } fz_catch(ctx) { @@ -2220,7 +2232,7 @@ JNI_FN(MuPDFCore_setFocusedWidgetChoiceSelectedInternal)(JNIEnv * env, jobject t { globals *glo = get_globals(env, thiz); fz_context *ctx = glo->ctx; - pdf_document *idoc = pdf_specifics(glo->doc); + pdf_document *idoc = pdf_specifics(ctx, glo->doc); pdf_widget *focus; int type; int nsel, i; @@ -2230,11 +2242,11 @@ JNI_FN(MuPDFCore_setFocusedWidgetChoiceSelectedInternal)(JNIEnv * env, jobject t if (idoc == NULL) return; - focus = pdf_focused_widget(idoc); + focus = pdf_focused_widget(ctx, idoc); if (focus == NULL) return; - type = pdf_widget_get_type(focus); + type = pdf_widget_get_type(ctx, focus); if (type != PDF_WIDGET_TYPE_LISTBOX && type != PDF_WIDGET_TYPE_COMBOBOX) return; @@ -2258,7 +2270,7 @@ JNI_FN(MuPDFCore_setFocusedWidgetChoiceSelectedInternal)(JNIEnv * env, jobject t fz_try(ctx) { - pdf_choice_widget_set_value(idoc, focus, nsel, sel); + pdf_choice_widget_set_value(ctx, idoc, focus, nsel, sel); dump_annotation_display_lists(glo); } fz_catch(ctx) @@ -2277,18 +2289,19 @@ JNIEXPORT int JNICALL JNI_FN(MuPDFCore_getFocusedWidgetTypeInternal)(JNIEnv * env, jobject thiz) { globals *glo = get_globals(env, thiz); - pdf_document *idoc = pdf_specifics(glo->doc); + fz_context *ctx = glo->ctx; + pdf_document *idoc = pdf_specifics(ctx, glo->doc); pdf_widget *focus; - if (idoc == NULL) + if (ctx, idoc == NULL) return NONE; - focus = pdf_focused_widget(idoc); + focus = pdf_focused_widget(ctx, idoc); if (focus == NULL) return NONE; - switch (pdf_widget_get_type(focus)) + switch (pdf_widget_get_type(ctx, focus)) { case PDF_WIDGET_TYPE_TEXT: return TEXT; case PDF_WIDGET_TYPE_LISTBOX: return LISTBOX; @@ -2311,13 +2324,14 @@ JNIEXPORT int JNICALL JNI_FN(MuPDFCore_getFocusedWidgetSignatureState)(JNIEnv * env, jobject thiz) { globals *glo = get_globals(env, thiz); - pdf_document *idoc = pdf_specifics(glo->doc); + fz_context *ctx = glo->ctx; + pdf_document *idoc = pdf_specifics(ctx, glo->doc); pdf_widget *focus; - if (idoc == NULL) + if (ctx, idoc == NULL) return Signature_NoSupport; - focus = pdf_focused_widget(idoc); + focus = pdf_focused_widget(ctx, idoc); if (focus == NULL) return Signature_NoSupport; @@ -2325,26 +2339,27 @@ JNI_FN(MuPDFCore_getFocusedWidgetSignatureState)(JNIEnv * env, jobject thiz) if (!pdf_signatures_supported()) return Signature_NoSupport; - return pdf_dict_gets(((pdf_annot *)focus)->obj, "V") ? Signature_Signed : Signature_Unsigned; + return pdf_dict_gets(ctx, ((pdf_annot *)focus)->obj, "V") ? Signature_Signed : Signature_Unsigned; } JNIEXPORT jstring JNICALL JNI_FN(MuPDFCore_checkFocusedSignatureInternal)(JNIEnv * env, jobject thiz) { globals *glo = get_globals(env, thiz); - pdf_document *idoc = pdf_specifics(glo->doc); + fz_context *ctx = glo->ctx; + pdf_document *idoc = pdf_specifics(ctx, glo->doc); pdf_widget *focus; char ebuf[256] = "Failed"; if (idoc == NULL) goto exit; - focus = pdf_focused_widget(idoc); + focus = pdf_focused_widget(ctx, idoc); if (focus == NULL) goto exit; - if (pdf_check_signature(idoc, focus, glo->current_path, ebuf, sizeof(ebuf))) + if (pdf_check_signature(ctx, idoc, focus, glo->current_path, ebuf, sizeof(ebuf))) { strcpy(ebuf, "Signature is valid"); } @@ -2358,7 +2373,7 @@ JNI_FN(MuPDFCore_signFocusedSignatureInternal)(JNIEnv * env, jobject thiz, jstri { globals *glo = get_globals(env, thiz); fz_context *ctx = glo->ctx; - pdf_document *idoc = pdf_specifics(glo->doc); + pdf_document *idoc = pdf_specifics(ctx, glo->doc); pdf_widget *focus; const char *keyfile; const char *password; @@ -2367,7 +2382,7 @@ JNI_FN(MuPDFCore_signFocusedSignatureInternal)(JNIEnv * env, jobject thiz, jstri if (idoc == NULL) return JNI_FALSE; - focus = pdf_focused_widget(idoc); + focus = pdf_focused_widget(ctx, idoc); if (focus == NULL) return JNI_FALSE; @@ -2380,7 +2395,7 @@ JNI_FN(MuPDFCore_signFocusedSignatureInternal)(JNIEnv * env, jobject thiz, jstri fz_var(res); fz_try(ctx) { - pdf_sign_signature(idoc, focus, keyfile, password); + pdf_sign_signature(ctx, idoc, focus, keyfile, password); dump_annotation_display_lists(glo); res = JNI_TRUE; } @@ -2521,9 +2536,10 @@ JNIEXPORT jboolean JNICALL JNI_FN(MuPDFCore_hasChangesInternal)(JNIEnv * env, jobject thiz) { globals *glo = get_globals(env, thiz); - pdf_document *idoc = pdf_specifics(glo->doc); + fz_context *ctx = glo->ctx; + pdf_document *idoc = pdf_specifics(ctx, glo->doc); - return (idoc && pdf_has_unsaved_changes(idoc)) ? JNI_TRUE : JNI_FALSE; + return (idoc && pdf_has_unsaved_changes(ctx, idoc)) ? JNI_TRUE : JNI_FALSE; } static char *tmp_path(char *path) @@ -2593,7 +2609,7 @@ JNI_FN(MuPDFCore_saveInternal)(JNIEnv * env, jobject thiz) if (!err) { - fz_write_document(glo->doc, tmp, &opts); + fz_write_document(ctx, glo->doc, tmp, &opts); written = 1; } } diff --git a/platform/win32/libmupdf.vcproj b/platform/win32/libmupdf.vcproj index 438be2b1..2ef2d5c9 100644 --- a/platform/win32/libmupdf.vcproj +++ b/platform/win32/libmupdf.vcproj @@ -337,6 +337,14 @@ RelativePath="..\..\source\cbz\mucbz.c" > </File> + <File + RelativePath="..\..\source\cbz\muimg.c" + > + </File> + <File + RelativePath="..\..\source\cbz\mutiff.c" + > + </File> </Filter> <Filter Name="xps" @@ -723,14 +731,6 @@ </File> </Filter> <Filter - Name="img" - > - <File - RelativePath="..\..\source\img\muimage.c" - > - </File> - </Filter> - <Filter Name="pdf" > <File @@ -938,18 +938,10 @@ Name="!include" > <File - RelativePath="..\..\include\mupdf\cbz.h" - > - </File> - <File RelativePath="..\..\include\mupdf\fitz.h" > </File> <File - RelativePath="..\..\include\mupdf\img.h" - > - </File> - <File RelativePath="..\..\include\mupdf\memento.h" > </File> @@ -1202,14 +1194,6 @@ </File> </Filter> </Filter> - <Filter - Name="tiff" - > - <File - RelativePath="..\..\source\tiff\mutiff.c" - > - </File> - </Filter> </Files> <Globals> </Globals> diff --git a/platform/x11/curl_stream.c b/platform/x11/curl_stream.c index 9b806b79..07464d27 100644 --- a/platform/x11/curl_stream.c +++ b/platform/x11/curl_stream.c @@ -317,7 +317,7 @@ fetcher_thread(curl_stream_state *state) } static int -stream_next(fz_stream *stream, int len) +stream_next(fz_context *ctx, fz_stream *stream, int len) { curl_stream_state *state = (curl_stream_state *)stream->state; int len_read = 0; @@ -327,13 +327,13 @@ stream_next(fz_stream *stream, int len) unsigned char *buf = state->public_buffer; if (state->error != NULL) - fz_throw(stream->ctx, FZ_ERROR_GENERIC, "cannot fetch data: %s", state->error); + fz_throw(ctx, FZ_ERROR_GENERIC, "cannot fetch data: %s", state->error); if (len > sizeof(state->public_buffer)) len = sizeof(state->public_buffer); if (state->content_length == 0) - fz_throw(stream->ctx, FZ_ERROR_TRYLATER, "read of a block we don't have (A) (offset=%d)", read_point); + fz_throw(ctx, FZ_ERROR_TRYLATER, "read of a block we don't have (A) (offset=%d)", read_point); if (state->map == NULL) { @@ -342,7 +342,7 @@ stream_next(fz_stream *stream, int len) if (read_point + len > state->current_fill_point) { stream->rp = stream->wp; - fz_throw(stream->ctx, FZ_ERROR_TRYLATER, "read of a block we don't have (B) (offset=%d)", read_point); + fz_throw(ctx, FZ_ERROR_TRYLATER, "read of a block we don't have (B) (offset=%d)", read_point); } memcpy(buf, state->buffer + read_point, len); stream->rp = buf; @@ -367,7 +367,7 @@ stream_next(fz_stream *stream, int len) state->fill_point = block; unlock(state); stream->rp = stream->wp; - fz_throw(stream->ctx, FZ_ERROR_TRYLATER, "read of a block we don't have (C) (offset=%d)", read_point); + fz_throw(ctx, FZ_ERROR_TRYLATER, "read of a block we don't have (C) (offset=%d)", read_point); } block++; if (left_over > len) @@ -388,7 +388,7 @@ stream_next(fz_stream *stream, int len) state->fill_point = block; unlock(state); stream->rp = stream->wp; - fz_throw(stream->ctx, FZ_ERROR_TRYLATER, "read of a block we don't have (D) (offset=%d)", read_point); + fz_throw(ctx, FZ_ERROR_TRYLATER, "read of a block we don't have (D) (offset=%d)", read_point); } block++; memcpy(buf, state->buffer + read_point, BLOCK_SIZE); @@ -407,7 +407,7 @@ stream_next(fz_stream *stream, int len) state->fill_point = block; unlock(state); stream->rp = stream->wp; - fz_throw(stream->ctx, FZ_ERROR_TRYLATER, "read of a block we don't have (E) (offset=%d)", read_point); + fz_throw(ctx, FZ_ERROR_TRYLATER, "read of a block we don't have (E) (offset=%d)", read_point); } memcpy(buf, state->buffer + read_point, len); len_read += len; @@ -441,9 +441,9 @@ stream_close(fz_context *ctx, void *state_) pthread_mutex_destroy(&state->mutex); #endif - fz_free(state->ctx, state->buffer); - fz_free(state->ctx, state->map); - fz_free(state->ctx, state); + fz_free(ctx, state->buffer); + fz_free(ctx, state->map); + fz_free(ctx, state); } static fz_stream hack_stream; @@ -451,7 +451,7 @@ static curl_stream_state hack; static int hack_pos; static void -stream_seek(fz_stream *stream, int offset, int whence) +stream_seek(fz_context *ctx, fz_stream *stream, int offset, int whence) { curl_stream_state *state = (curl_stream_state *)stream->state; @@ -479,7 +479,7 @@ stream_seek(fz_stream *stream, int offset, int whence) } static int -stream_meta(fz_stream *stream, int key, int size, void *ptr) +stream_meta(fz_context *ctx, fz_stream *stream, int key, int size, void *ptr) { curl_stream_state *state = (curl_stream_state *)stream->state; @@ -487,7 +487,7 @@ stream_meta(fz_stream *stream, int key, int size, void *ptr) { case FZ_STREAM_META_LENGTH: if (!state->data_arrived) - fz_throw(stream->ctx, FZ_ERROR_TRYLATER, "still awaiting file length"); + fz_throw(ctx, FZ_ERROR_TRYLATER, "still awaiting file length"); return state->content_length; case FZ_STREAM_META_PROGRESSIVE: return 1; @@ -540,7 +540,7 @@ fz_stream *fz_stream_from_curl(fz_context *ctx, char *filename, void (*more_data #endif - stream = fz_new_stream(ctx, state, stream_next, stream_close, NULL); + stream = fz_new_stream(ctx, state, stream_next, stream_close); stream->seek = stream_seek; stream->meta = stream_meta; return stream; diff --git a/platform/x11/pdfapp.c b/platform/x11/pdfapp.c index b950fec5..90e10f83 100644 --- a/platform/x11/pdfapp.c +++ b/platform/x11/pdfapp.c @@ -130,10 +130,10 @@ void pdfapp_init(fz_context *ctx, pdfapp_t *app) void pdfapp_invert(pdfapp_t *app, const fz_rect *rect) { fz_irect b; - fz_invert_pixmap_rect(app->image, fz_round_rect(&b, rect)); + fz_invert_pixmap_rect(app->ctx, app->image, fz_round_rect(&b, rect)); } -static void event_cb(pdf_doc_event *event, void *data) +static void event_cb(fz_context *ctx, pdf_document *doc, pdf_doc_event *event, void *data) { pdfapp_t *app = (pdfapp_t *)data; @@ -141,7 +141,7 @@ static void event_cb(pdf_doc_event *event, void *data) { case PDF_DOCUMENT_EVENT_ALERT: { - pdf_alert_event *alert = pdf_access_alert_event(event); + pdf_alert_event *alert = pdf_access_alert_event(ctx, event); winalert(app, alert); } break; @@ -152,7 +152,7 @@ static void event_cb(pdf_doc_event *event, void *data) case PDF_DOCUMENT_EVENT_EXEC_MENU_ITEM: { - char *item = pdf_access_exec_menu_item_event(event); + char *item = pdf_access_exec_menu_item_event(ctx, event); if (!strcmp(item, "Print")) winprint(app); @@ -167,7 +167,7 @@ static void event_cb(pdf_doc_event *event, void *data) case PDF_DOCUMENT_EVENT_LAUNCH_URL: { - pdf_launch_url_event *launch_url = pdf_access_launch_url_event(event); + pdf_launch_url_event *launch_url = pdf_access_launch_url_event(ctx, event); pdfapp_warn(app, "The document attempted to open url: %s. (Not supported by app)", launch_url->url); } @@ -175,7 +175,7 @@ static void event_cb(pdf_doc_event *event, void *data) case PDF_DOCUMENT_EVENT_MAIL_DOC: { - pdf_mail_doc_event *mail_doc = pdf_access_mail_doc_event(event); + pdf_mail_doc_event *mail_doc = pdf_access_mail_doc_event(ctx, event); pdfapp_warn(app, "The document attmepted to mail the document%s%s%s%s%s%s%s%s (Not supported)", mail_doc->to[0]?", To: ":"", mail_doc->to, @@ -227,7 +227,7 @@ void pdfapp_open_progressive(pdfapp_t *app, char *filename, int reload, int bps) { fz_try(ctx) { - fz_seek(app->stream, 0, SEEK_SET); + fz_seek(ctx, app->stream, 0, SEEK_SET); app->doc = fz_open_document_with_stream(ctx, filename, app->stream); } fz_catch(ctx) @@ -255,7 +255,7 @@ void pdfapp_open_progressive(pdfapp_t *app, char *filename, int reload, int bps) { fz_try(ctx) { - fz_seek(stream, 0, SEEK_SET); + fz_seek(ctx, stream, 0, SEEK_SET); app->doc = fz_open_document_with_stream(ctx, filename, stream); } fz_catch(ctx) @@ -271,23 +271,23 @@ void pdfapp_open_progressive(pdfapp_t *app, char *filename, int reload, int bps) } } - idoc = pdf_specifics(app->doc); + idoc = pdf_specifics(app->ctx, app->doc); if (idoc) { - pdf_enable_js(idoc); - pdf_set_doc_event_callback(idoc, event_cb, app); + pdf_enable_js(ctx, idoc); + pdf_set_doc_event_callback(ctx, idoc, event_cb, app); } - if (fz_needs_password(app->doc)) + if (fz_needs_password(app->ctx, app->doc)) { - int okay = fz_authenticate_password(app->doc, password); + int okay = fz_authenticate_password(app->ctx, app->doc, password); while (!okay) { password = winpassword(app, filename); if (!password) fz_throw(ctx, FZ_ERROR_GENERIC, "Needs a password"); - okay = fz_authenticate_password(app->doc, password); + okay = fz_authenticate_password(app->ctx, app->doc, password); if (!okay) pdfapp_warn(app, "Invalid password."); } @@ -305,7 +305,7 @@ void pdfapp_open_progressive(pdfapp_t *app, char *filename, int reload, int bps) { fz_try(ctx) { - app->pagecount = fz_count_pages(app->doc); + app->pagecount = fz_count_pages(app->ctx, app->doc); if (app->pagecount <= 0) fz_throw(ctx, FZ_ERROR_GENERIC, "No pages in document"); } @@ -324,7 +324,7 @@ void pdfapp_open_progressive(pdfapp_t *app, char *filename, int reload, int bps) { fz_try(ctx) { - app->outline = fz_load_outline(app->doc); + app->outline = fz_load_outline(app->ctx, app->doc); } fz_catch(ctx) { @@ -398,14 +398,14 @@ void pdfapp_close(pdfapp_t *app) fz_drop_outline(app->ctx, app->outline); app->outline = NULL; - fz_free_page(app->doc, app->page); + fz_drop_page(app->ctx, app->page); app->page = NULL; - fz_drop_document(app->doc); + fz_drop_document(app->ctx, app->doc); app->doc = NULL; #ifdef HAVE_CURL - fz_drop_stream(app->stream); + fz_drop_stream(app->ctx, app->stream); #endif fz_flush_warnings(app->ctx); @@ -454,7 +454,7 @@ static int pdfapp_save(pdfapp_t *app) if (strcmp(buf, app->docpath) != 0) { wincopyfile(app->docpath, buf); - fz_write_document(app->doc, buf, &opts); + fz_write_document(app->ctx, app->doc, buf, &opts); return 1; } @@ -465,7 +465,7 @@ static int pdfapp_save(pdfapp_t *app) fz_try(app->ctx) { wincopyfile(app->docpath, buf); - fz_write_document(app->doc, buf, &opts); + fz_write_document(app->ctx, app->doc, buf, &opts); written = 1; } fz_catch(app->ctx) @@ -490,9 +490,9 @@ static int pdfapp_save(pdfapp_t *app) int pdfapp_preclose(pdfapp_t *app) { - pdf_document *idoc = pdf_specifics(app->doc); + pdf_document *idoc = pdf_specifics(app->ctx, app->doc); - if (idoc && pdf_has_unsaved_changes(idoc)) + if (idoc && pdf_has_unsaved_changes(app->ctx, idoc)) { switch (winsavequery(app)) { @@ -555,7 +555,7 @@ static void pdfapp_loadpage(pdfapp_t *app, int no_cache) fz_drop_text_page(app->ctx, app->page_text); fz_drop_text_sheet(app->ctx, app->page_sheet); fz_drop_link(app->ctx, app->page_links); - fz_free_page(app->doc, app->page); + fz_drop_page(app->ctx, app->page); app->page_list = NULL; app->annotations_list = NULL; @@ -572,9 +572,9 @@ static void pdfapp_loadpage(pdfapp_t *app, int no_cache) fz_try(app->ctx) { - app->page = fz_load_page(app->doc, app->pageno - 1); + app->page = fz_load_page(app->ctx, app->doc, app->pageno - 1); - fz_bound_page(app->doc, app->page, &app->page_bbox); + fz_bound_page(app->ctx, app->page, &app->page_bbox); } fz_catch(app->ctx) { @@ -592,15 +592,15 @@ static void pdfapp_loadpage(pdfapp_t *app, int no_cache) app->page_list = fz_new_display_list(app->ctx); mdev = fz_new_list_device(app->ctx, app->page_list); if (no_cache) - fz_enable_device_hints(mdev, FZ_NO_CACHE); + fz_enable_device_hints(app->ctx, mdev, FZ_NO_CACHE); cookie.incomplete_ok = 1; - fz_run_page_contents(app->doc, app->page, mdev, &fz_identity, &cookie); - fz_drop_device(mdev); + fz_run_page_contents(app->ctx, app->page, mdev, &fz_identity, &cookie); + fz_drop_device(app->ctx, mdev); mdev = NULL; app->annotations_list = fz_new_display_list(app->ctx); mdev = fz_new_list_device(app->ctx, app->annotations_list); - for (annot = fz_first_annot(app->doc, app->page); annot; annot = fz_next_annot(app->doc, annot)) - fz_run_annot(app->doc, app->page, annot, mdev, &fz_identity, &cookie); + for (annot = fz_first_annot(app->ctx, app->page); annot; annot = fz_next_annot(app->ctx, app->page, annot)) + fz_run_annot(app->ctx, app->page, annot, mdev, &fz_identity, &cookie); if (cookie.incomplete) { app->incomplete = 1; @@ -614,7 +614,7 @@ static void pdfapp_loadpage(pdfapp_t *app, int no_cache) } fz_always(app->ctx) { - fz_drop_device(mdev); + fz_drop_device(app->ctx, mdev); } fz_catch(app->ctx) { @@ -629,7 +629,7 @@ static void pdfapp_loadpage(pdfapp_t *app, int no_cache) fz_try(app->ctx) { - app->page_links = fz_load_links(app->doc, app->page); + app->page_links = fz_load_links(app->ctx, app->page); } fz_catch(app->ctx) { @@ -659,8 +659,8 @@ static void pdfapp_recreate_annotationslist(pdfapp_t *app) /* Create display list */ app->annotations_list = fz_new_display_list(app->ctx); mdev = fz_new_list_device(app->ctx, app->annotations_list); - for (annot = fz_first_annot(app->doc, app->page); annot; annot = fz_next_annot(app->doc, annot)) - fz_run_annot(app->doc, app->page, annot, mdev, &fz_identity, &cookie); + for (annot = fz_first_annot(app->ctx, app->page); annot; annot = fz_next_annot(app->ctx, app->page, annot)) + fz_run_annot(app->ctx, app->page, annot, mdev, &fz_identity, &cookie); if (cookie.incomplete) { app->incomplete = 1; @@ -674,7 +674,7 @@ static void pdfapp_recreate_annotationslist(pdfapp_t *app) } fz_always(app->ctx) { - fz_drop_device(mdev); + fz_drop_device(app->ctx, mdev); } fz_catch(app->ctx) { @@ -687,37 +687,37 @@ static void pdfapp_recreate_annotationslist(pdfapp_t *app) static void pdfapp_runpage(pdfapp_t *app, fz_device *dev, const fz_matrix *ctm, const fz_rect *rect, fz_cookie *cookie) { - fz_begin_page(dev, rect, ctm); + fz_begin_page(app->ctx, dev, rect, ctm); if (app->page_list) - fz_run_display_list(app->page_list, dev, ctm, rect, cookie); + fz_run_display_list(app->ctx, app->page_list, dev, ctm, rect, cookie); if (app->annotations_list) - fz_run_display_list(app->annotations_list, dev, ctm, rect, cookie); - fz_end_page(dev); + fz_run_display_list(app->ctx, app->annotations_list, dev, ctm, rect, cookie); + fz_end_page(app->ctx, dev); } #define MAX_TITLE 256 static void pdfapp_updatepage(pdfapp_t *app) { - pdf_document *idoc = pdf_specifics(app->doc); + pdf_document *idoc = pdf_specifics(app->ctx, app->doc); fz_device *idev; fz_matrix ctm; fz_annot *annot; pdfapp_viewctm(&ctm, app); - pdf_update_page(idoc, (pdf_page *)app->page); + pdf_update_page(app->ctx, idoc, (pdf_page *)app->page); pdfapp_recreate_annotationslist(app); - while ((annot = (fz_annot *)pdf_poll_changed_annot(idoc, (pdf_page *)app->page)) != NULL) + while ((annot = (fz_annot *)pdf_poll_changed_annot(app->ctx, idoc, (pdf_page *)app->page)) != NULL) { fz_rect bounds; fz_irect ibounds; - fz_transform_rect(fz_bound_annot(app->doc, annot, &bounds), &ctm); + fz_transform_rect(fz_bound_annot(app->ctx, app->page, annot, &bounds), &ctm); fz_rect_from_irect(&bounds, fz_round_rect(&ibounds, &bounds)); fz_clear_pixmap_rect_with_value(app->ctx, app->image, 255, &ibounds); idev = fz_new_draw_device_with_bbox(app->ctx, app->image, &ibounds); pdfapp_runpage(app, idev, &ctm, &bounds, NULL); - fz_drop_device(idev); + fz_drop_device(app->ctx, idev); } pdfapp_showpage(app, 0, 0, 1, 0, 0); @@ -729,7 +729,7 @@ void pdfapp_reloadpage(pdfapp_t *app) { fz_try(app->ctx) { - app->outline = fz_load_outline(app->doc); + app->outline = fz_load_outline(app->ctx, app->doc); } fz_catch(app->ctx) { @@ -778,7 +778,7 @@ static void pdfapp_showpage(pdfapp_t *app, int loadpage, int drawpage, int repai { tdev = fz_new_text_device(app->ctx, app->page_sheet, app->page_text); pdfapp_runpage(app, tdev, &fz_identity, &fz_infinite_rect, &cookie); - fz_drop_device(tdev); + fz_drop_device(app->ctx, tdev); } } @@ -819,7 +819,7 @@ static void pdfapp_showpage(pdfapp_t *app, int loadpage, int drawpage, int repai { idev = fz_new_draw_device(app->ctx, app->image); pdfapp_runpage(app, idev, &ctm, &bounds, &cookie); - fz_drop_device(idev); + fz_drop_device(app->ctx, idev); } if (app->invert) fz_invert_pixmap(app->ctx, app->image); @@ -838,12 +838,12 @@ static void pdfapp_showpage(pdfapp_t *app, int loadpage, int drawpage, int repai colorspace = app->colorspace; app->image = fz_new_pixmap_with_bbox(app->ctx, colorspace, &ibounds); app->duration = 0; - new_trans = fz_page_presentation(app->doc, app->page, &app->duration); + new_trans = fz_page_presentation(app->ctx, app->page, &app->duration); if (new_trans) app->transition = *new_trans; if (app->duration == 0) app->duration = 5; - app->in_transit = fz_generate_transition(app->image, app->old_image, app->new_image, 0, &app->transition); + app->in_transit = fz_generate_transition(app->ctx, app->image, app->old_image, app->new_image, 0, &app->transition); if (!app->in_transit) { if (app->duration != 0) @@ -1411,7 +1411,7 @@ void pdfapp_onmouse(pdfapp_t *app, int x, int y, int btn, int modifiers, int sta if (btn == 1 && (state == 1 || state == -1)) { pdf_ui_event event; - pdf_document *idoc = pdf_specifics(app->doc); + pdf_document *idoc = pdf_specifics(app->ctx, app->doc); event.etype = PDF_EVENT_TYPE_POINTER; event.event.pointer.pt = p; @@ -1420,22 +1420,22 @@ void pdfapp_onmouse(pdfapp_t *app, int x, int y, int btn, int modifiers, int sta else /* state == -1 */ event.event.pointer.ptype = PDF_POINTER_UP; - if (idoc && pdf_pass_event(idoc, (pdf_page *)app->page, &event)) + if (idoc && pdf_pass_event(ctx, idoc, (pdf_page *)app->page, &event)) { pdf_widget *widget; - widget = pdf_focused_widget(idoc); + widget = pdf_focused_widget(ctx, idoc); app->nowaitcursor = 1; pdfapp_updatepage(app); if (widget) { - switch (pdf_widget_get_type(widget)) + switch (pdf_widget_get_type(ctx, widget)) { case PDF_WIDGET_TYPE_TEXT: { - char *text = pdf_text_widget_text(idoc, widget); + char *text = pdf_text_widget_text(ctx, idoc, widget); char *current_text = text; int retry = 0; @@ -1444,7 +1444,7 @@ void pdfapp_onmouse(pdfapp_t *app, int x, int y, int btn, int modifiers, int sta current_text = wintextinput(app, current_text, retry); retry = 1; } - while (current_text && !pdf_text_widget_set_text(idoc, widget, current_text)); + while (current_text && !pdf_text_widget_set_text(ctx, idoc, widget, current_text)); fz_free(app->ctx, text); pdfapp_updatepage(app); @@ -1464,17 +1464,17 @@ void pdfapp_onmouse(pdfapp_t *app, int x, int y, int btn, int modifiers, int sta fz_try(ctx) { - nopts = pdf_choice_widget_options(idoc, widget, NULL); + nopts = pdf_choice_widget_options(ctx, idoc, widget, NULL); opts = fz_malloc(ctx, nopts * sizeof(*opts)); - (void)pdf_choice_widget_options(idoc, widget, opts); + (void)pdf_choice_widget_options(ctx, idoc, widget, opts); - nvals = pdf_choice_widget_value(idoc, widget, NULL); + nvals = pdf_choice_widget_value(ctx, idoc, widget, NULL); vals = fz_malloc(ctx, MAX(nvals,nopts) * sizeof(*vals)); - (void)pdf_choice_widget_value(idoc, widget, vals); + (void)pdf_choice_widget_value(ctx, idoc, widget, vals); if (winchoiceinput(app, nopts, opts, &nvals, vals)) { - pdf_choice_widget_set_value(idoc, widget, nvals, vals); + pdf_choice_widget_set_value(ctx, idoc, widget, nvals, vals); pdfapp_updatepage(app); } } @@ -1495,7 +1495,7 @@ void pdfapp_onmouse(pdfapp_t *app, int x, int y, int btn, int modifiers, int sta char ebuf[256]; ebuf[0] = 0; - if (pdf_check_signature(idoc, widget, app->docpath, ebuf, sizeof(ebuf))) + if (pdf_check_signature(ctx, idoc, widget, app->docpath, ebuf, sizeof(ebuf))) { winwarn(app, "Signature is valid"); } @@ -1538,10 +1538,10 @@ void pdfapp_onmouse(pdfapp_t *app, int x, int y, int btn, int modifiers, int sta else { fz_annot *annot; - for (annot = fz_first_annot(app->doc, app->page); annot; annot = fz_next_annot(app->doc, annot)) + for (annot = fz_first_annot(app->ctx, app->page); annot; annot = fz_next_annot(app->ctx, app->page, annot)) { fz_rect rect; - fz_bound_annot(app->doc, annot, &rect); + fz_bound_annot(app->ctx, app->page, annot, &rect); if (x >= rect.x0 && x < rect.x1) if (y >= rect.y0 && y < rect.y1) break; @@ -1729,7 +1729,7 @@ void pdfapp_oncopy(pdfapp_t *app, unsigned short *ucsbuf, int ucslen) { for (i = 0; i < span->len; i++) { - fz_text_char_bbox(&hitbox, span, i); + fz_text_char_bbox(app->ctx, &hitbox, span, i); fz_transform_rect(&hitbox, &ctm); c = span->text[i].c; if (c < 32) @@ -1787,7 +1787,7 @@ void pdfapp_postblit(pdfapp_t *app) winadvancetimer(app, app->duration); } else - fz_generate_transition(app->image, app->old_image, app->new_image, llama, &app->transition); + fz_generate_transition(app->ctx, app->image, app->old_image, app->new_image, llama, &app->transition); winrepaint(app); if (llama >= 256) { |