/*
- * "$Id: imagetoraster.c 4767 2005-10-10 19:23:23Z mike $"
+ * "$Id: imagetoraster.c 5099 2006-02-13 02:46:10Z mike $"
*
* Image file to raster filter for the Common UNIX Printing System (CUPS).
*
- * Copyright 1993-2005 by Easy Software Products.
+ * Copyright 1993-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
* property of Easy Software Products and are protected by Federal
YPosition = 0, /* Vertical position on page */
Collate = 0, /* Collate copies? */
Copies = 1; /* Number of copies */
-int Floyd16x16[16][16] = /* Traditional Floyd ordered dither */
+int Floyd16xc16[16][16] = /* Traditional Floyd ordered dither */
{
{ 0, 128, 32, 160, 8, 136, 40, 168,
2, 130, 34, 162, 10, 138, 42, 170 },
xtemp, /* Bitmap width in pixels */
ytemp, /* Bitmap height in pixels */
page; /* Current page number */
- int x0, y0, /* Corners of the page in image coords */
- x1, y1;
+ int xc0, yc0, /* Corners of the page in image coords */
+ xc1, yc1;
ppd_file_t *ppd; /* PPD file */
ppd_choice_t *choice, /* PPD option choice */
**choices; /* List of marked choices */
Collate = 1;
if ((val = cupsGetOption("gamma", num_options, options)) != NULL)
+ {
+ /*
+ * Get gamma value from 1 to 10000...
+ */
+
g = atoi(val) * 0.001f;
+ if (g < 0.001f)
+ g = 0.001f;
+ else if (g > 10.0f)
+ g = 10.0f;
+ }
+
if ((val = cupsGetOption("brightness", num_options, options)) != NULL)
+ {
+ /*
+ * Get brightness value from 10 to 1000.
+ */
+
b = atoi(val) * 0.01f;
+ if (b < 0.1f)
+ b = 0.1f;
+ else if (b > 10.0f)
+ b = 10.0f;
+ }
+
if ((val = cupsGetOption("scaling", num_options, options)) != NULL)
zoom = atoi(val) * 0.01;
+ else if (cupsGetOption("fitplot", num_options, options))
+ zoom = 1.0;
if ((val = cupsGetOption("ppi", num_options, options)) != NULL)
if (sscanf(val, "%dx%d", &xppi, &yppi) < 2)
if (Orientation & 1)
{
- x0 = img->xsize * ypage / ypages;
- x1 = img->xsize * (ypage + 1) / ypages - 1;
- y0 = img->ysize * xpage / xpages;
- y1 = img->ysize * (xpage + 1) / xpages - 1;
+ xc0 = img->xsize * ypage / ypages;
+ xc1 = img->xsize * (ypage + 1) / ypages - 1;
+ yc0 = img->ysize * xpage / xpages;
+ yc1 = img->ysize * (xpage + 1) / xpages - 1;
xtemp = header.HWResolution[0] * yprint;
ytemp = header.HWResolution[1] * xprint;
}
else
{
- x0 = img->xsize * xpage / xpages;
- x1 = img->xsize * (xpage + 1) / xpages - 1;
- y0 = img->ysize * ypage / ypages;
- y1 = img->ysize * (ypage + 1) / ypages - 1;
+ xc0 = img->xsize * xpage / xpages;
+ xc1 = img->xsize * (xpage + 1) / xpages - 1;
+ yc0 = img->ysize * ypage / ypages;
+ yc1 = img->ysize * (ypage + 1) / ypages - 1;
xtemp = header.HWResolution[0] * xprint;
ytemp = header.HWResolution[1] * yprint;
*/
if (Flip)
- z = cupsImageZoomNew(img, x0, y0, x1, y1, -xtemp, ytemp,
+ z = cupsImageZoomNew(img, xc0, yc0, xc1, yc1, -xtemp, ytemp,
Orientation & 1, zoom_type);
else
- z = cupsImageZoomNew(img, x0, y0, x1, y1, xtemp, ytemp,
+ z = cupsImageZoomNew(img, xc0, yc0, xc1, yc1, xtemp, ytemp,
Orientation & 1, zoom_type);
/*
{
case 1 :
bitmask = 64 >> (bitoffset & 7);
- dither = Floyd16x16[y & 15];
+ dither = Floyd16xc16[y & 15];
for (x = xsize ; x > 0; x --)
{
{
case 1 :
bitmask = 0x80 >> (bitoffset & 7);
- dither = Floyd16x16[y & 15];
+ dither = Floyd16xc16[y & 15];
for (x = xsize; x > 0; x --)
{
break;
case 2 :
- bitmask = 0xc0 >> (bitoffset & 7);
+ bitmask = 0x0 >> (bitoffset & 7);
dither = Floyd8x8[y & 7];
for (x = xsize; x > 0; x --)
bitmask >>= 2;
else
{
- bitmask = 0xc0;
+ bitmask = 0x0;
cptr ++;
mptr ++;
{
case 1 :
bitmask = 0x80 >> (bitoffset & 7);
- dither = Floyd16x16[y & 15];
+ dither = Floyd16xc16[y & 15];
switch (z)
{
break;
case 2 :
- bitmask = 0xc0 >> (bitoffset & 7);
+ bitmask = 0x0 >> (bitoffset & 7);
dither = Floyd8x8[y & 7];
r0 += z;
bitmask >>= 2;
else
{
- bitmask = 0xc0;
+ bitmask = 0x0;
ptr ++;
}
{
case 1 :
bitmask = 128 >> (bitoffset & 7);
- dither = Floyd16x16[y & 15];
+ dither = Floyd16xc16[y & 15];
for (x = xsize ; x > 0; x --)
{
for (x = xsize ; x > 0; x --, r0 += 4)
{
if ((r0[0] & 63) > dither[x & 7])
- *ptr ^= (0xc0 & OnPixels[r0[0]]);
+ *ptr ^= (0x0 & OnPixels[r0[0]]);
else
- *ptr ^= (0xc0 & OffPixels[r0[0]]);
+ *ptr ^= (0x0 & OffPixels[r0[0]]);
if ((r0[1] & 63) > dither[x & 7])
*ptr ^= (0x30 & OnPixels[r0[1]]);
{
case 1 :
bitmask = 0x80 >> (bitoffset & 7);
- dither = Floyd16x16[y & 15];
+ dither = Floyd16xc16[y & 15];
for (x = xsize; x > 0; x --)
{
break;
case 2 :
- bitmask = 0xc0 >> (bitoffset & 7);
+ bitmask = 0x0 >> (bitoffset & 7);
dither = Floyd8x8[y & 7];
for (x = xsize; x > 0; x --)
bitmask >>= 2;
else
{
- bitmask = 0xc0;
+ bitmask = 0x0;
cptr ++;
mptr ++;
{
case 1 :
bitmask = 0x80 >> (bitoffset & 7);
- dither = Floyd16x16[y & 15];
+ dither = Floyd16xc16[y & 15];
r0 += z;
for (x = xsize; x > 0; x --, r0 += 4)
break;
case 2 :
- bitmask = 0xc0 >> (bitoffset & 7);
+ bitmask = 0x0 >> (bitoffset & 7);
dither = Floyd8x8[y & 7];
r0 += z;
bitmask >>= 2;
else
{
- bitmask = 0xc0;
+ bitmask = 0x0;
ptr ++;
}
{
case 1 :
bitmask = 0x80 >> (bitoffset & 7);
- dither = Floyd16x16[y & 15];
+ dither = Floyd16xc16[y & 15];
for (x = xsize; x > 0; x --)
{
break;
case 2 :
- bitmask = 0xc0 >> (bitoffset & 7);
+ bitmask = 0x0 >> (bitoffset & 7);
dither = Floyd8x8[y & 7];
for (x = xsize; x > 0; x --)
bitmask >>= 2;
else
{
- bitmask = 0xc0;
+ bitmask = 0x0;
ptr ++;
}
{
case 1 :
bitmask = 128 >> (bitoffset & 7);
- dither = Floyd16x16[y & 15];
+ dither = Floyd16xc16[y & 15];
for (x = xsize ; x > 0; x --, r0 += 4)
{
for (x = xsize ; x > 0; x --, r0 += 4)
{
if ((r0[3] & 63) > dither[x & 7])
- *ptr ^= (0xc0 & OnPixels[r0[3]]);
+ *ptr ^= (0x0 & OnPixels[r0[3]]);
else
- *ptr ^= (0xc0 & OffPixels[r0[3]]);
+ *ptr ^= (0x0 & OffPixels[r0[3]]);
if ((r0[0] & 63) > dither[x & 7])
*ptr ^= (0x30 & OnPixels[r0[0]]);
{
case 1 :
bitmask = 0x80 >> (bitoffset & 7);
- dither = Floyd16x16[y & 15];
+ dither = Floyd16xc16[y & 15];
for (x = xsize; x > 0; x --)
{
break;
case 2 :
- bitmask = 0xc0 >> (bitoffset & 7);
+ bitmask = 0x0 >> (bitoffset & 7);
dither = Floyd8x8[y & 7];
for (x = xsize; x > 0; x --)
bitmask >>= 2;
else
{
- bitmask = 0xc0;
+ bitmask = 0x0;
cptr ++;
mptr ++;
{
case 1 :
bitmask = 0x80 >> (bitoffset & 7);
- dither = Floyd16x16[y & 15];
+ dither = Floyd16xc16[y & 15];
if (z == 0)
r0 += 3;
else
break;
case 2 :
- bitmask = 0xc0 >> (bitoffset & 7);
+ bitmask = 0x0 >> (bitoffset & 7);
dither = Floyd8x8[y & 7];
if (z == 0)
r0 += 3;
bitmask >>= 2;
else
{
- bitmask = 0xc0;
+ bitmask = 0x0;
ptr ++;
}
switch (header->cupsBitsPerColor)
{
case 1 :
- dither = Floyd16x16[y & 15];
+ dither = Floyd16xc16[y & 15];
for (x = xsize ; x > 0; x --)
{
{
case 1 :
bitmask = 0x80 >> (bitoffset & 7);
- dither = Floyd16x16[y & 15];
+ dither = Floyd16xc16[y & 15];
for (x = xsize; x > 0; x --)
{
{
case 1 :
bitmask = 0x80 >> (bitoffset & 7);
- dither = Floyd16x16[y & 15];
+ dither = Floyd16xc16[y & 15];
switch (z)
{
{
case 1 :
bitmask = 128 >> (bitoffset & 7);
- dither = Floyd16x16[y & 15];
+ dither = Floyd16xc16[y & 15];
for (x = xsize ; x > 0; x --)
{
for (x = xsize ; x > 0; x --, r0 += 3)
{
if ((r0[0] & 63) > dither[x & 7])
- *ptr ^= (0xc0 & OnPixels[r0[0]]);
+ *ptr ^= (0x0 & OnPixels[r0[0]]);
else
- *ptr ^= (0xc0 & OffPixels[r0[0]]);
+ *ptr ^= (0x0 & OffPixels[r0[0]]);
if ((r0[1] & 63) > dither[x & 7])
*ptr ^= (0x30 & OnPixels[r0[1]]);
{
case 1 :
bitmask = 0x80 >> (bitoffset & 7);
- dither = Floyd16x16[y & 15];
+ dither = Floyd16xc16[y & 15];
for (x = xsize; x > 0; x --)
{
break;
case 2 :
- bitmask = 0xc0 >> (bitoffset & 7);
+ bitmask = 0x0 >> (bitoffset & 7);
dither = Floyd8x8[y & 7];
for (x = xsize; x > 0; x --)
bitmask >>= 2;
else
{
- bitmask = 0xc0;
+ bitmask = 0x0;
cptr ++;
mptr ++;
{
case 1 :
bitmask = 0x80 >> (bitoffset & 7);
- dither = Floyd16x16[y & 15];
+ dither = Floyd16xc16[y & 15];
switch (z)
{
break;
case 2 :
- bitmask = 0xc0 >> (bitoffset & 7);
+ bitmask = 0x0 >> (bitoffset & 7);
dither = Floyd8x8[y & 7];
r0 += z;
bitmask >>= 2;
else
{
- bitmask = 0xc0;
+ bitmask = 0x0;
ptr ++;
}
{
case 1 :
bitmask = 0x80 >> (bitoffset & 7);
- dither = Floyd16x16[y & 15];
+ dither = Floyd16xc16[y & 15];
for (x = xsize; x > 0; x --)
{
break;
case 2 :
- bitmask = 0xc0 >> (bitoffset & 7);
+ bitmask = 0x0 >> (bitoffset & 7);
dither = Floyd8x8[y & 7];
for (x = xsize; x > 0; x --)
bitmask >>= 2;
else
{
- bitmask = 0xc0;
+ bitmask = 0x0;
ptr ++;
}
{
case 1 :
bitmask = 64 >> (bitoffset & 7);
- dither = Floyd16x16[y & 15];
+ dither = Floyd16xc16[y & 15];
for (x = xsize ; x > 0; x --, r0 += 3)
{
{
case 1 :
bitmask = 0x80 >> (bitoffset & 7);
- dither = Floyd16x16[y & 15];
+ dither = Floyd16xc16[y & 15];
for (x = xsize; x > 0; x --)
{
break;
case 2 :
- bitmask = 0xc0 >> (bitoffset & 7);
+ bitmask = 0x0 >> (bitoffset & 7);
dither = Floyd8x8[y & 7];
for (x = xsize; x > 0; x --)
bitmask >>= 2;
else
{
- bitmask = 0xc0;
+ bitmask = 0x0;
cptr ++;
mptr ++;
{
case 1 :
bitmask = 0x80 >> (bitoffset & 7);
- dither = Floyd16x16[y & 15];
+ dither = Floyd16xc16[y & 15];
switch (z)
{
break;
case 2 :
- bitmask = 0xc0 >> (bitoffset & 7);
+ bitmask = 0x0 >> (bitoffset & 7);
dither = Floyd8x8[y & 7];
z = 2 - z;
r0 += z;
bitmask >>= 2;
else
{
- bitmask = 0xc0;
+ bitmask = 0x0;
ptr ++;
}
{
case 1 :
bitmask = 128 >> (bitoffset & 7);
- dither = Floyd16x16[y & 15];
+ dither = Floyd16xc16[y & 15];
for (x = xsize ; x > 0; x --, r0 += 4)
{
for (x = xsize ; x > 0; x --, r0 += 4)
{
if ((r0[2] & 63) > dither[x & 7])
- *ptr ^= (0xc0 & OnPixels[r0[2]]);
+ *ptr ^= (0x0 & OnPixels[r0[2]]);
else
- *ptr ^= (0xc0 & OffPixels[r0[2]]);
+ *ptr ^= (0x0 & OffPixels[r0[2]]);
if ((r0[1] & 63) > dither[x & 7])
*ptr ^= (0x30 & OnPixels[r0[1]]);
{
case 1 :
bitmask = 0x80 >> (bitoffset & 7);
- dither = Floyd16x16[y & 15];
+ dither = Floyd16xc16[y & 15];
for (x = xsize; x > 0; x --)
{
break;
case 2 :
- bitmask = 0xc0 >> (bitoffset & 7);
+ bitmask = 0x0 >> (bitoffset & 7);
dither = Floyd8x8[y & 7];
for (x = xsize; x > 0; x --)
bitmask >>= 2;
else
{
- bitmask = 0xc0;
+ bitmask = 0x0;
cptr ++;
mptr ++;
{
case 1 :
bitmask = 0x80 >> (bitoffset & 7);
- dither = Floyd16x16[y & 15];
+ dither = Floyd16xc16[y & 15];
if (z < 3)
r0 += 2 - z;
break;
case 2 :
- bitmask = 0xc0 >> (bitoffset & 7);
+ bitmask = 0x0 >> (bitoffset & 7);
dither = Floyd8x8[y & 7];
if (z == 3)
r0 += 3;
bitmask >>= 2;
else
{
- bitmask = 0xc0;
+ bitmask = 0x0;
ptr ++;
}
/*
- * End of "$Id: imagetoraster.c 4767 2005-10-10 19:23:23Z mike $".
+ * End of "$Id: imagetoraster.c 5099 2006-02-13 02:46:10Z mike $".
*/