jbig2dec
Ralph Giles <[email protected]> Wed, 03 Jul 2002 12:54:45 -0700
| Newsgroups | gmane.comp.printing.ghostscript.jbig2dec.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/jbig2dec/jbig2dec
In directory usw-pr-cvs1:/tmp/cvs-serv10766
Modified Files:
jbig2_image.c
Log Message:
checkpoint compositor development
Index: jbig2_image.c
===================================================================
RCS file: /cvsroot/jbig2dec/jbig2dec/jbig2_image.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- jbig2_image.c 3 Jul 2002 19:43:21 -0000 1.12
+++ jbig2_image.c 3 Jul 2002 19:54:43 -0000 1.13
@@ -75,9 +75,10 @@
}
/* clip */
- // FIXME: this isn't sufficient
w = src->width;
h = src->height;
+ ss = src->data;
+ // FIXME: this isn't sufficient for the < 0 cases
if (x < 0) { w += x; x = 0; }
if (y < 0) { h += y; y = 0; }
w = (x + w < dst->width) ? w : dst->width - x;
@@ -93,7 +94,6 @@
return 0;
}
- /* general OR case */
leftbyte = x >> 3;
leftbits = x & 7;
rightbyte = (x + w) >> 3;
@@ -101,8 +101,9 @@
fprintf(stderr, "left byte:bits %d:%d right byte:bits %d:%d\n",
leftbyte, leftbits, rightbyte, rightbits);
- s = ss = src->data;
- d = dd = dst->data + y*dst->stride + leftbyte;
+ /* general OR case */
+ d = ss;
+ d = dd = dst->data + y*dst->stride + leftbyte;
if (leftbyte == rightbyte) {
mask = (1 << (w & 7)) - 1;
for (j = 0; j < h; j++) {
@@ -112,13 +113,15 @@
}
} else {
mask = 1 << (8 - leftbits) - 1;
+ highmask = (1 << rightbits) - 1;
for (j = 0; j < h; j++) {
*d++ |= (*s & mask) << leftbits;
for(i = leftbyte; i < rightbyte; i++) {
*d |= (*s++ & ~mask) >> leftbits;
*d++ |= (*s & mask) << leftbits;
}
- *d |= (*++s & highmask) << (8 - rightbits);
+ *d |= (*s++ & ~mask) >> leftbits;
+ *d |= (*s & highmask) << leftbits;
d = (dd += dst->stride);
s = (ss += src->stride);
}