]> git.ipfire.org Git - thirdparty/cups.git/blame - doc/help/api-raster.html
Merge changes from CUPS 1.4svn-r8329.
[thirdparty/cups.git] / doc / help / api-raster.html
CommitLineData
745129be 1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
b423cd4c 2<html>
3<!-- SECTION: Programming -->
4<head>
5a738aea
MS
5<title>Raster API</title>
6<meta name="keywords" content="Programming">
8b450588 7<meta name="creator" content="Mini-XML v2.6">
5a738aea
MS
8<style type="text/css"><!--
9BODY {
10 font-family: lucida grande, geneva, helvetica, arial, sans-serif;
11}
12
13H1, H2, H3, H4, H5, H6, P, TD, TH {
14 font-family: lucida grande, geneva, helvetica, arial, sans-serif;
15}
16
17KBD {
18 font-family: monaco, courier, monospace;
19 font-weight: bold;
20}
21
22PRE {
23 font-family: monaco, courier, monospace;
24}
25
26PRE.command {
27 margin-left: 36pt;
28}
29
e4572d57
MS
30P.example {
31 font-style: italic;
32 margin-left: 36pt;
33}
34
5a738aea
MS
35PRE.example {
36 background: #eeeeee;
37 border: dotted thin #999999;
38 margin-left: 36pt;
39 padding: 10px;
40}
41
42PRE.command EM, PRE.example EM {
43 font-family: lucida grande, geneva, helvetica, arial, sans-serif;
44}
45
46P.command {
47 font-family: monaco, courier, monospace;
48 margin-left: 36pt;
49}
50
51P.formula {
52 font-style: italic;
53 margin-left: 36pt;
54}
55
56BLOCKQUOTE {
57 background: #cccccc;
58 border: solid thin #999999;
59 padding: 10pt;
60}
61
e4572d57
MS
62A IMG {
63 border: none;
64}
65
66A:link:hover IMG {
67 background: #f0f0f0;
68 border-radius: 10px;
69 -moz-border-radius: 10px;
70}
71
5a738aea 72A:link, A:visited {
79e1d494 73 font-weight: normal;
5a738aea 74 text-decoration: none;
5a738aea
MS
75}
76
77A:link:hover, A:visited:hover, A:active {
78 text-decoration: underline;
5a738aea
MS
79}
80
81SUB, SUP {
82 font-size: 50%;
83}
84
e4572d57
MS
85TR.data, TD.data, TR.data TD {
86 margin-top: 10pt;
87 padding: 5pt;
88 border-bottom: solid 1pt #999999;
89}
90
91TR.data TH {
92 border-bottom: solid 1pt #999999;
93 padding-top: 10pt;
94 padding-left: 5pt;
95 text-align: left;
96}
97
5a738aea
MS
98DIV.table TABLE {
99 border: solid thin #999999;
100 border-collapse: collapse;
101 border-spacing: 0;
102 margin-left: auto;
103 margin-right: auto;
104}
105
106DIV.table CAPTION {
107 caption-side: top;
108 font-size: 120%;
109 font-style: italic;
110 font-weight: bold;
111 margin-left: auto;
112 margin-right: auto;
113}
114
115DIV.table TABLE TD {
116 border: solid thin #cccccc;
117 padding-top: 5pt;
118}
119
120DIV.table TABLE TH {
121 background: #cccccc;
122 border: none;
123 border-bottom: solid thin #999999;
124}
125
126DIV.figure TABLE {
127 margin-left: auto;
128 margin-right: auto;
129}
130
131DIV.figure CAPTION {
132 caption-side: bottom;
133 font-size: 120%;
134 font-style: italic;
135 font-weight: bold;
136 margin-left: auto;
137 margin-right: auto;
138}
139
140TH.label {
5a738aea
MS
141 text-align: right;
142 vertical-align: top;
143}
144
e4572d57
MS
145TH.sublabel {
146 text-align: right;
147 font-weight: normal;
148}
149
5a738aea
MS
150HR {
151 border: solid thin;
152}
153
154SPAN.info {
e4572d57
MS
155 background: black;
156 border: thin solid black;
157 color: white;
5a738aea
MS
158 font-size: 80%;
159 font-style: italic;
160 font-weight: bold;
161 white-space: nowrap;
162}
163
164H2 SPAN.info, H3 SPAN.info, H4 SPAN.info {
165 float: right;
166 font-size: 100%;
167}
168
169H2.title, H3.title {
170 border-bottom: solid 2pt #000000;
171}
172
e4572d57
MS
173DIV.indent, TABLE.indent {
174 margin-top: 2em;
175 margin-left: auto;
176 margin-right: auto;
177 width: 90%;
178}
179
180TABLE.indent {
181 border-collapse: collapse;
182}
183
184TABLE.indent TD, TABLE.indent TH {
185 padding: 0;
186}
187
188TABLE.list {
189 border-collapse: collapse;
190 margin-left: auto;
191 margin-right: auto;
192 width: 90%;
193}
194
195TABLE.list TH {
196 background: white;
197 border-bottom: solid thin #cccccc;
198 color: #444444;
199 padding-top: 10pt;
200 padding-left: 5pt;
201 text-align: left;
202 vertical-align: bottom;
203 white-space: nowrap;
204}
205
206TABLE.list TH A {
207 color: #4444cc;
208}
209
210TABLE.list TD {
211 border-bottom: solid thin #eeeeee;
212 padding-top: 5pt;
213 padding-left: 5pt;
214}
215
216TABLE.list TR:nth-child(even) {
217 background: #f8f8f8;
218}
219
220TABLE.list TR:nth-child(odd) {
221 background: #f4f4f4;
222}
223
5a738aea
MS
224DT {
225 margin-left: 36pt;
226 margin-top: 12pt;
227}
228
229DD {
230 margin-left: 54pt;
231}
232
233DL.category DT {
234 font-weight: bold;
235}
236
237P.summary {
238 margin-left: 36pt;
239 font-family: monaco, courier, monospace;
240}
241
5a738aea
MS
242DIV.summary TABLE {
243 border: solid thin #999999;
244 border-collapse: collapse;
245 border-spacing: 0;
246 margin: 10px;
247}
248
249DIV.summary TABLE TD, DIV.summary TABLE TH {
250 border: solid thin #999999;
251 padding: 5px;
252 text-align: left;
253 vertical-align: top;
254}
255
256DIV.summary TABLE THEAD TH {
257 background: #eeeeee;
258}
259
260/* API documentation styles... */
261div.body h1 {
262 margin: 0;
263}
264div.body h2 {
265 margin-top: 1.5em;
266}
267div.body h3, div.body h4, div.body h5 {
268 margin-bottom: 0.5em;
269 margin-top: 1.5em;
270}
271.class, .enumeration, .function, .struct, .typedef, .union {
272 border-bottom: solid thin #999999;
273 margin-bottom: 0;
274 margin-top: 2em;
275}
276.description {
277 margin-top: 0.5em;
278}
279code, p.code, pre, ul.code li {
280 font-family: monaco, courier, monospace;
281 font-size: 90%;
282}
283ul.code, ul.contents, ul.subcontents {
284 list-style-type: none;
285 margin: 0;
286 padding-left: 0;
287}
288ul.code li {
289 margin: 0;
290}
291ul.contents > li {
292 margin-top: 1em;
293}
294ul.contents li ul.code, ul.contents li ul.subcontents {
295 padding-left: 2em;
296}
297div.body dl {
298 margin-left: 0;
299 margin-top: 0;
300}
301div.body dt {
302 font-style: italic;
303 margin-left: 0;
304 margin-top: 0;
305}
306div.body dd {
307 margin-bottom: 0.5em;
308}
309
310/* This is just for the HTML files generated with the framedhelp target */
311div.contents {
312 background: #e8e8e8;
313 border: solid thin black;
314 padding: 10px;
315}
316div.contents h1 {
317 font-size: 110%;
318}
319div.contents h2 {
320 font-size: 100%;
321}
322div.contents ul.contents {
323 font-size: 80%;
324}
ac884b6a
MS
325div.contents ul.subcontents li {
326 margin-left: 1em;
327 text-indent: -1em;
328}
5a738aea 329--></style>
b423cd4c 330</head>
331<body>
5a738aea
MS
332<div class='body'>
333<!--
334 "$Id$"
335
336 Raster API header for the Common UNIX Printing System (CUPS).
337
338 Copyright 2008 by Apple Inc.
339
340 These coded instructions, statements, and computer programs are the
341 property of Apple Inc. and are protected by Federal copyright
342 law. Distribution and use rights are outlined in the file "LICENSE.txt"
343 which should have been included with this file. If this file is
344 file is missing or damaged, see the license at "http://www.cups.org/".
345-->
346
5a738aea
MS
347<div class='summary'><table summary='General Information'>
348<thead>
349<tr>
350 <th>Header</th>
351 <th>cups/raster.h</th>
352</tr>
353</thead>
354<tbody>
355<tr>
356 <th>Library</th>
357 <td>-lcupsimage</td>
358</tr>
359<tr>
360 <th>See Also</th>
361 <td>Programming: <a href='api-overview.html'>Introduction to CUPS Programming</a><br>
362 Programming: <a href='api-cups.html'>CUPS API</a><br>
363 Programming: <a href='api-cups.html'>PPD API</a><br>
364 References: <a href='spec-ppd.html'>CUPS PPD Specification</a></td>
365</tr>
366</tbody>
367</table></div>
368<h2 class="title">Contents</h2>
369<ul class="contents">
426c6a59 370<ul class="subcontents">
5a738aea 371<li><a href="#OVERVIEW">Overview</a></li>
79e1d494
MS
372<li><a href="#TASKS">Functions by Task</a><ul class="subcontents">
373<li><a href="#OPENCLOSE">Opening and Closing Raster Streams</a></li>
374<li><a href="#READING">Reading Raster Streams</a></li>
375<li><a href="#WRITING">Writing Raster Streams</a></li>
376</ul></li>
5a738aea
MS
377<li><a href="#FUNCTIONS">Functions</a><ul class="code">
378<li><a href="#cupsRasterClose" title="Close a raster stream.">cupsRasterClose</a></li>
379<li><a href="#cupsRasterInterpretPPD" title="Interpret PPD commands to create a page header.">cupsRasterInterpretPPD</a></li>
380<li><a href="#cupsRasterOpen" title="Open a raster stream.">cupsRasterOpen</a></li>
381<li><a href="#cupsRasterReadHeader" title="Read a raster page header and store it in a
79e1d494 382version 1 page header structure.">cupsRasterReadHeader</a></li>
5a738aea 383<li><a href="#cupsRasterReadHeader2" title="Read a raster page header and store it in a
79e1d494 384version 2 page header structure.">cupsRasterReadHeader2</a></li>
5a738aea 385<li><a href="#cupsRasterReadPixels" title="Read raster pixels.">cupsRasterReadPixels</a></li>
79e1d494 386<li><a href="#cupsRasterWriteHeader" title="Write a raster page header from a version 1 page
5a738aea 387header structure.">cupsRasterWriteHeader</a></li>
79e1d494
MS
388<li><a href="#cupsRasterWriteHeader2" title="Write a raster page header from a version 2
389page header structure.">cupsRasterWriteHeader2</a></li>
5a738aea 390<li><a href="#cupsRasterWritePixels" title="Write raster pixels.">cupsRasterWritePixels</a></li>
8b450588 391</ul></li>
5a738aea 392<li><a href="#TYPES">Data Types</a><ul class="code">
79e1d494
MS
393 <li><a href="#cups_adv_t" title="AdvanceMedia attribute values">cups_adv_t</a></li>
394 <li><a href="#cups_bool_t" title="Types...">cups_bool_t</a></li>
395 <li><a href="#cups_cspace_t" title="CutMedia attribute values">cups_cspace_t</a></li>
396 <li><a href="#cups_cut_t" title="LeadingEdge attribute values">cups_cut_t</a></li>
397 <li><a href="#cups_edge_t" title="Jog attribute values">cups_edge_t</a></li>
5a738aea 398 <li><a href="#cups_interpret_cb_t" title="cupsRasterInterpretPPD callback function">cups_interpret_cb_t</a></li>
79e1d494 399 <li><a href="#cups_jog_t" title="cupsRasterOpen modes">cups_jog_t</a></li>
5a738aea 400 <li><a href="#cups_mode_t" title="cupsRasterOpen modes">cups_mode_t</a></li>
79e1d494
MS
401 <li><a href="#cups_order_t" title="cupsColorOrder attribute values">cups_order_t</a></li>
402 <li><a href="#cups_orient_t" title="The page header structure contains the standard PostScript page device
403dictionary, along with some CUPS-specific parameters that are provided
404by the RIPs...">cups_orient_t</a></li>
5a738aea 405 <li><a href="#cups_page_header2_t" title="Version 2 page header ">cups_page_header2_t</a></li>
79e1d494 406 <li><a href="#cups_page_header_t" title="Version 1 page header ">cups_page_header_t</a></li>
5a738aea
MS
407 <li><a href="#cups_raster_t" title="Raster stream data">cups_raster_t</a></li>
408</ul></li>
409<li><a href="#STRUCTURES">Structures</a><ul class="code">
410 <li><a href="#cups_page_header2_s" title="Version 2 page header ">cups_page_header2_s</a></li>
79e1d494 411 <li><a href="#cups_page_header_s" title="Version 1 page header ">cups_page_header_s</a></li>
5a738aea
MS
412</ul></li>
413<li><a href="#ENUMERATIONS">Constants</a><ul class="code">
414 <li><a href="#cups_adv_e" title="AdvanceMedia attribute values">cups_adv_e</a></li>
415 <li><a href="#cups_bool_e" title="Types...">cups_bool_e</a></li>
416 <li><a href="#cups_cspace_e" title="">cups_cspace_e</a></li>
417 <li><a href="#cups_cut_e" title="">cups_cut_e</a></li>
418 <li><a href="#cups_edge_e" title="">cups_edge_e</a></li>
419 <li><a href="#cups_jog_e" title="">cups_jog_e</a></li>
420 <li><a href="#cups_mode_e" title="">cups_mode_e</a></li>
421 <li><a href="#cups_order_e" title="cupsColorOrder attribute values">cups_order_e</a></li>
422 <li><a href="#cups_orient_e" title="">cups_orient_e</a></li>
423</ul></li>
b423cd4c 424<!--
f7faf1f5 425 "$Id$"
b423cd4c 426
427 Raster API introduction for the Common UNIX Printing System (CUPS).
428
5a738aea
MS
429 Copyright 2007-2008 by Apple Inc.
430 Copyright 1997-2006 by Easy Software Products, all rights reserved.
b423cd4c 431
432 These coded instructions, statements, and computer programs are the
5a738aea
MS
433 property of Apple Inc. and are protected by Federal copyright
434 law. Distribution and use rights are outlined in the file "LICENSE.txt"
435 which should have been included with this file. If this file is
436 file is missing or damaged, see the license at "http://www.cups.org/".
b423cd4c 437-->
438
5a738aea
MS
439<h2 class='title'><a name="OVERVIEW">Overview</a></h2>
440
441<p>The CUPS raster API provides a standard interface for reading and writing
442CUPS raster streams which are used for printing to raster printers. Because the
443raster format is updated from time to time, it is important to use this API to
444avoid incompatibilities with newer versions of CUPS.</p>
445
79e1d494
MS
446<p>Two kinds of CUPS filters use the CUPS raster API - raster image processor
447(RIP) filters such as <code>pstoraster</code> and <code>cgpdftoraster</code>
448(Mac OS X) that produce CUPS raster files and printer driver filters that
449convert CUPS raster files into a format usable by the printer. Printer
450driver filters are by far the most common.</p>
451
5a738aea
MS
452<p>CUPS raster files (<code>application/vnd.cups-raster</code>) consists of
453a stream of raster page descriptions produced by one of the RIP filters such as
454<var>pstoraster</var>, <var>imagetoraster</var>, or
455<var>cgpdftoraster</var>. CUPS raster files are referred to using the
456<a href='#cups_raster_t'><code>cups_raster_t</code></a> type and are
457opened using the <a href='#cupsRasterOpen'><code>cupsRasterOpen</code></a>
458function. For example, to read raster data from the standard input, open
459file descriptor 0:</p>
460
461<pre class="example">
462#include &lt;cups/raster.h&gt;>
463
464<a href="#cups_raster_t">cups_raster_t</a> *ras = <a href="#cupsRasterOpen">cupsRasterOpen</a>(0, CUPS_RASTER_READ);
465</pre>
b423cd4c 466
5a738aea
MS
467<p>Each page of data begins with a page dictionary structure called
468<a href="#cups_page_header2_t"><code>cups_page_header2_t</code></a>. This
469structure contains the colorspace, bits per color, media size, media type,
79e1d494
MS
470hardware resolution, and so forth used for the page.</p>
471
472<blockquote><b>Note:</b>
473
474 <p>Do not confuse the colorspace in the page header with the PPD
475 <tt>ColorModel</tt> keyword. <tt>ColorModel</tt> refers to the general type of
476 color used for a device (Gray, RGB, CMYK, DeviceN) and is often used to
477 select a particular colorspace for the page header along with the associate
478 color profile. The page header colorspace (<tt>cupsColorSpace</tt>) describes
479 both the type and organization of the color data, for example KCMY (black
480 first) instead of CMYK and RGBA (RGB + alpha) instead of RGB.</p>
481
482</blockquote>
483
484<p>You read the page header using the
5a738aea
MS
485<a href="#cupsRasterReadHeader2"><code>cupsRasterReadHeader2</code></a>
486function:</p>
b423cd4c 487
5a738aea
MS
488<pre class="example">
489#include &lt;cups/raster.h&gt;>
b423cd4c 490
5a738aea
MS
491<a href="#cups_raster_t">cups_raster_t</a> *ras = <a href="#cupsRasterOpen">cupsRasterOpen</a>(0, CUPS_RASTER_READ);
492<a href="#cups_page_header2_t">cups_page_header2_t</a> header;
b423cd4c 493
5a738aea
MS
494while (<a href="#cupsRasterReadHeader2">cupsRasterReadHeader2</a>(ras, &amp;header))
495{
496 /* setup this page */
b423cd4c 497
5a738aea
MS
498 /* read raster data */
499
500 /* finish this page */
501}
b423cd4c 502</pre>
503
5a738aea
MS
504<p>After the page dictionary comes the page data which is a full-resolution,
505possibly compressed bitmap representing the page in the printer's output
506colorspace. You read uncompressed raster data using the
507<a href="#cupsRasterReadPixels"><code>cupsRasterReadPixels</code></a>
508function. A <code>for</code> loop is normally used to read the page one line
509at a time:</p>
b423cd4c 510
5a738aea
MS
511<pre class="example">
512#include &lt;cups/raster.h&gt;>
b423cd4c 513
5a738aea
MS
514<a href="#cups_raster_t">cups_raster_t</a> *ras = <a href="#cupsRasterOpen">cupsRasterOpen</a>(0, CUPS_RASTER_READ);
515<a href="#cups_page_header2_t">cups_page_header2_t</a> header;
516int page = 0;
517int y;
518char *buffer;
b423cd4c 519
5a738aea
MS
520while (<a href="#cupsRasterReadHeader2">cupsRasterReadHeader2</a>(ras, &amp;header))
521{
522 /* setup this page */
523 page ++;
524 fprintf(stderr, "PAGE: %d %d\n", page, header.NumCopies);
525
526 /* allocate memory for 1 line */
527 buffer = malloc(header.cupsBytesPerLine);
528
529 /* read raster data */
530 for (y = 0; y &lt; header.cupsHeight; y ++)
531 {
532 if (<a href="#cupsRasterReadPixels">cupsRasterReadPixels</a>(ras, buffer, header.cupsBytesPerLine) == 0)
533 break;
534
79e1d494 535 /* write raster data to printer on stdout */
5a738aea
MS
536 }
537
538 /* finish this page */
539}
540</pre>
541
542<p>When you are done reading the raster data, call the
543<a href="#cupsRasterClose"><code>cupsRasterClose</code></a> function to free
544the memory used to read the raster file:</p>
545
546<pre class="example">
547<a href="#cups_raster_t">cups_raster_t</a> *ras;
548
549<a href="#cupsRasterClose">cupsRasterClose</a>(ras);
550</pre>
79e1d494
MS
551
552
553<h2 class='title'><a name="TASKS">Functions by Task</a></h2>
554
555<h3><a name="OPENCLOSE">Opening and Closing Raster Streams</a></h3>
556
557<ul class="code">
558
559 <li><a href="#cupsRasterClose" title="Close a raster stream.">cupsRasterClose</a></li>
560 <li><a href="#cupsRasterOpen" title="Open a raster stream.">cupsRasterOpen</a></li>
561
562</ul>
563
564<h3><a name="READING">Reading Raster Streams</a></h3>
565
566<ul class="code">
567
568 <li><a href="#cupsRasterReadHeader" title="Read a raster page header and store it in a version 1 page header structure.">cupsRasterReadHeader</a> <span class="info">Deprecated in CUPS 1.2/Mac OS X 10.5</span></li>
569 <li><a href="#cupsRasterReadHeader2" title="Read a raster page header and store it in a version 2 page header structure.">cupsRasterReadHeader2</a></li>
570 <li><a href="#cupsRasterReadPixels" title="Read raster pixels.">cupsRasterReadPixels</a></li>
571
572</ul>
573
574<h3><a name="WRITING">Writing Raster Streams</a></h3>
575
576<ul class="code">
577
578 <li><a href="#cupsRasterInterpretPPD" title="Interpret PPD commands to create a page header.">cupsRasterInterpretPPD</a></li>
75bd9771
MS
579 <li><a href="#cupsRasterWriteHeader" title="Write a raster page header from a version 1 page header structure.">cupsRasterWriteHeader</a> <span class="info">Deprecated in CUPS 1.2/Mac OS X 10.5</span></li>
580 <li><a href="#cupsRasterWriteHeader2" title="Write a raster page header from a version 2 page header structure.">cupsRasterWriteHeader2</a></li>
79e1d494
MS
581 <li><a href="#cupsRasterWritePixels" title="Write raster pixels.">cupsRasterWritePixels</a></li>
582
583</ul>
5a738aea
MS
584<h2 class="title"><a name="FUNCTIONS">Functions</a></h2>
585<h3 class="function"><a name="cupsRasterClose">cupsRasterClose</a></h3>
586<p class="description">Close a raster stream.</p>
587<p class="code">
588void cupsRasterClose (<br>
589&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_raster_t">cups_raster_t</a> *r<br>
590);</p>
591<h4 class="parameters">Parameters</h4>
592<dl>
593<dt>r</dt>
594<dd class="description">Stream to close</dd>
595</dl>
79e1d494
MS
596<h4 class="discussion">Discussion</h4>
597<p class="discussion">The file descriptor associated with the raster stream must be closed
598separately as needed.</p>
599<h3 class="function"><span class="info">&nbsp;CUPS 1.2/Mac OS X 10.5&nbsp;</span><a name="cupsRasterInterpretPPD">cupsRasterInterpretPPD</a></h3>
5a738aea
MS
600<p class="description">Interpret PPD commands to create a page header.</p>
601<p class="code">
602int cupsRasterInterpretPPD (<br>
603&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_page_header2_t">cups_page_header2_t</a> *h,<br>
604&nbsp;&nbsp;&nbsp;&nbsp;ppd_file_t *ppd,<br>
605&nbsp;&nbsp;&nbsp;&nbsp;int num_options,<br>
606&nbsp;&nbsp;&nbsp;&nbsp;cups_option_t *options,<br>
607&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_interpret_cb_t">cups_interpret_cb_t</a> func<br>
608);</p>
609<h4 class="parameters">Parameters</h4>
610<dl>
611<dt>h</dt>
79e1d494 612<dd class="description">Page header to create</dd>
5a738aea
MS
613<dt>ppd</dt>
614<dd class="description">PPD file</dd>
615<dt>num_options</dt>
616<dd class="description">Number of options</dd>
617<dt>options</dt>
618<dd class="description">Options</dd>
619<dt>func</dt>
79e1d494 620<dd class="description">Optional page header callback (<code>NULL</code> for none)</dd>
5a738aea
MS
621</dl>
622<h4 class="returnvalue">Return Value</h4>
623<p class="description">0 on success, -1 on failure</p>
624<h4 class="discussion">Discussion</h4>
79e1d494
MS
625<p class="discussion">This function is used by raster image processing (RIP) filters like
626cgpdftoraster and imagetoraster when writing CUPS raster data for a page.
627It is not used by raster printer driver filters which only read CUPS
628raster data.<br>
629<br>
630
631<code>cupsRasterInterpretPPD</code> does not mark the options in the PPD using
632the &quot;num_options&quot; and &quot;options&quot; arguments. Instead, mark the options with
633<code>cupsMarkOptions</code> and <code>ppdMarkOption</code> prior to calling it -
634this allows for per-page options without manipulating the options array.<br>
5a738aea
MS
635<br>
636The &quot;func&quot; argument specifies an optional callback function that is
26d47ec6 637called prior to the computation of the final raster data. The function
5a738aea 638can make changes to the <a href="#cups_page_header2_t"><code>cups_page_header2_t</code></a> data as needed to use a
26d47ec6 639supported raster format and then returns 0 on success and -1 if the
79e1d494
MS
640requested attributes cannot be supported.<br>
641<br>
5a738aea
MS
642
643<code>cupsRasterInterpretPPD</code> supports a subset of the PostScript language.
644Currently only the <code>[</code>, <code>]</code>, <code><<</code>, <code>>></code>, <code>{</code>,
645<code>}</code>, <code>cleartomark</code>, <code>copy</code>, <code>dup</code>, <code>index</code>,
646<code>pop</code>, <code>roll</code>, <code>setpagedevice</code>, and <code>stopped</code> operators
647are supported.
648
649</p>
650<h3 class="function"><a name="cupsRasterOpen">cupsRasterOpen</a></h3>
651<p class="description">Open a raster stream.</p>
652<p class="code">
653<a href="#cups_raster_t">cups_raster_t</a> *cupsRasterOpen (<br>
654&nbsp;&nbsp;&nbsp;&nbsp;int fd,<br>
655&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_mode_t">cups_mode_t</a> mode<br>
656);</p>
657<h4 class="parameters">Parameters</h4>
658<dl>
659<dt>fd</dt>
660<dd class="description">File descriptor</dd>
661<dt>mode</dt>
79e1d494 662<dd class="description">Mode - <code>CUPS_RASTER_READ</code>, <code>CUPS_RASTER_WRITE</code>, or <code>CUPS_RASTER_WRITE_COMPRESSED</code></dd>
5a738aea
MS
663</dl>
664<h4 class="returnvalue">Return Value</h4>
665<p class="description">New stream</p>
79e1d494
MS
666<h4 class="discussion">Discussion</h4>
667<p class="discussion">This function associates a raster stream with the given file descriptor.
668For most printer driver filters, &quot;fd&quot; will be 0 (stdin). For most raster
669image processor (RIP) filters that generate raster data, &quot;fd&quot; will be 1
670(stdout).<br>
671<br>
672When writing raster data, the <code>CUPS_RASTER_WRITE</code> or
673<code>CUPS_RASTER_WRITE_COMPRESS</code> mode can be used - compressed output
674is generally 25-50% smaller but adds a 100-300% execution time overhead.</p>
675<h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="cupsRasterReadHeader">cupsRasterReadHeader</a></h3>
5a738aea 676<p class="description">Read a raster page header and store it in a
79e1d494 677version 1 page header structure.</p>
5a738aea
MS
678<p class="code">
679unsigned cupsRasterReadHeader (<br>
680&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_raster_t">cups_raster_t</a> *r,<br>
681&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_page_header_t">cups_page_header_t</a> *h<br>
682);</p>
683<h4 class="parameters">Parameters</h4>
684<dl>
685<dt>r</dt>
686<dd class="description">Raster stream</dd>
687<dt>h</dt>
688<dd class="description">Pointer to header data</dd>
689</dl>
690<h4 class="returnvalue">Return Value</h4>
79e1d494
MS
691<p class="description">1 on success, 0 on failure/end-of-file</p>
692<h4 class="discussion">Discussion</h4>
693<p class="discussion">This function is deprecated. Use <a href="#cupsRasterReadHeader2"><code>cupsRasterReadHeader2</code></a> instead.<br>
694<br>
695Version 1 page headers were used in CUPS 1.0 and 1.1 and contain a subset
696of the version 2 page header data. This function handles reading version 2
697page headers and copying only the version 1 data into the provided buffer.
698
699</p>
700<h3 class="function"><span class="info">&nbsp;CUPS 1.2/Mac OS X 10.5&nbsp;</span><a name="cupsRasterReadHeader2">cupsRasterReadHeader2</a></h3>
5a738aea 701<p class="description">Read a raster page header and store it in a
79e1d494 702version 2 page header structure.</p>
5a738aea
MS
703<p class="code">
704unsigned cupsRasterReadHeader2 (<br>
705&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_raster_t">cups_raster_t</a> *r,<br>
706&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_page_header2_t">cups_page_header2_t</a> *h<br>
707);</p>
708<h4 class="parameters">Parameters</h4>
709<dl>
710<dt>r</dt>
711<dd class="description">Raster stream</dd>
712<dt>h</dt>
713<dd class="description">Pointer to header data</dd>
714</dl>
715<h4 class="returnvalue">Return Value</h4>
79e1d494 716<p class="description">1 on success, 0 on failure/end-of-file</p>
5a738aea
MS
717<h3 class="function"><a name="cupsRasterReadPixels">cupsRasterReadPixels</a></h3>
718<p class="description">Read raster pixels.</p>
719<p class="code">
720unsigned cupsRasterReadPixels (<br>
721&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_raster_t">cups_raster_t</a> *r,<br>
722&nbsp;&nbsp;&nbsp;&nbsp;unsigned char *p,<br>
723&nbsp;&nbsp;&nbsp;&nbsp;unsigned len<br>
724);</p>
725<h4 class="parameters">Parameters</h4>
726<dl>
727<dt>r</dt>
728<dd class="description">Raster stream</dd>
729<dt>p</dt>
730<dd class="description">Pointer to pixel buffer</dd>
731<dt>len</dt>
732<dd class="description">Number of bytes to read</dd>
733</dl>
734<h4 class="returnvalue">Return Value</h4>
735<p class="description">Number of bytes read</p>
79e1d494
MS
736<h4 class="discussion">Discussion</h4>
737<p class="discussion">For best performance, filters should read one or more whole lines.
738The &quot;cupsBytesPerLine&quot; value from the page header can be used to allocate
739the line buffer and as the number of bytes to read.</p>
740<h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="cupsRasterWriteHeader">cupsRasterWriteHeader</a></h3>
741<p class="description">Write a raster page header from a version 1 page
5a738aea
MS
742header structure.</p>
743<p class="code">
744unsigned cupsRasterWriteHeader (<br>
745&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_raster_t">cups_raster_t</a> *r,<br>
746&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_page_header_t">cups_page_header_t</a> *h<br>
747);</p>
748<h4 class="parameters">Parameters</h4>
749<dl>
750<dt>r</dt>
751<dd class="description">Raster stream</dd>
752<dt>h</dt>
753<dd class="description">Raster page header</dd>
754</dl>
755<h4 class="returnvalue">Return Value</h4>
756<p class="description">1 on success, 0 on failure</p>
79e1d494
MS
757<h4 class="discussion">Discussion</h4>
758<p class="discussion">This function is deprecated. Use <a href="#cupsRasterWriteHeader2"><code>cupsRasterWriteHeader2</code></a> instead.
759
760</p>
761<h3 class="function"><span class="info">&nbsp;CUPS 1.2/Mac OS X 10.5&nbsp;</span><a name="cupsRasterWriteHeader2">cupsRasterWriteHeader2</a></h3>
762<p class="description">Write a raster page header from a version 2
763page header structure.</p>
5a738aea
MS
764<p class="code">
765unsigned cupsRasterWriteHeader2 (<br>
766&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_raster_t">cups_raster_t</a> *r,<br>
767&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_page_header2_t">cups_page_header2_t</a> *h<br>
768);</p>
769<h4 class="parameters">Parameters</h4>
770<dl>
771<dt>r</dt>
772<dd class="description">Raster stream</dd>
773<dt>h</dt>
774<dd class="description">Raster page header</dd>
775</dl>
776<h4 class="returnvalue">Return Value</h4>
777<p class="description">1 on success, 0 on failure</p>
79e1d494
MS
778<h4 class="discussion">Discussion</h4>
779<p class="discussion">The page header can be initialized using <a href="#cupsRasterInterpretPPD"><code>cupsRasterInterpretPPD</code></a>.
780
781</p>
5a738aea
MS
782<h3 class="function"><a name="cupsRasterWritePixels">cupsRasterWritePixels</a></h3>
783<p class="description">Write raster pixels.</p>
784<p class="code">
785unsigned cupsRasterWritePixels (<br>
786&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_raster_t">cups_raster_t</a> *r,<br>
787&nbsp;&nbsp;&nbsp;&nbsp;unsigned char *p,<br>
788&nbsp;&nbsp;&nbsp;&nbsp;unsigned len<br>
789);</p>
790<h4 class="parameters">Parameters</h4>
791<dl>
792<dt>r</dt>
793<dd class="description">Raster stream</dd>
794<dt>p</dt>
795<dd class="description">Bytes to write</dd>
796<dt>len</dt>
797<dd class="description">Number of bytes to write</dd>
798</dl>
799<h4 class="returnvalue">Return Value</h4>
800<p class="description">Number of bytes written</p>
79e1d494
MS
801<h4 class="discussion">Discussion</h4>
802<p class="discussion">For best performance, filters should write one or more whole lines.
803The &quot;cupsBytesPerLine&quot; value from the page header can be used to allocate
804the line buffer and as the number of bytes to write.</p>
5a738aea 805<h2 class="title"><a name="TYPES">Data Types</a></h2>
79e1d494
MS
806<h3 class="typedef"><a name="cups_adv_t">cups_adv_t</a></h3>
807<p class="description">AdvanceMedia attribute values</p>
808<p class="code">
809typedef enum <a href="#cups_adv_e">cups_adv_e</a> cups_adv_t;
810</p>
811<h3 class="typedef"><a name="cups_bool_t">cups_bool_t</a></h3>
812<p class="description">Types...</p>
813<p class="code">
814typedef enum <a href="#cups_bool_e">cups_bool_e</a> cups_bool_t;
815</p>
816<h3 class="typedef"><a name="cups_cspace_t">cups_cspace_t</a></h3>
817<p class="description">CutMedia attribute values</p>
818<p class="code">
819typedef enum <a href="#cups_cspace_e">cups_cspace_e</a> cups_cspace_t;
820</p>
821<h3 class="typedef"><a name="cups_cut_t">cups_cut_t</a></h3>
822<p class="description">LeadingEdge attribute values</p>
823<p class="code">
824typedef enum <a href="#cups_cut_e">cups_cut_e</a> cups_cut_t;
825</p>
826<h3 class="typedef"><a name="cups_edge_t">cups_edge_t</a></h3>
827<p class="description">Jog attribute values</p>
828<p class="code">
829typedef enum <a href="#cups_edge_e">cups_edge_e</a> cups_edge_t;
830</p>
5a738aea
MS
831<h3 class="typedef"><a name="cups_interpret_cb_t">cups_interpret_cb_t</a></h3>
832<p class="description">cupsRasterInterpretPPD callback function</p>
833<p class="code">
834typedef int (*cups_interpret_cb_t)(<a href="#cups_page_header2_t">cups_page_header2_t</a> *header, int preferred_bits);
835</p>
79e1d494
MS
836<h3 class="typedef"><a name="cups_jog_t">cups_jog_t</a></h3>
837<p class="description">cupsRasterOpen modes</p>
838<p class="code">
839typedef enum <a href="#cups_jog_e">cups_jog_e</a> cups_jog_t;
840</p>
5a738aea
MS
841<h3 class="typedef"><a name="cups_mode_t">cups_mode_t</a></h3>
842<p class="description">cupsRasterOpen modes</p>
843<p class="code">
844typedef enum <a href="#cups_mode_e">cups_mode_e</a> cups_mode_t;
845</p>
79e1d494
MS
846<h3 class="typedef"><a name="cups_order_t">cups_order_t</a></h3>
847<p class="description">cupsColorOrder attribute values</p>
848<p class="code">
849typedef enum <a href="#cups_order_e">cups_order_e</a> cups_order_t;
850</p>
851<h3 class="typedef"><a name="cups_orient_t">cups_orient_t</a></h3>
852<p class="description">The page header structure contains the standard PostScript page device
853dictionary, along with some CUPS-specific parameters that are provided
854by the RIPs...</p>
855<p class="code">
856typedef enum <a href="#cups_orient_e">cups_orient_e</a> cups_orient_t;
857</p>
858<h3 class="typedef"><span class="info">&nbsp;CUPS 1.2/Mac OS X 10.5&nbsp;</span><a name="cups_page_header2_t">cups_page_header2_t</a></h3>
5a738aea
MS
859<p class="description">Version 2 page header </p>
860<p class="code">
861typedef struct <a href="#cups_page_header2_s">cups_page_header2_s</a> cups_page_header2_t;
862</p>
79e1d494
MS
863<h3 class="typedef"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="cups_page_header_t">cups_page_header_t</a></h3>
864<p class="description">Version 1 page header </p>
5a738aea
MS
865<p class="code">
866typedef struct <a href="#cups_page_header_s">cups_page_header_s</a> cups_page_header_t;
867</p>
868<h3 class="typedef"><a name="cups_raster_t">cups_raster_t</a></h3>
869<p class="description">Raster stream data</p>
870<p class="code">
b423cd4c 871typedef struct _cups_raster_s cups_raster_t;
5a738aea
MS
872</p>
873<h2 class="title"><a name="STRUCTURES">Structures</a></h2>
79e1d494 874<h3 class="struct"><span class="info">&nbsp;CUPS 1.2/Mac OS X 10.5&nbsp;</span><a name="cups_page_header2_s">cups_page_header2_s</a></h3>
5a738aea
MS
875<p class="description">Version 2 page header </p>
876<p class="code">struct cups_page_header2_s {<br>
877&nbsp;&nbsp;&nbsp;&nbsp;unsigned AdvanceDistance;<br>
79e1d494
MS
878&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_adv_t">cups_adv_t</a> AdvanceMedia;<br>
879&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_bool_t">cups_bool_t</a> Collate;<br>
880&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_cut_t">cups_cut_t</a> CutMedia;<br>
881&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_bool_t">cups_bool_t</a> Duplex;<br>
5a738aea
MS
882&nbsp;&nbsp;&nbsp;&nbsp;unsigned HWResolution[2];<br>
883&nbsp;&nbsp;&nbsp;&nbsp;unsigned ImagingBoundingBox[4];<br>
79e1d494
MS
884&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_bool_t">cups_bool_t</a> InsertSheet;<br>
885&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_jog_t">cups_jog_t</a> Jog;<br>
886&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_edge_t">cups_edge_t</a> LeadingEdge;<br>
887&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_bool_t">cups_bool_t</a> ManualFeed;<br>
5a738aea
MS
888&nbsp;&nbsp;&nbsp;&nbsp;unsigned Margins[2];<br>
889&nbsp;&nbsp;&nbsp;&nbsp;char MediaClass[64];<br>
890&nbsp;&nbsp;&nbsp;&nbsp;char MediaColor[64];<br>
891&nbsp;&nbsp;&nbsp;&nbsp;unsigned MediaPosition;<br>
892&nbsp;&nbsp;&nbsp;&nbsp;char MediaType[64];<br>
893&nbsp;&nbsp;&nbsp;&nbsp;unsigned MediaWeight;<br>
79e1d494
MS
894&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_bool_t">cups_bool_t</a> MirrorPrint;<br>
895&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_bool_t">cups_bool_t</a> NegativePrint;<br>
5a738aea 896&nbsp;&nbsp;&nbsp;&nbsp;unsigned NumCopies;<br>
79e1d494
MS
897&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_orient_t">cups_orient_t</a> Orientation;<br>
898&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_bool_t">cups_bool_t</a> OutputFaceUp;<br>
5a738aea
MS
899&nbsp;&nbsp;&nbsp;&nbsp;char OutputType[64];<br>
900&nbsp;&nbsp;&nbsp;&nbsp;unsigned PageSize[2];<br>
79e1d494
MS
901&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_bool_t">cups_bool_t</a> Separations;<br>
902&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_bool_t">cups_bool_t</a> TraySwitch;<br>
903&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_bool_t">cups_bool_t</a> Tumble;<br>
5a738aea
MS
904&nbsp;&nbsp;&nbsp;&nbsp;unsigned cupsBitsPerColor;<br>
905&nbsp;&nbsp;&nbsp;&nbsp;unsigned cupsBitsPerPixel;<br>
906&nbsp;&nbsp;&nbsp;&nbsp;float cupsBorderlessScalingFactor;<br>
907&nbsp;&nbsp;&nbsp;&nbsp;unsigned cupsBytesPerLine;<br>
79e1d494
MS
908&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_order_t">cups_order_t</a> cupsColorOrder;<br>
909&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_cspace_t">cups_cspace_t</a> cupsColorSpace;<br>
5a738aea
MS
910&nbsp;&nbsp;&nbsp;&nbsp;unsigned cupsCompression;<br>
911&nbsp;&nbsp;&nbsp;&nbsp;unsigned cupsHeight;<br>
912&nbsp;&nbsp;&nbsp;&nbsp;float cupsImagingBBox[4];<br>
913&nbsp;&nbsp;&nbsp;&nbsp;unsigned cupsInteger[16];<br>
914&nbsp;&nbsp;&nbsp;&nbsp;char cupsMarkerType[64];<br>
915&nbsp;&nbsp;&nbsp;&nbsp;unsigned cupsMediaType;<br>
916&nbsp;&nbsp;&nbsp;&nbsp;unsigned cupsNumColors;<br>
917&nbsp;&nbsp;&nbsp;&nbsp;char cupsPageSizeName[64];<br>
918&nbsp;&nbsp;&nbsp;&nbsp;float cupsPageSize[2];<br>
919&nbsp;&nbsp;&nbsp;&nbsp;float cupsReal[16];<br>
920&nbsp;&nbsp;&nbsp;&nbsp;char cupsRenderingIntent[64];<br>
921&nbsp;&nbsp;&nbsp;&nbsp;unsigned cupsRowCount;<br>
922&nbsp;&nbsp;&nbsp;&nbsp;unsigned cupsRowFeed;<br>
923&nbsp;&nbsp;&nbsp;&nbsp;unsigned cupsRowStep;<br>
924&nbsp;&nbsp;&nbsp;&nbsp;char cupsString[16][64];<br>
925&nbsp;&nbsp;&nbsp;&nbsp;unsigned cupsWidth;<br>
926};</p>
927<h4 class="members">Members</h4>
928<dl>
929<dt>AdvanceDistance </dt>
930<dd class="description">AdvanceDistance value in points</dd>
931<dt>AdvanceMedia </dt>
79e1d494 932<dd class="description">AdvanceMedia value (<a href="#cups_adv_t"><code>cups_adv_t</code></a>)</dd>
5a738aea
MS
933<dt>Collate </dt>
934<dd class="description">Collated copies value</dd>
935<dt>CutMedia </dt>
79e1d494 936<dd class="description">CutMedia value (<a href="#cups_cut_t"><code>cups_cut_t</code></a>)</dd>
5a738aea
MS
937<dt>Duplex </dt>
938<dd class="description">Duplexed (double-sided) value</dd>
939<dt>HWResolution[2] </dt>
940<dd class="description">Resolution in dots-per-inch</dd>
941<dt>ImagingBoundingBox[4] </dt>
79e1d494 942<dd class="description">Pixel region that is painted (points, left, bottom, right, top)</dd>
5a738aea
MS
943<dt>InsertSheet </dt>
944<dd class="description">InsertSheet value</dd>
945<dt>Jog </dt>
79e1d494 946<dd class="description">Jog value (<a href="#cups_jog_t"><code>cups_jog_t</code></a>)</dd>
5a738aea 947<dt>LeadingEdge </dt>
79e1d494 948<dd class="description">LeadingEdge value (<a href="#cups_edge_t"><code>cups_edge_t</code></a>)</dd>
5a738aea
MS
949<dt>ManualFeed </dt>
950<dd class="description">ManualFeed value</dd>
951<dt>Margins[2] </dt>
952<dd class="description">Lower-lefthand margins in points</dd>
953<dt>MediaClass[64] </dt>
954<dd class="description">MediaClass string</dd>
955<dt>MediaColor[64] </dt>
956<dd class="description">MediaColor string</dd>
957<dt>MediaPosition </dt>
958<dd class="description">MediaPosition value</dd>
959<dt>MediaType[64] </dt>
960<dd class="description">MediaType string</dd>
961<dt>MediaWeight </dt>
962<dd class="description">MediaWeight value in grams/m^2</dd>
963<dt>MirrorPrint </dt>
964<dd class="description">MirrorPrint value</dd>
965<dt>NegativePrint </dt>
966<dd class="description">NegativePrint value</dd>
967<dt>NumCopies </dt>
968<dd class="description">Number of copies to produce</dd>
969<dt>Orientation </dt>
79e1d494 970<dd class="description">Orientation value (<a href="#cups_orient_t"><code>cups_orient_t</code></a>)</dd>
5a738aea
MS
971<dt>OutputFaceUp </dt>
972<dd class="description">OutputFaceUp value</dd>
973<dt>OutputType[64] </dt>
974<dd class="description">OutputType string</dd>
975<dt>PageSize[2] </dt>
976<dd class="description">Width and length of page in points</dd>
977<dt>Separations </dt>
978<dd class="description">Separations value</dd>
979<dt>TraySwitch </dt>
980<dd class="description">TraySwitch value</dd>
981<dt>Tumble </dt>
982<dd class="description">Tumble value</dd>
983<dt>cupsBitsPerColor </dt>
984<dd class="description">Number of bits for each color</dd>
985<dt>cupsBitsPerPixel </dt>
986<dd class="description">Number of bits for each pixel</dd>
79e1d494 987<dt>cupsBorderlessScalingFactor <span class="info">&nbsp;CUPS 1.2/Mac OS X 10.5&nbsp;</span></dt>
5a738aea
MS
988<dd class="description">Scaling that was applied to page data </dd>
989<dt>cupsBytesPerLine </dt>
990<dd class="description">Number of bytes per line</dd>
991<dt>cupsColorOrder </dt>
992<dd class="description">Order of colors</dd>
993<dt>cupsColorSpace </dt>
994<dd class="description">True colorspace</dd>
995<dt>cupsCompression </dt>
996<dd class="description">Device compression to use</dd>
997<dt>cupsHeight </dt>
998<dd class="description">Height of page image in pixels</dd>
79e1d494
MS
999<dt>cupsImagingBBox[4] <span class="info">&nbsp;CUPS 1.2/Mac OS X 10.5&nbsp;</span></dt>
1000<dd class="description">Floating point ImagingBoundingBox
1001(scaling factor not applied, left,
1002bottom, right, top) </dd>
1003<dt>cupsInteger[16] <span class="info">&nbsp;CUPS 1.2/Mac OS X 10.5&nbsp;</span></dt>
5a738aea 1004<dd class="description">User-defined integer values </dd>
79e1d494 1005<dt>cupsMarkerType[64] <span class="info">&nbsp;CUPS 1.2/Mac OS X 10.5&nbsp;</span></dt>
5a738aea
MS
1006<dd class="description">Ink/toner type </dd>
1007<dt>cupsMediaType </dt>
1008<dd class="description">Media type code</dd>
79e1d494
MS
1009<dt>cupsNumColors <span class="info">&nbsp;CUPS 1.2/Mac OS X 10.5&nbsp;</span></dt>
1010<dd class="description">Number of color compoents </dd>
1011<dt>cupsPageSizeName[64] <span class="info">&nbsp;CUPS 1.2/Mac OS X 10.5&nbsp;</span></dt>
5a738aea 1012<dd class="description">PageSize name </dd>
79e1d494 1013<dt>cupsPageSize[2] <span class="info">&nbsp;CUPS 1.2/Mac OS X 10.5&nbsp;</span></dt>
5a738aea
MS
1014<dd class="description">Floating point PageSize (scaling *
1015factor not applied) </dd>
79e1d494 1016<dt>cupsReal[16] <span class="info">&nbsp;CUPS 1.2/Mac OS X 10.5&nbsp;</span></dt>
5a738aea 1017<dd class="description">User-defined floating-point values </dd>
79e1d494 1018<dt>cupsRenderingIntent[64] <span class="info">&nbsp;CUPS 1.2/Mac OS X 10.5&nbsp;</span></dt>
5a738aea
MS
1019<dd class="description">Color rendering intent </dd>
1020<dt>cupsRowCount </dt>
1021<dd class="description">Rows per band</dd>
1022<dt>cupsRowFeed </dt>
1023<dd class="description">Feed between bands</dd>
1024<dt>cupsRowStep </dt>
1025<dd class="description">Spacing between lines</dd>
79e1d494 1026<dt>cupsString[16][64] <span class="info">&nbsp;CUPS 1.2/Mac OS X 10.5&nbsp;</span></dt>
5a738aea
MS
1027<dd class="description">User-defined string values </dd>
1028<dt>cupsWidth </dt>
1029<dd class="description">Width of page image in pixels</dd>
1030</dl>
79e1d494
MS
1031<h3 class="struct"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="cups_page_header_s">cups_page_header_s</a></h3>
1032<p class="description">Version 1 page header </p>
5a738aea
MS
1033<p class="code">struct cups_page_header_s {<br>
1034&nbsp;&nbsp;&nbsp;&nbsp;unsigned AdvanceDistance;<br>
79e1d494
MS
1035&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_adv_t">cups_adv_t</a> AdvanceMedia;<br>
1036&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_bool_t">cups_bool_t</a> Collate;<br>
1037&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_cut_t">cups_cut_t</a> CutMedia;<br>
1038&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_bool_t">cups_bool_t</a> Duplex;<br>
5a738aea
MS
1039&nbsp;&nbsp;&nbsp;&nbsp;unsigned HWResolution[2];<br>
1040&nbsp;&nbsp;&nbsp;&nbsp;unsigned ImagingBoundingBox[4];<br>
79e1d494
MS
1041&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_bool_t">cups_bool_t</a> InsertSheet;<br>
1042&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_jog_t">cups_jog_t</a> Jog;<br>
1043&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_edge_t">cups_edge_t</a> LeadingEdge;<br>
1044&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_bool_t">cups_bool_t</a> ManualFeed;<br>
5a738aea
MS
1045&nbsp;&nbsp;&nbsp;&nbsp;unsigned Margins[2];<br>
1046&nbsp;&nbsp;&nbsp;&nbsp;char MediaClass[64];<br>
1047&nbsp;&nbsp;&nbsp;&nbsp;char MediaColor[64];<br>
1048&nbsp;&nbsp;&nbsp;&nbsp;unsigned MediaPosition;<br>
1049&nbsp;&nbsp;&nbsp;&nbsp;char MediaType[64];<br>
1050&nbsp;&nbsp;&nbsp;&nbsp;unsigned MediaWeight;<br>
79e1d494
MS
1051&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_bool_t">cups_bool_t</a> MirrorPrint;<br>
1052&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_bool_t">cups_bool_t</a> NegativePrint;<br>
5a738aea 1053&nbsp;&nbsp;&nbsp;&nbsp;unsigned NumCopies;<br>
79e1d494
MS
1054&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_orient_t">cups_orient_t</a> Orientation;<br>
1055&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_bool_t">cups_bool_t</a> OutputFaceUp;<br>
5a738aea
MS
1056&nbsp;&nbsp;&nbsp;&nbsp;char OutputType[64];<br>
1057&nbsp;&nbsp;&nbsp;&nbsp;unsigned PageSize[2];<br>
79e1d494
MS
1058&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_bool_t">cups_bool_t</a> Separations;<br>
1059&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_bool_t">cups_bool_t</a> TraySwitch;<br>
1060&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_bool_t">cups_bool_t</a> Tumble;<br>
5a738aea
MS
1061&nbsp;&nbsp;&nbsp;&nbsp;unsigned cupsBitsPerColor;<br>
1062&nbsp;&nbsp;&nbsp;&nbsp;unsigned cupsBitsPerPixel;<br>
1063&nbsp;&nbsp;&nbsp;&nbsp;unsigned cupsBytesPerLine;<br>
79e1d494
MS
1064&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_order_t">cups_order_t</a> cupsColorOrder;<br>
1065&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_cspace_t">cups_cspace_t</a> cupsColorSpace;<br>
5a738aea
MS
1066&nbsp;&nbsp;&nbsp;&nbsp;unsigned cupsCompression;<br>
1067&nbsp;&nbsp;&nbsp;&nbsp;unsigned cupsHeight;<br>
1068&nbsp;&nbsp;&nbsp;&nbsp;unsigned cupsMediaType;<br>
1069&nbsp;&nbsp;&nbsp;&nbsp;unsigned cupsRowCount;<br>
1070&nbsp;&nbsp;&nbsp;&nbsp;unsigned cupsRowFeed;<br>
1071&nbsp;&nbsp;&nbsp;&nbsp;unsigned cupsRowStep;<br>
1072&nbsp;&nbsp;&nbsp;&nbsp;unsigned cupsWidth;<br>
1073};</p>
1074<h4 class="members">Members</h4>
1075<dl>
1076<dt>AdvanceDistance </dt>
1077<dd class="description">AdvanceDistance value in points</dd>
1078<dt>AdvanceMedia </dt>
79e1d494 1079<dd class="description">AdvanceMedia value (<a href="#cups_adv_t"><code>cups_adv_t</code></a>)</dd>
5a738aea
MS
1080<dt>Collate </dt>
1081<dd class="description">Collated copies value</dd>
1082<dt>CutMedia </dt>
79e1d494 1083<dd class="description">CutMedia value (<a href="#cups_cut_t"><code>cups_cut_t</code></a>)</dd>
5a738aea
MS
1084<dt>Duplex </dt>
1085<dd class="description">Duplexed (double-sided) value</dd>
1086<dt>HWResolution[2] </dt>
1087<dd class="description">Resolution in dots-per-inch</dd>
1088<dt>ImagingBoundingBox[4] </dt>
79e1d494 1089<dd class="description">Pixel region that is painted (points, left, bottom, right, top)</dd>
5a738aea
MS
1090<dt>InsertSheet </dt>
1091<dd class="description">InsertSheet value</dd>
1092<dt>Jog </dt>
79e1d494 1093<dd class="description">Jog value (<a href="#cups_jog_t"><code>cups_jog_t</code></a>)</dd>
5a738aea 1094<dt>LeadingEdge </dt>
79e1d494 1095<dd class="description">LeadingEdge value (<a href="#cups_edge_t"><code>cups_edge_t</code></a>)</dd>
5a738aea
MS
1096<dt>ManualFeed </dt>
1097<dd class="description">ManualFeed value</dd>
1098<dt>Margins[2] </dt>
1099<dd class="description">Lower-lefthand margins in points</dd>
1100<dt>MediaClass[64] </dt>
1101<dd class="description">MediaClass string</dd>
1102<dt>MediaColor[64] </dt>
1103<dd class="description">MediaColor string</dd>
1104<dt>MediaPosition </dt>
1105<dd class="description">MediaPosition value</dd>
1106<dt>MediaType[64] </dt>
1107<dd class="description">MediaType string</dd>
1108<dt>MediaWeight </dt>
1109<dd class="description">MediaWeight value in grams/m^2</dd>
1110<dt>MirrorPrint </dt>
1111<dd class="description">MirrorPrint value</dd>
1112<dt>NegativePrint </dt>
1113<dd class="description">NegativePrint value</dd>
1114<dt>NumCopies </dt>
1115<dd class="description">Number of copies to produce</dd>
1116<dt>Orientation </dt>
79e1d494 1117<dd class="description">Orientation value (<a href="#cups_orient_t"><code>cups_orient_t</code></a>)</dd>
5a738aea
MS
1118<dt>OutputFaceUp </dt>
1119<dd class="description">OutputFaceUp value</dd>
1120<dt>OutputType[64] </dt>
1121<dd class="description">OutputType string</dd>
1122<dt>PageSize[2] </dt>
1123<dd class="description">Width and length of page in points</dd>
1124<dt>Separations </dt>
1125<dd class="description">Separations value</dd>
1126<dt>TraySwitch </dt>
1127<dd class="description">TraySwitch value</dd>
1128<dt>Tumble </dt>
1129<dd class="description">Tumble value</dd>
1130<dt>cupsBitsPerColor </dt>
1131<dd class="description">Number of bits for each color</dd>
1132<dt>cupsBitsPerPixel </dt>
1133<dd class="description">Number of bits for each pixel</dd>
1134<dt>cupsBytesPerLine </dt>
1135<dd class="description">Number of bytes per line</dd>
1136<dt>cupsColorOrder </dt>
1137<dd class="description">Order of colors</dd>
1138<dt>cupsColorSpace </dt>
1139<dd class="description">True colorspace</dd>
1140<dt>cupsCompression </dt>
1141<dd class="description">Device compression to use</dd>
1142<dt>cupsHeight </dt>
1143<dd class="description">Height of page image in pixels</dd>
1144<dt>cupsMediaType </dt>
1145<dd class="description">Media type code</dd>
1146<dt>cupsRowCount </dt>
1147<dd class="description">Rows per band</dd>
1148<dt>cupsRowFeed </dt>
1149<dd class="description">Feed between bands</dd>
1150<dt>cupsRowStep </dt>
1151<dd class="description">Spacing between lines</dd>
1152<dt>cupsWidth </dt>
1153<dd class="description">Width of page image in pixels</dd>
1154</dl>
1155<h2 class="title"><a name="ENUMERATIONS">Constants</a></h2>
1156<h3 class="enumeration"><a name="cups_adv_e">cups_adv_e</a></h3>
1157<p class="description">AdvanceMedia attribute values</p>
1158<h4 class="constants">Constants</h4>
1159<dl>
1160<dt>CUPS_ADVANCE_FILE </dt>
1161<dd class="description">Advance the roll after this file</dd>
1162<dt>CUPS_ADVANCE_JOB </dt>
1163<dd class="description">Advance the roll after this job</dd>
1164<dt>CUPS_ADVANCE_NONE </dt>
1165<dd class="description">Never advance the roll</dd>
1166<dt>CUPS_ADVANCE_PAGE </dt>
1167<dd class="description">Advance the roll after this page</dd>
1168<dt>CUPS_ADVANCE_SET </dt>
1169<dd class="description">Advance the roll after this set</dd>
1170</dl>
1171<h3 class="enumeration"><a name="cups_bool_e">cups_bool_e</a></h3>
1172<p class="description">Types...</p>
1173<h4 class="constants">Constants</h4>
1174<dl>
1175<dt>CUPS_FALSE </dt>
1176<dd class="description">Logical false</dd>
1177<dt>CUPS_TRUE </dt>
1178<dd class="description">Logical true</dd>
1179</dl>
1180<h3 class="enumeration"><a name="cups_cspace_e">cups_cspace_e</a></h3>
1181<p class="description"></p>
1182<h4 class="constants">Constants</h4>
1183<dl>
426c6a59 1184<dt>CUPS_CSPACE_CIELab <span class="info">&nbsp;CUPS 1.1.19/Mac OS X 10.3&nbsp;</span></dt>
5a738aea 1185<dd class="description">CIE Lab </dd>
426c6a59 1186<dt>CUPS_CSPACE_CIEXYZ <span class="info">&nbsp;CUPS 1.1.19/Mac OS X 10.3&nbsp;</span></dt>
5a738aea
MS
1187<dd class="description">CIE XYZ </dd>
1188<dt>CUPS_CSPACE_CMY </dt>
1189<dd class="description">Cyan, magenta, yellow</dd>
1190<dt>CUPS_CSPACE_CMYK </dt>
1191<dd class="description">Cyan, magenta, yellow, black</dd>
1192<dt>CUPS_CSPACE_GMCK </dt>
1193<dd class="description">Gold, magenta, yellow, black</dd>
1194<dt>CUPS_CSPACE_GMCS </dt>
1195<dd class="description">Gold, magenta, yellow, silver</dd>
1196<dt>CUPS_CSPACE_GOLD </dt>
1197<dd class="description">Gold foil</dd>
426c6a59 1198<dt>CUPS_CSPACE_ICC1 <span class="info">&nbsp;CUPS 1.1.19/Mac OS X 10.3&nbsp;</span></dt>
5a738aea 1199<dd class="description">ICC-based, 1 color </dd>
426c6a59 1200<dt>CUPS_CSPACE_ICC2 <span class="info">&nbsp;CUPS 1.1.19/Mac OS X 10.3&nbsp;</span></dt>
5a738aea 1201<dd class="description">ICC-based, 2 colors </dd>
426c6a59 1202<dt>CUPS_CSPACE_ICC3 <span class="info">&nbsp;CUPS 1.1.19/Mac OS X 10.3&nbsp;</span></dt>
5a738aea 1203<dd class="description">ICC-based, 3 colors </dd>
426c6a59 1204<dt>CUPS_CSPACE_ICC4 <span class="info">&nbsp;CUPS 1.1.19/Mac OS X 10.3&nbsp;</span></dt>
5a738aea 1205<dd class="description">ICC-based, 4 colors </dd>
426c6a59 1206<dt>CUPS_CSPACE_ICC5 <span class="info">&nbsp;CUPS 1.1.19/Mac OS X 10.3&nbsp;</span></dt>
5a738aea 1207<dd class="description">ICC-based, 5 colors </dd>
426c6a59 1208<dt>CUPS_CSPACE_ICC6 <span class="info">&nbsp;CUPS 1.1.19/Mac OS X 10.3&nbsp;</span></dt>
5a738aea 1209<dd class="description">ICC-based, 6 colors </dd>
426c6a59 1210<dt>CUPS_CSPACE_ICC7 <span class="info">&nbsp;CUPS 1.1.19/Mac OS X 10.3&nbsp;</span></dt>
5a738aea 1211<dd class="description">ICC-based, 7 colors </dd>
426c6a59 1212<dt>CUPS_CSPACE_ICC8 <span class="info">&nbsp;CUPS 1.1.19/Mac OS X 10.3&nbsp;</span></dt>
5a738aea 1213<dd class="description">ICC-based, 8 colors </dd>
426c6a59 1214<dt>CUPS_CSPACE_ICC9 <span class="info">&nbsp;CUPS 1.1.19/Mac OS X 10.3&nbsp;</span></dt>
5a738aea 1215<dd class="description">ICC-based, 9 colors </dd>
426c6a59 1216<dt>CUPS_CSPACE_ICCA <span class="info">&nbsp;CUPS 1.1.19/Mac OS X 10.3&nbsp;</span></dt>
5a738aea 1217<dd class="description">ICC-based, 10 colors </dd>
426c6a59 1218<dt>CUPS_CSPACE_ICCB <span class="info">&nbsp;CUPS 1.1.19/Mac OS X 10.3&nbsp;</span></dt>
5a738aea 1219<dd class="description">ICC-based, 11 colors </dd>
426c6a59 1220<dt>CUPS_CSPACE_ICCC <span class="info">&nbsp;CUPS 1.1.19/Mac OS X 10.3&nbsp;</span></dt>
5a738aea 1221<dd class="description">ICC-based, 12 colors </dd>
426c6a59 1222<dt>CUPS_CSPACE_ICCD <span class="info">&nbsp;CUPS 1.1.19/Mac OS X 10.3&nbsp;</span></dt>
5a738aea 1223<dd class="description">ICC-based, 13 colors </dd>
426c6a59 1224<dt>CUPS_CSPACE_ICCE <span class="info">&nbsp;CUPS 1.1.19/Mac OS X 10.3&nbsp;</span></dt>
5a738aea 1225<dd class="description">ICC-based, 14 colors </dd>
426c6a59 1226<dt>CUPS_CSPACE_ICCF <span class="info">&nbsp;CUPS 1.1.19/Mac OS X 10.3&nbsp;</span></dt>
5a738aea
MS
1227<dd class="description">ICC-based, 15 colors </dd>
1228<dt>CUPS_CSPACE_K </dt>
1229<dd class="description">Black</dd>
1230<dt>CUPS_CSPACE_KCMY </dt>
1231<dd class="description">Black, cyan, magenta, yellow</dd>
1232<dt>CUPS_CSPACE_KCMYcm </dt>
1233<dd class="description">Black, cyan, magenta, yellow, *
1234light-cyan, light-magenta</dd>
1235<dt>CUPS_CSPACE_RGB </dt>
1236<dd class="description">Red, green, blue</dd>
1237<dt>CUPS_CSPACE_RGBA </dt>
1238<dd class="description">Red, green, blue, alpha</dd>
79e1d494 1239<dt>CUPS_CSPACE_RGBW <span class="info">&nbsp;CUPS 1.2/Mac OS X 10.5&nbsp;</span></dt>
5a738aea
MS
1240<dd class="description">Red, green, blue, white </dd>
1241<dt>CUPS_CSPACE_SILVER </dt>
1242<dd class="description">Silver foil</dd>
1243<dt>CUPS_CSPACE_W </dt>
1244<dd class="description">Luminance</dd>
1245<dt>CUPS_CSPACE_WHITE </dt>
1246<dd class="description">White ink (as black)</dd>
1247<dt>CUPS_CSPACE_YMC </dt>
1248<dd class="description">Yellow, magenta, cyan</dd>
1249<dt>CUPS_CSPACE_YMCK </dt>
1250<dd class="description">Yellow, magenta, cyan, black</dd>
1251</dl>
1252<h3 class="enumeration"><a name="cups_cut_e">cups_cut_e</a></h3>
1253<p class="description"></p>
1254<h4 class="constants">Constants</h4>
1255<dl>
1256<dt>CUPS_CUT_FILE </dt>
1257<dd class="description">Cut the roll after this file</dd>
1258<dt>CUPS_CUT_JOB </dt>
1259<dd class="description">Cut the roll after this job</dd>
1260<dt>CUPS_CUT_NONE </dt>
1261<dd class="description">Never cut the roll</dd>
1262<dt>CUPS_CUT_PAGE </dt>
1263<dd class="description">Cut the roll after this page</dd>
1264<dt>CUPS_CUT_SET </dt>
1265<dd class="description">Cut the roll after this set</dd>
1266</dl>
1267<h3 class="enumeration"><a name="cups_edge_e">cups_edge_e</a></h3>
1268<p class="description"></p>
1269<h4 class="constants">Constants</h4>
1270<dl>
1271<dt>CUPS_EDGE_BOTTOM </dt>
1272<dd class="description">Leading edge is the bottom of the page</dd>
1273<dt>CUPS_EDGE_LEFT </dt>
1274<dd class="description">Leading edge is the left of the page</dd>
1275<dt>CUPS_EDGE_RIGHT </dt>
1276<dd class="description">Leading edge is the right of the page</dd>
1277<dt>CUPS_EDGE_TOP </dt>
1278<dd class="description">Leading edge is the top of the page</dd>
1279</dl>
1280<h3 class="enumeration"><a name="cups_jog_e">cups_jog_e</a></h3>
1281<p class="description"></p>
1282<h4 class="constants">Constants</h4>
1283<dl>
1284<dt>CUPS_JOG_FILE </dt>
1285<dd class="description">Move pages after this file</dd>
1286<dt>CUPS_JOG_JOB </dt>
1287<dd class="description">Move pages after this job</dd>
1288<dt>CUPS_JOG_NONE </dt>
1289<dd class="description">Never move pages</dd>
1290<dt>CUPS_JOG_SET </dt>
1291<dd class="description">Move pages after this set</dd>
1292</dl>
1293<h3 class="enumeration"><a name="cups_mode_e">cups_mode_e</a></h3>
1294<p class="description"></p>
1295<h4 class="constants">Constants</h4>
1296<dl>
1297<dt>CUPS_RASTER_READ </dt>
1298<dd class="description">Open stream for reading</dd>
1299<dt>CUPS_RASTER_WRITE </dt>
1300<dd class="description">Open stream for writing</dd>
426c6a59 1301<dt>CUPS_RASTER_WRITE_COMPRESSED <span class="info">&nbsp;CUPS 1.3/Mac OS X 10.5&nbsp;</span></dt>
5a738aea
MS
1302<dd class="description">Open stream for compressed writing </dd>
1303</dl>
1304<h3 class="enumeration"><a name="cups_order_e">cups_order_e</a></h3>
1305<p class="description">cupsColorOrder attribute values</p>
1306<h4 class="constants">Constants</h4>
1307<dl>
1308<dt>CUPS_ORDER_BANDED </dt>
1309<dd class="description">CCC MMM YYY KKK ...</dd>
1310<dt>CUPS_ORDER_CHUNKED </dt>
1311<dd class="description">CMYK CMYK CMYK ...</dd>
1312<dt>CUPS_ORDER_PLANAR </dt>
1313<dd class="description">CCC ... MMM ... YYY ... KKK ...</dd>
1314</dl>
1315<h3 class="enumeration"><a name="cups_orient_e">cups_orient_e</a></h3>
1316<p class="description"></p>
1317<h4 class="constants">Constants</h4>
1318<dl>
1319<dt>CUPS_ORIENT_0 </dt>
1320<dd class="description">Don't rotate the page</dd>
1321<dt>CUPS_ORIENT_180 </dt>
1322<dd class="description">Turn the page upside down</dd>
1323<dt>CUPS_ORIENT_270 </dt>
1324<dd class="description">Rotate the page clockwise</dd>
1325<dt>CUPS_ORIENT_90 </dt>
1326<dd class="description">Rotate the page counter-clockwise</dd>
1327</dl>
1328</div>
b423cd4c 1329</body>
1330</html>