summaryrefslogtreecommitdiff
path: root/base/gxclip.c
diff options
context:
space:
mode:
authorRay Johnston <ray.johnston@artifex.com>2020-02-11 11:11:47 -0800
committerRay Johnston <ray.johnston@artifex.com>2020-02-11 11:11:47 -0800
commitad317d8d436f3ae282597631464313666451747f (patch)
tree08e4041d89cde8710a46b05f9ba03e40e0c4b3fd /base/gxclip.c
parent1c6bfa12cccb726974aa1c3ad5c4887600f7331d (diff)
downloadghostpdl-ad317d8d436f3ae282597631464313666451747f.tar.gz
Fix bug 702060: clip_transform_pixel_region was ignoring the 'transpose' flag.
Diffstat (limited to 'base/gxclip.c')
-rw-r--r--base/gxclip.c27
1 files changed, 19 insertions, 8 deletions
diff --git a/base/gxclip.c b/base/gxclip.c
index b8927af38..b0924307a 100644
--- a/base/gxclip.c
+++ b/base/gxclip.c
@@ -1602,14 +1602,25 @@ clip_transform_pixel_region(gx_device *dev, transform_pixel_region_reason reason
/* Single unskewed rectangle - we can use the underlying device direct */
local_data.u.init.clip = &local_clip;
local_clip = *data->u.init.clip;
- if (local_clip.p.x < cdev->current->xmin)
- local_clip.p.x = cdev->current->xmin;
- if (local_clip.q.x > cdev->current->xmax)
- local_clip.q.x = cdev->current->xmax;
- if (local_clip.p.y < cdev->current->ymin)
- local_clip.p.y = cdev->current->ymin;
- if (local_clip.q.y > cdev->current->ymax)
- local_clip.q.y = cdev->current->ymax;
+ if (cdev->list.transpose) {
+ if (local_clip.p.x < cdev->current->ymin)
+ local_clip.p.x = cdev->current->ymin;
+ if (local_clip.q.x > cdev->current->ymax)
+ local_clip.q.x = cdev->current->ymax;
+ if (local_clip.p.y < cdev->current->xmin)
+ local_clip.p.y = cdev->current->xmin;
+ if (local_clip.q.y > cdev->current->xmax)
+ local_clip.q.y = cdev->current->xmax;
+ } else {
+ if (local_clip.p.x < cdev->current->xmin)
+ local_clip.p.x = cdev->current->xmin;
+ if (local_clip.q.x > cdev->current->xmax)
+ local_clip.q.x = cdev->current->xmax;
+ if (local_clip.p.y < cdev->current->ymin)
+ local_clip.p.y = cdev->current->ymin;
+ if (local_clip.q.y > cdev->current->ymax)
+ local_clip.q.y = cdev->current->ymax;
+ }
state->use_default = 0;
ret = dev_proc(cdev->target, transform_pixel_region)(cdev->target, reason, &local_data);
} else {