diff options
author | Robin Watts <robin.watts@artifex.com> | 2012-04-10 13:42:40 +0100 |
---|---|---|
committer | Robin Watts <robin.watts@artifex.com> | 2012-04-10 13:42:40 +0100 |
commit | e6b8d0c6b1809e012da290202108f1ac76153774 (patch) | |
tree | 9154d18bec601be03f161c1cc358bb6bc508b815 | |
parent | ed187a8bd9340788bca2ee84b93c965f38c8821f (diff) | |
download | mupdf-e6b8d0c6b1809e012da290202108f1ac76153774.tar.xz |
Add fz_new_draw_device_with_bbox function
Restricts rendering to a sub rectangle of the supplied bbox.
-rw-r--r-- | draw/draw_device.c | 17 | ||||
-rw-r--r-- | fitz/fitz.h | 14 |
2 files changed, 31 insertions, 0 deletions
diff --git a/draw/draw_device.c b/draw/draw_device.c index 2ee0de77..3df440ef 100644 --- a/draw/draw_device.c +++ b/draw/draw_device.c @@ -1653,6 +1653,23 @@ fz_new_draw_device(fz_context *ctx, fz_pixmap *dest) } fz_device * +fz_new_draw_device_with_bbox(fz_context *ctx, fz_pixmap *dest, fz_bbox clip) +{ + fz_device *dev = fz_new_draw_device(ctx, dest); + fz_draw_device *ddev = dev->user; + + if (clip.x0 > ddev->stack[0].scissor.x0) + ddev->stack[0].scissor.x0 = clip.x0; + if (clip.x1 < ddev->stack[0].scissor.x1) + ddev->stack[0].scissor.x1 = clip.x1; + if (clip.y0 > ddev->stack[0].scissor.y0) + ddev->stack[0].scissor.y0 = clip.y0; + if (clip.y1 < ddev->stack[0].scissor.y1) + ddev->stack[0].scissor.y1 = clip.y1; + return dev; +} + +fz_device * fz_new_draw_device_type3(fz_context *ctx, fz_pixmap *dest) { fz_device *dev = fz_new_draw_device(ctx, dest); diff --git a/fitz/fitz.h b/fitz/fitz.h index 732cb9d2..1355c740 100644 --- a/fitz/fitz.h +++ b/fitz/fitz.h @@ -1518,6 +1518,20 @@ fz_device *fz_new_bbox_device(fz_context *ctx, fz_bbox *bboxp); fz_device *fz_new_draw_device(fz_context *ctx, fz_pixmap *dest); /* + fz_new_draw_device_with_bbox: Create a device to draw on a pixmap. + + dest: Target pixmap for the draw device. See fz_new_pixmap* + for how to obtain a pixmap. The pixmap is not cleared by the + draw device, see fz_clear_pixmap* for how to clear it prior to + calling fz_new_draw_device. Free the device by calling + fz_free_device. + + clip: Bounding box to restrict any marking operations of the + draw device. +*/ +fz_device *fz_new_draw_device_with_bbox(fz_context *ctx, fz_pixmap *dest, fz_bbox clip); + +/* Text extraction device: Used for searching, format conversion etc. (In development - Subject to change in future versions) |