summaryrefslogtreecommitdiff
path: root/gs/base/gxclrect.c
diff options
context:
space:
mode:
authorRobin Watts <Robin.Watts@artifex.com>2011-07-01 18:03:19 +0100
committerRobin Watts <Robin.Watts@artifex.com>2011-07-01 18:03:19 +0100
commit52d2decab7955e61a605ab44acb88a08eb79b9cb (patch)
tree1d62f8b561c5f83f536e617d8fb66043f40863ac /gs/base/gxclrect.c
parente14ea75d716da7ecdef2211a5d60e46deec55b9f (diff)
Clist change for plane rop operations.
If strip_copy_rop is called with the 'lop_planar' indicator bit set in the rop, it should encode just a planes worth of data. The reading side of clists works without change, I believe.
Diffstat (limited to 'gs/base/gxclrect.c')
-rw-r--r--gs/base/gxclrect.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/gs/base/gxclrect.c b/gs/base/gxclrect.c
index 1003957b0..c134d651b 100644
--- a/gs/base/gxclrect.c
+++ b/gs/base/gxclrect.c
@@ -1260,7 +1260,7 @@ clist_strip_copy_rop(gx_device * dev,
re.pcls->lop_enabled = -1;
++cdev->driver_call_nesting;
{
- if (scolors != 0) {
+ if (scolors != NULL) {
if (scolors[0] == scolors[1])
code = clist_fill_rectangle(dev, rx, re.y, rwidth, re.height,
scolors[1]);
@@ -1268,9 +1268,14 @@ clist_strip_copy_rop(gx_device * dev,
code = clist_copy_mono(dev, row, sourcex, sraster, id,
rx, re.y, rwidth, re.height,
scolors[0], scolors[1]);
- } else
+ } else if (lop & lop_planar) {
+ code = clist_copy_plane(dev, row, sourcex, sraster, id,
+ rx, re.y, rwidth, re.height,
+ (lop >> lop_planar_shift));
+ } else {
code = clist_copy_color(dev, row, sourcex, sraster, id,
rx, re.y, rwidth, re.height);
+ }
}
--cdev->driver_call_nesting;
re.pcls->lop_enabled = 1;