diff options
Diffstat (limited to 'platform')
-rw-r--r-- | platform/gl/gl-annotate.c | 66 | ||||
-rw-r--r-- | platform/gl/gl-font.c | 2 | ||||
-rw-r--r-- | platform/gl/gl-input.c | 2 | ||||
-rw-r--r-- | platform/gl/gl-main.c | 54 | ||||
-rw-r--r-- | platform/gl/gl-ui.c | 2 | ||||
-rw-r--r-- | platform/java/mupdf_native.c | 69 | ||||
-rw-r--r-- | platform/java/mupdf_native.h | 4 | ||||
-rw-r--r-- | platform/java/src/com/artifex/mupdf/fitz/DisplayList.java | 6 | ||||
-rw-r--r-- | platform/x11/pdfapp.c | 53 |
9 files changed, 121 insertions, 137 deletions
diff --git a/platform/gl/gl-annotate.c b/platform/gl/gl-annotate.c index 92458824..dca7519a 100644 --- a/platform/gl/gl-annotate.c +++ b/platform/gl/gl-annotate.c @@ -115,7 +115,7 @@ static void new_annot(int type) case PDF_ANNOT_SOUND: { fz_rect icon_rect = { 12, 12, 12+20, 12+20 }; - pdf_set_annot_rect(ctx, selected_annot, &icon_rect); + pdf_set_annot_rect(ctx, selected_annot, icon_rect); pdf_set_annot_color(ctx, selected_annot, 3, yellow); } break; @@ -123,7 +123,7 @@ static void new_annot(int type) case PDF_ANNOT_FREE_TEXT: { fz_rect text_rect = { 12, 12, 12+200, 12+100 }; - pdf_set_annot_rect(ctx, selected_annot, &text_rect); + pdf_set_annot_rect(ctx, selected_annot, text_rect); pdf_set_annot_border(ctx, selected_annot, 0); pdf_set_annot_default_appearance(ctx, selected_annot, "Helv", 12, black); } @@ -132,7 +132,7 @@ static void new_annot(int type) case PDF_ANNOT_STAMP: { fz_rect stamp_rect = { 12, 12, 12+190, 12+50 }; - pdf_set_annot_rect(ctx, selected_annot, &stamp_rect); + pdf_set_annot_rect(ctx, selected_annot, stamp_rect); pdf_set_annot_color(ctx, selected_annot, 3, red); } break; @@ -140,7 +140,7 @@ static void new_annot(int type) case PDF_ANNOT_CARET: { fz_rect caret_rect = { 12, 12, 12+18, 12+15 }; - pdf_set_annot_rect(ctx, selected_annot, &caret_rect); + pdf_set_annot_rect(ctx, selected_annot, caret_rect); pdf_set_annot_color(ctx, selected_annot, 3, blue); } break; @@ -158,7 +158,7 @@ static void new_annot(int type) case PDF_ANNOT_CIRCLE: { fz_rect shape_rect = { 12, 12, 12+100, 12+50 }; - pdf_set_annot_rect(ctx, selected_annot, &shape_rect); + pdf_set_annot_rect(ctx, selected_annot, shape_rect); pdf_set_annot_border(ctx, selected_annot, 1); pdf_set_annot_color(ctx, selected_annot, 3, red); } @@ -553,8 +553,8 @@ void do_annotate_panel(void) /* common annotation properties */ - pdf_annot_rect(ctx, selected_annot, &rect); - fz_irect_from_rect(&irect, &rect); + rect = pdf_annot_rect(ctx, selected_annot); + irect = fz_irect_from_rect(rect); ui_label("Rect: %d %d %d %d", irect.x0, irect.y0, irect.x1, irect.y1); do_annotate_flags(); @@ -778,9 +778,8 @@ static void do_edit_icon(fz_irect canvas_area, fz_irect area, fz_rect *rect) moving = 0; if (fz_abs(start_pt.x - rect->x0) > 0.1f || fz_abs(start_pt.x - rect->y0) > 0.1f) { - fz_rect trect = *rect; - fz_transform_rect(&trect, &view_page_inv_ctm); - pdf_set_annot_rect(ctx, selected_annot, &trect); + fz_rect trect = fz_transform_rect(*rect, view_page_inv_ctm); + pdf_set_annot_rect(ctx, selected_annot, trect); } } } @@ -800,7 +799,7 @@ static void do_edit_rect(fz_irect canvas_area, fz_irect area, fz_rect *rect) static fz_rect start_rect; static int state = ER_NONE; - fz_expand_irect(&area, 5); + area = fz_expand_irect(area, 5); if (ui_mouse_inside(&canvas_area) && ui_mouse_inside(&area)) { ui.hot = selected_annot; @@ -839,9 +838,8 @@ static void do_edit_rect(fz_irect canvas_area, fz_irect area, fz_rect *rect) state = ER_NONE; if (rects_differ(&start_rect, rect, 1)) { - fz_rect trect = *rect; - fz_transform_rect(&trect, &view_page_inv_ctm); - pdf_set_annot_rect(ctx, selected_annot, &trect); + fz_rect trect = fz_transform_rect(*rect, view_page_inv_ctm); + pdf_set_annot_rect(ctx, selected_annot, trect); } } } @@ -856,7 +854,7 @@ static void do_edit_line(fz_irect canvas_area, fz_irect area, fz_rect *rect) fz_point a, b; float lw; - fz_expand_irect(&area, 5); + area = fz_expand_irect(area, 5); if (ui_mouse_inside(&canvas_area) && ui_mouse_inside(&area)) { ui.hot = selected_annot; @@ -864,12 +862,12 @@ static void do_edit_line(fz_irect canvas_area, fz_irect area, fz_rect *rect) { ui.active = selected_annot; pdf_annot_line(ctx, selected_annot, &start_a, &start_b); - fz_transform_point(&start_a, &view_page_ctm); - fz_transform_point(&start_b, &view_page_ctm); + start_a = fz_transform_point(start_a, view_page_ctm); + start_b = fz_transform_point(start_b, view_page_ctm); a_grab = fz_make_irect(start_a.x, start_a.y, start_a.x, start_a.y); b_grab = fz_make_irect(start_b.x, start_b.y, start_b.x, start_b.y); - fz_expand_irect(&a_grab, 10); - fz_expand_irect(&b_grab, 10); + a_grab = fz_expand_irect(a_grab, 10); + b_grab = fz_expand_irect(b_grab, 10); state = EL_NONE; if (ui_mouse_inside(&a_grab)) state |= EL_A; if (ui_mouse_inside(&b_grab)) state |= EL_B; @@ -895,7 +893,7 @@ static void do_edit_line(fz_irect canvas_area, fz_irect area, fz_rect *rect) rect->x1 = fz_max(a.x, b.x); rect->y1 = fz_max(a.y, b.y); lw = pdf_annot_border(ctx, selected_annot); - fz_expand_rect(rect, fz_matrix_expansion(&view_page_ctm) * lw); + *rect = fz_expand_rect(*rect, fz_matrix_expansion(view_page_ctm) * lw); /* cancel on right click */ if (ui.right) @@ -907,8 +905,8 @@ static void do_edit_line(fz_irect canvas_area, fz_irect area, fz_rect *rect) state = EL_NONE; if (points_differ(&start_a, &a, 1) || points_differ(&start_b, &b, 1)) { - fz_transform_point(&a, &view_page_inv_ctm); - fz_transform_point(&b, &view_page_inv_ctm); + a = fz_transform_point(a, view_page_inv_ctm); + b = fz_transform_point(b, view_page_inv_ctm); pdf_set_annot_line(ctx, selected_annot, a, b); } } @@ -938,11 +936,11 @@ static void do_edit_polygon(fz_irect canvas_area, int close) if (n > 0) { p = pdf_annot_vertex(ctx, selected_annot, n-1); - fz_transform_point(&p, &view_page_ctm); + p = fz_transform_point(p, view_page_ctm); if (close) { a = pdf_annot_vertex(ctx, selected_annot, 0); - fz_transform_point(&a, &view_page_ctm); + a = fz_transform_point(a, view_page_ctm); } glBegin(GL_LINE_STRIP); glColor4f(1, 0, 0, 1); @@ -966,8 +964,7 @@ static void do_edit_polygon(fz_irect canvas_area, int close) /* commit point on mouse-up */ if (!ui.down) { - fz_point p = { ui.x, ui.y }; - fz_transform_point(&p, &view_page_inv_ctm); + fz_point p = fz_transform_point_xy(ui.x, ui.y, view_page_inv_ctm); pdf_add_annot_vertex(ctx, selected_annot, p); drawing = 0; } @@ -1029,7 +1026,7 @@ static void do_edit_ink(fz_irect canvas_area) if (n > 1) { for (i = 0; i < n; ++i) - fz_transform_point(&p[i], &view_page_inv_ctm); + p[i] = fz_transform_point(p[i], view_page_inv_ctm); pdf_add_annot_ink_list(ctx, selected_annot, n, p); } drawing = 0; @@ -1064,8 +1061,8 @@ static void do_edit_quad_points(void) fz_point page_a = { pt.x, pt.y }; fz_point page_b = { ui.x, ui.y }; - fz_transform_point(&page_a, &view_page_inv_ctm); - fz_transform_point(&page_b, &view_page_inv_ctm); + page_a = fz_transform_point(page_a, view_page_inv_ctm); + page_b = fz_transform_point(page_b, view_page_inv_ctm); n = fz_highlight_selection(ctx, page_text, page_a, page_b, hits, nelem(hits)); @@ -1076,8 +1073,7 @@ static void do_edit_quad_points(void) glBegin(GL_QUADS); for (i = 0; i < n; ++i) { - fz_quad thit = hits[i]; - fz_transform_quad(&thit, &view_page_ctm); + fz_quad thit = fz_transform_quad(hits[i], view_page_ctm); glVertex2f(thit.ul.x, thit.ul.y); glVertex2f(thit.ur.x, thit.ur.y); glVertex2f(thit.lr.x, thit.lr.y); @@ -1114,9 +1110,9 @@ void do_annotate_canvas(fz_irect canvas_area) for (annot = pdf_first_annot(ctx, page); annot; annot = pdf_next_annot(ctx, annot)) { - pdf_bound_annot(ctx, annot, &bounds); - fz_transform_rect(&bounds, &view_page_ctm); - fz_irect_from_rect(&area, &bounds); + bounds = pdf_bound_annot(ctx, annot); + bounds = fz_transform_rect(bounds, view_page_ctm); + area = fz_irect_from_rect(bounds); if (ui_mouse_inside(&canvas_area) && ui_mouse_inside(&area)) { @@ -1189,7 +1185,7 @@ void do_annotate_canvas(fz_irect canvas_area) glEnable(GL_BLEND); glColor4f(1, 1, 1, 1); glBegin(GL_LINE_LOOP); - fz_irect_from_rect(&area, &bounds); + area = fz_irect_from_rect(bounds); glVertex2f(area.x0-0.5f, area.y0-0.5f); glVertex2f(area.x1+0.5f, area.y0-0.5f); glVertex2f(area.x1+0.5f, area.y1+0.5f); diff --git a/platform/gl/gl-font.c b/platform/gl/gl-font.c index 08dd773a..8a331b3e 100644 --- a/platform/gl/gl-font.c +++ b/platform/gl/gl-font.c @@ -137,7 +137,7 @@ static struct glyph *lookup_glyph(fz_font *font, int gid, float *xp, float *yp) int w, h; /* match fitz's glyph cache quantization */ - fz_scale(&trm, g_font_size, -g_font_size); + trm = fz_scale(g_font_size, -g_font_size); trm.e = *xp; trm.f = *yp; fz_subpixel_adjust(ctx, &trm, &subpix_trm, &subx, &suby); diff --git a/platform/gl/gl-input.c b/platform/gl/gl-input.c index 56fcf74d..c3898f50 100644 --- a/platform/gl/gl-input.c +++ b/platform/gl/gl-input.c @@ -409,7 +409,7 @@ int ui_input(struct input *input, int width, int height) area = ui_pack(width, ui.lineheight * height + 6); ui_draw_bevel_rect(area, UI_COLOR_TEXT_BG, 1); - fz_expand_irect(&area, -2); + area = fz_expand_irect(area, -2); if (height > 1) area.x1 -= ui.lineheight; diff --git a/platform/gl/gl-main.c b/platform/gl/gl-main.c index 899dc4ec..5b26a48f 100644 --- a/platform/gl/gl-main.c +++ b/platform/gl/gl-main.c @@ -207,20 +207,18 @@ void update_title(void) void transform_page(void) { - fz_rect rect = page_bounds; + fz_rect rect; fz_matrix matrix; - draw_page_bounds = page_bounds; - - fz_scale(&draw_page_ctm, currentzoom / 72, currentzoom / 72); - fz_pre_rotate(&draw_page_ctm, -currentrotate); + draw_page_ctm = fz_scale(currentzoom / 72, currentzoom / 72); + draw_page_ctm = fz_pre_rotate(draw_page_ctm, -currentrotate); /* fix the page origin at 0,0 after rotation */ - fz_transform_rect(&rect, &draw_page_ctm); - fz_translate(&matrix, -rect.x0, -rect.y0); - fz_concat(&draw_page_ctm, &draw_page_ctm, &matrix); + rect = fz_transform_rect(page_bounds, draw_page_ctm); + matrix = fz_translate(-rect.x0, -rect.y0); + draw_page_ctm = fz_concat(draw_page_ctm, matrix); - fz_transform_rect(&draw_page_bounds, &draw_page_ctm); + draw_page_bounds = fz_transform_rect(page_bounds, draw_page_ctm); } void load_page(void) @@ -245,10 +243,10 @@ void load_page(void) page_text = fz_new_stext_page_from_page(ctx, fzpage, NULL); /* compute bounds here for initial window size */ - fz_bound_page(ctx, fzpage, &page_bounds); + page_bounds = fz_bound_page(ctx, fzpage); transform_page(); - fz_irect_from_rect(&area, &draw_page_bounds); + area = fz_irect_from_rect(draw_page_bounds); page_tex.w = area.x1 - area.x0; page_tex.h = area.y1 - area.y0; } @@ -281,16 +279,14 @@ static struct mark save_mark() { struct mark mark; mark.page = currentpage; - mark.scroll.x = scroll_x; - mark.scroll.y = scroll_y; - fz_transform_point(&mark.scroll, &view_page_inv_ctm); + mark.scroll = fz_transform_point_xy(scroll_x, scroll_y, view_page_inv_ctm); return mark; } static void restore_mark(struct mark mark) { currentpage = mark.page; - fz_transform_point(&mark.scroll, &draw_page_ctm); + mark.scroll = fz_transform_point(mark.scroll, draw_page_ctm); scroll_x = mark.scroll.x; scroll_y = mark.scroll.y; } @@ -337,9 +333,8 @@ static void jump_to_page(int newpage) static void jump_to_page_xy(int newpage, float x, float y) { - fz_point p = { x, y }; + fz_point p = fz_transform_point_xy(x, y, draw_page_ctm); newpage = fz_clampi(newpage, 0, fz_count_pages(ctx, doc) - 1); - fz_transform_point(&p, &draw_page_ctm); clear_future(); push_history(); currentpage = newpage; @@ -427,8 +422,8 @@ static void do_links(fz_link *link) while (link) { bounds = link->rect; - fz_transform_rect(&bounds, &view_page_ctm); - fz_irect_from_rect(&area, &bounds); + bounds = fz_transform_rect(link->rect, view_page_ctm); + area = fz_irect_from_rect(bounds); if (ui_mouse_inside(&area)) { @@ -493,8 +488,8 @@ static void do_page_selection(void) fz_point page_a = { pt.x, pt.y }; fz_point page_b = { ui.x, ui.y }; - fz_transform_point(&page_a, &view_page_inv_ctm); - fz_transform_point(&page_b, &view_page_inv_ctm); + page_a = fz_transform_point(page_a, view_page_inv_ctm); + page_b = fz_transform_point(page_b, view_page_inv_ctm); if (ui.mod == GLUT_ACTIVE_CTRL) fz_snap_selection(ctx, page_text, &page_a, &page_b, FZ_SELECT_WORDS); @@ -510,8 +505,7 @@ static void do_page_selection(void) glBegin(GL_QUADS); for (i = 0; i < n; ++i) { - fz_quad thit = hits[i]; - fz_transform_quad(&thit, &view_page_ctm); + fz_quad thit = fz_transform_quad(hits[i], view_page_ctm); glVertex2f(thit.ul.x, thit.ul.y); glVertex2f(thit.ur.x, thit.ur.y); glVertex2f(thit.lr.x, thit.lr.y); @@ -546,8 +540,7 @@ static void do_search_hits(void) glBegin(GL_QUADS); for (i = 0; i < search_hit_count; ++i) { - fz_quad thit = search_hit_quads[i]; - fz_transform_quad(&thit, &view_page_ctm); + fz_quad thit = fz_transform_quad(search_hit_quads[i], view_page_ctm); glVertex2f(thit.ul.x, thit.ul.y); glVertex2f(thit.ur.x, thit.ur.y); glVertex2f(thit.lr.x, thit.lr.y); @@ -567,9 +560,7 @@ static void do_forms(void) if (!pdf || search_active) return; - p.x = ui.x; - p.y = ui.y; - fz_transform_point(&p, &view_page_inv_ctm); + p = fz_transform_point_xy(ui.x, ui.y, view_page_inv_ctm); if (ui.down && !ui.active) { @@ -1131,10 +1122,9 @@ static void do_canvas(void) view_page_ctm = draw_page_ctm; view_page_ctm.e += page_x; view_page_ctm.f += page_y; - fz_invert_matrix(&view_page_inv_ctm, &view_page_ctm); - view_page_bounds = page_bounds; - fz_transform_rect(&view_page_bounds, &view_page_ctm); - fz_irect_from_rect(&view_page_area, &view_page_bounds); + view_page_inv_ctm = fz_invert_matrix(view_page_ctm); + view_page_bounds = fz_transform_rect(page_bounds, view_page_ctm); + view_page_area = fz_irect_from_rect(view_page_bounds); ui_draw_image(&page_tex, page_x, page_y); diff --git a/platform/gl/gl-ui.c b/platform/gl/gl-ui.c index 2d8fd5be..9539af7b 100644 --- a/platform/gl/gl-ui.c +++ b/platform/gl/gl-ui.c @@ -687,7 +687,7 @@ void ui_dialog_begin(int w, int h) y = (ui.window_h-h)/3; area = fz_make_irect(x, y, x+w, y+h); ui_draw_bevel_rect(area, UI_COLOR_PANEL, 0); - fz_expand_irect(&area, -14); + area = fz_expand_irect(area, -14); ui_pack_push(area); } diff --git a/platform/java/mupdf_native.c b/platform/java/mupdf_native.c index 2a8e517a..928732e5 100644 --- a/platform/java/mupdf_native.c +++ b/platform/java/mupdf_native.c @@ -1462,22 +1462,22 @@ static inline jobject to_Point_safe(fz_context *ctx, JNIEnv *env, fz_point point return (*env)->NewObject(env, cls_Point, mid_Point_init, point.x, point.y); } -static inline jobject to_Rect_safe(fz_context *ctx, JNIEnv *env, const fz_rect *rect) +static inline jobject to_Rect_safe(fz_context *ctx, JNIEnv *env, fz_rect rect) { - if (!ctx || !rect) return NULL; + if (!ctx) return NULL; - return (*env)->NewObject(env, cls_Rect, mid_Rect_init, rect->x0, rect->y0, rect->x1, rect->y1); + return (*env)->NewObject(env, cls_Rect, mid_Rect_init, rect.x0, rect.y0, rect.x1, rect.y1); } -static inline jobject to_Quad_safe(fz_context *ctx, JNIEnv *env, const fz_quad *quad) +static inline jobject to_Quad_safe(fz_context *ctx, JNIEnv *env, fz_quad quad) { - if (!ctx || !quad) return NULL; + if (!ctx) return NULL; return (*env)->NewObject(env, cls_Quad, mid_Quad_init, - quad->ul.x, quad->ul.y, - quad->ur.x, quad->ur.y, - quad->ll.x, quad->ll.y, - quad->lr.x, quad->lr.y); + quad.ul.x, quad.ul.y, + quad.ur.x, quad.ur.y, + quad.ll.x, quad.ll.y, + quad.lr.x, quad.lr.y); } static inline jobjectArray to_jQuadArray_safe(fz_context *ctx, JNIEnv *env, const fz_quad *quads, jint n) @@ -1492,7 +1492,7 @@ static inline jobjectArray to_jQuadArray_safe(fz_context *ctx, JNIEnv *env, cons for (i = 0; i < n; i++) { - jobject jquad = to_Quad_safe(ctx, env, &quads[i]); + jobject jquad = to_Quad_safe(ctx, env, quads[i]); if (!jquad) return NULL; (*env)->SetObjectArrayElement(env, arr, i, jquad); @@ -4108,7 +4108,7 @@ FUN(Path_transform)(JNIEnv *env, jobject self, jobject jctm) if (!ctx || !path) return; fz_try(ctx) - fz_transform_path(ctx, path, &ctm); + fz_transform_path(ctx, path, ctm); fz_catch(ctx) jni_rethrow(env, ctx); } @@ -4146,14 +4146,14 @@ FUN(Path_getBounds)(JNIEnv *env, jobject self, jobject jstroke, jobject jctm) if (!stroke) { jni_throw_arg(env, "stroke must not be null"); return NULL; } fz_try(ctx) - fz_bound_path(ctx, path, stroke, &ctm, &rect); + rect = fz_bound_path(ctx, path, stroke, ctm); fz_catch(ctx) { jni_rethrow(env, ctx); return NULL; } - return to_Rect_safe(ctx, env, &rect); + return to_Rect_safe(ctx, env, rect); } typedef struct @@ -4247,7 +4247,7 @@ FUN(Rect_adjustForStroke)(JNIEnv *env, jobject self, jobject jstroke, jobject jc if (!stroke) { jni_throw_arg(env, "stroke must not be null"); return; } fz_try(ctx) - fz_adjust_rect_for_stroke(ctx, &rect, stroke, &ctm); + rect = fz_adjust_rect_for_stroke(ctx, rect, stroke, ctm); fz_catch(ctx) { jni_rethrow(env, ctx); @@ -4424,14 +4424,14 @@ FUN(Text_getBounds)(JNIEnv *env, jobject self, jobject jstroke, jobject jctm) if (!stroke) { jni_throw_arg(env, "stroke must not be null"); return NULL; } fz_try(ctx) - fz_bound_text(ctx, text, stroke, &ctm, &rect); + rect = fz_bound_text(ctx, text, stroke, ctm); fz_catch(ctx) { jni_rethrow(env, ctx); return NULL; } - return to_Rect_safe(ctx, env, &rect); + return to_Rect_safe(ctx, env, rect); } JNIEXPORT void JNICALL @@ -4446,7 +4446,7 @@ FUN(Text_showGlyph)(JNIEnv *env, jobject self, jobject jfont, jobject jtrm, jint if (!font) { jni_throw_arg(env, "font must not be null"); return; } fz_try(ctx) - fz_show_glyph(ctx, text, font, &trm, glyph, unicode, wmode, 0, FZ_BIDI_NEUTRAL, FZ_LANG_UNSET); + fz_show_glyph(ctx, text, font, trm, glyph, unicode, wmode, 0, FZ_BIDI_NEUTRAL, FZ_LANG_UNSET); fz_catch(ctx) jni_rethrow(env, ctx); } @@ -4773,14 +4773,14 @@ FUN(Annotation_getBounds)(JNIEnv *env, jobject self) if (!ctx || !annot) return NULL; fz_try(ctx) - fz_bound_annot(ctx, annot, &rect); + rect = fz_bound_annot(ctx, annot); fz_catch(ctx) { jni_rethrow(env, ctx); return NULL; } - return to_Rect_safe(ctx, env, &rect); + return to_Rect_safe(ctx, env, rect); } JNIEXPORT jobject JNICALL @@ -5386,14 +5386,14 @@ FUN(Page_getBounds)(JNIEnv *env, jobject self) if (!ctx || !page) return NULL; fz_try(ctx) - fz_bound_page(ctx, page, &rect); + rect = fz_bound_page(ctx, page); fz_catch(ctx) { jni_rethrow(env, ctx); return NULL; } - return to_Rect_safe(ctx, env, &rect); + return to_Rect_safe(ctx, env, rect); } JNIEXPORT void JNICALL @@ -5553,7 +5553,7 @@ FUN(Page_getLinks)(JNIEnv *env, jobject self) jobject juri = NULL; int page = 0; - jbounds = to_Rect_safe(ctx, env, &link->rect); + jbounds = to_Rect_safe(ctx, env, link->rect); if (!jbounds) return NULL; if (fz_is_external_link(ctx, link->uri)) @@ -5692,10 +5692,8 @@ FUN(Page_textAsHtml)(JNIEnv *env, jobject self) fz_try(ctx) { - fz_rect mediabox; - ctm = fz_identity; - text = fz_new_stext_page(ctx, fz_bound_page(ctx, page, &mediabox)); + text = fz_new_stext_page(ctx, fz_bound_page(ctx, page)); dev = fz_new_stext_device(ctx, text, NULL); fz_run_page(ctx, page, dev, &ctm, NULL); fz_close_device(ctx, dev); @@ -5778,16 +5776,17 @@ FUN(Cookie_abort)(JNIEnv *env, jobject self) /* DisplayList interface */ JNIEXPORT jlong JNICALL -FUN(DisplayList_newNative)(JNIEnv *env, jobject self) +FUN(DisplayList_newNative)(JNIEnv *env, jobject self, jobject jmediabox) { fz_context *ctx = get_context(env); + fz_rect mediabox = from_Rect(env, jmediabox); fz_display_list *list = NULL; if (!ctx) return 0; fz_try(ctx) - list = fz_new_display_list(ctx, NULL); + list = fz_new_display_list(ctx, mediabox); fz_catch(ctx) { jni_rethrow(env, ctx); @@ -6513,7 +6512,7 @@ FUN(StructuredText_getBlocks)(JNIEnv *env, jobject self) if (!jblock) return NULL; /* set block's bbox */ - jrect = to_Rect_safe(ctx, env, &(block->bbox)); + jrect = to_Rect_safe(ctx, env, block->bbox); if (!jrect) return NULL; (*env)->SetObjectField(env, jblock, fid_TextBlock_bbox, jrect); @@ -6534,7 +6533,7 @@ FUN(StructuredText_getBlocks)(JNIEnv *env, jobject self) if (!jline) return NULL; /* set line's bbox */ - jrect = to_Rect_safe(ctx, env, &(line->bbox)); + jrect = to_Rect_safe(ctx, env, line->bbox); if (!jrect) return NULL; (*env)->SetObjectField(env, jline, fid_TextLine_bbox, jrect); @@ -6556,7 +6555,7 @@ FUN(StructuredText_getBlocks)(JNIEnv *env, jobject self) if (!jchar) return NULL; /* set the char's bbox */ - jquad = to_Quad_safe(ctx, env, &ch->quad); + jquad = to_Quad_safe(ctx, env, ch->quad); if (!jquad) return NULL; (*env)->SetObjectField(env, jchar, fid_TextChar_quad, jquad); @@ -7129,7 +7128,7 @@ FUN(PDFDocument_addPageBuffer)(JNIEnv *env, jobject self, jobject jmediabox, jin if (!contents) { jni_throw_arg(env, "contents must not be null"); return NULL; } fz_try(ctx) - ind = pdf_add_page(ctx, pdf, &mediabox, rotate, resources, contents); + ind = pdf_add_page(ctx, pdf, mediabox, rotate, resources, contents); fz_catch(ctx) { jni_rethrow(env, ctx); @@ -7165,7 +7164,7 @@ FUN(PDFDocument_addPageString)(JNIEnv *env, jobject self, jobject jmediabox, jin size_t len = strlen(scontents); data = fz_malloc(ctx, len); contents = fz_new_buffer_from_data(ctx, data, len); - ind = pdf_add_page(ctx, pdf, &mediabox, rotate, resources, contents); + ind = pdf_add_page(ctx, pdf, mediabox, rotate, resources, contents); } fz_always(ctx) { @@ -8951,14 +8950,14 @@ FUN(PDFAnnotation_getRect)(JNIEnv *env, jobject self) if (!ctx || !annot) return NULL; fz_try(ctx) - pdf_annot_rect(ctx, annot, &rect); + rect = pdf_annot_rect(ctx, annot); fz_catch(ctx) { jni_rethrow(env, ctx); return NULL; } - return to_Rect_safe(ctx, env, &rect); + return to_Rect_safe(ctx, env, rect); } JNIEXPORT void JNICALL @@ -8971,7 +8970,7 @@ FUN(PDFAnnotation_setRect)(JNIEnv *env, jobject self, jobject jrect) if (!ctx || !annot) return; fz_try(ctx) - pdf_set_annot_rect(ctx, annot, &rect); + pdf_set_annot_rect(ctx, annot, rect); fz_catch(ctx) jni_rethrow(env, ctx); } diff --git a/platform/java/mupdf_native.h b/platform/java/mupdf_native.h index 3f223a13..37ea6ed2 100644 --- a/platform/java/mupdf_native.h +++ b/platform/java/mupdf_native.h @@ -466,10 +466,10 @@ JNIEXPORT void JNICALL Java_com_artifex_mupdf_fitz_DisplayList_finalize /* * Class: com_artifex_mupdf_fitz_DisplayList * Method: newNative - * Signature: ()J + * Signature: (Lcom/artifex/mupdf/fitz/Rect;)J */ JNIEXPORT jlong JNICALL Java_com_artifex_mupdf_fitz_DisplayList_newNative - (JNIEnv *, jobject); + (JNIEnv *, jobject, jobject); /* * Class: com_artifex_mupdf_fitz_DisplayList diff --git a/platform/java/src/com/artifex/mupdf/fitz/DisplayList.java b/platform/java/src/com/artifex/mupdf/fitz/DisplayList.java index c6c33f20..5b64583f 100644 --- a/platform/java/src/com/artifex/mupdf/fitz/DisplayList.java +++ b/platform/java/src/com/artifex/mupdf/fitz/DisplayList.java @@ -15,10 +15,10 @@ public class DisplayList pointer = 0; } - private native long newNative(); + private native long newNative(Rect mediabox); - public DisplayList() { - pointer = newNative(); + public DisplayList(Rect mediabox) { + pointer = newNative(mediabox); } private DisplayList(long p) { diff --git a/platform/x11/pdfapp.c b/platform/x11/pdfapp.c index 17af3d0f..20f4cc46 100644 --- a/platform/x11/pdfapp.c +++ b/platform/x11/pdfapp.c @@ -148,8 +148,7 @@ void pdfapp_setresolution(pdfapp_t *app, int res) void pdfapp_invert(pdfapp_t *app, const fz_rect *rect) { - fz_irect b; - fz_invert_pixmap_rect(app->ctx, app->image, fz_round_rect(&b, rect)); + fz_invert_pixmap_rect(app->ctx, app->image, fz_round_rect(*rect)); } void pdfapp_reloadfile(pdfapp_t *app) @@ -262,7 +261,7 @@ static int make_fake_doc(pdfapp_t *app) /* Create enough copies of our blank(ish) page so that the * page number is preserved if and when a subsequent load * works. */ - page_obj = pdf_add_page(ctx, pdf, &mediabox, 0, NULL, contents); + page_obj = pdf_add_page(ctx, pdf, mediabox, 0, NULL, contents); for (i = 0; i < app->pagecount; i++) pdf_insert_page(ctx, pdf, -1, page_obj); } @@ -606,7 +605,7 @@ int pdfapp_preclose(pdfapp_t *app) static void pdfapp_viewctm(fz_matrix *mat, pdfapp_t *app) { - fz_pre_rotate(fz_scale(mat, app->resolution/72.0f, app->resolution/72.0f), app->rotate); + *mat = fz_pre_rotate(fz_scale(app->resolution/72.0f, app->resolution/72.0f), app->rotate); } static void pdfapp_panview(pdfapp_t *app, int newx, int newy) @@ -671,8 +670,7 @@ static void pdfapp_loadpage(pdfapp_t *app, int no_cache) fz_try(app->ctx) { app->page = fz_load_page(app->ctx, app->doc, app->pageno - 1); - - fz_bound_page(app->ctx, app->page, &app->page_bbox); + app->page_bbox = fz_bound_page(app->ctx, app->page); } fz_catch(app->ctx) { @@ -687,7 +685,7 @@ static void pdfapp_loadpage(pdfapp_t *app, int no_cache) { fz_annot *annot; /* Create display lists */ - app->page_list = fz_new_display_list(app->ctx, NULL); + app->page_list = fz_new_display_list(app->ctx, fz_infinite_rect); mdev = fz_new_list_device(app->ctx, app->page_list); if (no_cache) fz_enable_device_hints(app->ctx, mdev, FZ_NO_CACHE); @@ -696,7 +694,7 @@ static void pdfapp_loadpage(pdfapp_t *app, int no_cache) fz_close_device(app->ctx, mdev); fz_drop_device(app->ctx, mdev); mdev = NULL; - app->annotations_list = fz_new_display_list(app->ctx, NULL); + app->annotations_list = fz_new_display_list(app->ctx, fz_infinite_rect); mdev = fz_new_list_device(app->ctx, app->annotations_list); for (annot = fz_first_annot(app->ctx, app->page); annot; annot = fz_next_annot(app->ctx, annot)) fz_run_annot(app->ctx, annot, mdev, &fz_identity, &cookie); @@ -757,7 +755,7 @@ static void pdfapp_recreate_annotationslist(pdfapp_t *app) { fz_annot *annot; /* Create display list */ - app->annotations_list = fz_new_display_list(app->ctx, NULL); + app->annotations_list = fz_new_display_list(app->ctx, fz_infinite_rect); mdev = fz_new_list_device(app->ctx, app->annotations_list); for (annot = fz_first_annot(app->ctx, app->page); annot; annot = fz_next_annot(app->ctx, annot)) fz_run_annot(app->ctx, annot, mdev, &fz_identity, &cookie); @@ -813,9 +811,10 @@ static void pdfapp_updatepage(pdfapp_t *app) fz_annot *annot = (fz_annot*)pannot; fz_rect bounds; fz_irect ibounds; - fz_transform_rect(fz_bound_annot(app->ctx, 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); + bounds = fz_transform_rect(fz_bound_annot(app->ctx, annot), ctm); + ibounds = fz_round_rect(bounds); + bounds = fz_rect_from_irect(ibounds); + fz_clear_pixmap_rect_with_value(app->ctx, app->image, 255, ibounds); idev = fz_new_draw_device_with_bbox(app->ctx, NULL, app->image, &ibounds); fz_try(app->ctx) { @@ -878,7 +877,8 @@ static void pdfapp_showpage(pdfapp_t *app, int loadpage, int drawpage, int repai app->hit_count = 0; /* Extract text */ - app->page_text = fz_new_stext_page(app->ctx, fz_bound_page(app->ctx, app->page, &mediabox)); + mediabox = fz_bound_page(app->ctx, app->page); + app->page_text = fz_new_stext_page(app->ctx, mediabox); if (app->page_list || app->annotations_list) { @@ -914,9 +914,9 @@ static void pdfapp_showpage(pdfapp_t *app, int loadpage, int drawpage, int repai wintitle(app, buf); pdfapp_viewctm(&ctm, app); - bounds = app->page_bbox; - fz_round_rect(&ibounds, fz_transform_rect(&bounds, &ctm)); - fz_rect_from_irect(&bounds, &ibounds); + bounds = fz_transform_rect(app->page_bbox, ctm); + ibounds = fz_round_rect(bounds); + bounds = fz_rect_from_irect(ibounds); /* Draw */ fz_drop_pixmap(app->ctx, app->image); @@ -931,7 +931,7 @@ static void pdfapp_showpage(pdfapp_t *app, int loadpage, int drawpage, int repai fz_try(app->ctx) { - app->image = fz_new_pixmap_with_bbox(app->ctx, colorspace, &ibounds, NULL, 1); + app->image = fz_new_pixmap_with_bbox(app->ctx, colorspace, ibounds, NULL, 1); fz_clear_pixmap_with_value(app->ctx, app->image, 255); if (app->page_list || app->annotations_list) { @@ -958,7 +958,7 @@ static void pdfapp_showpage(pdfapp_t *app, int loadpage, int drawpage, int repai colorspace = fz_device_gray(app->ctx); else colorspace = app->colorspace; - app->image = fz_new_pixmap_with_bbox(app->ctx, colorspace, &ibounds, NULL, 1); + app->image = fz_new_pixmap_with_bbox(app->ctx, colorspace, ibounds, NULL, 1); app->duration = 0; fz_page_presentation(app->ctx, app->page, &app->transition, &app->duration); if (app->duration == 0) @@ -1051,7 +1051,8 @@ void pdfapp_inverthit(pdfapp_t *app) for (i = 0; i < app->hit_count; i++) { bbox = fz_rect_from_quad(app->hit_bbox[i]); - pdfapp_invert(app, fz_transform_rect(&bbox, &ctm)); + bbox = fz_transform_rect(bbox, ctm); + pdfapp_invert(app, &bbox); } } @@ -1624,14 +1625,14 @@ void pdfapp_onmouse(pdfapp_t *app, int x, int y, int btn, int modifiers, int sta int processed = 0; if (app->image) - fz_pixmap_bbox(app->ctx, app->image, &irect); + irect = fz_pixmap_bbox(app->ctx, app->image); p.x = x - app->panx + irect.x0; p.y = y - app->pany + irect.y0; pdfapp_viewctm(&ctm, app); - fz_invert_matrix(&ctm, &ctm); + ctm = fz_invert_matrix(ctm); - fz_transform_point(&p, &ctm); + p = fz_transform_point(p, ctm); if (btn == 1 && (state == 1 || state == -1)) { @@ -1767,8 +1768,7 @@ void pdfapp_onmouse(pdfapp_t *app, int x, int y, int btn, int modifiers, int sta fz_annot *annot; for (annot = fz_first_annot(app->ctx, app->page); annot; annot = fz_next_annot(app->ctx, annot)) { - fz_rect rect; - fz_bound_annot(app->ctx, annot, &rect); + fz_rect rect = fz_bound_annot(app->ctx, annot); if (x >= rect.x0 && x < rect.x1) if (y >= rect.y0 && y < rect.y1) break; @@ -1921,9 +1921,8 @@ void pdfapp_oncopy(pdfapp_t *app, unsigned short *ucsbuf, int ucslen) fz_rect sel; pdfapp_viewctm(&ctm, app); - fz_invert_matrix(&ctm, &ctm); - sel = app->selr; - fz_transform_rect(&sel, &ctm); + ctm = fz_invert_matrix(ctm); + sel = fz_transform_rect(app->selr, ctm); p = 0; need_newline = 0; |