-<h4>Syntax</h4>
-<pre>
-void
-ppdSetConformance(
- <a href='#ppd_conform_t'>ppd_conform_t</a> c);
-</pre>
-<h4>Arguments</h4>
-<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
-<thead><tr><th>Name</th><th>Description</th></tr></thead>
-<tbody>
-<tr><td><tt>c</tt></td><td>Conformance level</td></tr>
-</tbody></table></div>
-<h4>Returns</h4>
-<p>Nothing.</p>
-<!-- NEW PAGE -->
-<h2 class='title'><a name='STRUCTURES'>Structures</a></h2>
-<ul>
- <li><a href='#ppd_attr_s'><tt>ppd_attr_s</tt></a> <span class='info'> CUPS 1.1.19 </span></li>
- <li><a href='#ppd_choice_s'><tt>ppd_choice_s</tt></a> </li>
- <li><a href='#ppd_coption_s'><tt>ppd_coption_s</tt></a> <span class='info'> CUPS 1.2 </span></li>
- <li><a href='#ppd_cparam_s'><tt>ppd_cparam_s</tt></a> <span class='info'> CUPS 1.2 </span></li>
- <li><a href='#ppd_emul_s'><tt>ppd_emul_s</tt></a> </li>
- <li><a href='#ppd_file_s'><tt>ppd_file_s</tt></a> </li>
- <li><a href='#ppd_group_s'><tt>ppd_group_s</tt></a> </li>
- <li><a href='#ppd_option_s'><tt>ppd_option_s</tt></a> </li>
- <li><a href='#ppd_profile_s'><tt>ppd_profile_s</tt></a> </li>
- <li><a href='#ppd_size_s'><tt>ppd_size_s</tt></a> </li>
-</ul>
-<!-- NEW PAGE -->
-<h3 class='title'><span class='info'> CUPS 1.1.19 </span><a name='ppd_attr_s'>ppd_attr_s</a></h3>
-<h4>Description</h4>
-<p>PPD Attribute Structure </p>
-<h4>Definition</h4>
-<pre>
-struct ppd_attr_s
-{
- char name[PPD_MAX_NAME];
- char spec[PPD_MAX_NAME];
- char text[PPD_MAX_TEXT];
- char * value;
-};
-</pre>
-<h4>Members</h4>
-<div class='table'><table align='center' border='1' width='80%'>
-<thead><tr><th>Name</th><th>Description</th></tr></thead>
-<tbody>
-<tr><td><tt>name[PPD_MAX_NAME]</tt> </td><td>Name of attribute (cupsXYZ)</td></tr>
-<tr><td><tt>spec[PPD_MAX_NAME]</tt> </td><td>Specifier string, if any</td></tr>
-<tr><td><tt>text[PPD_MAX_TEXT]</tt> </td><td>Human-readable text, if any</td></tr>
-<tr><td><tt>value</tt> </td><td>Value string</td></tr>
-</tbody></table></div>
-<!-- NEW PAGE -->
-<h3 class='title'><a name='ppd_choice_s'>ppd_choice_s</a></h3>
-<h4>Description</h4>
-<p>Option choices</p>
-<h4>Definition</h4>
-<pre>
-struct ppd_choice_s
-{
- char choice[PPD_MAX_NAME];
- char * code;
- char marked;
- <a href='#ppd_option_t'>ppd_option_t</a> * option;
- char text[PPD_MAX_TEXT];
-};
-</pre>
-<h4>Members</h4>
-<div class='table'><table align='center' border='1' width='80%'>
-<thead><tr><th>Name</th><th>Description</th></tr></thead>
-<tbody>
-<tr><td><tt>choice[PPD_MAX_NAME]</tt> </td><td>Computer-readable option name</td></tr>
-<tr><td><tt>code</tt> </td><td>Code to send for this option</td></tr>
-<tr><td><tt>marked</tt> </td><td>0 if not selected, 1 otherwise</td></tr>
-<tr><td><tt>option</tt> </td><td>Pointer to parent option structure</td></tr>
-<tr><td><tt>text[PPD_MAX_TEXT]</tt> </td><td>Human-readable option name</td></tr>
-</tbody></table></div>
-<!-- NEW PAGE -->
-<h3 class='title'><span class='info'> CUPS 1.2 </span><a name='ppd_coption_s'>ppd_coption_s</a></h3>
-<h4>Description</h4>
-<p>Custom Option </p>
-<h4>Definition</h4>
-<pre>
-struct ppd_coption_s
-{
- char keyword[PPD_MAX_NAME];
- int marked;
- <a href='#ppd_option_t'>ppd_option_t</a> * option;
- cups_array_t * params;
-};
-</pre>
-<h4>Members</h4>
-<div class='table'><table align='center' border='1' width='80%'>
-<thead><tr><th>Name</th><th>Description</th></tr></thead>
-<tbody>
-<tr><td><tt>keyword[PPD_MAX_NAME]</tt> </td><td>Name of option that is being extended...</td></tr>
-<tr><td><tt>marked</tt> </td><td>Extended option is marked</td></tr>
-<tr><td><tt>option</tt> </td><td>Option that is being extended...</td></tr>
-<tr><td><tt>params</tt> </td><td>Parameters</td></tr>
-</tbody></table></div>
-<!-- NEW PAGE -->
-<h3 class='title'><span class='info'> CUPS 1.2 </span><a name='ppd_cparam_s'>ppd_cparam_s</a></h3>
-<h4>Description</h4>
-<p>Custom Parameter </p>
-<h4>Definition</h4>
-<pre>
-struct ppd_cparam_s
-{
- <a href='#ppd_cpvalue_t'>ppd_cpvalue_t</a> minimum, maximum, current;
- char name[PPD_MAX_NAME];
- int order;
- char text[PPD_MAX_TEXT];
- <a href='#ppd_cptype_t'>ppd_cptype_t</a> type;
-};
-</pre>
-<h4>Members</h4>
-<div class='table'><table align='center' border='1' width='80%'>
-<thead><tr><th>Name</th><th>Description</th></tr></thead>
-<tbody>
-<tr><td><tt>current</tt> </td><td>Current value</td></tr>
-<tr><td><tt>name[PPD_MAX_NAME]</tt> </td><td>Parameter name</td></tr>
-<tr><td><tt>order</tt> </td><td>Order (0 to N)</td></tr>
-<tr><td><tt>text[PPD_MAX_TEXT]</tt> </td><td>Human-readable text</td></tr>
-<tr><td><tt>type</tt> </td><td>Parameter type</td></tr>
-</tbody></table></div>
-<!-- NEW PAGE -->
-<h3 class='title'><a name='ppd_emul_s'>ppd_emul_s</a></h3>
-<h4>Description</h4>
-<p>Emulators</p>
-<h4>Definition</h4>
-<pre>
-struct ppd_emul_s
-{
- char name[PPD_MAX_NAME];
- char * start;
- char * stop;
-};
-</pre>
-<h4>Members</h4>
-<div class='table'><table align='center' border='1' width='80%'>
-<thead><tr><th>Name</th><th>Description</th></tr></thead>
-<tbody>
-<tr><td><tt>name[PPD_MAX_NAME]</tt> </td><td>Emulator name</td></tr>
-<tr><td><tt>start</tt> </td><td>Code to switch to this emulation</td></tr>
-<tr><td><tt>stop</tt> </td><td>Code to stop this emulation</td></tr>
-</tbody></table></div>
-<!-- NEW PAGE -->
-<h3 class='title'><a name='ppd_file_s'>ppd_file_s</a></h3>
-<h4>Description</h4>
-<p>PPD File</p>
-<h4>Definition</h4>
-<pre>
-struct ppd_file_s
-{
- int accurate_screens;
- <a href='#ppd_attr_t'>ppd_attr_t</a> ** attrs;
- int color_device;
- ppd_cs_t colorspace;
- <a href='#ppd_const_t'>ppd_const_t</a> * consts;
- int contone_only;
- cups_array_t * coptions;
- int cur_attr;
- float custom_margins[4];
- float custom_max[2];
- float custom_min[2];
- <a href='#ppd_emul_t'>ppd_emul_t</a> * emulations;
- char ** filters;
- int flip_duplex;
- char ** fonts;
- <a href='#ppd_group_t'>ppd_group_t</a> * groups;
- char * jcl_begin;
- char * jcl_end;
- char * jcl_ps;
- int landscape;
- char * lang_encoding;
- char * lang_version;
- int language_level;
- int manual_copies;
- char * manufacturer;
- int model_number;
- char * modelname;
- char * nickname;
- int num_attrs;
- int num_consts;
- int num_emulations;
- int num_filters;
- int num_fonts;
- int num_groups;
- int num_profiles;
- int num_sizes;
- cups_array_t * options;
- char * patches;
- char * pcfilename;
- char * product;
- <a href='#ppd_profile_t'>ppd_profile_t</a> * profiles;
- char * protocols;
- char * shortnickname;
- <a href='#ppd_size_t'>ppd_size_t</a> * sizes;
- cups_array_t * sorted_attrs;
- int throughput;
- char * ttrasterizer;
- int variable_sizes;
-};
-</pre>
-<h4>Members</h4>
-<div class='table'><table align='center' border='1' width='80%'>
-<thead><tr><th>Name</th><th>Description</th></tr></thead>
-<tbody>
-<tr><td><tt>accurate_screens</tt> </td><td>1 = supports accurate screens, 0 = not</td></tr>
-<tr><td><tt>attrs</tt> <span class='info'> CUPS 1.1.19 </span></td><td>Attributes @private@</td></tr>
-<tr><td><tt>color_device</tt> </td><td>1 = color device, 0 = grayscale</td></tr>
-<tr><td><tt>colorspace</tt> </td><td>Default colorspace</td></tr>
-<tr><td><tt>consts</tt> </td><td>UI/Non-UI constraints</td></tr>
-<tr><td><tt>contone_only</tt> </td><td>1 = continuous tone only, 0 = not</td></tr>
-<tr><td><tt>coptions</tt> <span class='info'> CUPS 1.2 </span></td><td>Custom options array @private@</td></tr>
-<tr><td><tt>cur_attr</tt> <span class='info'> CUPS 1.1.19 </span></td><td>Current attribute @private@</td></tr>
-<tr><td><tt>custom_margins[4]</tt> </td><td>Margins around page</td></tr>
-<tr><td><tt>custom_max[2]</tt> </td><td>Maximum variable page size</td></tr>
-<tr><td><tt>custom_min[2]</tt> </td><td>Minimum variable page size</td></tr>
-<tr><td><tt>emulations</tt> </td><td>Emulations and the code to invoke them</td></tr>
-<tr><td><tt>filters</tt> </td><td>Filter strings...</td></tr>
-<tr><td><tt>flip_duplex</tt> <span class='info'> CUPS 1.1 </span></td><td>1 = Flip page for back sides </td></tr>
-<tr><td><tt>fonts</tt> </td><td>Pre-loaded fonts</td></tr>
-<tr><td><tt>groups</tt> </td><td>UI groups</td></tr>
-<tr><td><tt>jcl_begin</tt> </td><td>Start JCL commands</td></tr>
-<tr><td><tt>jcl_end</tt> </td><td>End JCL commands</td></tr>
-<tr><td><tt>jcl_ps</tt> </td><td>Enter PostScript interpreter</td></tr>
-<tr><td><tt>landscape</tt> </td><td>-90 or 90</td></tr>
-<tr><td><tt>lang_encoding</tt> </td><td>Language encoding</td></tr>
-<tr><td><tt>lang_version</tt> </td><td>Language version (English, Spanish, etc.)</td></tr>
-<tr><td><tt>language_level</tt> </td><td>Language level of device</td></tr>
-<tr><td><tt>manual_copies</tt> </td><td>1 = Copies done manually, 0 = hardware</td></tr>
-<tr><td><tt>manufacturer</tt> </td><td>Manufacturer name</td></tr>
-<tr><td><tt>model_number</tt> </td><td>Device-specific model number</td></tr>
-<tr><td><tt>modelname</tt> </td><td>Model name (general)</td></tr>
-<tr><td><tt>nickname</tt> </td><td>Nickname (specific)</td></tr>
-<tr><td><tt>num_attrs</tt> <span class='info'> CUPS 1.1.19 </span></td><td>Number of attributes @private@</td></tr>
-<tr><td><tt>num_consts</tt> </td><td>Number of UI/Non-UI constraints</td></tr>
-<tr><td><tt>num_emulations</tt> </td><td>Number of emulations supported</td></tr>
-<tr><td><tt>num_filters</tt> </td><td>Number of filters</td></tr>
-<tr><td><tt>num_fonts</tt> </td><td>Number of pre-loaded fonts</td></tr>
-<tr><td><tt>num_groups</tt> </td><td>Number of UI groups</td></tr>
-<tr><td><tt>num_profiles</tt> </td><td>Number of sRGB color profiles</td></tr>
-<tr><td><tt>num_sizes</tt> </td><td>Number of page sizes</td></tr>
-<tr><td><tt>options</tt> <span class='info'> CUPS 1.2 </span></td><td>Option lookup array @private@</td></tr>
-<tr><td><tt>patches</tt> </td><td>Patch commands to be sent to printer</td></tr>
-<tr><td><tt>pcfilename</tt> <span class='info'> CUPS 1.1.19 </span></td><td>PCFileName string </td></tr>
-<tr><td><tt>product</tt> </td><td>Product name (from PS RIP/interpreter)</td></tr>
-<tr><td><tt>profiles</tt> </td><td>sRGB color profiles</td></tr>
-<tr><td><tt>protocols</tt> <span class='info'> CUPS 1.1.19 </span></td><td>Protocols (BCP, TBCP) string </td></tr>
-<tr><td><tt>shortnickname</tt> </td><td>Short version of nickname</td></tr>
-<tr><td><tt>sizes</tt> </td><td>Page sizes</td></tr>
-<tr><td><tt>sorted_attrs</tt> <span class='info'> CUPS 1.2 </span></td><td>Attribute lookup array @private@</td></tr>
-<tr><td><tt>throughput</tt> </td><td>Pages per minute</td></tr>
-<tr><td><tt>ttrasterizer</tt> </td><td>Truetype rasterizer</td></tr>
-<tr><td><tt>variable_sizes</tt> </td><td>1 = supports variable sizes, 0 = doesn't</td></tr>
-</tbody></table></div>
-<!-- NEW PAGE -->
-<h3 class='title'><a name='ppd_group_s'>ppd_group_s</a></h3>
-<h4>Description</h4>
-<p>Groups</p>
-<h4>Definition</h4>
-<pre>
-struct ppd_group_s
-{
- char text[PPD_MAX_TEXT - PPD_MAX_NAME];
- char name[PPD_MAX_NAME];
- int num_options;
- int num_subgroups;
- <a href='#ppd_option_t'>ppd_option_t</a> * options;
- struct <a href='#ppd_group_s'>ppd_group_s</a> * subgroups;
-};
-</pre>
-<h4>Members</h4>
-<div class='table'><table align='center' border='1' width='80%'>
-<thead><tr><th>Name</th><th>Description</th></tr></thead>
-<tbody>
-<tr><td><tt>PPD_MAX_NAME]</tt> </td><td>Human-readable group name</td></tr>
-<tr><td><tt>name[PPD_MAX_NAME]</tt> <span class='info'> CUPS 1.1.18 </span></td><td>Group name </td></tr>
-<tr><td><tt>num_options</tt> </td><td>Number of options</td></tr>
-<tr><td><tt>num_subgroups</tt> </td><td>Number of sub-groups</td></tr>
-<tr><td><tt>options</tt> </td><td>Options</td></tr>
-<tr><td><tt>subgroups</tt> </td><td>Sub-groups (max depth = 1)</td></tr>
-</tbody></table></div>
-<!-- NEW PAGE -->
-<h3 class='title'><a name='ppd_option_s'>ppd_option_s</a></h3>
-<h4>Description</h4>
-<p>Options</p>
-<h4>Definition</h4>
-<pre>
-struct ppd_option_s
-{
- <a href='#ppd_choice_t'>ppd_choice_t</a> * choices;
- char conflicted;
- char defchoice[PPD_MAX_NAME];
- char keyword[PPD_MAX_NAME];
- int num_choices;
- float order;
- <a href='#ppd_section_t'>ppd_section_t</a> section;
- char text[PPD_MAX_TEXT];
- <a href='#ppd_ui_t'>ppd_ui_t</a> ui;
-};
-</pre>
-<h4>Members</h4>
-<div class='table'><table align='center' border='1' width='80%'>
-<thead><tr><th>Name</th><th>Description</th></tr></thead>
-<tbody>
-<tr><td><tt>choices</tt> </td><td>Option choices</td></tr>
-<tr><td><tt>conflicted</tt> </td><td>0 if no conflicts exist, 1 otherwise</td></tr>
-<tr><td><tt>defchoice[PPD_MAX_NAME]</tt> </td><td>Default option choice</td></tr>
-<tr><td><tt>keyword[PPD_MAX_NAME]</tt> </td><td>Option keyword name ("PageSize", etc.)</td></tr>
-<tr><td><tt>num_choices</tt> </td><td>Number of option choices</td></tr>
-<tr><td><tt>order</tt> </td><td>Order number</td></tr>
-<tr><td><tt>section</tt> </td><td>Section for command</td></tr>
-<tr><td><tt>text[PPD_MAX_TEXT]</tt> </td><td>Human-readable text</td></tr>
-<tr><td><tt>ui</tt> </td><td>Type of UI option</td></tr>
-</tbody></table></div>
-<!-- NEW PAGE -->
-<h3 class='title'><a name='ppd_profile_s'>ppd_profile_s</a></h3>
-<h4>Description</h4>
-<p>sRGB Color Profiles</p>
-<h4>Definition</h4>
-<pre>
-struct ppd_profile_s
-{
- float density;
- float gamma;
- float matrix[3][3];
- char media_type[PPD_MAX_NAME];
- char resolution[PPD_MAX_NAME];
-};
-</pre>
-<h4>Members</h4>
-<div class='table'><table align='center' border='1' width='80%'>
-<thead><tr><th>Name</th><th>Description</th></tr></thead>
-<tbody>
-<tr><td><tt>density</tt> </td><td>Ink density to use</td></tr>
-<tr><td><tt>gamma</tt> </td><td>Gamma correction to use</td></tr>
-<tr><td><tt>matrix[3][3]</tt> </td><td>Transform matrix</td></tr>
-<tr><td><tt>media_type[PPD_MAX_NAME]</tt> </td><td>Media type or "-"</td></tr>
-<tr><td><tt>resolution[PPD_MAX_NAME]</tt> </td><td>Resolution or "-"</td></tr>
-</tbody></table></div>
-<!-- NEW PAGE -->
-<h3 class='title'><a name='ppd_size_s'>ppd_size_s</a></h3>
-<h4>Description</h4>
-<p>Page Sizes</p>
-<h4>Definition</h4>
-<pre>
-struct ppd_size_s
-{
- float bottom;
- float left;
- float length;
- int marked;
- char name[PPD_MAX_NAME];
- float right;
- float top;
- float width;
-};
-</pre>
-<h4>Members</h4>
-<div class='table'><table align='center' border='1' width='80%'>
-<thead><tr><th>Name</th><th>Description</th></tr></thead>
-<tbody>
-<tr><td><tt>bottom</tt> </td><td>Bottom printable margin in points</td></tr>
-<tr><td><tt>left</tt> </td><td>Left printable margin in points</td></tr>
-<tr><td><tt>length</tt> </td><td>Length of media in points</td></tr>
-<tr><td><tt>marked</tt> </td><td>Page size selected?</td></tr>
-<tr><td><tt>name[PPD_MAX_NAME]</tt> </td><td>Media size option</td></tr>
-<tr><td><tt>right</tt> </td><td>Right printable margin in points</td></tr>
-<tr><td><tt>top</tt> </td><td>Top printable margin in points</td></tr>
-<tr><td><tt>width</tt> </td><td>Width of media in points</td></tr>
-</tbody></table></div>
-<!-- NEW PAGE -->
-<h2 class='title'><a name='TYPES'>Types</a></h2>
-<ul>
- <li><a href='#ppd_attr_t'><tt>ppd_attr_t</tt></a> <span class='info'> CUPS 1.1.19 </span></li>
- <li><a href='#ppd_choice_t'><tt>ppd_choice_t</tt></a> </li>
- <li><a href='#ppd_const_t'><tt>ppd_const_t</tt></a> </li>
- <li><a href='#ppd_coption_t'><tt>ppd_coption_t</tt></a> <span class='info'> CUPS 1.2 </span></li>
- <li><a href='#ppd_cparam_t'><tt>ppd_cparam_t</tt></a> <span class='info'> CUPS 1.2 </span></li>
- <li><a href='#ppd_cptype_t'><tt>ppd_cptype_t</tt></a> <span class='info'> CUPS 1.2 </span></li>
- <li><a href='#ppd_cpvalue_t'><tt>ppd_cpvalue_t</tt></a> <span class='info'> CUPS 1.2 </span></li>
- <li><a href='#ppd_emul_t'><tt>ppd_emul_t</tt></a> </li>
- <li><a href='#ppd_file_t'><tt>ppd_file_t</tt></a> </li>
- <li><a href='#ppd_group_t'><tt>ppd_group_t</tt></a> </li>
- <li><a href='#ppd_option_t'><tt>ppd_option_t</tt></a> </li>
- <li><a href='#ppd_profile_t'><tt>ppd_profile_t</tt></a> </li>
- <li><a href='#ppd_section_t'><tt>ppd_section_t</tt></a> </li>
- <li><a href='#ppd_size_t'><tt>ppd_size_t</tt></a> </li>
- <li><a href='#ppd_ui_t'><tt>ppd_ui_t</tt></a> </li>
-</ul>
-<!-- NEW PAGE -->
-<h3 class='title'><span class='info'> CUPS 1.1.19 </span><a name='ppd_attr_t'>ppd_attr_t</a></h3>
-<h4>Description</h4>
-<p>PPD Attribute Structure </p>
-<h4>Definition</h4>
-<pre>
-typedef struct <a href='#ppd_attr_s'>ppd_attr_s</a> ppd_attr_t;
-</pre>
-<!-- NEW PAGE -->
-<h3 class='title'><a name='ppd_choice_t'>ppd_choice_t</a></h3>
-<h4>Description</h4>
-<p>Option choices</p>
-<h4>Definition</h4>
-<pre>
-typedef struct <a href='#ppd_choice_s'>ppd_choice_s</a> ppd_choice_t;
-</pre>
-<!-- NEW PAGE -->
-<h3 class='title'><a name='ppd_const_t'>ppd_const_t</a></h3>
-<h4>Description</h4>
-<p>Constraints</p>
-<h4>Definition</h4>
-<pre>
-typedef struct ppd_const_t;
-</pre>
-<!-- NEW PAGE -->
-<h3 class='title'><span class='info'> CUPS 1.2 </span><a name='ppd_coption_t'>ppd_coption_t</a></h3>
-<h4>Description</h4>
-<p>Custom Option </p>
-<h4>Definition</h4>
-<pre>
-typedef struct <a href='#ppd_coption_s'>ppd_coption_s</a> ppd_coption_t;
-</pre>
-<!-- NEW PAGE -->
-<h3 class='title'><span class='info'> CUPS 1.2 </span><a name='ppd_cparam_t'>ppd_cparam_t</a></h3>
-<h4>Description</h4>
-<p>Custom Parameter </p>
-<h4>Definition</h4>
-<pre>
-typedef struct <a href='#ppd_cparam_s'>ppd_cparam_s</a> ppd_cparam_t;
-</pre>
-<!-- NEW PAGE -->
-<h3 class='title'><span class='info'> CUPS 1.2 </span><a name='ppd_cptype_t'>ppd_cptype_t</a></h3>
-<h4>Description</h4>
-<p>Custom Parameter Type </p>
-<h4>Definition</h4>
-<pre>
-typedef enum <a href='#ppd_cptype_e'>ppd_cptype_e</a> ppd_cptype_t;
-</pre>
-<!-- NEW PAGE -->
-<h3 class='title'><span class='info'> CUPS 1.2 </span><a name='ppd_cpvalue_t'>ppd_cpvalue_t</a></h3>
-<h4>Description</h4>
-<p>Custom Parameter Value </p>
-<h4>Definition</h4>
-<pre>
-typedef union <a href='#ppd_cpvalue_u'>ppd_cpvalue_u</a> ppd_cpvalue_t;
-</pre>
-<!-- NEW PAGE -->
-<h3 class='title'><a name='ppd_emul_t'>ppd_emul_t</a></h3>
-<h4>Description</h4>
-<p>Emulators</p>
-<h4>Definition</h4>
-<pre>
-typedef struct <a href='#ppd_emul_s'>ppd_emul_s</a> ppd_emul_t;
-</pre>
-<!-- NEW PAGE -->
-<h3 class='title'><a name='ppd_file_t'>ppd_file_t</a></h3>
-<h4>Description</h4>
-<p>PPD File</p>
-<h4>Definition</h4>
-<pre>
-typedef struct <a href='#ppd_file_s'>ppd_file_s</a> ppd_file_t;
-</pre>
-<!-- NEW PAGE -->
-<h3 class='title'><a name='ppd_group_t'>ppd_group_t</a></h3>
-<h4>Description</h4>
-<p>Groups</p>
-<h4>Definition</h4>
-<pre>
-typedef struct <a href='#ppd_group_s'>ppd_group_s</a> ppd_group_t;
-</pre>
-<!-- NEW PAGE -->
-<h3 class='title'><a name='ppd_option_t'>ppd_option_t</a></h3>
-<h4>Description</h4>
-<p>Options</p>
-<h4>Definition</h4>
-<pre>
-typedef struct <a href='#ppd_option_s'>ppd_option_s</a> ppd_option_t;
-</pre>
-<!-- NEW PAGE -->
-<h3 class='title'><a name='ppd_profile_t'>ppd_profile_t</a></h3>
-<h4>Description</h4>
-<p>sRGB Color Profiles</p>
-<h4>Definition</h4>
-<pre>
-typedef struct <a href='#ppd_profile_s'>ppd_profile_s</a> ppd_profile_t;
-</pre>
-<!-- NEW PAGE -->
-<h3 class='title'><a name='ppd_section_t'>ppd_section_t</a></h3>
-<h4>Description</h4>
-<p>Order dependency sections</p>
-<h4>Definition</h4>
-<pre>
-typedef enum <a href='#ppd_section_e'>ppd_section_e</a> ppd_section_t;
-</pre>
-<!-- NEW PAGE -->
-<h3 class='title'><a name='ppd_size_t'>ppd_size_t</a></h3>
-<h4>Description</h4>
-<p>Page Sizes</p>
-<h4>Definition</h4>
-<pre>
-typedef struct <a href='#ppd_size_s'>ppd_size_s</a> ppd_size_t;
-</pre>
-<!-- NEW PAGE -->
-<h3 class='title'><a name='ppd_ui_t'>ppd_ui_t</a></h3>
-<h4>Description</h4>
-<p>UI Types</p>
-<h4>Definition</h4>
-<pre>
-typedef enum <a href='#ppd_ui_e'>ppd_ui_e</a> ppd_ui_t;
-</pre>
-<!-- NEW PAGE -->
-<h2 class='title'><a name='UNIONS'>Unions</a></h2>
-<ul>
- <li><a href='#ppd_cpvalue_u'><tt>ppd_cpvalue_u</tt></a> <span class='info'> CUPS 1.2 </span></li>
-</ul>
-<!-- NEW PAGE -->
-<h3 class='title'><span class='info'> CUPS 1.2 </span><a name='ppd_cpvalue_u'>ppd_cpvalue_u</a></h3>
-<h4>Description</h4>
-<p>Custom Parameter Value </p>
-<h4>Definition</h4>
-<pre>
-union ppd_cpvalue_u
-{
- float custom_curve;
- int custom_int;
- float custom_invcurve;
- char * custom_passcode;
- char * custom_password;
- float custom_points;
- float custom_real;
- char * custom_string;
-};
-</pre>
-<h4>Members</h4>
-<div class='table'><table align='center' border='1' width='80%'>
-<thead><tr><th>Name</th><th>Description</th></tr></thead>
-<tbody>
-<tr><td><tt>custom_curve</tt> </td><td>Gamma value</td></tr>
-<tr><td><tt>custom_int</tt> </td><td>Integer value</td></tr>
-<tr><td><tt>custom_invcurve</tt> </td><td>Gamma value</td></tr>
-<tr><td><tt>custom_passcode</tt> </td><td>Passcode value</td></tr>
-<tr><td><tt>custom_password</tt> </td><td>Password value</td></tr>
-<tr><td><tt>custom_points</tt> </td><td>Measurement value</td></tr>
-<tr><td><tt>custom_real</tt> </td><td>Real value</td></tr>
-<tr><td><tt>custom_string</tt> </td><td>String value</td></tr>
-</tbody></table></div>
+<h3 class="function"><span class="info"> CUPS 1.4 </span><a name="ppdLocalizeMarkerName">ppdLocalizeMarkerName</a></h3>
+<p class="description">Get the localized version of a marker-names
+attribute value.</p>
+<p class="code">
+const char *ppdLocalizeMarkerName (<br>
+ <a href="#ppd_file_t">ppd_file_t</a> *ppd,<br>
+ const char *name<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>ppd</dt>
+<dd class="description">PPD file</dd>
+<dt>name</dt>
+<dd class="description">Marker name to look up</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Value or <code>NULL</code> if not found</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function uses the current locale to find the corresponding name
+text from the attribute value. If no localized text for the requested
+name can be found, <code>NULL</code> is returned.
+
+</p>
+<h3 class="function"><a name="ppdMarkDefaults">ppdMarkDefaults</a></h3>
+<p class="description">Mark all default options in the PPD file.</p>
+<p class="code">
+void ppdMarkDefaults (<br>
+ <a href="#ppd_file_t">ppd_file_t</a> *ppd<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>ppd</dt>
+<dd class="description">PPD file record</dd>
+</dl>
+<h3 class="function"><a name="ppdMarkOption">ppdMarkOption</a></h3>
+<p class="description">Mark an option in a PPD file and return the number of
+conflicts.</p>
+<p class="code">
+int ppdMarkOption (<br>
+ <a href="#ppd_file_t">ppd_file_t</a> *ppd,<br>
+ const char *option,<br>
+ const char *choice<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>ppd</dt>
+<dd class="description">PPD file record</dd>
+<dt>option</dt>
+<dd class="description">Keyword</dd>
+<dt>choice</dt>
+<dd class="description">Option name</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Number of conflicts</p>
+<h3 class="function"><span class="info"> CUPS 1.2/Mac OS X 10.5 </span><a name="ppdNextCustomParam">ppdNextCustomParam</a></h3>
+<p class="description">Return the next parameter for a custom option.</p>
+<p class="code">
+<a href="#ppd_cparam_t">ppd_cparam_t</a> *ppdNextCustomParam (<br>
+ <a href="#ppd_coption_t">ppd_coption_t</a> *opt<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>opt</dt>
+<dd class="description">Custom option</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Custom parameter or NULL</p>
+<h3 class="function"><span class="info"> CUPS 1.2/Mac OS X 10.5 </span><a name="ppdNextOption">ppdNextOption</a></h3>
+<p class="description">Return the next option in the PPD file.</p>
+<p class="code">
+<a href="#ppd_option_t">ppd_option_t</a> *ppdNextOption (<br>
+ <a href="#ppd_file_t">ppd_file_t</a> *ppd<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>ppd</dt>
+<dd class="description">PPD file</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Next option or <code>NULL</code></p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">Options are returned from all groups in ascending alphanumeric order.
+
+</p>
+<h3 class="function"><a name="ppdOpen">ppdOpen</a></h3>
+<p class="description">Read a PPD file into memory.</p>
+<p class="code">
+<a href="#ppd_file_t">ppd_file_t</a> *ppdOpen (<br>
+ FILE *fp<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>fp</dt>
+<dd class="description">File to read from</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">PPD file record</p>
+<h3 class="function"><span class="info"> CUPS 1.2/Mac OS X 10.5 </span><a name="ppdOpen2">ppdOpen2</a></h3>
+<p class="description">Read a PPD file into memory.</p>
+<p class="code">
+<a href="#ppd_file_t">ppd_file_t</a> *ppdOpen2 (<br>
+ cups_file_t *fp<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>fp</dt>
+<dd class="description">File to read from</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">PPD file record or <code>NULL</code> if the PPD file could not be opened.</p>
+<h3 class="function"><a name="ppdOpenFd">ppdOpenFd</a></h3>
+<p class="description">Read a PPD file into memory.</p>
+<p class="code">
+<a href="#ppd_file_t">ppd_file_t</a> *ppdOpenFd (<br>
+ int fd<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>fd</dt>
+<dd class="description">File to read from</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">PPD file record or <code>NULL</code> if the PPD file could not be opened.</p>
+<h3 class="function"><a name="ppdOpenFile">ppdOpenFile</a></h3>
+<p class="description">Read a PPD file into memory.</p>
+<p class="code">
+<a href="#ppd_file_t">ppd_file_t</a> *ppdOpenFile (<br>
+ const char *filename<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>filename</dt>
+<dd class="description">File to read from</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">PPD file record or <code>NULL</code> if the PPD file could not be opened.</p>
+<h3 class="function"><a name="ppdPageLength">ppdPageLength</a></h3>
+<p class="description">Get the page length for the given size.</p>
+<p class="code">
+float ppdPageLength (<br>
+ <a href="#ppd_file_t">ppd_file_t</a> *ppd,<br>
+ const char *name<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>ppd</dt>
+<dd class="description">PPD file</dd>
+<dt>name</dt>
+<dd class="description">Size name</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Length of page in points or 0.0</p>
+<h3 class="function"><a name="ppdPageSize">ppdPageSize</a></h3>
+<p class="description">Get the page size record for the given size.</p>
+<p class="code">
+<a href="#ppd_size_t">ppd_size_t</a> *ppdPageSize (<br>
+ <a href="#ppd_file_t">ppd_file_t</a> *ppd,<br>
+ const char *name<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>ppd</dt>
+<dd class="description">PPD file record</dd>
+<dt>name</dt>
+<dd class="description">Size name</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Size record for page or NULL</p>
+<h3 class="function"><span class="info"> CUPS 1.4 </span><a name="ppdPageSizeLimits">ppdPageSizeLimits</a></h3>
+<p class="description">Return the custom page size limits.</p>
+<p class="code">
+int ppdPageSizeLimits (<br>
+ <a href="#ppd_file_t">ppd_file_t</a> *ppd,<br>
+ <a href="#ppd_size_t">ppd_size_t</a> *minimum,<br>
+ <a href="#ppd_size_t">ppd_size_t</a> *maximum<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>ppd</dt>
+<dd class="description">PPD file record</dd>
+<dt>minimum</dt>
+<dd class="description">Minimum custom size</dd>
+<dt>maximum</dt>
+<dd class="description">Maximum custom size</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">1 if custom sizes are supported, 0 otherwise</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function returns the minimum and maximum custom page sizes and printable
+areas based on the currently-marked (selected) options.<br>
+<br>
+If the specified PPD file does not support custom page sizes, both
+"minimum" and "maximum" are filled with zeroes.
+
+</p>
+<h3 class="function"><a name="ppdPageWidth">ppdPageWidth</a></h3>
+<p class="description">Get the page width for the given size.</p>
+<p class="code">
+float ppdPageWidth (<br>
+ <a href="#ppd_file_t">ppd_file_t</a> *ppd,<br>
+ const char *name<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>ppd</dt>
+<dd class="description">PPD file record</dd>
+<dt>name</dt>
+<dd class="description">Size name</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Width of page in points or 0.0</p>
+<h3 class="function"><span class="info"> CUPS 1.1.20/Mac OS X 10.4 </span><a name="ppdSetConformance">ppdSetConformance</a></h3>
+<p class="description">Set the conformance level for PPD files.</p>
+<p class="code">
+void ppdSetConformance (<br>
+ <a href="#ppd_conform_t">ppd_conform_t</a> c<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>c</dt>
+<dd class="description">Conformance level</dd>
+</dl>
+<h2 class="title"><a name="TYPES">Data Types</a></h2>
+<h3 class="typedef"><span class="info"> CUPS 1.1.19/Mac OS X 10.3 </span><a name="ppd_attr_t">ppd_attr_t</a></h3>
+<p class="description">PPD Attribute Structure </p>
+<p class="code">
+typedef struct <a href="#ppd_attr_s">ppd_attr_s</a> ppd_attr_t;
+</p>
+<h3 class="typedef"><a name="ppd_choice_t">ppd_choice_t</a></h3>
+<p class="description">Option choices</p>
+<p class="code">
+typedef struct <a href="#ppd_choice_s">ppd_choice_s</a> ppd_choice_t;
+</p>
+<h3 class="typedef"><span class="info"> CUPS 1.1.19/Mac OS X 10.3 </span><a name="ppd_conform_t">ppd_conform_t</a></h3>
+<p class="description">Conformance Levels </p>
+<p class="code">
+typedef enum <a href="#ppd_conform_e">ppd_conform_e</a> ppd_conform_t;
+</p>
+<h3 class="typedef"><a name="ppd_const_t">ppd_const_t</a></h3>
+<p class="description">Constraints</p>
+<p class="code">
+typedef struct <a href="#ppd_const_s">ppd_const_s</a> ppd_const_t;
+</p>
+<h3 class="typedef"><span class="info"> CUPS 1.2/Mac OS X 10.5 </span><a name="ppd_coption_t">ppd_coption_t</a></h3>
+<p class="description">Custom Option </p>
+<p class="code">
+typedef struct <a href="#ppd_coption_s">ppd_coption_s</a> ppd_coption_t;
+</p>
+<h3 class="typedef"><span class="info"> CUPS 1.2/Mac OS X 10.5 </span><a name="ppd_cparam_t">ppd_cparam_t</a></h3>
+<p class="description">Custom Parameter </p>
+<p class="code">
+typedef struct <a href="#ppd_cparam_s">ppd_cparam_s</a> ppd_cparam_t;
+</p>
+<h3 class="typedef"><span class="info"> CUPS 1.2/Mac OS X 10.5 </span><a name="ppd_cplimit_t">ppd_cplimit_t</a></h3>
+<p class="description">Custom Parameter Limit </p>
+<p class="code">
+typedef union <a href="#ppd_cplimit_u">ppd_cplimit_u</a> ppd_cplimit_t;
+</p>
+<h3 class="typedef"><span class="info"> CUPS 1.2/Mac OS X 10.5 </span><a name="ppd_cptype_t">ppd_cptype_t</a></h3>
+<p class="description">Custom Parameter Type </p>
+<p class="code">
+typedef enum <a href="#ppd_cptype_e">ppd_cptype_e</a> ppd_cptype_t;
+</p>
+<h3 class="typedef"><span class="info"> CUPS 1.2/Mac OS X 10.5 </span><a name="ppd_cpvalue_t">ppd_cpvalue_t</a></h3>
+<p class="description">Custom Parameter Value </p>
+<p class="code">
+typedef union <a href="#ppd_cpvalue_u">ppd_cpvalue_u</a> ppd_cpvalue_t;
+</p>
+<h3 class="typedef"><a name="ppd_cs_t">ppd_cs_t</a></h3>
+<p class="description">Colorspaces</p>
+<p class="code">
+typedef enum <a href="#ppd_cs_e">ppd_cs_e</a> ppd_cs_t;
+</p>
+<h3 class="typedef"><a name="ppd_emul_t">ppd_emul_t</a></h3>
+<p class="description">Emulators</p>
+<p class="code">
+typedef struct <a href="#ppd_emul_s">ppd_emul_s</a> ppd_emul_t;
+</p>
+<h3 class="typedef"><a name="ppd_file_t">ppd_file_t</a></h3>
+<p class="description">PPD File</p>
+<p class="code">
+typedef struct <a href="#ppd_file_s">ppd_file_s</a> ppd_file_t;
+</p>
+<h3 class="typedef"><a name="ppd_group_t">ppd_group_t</a></h3>
+<p class="description">Groups</p>
+<p class="code">
+typedef struct <a href="#ppd_group_s">ppd_group_s</a> ppd_group_t;
+</p>
+<h3 class="typedef"><a name="ppd_option_t">ppd_option_t</a></h3>
+<p class="description">Options</p>
+<p class="code">
+typedef struct <a href="#ppd_option_s">ppd_option_s</a> ppd_option_t;
+</p>
+<h3 class="typedef"><a name="ppd_profile_t">ppd_profile_t</a></h3>
+<p class="description">sRGB Color Profiles</p>
+<p class="code">
+typedef struct <a href="#ppd_profile_s">ppd_profile_s</a> ppd_profile_t;
+</p>
+<h3 class="typedef"><a name="ppd_section_t">ppd_section_t</a></h3>
+<p class="description">Order dependency sections</p>
+<p class="code">
+typedef enum <a href="#ppd_section_e">ppd_section_e</a> ppd_section_t;
+</p>
+<h3 class="typedef"><a name="ppd_size_t">ppd_size_t</a></h3>
+<p class="description">Page Sizes</p>
+<p class="code">
+typedef struct <a href="#ppd_size_s">ppd_size_s</a> ppd_size_t;
+</p>
+<h3 class="typedef"><span class="info"> CUPS 1.1.19/Mac OS X 10.3 </span><a name="ppd_status_t">ppd_status_t</a></h3>
+<p class="description">Status Codes </p>
+<p class="code">
+typedef enum <a href="#ppd_status_e">ppd_status_e</a> ppd_status_t;
+</p>
+<h3 class="typedef"><a name="ppd_ui_t">ppd_ui_t</a></h3>
+<p class="description">UI Types</p>
+<p class="code">
+typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
+</p>
+<h2 class="title"><a name="STRUCTURES">Structures</a></h2>
+<h3 class="struct"><span class="info"> CUPS 1.1.19/Mac OS X 10.3 </span><a name="ppd_attr_s">ppd_attr_s</a></h3>
+<p class="description">PPD Attribute Structure </p>
+<p class="code">struct ppd_attr_s {<br>
+ char name[PPD_MAX_NAME];<br>
+ char spec[PPD_MAX_NAME];<br>
+ char text[PPD_MAX_TEXT];<br>
+ char *value;<br>
+};</p>
+<h4 class="members">Members</h4>
+<dl>
+<dt>name[PPD_MAX_NAME] </dt>
+<dd class="description">Name of attribute (cupsXYZ)</dd>
+<dt>spec[PPD_MAX_NAME] </dt>
+<dd class="description">Specifier string, if any</dd>
+<dt>text[PPD_MAX_TEXT] </dt>
+<dd class="description">Human-readable text, if any</dd>
+<dt>value </dt>
+<dd class="description">Value string</dd>
+</dl>
+<h3 class="struct"><a name="ppd_choice_s">ppd_choice_s</a></h3>
+<p class="description">Option choices</p>
+<p class="code">struct ppd_choice_s {<br>
+ char choice[PPD_MAX_NAME];<br>
+ char *code;<br>
+ char marked;<br>
+ <a href="#ppd_option_t">ppd_option_t</a> *option;<br>
+ char text[PPD_MAX_TEXT];<br>
+};</p>
+<h4 class="members">Members</h4>
+<dl>
+<dt>choice[PPD_MAX_NAME] </dt>
+<dd class="description">Computer-readable option name</dd>
+<dt>code </dt>
+<dd class="description">Code to send for this option</dd>
+<dt>marked </dt>
+<dd class="description">0 if not selected, 1 otherwise</dd>
+<dt>option </dt>
+<dd class="description">Pointer to parent option structure</dd>
+<dt>text[PPD_MAX_TEXT] </dt>
+<dd class="description">Human-readable option name</dd>
+</dl>
+<h3 class="struct"><a name="ppd_const_s">ppd_const_s</a></h3>
+<p class="description">Constraints</p>
+<p class="code">struct ppd_const_s {<br>
+ char choice1[PPD_MAX_NAME];<br>
+ char choice2[PPD_MAX_NAME];<br>
+ char option1[PPD_MAX_NAME];<br>
+ char option2[PPD_MAX_NAME];<br>
+};</p>
+<h4 class="members">Members</h4>
+<dl>
+<dt>choice1[PPD_MAX_NAME] </dt>
+<dd class="description">First option/choice (blank for all)</dd>
+<dt>choice2[PPD_MAX_NAME] </dt>
+<dd class="description">Second option/choice (blank for all)</dd>
+<dt>option1[PPD_MAX_NAME] </dt>
+<dd class="description">First keyword</dd>
+<dt>option2[PPD_MAX_NAME] </dt>
+<dd class="description">Second keyword</dd>
+</dl>
+<h3 class="struct"><span class="info"> CUPS 1.2/Mac OS X 10.5 </span><a name="ppd_coption_s">ppd_coption_s</a></h3>
+<p class="description">Custom Option </p>
+<p class="code">struct ppd_coption_s {<br>
+ char keyword[PPD_MAX_NAME];<br>
+ int marked;<br>
+ <a href="#ppd_option_t">ppd_option_t</a> *option;<br>
+ cups_array_t *params;<br>
+};</p>
+<h4 class="members">Members</h4>
+<dl>
+<dt>keyword[PPD_MAX_NAME] </dt>
+<dd class="description">Name of option that is being extended...</dd>
+<dt>marked </dt>
+<dd class="description">Extended option is marked</dd>
+<dt>option </dt>
+<dd class="description">Option that is being extended...</dd>
+<dt>params </dt>
+<dd class="description">Parameters</dd>
+</dl>
+<h3 class="struct"><span class="info"> CUPS 1.2/Mac OS X 10.5 </span><a name="ppd_cparam_s">ppd_cparam_s</a></h3>
+<p class="description">Custom Parameter </p>
+<p class="code">struct ppd_cparam_s {<br>
+ <a href="#ppd_cpvalue_t">ppd_cpvalue_t</a> current;<br>
+ <a href="#ppd_cplimit_t">ppd_cplimit_t</a> minimum, maximum;<br>
+ char name[PPD_MAX_NAME];<br>
+ int order;<br>
+ char text[PPD_MAX_TEXT];<br>
+ <a href="#ppd_cptype_t">ppd_cptype_t</a> type;<br>
+};</p>
+<h4 class="members">Members</h4>
+<dl>
+<dt>current </dt>
+<dd class="description">Current value</dd>
+<dt>maximum </dt>
+<dd class="description">Maximum value</dd>
+<dt>name[PPD_MAX_NAME] </dt>
+<dd class="description">Parameter name</dd>
+<dt>order </dt>
+<dd class="description">Order (0 to N)</dd>
+<dt>text[PPD_MAX_TEXT] </dt>
+<dd class="description">Human-readable text</dd>
+<dt>type </dt>
+<dd class="description">Parameter type</dd>
+</dl>
+<h3 class="struct"><a name="ppd_emul_s">ppd_emul_s</a></h3>
+<p class="description">Emulators</p>
+<p class="code">struct ppd_emul_s {<br>
+ char name[PPD_MAX_NAME];<br>
+ char *start;<br>
+ char *stop;<br>
+};</p>
+<h4 class="members">Members</h4>
+<dl>
+<dt>name[PPD_MAX_NAME] </dt>
+<dd class="description">Emulator name</dd>
+<dt>start </dt>
+<dd class="description">Code to switch to this emulation</dd>
+<dt>stop </dt>
+<dd class="description">Code to stop this emulation</dd>
+</dl>
+<h3 class="struct"><a name="ppd_file_s">ppd_file_s</a></h3>
+<p class="description">PPD File</p>
+<p class="code">struct ppd_file_s {<br>
+ int accurate_screens;<br>
+ int color_device;<br>
+ <a href="#ppd_cs_t">ppd_cs_t</a> colorspace;<br>
+ <a href="#ppd_const_t">ppd_const_t</a> *consts;<br>
+ int contone_only;<br>
+ float custom_margins[4];<br>
+ float custom_max[2];<br>
+ float custom_min[2];<br>
+ <a href="#ppd_emul_t">ppd_emul_t</a> *emulations;<br>
+ char **filters;<br>
+ int flip_duplex;<br>
+ char **fonts;<br>
+ <a href="#ppd_group_t">ppd_group_t</a> *groups;<br>
+ char *jcl_begin;<br>
+ char *jcl_end;<br>
+ char *jcl_ps;<br>
+ int landscape;<br>
+ char *lang_encoding;<br>
+ char *lang_version;<br>
+ int language_level;<br>
+ int manual_copies;<br>
+ char *manufacturer;<br>
+ int model_number;<br>
+ char *modelname;<br>
+ char *nickname;<br>
+ int num_consts;<br>
+ int num_emulations;<br>
+ int num_filters;<br>
+ int num_fonts;<br>
+ int num_groups;<br>
+ int num_profiles;<br>
+ int num_sizes;<br>
+ char *patches;<br>
+ char *pcfilename;<br>
+ char *product;<br>
+ <a href="#ppd_profile_t">ppd_profile_t</a> *profiles;<br>
+ char *protocols;<br>
+ char *shortnickname;<br>
+ <a href="#ppd_size_t">ppd_size_t</a> *sizes;<br>
+ int throughput;<br>
+ char *ttrasterizer;<br>
+ int variable_sizes;<br>
+};</p>
+<h4 class="members">Members</h4>
+<dl>
+<dt>accurate_screens </dt>
+<dd class="description">1 = supports accurate screens, 0 = not</dd>
+<dt>color_device </dt>
+<dd class="description">1 = color device, 0 = grayscale</dd>
+<dt>colorspace </dt>
+<dd class="description">Default colorspace</dd>
+<dt>consts </dt>
+<dd class="description">UI/Non-UI constraints</dd>
+<dt>contone_only </dt>
+<dd class="description">1 = continuous tone only, 0 = not</dd>
+<dt>custom_margins[4] </dt>
+<dd class="description">Margins around page</dd>
+<dt>custom_max[2] </dt>
+<dd class="description">Maximum variable page size</dd>
+<dt>custom_min[2] </dt>
+<dd class="description">Minimum variable page size</dd>
+<dt>emulations </dt>
+<dd class="description">Emulations and the code to invoke them</dd>
+<dt>filters </dt>
+<dd class="description">Filter strings...</dd>
+<dt>flip_duplex <span class="info"> DEPRECATED </span></dt>
+<dd class="description">1 = Flip page for back sides </dd>
+<dt>fonts </dt>
+<dd class="description">Pre-loaded fonts</dd>
+<dt>groups </dt>
+<dd class="description">UI groups</dd>
+<dt>jcl_begin </dt>
+<dd class="description">Start JCL commands</dd>
+<dt>jcl_end </dt>
+<dd class="description">End JCL commands</dd>
+<dt>jcl_ps </dt>
+<dd class="description">Enter PostScript interpreter</dd>
+<dt>landscape </dt>
+<dd class="description">-90 or 90</dd>
+<dt>lang_encoding </dt>
+<dd class="description">Language encoding</dd>
+<dt>lang_version </dt>
+<dd class="description">Language version (English, Spanish, etc.)</dd>
+<dt>language_level </dt>
+<dd class="description">Language level of device</dd>
+<dt>manual_copies </dt>
+<dd class="description">1 = Copies done manually, 0 = hardware</dd>
+<dt>manufacturer </dt>
+<dd class="description">Manufacturer name</dd>
+<dt>model_number </dt>
+<dd class="description">Device-specific model number</dd>
+<dt>modelname </dt>
+<dd class="description">Model name (general)</dd>
+<dt>nickname </dt>
+<dd class="description">Nickname (specific)</dd>
+<dt>num_consts </dt>
+<dd class="description">Number of UI/Non-UI constraints</dd>
+<dt>num_emulations </dt>
+<dd class="description">Number of emulations supported</dd>
+<dt>num_filters </dt>
+<dd class="description">Number of filters</dd>
+<dt>num_fonts </dt>
+<dd class="description">Number of pre-loaded fonts</dd>
+<dt>num_groups </dt>
+<dd class="description">Number of UI groups</dd>
+<dt>num_profiles <span class="info"> DEPRECATED </span></dt>
+<dd class="description">Number of sRGB color profiles </dd>
+<dt>num_sizes </dt>
+<dd class="description">Number of page sizes</dd>
+<dt>patches </dt>
+<dd class="description">Patch commands to be sent to printer</dd>
+<dt>pcfilename <span class="info"> CUPS 1.1.19/Mac OS X 10.3 </span></dt>
+<dd class="description">PCFileName string </dd>
+<dt>product </dt>
+<dd class="description">Product name (from PS RIP/interpreter)</dd>
+<dt>profiles <span class="info"> DEPRECATED </span></dt>
+<dd class="description">sRGB color profiles </dd>
+<dt>protocols <span class="info"> CUPS 1.1.19/Mac OS X 10.3 </span></dt>
+<dd class="description">Protocols (BCP, TBCP) string </dd>
+<dt>shortnickname </dt>
+<dd class="description">Short version of nickname</dd>
+<dt>sizes </dt>
+<dd class="description">Page sizes</dd>
+<dt>throughput </dt>
+<dd class="description">Pages per minute</dd>
+<dt>ttrasterizer </dt>
+<dd class="description">Truetype rasterizer</dd>
+<dt>variable_sizes </dt>
+<dd class="description">1 = supports variable sizes, 0 = doesn't</dd>
+</dl>
+<h3 class="struct"><a name="ppd_group_s">ppd_group_s</a></h3>
+<p class="description">Groups</p>
+<p class="code">struct ppd_group_s {<br>
+ char text[PPD_MAX_TEXT - PPD_MAX_NAME];<br>
+ char name[PPD_MAX_NAME];<br>
+ int num_options;<br>
+ int num_subgroups;<br>
+ <a href="#ppd_option_t">ppd_option_t</a> *options;<br>
+ struct <a href="#ppd_group_s">ppd_group_s</a> *subgroups;<br>
+};</p>
+<h4 class="members">Members</h4>
+<dl>
+<dt>PPD_MAX_NAME] </dt>
+<dd class="description">Human-readable group name</dd>
+<dt>name[PPD_MAX_NAME] <span class="info"> CUPS 1.1.18/Mac OS X 10.3 </span></dt>
+<dd class="description">Group name </dd>
+<dt>num_options </dt>
+<dd class="description">Number of options</dd>
+<dt>num_subgroups </dt>
+<dd class="description">Number of sub-groups</dd>
+<dt>options </dt>
+<dd class="description">Options</dd>
+<dt>subgroups </dt>
+<dd class="description">Sub-groups (max depth = 1)</dd>
+</dl>
+<h3 class="struct"><a name="ppd_option_s">ppd_option_s</a></h3>
+<p class="description">Options</p>
+<p class="code">struct ppd_option_s {<br>
+ <a href="#ppd_choice_t">ppd_choice_t</a> *choices;<br>
+ char conflicted;<br>
+ char defchoice[PPD_MAX_NAME];<br>
+ char keyword[PPD_MAX_NAME];<br>
+ int num_choices;<br>
+ float order;<br>
+ <a href="#ppd_section_t">ppd_section_t</a> section;<br>
+ char text[PPD_MAX_TEXT];<br>
+ <a href="#ppd_ui_t">ppd_ui_t</a> ui;<br>
+};</p>
+<h4 class="members">Members</h4>
+<dl>
+<dt>choices </dt>
+<dd class="description">Option choices</dd>
+<dt>conflicted </dt>
+<dd class="description">0 if no conflicts exist, 1 otherwise</dd>
+<dt>defchoice[PPD_MAX_NAME] </dt>
+<dd class="description">Default option choice</dd>
+<dt>keyword[PPD_MAX_NAME] </dt>
+<dd class="description">Option keyword name ("PageSize", etc.)</dd>
+<dt>num_choices </dt>
+<dd class="description">Number of option choices</dd>
+<dt>order </dt>
+<dd class="description">Order number</dd>
+<dt>section </dt>
+<dd class="description">Section for command</dd>
+<dt>text[PPD_MAX_TEXT] </dt>
+<dd class="description">Human-readable text</dd>
+<dt>ui </dt>
+<dd class="description">Type of UI option</dd>
+</dl>
+<h3 class="struct"><a name="ppd_profile_s">ppd_profile_s</a></h3>
+<p class="description">sRGB Color Profiles</p>
+<p class="code">struct ppd_profile_s {<br>
+ float density;<br>
+ float gamma;<br>
+ float matrix[3][3];<br>
+ char media_type[PPD_MAX_NAME];<br>
+ char resolution[PPD_MAX_NAME];<br>
+};</p>
+<h4 class="members">Members</h4>
+<dl>
+<dt>density </dt>
+<dd class="description">Ink density to use</dd>
+<dt>gamma </dt>
+<dd class="description">Gamma correction to use</dd>
+<dt>matrix[3][3] </dt>
+<dd class="description">Transform matrix</dd>
+<dt>media_type[PPD_MAX_NAME] </dt>
+<dd class="description">Media type or "-"</dd>
+<dt>resolution[PPD_MAX_NAME] </dt>
+<dd class="description">Resolution or "-"</dd>
+</dl>
+<h3 class="struct"><a name="ppd_size_s">ppd_size_s</a></h3>
+<p class="description">Page Sizes</p>
+<p class="code">struct ppd_size_s {<br>
+ float bottom;<br>
+ float left;<br>
+ float length;<br>
+ int marked;<br>
+ char name[PPD_MAX_NAME];<br>
+ float right;<br>
+ float top;<br>
+ float width;<br>
+};</p>
+<h4 class="members">Members</h4>
+<dl>
+<dt>bottom </dt>
+<dd class="description">Bottom printable margin in points</dd>
+<dt>left </dt>
+<dd class="description">Left printable margin in points</dd>
+<dt>length </dt>
+<dd class="description">Length of media in points</dd>
+<dt>marked </dt>
+<dd class="description">Page size selected?</dd>
+<dt>name[PPD_MAX_NAME] </dt>
+<dd class="description">Media size option</dd>
+<dt>right </dt>
+<dd class="description">Right printable margin in points</dd>
+<dt>top </dt>
+<dd class="description">Top printable margin in points</dd>
+<dt>width </dt>
+<dd class="description">Width of media in points</dd>
+</dl>
+<h2 class="title"><a name="UNIONS">Unions</a></h2>
+<h3 class="union"><span class="info"> CUPS 1.2/Mac OS X 10.5 </span><a name="ppd_cplimit_u">ppd_cplimit_u</a></h3>
+<p class="description">Custom Parameter Limit </p>
+<p class="code">union ppd_cplimit_u {<br>
+ float custom_curve;<br>
+ int custom_int;<br>
+ float custom_invcurve;<br>
+ int custom_passcode;<br>
+ int custom_password;<br>
+ float custom_points;<br>
+ float custom_real;<br>
+ int custom_string;<br>
+};</p>
+<h4 class="members">Members</h4>
+<dl>
+<dt>custom_curve </dt>
+<dd class="description">Gamma value</dd>
+<dt>custom_int </dt>
+<dd class="description">Integer value</dd>
+<dt>custom_invcurve </dt>
+<dd class="description">Gamma value</dd>
+<dt>custom_passcode </dt>
+<dd class="description">Passcode length</dd>
+<dt>custom_password </dt>
+<dd class="description">Password length</dd>
+<dt>custom_points </dt>
+<dd class="description">Measurement value</dd>
+<dt>custom_real </dt>
+<dd class="description">Real value</dd>
+<dt>custom_string </dt>
+<dd class="description">String length</dd>
+</dl>
+<h3 class="union"><span class="info"> CUPS 1.2/Mac OS X 10.5 </span><a name="ppd_cpvalue_u">ppd_cpvalue_u</a></h3>
+<p class="description">Custom Parameter Value </p>
+<p class="code">union ppd_cpvalue_u {<br>
+ float custom_curve;<br>
+ int custom_int;<br>
+ float custom_invcurve;<br>
+ char *custom_passcode;<br>
+ char *custom_password;<br>
+ float custom_points;<br>
+ float custom_real;<br>
+ char *custom_string;<br>
+};</p>
+<h4 class="members">Members</h4>
+<dl>
+<dt>custom_curve </dt>
+<dd class="description">Gamma value</dd>
+<dt>custom_int </dt>
+<dd class="description">Integer value</dd>
+<dt>custom_invcurve </dt>
+<dd class="description">Gamma value</dd>
+<dt>custom_passcode </dt>
+<dd class="description">Passcode value</dd>
+<dt>custom_password </dt>
+<dd class="description">Password value</dd>
+<dt>custom_points </dt>
+<dd class="description">Measurement value</dd>
+<dt>custom_real </dt>
+<dd class="description">Real value</dd>
+<dt>custom_string </dt>
+<dd class="description">String value</dd>
+</dl>
+<h2 class="title"><a name="ENUMERATIONS">Constants</a></h2>
+<h3 class="enumeration"><span class="info"> CUPS 1.1.19/Mac OS X 10.3 </span><a name="ppd_conform_e">ppd_conform_e</a></h3>
+<p class="description">Conformance Levels </p>
+<h4 class="constants">Constants</h4>
+<dl>
+<dt>PPD_CONFORM_RELAXED </dt>
+<dd class="description">Relax whitespace and control char</dd>
+<dt>PPD_CONFORM_STRICT </dt>
+<dd class="description">Require strict conformance</dd>
+</dl>
+<h3 class="enumeration"><span class="info"> CUPS 1.2/Mac OS X 10.5 </span><a name="ppd_cptype_e">ppd_cptype_e</a></h3>
+<p class="description">Custom Parameter Type </p>
+<h4 class="constants">Constants</h4>
+<dl>
+<dt>PPD_CUSTOM_CURVE </dt>
+<dd class="description">Curve value for f(x) = x^value</dd>
+<dt>PPD_CUSTOM_INT </dt>
+<dd class="description">Integer number value</dd>
+<dt>PPD_CUSTOM_INVCURVE </dt>
+<dd class="description">Curve value for f(x) = x^(1/value)</dd>
+<dt>PPD_CUSTOM_PASSCODE </dt>
+<dd class="description">String of (hidden) numbers</dd>
+<dt>PPD_CUSTOM_PASSWORD </dt>
+<dd class="description">String of (hidden) characters</dd>
+<dt>PPD_CUSTOM_POINTS </dt>
+<dd class="description">Measurement value in points</dd>
+<dt>PPD_CUSTOM_REAL </dt>
+<dd class="description">Real number value</dd>
+<dt>PPD_CUSTOM_STRING </dt>
+<dd class="description">String of characters</dd>
+</dl>
+<h3 class="enumeration"><a name="ppd_cs_e">ppd_cs_e</a></h3>
+<p class="description">Colorspaces</p>
+<h4 class="constants">Constants</h4>
+<dl>
+<dt>PPD_CS_CMY </dt>
+<dd class="description">CMY colorspace</dd>
+<dt>PPD_CS_CMYK </dt>
+<dd class="description">CMYK colorspace</dd>
+<dt>PPD_CS_GRAY </dt>
+<dd class="description">Grayscale colorspace</dd>
+<dt>PPD_CS_N </dt>
+<dd class="description">DeviceN colorspace</dd>
+<dt>PPD_CS_RGB </dt>
+<dd class="description">RGB colorspace</dd>
+<dt>PPD_CS_RGBK </dt>
+<dd class="description">RGBK (K = gray) colorspace</dd>
+</dl>
+<h3 class="enumeration"><a name="ppd_section_e">ppd_section_e</a></h3>
+<p class="description">Order dependency sections</p>
+<h4 class="constants">Constants</h4>
+<dl>
+<dt>PPD_ORDER_ANY </dt>
+<dd class="description">Option code can be anywhere in the file</dd>
+<dt>PPD_ORDER_DOCUMENT </dt>
+<dd class="description">... must be in the DocumentSetup section</dd>
+<dt>PPD_ORDER_EXIT </dt>
+<dd class="description">... must be sent prior to the document</dd>
+<dt>PPD_ORDER_JCL </dt>
+<dd class="description">... must be sent as a JCL command</dd>
+<dt>PPD_ORDER_PAGE </dt>
+<dd class="description">... must be in the PageSetup section</dd>
+<dt>PPD_ORDER_PROLOG </dt>
+<dd class="description">... must be in the Prolog section</dd>
+</dl>
+<h3 class="enumeration"><span class="info"> CUPS 1.1.19/Mac OS X 10.3 </span><a name="ppd_status_e">ppd_status_e</a></h3>
+<p class="description">Status Codes </p>
+<h4 class="constants">Constants</h4>
+<dl>
+<dt>PPD_ALLOC_ERROR </dt>
+<dd class="description">Memory allocation error</dd>
+<dt>PPD_BAD_CUSTOM_PARAM </dt>
+<dd class="description">Bad custom parameter</dd>
+<dt>PPD_BAD_OPEN_GROUP </dt>
+<dd class="description">Bad OpenGroup</dd>
+<dt>PPD_BAD_OPEN_UI </dt>
+<dd class="description">Bad OpenUI/JCLOpenUI</dd>
+<dt>PPD_BAD_ORDER_DEPENDENCY </dt>
+<dd class="description">Bad OrderDependency</dd>
+<dt>PPD_BAD_UI_CONSTRAINTS </dt>
+<dd class="description">Bad UIConstraints</dd>
+<dt>PPD_FILE_OPEN_ERROR </dt>
+<dd class="description">Unable to open PPD file</dd>
+<dt>PPD_ILLEGAL_CHARACTER </dt>
+<dd class="description">Illegal control character</dd>
+<dt>PPD_ILLEGAL_MAIN_KEYWORD </dt>
+<dd class="description">Illegal main keyword string</dd>
+<dt>PPD_ILLEGAL_OPTION_KEYWORD </dt>
+<dd class="description">Illegal option keyword string</dd>
+<dt>PPD_ILLEGAL_TRANSLATION </dt>
+<dd class="description">Illegal translation string</dd>
+<dt>PPD_ILLEGAL_WHITESPACE </dt>
+<dd class="description">Illegal whitespace character</dd>
+<dt>PPD_INTERNAL_ERROR </dt>
+<dd class="description">Internal error</dd>
+<dt>PPD_LINE_TOO_LONG </dt>
+<dd class="description">Line longer than 255 chars</dd>
+<dt>PPD_MISSING_ASTERISK </dt>
+<dd class="description">Missing asterisk in column 0</dd>
+<dt>PPD_MISSING_PPDADOBE4 </dt>
+<dd class="description">Missing PPD-Adobe-4.x header</dd>
+<dt>PPD_MISSING_VALUE </dt>
+<dd class="description">Missing value string</dd>
+<dt>PPD_NESTED_OPEN_GROUP </dt>
+<dd class="description">OpenGroup without a CloseGroup first</dd>
+<dt>PPD_NESTED_OPEN_UI </dt>
+<dd class="description">OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first</dd>
+<dt>PPD_NULL_FILE </dt>
+<dd class="description">NULL PPD file pointer</dd>
+<dt>PPD_OK </dt>
+<dd class="description">OK</dd>
+</dl>
+<h3 class="enumeration"><a name="ppd_ui_e">ppd_ui_e</a></h3>
+<p class="description">UI Types</p>
+<h4 class="constants">Constants</h4>
+<dl>
+<dt>PPD_UI_BOOLEAN </dt>
+<dd class="description">True or False option</dd>
+<dt>PPD_UI_PICKMANY </dt>
+<dd class="description">Pick zero or more from a list</dd>
+<dt>PPD_UI_PICKONE </dt>
+<dd class="description">Pick one from a list</dd>
+</dl>
+</div>