summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2012-04-10 13:42:40 +0100
committerRobin Watts <robin.watts@artifex.com>2012-04-10 13:42:40 +0100
commite6b8d0c6b1809e012da290202108f1ac76153774 (patch)
tree9154d18bec601be03f161c1cc358bb6bc508b815
parented187a8bd9340788bca2ee84b93c965f38c8821f (diff)
downloadmupdf-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.c17
-rw-r--r--fitz/fitz.h14
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)