1 <!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
3 <!-- SECTION: Programming -->
6 <meta name='keywords' content='Programming'
>
7 <meta name='creator' content='Mini-XML v2.3'
>
8 <style type='text/css'
><!--
9 h1, h2, h3, p { font-family: sans-serif; text-align: justify; }
10 tt, pre a:link, pre a:visited, tt a:link, tt a:visited { font-weight: bold; color: #7f0000; }
11 pre { font-weight: bold; color: #7f0000; margin-left: 2em; }
12 span.info { background: #000000; border: solid thin #000000; color: #ffffff; font-size: 80%; font-style: italic; font-weight: bold; white-space: nowrap; }
13 h3 span.info { float: right; font-size: 100%; }
14 h1.title, h2.title, h3.title { border-bottom: solid 2px #000000; }
21 PPD API introduction for the Common UNIX Printing System (CUPS).
23 Copyright 1997-2005 by Easy Software Products.
25 These coded instructions, statements, and computer programs are the
26 property of Easy Software Products and are protected by Federal
27 copyright law. Distribution and use rights are outlined in the file
28 "LICENSE.txt" which should have been included with this file. If this
29 file is missing or damaged please contact Easy Software Products
32 Attn: CUPS Licensing Information
33 Easy Software Products
34 44141 Airport View Drive, Suite 204
35 Hollywood, Maryland 20636 USA
38 EMail: cups-info@cups.org
39 WWW: http://www.cups.org
42 <h2 class='title'
>Introduction
</h2>
44 <p>The CUPS PPD API provides...
</p>
46 <h2 class='title'
>General Usage
</h2>
48 <p>The
<var><cups/ppd.h
></var> header file must be included
49 to use the
<tt>ppd
</tt> functions.
</p>
51 <p>Programs using these functions must be linked to the CUPS
52 library:
<var>libcups.a
</var>,
<var>libcups.so
.2</var>,
53 <var>libcups
.2.dylib
</var>,
<var>libcups_s.a
</var>, or
54 <var>libcups2.lib
</var> depending on the platform. The following
55 command compiles
<var>myprogram.c
</var> using GCC and the CUPS
59 <kbd>gcc -o myprogram myprogram.c -lcups
</kbd>
62 <h2 class='title'
>Compatibility
</h2>
64 <p>Unless otherwise specified, the PPD API functions require CUPS
66 <h2 class='title'
>Contents
</h2>
68 <li><a href='#ENUMERATIONS'
>Enumerations
</a></li>
69 <li><a href='#FUNCTIONS'
>Functions
</a></li>
70 <li><a href='#STRUCTURES'
>Structures
</a></li>
71 <li><a href='#TYPES'
>Types
</a></li>
72 <li><a href='#UNIONS'
>Unions
</a></li>
75 <h2 class='title'
><a name='ENUMERATIONS'
>Enumerations
</a></h2>
77 <li><a href='#ppd_cptype_e'
><tt>ppd_cptype_e
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
78 <li><a href='#ppd_cs_e'
><tt>ppd_cs_e
</tt></a> </li>
79 <li><a href='#ppd_section_e'
><tt>ppd_section_e
</tt></a> </li>
80 <li><a href='#ppd_status_e'
><tt>ppd_status_e
</tt></a> </li>
81 <li><a href='#ppd_ui_e'
><tt>ppd_ui_e
</tt></a> </li>
84 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ppd_cptype_e'
>ppd_cptype_e
</a></h3>
86 <p>Custom Parameter Type
</p>
88 <div class='table'
><table align='center' border='
1' width='
80%'
>
89 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
91 <tr><td><tt>PPD_CUSTOM_CURVE
</tt> </td><td>Curve value for f(x) = x^value
</td></tr>
92 <tr><td><tt>PPD_CUSTOM_INT
</tt> </td><td>Integer number value
</td></tr>
93 <tr><td><tt>PPD_CUSTOM_INVCURVE
</tt> </td><td>Curve value for f(x) = x^(
1/value)
</td></tr>
94 <tr><td><tt>PPD_CUSTOM_PASSCODE
</tt> </td><td>String of (hidden) numbers
</td></tr>
95 <tr><td><tt>PPD_CUSTOM_PASSWORD
</tt> </td><td>String of (hidden) characters
</td></tr>
96 <tr><td><tt>PPD_CUSTOM_POINTS
</tt> </td><td>Measurement value in points
</td></tr>
97 <tr><td><tt>PPD_CUSTOM_REAL
</tt> </td><td>Real number value
</td></tr>
98 <tr><td><tt>PPD_CUSTOM_STRING
</tt> </td><td>String of characters
</td></tr>
99 </tbody></table></div>
101 <h3 class='title'
><a name='ppd_cs_e'
>ppd_cs_e
</a></h3>
105 <div class='table'
><table align='center' border='
1' width='
80%'
>
106 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
108 <tr><td><tt>PPD_CS_CMY
</tt> </td><td>CMY colorspace
</td></tr>
109 <tr><td><tt>PPD_CS_CMYK
</tt> </td><td>CMYK colorspace
</td></tr>
110 <tr><td><tt>PPD_CS_GRAY
</tt> </td><td>Grayscale colorspace
</td></tr>
111 <tr><td><tt>PPD_CS_N
</tt> </td><td>DeviceN colorspace
</td></tr>
112 <tr><td><tt>PPD_CS_RGB
</tt> </td><td>RGB colorspace
</td></tr>
113 <tr><td><tt>PPD_CS_RGBK
</tt> </td><td>RGBK (K = gray) colorspace
</td></tr>
114 </tbody></table></div>
116 <h3 class='title'
><a name='ppd_section_e'
>ppd_section_e
</a></h3>
118 <p>Order dependency sections
</p>
120 <div class='table'
><table align='center' border='
1' width='
80%'
>
121 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
123 <tr><td><tt>PPD_ORDER_ANY
</tt> </td><td>Option code can be anywhere in the file
</td></tr>
124 <tr><td><tt>PPD_ORDER_DOCUMENT
</tt> </td><td>... must be in the DocumentSetup section
</td></tr>
125 <tr><td><tt>PPD_ORDER_EXIT
</tt> </td><td>... must be sent prior to the document
</td></tr>
126 <tr><td><tt>PPD_ORDER_JCL
</tt> </td><td>... must be sent as a JCL command
</td></tr>
127 <tr><td><tt>PPD_ORDER_PAGE
</tt> </td><td>... must be in the PageSetup section
</td></tr>
128 <tr><td><tt>PPD_ORDER_PROLOG
</tt> </td><td>... must be in the Prolog section
</td></tr>
129 </tbody></table></div>
131 <h3 class='title'
><a name='ppd_status_e'
>ppd_status_e
</a></h3>
133 <p>Types and structures...
</p>
135 <div class='table'
><table align='center' border='
1' width='
80%'
>
136 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
138 <tr><td><tt>PPD_ALLOC_ERROR
</tt> </td><td>Memory allocation error
</td></tr>
139 <tr><td><tt>PPD_BAD_CUSTOM_PARAM
</tt> </td><td>Bad custom parameter
</td></tr>
140 <tr><td><tt>PPD_BAD_OPEN_GROUP
</tt> </td><td>Bad OpenGroup
</td></tr>
141 <tr><td><tt>PPD_BAD_OPEN_UI
</tt> </td><td>Bad OpenUI/JCLOpenUI
</td></tr>
142 <tr><td><tt>PPD_BAD_ORDER_DEPENDENCY
</tt> </td><td>Bad OrderDependency
</td></tr>
143 <tr><td><tt>PPD_BAD_UI_CONSTRAINTS
</tt> </td><td>Bad UIConstraints
</td></tr>
144 <tr><td><tt>PPD_FILE_OPEN_ERROR
</tt> </td><td>Unable to open PPD file
</td></tr>
145 <tr><td><tt>PPD_ILLEGAL_CHARACTER
</tt> </td><td>Illegal control character
</td></tr>
146 <tr><td><tt>PPD_ILLEGAL_MAIN_KEYWORD
</tt> </td><td>Illegal main keyword string
</td></tr>
147 <tr><td><tt>PPD_ILLEGAL_OPTION_KEYWORD
</tt> </td><td>Illegal option keyword string
</td></tr>
148 <tr><td><tt>PPD_ILLEGAL_TRANSLATION
</tt> </td><td>Illegal translation string
</td></tr>
149 <tr><td><tt>PPD_ILLEGAL_WHITESPACE
</tt> </td><td>Illegal whitespace character
</td></tr>
150 <tr><td><tt>PPD_INTERNAL_ERROR
</tt> </td><td>Internal error
</td></tr>
151 <tr><td><tt>PPD_LINE_TOO_LONG
</tt> </td><td>Line longer than
255 chars
</td></tr>
152 <tr><td><tt>PPD_MISSING_ASTERISK
</tt> </td><td>Missing asterisk in column
0</td></tr>
153 <tr><td><tt>PPD_MISSING_PPDADOBE4
</tt> </td><td>Missing PPD-Adobe-
4.x header
</td></tr>
154 <tr><td><tt>PPD_MISSING_VALUE
</tt> </td><td>Missing value string
</td></tr>
155 <tr><td><tt>PPD_NESTED_OPEN_GROUP
</tt> </td><td>OpenGroup without a CloseGroup first
</td></tr>
156 <tr><td><tt>PPD_NESTED_OPEN_UI
</tt> </td><td>OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first
</td></tr>
157 <tr><td><tt>PPD_NULL_FILE
</tt> </td><td>NULL PPD file pointer
</td></tr>
158 <tr><td><tt>PPD_OK
</tt> </td><td>OK
</td></tr>
159 </tbody></table></div>
161 <h3 class='title'
><a name='ppd_ui_e'
>ppd_ui_e
</a></h3>
165 <div class='table'
><table align='center' border='
1' width='
80%'
>
166 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
168 <tr><td><tt>PPD_UI_BOOLEAN
</tt> </td><td>True or False option
</td></tr>
169 <tr><td><tt>PPD_UI_PICKMANY
</tt> </td><td>Pick zero or more from a list
</td></tr>
170 <tr><td><tt>PPD_UI_PICKONE
</tt> </td><td>Pick one from a list
</td></tr>
171 </tbody></table></div>
173 <h2 class='title'
><a name='FUNCTIONS'
>Functions
</a></h2>
175 <li><a href='#ppdClose'
><tt>ppdClose()
</tt></a> </li>
176 <li><a href='#ppdCollect'
><tt>ppdCollect()
</tt></a> </li>
177 <li><a href='#ppdCollect2'
><tt>ppdCollect2()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
178 <li><a href='#ppdConflicts'
><tt>ppdConflicts()
</tt></a> </li>
179 <li><a href='#ppdEmit'
><tt>ppdEmit()
</tt></a> </li>
180 <li><a href='#ppdEmitAfterOrder'
><tt>ppdEmitAfterOrder()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
181 <li><a href='#ppdEmitFd'
><tt>ppdEmitFd()
</tt></a> </li>
182 <li><a href='#ppdEmitJCL'
><tt>ppdEmitJCL()
</tt></a> </li>
183 <li><a href='#ppdEmitJCLEnd'
><tt>ppdEmitJCLEnd()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
184 <li><a href='#ppdErrorString'
><tt>ppdErrorString()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
185 <li><a href='#ppdFindAttr'
><tt>ppdFindAttr()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
186 <li><a href='#ppdFindChoice'
><tt>ppdFindChoice()
</tt></a> </li>
187 <li><a href='#ppdFindMarkedChoice'
><tt>ppdFindMarkedChoice()
</tt></a> </li>
188 <li><a href='#ppdFindNextAttr'
><tt>ppdFindNextAttr()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
189 <li><a href='#ppdFindOption'
><tt>ppdFindOption()
</tt></a> </li>
190 <li><a href='#ppdFirstOption'
><tt>ppdFirstOption()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
191 <li><a href='#ppdIsMarked'
><tt>ppdIsMarked()
</tt></a> </li>
192 <li><a href='#ppdLastError'
><tt>ppdLastError()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
193 <li><a href='#ppdMarkDefaults'
><tt>ppdMarkDefaults()
</tt></a> </li>
194 <li><a href='#ppdMarkOption'
><tt>ppdMarkOption()
</tt></a> </li>
195 <li><a href='#ppdNextOption'
><tt>ppdNextOption()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
196 <li><a href='#ppdOpen'
><tt>ppdOpen()
</tt></a> </li>
197 <li><a href='#ppdOpen2'
><tt>ppdOpen2()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
198 <li><a href='#ppdOpenFd'
><tt>ppdOpenFd()
</tt></a> </li>
199 <li><a href='#ppdOpenFile'
><tt>ppdOpenFile()
</tt></a> </li>
200 <li><a href='#ppdPageLength'
><tt>ppdPageLength()
</tt></a> </li>
201 <li><a href='#ppdPageSize'
><tt>ppdPageSize()
</tt></a> </li>
202 <li><a href='#ppdPageWidth'
><tt>ppdPageWidth()
</tt></a> </li>
203 <li><a href='#ppdSetConformance'
><tt>ppdSetConformance()
</tt></a> <span class='info'
> CUPS
1.1.20 </span></li>
206 <h3 class='title'
><a name='ppdClose'
>ppdClose()
</a></h3>
208 <p>Free all memory used by the PPD file.
</p>
213 <a href='#ppd_file_t'
>ppd_file_t
</a> * ppd);
216 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
217 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
219 <tr><td><tt>ppd
</tt></td><td>PPD file record
</td></tr>
220 </tbody></table></div>
224 <h3 class='title'
><a name='ppdCollect'
>ppdCollect()
</a></h3>
226 <p>Collect all marked options that reside in the specified
232 <a href='#ppd_file_t'
>ppd_file_t
</a> * ppd,
233 <a href='#ppd_section_t'
>ppd_section_t
</a> section,
234 <a href='#ppd_choice_t'
>ppd_choice_t
</a> *** choices);
237 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
238 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
240 <tr><td><tt>ppd
</tt></td><td>PPD file data
</td></tr>
241 <tr><td><tt>section
</tt></td><td>Section to collect
</td></tr>
242 <tr><td><tt>choices
</tt></td><td>Pointers to choices
</td></tr>
243 </tbody></table></div>
245 <p>Number of options marked
</p>
247 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ppdCollect2'
>ppdCollect2()
</a></h3>
249 <p>Collect all marked options that reside in the
250 specified section and minimum order.
257 <a href='#ppd_file_t'
>ppd_file_t
</a> * ppd,
258 <a href='#ppd_section_t'
>ppd_section_t
</a> section,
260 <a href='#ppd_choice_t'
>ppd_choice_t
</a> *** choices);
263 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
264 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
266 <tr><td><tt>ppd
</tt></td><td>PPD file data
</td></tr>
267 <tr><td><tt>section
</tt></td><td>Section to collect
</td></tr>
268 <tr><td><tt>min_order
</tt></td><td>Minimum OrderDependency value
</td></tr>
269 <tr><td><tt>choices
</tt></td><td>Pointers to choices
</td></tr>
270 </tbody></table></div>
272 <p>Number of options marked
</p>
274 <h3 class='title'
><a name='ppdConflicts'
>ppdConflicts()
</a></h3>
276 <p>Check to see if there are any conflicts.
</p>
281 <a href='#ppd_file_t'
>ppd_file_t
</a> * ppd);
284 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
285 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
287 <tr><td><tt>ppd
</tt></td><td>PPD to check
</td></tr>
288 </tbody></table></div>
290 <p>Number of conflicts found
</p>
292 <h3 class='title'
><a name='ppdEmit'
>ppdEmit()
</a></h3>
294 <p>Emit code for marked options to a file.
</p>
299 <a href='#ppd_file_t'
>ppd_file_t
</a> * ppd,
301 <a href='#ppd_section_t'
>ppd_section_t
</a> section);
304 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
305 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
307 <tr><td><tt>ppd
</tt></td><td>PPD file record
</td></tr>
308 <tr><td><tt>fp
</tt></td><td>File to write to
</td></tr>
309 <tr><td><tt>section
</tt></td><td>Section to write
</td></tr>
310 </tbody></table></div>
312 <p>0 on success, -
1 on failure
</p>
314 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ppdEmitAfterOrder'
>ppdEmitAfterOrder()
</a></h3>
316 <p>Emit a subset of the code for marked options to a file.
318 When
"limit
" is non-zero, this function only emits options whose
319 OrderDependency value is greater than or equal to
"min_order
".
321 When
"limit
" is zero, this function is identical to ppdEmit().
328 <a href='#ppd_file_t'
>ppd_file_t
</a> * ppd,
330 <a href='#ppd_section_t'
>ppd_section_t
</a> section,
335 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
336 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
338 <tr><td><tt>ppd
</tt></td><td>PPD file record
</td></tr>
339 <tr><td><tt>fp
</tt></td><td>File to write to
</td></tr>
340 <tr><td><tt>section
</tt></td><td>Section to write
</td></tr>
341 <tr><td><tt>limit
</tt></td><td>Non-zero to use min_order,
0 to include all
</td></tr>
342 <tr><td><tt>min_order
</tt></td><td>Lowest order dependency to include
</td></tr>
343 </tbody></table></div>
345 <p>0 on success, -
1 on failure
</p>
347 <h3 class='title'
><a name='ppdEmitFd'
>ppdEmitFd()
</a></h3>
349 <p>Emit code for marked options to a file.
</p>
354 <a href='#ppd_file_t'
>ppd_file_t
</a> * ppd,
356 <a href='#ppd_section_t'
>ppd_section_t
</a> section);
359 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
360 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
362 <tr><td><tt>ppd
</tt></td><td>PPD file record
</td></tr>
363 <tr><td><tt>fd
</tt></td><td>File to write to
</td></tr>
364 <tr><td><tt>section
</tt></td><td>Section to write
</td></tr>
365 </tbody></table></div>
367 <p>0 on success, -
1 on failure
</p>
369 <h3 class='title'
><a name='ppdEmitJCL'
>ppdEmitJCL()
</a></h3>
371 <p>Emit code for JCL options to a file.
</p>
376 <a href='#ppd_file_t'
>ppd_file_t
</a> * ppd,
383 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
384 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
386 <tr><td><tt>ppd
</tt></td><td>PPD file record
</td></tr>
387 <tr><td><tt>fp
</tt></td><td>File to write to
</td></tr>
388 <tr><td><tt>job_id
</tt></td><td>Job ID
</td></tr>
389 <tr><td><tt>user
</tt></td><td>Username
</td></tr>
390 <tr><td><tt>title
</tt></td><td>Title
</td></tr>
391 </tbody></table></div>
393 <p>0 on success, -
1 on failure
</p>
395 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ppdEmitJCLEnd'
>ppdEmitJCLEnd()
</a></h3>
397 <p>Emit JCLEnd code to a file.
404 <a href='#ppd_file_t'
>ppd_file_t
</a> * ppd,
408 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
409 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
411 <tr><td><tt>ppd
</tt></td><td>PPD file record
</td></tr>
412 <tr><td><tt>fp
</tt></td><td>File to write to
</td></tr>
413 </tbody></table></div>
415 <p>0 on success, -
1 on failure
</p>
417 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='ppdErrorString'
>ppdErrorString()
</a></h3>
419 <p>Returns the text assocated with a status.
426 ppd_status_t status);
429 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
430 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
432 <tr><td><tt>status
</tt></td><td>PPD status
</td></tr>
433 </tbody></table></div>
437 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='ppdFindAttr'
>ppdFindAttr()
</a></h3>
439 <p>Find the first matching attribute...
444 <a href='#ppd_attr_t'
>ppd_attr_t
</a> *
446 <a href='#ppd_file_t'
>ppd_file_t
</a> * ppd,
451 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
452 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
454 <tr><td><tt>ppd
</tt></td><td>PPD file data
</td></tr>
455 <tr><td><tt>name
</tt></td><td>Attribute name
</td></tr>
456 <tr><td><tt>spec
</tt></td><td>Specifier string or NULL
</td></tr>
457 </tbody></table></div>
459 <p>Attribute or NULL if not found
</p>
461 <h3 class='title'
><a name='ppdFindChoice'
>ppdFindChoice()
</a></h3>
463 <p>Return a pointer to an option choice.
</p>
466 <a href='#ppd_choice_t'
>ppd_choice_t
</a> *
468 <a href='#ppd_option_t'
>ppd_option_t
</a> * o,
469 const char * choice);
472 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
473 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
475 <tr><td><tt>o
</tt></td><td>Pointer to option
</td></tr>
476 <tr><td><tt>choice
</tt></td><td>Name of choice
</td></tr>
477 </tbody></table></div>
479 <p>Choice pointer or NULL
</p>
481 <h3 class='title'
><a name='ppdFindMarkedChoice'
>ppdFindMarkedChoice()
</a></h3>
483 <p>Return the marked choice for the specified option.
</p>
486 <a href='#ppd_choice_t'
>ppd_choice_t
</a> *
488 <a href='#ppd_file_t'
>ppd_file_t
</a> * ppd,
489 const char * option);
492 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
493 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
495 <tr><td><tt>ppd
</tt></td><td>PPD file
</td></tr>
496 <tr><td><tt>option
</tt></td><td>Keyword/option name
</td></tr>
497 </tbody></table></div>
499 <p>Pointer to choice or NULL
</p>
501 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='ppdFindNextAttr'
>ppdFindNextAttr()
</a></h3>
503 <p>Find the next matching attribute...
508 <a href='#ppd_attr_t'
>ppd_attr_t
</a> *
510 <a href='#ppd_file_t'
>ppd_file_t
</a> * ppd,
515 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
516 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
518 <tr><td><tt>ppd
</tt></td><td>PPD file data
</td></tr>
519 <tr><td><tt>name
</tt></td><td>Attribute name
</td></tr>
520 <tr><td><tt>spec
</tt></td><td>Specifier string or NULL
</td></tr>
521 </tbody></table></div>
523 <p>Attribute or NULL if not found
</p>
525 <h3 class='title'
><a name='ppdFindOption'
>ppdFindOption()
</a></h3>
527 <p>Return a pointer to the specified option.
</p>
530 <a href='#ppd_option_t'
>ppd_option_t
</a> *
532 <a href='#ppd_file_t'
>ppd_file_t
</a> * ppd,
533 const char * option);
536 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
537 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
539 <tr><td><tt>ppd
</tt></td><td>PPD file data
</td></tr>
540 <tr><td><tt>option
</tt></td><td>Option/Keyword name
</td></tr>
541 </tbody></table></div>
543 <p>Pointer to option or NULL
</p>
545 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ppdFirstOption'
>ppdFirstOption()
</a></h3>
547 <p>Return the first option in the PPD file.
549 Options are returned from all groups in sorted order.
554 <a href='#ppd_option_t'
>ppd_option_t
</a> *
556 <a href='#ppd_file_t'
>ppd_file_t
</a> * ppd);
559 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
560 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
562 <tr><td><tt>ppd
</tt></td><td>PPD file
</td></tr>
563 </tbody></table></div>
565 <p>First option or NULL
</p>
567 <h3 class='title'
><a name='ppdIsMarked'
>ppdIsMarked()
</a></h3>
569 <p>Check to see if an option is marked...
</p>
574 <a href='#ppd_file_t'
>ppd_file_t
</a> * ppd,
576 const char * choice);
579 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
580 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
582 <tr><td><tt>ppd
</tt></td><td>PPD file data
</td></tr>
583 <tr><td><tt>option
</tt></td><td>Option/Keyword name
</td></tr>
584 <tr><td><tt>choice
</tt></td><td>Choice name
</td></tr>
585 </tbody></table></div>
587 <p>Non-zero if option is marked
</p>
589 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='ppdLastError'
>ppdLastError()
</a></h3>
591 <p>Return the status from the last ppdOpen*().
601 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
602 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
604 <tr><td><tt>line
</tt></td><td>Line number
</td></tr>
605 </tbody></table></div>
609 <h3 class='title'
><a name='ppdMarkDefaults'
>ppdMarkDefaults()
</a></h3>
611 <p>Mark all default options in the PPD file.
</p>
616 <a href='#ppd_file_t'
>ppd_file_t
</a> * ppd);
619 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
620 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
622 <tr><td><tt>ppd
</tt></td><td>PPD file record
</td></tr>
623 </tbody></table></div>
627 <h3 class='title'
><a name='ppdMarkOption'
>ppdMarkOption()
</a></h3>
629 <p>Mark an option in a PPD file.
633 -
1 is returned if the given option would conflict with any currently
639 <a href='#ppd_file_t'
>ppd_file_t
</a> * ppd,
641 const char * choice);
644 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
645 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
647 <tr><td><tt>ppd
</tt></td><td>PPD file record
</td></tr>
648 <tr><td><tt>option
</tt></td><td>Keyword
</td></tr>
649 <tr><td><tt>choice
</tt></td><td>Option name
</td></tr>
650 </tbody></table></div>
652 <p>Number of conflicts
</p>
654 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ppdNextOption'
>ppdNextOption()
</a></h3>
656 <p>Return the next option in the PPD file.
658 Options are returned from all groups in sorted order.
663 <a href='#ppd_option_t'
>ppd_option_t
</a> *
665 <a href='#ppd_file_t'
>ppd_file_t
</a> * ppd);
668 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
669 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
671 <tr><td><tt>ppd
</tt></td><td>PPD file
</td></tr>
672 </tbody></table></div>
674 <p>Next option or NULL
</p>
676 <h3 class='title'
><a name='ppdOpen'
>ppdOpen()
</a></h3>
678 <p>Read a PPD file into memory.
</p>
681 <a href='#ppd_file_t'
>ppd_file_t
</a> *
686 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
687 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
689 <tr><td><tt>fp
</tt></td><td>File to read from
</td></tr>
690 </tbody></table></div>
692 <p>PPD file record
</p>
694 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ppdOpen2'
>ppdOpen2()
</a></h3>
696 <p>Read a PPD file into memory.
701 <a href='#ppd_file_t'
>ppd_file_t
</a> *
706 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
707 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
709 <tr><td><tt>fp
</tt></td><td>File to read from
</td></tr>
710 </tbody></table></div>
712 <p>PPD file record
</p>
714 <h3 class='title'
><a name='ppdOpenFd'
>ppdOpenFd()
</a></h3>
716 <p>Read a PPD file into memory.
</p>
719 <a href='#ppd_file_t'
>ppd_file_t
</a> *
724 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
725 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
727 <tr><td><tt>fd
</tt></td><td>File to read from
</td></tr>
728 </tbody></table></div>
730 <p>PPD file record
</p>
732 <h3 class='title'
><a name='ppdOpenFile'
>ppdOpenFile()
</a></h3>
734 <p>Read a PPD file into memory.
</p>
737 <a href='#ppd_file_t'
>ppd_file_t
</a> *
739 const char * filename);
742 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
743 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
745 <tr><td><tt>filename
</tt></td><td>File to read from
</td></tr>
746 </tbody></table></div>
748 <p>PPD file record
</p>
750 <h3 class='title'
><a name='ppdPageLength'
>ppdPageLength()
</a></h3>
752 <p>Get the page length for the given size.
</p>
757 <a href='#ppd_file_t'
>ppd_file_t
</a> * ppd,
761 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
762 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
764 <tr><td><tt>ppd
</tt></td><td>PPD file
</td></tr>
765 <tr><td><tt>name
</tt></td><td>Size name
</td></tr>
766 </tbody></table></div>
768 <p>Length of page in points or
0.0</p>
770 <h3 class='title'
><a name='ppdPageSize'
>ppdPageSize()
</a></h3>
772 <p>Get the page size record for the given size.
</p>
775 <a href='#ppd_size_t'
>ppd_size_t
</a> *
777 <a href='#ppd_file_t'
>ppd_file_t
</a> * ppd,
781 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
782 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
784 <tr><td><tt>ppd
</tt></td><td>PPD file record
</td></tr>
785 <tr><td><tt>name
</tt></td><td>Size name
</td></tr>
786 </tbody></table></div>
788 <p>Size record for page or NULL
</p>
790 <h3 class='title'
><a name='ppdPageWidth'
>ppdPageWidth()
</a></h3>
792 <p>Get the page width for the given size.
</p>
797 <a href='#ppd_file_t'
>ppd_file_t
</a> * ppd,
801 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
802 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
804 <tr><td><tt>ppd
</tt></td><td>PPD file record
</td></tr>
805 <tr><td><tt>name
</tt></td><td>Size name
</td></tr>
806 </tbody></table></div>
808 <p>Width of page in points or
0.0</p>
810 <h3 class='title'
><span class='info'
> CUPS
1.1.20 </span><a name='ppdSetConformance'
>ppdSetConformance()
</a></h3>
812 <p>Set the conformance level for PPD files.
819 <a href='#ppd_conform_t'
>ppd_conform_t
</a> c);
822 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
823 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
825 <tr><td><tt>c
</tt></td><td>Conformance level
</td></tr>
826 </tbody></table></div>
830 <h2 class='title'
><a name='STRUCTURES'
>Structures
</a></h2>
832 <li><a href='#ppd_attr_s'
><tt>ppd_attr_s
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
833 <li><a href='#ppd_choice_s'
><tt>ppd_choice_s
</tt></a> </li>
834 <li><a href='#ppd_coption_s'
><tt>ppd_coption_s
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
835 <li><a href='#ppd_cparam_s'
><tt>ppd_cparam_s
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
836 <li><a href='#ppd_emul_s'
><tt>ppd_emul_s
</tt></a> </li>
837 <li><a href='#ppd_file_s'
><tt>ppd_file_s
</tt></a> </li>
838 <li><a href='#ppd_group_s'
><tt>ppd_group_s
</tt></a> </li>
839 <li><a href='#ppd_option_s'
><tt>ppd_option_s
</tt></a> </li>
840 <li><a href='#ppd_profile_s'
><tt>ppd_profile_s
</tt></a> </li>
841 <li><a href='#ppd_size_s'
><tt>ppd_size_s
</tt></a> </li>
844 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='ppd_attr_s'
>ppd_attr_s
</a></h3>
846 <p>PPD Attribute Structure
</p>
851 char name[PPD_MAX_NAME];
852 char spec[PPD_MAX_NAME];
853 char text[PPD_MAX_TEXT];
858 <div class='table'
><table align='center' border='
1' width='
80%'
>
859 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
861 <tr><td><tt>name[PPD_MAX_NAME]
</tt> </td><td>Name of attribute (cupsXYZ)
</td></tr>
862 <tr><td><tt>spec[PPD_MAX_NAME]
</tt> </td><td>Specifier string, if any
</td></tr>
863 <tr><td><tt>text[PPD_MAX_TEXT]
</tt> </td><td>Human-readable text, if any
</td></tr>
864 <tr><td><tt>value
</tt> </td><td>Value string
</td></tr>
865 </tbody></table></div>
867 <h3 class='title'
><a name='ppd_choice_s'
>ppd_choice_s
</a></h3>
869 <p>Option choices
</p>
874 char choice[PPD_MAX_NAME];
877 <a href='#ppd_option_t'
>ppd_option_t
</a> * option;
878 char text[PPD_MAX_TEXT];
882 <div class='table'
><table align='center' border='
1' width='
80%'
>
883 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
885 <tr><td><tt>choice[PPD_MAX_NAME]
</tt> </td><td>Computer-readable option name
</td></tr>
886 <tr><td><tt>code
</tt> </td><td>Code to send for this option
</td></tr>
887 <tr><td><tt>marked
</tt> </td><td>0 if not selected,
1 otherwise
</td></tr>
888 <tr><td><tt>option
</tt> </td><td>Pointer to parent option structure
</td></tr>
889 <tr><td><tt>text[PPD_MAX_TEXT]
</tt> </td><td>Human-readable option name
</td></tr>
890 </tbody></table></div>
892 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ppd_coption_s'
>ppd_coption_s
</a></h3>
894 <p>Custom Option
</p>
899 char keyword[PPD_MAX_NAME];
901 <a href='#ppd_option_t'
>ppd_option_t
</a> * option;
902 cups_array_t * params;
906 <div class='table'
><table align='center' border='
1' width='
80%'
>
907 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
909 <tr><td><tt>keyword[PPD_MAX_NAME]
</tt> </td><td>Name of option that is being extended...
</td></tr>
910 <tr><td><tt>marked
</tt> </td><td>Extended option is marked
</td></tr>
911 <tr><td><tt>option
</tt> </td><td>Option that is being extended...
</td></tr>
912 <tr><td><tt>params
</tt> </td><td>Parameters
</td></tr>
913 </tbody></table></div>
915 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ppd_cparam_s'
>ppd_cparam_s
</a></h3>
917 <p>Custom Parameter
</p>
922 <a href='#ppd_cpvalue_t'
>ppd_cpvalue_t
</a> minimum, maximum, current;
923 char name[PPD_MAX_NAME];
925 char text[PPD_MAX_TEXT];
926 <a href='#ppd_cptype_t'
>ppd_cptype_t
</a> type;
930 <div class='table'
><table align='center' border='
1' width='
80%'
>
931 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
933 <tr><td><tt>current
</tt> </td><td>Current value
</td></tr>
934 <tr><td><tt>name[PPD_MAX_NAME]
</tt> </td><td>Parameter name
</td></tr>
935 <tr><td><tt>order
</tt> </td><td>Order (
0 to N)
</td></tr>
936 <tr><td><tt>text[PPD_MAX_TEXT]
</tt> </td><td>Human-readable text
</td></tr>
937 <tr><td><tt>type
</tt> </td><td>Parameter type
</td></tr>
938 </tbody></table></div>
940 <h3 class='title'
><a name='ppd_emul_s'
>ppd_emul_s
</a></h3>
947 char name[PPD_MAX_NAME];
953 <div class='table'
><table align='center' border='
1' width='
80%'
>
954 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
956 <tr><td><tt>name[PPD_MAX_NAME]
</tt> </td><td>Emulator name
</td></tr>
957 <tr><td><tt>start
</tt> </td><td>Code to switch to this emulation
</td></tr>
958 <tr><td><tt>stop
</tt> </td><td>Code to stop this emulation
</td></tr>
959 </tbody></table></div>
961 <h3 class='title'
><a name='ppd_file_s'
>ppd_file_s
</a></h3>
968 int accurate_screens;
969 <a href='#ppd_attr_t'
>ppd_attr_t
</a> ** attrs;
972 <a href='#ppd_const_t'
>ppd_const_t
</a> * consts;
974 cups_array_t * coptions;
976 float custom_margins[
4];
979 <a href='#ppd_emul_t'
>ppd_emul_t
</a> * emulations;
983 <a href='#ppd_group_t'
>ppd_group_t
</a> * groups;
988 char * lang_encoding;
1004 cups_array_t * options;
1008 <a href='#ppd_profile_t'
>ppd_profile_t
</a> * profiles;
1010 char * shortnickname;
1011 <a href='#ppd_size_t'
>ppd_size_t
</a> * sizes;
1012 cups_array_t * sorted_attrs;
1014 char * ttrasterizer;
1019 <div class='table'
><table align='center' border='
1' width='
80%'
>
1020 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1022 <tr><td><tt>accurate_screens
</tt> </td><td>1 = supports accurate screens,
0 = not
</td></tr>
1023 <tr><td><tt>attrs
</tt> <span class='info'
> CUPS
1.1.19 </span></td><td>Attributes @private@
</td></tr>
1024 <tr><td><tt>color_device
</tt> </td><td>1 = color device,
0 = grayscale
</td></tr>
1025 <tr><td><tt>colorspace
</tt> </td><td>Default colorspace
</td></tr>
1026 <tr><td><tt>consts
</tt> </td><td>UI/Non-UI constraints
</td></tr>
1027 <tr><td><tt>contone_only
</tt> </td><td>1 = continuous tone only,
0 = not
</td></tr>
1028 <tr><td><tt>coptions
</tt> <span class='info'
> CUPS
1.2 </span></td><td>Custom options array @private@
</td></tr>
1029 <tr><td><tt>cur_attr
</tt> <span class='info'
> CUPS
1.1.19 </span></td><td>Current attribute @private@
</td></tr>
1030 <tr><td><tt>custom_margins[
4]
</tt> </td><td>Margins around page
</td></tr>
1031 <tr><td><tt>custom_max[
2]
</tt> </td><td>Maximum variable page size
</td></tr>
1032 <tr><td><tt>custom_min[
2]
</tt> </td><td>Minimum variable page size
</td></tr>
1033 <tr><td><tt>emulations
</tt> </td><td>Emulations and the code to invoke them
</td></tr>
1034 <tr><td><tt>filters
</tt> </td><td>Filter strings...
</td></tr>
1035 <tr><td><tt>flip_duplex
</tt> <span class='info'
> CUPS
1.1 </span></td><td>1 = Flip page for back sides
</td></tr>
1036 <tr><td><tt>fonts
</tt> </td><td>Pre-loaded fonts
</td></tr>
1037 <tr><td><tt>groups
</tt> </td><td>UI groups
</td></tr>
1038 <tr><td><tt>jcl_begin
</tt> </td><td>Start JCL commands
</td></tr>
1039 <tr><td><tt>jcl_end
</tt> </td><td>End JCL commands
</td></tr>
1040 <tr><td><tt>jcl_ps
</tt> </td><td>Enter PostScript interpreter
</td></tr>
1041 <tr><td><tt>landscape
</tt> </td><td>-
90 or
90</td></tr>
1042 <tr><td><tt>lang_encoding
</tt> </td><td>Language encoding
</td></tr>
1043 <tr><td><tt>lang_version
</tt> </td><td>Language version (English, Spanish, etc.)
</td></tr>
1044 <tr><td><tt>language_level
</tt> </td><td>Language level of device
</td></tr>
1045 <tr><td><tt>manual_copies
</tt> </td><td>1 = Copies done manually,
0 = hardware
</td></tr>
1046 <tr><td><tt>manufacturer
</tt> </td><td>Manufacturer name
</td></tr>
1047 <tr><td><tt>model_number
</tt> </td><td>Device-specific model number
</td></tr>
1048 <tr><td><tt>modelname
</tt> </td><td>Model name (general)
</td></tr>
1049 <tr><td><tt>nickname
</tt> </td><td>Nickname (specific)
</td></tr>
1050 <tr><td><tt>num_attrs
</tt> <span class='info'
> CUPS
1.1.19 </span></td><td>Number of attributes @private@
</td></tr>
1051 <tr><td><tt>num_consts
</tt> </td><td>Number of UI/Non-UI constraints
</td></tr>
1052 <tr><td><tt>num_emulations
</tt> </td><td>Number of emulations supported
</td></tr>
1053 <tr><td><tt>num_filters
</tt> </td><td>Number of filters
</td></tr>
1054 <tr><td><tt>num_fonts
</tt> </td><td>Number of pre-loaded fonts
</td></tr>
1055 <tr><td><tt>num_groups
</tt> </td><td>Number of UI groups
</td></tr>
1056 <tr><td><tt>num_profiles
</tt> </td><td>Number of sRGB color profiles
</td></tr>
1057 <tr><td><tt>num_sizes
</tt> </td><td>Number of page sizes
</td></tr>
1058 <tr><td><tt>options
</tt> <span class='info'
> CUPS
1.2 </span></td><td>Option lookup array @private@
</td></tr>
1059 <tr><td><tt>patches
</tt> </td><td>Patch commands to be sent to printer
</td></tr>
1060 <tr><td><tt>pcfilename
</tt> <span class='info'
> CUPS
1.1.19 </span></td><td>PCFileName string
</td></tr>
1061 <tr><td><tt>product
</tt> </td><td>Product name (from PS RIP/interpreter)
</td></tr>
1062 <tr><td><tt>profiles
</tt> </td><td>sRGB color profiles
</td></tr>
1063 <tr><td><tt>protocols
</tt> <span class='info'
> CUPS
1.1.19 </span></td><td>Protocols (BCP, TBCP) string
</td></tr>
1064 <tr><td><tt>shortnickname
</tt> </td><td>Short version of nickname
</td></tr>
1065 <tr><td><tt>sizes
</tt> </td><td>Page sizes
</td></tr>
1066 <tr><td><tt>sorted_attrs
</tt> <span class='info'
> CUPS
1.2 </span></td><td>Attribute lookup array @private@
</td></tr>
1067 <tr><td><tt>throughput
</tt> </td><td>Pages per minute
</td></tr>
1068 <tr><td><tt>ttrasterizer
</tt> </td><td>Truetype rasterizer
</td></tr>
1069 <tr><td><tt>variable_sizes
</tt> </td><td>1 = supports variable sizes,
0 = doesn't
</td></tr>
1070 </tbody></table></div>
1072 <h3 class='title'
><a name='ppd_group_s'
>ppd_group_s
</a></h3>
1073 <h4>Description
</h4>
1079 char text[PPD_MAX_TEXT - PPD_MAX_NAME];
1080 char name[PPD_MAX_NAME];
1083 <a href='#ppd_option_t'
>ppd_option_t
</a> * options;
1084 struct
<a href='#ppd_group_s'
>ppd_group_s
</a> * subgroups;
1088 <div class='table'
><table align='center' border='
1' width='
80%'
>
1089 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1091 <tr><td><tt>PPD_MAX_NAME]
</tt> </td><td>Human-readable group name
</td></tr>
1092 <tr><td><tt>name[PPD_MAX_NAME]
</tt> <span class='info'
> CUPS
1.1.18 </span></td><td>Group name
</td></tr>
1093 <tr><td><tt>num_options
</tt> </td><td>Number of options
</td></tr>
1094 <tr><td><tt>num_subgroups
</tt> </td><td>Number of sub-groups
</td></tr>
1095 <tr><td><tt>options
</tt> </td><td>Options
</td></tr>
1096 <tr><td><tt>subgroups
</tt> </td><td>Sub-groups (max depth =
1)
</td></tr>
1097 </tbody></table></div>
1099 <h3 class='title'
><a name='ppd_option_s'
>ppd_option_s
</a></h3>
1100 <h4>Description
</h4>
1106 <a href='#ppd_choice_t'
>ppd_choice_t
</a> * choices;
1108 char defchoice[PPD_MAX_NAME];
1109 char keyword[PPD_MAX_NAME];
1112 <a href='#ppd_section_t'
>ppd_section_t
</a> section;
1113 char text[PPD_MAX_TEXT];
1114 <a href='#ppd_ui_t'
>ppd_ui_t
</a> ui;
1118 <div class='table'
><table align='center' border='
1' width='
80%'
>
1119 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1121 <tr><td><tt>choices
</tt> </td><td>Option choices
</td></tr>
1122 <tr><td><tt>conflicted
</tt> </td><td>0 if no conflicts exist,
1 otherwise
</td></tr>
1123 <tr><td><tt>defchoice[PPD_MAX_NAME]
</tt> </td><td>Default option choice
</td></tr>
1124 <tr><td><tt>keyword[PPD_MAX_NAME]
</tt> </td><td>Option keyword name (
"PageSize
", etc.)
</td></tr>
1125 <tr><td><tt>num_choices
</tt> </td><td>Number of option choices
</td></tr>
1126 <tr><td><tt>order
</tt> </td><td>Order number
</td></tr>
1127 <tr><td><tt>section
</tt> </td><td>Section for command
</td></tr>
1128 <tr><td><tt>text[PPD_MAX_TEXT]
</tt> </td><td>Human-readable text
</td></tr>
1129 <tr><td><tt>ui
</tt> </td><td>Type of UI option
</td></tr>
1130 </tbody></table></div>
1132 <h3 class='title'
><a name='ppd_profile_s'
>ppd_profile_s
</a></h3>
1133 <h4>Description
</h4>
1134 <p>sRGB Color Profiles
</p>
1137 struct ppd_profile_s
1142 char media_type[PPD_MAX_NAME];
1143 char resolution[PPD_MAX_NAME];
1147 <div class='table'
><table align='center' border='
1' width='
80%'
>
1148 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1150 <tr><td><tt>density
</tt> </td><td>Ink density to use
</td></tr>
1151 <tr><td><tt>gamma
</tt> </td><td>Gamma correction to use
</td></tr>
1152 <tr><td><tt>matrix[
3][
3]
</tt> </td><td>Transform matrix
</td></tr>
1153 <tr><td><tt>media_type[PPD_MAX_NAME]
</tt> </td><td>Media type or
"-
"</td></tr>
1154 <tr><td><tt>resolution[PPD_MAX_NAME]
</tt> </td><td>Resolution or
"-
"</td></tr>
1155 </tbody></table></div>
1157 <h3 class='title'
><a name='ppd_size_s'
>ppd_size_s
</a></h3>
1158 <h4>Description
</h4>
1168 char name[PPD_MAX_NAME];
1175 <div class='table'
><table align='center' border='
1' width='
80%'
>
1176 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1178 <tr><td><tt>bottom
</tt> </td><td>Bottom printable margin in points
</td></tr>
1179 <tr><td><tt>left
</tt> </td><td>Left printable margin in points
</td></tr>
1180 <tr><td><tt>length
</tt> </td><td>Length of media in points
</td></tr>
1181 <tr><td><tt>marked
</tt> </td><td>Page size selected?
</td></tr>
1182 <tr><td><tt>name[PPD_MAX_NAME]
</tt> </td><td>Media size option
</td></tr>
1183 <tr><td><tt>right
</tt> </td><td>Right printable margin in points
</td></tr>
1184 <tr><td><tt>top
</tt> </td><td>Top printable margin in points
</td></tr>
1185 <tr><td><tt>width
</tt> </td><td>Width of media in points
</td></tr>
1186 </tbody></table></div>
1188 <h2 class='title'
><a name='TYPES'
>Types
</a></h2>
1190 <li><a href='#ppd_attr_t'
><tt>ppd_attr_t
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
1191 <li><a href='#ppd_choice_t'
><tt>ppd_choice_t
</tt></a> </li>
1192 <li><a href='#ppd_const_t'
><tt>ppd_const_t
</tt></a> </li>
1193 <li><a href='#ppd_coption_t'
><tt>ppd_coption_t
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
1194 <li><a href='#ppd_cparam_t'
><tt>ppd_cparam_t
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
1195 <li><a href='#ppd_cptype_t'
><tt>ppd_cptype_t
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
1196 <li><a href='#ppd_cpvalue_t'
><tt>ppd_cpvalue_t
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
1197 <li><a href='#ppd_emul_t'
><tt>ppd_emul_t
</tt></a> </li>
1198 <li><a href='#ppd_file_t'
><tt>ppd_file_t
</tt></a> </li>
1199 <li><a href='#ppd_group_t'
><tt>ppd_group_t
</tt></a> </li>
1200 <li><a href='#ppd_option_t'
><tt>ppd_option_t
</tt></a> </li>
1201 <li><a href='#ppd_profile_t'
><tt>ppd_profile_t
</tt></a> </li>
1202 <li><a href='#ppd_section_t'
><tt>ppd_section_t
</tt></a> </li>
1203 <li><a href='#ppd_size_t'
><tt>ppd_size_t
</tt></a> </li>
1204 <li><a href='#ppd_ui_t'
><tt>ppd_ui_t
</tt></a> </li>
1207 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='ppd_attr_t'
>ppd_attr_t
</a></h3>
1208 <h4>Description
</h4>
1209 <p>PPD Attribute Structure
</p>
1212 typedef struct
<a href='#ppd_attr_s'
>ppd_attr_s
</a> ppd_attr_t;
1215 <h3 class='title'
><a name='ppd_choice_t'
>ppd_choice_t
</a></h3>
1216 <h4>Description
</h4>
1217 <p>Option choices
</p>
1220 typedef struct
<a href='#ppd_choice_s'
>ppd_choice_s
</a> ppd_choice_t;
1223 <h3 class='title'
><a name='ppd_const_t'
>ppd_const_t
</a></h3>
1224 <h4>Description
</h4>
1228 typedef struct ppd_const_t;
1231 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ppd_coption_t'
>ppd_coption_t
</a></h3>
1232 <h4>Description
</h4>
1233 <p>Custom Option
</p>
1236 typedef struct
<a href='#ppd_coption_s'
>ppd_coption_s
</a> ppd_coption_t;
1239 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ppd_cparam_t'
>ppd_cparam_t
</a></h3>
1240 <h4>Description
</h4>
1241 <p>Custom Parameter
</p>
1244 typedef struct
<a href='#ppd_cparam_s'
>ppd_cparam_s
</a> ppd_cparam_t;
1247 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ppd_cptype_t'
>ppd_cptype_t
</a></h3>
1248 <h4>Description
</h4>
1249 <p>Custom Parameter Type
</p>
1252 typedef enum
<a href='#ppd_cptype_e'
>ppd_cptype_e
</a> ppd_cptype_t;
1255 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ppd_cpvalue_t'
>ppd_cpvalue_t
</a></h3>
1256 <h4>Description
</h4>
1257 <p>Custom Parameter Value
</p>
1260 typedef union
<a href='#ppd_cpvalue_u'
>ppd_cpvalue_u
</a> ppd_cpvalue_t;
1263 <h3 class='title'
><a name='ppd_emul_t'
>ppd_emul_t
</a></h3>
1264 <h4>Description
</h4>
1268 typedef struct
<a href='#ppd_emul_s'
>ppd_emul_s
</a> ppd_emul_t;
1271 <h3 class='title'
><a name='ppd_file_t'
>ppd_file_t
</a></h3>
1272 <h4>Description
</h4>
1276 typedef struct
<a href='#ppd_file_s'
>ppd_file_s
</a> ppd_file_t;
1279 <h3 class='title'
><a name='ppd_group_t'
>ppd_group_t
</a></h3>
1280 <h4>Description
</h4>
1284 typedef struct
<a href='#ppd_group_s'
>ppd_group_s
</a> ppd_group_t;
1287 <h3 class='title'
><a name='ppd_option_t'
>ppd_option_t
</a></h3>
1288 <h4>Description
</h4>
1292 typedef struct
<a href='#ppd_option_s'
>ppd_option_s
</a> ppd_option_t;
1295 <h3 class='title'
><a name='ppd_profile_t'
>ppd_profile_t
</a></h3>
1296 <h4>Description
</h4>
1297 <p>sRGB Color Profiles
</p>
1300 typedef struct
<a href='#ppd_profile_s'
>ppd_profile_s
</a> ppd_profile_t;
1303 <h3 class='title'
><a name='ppd_section_t'
>ppd_section_t
</a></h3>
1304 <h4>Description
</h4>
1305 <p>Order dependency sections
</p>
1308 typedef enum
<a href='#ppd_section_e'
>ppd_section_e
</a> ppd_section_t;
1311 <h3 class='title'
><a name='ppd_size_t'
>ppd_size_t
</a></h3>
1312 <h4>Description
</h4>
1316 typedef struct
<a href='#ppd_size_s'
>ppd_size_s
</a> ppd_size_t;
1319 <h3 class='title'
><a name='ppd_ui_t'
>ppd_ui_t
</a></h3>
1320 <h4>Description
</h4>
1324 typedef enum
<a href='#ppd_ui_e'
>ppd_ui_e
</a> ppd_ui_t;
1327 <h2 class='title'
><a name='UNIONS'
>Unions
</a></h2>
1329 <li><a href='#ppd_cpvalue_u'
><tt>ppd_cpvalue_u
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
1332 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ppd_cpvalue_u'
>ppd_cpvalue_u
</a></h3>
1333 <h4>Description
</h4>
1334 <p>Custom Parameter Value
</p>
1341 float custom_invcurve;
1342 char * custom_passcode;
1343 char * custom_password;
1344 float custom_points;
1346 char * custom_string;
1350 <div class='table'
><table align='center' border='
1' width='
80%'
>
1351 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1353 <tr><td><tt>custom_curve
</tt> </td><td>Gamma value
</td></tr>
1354 <tr><td><tt>custom_int
</tt> </td><td>Integer value
</td></tr>
1355 <tr><td><tt>custom_invcurve
</tt> </td><td>Gamma value
</td></tr>
1356 <tr><td><tt>custom_passcode
</tt> </td><td>Passcode value
</td></tr>
1357 <tr><td><tt>custom_password
</tt> </td><td>Password value
</td></tr>
1358 <tr><td><tt>custom_points
</tt> </td><td>Measurement value
</td></tr>
1359 <tr><td><tt>custom_real
</tt> </td><td>Real value
</td></tr>
1360 <tr><td><tt>custom_string
</tt> </td><td>String value
</td></tr>
1361 </tbody></table></div>