diff options
author | Tor Andersson <tor.andersson@artifex.com> | 2018-06-28 11:08:06 +0200 |
---|---|---|
committer | Tor Andersson <tor.andersson@artifex.com> | 2018-07-04 17:23:21 +0200 |
commit | d196428954d2e2ce635689c7f925e8f37ee4c67d (patch) | |
tree | cc5523a0cbb207a2b7011931636b142bc387a7e6 /source | |
parent | 1f787e13a6c75cf12a09fc44d590ba9169c52a71 (diff) | |
download | mupdf-d196428954d2e2ce635689c7f925e8f37ee4c67d.tar.xz |
Clean up some incomprehensible code.
Diffstat (limited to 'source')
-rw-r--r-- | source/fitz/draw-device.c | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/source/fitz/draw-device.c b/source/fitz/draw-device.c index 7d81e4d3..f497949a 100644 --- a/source/fitz/draw-device.c +++ b/source/fitz/draw-device.c @@ -747,11 +747,9 @@ fz_draw_clip_path(fz_context *ctx, fz_device *devp, const fz_path *path, int eve float expansion = fz_matrix_expansion(&ctm); float flatness = 0.3f / expansion; - fz_irect bbox; + fz_irect bbox, pixmap_bbox; fz_draw_state *state = &dev->stack[dev->top]; fz_colorspace *model; - fz_irect local_scissor; - fz_irect *scissor_ptr; if (dev->top == 0 && dev->resolve_spots) (void)push_group_for_separations(ctx, dev, fz_default_color_params(ctx)/* FIXME */, dev->default_cs); @@ -763,14 +761,19 @@ fz_draw_clip_path(fz_context *ctx, fz_device *devp, const fz_path *path, int eve STACK_PUSHED("clip path"); model = state->dest->colorspace; - scissor_ptr = &state->scissor; if (scissor) { - fz_rect tscissor = *scissor; - fz_transform_rect(&tscissor, &dev->transform); - scissor_ptr = fz_intersect_irect(fz_irect_from_rect(&local_scissor, &tscissor), scissor_ptr); + fz_rect rect = *scissor; + fz_transform_rect(&rect, &dev->transform); + fz_irect_from_rect(&bbox, &rect); + fz_intersect_irect(&bbox, &state->scissor); + fz_intersect_irect(&bbox, fz_pixmap_bbox(ctx, state->dest, &pixmap_bbox)); + } + else + { + bbox = state->scissor; + fz_intersect_irect(&bbox, fz_pixmap_bbox(ctx, state->dest, &pixmap_bbox)); } - fz_intersect_irect(fz_pixmap_bbox_no_ctx(state->dest, &bbox), scissor_ptr); if (fz_flatten_fill_path(ctx, rast, path, &ctm, flatness, &bbox, &bbox) || fz_is_rect_rasterizer(ctx, rast)) { @@ -822,13 +825,11 @@ fz_draw_clip_stroke_path(fz_context *ctx, fz_device *devp, const fz_path *path, float expansion = fz_matrix_expansion(&ctm); float flatness = 0.3f / expansion; float linewidth = stroke->linewidth; - fz_irect bbox; + fz_irect bbox, pixmap_bbox; fz_draw_state *state = &dev->stack[dev->top]; fz_colorspace *model; float aa_level = 2.0f/(fz_rasterizer_graphics_aa_level(rast)+2); float mlw = fz_rasterizer_graphics_min_line_width(rast); - fz_irect local_scissor; - fz_irect *scissor_ptr; if (dev->top == 0 && dev->resolve_spots) (void)push_group_for_separations(ctx, dev, fz_default_color_params(ctx) /* FIXME */, dev->default_cs); @@ -844,14 +845,20 @@ fz_draw_clip_stroke_path(fz_context *ctx, fz_device *devp, const fz_path *path, STACK_PUSHED("clip stroke"); model = state->dest->colorspace; - scissor_ptr = &state->scissor; if (scissor) { - fz_rect tscissor = *scissor; - fz_transform_rect(&tscissor, &dev->transform); - scissor_ptr = fz_intersect_irect(fz_irect_from_rect(&local_scissor, &tscissor), scissor_ptr); + fz_rect rect = *scissor; + fz_transform_rect(&rect, &dev->transform); + fz_irect_from_rect(&bbox, &rect); + fz_intersect_irect(&bbox, &state->scissor); + fz_intersect_irect(&bbox, fz_pixmap_bbox(ctx, state->dest, &pixmap_bbox)); + } + else + { + bbox = state->scissor; + fz_intersect_irect(&bbox, fz_pixmap_bbox(ctx, state->dest, &pixmap_bbox)); } - fz_intersect_irect(fz_pixmap_bbox_no_ctx(state->dest, &bbox), scissor_ptr); + if (fz_flatten_stroke_path(ctx, rast, path, stroke, &ctm, flatness, linewidth, &bbox, &bbox)) { |