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