2 * "$Id: testraster.c 177 2006-06-21 00:20:03Z jlovell $"
4 * Raster test program routines for the Common UNIX Printing System (CUPS).
6 * Copyright 1997-2005 by Easy Software Products.
8 * These coded instructions, statements, and computer programs are the
9 * property of Easy Software Products and are protected by Federal
10 * copyright law. Distribution and use rights for the CUPS Raster source
11 * files are outlined in the GNU Library General Public License, located
12 * in the "pstoraster" directory. If this file is missing or damaged
13 * please contact Easy Software Products at:
15 * Attn: CUPS Licensing Information
16 * Easy Software Products
17 * 44141 Airport View Drive, Suite 204
18 * Hollywood, Maryland 20636 USA
20 * Voice: (301) 373-9600
21 * EMail: cups-info@cups.org
22 * WWW: http://www.cups.org
24 * This code and any derivative of it may be used and distributed
25 * freely under the terms of the GNU General Public License when
26 * used with GNU Ghostscript or its derivatives. Use of the code
27 * (or any derivative of it) with software other than GNU
28 * GhostScript (or its derivatives) is governed by the CUPS license
31 * This file is subject to the Apple OS-Developed Software exception.
38 * Include necessary headers...
43 #include <cups/string.h>
47 * 'main()' - Test the raster read/write functions.
50 int /* O - Exit status */
53 int page
, x
, y
; /* Looping vars */
54 FILE *fp
; /* Raster file */
55 cups_raster_t
*r
; /* Raster stream */
56 cups_page_header2_t header
; /* Page header */
57 unsigned char data
[2048]; /* Raster data */
60 if ((fp
= fopen("test.raster", "wb")) == NULL
)
62 perror("Unable to create test.raster");
66 if ((r
= cupsRasterOpen(fileno(fp
), CUPS_RASTER_WRITE
)) == NULL
)
68 perror("Unable to create raster output stream");
73 for (page
= 0; page
< 4; page
++)
75 memset(&header
, 0, sizeof(header
));
76 header
.cupsWidth
= 256;
77 header
.cupsHeight
= 256;
78 header
.cupsBytesPerLine
= 256;
82 header
.cupsBytesPerLine
*= 2;
83 header
.cupsColorSpace
= CUPS_CSPACE_CMYK
;
84 header
.cupsColorOrder
= CUPS_ORDER_CHUNKED
;
88 header
.cupsColorSpace
= CUPS_CSPACE_K
;
89 header
.cupsColorOrder
= CUPS_ORDER_BANDED
;
94 header
.cupsBytesPerLine
*= 2;
95 header
.cupsBitsPerColor
= 16;
96 header
.cupsBitsPerPixel
= (page
& 1) ? 64 : 16;
100 header
.cupsBitsPerColor
= 8;
101 header
.cupsBitsPerPixel
= (page
& 1) ? 32 : 8;
104 cupsRasterWriteHeader2(r
, &header
);
106 memset(data
, 0, header
.cupsBytesPerLine
);
107 for (y
= 0; y
< 64; y
++)
108 cupsRasterWritePixels(r
, data
, header
.cupsBytesPerLine
);
110 for (x
= 0; x
< header
.cupsBytesPerLine
; x
++)
113 for (y
= 0; y
< 64; y
++)
114 cupsRasterWritePixels(r
, data
, header
.cupsBytesPerLine
);
116 memset(data
, 255, header
.cupsBytesPerLine
);
117 for (y
= 0; y
< 64; y
++)
118 cupsRasterWritePixels(r
, data
, header
.cupsBytesPerLine
);
120 for (x
= 0; x
< header
.cupsBytesPerLine
; x
++)
123 for (y
= 0; y
< 64; y
++)
124 cupsRasterWritePixels(r
, data
, header
.cupsBytesPerLine
);
130 if ((fp
= fopen("test.raster", "rb")) == NULL
)
132 perror("Unable to open test.raster");
136 if ((r
= cupsRasterOpen(fileno(fp
), CUPS_RASTER_READ
)) == NULL
)
138 perror("Unable to create raster input stream");
143 for (page
= 0; page
< 4; page
++)
145 cupsRasterReadHeader2(r
, &header
);
147 printf("Page %d:\n", page
+ 1);
148 printf(" cupsWidth = %d\n", header
.cupsWidth
);
149 printf(" cupsHeight = %d\n", header
.cupsHeight
);
150 printf(" cupsBitsPerColor = %d\n", header
.cupsBitsPerColor
);
151 printf(" cupsBitsPerPixel = %d\n", header
.cupsBitsPerPixel
);
152 printf(" cupsColorSpace = %d\n", header
.cupsColorSpace
);
153 printf(" cupsColorOrder = %d\n", header
.cupsColorOrder
);
154 printf(" cupsBytesPerLine = %d\n", header
.cupsBytesPerLine
);
156 for (y
= 0; y
< 64; y
++)
158 cupsRasterReadPixels(r
, data
, header
.cupsBytesPerLine
);
160 if (data
[0] != 0 || memcmp(data
, data
+ 1, header
.cupsBytesPerLine
- 1))
161 printf(" RASTER LINE %d CORRUPT AT %d (%02X instead of 00!)\n",
165 for (y
= 0; y
< 64; y
++)
167 cupsRasterReadPixels(r
, data
, header
.cupsBytesPerLine
);
169 for (x
= 0; x
< header
.cupsBytesPerLine
; x
++)
170 if (data
[x
] != (x
& 255))
173 if (x
< header
.cupsBytesPerLine
)
174 printf(" RASTER LINE %d CORRUPT AT %d (%02X instead of %02X!)\n",
175 y
+ 64, x
, data
[x
], x
& 255);
178 for (y
= 0; y
< 64; y
++)
180 cupsRasterReadPixels(r
, data
, header
.cupsBytesPerLine
);
182 if (data
[0] != 255 || memcmp(data
, data
+ 1, header
.cupsBytesPerLine
- 1))
183 printf(" RASTER LINE %d CORRUPT AT %d (%02X instead of FF!)\n",
184 y
+ 128, x
, data
[x
]);
187 for (y
= 0; y
< 64; y
++)
189 cupsRasterReadPixels(r
, data
, header
.cupsBytesPerLine
);
191 for (x
= 0; x
< header
.cupsBytesPerLine
; x
++)
192 if (data
[x
] != ((x
/ 4) & 255))
195 if (x
< header
.cupsBytesPerLine
)
196 printf(" RASTER LINE %d CORRUPT AT %d (%02X instead of %02X!)\n",
197 y
+ 192, x
, data
[x
], (x
/ 4) & 255);
209 * End of "$Id: testraster.c 177 2006-06-21 00:20:03Z jlovell $".