diff options
Diffstat (limited to 'fitz/dev_list.c')
-rw-r--r-- | fitz/dev_list.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/fitz/dev_list.c b/fitz/dev_list.c index e49f694b..26693e0f 100644 --- a/fitz/dev_list.c +++ b/fitz/dev_list.c @@ -588,12 +588,10 @@ fz_free_display_list(fz_context *ctx, fz_display_list *list) } void -fz_run_display_list(fz_display_list *list, fz_device *dev, fz_matrix top_ctm, fz_bbox scissor, fz_cookie *cookie) +fz_run_display_list(fz_display_list *list, fz_device *dev, fz_matrix top_ctm, fz_rect scissor, fz_cookie *cookie) { fz_display_node *node; fz_matrix ctm; - fz_rect rect; - fz_bbox bbox; int clipped = 0; int tiled = 0; int empty; @@ -624,9 +622,7 @@ fz_run_display_list(fz_display_list *list, fz_device *dev, fz_matrix top_ctm, fz } else { - bbox = fz_bbox_covering_rect(fz_transform_rect(top_ctm, node->rect)); - bbox = fz_intersect_bbox(bbox, scissor); - empty = fz_is_empty_bbox(bbox); + empty = fz_is_empty_rect(fz_intersect_rect(fz_transform_rect(top_ctm, node->rect), scissor)); } if (clipped || empty) @@ -725,30 +721,36 @@ visible: fz_pop_clip(dev); break; case FZ_CMD_BEGIN_MASK: - rect = fz_transform_rect(top_ctm, node->rect); - fz_begin_mask(dev, rect, node->flag, node->colorspace, node->color); + { + fz_rect trect = fz_transform_rect(top_ctm, node->rect); + fz_begin_mask(dev, trect, node->flag, node->colorspace, node->color); break; + } case FZ_CMD_END_MASK: fz_end_mask(dev); break; case FZ_CMD_BEGIN_GROUP: - rect = fz_transform_rect(top_ctm, node->rect); - fz_begin_group(dev, rect, + { + fz_rect trect = fz_transform_rect(top_ctm, node->rect); + fz_begin_group(dev, trect, (node->flag & ISOLATED) != 0, (node->flag & KNOCKOUT) != 0, node->item.blendmode, node->alpha); break; + } case FZ_CMD_END_GROUP: fz_end_group(dev); break; case FZ_CMD_BEGIN_TILE: + { + fz_rect rect; tiled++; rect.x0 = node->color[2]; rect.y0 = node->color[3]; rect.x1 = node->color[4]; rect.y1 = node->color[5]; - fz_begin_tile(dev, node->rect, rect, - node->color[0], node->color[1], ctm); + fz_begin_tile(dev, node->rect, rect, node->color[0], node->color[1], ctm); break; + } case FZ_CMD_END_TILE: tiled--; fz_end_tile(dev); |