#
apihelp:
- echo Generating CUPS API help files...
+ echo "Generating CUPS Programming Manual..."
$(RM) cupspm.xml
codedoc --section "Programming" --body cupspm.md \
cupspm.xml \
codedoc --section "Programming" --body cupspm.md \
cupspm.xml > ../doc/help/cupspm.html
$(RM) cupspm.xml
+ echo "Generating Administration APIs help..."
codedoc --section "Programming" --title "Administration APIs" \
- --css ../doc/cups-printable.css \
--header api-admin.header --body api-admin.shtml \
adminutil.c adminutil.h getdevices.c >../doc/help/api-admin.html
+ echo "Generating PPD API (deprecated) help..."
codedoc --section "Programming" --title "PPD API (DEPRECATED)" \
- --css ../doc/cups-printable.css \
--header api-ppd.header --body api-ppd.shtml \
ppd.h ppd-*.c raster-interstub.c >../doc/help/api-ppd.html
+ echo "Generating Filter and Backend Programming help..."
codedoc --section "Programming" \
--title "Filter and Backend Programming" \
- --css ../doc/cups-printable.css \
--header api-filter.header --body api-filter.shtml \
backchannel.c backend.h backend.c sidechannel.c sidechannel.h \
>../doc/help/api-filter.html
<meta name="version" content="0.0">
<style type="text/css"><!--
body {
- font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-h1, h2, h3, h4, h5, h6, p, td, th {
- font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-h1 { font-size: 2em; }
-h2 { font-size: 1.75em; }
-h3 { font-size: 1.5em; }
-h4 { font-size: 1.25em; }
-
-kbd {
- font-family: monaco, courier, monospace;
- font-weight: bold;
-}
-
-pre {
- font-family: monaco, courier, monospace;
-}
-
-blockquote {
- border-left: solid 2px #777;
- margin: 1em 0;
- padding: 10px;
-}
-
-blockquote ol li {
- margin-left: -1em;
-}
-
-pre.command, pre.example {
- background: #eee;
- margin: 0 36pt;
- padding: 10px;
-}
-
-p.compact {
- margin: 0;
-}
-
-p.example {
- font-style: italic;
- margin-left: 36pt;
-}
-
-dl.man dd {
- margin-left: 5em;
-}
-
-dl.man dt {
- margin-left: 0;
-}
-
-pre.man {
- margin: 0;
-}
-
-pre.command em, pre.example em {
- font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-p.command {
- font-family: monaco, courier, monospace;
- margin-left: 36pt;
-}
-
-p.formula {
- font-style: italic;
- margin-left: 36pt;
-}
-
-a img {
- border: none;
+ background: white;
+ color: black;
+ font-family: sans-serif;
+ font-size: 12pt;
}
-
-a:link:hover img {
- background: #f0f0f0;
- border-radius: 10px;
- -moz-border-radius: 10px;
+a {
+ color: black;
}
-
a:link, a:visited {
- font-weight: inherit;
- text-decoration: none;
+ color: #00f;
}
-
a:link:hover, a:visited:hover, a:active {
- text-decoration: underline;
-}
-
-sub, sup {
- font-size: 50%;
-}
-
-tr.data, td.data, tr.data td {
- margin-top: 10pt;
- padding: 5pt;
- border-bottom: solid 1pt #999999;
-}
-
-tr.data th {
- border-bottom: solid 1pt #999999;
- padding-top: 10pt;
- padding-left: 5pt;
- text-align: left;
-}
-
-div.table table {
- border: solid thin #999999;
- border-collapse: collapse;
- border-spacing: 0;
- margin-left: auto;
- margin-right: auto;
-}
-
-div.table caption {
- caption-side: top;
- font-size: 120%;
- font-style: italic;
- font-weight: bold;
- margin-left: auto;
- margin-right: auto;
-}
-
-div.table table td {
- border: solid thin #cccccc;
- padding: 5pt 10pt 0;
-}
-
-div.table table th {
- background: #cccccc;
- border: none;
- border-bottom: solid thin #999999;
-}
-
-div.figure table {
- margin-left: auto;
- margin-right: auto;
-}
-
-div.figure caption {
- caption-side: bottom;
- font-size: 120%;
- font-style: italic;
- font-weight: bold;
- margin-left: auto;
- margin-right: auto;
-}
-
-th.label {
- text-align: right;
- vertical-align: top;
-}
-
-th.sublabel {
- text-align: right;
- font-weight: normal;
-}
-
-hr {
- border: solid thin;
+ color: #c0c;
}
-
-span.info {
- background: black;
- border: thin solid black;
- color: white;
- font-size: 80%;
- font-style: italic;
- font-weight: bold;
- white-space: nowrap;
-}
-
-h2 span.info, h3 span.info, h4 span.info {
- float: right;
- font-size: 100%;
-}
-
-h1.title {
-}
-
-h2.title, h3.title {
- border-bottom: solid 2pt #000000;
-}
-
-div.indent, table.indent {
- margin-top: 2em;
- margin-left: auto;
- margin-right: auto;
- width: 90%;
-}
-
-table.indent {
- border-collapse: collapse;
-}
-
-table.indent td, table.indent th {
- padding: 0;
-}
-
-table.list {
- border-collapse: collapse;
- margin-left: auto;
- margin-right: auto;
- width: 90%;
+body, p, h1, h2, h3, h4, h5, h6 {
+ font-family: sans-serif;
+ line-height: 1.4;
}
-
-table.list th {
- background: white;
- border-bottom: solid thin #cccccc;
- color: #444444;
- padding-top: 10pt;
- padding-left: 5pt;
- text-align: left;
- vertical-align: bottom;
- white-space: nowrap;
-}
-
-table.list th a {
- color: #4444cc;
-}
-
-table.list td {
- border-bottom: solid thin #eeeeee;
- padding-top: 5pt;
- padding-left: 5pt;
-}
-
-table.list tr:nth-child(even) {
- background: #f8f8f8;
-}
-
-table.list tr:nth-child(odd) {
- background: #f4f4f4;
-}
-
-dt {
- margin-left: 36pt;
- margin-top: 12pt;
-}
-
-dd {
- margin-left: 54pt;
-}
-
-dl.category dt {
+h1, h2, h3, h4, h5, h6 {
font-weight: bold;
+ page-break-inside: avoid;
}
-
-p.summary {
- margin-left: 36pt;
- font-family: monaco, courier, monospace;
-}
-
-div.summary table {
- border: solid thin #999999;
- border-collapse: collapse;
- border-spacing: 0;
- margin: 10px;
-}
-
-div.summary table td, div.summary table th {
- border: solid thin #999999;
- padding: 5px;
- text-align: left;
- vertical-align: top;
-}
-
-div.summary table thead th {
- background: #eeeeee;
-}
-
-/* API documentation styles... */
-div.body h1 {
+h1 {
font-size: 250%;
- font-weight: bold;
margin: 0;
}
-div.body h2 {
+h2 {
font-size: 250%;
margin-top: 1.5em;
}
-div.body h3 {
- font-size: 150%;
+h3 {
+ font-size: 200%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
-div.body h4 {
- font-size: 110%;
+h4 {
+ font-size: 150%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
-div.body h5 {
- font-size: 100%;
+h5 {
+ font-size: 125%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
-div.contents {
- background: #e8e8e8;
- border: solid thin black;
- padding: 10px;
-}
-div.contents h1 {
+h6 {
font-size: 110%;
+ margin-bottom: 0.5em;
+ margin-top: 1.5em;
}
-div.contents h2 {
- font-size: 100%;
+img.title {
+ width: 256px;
}
-div.contents ul.contents {
- font-size: 80%;
+div.header h1, div.header p {
+ text-align: center;
}
-.class {
- border-bottom: solid 2px gray;
+div.contents, div.body, div.footer {
+ page-break-before: always;
}
-.constants {
+.class, .enumeration, .function, .struct, .typedef, .union {
+ border-bottom: solid 2px gray;
}
.description {
margin-top: 0.5em;
}
-.discussion {
-}
-.enumeration {
- border-bottom: solid 2px gray;
-}
.function {
- border-bottom: solid 2px gray;
margin-bottom: 0;
}
-.members {
-}
-.method {
-}
-.parameters {
-}
-.returnvalue {
-}
-.struct {
- border-bottom: solid 2px gray;
-}
-.typedef {
- border-bottom: solid 2px gray;
-}
-.union {
- border-bottom: solid 2px gray;
-}
-.variable {
-}
-h1, h2, h3, h4, h5, h6 {
- page-break-inside: avoid;
-}
blockquote {
border: solid thin gray;
- box-shadow: 3px 3px 5px rgba(0,0,0,0.5);
- padding: 10px 10px 0;
+ box-shadow: 3px 3px 5px rgba(127,127,127,0.25);
+ margin: 1em 0;
+ padding: 10px;
page-break-inside: avoid;
}
p code, li code, p.code, pre, ul.code li {
- background: rgba(127,127,127,0.1);
- border: thin dotted gray;
font-family: monospace;
hyphens: manual;
-webkit-hyphens: manual;
- page-break-inside: avoid;
}
p.code, pre, ul.code li {
+ background: rgba(127,127,127,0.25);
+ border: thin dotted gray;
padding: 10px;
+ page-break-inside: avoid;
}
-p code, li code {
- padding: 2px 5px;
+pre {
+ white-space: pre-wrap;
}
a:link, a:visited {
text-decoration: none;
font-weight: bold;
white-space: nowrap;
}
-h2 span.info, h3 span.info, h4 span.info {
- border-radius: 10px;
+h1 span.info, h2 span.info, h3 span.info, h4 span.info {
+ border-top-left-radius: 10px;
+ border-top-right-radius: 10px;
float: right;
- font-size: 80%;
padding: 3px 6px;
}
-h2.title span.info, h3.title span.info, h4.title span.info {
- border-bottom-left-radius: 0;
- border-bottom-right-radius: 0;
-}
-h2.title span.info {
- padding: 4px 6px;
-}
ul.code, ul.contents, ul.subcontents {
list-style-type: none;
margin: 0;
ul.contents li ul.code, ul.contents li ul.subcontents {
padding-left: 2em;
}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+td {
+ border: solid 1px gray;
+ padding: 5px 10px;
+ vertical-align: top;
+}
+td.left {
+ text-align: left;
+}
+td.center {
+ text-align: center;
+}
+td.right {
+ text-align: right;
+}
+th {
+ border-bottom: solid 2px gray;
+ padding: 1px 5px;
+ text-align: center;
+ vertical-align: bottom;
+}
+tr:nth-child(even) {
+ background: rgba(127,127,127,0.25);
+}
table.list {
border-collapse: collapse;
width: 100%;
}
-table.list tr:nth-child(even) {
- background: rgba(127,127,127,0.1);
-}
table.list th {
+ border-bottom: none;
border-right: 2px solid gray;
font-family: monospace;
+ font-weight: normal;
padding: 5px 10px 5px 2px;
text-align: right;
vertical-align: top;
}
table.list td {
+ border: none;
padding: 5px 2px 5px 10px;
text-align: left;
vertical-align: top;
}
-h1.title {
+h2.title, h3.title {
+ border-bottom: solid 2px gray;
+}
+/* Syntax highlighting */
+span.comment {
+ color: darkgreen;
}
-h2.title {
- border-bottom: solid 2px black;
+span.directive {
+ color: purple;
}
-h3.title {
- border-bottom: solid 2px black;
+span.number {
+ color: brown;
+}
+span.reserved {
+ color: darkcyan;
+}
+span.string {
+ color: magenta;
+}
+/* Dark mode overrides */
+@media (prefers-color-scheme: dark) {
+ body {
+ background: black;
+ color: #ccc;
+ }
+ a {
+ color: #ccc;
+ }
+ a:link, a:visited {
+ color: #66f;
+ }
+ a:link:hover, a:visited:hover, a:active {
+ color: #f06;
+ }
+}
+/* Show contents on left side in web browser */
+@media screen and (min-width: 800px) {
+ div.contents {
+ border-right: solid thin gray;
+ bottom: 0px;
+ box-shadow: 3px 3px 5px rgba(127,127,127,0.5);
+ font-size: 10pt;
+ left: 0px;
+ overflow: scroll;
+ padding: 1%;
+ position: fixed;
+ top: 0px;
+ width: 18%;
+ }
+ div.contents h2.title {
+ margin-top: 0px;
+ }
+ div.header, div.body, div.footer {
+ margin-left: 20%;
+ padding: 1% 2%;
+ }
+}
+/* Center title page content vertically */
+@media print {
+ div.header {
+ padding-top: 33%;
+ }
}
--></style>
</head>
<meta name="version" content="0.0">
<style type="text/css"><!--
body {
- font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-h1, h2, h3, h4, h5, h6, p, td, th {
- font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-h1 { font-size: 2em; }
-h2 { font-size: 1.75em; }
-h3 { font-size: 1.5em; }
-h4 { font-size: 1.25em; }
-
-kbd {
- font-family: monaco, courier, monospace;
- font-weight: bold;
-}
-
-pre {
- font-family: monaco, courier, monospace;
-}
-
-blockquote {
- border-left: solid 2px #777;
- margin: 1em 0;
- padding: 10px;
-}
-
-blockquote ol li {
- margin-left: -1em;
-}
-
-pre.command, pre.example {
- background: #eee;
- margin: 0 36pt;
- padding: 10px;
-}
-
-p.compact {
- margin: 0;
-}
-
-p.example {
- font-style: italic;
- margin-left: 36pt;
-}
-
-dl.man dd {
- margin-left: 5em;
-}
-
-dl.man dt {
- margin-left: 0;
-}
-
-pre.man {
- margin: 0;
-}
-
-pre.command em, pre.example em {
- font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-p.command {
- font-family: monaco, courier, monospace;
- margin-left: 36pt;
-}
-
-p.formula {
- font-style: italic;
- margin-left: 36pt;
-}
-
-a img {
- border: none;
+ background: white;
+ color: black;
+ font-family: sans-serif;
+ font-size: 12pt;
}
-
-a:link:hover img {
- background: #f0f0f0;
- border-radius: 10px;
- -moz-border-radius: 10px;
+a {
+ color: black;
}
-
a:link, a:visited {
- font-weight: inherit;
- text-decoration: none;
+ color: #00f;
}
-
a:link:hover, a:visited:hover, a:active {
- text-decoration: underline;
-}
-
-sub, sup {
- font-size: 50%;
-}
-
-tr.data, td.data, tr.data td {
- margin-top: 10pt;
- padding: 5pt;
- border-bottom: solid 1pt #999999;
-}
-
-tr.data th {
- border-bottom: solid 1pt #999999;
- padding-top: 10pt;
- padding-left: 5pt;
- text-align: left;
-}
-
-div.table table {
- border: solid thin #999999;
- border-collapse: collapse;
- border-spacing: 0;
- margin-left: auto;
- margin-right: auto;
-}
-
-div.table caption {
- caption-side: top;
- font-size: 120%;
- font-style: italic;
- font-weight: bold;
- margin-left: auto;
- margin-right: auto;
-}
-
-div.table table td {
- border: solid thin #cccccc;
- padding: 5pt 10pt 0;
-}
-
-div.table table th {
- background: #cccccc;
- border: none;
- border-bottom: solid thin #999999;
-}
-
-div.figure table {
- margin-left: auto;
- margin-right: auto;
-}
-
-div.figure caption {
- caption-side: bottom;
- font-size: 120%;
- font-style: italic;
- font-weight: bold;
- margin-left: auto;
- margin-right: auto;
-}
-
-th.label {
- text-align: right;
- vertical-align: top;
-}
-
-th.sublabel {
- text-align: right;
- font-weight: normal;
-}
-
-hr {
- border: solid thin;
+ color: #c0c;
}
-
-span.info {
- background: black;
- border: thin solid black;
- color: white;
- font-size: 80%;
- font-style: italic;
- font-weight: bold;
- white-space: nowrap;
-}
-
-h2 span.info, h3 span.info, h4 span.info {
- float: right;
- font-size: 100%;
-}
-
-h1.title {
-}
-
-h2.title, h3.title {
- border-bottom: solid 2pt #000000;
-}
-
-div.indent, table.indent {
- margin-top: 2em;
- margin-left: auto;
- margin-right: auto;
- width: 90%;
-}
-
-table.indent {
- border-collapse: collapse;
-}
-
-table.indent td, table.indent th {
- padding: 0;
-}
-
-table.list {
- border-collapse: collapse;
- margin-left: auto;
- margin-right: auto;
- width: 90%;
+body, p, h1, h2, h3, h4, h5, h6 {
+ font-family: sans-serif;
+ line-height: 1.4;
}
-
-table.list th {
- background: white;
- border-bottom: solid thin #cccccc;
- color: #444444;
- padding-top: 10pt;
- padding-left: 5pt;
- text-align: left;
- vertical-align: bottom;
- white-space: nowrap;
-}
-
-table.list th a {
- color: #4444cc;
-}
-
-table.list td {
- border-bottom: solid thin #eeeeee;
- padding-top: 5pt;
- padding-left: 5pt;
-}
-
-table.list tr:nth-child(even) {
- background: #f8f8f8;
-}
-
-table.list tr:nth-child(odd) {
- background: #f4f4f4;
-}
-
-dt {
- margin-left: 36pt;
- margin-top: 12pt;
-}
-
-dd {
- margin-left: 54pt;
-}
-
-dl.category dt {
+h1, h2, h3, h4, h5, h6 {
font-weight: bold;
+ page-break-inside: avoid;
}
-
-p.summary {
- margin-left: 36pt;
- font-family: monaco, courier, monospace;
-}
-
-div.summary table {
- border: solid thin #999999;
- border-collapse: collapse;
- border-spacing: 0;
- margin: 10px;
-}
-
-div.summary table td, div.summary table th {
- border: solid thin #999999;
- padding: 5px;
- text-align: left;
- vertical-align: top;
-}
-
-div.summary table thead th {
- background: #eeeeee;
-}
-
-/* API documentation styles... */
-div.body h1 {
+h1 {
font-size: 250%;
- font-weight: bold;
margin: 0;
}
-div.body h2 {
+h2 {
font-size: 250%;
margin-top: 1.5em;
}
-div.body h3 {
- font-size: 150%;
+h3 {
+ font-size: 200%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
-div.body h4 {
- font-size: 110%;
+h4 {
+ font-size: 150%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
-div.body h5 {
- font-size: 100%;
+h5 {
+ font-size: 125%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
-div.contents {
- background: #e8e8e8;
- border: solid thin black;
- padding: 10px;
-}
-div.contents h1 {
+h6 {
font-size: 110%;
+ margin-bottom: 0.5em;
+ margin-top: 1.5em;
}
-div.contents h2 {
- font-size: 100%;
+img.title {
+ width: 256px;
}
-div.contents ul.contents {
- font-size: 80%;
+div.header h1, div.header p {
+ text-align: center;
}
-.class {
- border-bottom: solid 2px gray;
+div.contents, div.body, div.footer {
+ page-break-before: always;
}
-.constants {
+.class, .enumeration, .function, .struct, .typedef, .union {
+ border-bottom: solid 2px gray;
}
.description {
margin-top: 0.5em;
}
-.discussion {
-}
-.enumeration {
- border-bottom: solid 2px gray;
-}
.function {
- border-bottom: solid 2px gray;
margin-bottom: 0;
}
-.members {
-}
-.method {
-}
-.parameters {
-}
-.returnvalue {
-}
-.struct {
- border-bottom: solid 2px gray;
-}
-.typedef {
- border-bottom: solid 2px gray;
-}
-.union {
- border-bottom: solid 2px gray;
-}
-.variable {
-}
-h1, h2, h3, h4, h5, h6 {
- page-break-inside: avoid;
-}
blockquote {
border: solid thin gray;
- box-shadow: 3px 3px 5px rgba(0,0,0,0.5);
- padding: 10px 10px 0;
+ box-shadow: 3px 3px 5px rgba(127,127,127,0.25);
+ margin: 1em 0;
+ padding: 10px;
page-break-inside: avoid;
}
p code, li code, p.code, pre, ul.code li {
- background: rgba(127,127,127,0.1);
- border: thin dotted gray;
font-family: monospace;
hyphens: manual;
-webkit-hyphens: manual;
- page-break-inside: avoid;
}
p.code, pre, ul.code li {
+ background: rgba(127,127,127,0.25);
+ border: thin dotted gray;
padding: 10px;
+ page-break-inside: avoid;
}
-p code, li code {
- padding: 2px 5px;
+pre {
+ white-space: pre-wrap;
}
a:link, a:visited {
text-decoration: none;
font-weight: bold;
white-space: nowrap;
}
-h2 span.info, h3 span.info, h4 span.info {
- border-radius: 10px;
+h1 span.info, h2 span.info, h3 span.info, h4 span.info {
+ border-top-left-radius: 10px;
+ border-top-right-radius: 10px;
float: right;
- font-size: 80%;
padding: 3px 6px;
}
-h2.title span.info, h3.title span.info, h4.title span.info {
- border-bottom-left-radius: 0;
- border-bottom-right-radius: 0;
-}
-h2.title span.info {
- padding: 4px 6px;
-}
ul.code, ul.contents, ul.subcontents {
list-style-type: none;
margin: 0;
ul.contents li ul.code, ul.contents li ul.subcontents {
padding-left: 2em;
}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+td {
+ border: solid 1px gray;
+ padding: 5px 10px;
+ vertical-align: top;
+}
+td.left {
+ text-align: left;
+}
+td.center {
+ text-align: center;
+}
+td.right {
+ text-align: right;
+}
+th {
+ border-bottom: solid 2px gray;
+ padding: 1px 5px;
+ text-align: center;
+ vertical-align: bottom;
+}
+tr:nth-child(even) {
+ background: rgba(127,127,127,0.25);
+}
table.list {
border-collapse: collapse;
width: 100%;
}
-table.list tr:nth-child(even) {
- background: rgba(127,127,127,0.1);
-}
table.list th {
+ border-bottom: none;
border-right: 2px solid gray;
font-family: monospace;
+ font-weight: normal;
padding: 5px 10px 5px 2px;
text-align: right;
vertical-align: top;
}
table.list td {
+ border: none;
padding: 5px 2px 5px 10px;
text-align: left;
vertical-align: top;
}
-h1.title {
+h2.title, h3.title {
+ border-bottom: solid 2px gray;
+}
+/* Syntax highlighting */
+span.comment {
+ color: darkgreen;
}
-h2.title {
- border-bottom: solid 2px black;
+span.directive {
+ color: purple;
}
-h3.title {
- border-bottom: solid 2px black;
+span.number {
+ color: brown;
+}
+span.reserved {
+ color: darkcyan;
+}
+span.string {
+ color: magenta;
+}
+/* Dark mode overrides */
+@media (prefers-color-scheme: dark) {
+ body {
+ background: black;
+ color: #ccc;
+ }
+ a {
+ color: #ccc;
+ }
+ a:link, a:visited {
+ color: #66f;
+ }
+ a:link:hover, a:visited:hover, a:active {
+ color: #f06;
+ }
+}
+/* Show contents on left side in web browser */
+@media screen and (min-width: 800px) {
+ div.contents {
+ border-right: solid thin gray;
+ bottom: 0px;
+ box-shadow: 3px 3px 5px rgba(127,127,127,0.5);
+ font-size: 10pt;
+ left: 0px;
+ overflow: scroll;
+ padding: 1%;
+ position: fixed;
+ top: 0px;
+ width: 18%;
+ }
+ div.contents h2.title {
+ margin-top: 0px;
+ }
+ div.header, div.body, div.footer {
+ margin-left: 20%;
+ padding: 1% 2%;
+ }
+}
+/* Center title page content vertically */
+@media print {
+ div.header {
+ padding-top: 33%;
+ }
}
--></style>
</head>
<meta name="version" content="0.0">
<style type="text/css"><!--
body {
- font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-h1, h2, h3, h4, h5, h6, p, td, th {
- font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-h1 { font-size: 2em; }
-h2 { font-size: 1.75em; }
-h3 { font-size: 1.5em; }
-h4 { font-size: 1.25em; }
-
-kbd {
- font-family: monaco, courier, monospace;
- font-weight: bold;
-}
-
-pre {
- font-family: monaco, courier, monospace;
-}
-
-blockquote {
- border-left: solid 2px #777;
- margin: 1em 0;
- padding: 10px;
-}
-
-blockquote ol li {
- margin-left: -1em;
-}
-
-pre.command, pre.example {
- background: #eee;
- margin: 0 36pt;
- padding: 10px;
-}
-
-p.compact {
- margin: 0;
-}
-
-p.example {
- font-style: italic;
- margin-left: 36pt;
-}
-
-dl.man dd {
- margin-left: 5em;
-}
-
-dl.man dt {
- margin-left: 0;
-}
-
-pre.man {
- margin: 0;
-}
-
-pre.command em, pre.example em {
- font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-p.command {
- font-family: monaco, courier, monospace;
- margin-left: 36pt;
-}
-
-p.formula {
- font-style: italic;
- margin-left: 36pt;
+ background: white;
+ color: black;
+ font-family: sans-serif;
+ font-size: 12pt;
}
-
-a img {
- border: none;
+a {
+ color: black;
}
-
-a:link:hover img {
- background: #f0f0f0;
- border-radius: 10px;
- -moz-border-radius: 10px;
-}
-
a:link, a:visited {
- font-weight: inherit;
- text-decoration: none;
+ color: #00f;
}
-
a:link:hover, a:visited:hover, a:active {
- text-decoration: underline;
-}
-
-sub, sup {
- font-size: 50%;
-}
-
-tr.data, td.data, tr.data td {
- margin-top: 10pt;
- padding: 5pt;
- border-bottom: solid 1pt #999999;
-}
-
-tr.data th {
- border-bottom: solid 1pt #999999;
- padding-top: 10pt;
- padding-left: 5pt;
- text-align: left;
-}
-
-div.table table {
- border: solid thin #999999;
- border-collapse: collapse;
- border-spacing: 0;
- margin-left: auto;
- margin-right: auto;
-}
-
-div.table caption {
- caption-side: top;
- font-size: 120%;
- font-style: italic;
- font-weight: bold;
- margin-left: auto;
- margin-right: auto;
-}
-
-div.table table td {
- border: solid thin #cccccc;
- padding: 5pt 10pt 0;
-}
-
-div.table table th {
- background: #cccccc;
- border: none;
- border-bottom: solid thin #999999;
-}
-
-div.figure table {
- margin-left: auto;
- margin-right: auto;
-}
-
-div.figure caption {
- caption-side: bottom;
- font-size: 120%;
- font-style: italic;
- font-weight: bold;
- margin-left: auto;
- margin-right: auto;
-}
-
-th.label {
- text-align: right;
- vertical-align: top;
-}
-
-th.sublabel {
- text-align: right;
- font-weight: normal;
-}
-
-hr {
- border: solid thin;
-}
-
-span.info {
- background: black;
- border: thin solid black;
- color: white;
- font-size: 80%;
- font-style: italic;
- font-weight: bold;
- white-space: nowrap;
-}
-
-h2 span.info, h3 span.info, h4 span.info {
- float: right;
- font-size: 100%;
-}
-
-h1.title {
-}
-
-h2.title, h3.title {
- border-bottom: solid 2pt #000000;
-}
-
-div.indent, table.indent {
- margin-top: 2em;
- margin-left: auto;
- margin-right: auto;
- width: 90%;
-}
-
-table.indent {
- border-collapse: collapse;
-}
-
-table.indent td, table.indent th {
- padding: 0;
-}
-
-table.list {
- border-collapse: collapse;
- margin-left: auto;
- margin-right: auto;
- width: 90%;
-}
-
-table.list th {
- background: white;
- border-bottom: solid thin #cccccc;
- color: #444444;
- padding-top: 10pt;
- padding-left: 5pt;
- text-align: left;
- vertical-align: bottom;
- white-space: nowrap;
-}
-
-table.list th a {
- color: #4444cc;
-}
-
-table.list td {
- border-bottom: solid thin #eeeeee;
- padding-top: 5pt;
- padding-left: 5pt;
-}
-
-table.list tr:nth-child(even) {
- background: #f8f8f8;
-}
-
-table.list tr:nth-child(odd) {
- background: #f4f4f4;
-}
-
-dt {
- margin-left: 36pt;
- margin-top: 12pt;
+ color: #c0c;
}
-
-dd {
- margin-left: 54pt;
+body, p, h1, h2, h3, h4, h5, h6 {
+ font-family: sans-serif;
+ line-height: 1.4;
}
-
-dl.category dt {
+h1, h2, h3, h4, h5, h6 {
font-weight: bold;
+ page-break-inside: avoid;
}
-
-p.summary {
- margin-left: 36pt;
- font-family: monaco, courier, monospace;
-}
-
-div.summary table {
- border: solid thin #999999;
- border-collapse: collapse;
- border-spacing: 0;
- margin: 10px;
-}
-
-div.summary table td, div.summary table th {
- border: solid thin #999999;
- padding: 5px;
- text-align: left;
- vertical-align: top;
-}
-
-div.summary table thead th {
- background: #eeeeee;
-}
-
-/* API documentation styles... */
-div.body h1 {
+h1 {
font-size: 250%;
- font-weight: bold;
margin: 0;
}
-div.body h2 {
+h2 {
font-size: 250%;
margin-top: 1.5em;
}
-div.body h3 {
- font-size: 150%;
+h3 {
+ font-size: 200%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
-div.body h4 {
- font-size: 110%;
+h4 {
+ font-size: 150%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
-div.body h5 {
- font-size: 100%;
+h5 {
+ font-size: 125%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
-div.contents {
- background: #e8e8e8;
- border: solid thin black;
- padding: 10px;
-}
-div.contents h1 {
+h6 {
font-size: 110%;
+ margin-bottom: 0.5em;
+ margin-top: 1.5em;
}
-div.contents h2 {
- font-size: 100%;
+img.title {
+ width: 256px;
}
-div.contents ul.contents {
- font-size: 80%;
+div.header h1, div.header p {
+ text-align: center;
}
-.class {
- border-bottom: solid 2px gray;
+div.contents, div.body, div.footer {
+ page-break-before: always;
}
-.constants {
+.class, .enumeration, .function, .struct, .typedef, .union {
+ border-bottom: solid 2px gray;
}
.description {
margin-top: 0.5em;
}
-.discussion {
-}
-.enumeration {
- border-bottom: solid 2px gray;
-}
.function {
- border-bottom: solid 2px gray;
margin-bottom: 0;
}
-.members {
-}
-.method {
-}
-.parameters {
-}
-.returnvalue {
-}
-.struct {
- border-bottom: solid 2px gray;
-}
-.typedef {
- border-bottom: solid 2px gray;
-}
-.union {
- border-bottom: solid 2px gray;
-}
-.variable {
-}
-h1, h2, h3, h4, h5, h6 {
- page-break-inside: avoid;
-}
blockquote {
border: solid thin gray;
- box-shadow: 3px 3px 5px rgba(0,0,0,0.5);
- padding: 10px 10px 0;
+ box-shadow: 3px 3px 5px rgba(127,127,127,0.25);
+ margin: 1em 0;
+ padding: 10px;
page-break-inside: avoid;
}
p code, li code, p.code, pre, ul.code li {
- background: rgba(127,127,127,0.1);
- border: thin dotted gray;
font-family: monospace;
hyphens: manual;
-webkit-hyphens: manual;
- page-break-inside: avoid;
}
p.code, pre, ul.code li {
+ background: rgba(127,127,127,0.25);
+ border: thin dotted gray;
padding: 10px;
+ page-break-inside: avoid;
}
-p code, li code {
- padding: 2px 5px;
+pre {
+ white-space: pre-wrap;
}
a:link, a:visited {
text-decoration: none;
font-weight: bold;
white-space: nowrap;
}
-h2 span.info, h3 span.info, h4 span.info {
- border-radius: 10px;
+h1 span.info, h2 span.info, h3 span.info, h4 span.info {
+ border-top-left-radius: 10px;
+ border-top-right-radius: 10px;
float: right;
- font-size: 80%;
padding: 3px 6px;
}
-h2.title span.info, h3.title span.info, h4.title span.info {
- border-bottom-left-radius: 0;
- border-bottom-right-radius: 0;
-}
-h2.title span.info {
- padding: 4px 6px;
-}
ul.code, ul.contents, ul.subcontents {
list-style-type: none;
margin: 0;
ul.contents li ul.code, ul.contents li ul.subcontents {
padding-left: 2em;
}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+td {
+ border: solid 1px gray;
+ padding: 5px 10px;
+ vertical-align: top;
+}
+td.left {
+ text-align: left;
+}
+td.center {
+ text-align: center;
+}
+td.right {
+ text-align: right;
+}
+th {
+ border-bottom: solid 2px gray;
+ padding: 1px 5px;
+ text-align: center;
+ vertical-align: bottom;
+}
+tr:nth-child(even) {
+ background: rgba(127,127,127,0.25);
+}
table.list {
border-collapse: collapse;
width: 100%;
}
-table.list tr:nth-child(even) {
- background: rgba(127,127,127,0.1);
-}
table.list th {
+ border-bottom: none;
border-right: 2px solid gray;
font-family: monospace;
+ font-weight: normal;
padding: 5px 10px 5px 2px;
text-align: right;
vertical-align: top;
}
table.list td {
+ border: none;
padding: 5px 2px 5px 10px;
text-align: left;
vertical-align: top;
}
-h1.title {
-}
-h2.title {
- border-bottom: solid 2px black;
+h2.title, h3.title {
+ border-bottom: solid 2px gray;
}
-h3.title {
- border-bottom: solid 2px black;
+/* Syntax highlighting */
+span.comment {
+ color: darkgreen;
+}
+span.directive {
+ color: purple;
+}
+span.number {
+ color: brown;
+}
+span.reserved {
+ color: darkcyan;
+}
+span.string {
+ color: magenta;
+}
+/* Dark mode overrides */
+@media (prefers-color-scheme: dark) {
+ body {
+ background: black;
+ color: #ccc;
+ }
+ a {
+ color: #ccc;
+ }
+ a:link, a:visited {
+ color: #66f;
+ }
+ a:link:hover, a:visited:hover, a:active {
+ color: #f06;
+ }
+}
+/* Show contents on left side in web browser */
+@media screen and (min-width: 800px) {
+ div.contents {
+ border-right: solid thin gray;
+ bottom: 0px;
+ box-shadow: 3px 3px 5px rgba(127,127,127,0.5);
+ font-size: 10pt;
+ left: 0px;
+ overflow: scroll;
+ padding: 1%;
+ position: fixed;
+ top: 0px;
+ width: 18%;
+ }
+ div.contents h2.title {
+ margin-top: 0px;
+ }
+ div.header, div.body, div.footer {
+ margin-left: 20%;
+ padding: 1% 2%;
+ }
+}
+/* Center title page content vertically */
+@media print {
+ div.header {
+ padding-top: 33%;
+ }
}
--></style>
</head>
<!DOCTYPE html>
-<html>
+<html lang="en-US">
<!-- SECTION: Programming -->
- <head>
- <title>Developing PostScript Printer Drivers</title>
- <meta name="keywords" content="Programming">
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="codedoc v3.1">
- <meta name="author" content="Unknown">
- <meta name="copyright" content="Unknown">
- <meta name="version" content="0.0">
- <style type="text/css"><!--
-BODY {
- font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-H1, H2, H3, H4, H5, H6, P, TD, TH {
- font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-H1 { font-size: 2em; }
-H2 { font-size: 1.75em; }
-H3 { font-size: 1.5em; }
-H4 { font-size: 1.25em; }
-
-KBD {
- font-family: monaco, courier, monospace;
- font-weight: bold;
-}
-
-PRE {
- font-family: monaco, courier, monospace;
-}
-
-BLOCKQUOTE {
- border-left: solid 2px #777;
- margin: 1em 0;
- padding: 10px;
-}
-
-BLOCKQUOTE OL LI {
- margin-left: -1em;
-}
-
-PRE.command, PRE.example {
- background: #eee;
- margin: 0 36pt;
- padding: 10px;
-}
-
-P.compact {
- margin: 0;
-}
-
-P.example {
- font-style: italic;
- margin-left: 36pt;
-}
-
-DL.man DD {
- margin-left: 5em;
-}
-
-DL.man DT {
- margin-left: 0;
-}
-
-PRE.man {
- margin: 0;
-}
-
-PRE.command EM, PRE.example EM {
- font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-P.command {
- font-family: monaco, courier, monospace;
- margin-left: 36pt;
-}
-
-P.formula {
- font-style: italic;
- margin-left: 36pt;
-}
-
-A IMG {
- border: none;
-}
-
-A:link:hover IMG {
- background: #f0f0f0;
- border-radius: 10px;
- -moz-border-radius: 10px;
-}
-
-A:link, A:visited {
- font-weight: inherit;
- text-decoration: none;
-}
-
-A:link:hover, A:visited:hover, A:active {
- text-decoration: underline;
-}
-
-SUB, SUP {
- font-size: 50%;
-}
-
-TR.data, TD.data, TR.data TD {
- margin-top: 10pt;
- padding: 5pt;
- border-bottom: solid 1pt #999999;
-}
-
-TR.data TH {
- border-bottom: solid 1pt #999999;
- padding-top: 10pt;
- padding-left: 5pt;
- text-align: left;
-}
-
-DIV.table TABLE {
- border: solid thin #999999;
- border-collapse: collapse;
- border-spacing: 0;
- margin-left: auto;
- margin-right: auto;
-}
-
-DIV.table CAPTION {
- caption-side: top;
- font-size: 120%;
- font-style: italic;
- font-weight: bold;
- margin-left: auto;
- margin-right: auto;
-}
-
-DIV.table TABLE TD {
- border: solid thin #cccccc;
- padding: 5pt 10pt 0;
-}
-
-DIV.table TABLE TH {
- background: #cccccc;
- border: none;
- border-bottom: solid thin #999999;
-}
-
-DIV.figure TABLE {
- margin-left: auto;
- margin-right: auto;
-}
-
-DIV.figure CAPTION {
- caption-side: bottom;
- font-size: 120%;
- font-style: italic;
- font-weight: bold;
- margin-left: auto;
- margin-right: auto;
-}
-
-TH.label {
- text-align: right;
- vertical-align: top;
-}
-
-TH.sublabel {
- text-align: right;
- font-weight: normal;
-}
-
-HR {
- border: solid thin;
-}
-
-SPAN.info {
- background: black;
- border: thin solid black;
- color: white;
- font-size: 80%;
- font-style: italic;
- font-weight: bold;
- white-space: nowrap;
-}
-
-H2 SPAN.info, H3 SPAN.info, H4 SPAN.info {
- float: right;
- font-size: 100%;
-}
-
-H1.title {
-}
-
-H2.title, H3.title {
- border-bottom: solid 2pt #000000;
-}
-
-DIV.indent, TABLE.indent {
- margin-top: 2em;
- margin-left: auto;
- margin-right: auto;
- width: 90%;
-}
-
-TABLE.indent {
- border-collapse: collapse;
-}
-
-TABLE.indent TD, TABLE.indent TH {
- padding: 0;
-}
-
-TABLE.list {
- border-collapse: collapse;
- margin-left: auto;
- margin-right: auto;
- width: 90%;
-}
-
-TABLE.list TH {
+<head>
+<title>Developing PostScript Printer Drivers</title>
+<meta name="keywords" content="Programming">
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+<meta name="generator" content="codedoc v3.7">
+<meta name="author" content="Unknown">
+<meta name="language" content="en-US">
+<meta name="copyright" content="Unknown">
+<meta name="version" content="0.0">
+<style type="text/css"><!--
+body {
background: white;
- border-bottom: solid thin #cccccc;
- color: #444444;
- padding-top: 10pt;
- padding-left: 5pt;
- text-align: left;
- vertical-align: bottom;
- white-space: nowrap;
-}
-
-TABLE.list TH A {
- color: #4444cc;
+ color: black;
+ font-family: sans-serif;
+ font-size: 12pt;
}
-
-TABLE.list TD {
- border-bottom: solid thin #eeeeee;
- padding-top: 5pt;
- padding-left: 5pt;
-}
-
-TABLE.list TR:nth-child(even) {
- background: #f8f8f8;
+a {
+ color: black;
}
-
-TABLE.list TR:nth-child(odd) {
- background: #f4f4f4;
+a:link, a:visited {
+ color: #00f;
}
-
-DT {
- margin-left: 36pt;
- margin-top: 12pt;
+a:link:hover, a:visited:hover, a:active {
+ color: #c0c;
}
-
-DD {
- margin-left: 54pt;
+body, p, h1, h2, h3, h4, h5, h6 {
+ font-family: sans-serif;
+ line-height: 1.4;
}
-
-DL.category DT {
+h1, h2, h3, h4, h5, h6 {
font-weight: bold;
+ page-break-inside: avoid;
}
-
-P.summary {
- margin-left: 36pt;
- font-family: monaco, courier, monospace;
-}
-
-DIV.summary TABLE {
- border: solid thin #999999;
- border-collapse: collapse;
- border-spacing: 0;
- margin: 10px;
-}
-
-DIV.summary TABLE TD, DIV.summary TABLE TH {
- border: solid thin #999999;
- padding: 5px;
- text-align: left;
- vertical-align: top;
-}
-
-DIV.summary TABLE THEAD TH {
- background: #eeeeee;
-}
-
-/* API documentation styles... */
-div.body h1 {
+h1 {
font-size: 250%;
- font-weight: bold;
margin: 0;
}
-div.body h2 {
+h2 {
font-size: 250%;
margin-top: 1.5em;
}
-div.body h3 {
- font-size: 150%;
+h3 {
+ font-size: 200%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
-div.body h4 {
- font-size: 110%;
+h4 {
+ font-size: 150%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
-div.body h5 {
- font-size: 100%;
+h5 {
+ font-size: 125%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
-div.contents {
- background: #e8e8e8;
- border: solid thin black;
- padding: 10px;
-}
-div.contents h1 {
+h6 {
font-size: 110%;
+ margin-bottom: 0.5em;
+ margin-top: 1.5em;
}
-div.contents h2 {
- font-size: 100%;
+img.title {
+ width: 256px;
}
-div.contents ul.contents {
- font-size: 80%;
+div.header h1, div.header p {
+ text-align: center;
}
-.class {
- border-bottom: solid 2px gray;
+div.contents, div.body, div.footer {
+ page-break-before: always;
}
-.constants {
+.class, .enumeration, .function, .struct, .typedef, .union {
+ border-bottom: solid 2px gray;
}
.description {
margin-top: 0.5em;
}
-.discussion {
-}
-.enumeration {
- border-bottom: solid 2px gray;
-}
.function {
- border-bottom: solid 2px gray;
margin-bottom: 0;
}
-.members {
-}
-.method {
-}
-.parameters {
-}
-.returnvalue {
-}
-.struct {
- border-bottom: solid 2px gray;
-}
-.typedef {
- border-bottom: solid 2px gray;
-}
-.union {
- border-bottom: solid 2px gray;
-}
-.variable {
-}
-h1, h2, h3, h4, h5, h6 {
- page-break-inside: avoid;
-}
blockquote {
border: solid thin gray;
- box-shadow: 3px 3px 5px rgba(0,0,0,0.5);
- padding: 10px 10px 0px;
+ box-shadow: 3px 3px 5px rgba(127,127,127,0.25);
+ margin: 1em 0;
+ padding: 10px;
page-break-inside: avoid;
}
p code, li code, p.code, pre, ul.code li {
- background: rgba(127,127,127,0.1);
- border: thin dotted gray;
font-family: monospace;
hyphens: manual;
-webkit-hyphens: manual;
- page-break-inside: avoid;
}
p.code, pre, ul.code li {
+ background: rgba(127,127,127,0.25);
+ border: thin dotted gray;
padding: 10px;
+ page-break-inside: avoid;
}
-p code, li code {
- padding: 2px 5px;
+pre {
+ white-space: pre-wrap;
}
a:link, a:visited {
text-decoration: none;
font-weight: bold;
white-space: nowrap;
}
-h2 span.info, h3 span.info, h4 span.info {
- border-radius: 10px;
+h1 span.info, h2 span.info, h3 span.info, h4 span.info {
+ border-top-left-radius: 10px;
+ border-top-right-radius: 10px;
float: right;
- font-size: 80%;
padding: 3px 6px;
}
-h2.title span.info, h3.title span.info, h4.title span.info {
- border-bottom-left-radius: 0px;
- border-bottom-right-radius: 0px;
-}
-h2.title span.info {
- padding: 4px 6px;
-}
ul.code, ul.contents, ul.subcontents {
list-style-type: none;
margin: 0;
ul.contents li ul.code, ul.contents li ul.subcontents {
padding-left: 2em;
}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+td {
+ border: solid 1px gray;
+ padding: 5px 10px;
+ vertical-align: top;
+}
+td.left {
+ text-align: left;
+}
+td.center {
+ text-align: center;
+}
+td.right {
+ text-align: right;
+}
+th {
+ border-bottom: solid 2px gray;
+ padding: 1px 5px;
+ text-align: center;
+ vertical-align: bottom;
+}
+tr:nth-child(even) {
+ background: rgba(127,127,127,0.25);
+}
table.list {
border-collapse: collapse;
width: 100%;
}
-table.list tr:nth-child(even) {
- background: rgba(127,127,127,0.1);]n}
table.list th {
+ border-bottom: none;
border-right: 2px solid gray;
font-family: monospace;
+ font-weight: normal;
padding: 5px 10px 5px 2px;
text-align: right;
vertical-align: top;
}
table.list td {
+ border: none;
padding: 5px 2px 5px 10px;
text-align: left;
vertical-align: top;
}
-h1.title {
-}
-h2.title {
- border-bottom: solid 2px black;
+h2.title, h3.title {
+ border-bottom: solid 2px gray;
}
-h3.title {
- border-bottom: solid 2px black;
+/* Syntax highlighting */
+span.comment {
+ color: darkgreen;
+}
+span.directive {
+ color: purple;
+}
+span.number {
+ color: brown;
+}
+span.reserved {
+ color: darkcyan;
+}
+span.string {
+ color: magenta;
+}
+/* Dark mode overrides */
+@media (prefers-color-scheme: dark) {
+ body {
+ background: black;
+ color: #ccc;
+ }
+ a {
+ color: #ccc;
+ }
+ a:link, a:visited {
+ color: #66f;
+ }
+ a:link:hover, a:visited:hover, a:active {
+ color: #f06;
+ }
+}
+/* Show contents on left side in web browser */
+@media screen and (min-width: 800px) {
+ div.contents {
+ border-right: solid thin gray;
+ bottom: 0px;
+ box-shadow: 3px 3px 5px rgba(127,127,127,0.5);
+ font-size: 10pt;
+ left: 0px;
+ overflow: scroll;
+ padding: 1%;
+ position: fixed;
+ top: 0px;
+ width: 18%;
+ }
+ div.contents h2.title {
+ margin-top: 0px;
+ }
+ div.header, div.body, div.footer {
+ margin-left: 20%;
+ padding: 1% 2%;
+ }
+}
+/* Center title page content vertically */
+@media print {
+ div.header {
+ padding-top: 33%;
+ }
}
--></style>
- </head>
- <body>
+</head>
+<body>
+<div class="header">
<!--
PostScript printer driver documentation for CUPS.
</tr>
</tbody>
</table></div>
- <div class="contents">
- <h2 class="title">Contents</h2>
- <ul class="contents">
- <li><a href="#BASICS">Printer Driver Basics</a></li>
- <li><a href="#CREATING">Creating New PPD Files</a><ul class="subcontents">
- <li><a href="#IMPORT">Importing Existing PPD Files</a></li>
- </ul></li>
- <li><a href="#FILTERS">Using Custom Filters</a></li>
- <li><a href="#COLOR">Implementing Color Management</a></li>
- <li><a href="#MACOSX">Adding macOS Features</a></li>
- </ul>
- </div>
- <div class="body">
+</div>
+<div class="contents">
+<h2 class="title">Contents</h2>
+<ul class="contents">
+<li><a href="#BASICS">Printer Driver Basics</a></li>
+<li><a href="#CREATING">Creating New PPD Files</a><ul class="subcontents">
+<li><a href="#IMPORT">Importing Existing PPD Files</a></li>
+</ul></li>
+<li><a href="#FILTERS">Using Custom Filters</a></li>
+<li><a href="#COLOR">Implementing Color Management</a></li>
+<li><a href="#MACOSX">Adding macOS Features</a></li>
+</ul>
+</div>
+<div class="body">
<h2 class='title'><a name='BASICS'>Printer Driver Basics</a></h2>
<p>A CUPS PostScript printer driver consists of a PostScript Printer Description (PPD) file that describes the features and capabilities of the device, zero or more <em>filter</em> programs that prepare print data for the device, and zero or more support files for color management, online help, and so forth. The PPD file includes references to all of the filters and support files used by the driver.</p>
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> APPrinterIconPath "" /Library/Printers/Vendor/filename.icns
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> APPrinterPreset "name/text" "*option choice ..."
</pre>
- </div>
- </body>
+</div>
+</body>
</html>
<!DOCTYPE html>
-<html>
+<html lang="en-US">
<!-- SECTION: Programming -->
- <head>
- <title>Introduction to the PPD Compiler</title>
- <meta name="keywords" content="Programming">
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="codedoc v3.1">
- <meta name="author" content="Unknown">
- <meta name="copyright" content="Unknown">
- <meta name="version" content="0.0">
- <style type="text/css"><!--
-BODY {
- font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-H1, H2, H3, H4, H5, H6, P, TD, TH {
- font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-H1 { font-size: 2em; }
-H2 { font-size: 1.75em; }
-H3 { font-size: 1.5em; }
-H4 { font-size: 1.25em; }
-
-KBD {
- font-family: monaco, courier, monospace;
- font-weight: bold;
-}
-
-PRE {
- font-family: monaco, courier, monospace;
-}
-
-BLOCKQUOTE {
- border-left: solid 2px #777;
- margin: 1em 0;
- padding: 10px;
-}
-
-BLOCKQUOTE OL LI {
- margin-left: -1em;
-}
-
-PRE.command, PRE.example {
- background: #eee;
- margin: 0 36pt;
- padding: 10px;
-}
-
-P.compact {
- margin: 0;
-}
-
-P.example {
- font-style: italic;
- margin-left: 36pt;
-}
-
-DL.man DD {
- margin-left: 5em;
-}
-
-DL.man DT {
- margin-left: 0;
-}
-
-PRE.man {
- margin: 0;
-}
-
-PRE.command EM, PRE.example EM {
- font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-P.command {
- font-family: monaco, courier, monospace;
- margin-left: 36pt;
-}
-
-P.formula {
- font-style: italic;
- margin-left: 36pt;
-}
-
-A IMG {
- border: none;
-}
-
-A:link:hover IMG {
- background: #f0f0f0;
- border-radius: 10px;
- -moz-border-radius: 10px;
-}
-
-A:link, A:visited {
- font-weight: inherit;
- text-decoration: none;
-}
-
-A:link:hover, A:visited:hover, A:active {
- text-decoration: underline;
-}
-
-SUB, SUP {
- font-size: 50%;
-}
-
-TR.data, TD.data, TR.data TD {
- margin-top: 10pt;
- padding: 5pt;
- border-bottom: solid 1pt #999999;
-}
-
-TR.data TH {
- border-bottom: solid 1pt #999999;
- padding-top: 10pt;
- padding-left: 5pt;
- text-align: left;
-}
-
-DIV.table TABLE {
- border: solid thin #999999;
- border-collapse: collapse;
- border-spacing: 0;
- margin-left: auto;
- margin-right: auto;
-}
-
-DIV.table CAPTION {
- caption-side: top;
- font-size: 120%;
- font-style: italic;
- font-weight: bold;
- margin-left: auto;
- margin-right: auto;
-}
-
-DIV.table TABLE TD {
- border: solid thin #cccccc;
- padding: 5pt 10pt 0;
-}
-
-DIV.table TABLE TH {
- background: #cccccc;
- border: none;
- border-bottom: solid thin #999999;
-}
-
-DIV.figure TABLE {
- margin-left: auto;
- margin-right: auto;
-}
-
-DIV.figure CAPTION {
- caption-side: bottom;
- font-size: 120%;
- font-style: italic;
- font-weight: bold;
- margin-left: auto;
- margin-right: auto;
-}
-
-TH.label {
- text-align: right;
- vertical-align: top;
-}
-
-TH.sublabel {
- text-align: right;
- font-weight: normal;
-}
-
-HR {
- border: solid thin;
-}
-
-SPAN.info {
- background: black;
- border: thin solid black;
- color: white;
- font-size: 80%;
- font-style: italic;
- font-weight: bold;
- white-space: nowrap;
-}
-
-H2 SPAN.info, H3 SPAN.info, H4 SPAN.info {
- float: right;
- font-size: 100%;
-}
-
-H1.title {
-}
-
-H2.title, H3.title {
- border-bottom: solid 2pt #000000;
-}
-
-DIV.indent, TABLE.indent {
- margin-top: 2em;
- margin-left: auto;
- margin-right: auto;
- width: 90%;
-}
-
-TABLE.indent {
- border-collapse: collapse;
-}
-
-TABLE.indent TD, TABLE.indent TH {
- padding: 0;
-}
-
-TABLE.list {
- border-collapse: collapse;
- margin-left: auto;
- margin-right: auto;
- width: 90%;
-}
-
-TABLE.list TH {
+<head>
+<title>Introduction to the PPD Compiler</title>
+<meta name="keywords" content="Programming">
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+<meta name="generator" content="codedoc v3.7">
+<meta name="author" content="Unknown">
+<meta name="language" content="en-US">
+<meta name="copyright" content="Unknown">
+<meta name="version" content="0.0">
+<style type="text/css"><!--
+body {
background: white;
- border-bottom: solid thin #cccccc;
- color: #444444;
- padding-top: 10pt;
- padding-left: 5pt;
- text-align: left;
- vertical-align: bottom;
- white-space: nowrap;
-}
-
-TABLE.list TH A {
- color: #4444cc;
-}
-
-TABLE.list TD {
- border-bottom: solid thin #eeeeee;
- padding-top: 5pt;
- padding-left: 5pt;
+ color: black;
+ font-family: sans-serif;
+ font-size: 12pt;
}
-
-TABLE.list TR:nth-child(even) {
- background: #f8f8f8;
+a {
+ color: black;
}
-
-TABLE.list TR:nth-child(odd) {
- background: #f4f4f4;
+a:link, a:visited {
+ color: #00f;
}
-
-DT {
- margin-left: 36pt;
- margin-top: 12pt;
+a:link:hover, a:visited:hover, a:active {
+ color: #c0c;
}
-
-DD {
- margin-left: 54pt;
+body, p, h1, h2, h3, h4, h5, h6 {
+ font-family: sans-serif;
+ line-height: 1.4;
}
-
-DL.category DT {
+h1, h2, h3, h4, h5, h6 {
font-weight: bold;
+ page-break-inside: avoid;
}
-
-P.summary {
- margin-left: 36pt;
- font-family: monaco, courier, monospace;
-}
-
-DIV.summary TABLE {
- border: solid thin #999999;
- border-collapse: collapse;
- border-spacing: 0;
- margin: 10px;
-}
-
-DIV.summary TABLE TD, DIV.summary TABLE TH {
- border: solid thin #999999;
- padding: 5px;
- text-align: left;
- vertical-align: top;
-}
-
-DIV.summary TABLE THEAD TH {
- background: #eeeeee;
-}
-
-/* API documentation styles... */
-div.body h1 {
+h1 {
font-size: 250%;
- font-weight: bold;
margin: 0;
}
-div.body h2 {
+h2 {
font-size: 250%;
margin-top: 1.5em;
}
-div.body h3 {
- font-size: 150%;
+h3 {
+ font-size: 200%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
-div.body h4 {
- font-size: 110%;
+h4 {
+ font-size: 150%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
-div.body h5 {
- font-size: 100%;
+h5 {
+ font-size: 125%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
-div.contents {
- background: #e8e8e8;
- border: solid thin black;
- padding: 10px;
-}
-div.contents h1 {
+h6 {
font-size: 110%;
+ margin-bottom: 0.5em;
+ margin-top: 1.5em;
}
-div.contents h2 {
- font-size: 100%;
+img.title {
+ width: 256px;
}
-div.contents ul.contents {
- font-size: 80%;
+div.header h1, div.header p {
+ text-align: center;
}
-.class {
- border-bottom: solid 2px gray;
+div.contents, div.body, div.footer {
+ page-break-before: always;
}
-.constants {
+.class, .enumeration, .function, .struct, .typedef, .union {
+ border-bottom: solid 2px gray;
}
.description {
margin-top: 0.5em;
}
-.discussion {
-}
-.enumeration {
- border-bottom: solid 2px gray;
-}
.function {
- border-bottom: solid 2px gray;
margin-bottom: 0;
}
-.members {
-}
-.method {
-}
-.parameters {
-}
-.returnvalue {
-}
-.struct {
- border-bottom: solid 2px gray;
-}
-.typedef {
- border-bottom: solid 2px gray;
-}
-.union {
- border-bottom: solid 2px gray;
-}
-.variable {
-}
-h1, h2, h3, h4, h5, h6 {
- page-break-inside: avoid;
-}
blockquote {
border: solid thin gray;
- box-shadow: 3px 3px 5px rgba(0,0,0,0.5);
- padding: 10px 10px 0px;
+ box-shadow: 3px 3px 5px rgba(127,127,127,0.25);
+ margin: 1em 0;
+ padding: 10px;
page-break-inside: avoid;
}
p code, li code, p.code, pre, ul.code li {
- background: rgba(127,127,127,0.1);
- border: thin dotted gray;
font-family: monospace;
hyphens: manual;
-webkit-hyphens: manual;
- page-break-inside: avoid;
}
p.code, pre, ul.code li {
+ background: rgba(127,127,127,0.25);
+ border: thin dotted gray;
padding: 10px;
+ page-break-inside: avoid;
}
-p code, li code {
- padding: 2px 5px;
+pre {
+ white-space: pre-wrap;
}
a:link, a:visited {
text-decoration: none;
font-weight: bold;
white-space: nowrap;
}
-h2 span.info, h3 span.info, h4 span.info {
- border-radius: 10px;
+h1 span.info, h2 span.info, h3 span.info, h4 span.info {
+ border-top-left-radius: 10px;
+ border-top-right-radius: 10px;
float: right;
- font-size: 80%;
padding: 3px 6px;
}
-h2.title span.info, h3.title span.info, h4.title span.info {
- border-bottom-left-radius: 0px;
- border-bottom-right-radius: 0px;
-}
-h2.title span.info {
- padding: 4px 6px;
-}
ul.code, ul.contents, ul.subcontents {
list-style-type: none;
margin: 0;
ul.contents li ul.code, ul.contents li ul.subcontents {
padding-left: 2em;
}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+td {
+ border: solid 1px gray;
+ padding: 5px 10px;
+ vertical-align: top;
+}
+td.left {
+ text-align: left;
+}
+td.center {
+ text-align: center;
+}
+td.right {
+ text-align: right;
+}
+th {
+ border-bottom: solid 2px gray;
+ padding: 1px 5px;
+ text-align: center;
+ vertical-align: bottom;
+}
+tr:nth-child(even) {
+ background: rgba(127,127,127,0.25);
+}
table.list {
border-collapse: collapse;
width: 100%;
}
-table.list tr:nth-child(even) {
- background: rgba(127,127,127,0.1);]n}
table.list th {
+ border-bottom: none;
border-right: 2px solid gray;
font-family: monospace;
+ font-weight: normal;
padding: 5px 10px 5px 2px;
text-align: right;
vertical-align: top;
}
table.list td {
+ border: none;
padding: 5px 2px 5px 10px;
text-align: left;
vertical-align: top;
}
-h1.title {
-}
-h2.title {
- border-bottom: solid 2px black;
+h2.title, h3.title {
+ border-bottom: solid 2px gray;
}
-h3.title {
- border-bottom: solid 2px black;
+/* Syntax highlighting */
+span.comment {
+ color: darkgreen;
+}
+span.directive {
+ color: purple;
+}
+span.number {
+ color: brown;
+}
+span.reserved {
+ color: darkcyan;
+}
+span.string {
+ color: magenta;
+}
+/* Dark mode overrides */
+@media (prefers-color-scheme: dark) {
+ body {
+ background: black;
+ color: #ccc;
+ }
+ a {
+ color: #ccc;
+ }
+ a:link, a:visited {
+ color: #66f;
+ }
+ a:link:hover, a:visited:hover, a:active {
+ color: #f06;
+ }
+}
+/* Show contents on left side in web browser */
+@media screen and (min-width: 800px) {
+ div.contents {
+ border-right: solid thin gray;
+ bottom: 0px;
+ box-shadow: 3px 3px 5px rgba(127,127,127,0.5);
+ font-size: 10pt;
+ left: 0px;
+ overflow: scroll;
+ padding: 1%;
+ position: fixed;
+ top: 0px;
+ width: 18%;
+ }
+ div.contents h2.title {
+ margin-top: 0px;
+ }
+ div.header, div.body, div.footer {
+ margin-left: 20%;
+ padding: 1% 2%;
+ }
+}
+/* Center title page content vertically */
+@media print {
+ div.header {
+ padding-top: 33%;
+ }
}
--></style>
- </head>
- <body>
+</head>
+<body>
+<div class="header">
<!--
PPD compiler documentation for CUPS.
</tr>
</tbody>
</table></div>
- <div class="contents">
- <h2 class="title">Contents</h2>
- <ul class="contents">
- <li><a href="#BASICS">The Basics</a></li>
- <li><a href="#DRV">Driver Information Files</a><ul class="subcontents">
- <li><a href="#SIMPLE">A Simple Example</a></li>
- <li><a href="#GROUPING">Grouping and Inheritance</a></li>
- <li><a href="#COLOR">Color Support</a></li>
- <li><a href="#OPTIONS">Defining Custom Options and Option Groups</a></li>
- <li><a href="#DEFINE">Defining Constants</a></li>
- <li><a href="#CONDITIONAL">Conditional Statements</a></li>
- <li><a href="#CONSTRAINTS">Defining Constraints</a></li>
- </ul></li>
- <li><a href="#LOCALIZATION">Localization</a><ul class="subcontents">
- <li><a href="#PPDPO">The ppdpo Utility</a></li>
- <li><a href="#PPDC_CATALOG">Using Message Catalogs with the PPD Compiler</a></li>
- </ul></li>
- </ul>
- </div>
- <div class="body">
+</div>
+<div class="contents">
+<h2 class="title">Contents</h2>
+<ul class="contents">
+<li><a href="#BASICS">The Basics</a></li>
+<li><a href="#DRV">Driver Information Files</a><ul class="subcontents">
+<li><a href="#SIMPLE">A Simple Example</a></li>
+<li><a href="#GROUPING">Grouping and Inheritance</a></li>
+<li><a href="#COLOR">Color Support</a></li>
+<li><a href="#OPTIONS">Defining Custom Options and Option Groups</a></li>
+<li><a href="#DEFINE">Defining Constants</a></li>
+<li><a href="#CONDITIONAL">Conditional Statements</a></li>
+<li><a href="#CONSTRAINTS">Defining Constraints</a></li>
+</ul></li>
+<li><a href="#LOCALIZATION">Localization</a><ul class="subcontents">
+<li><a href="#PPDPO">The ppdpo Utility</a></li>
+<li><a href="#PPDC_CATALOG">Using Message Catalogs with the PPD Compiler</a></li>
+</ul></li>
+</ul>
+</div>
+<div class="body">
<h2 class='title'><a name='BASICS'>The Basics</a></h2>
<P>The PPD compiler, <a href='man-ppdc.html'><code>ppdc(1)</code></a>, is a
</pre>
<p>to generate German PPD files.</p>
- </div>
- </body>
+</div>
+</body>
</html>
<!DOCTYPE html>
-<html>
+<html lang="en-US">
<!-- SECTION: Programming -->
- <head>
- <title>Developing Raster Printer Drivers</title>
- <meta name="keywords" content="Programming">
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="codedoc v3.1">
- <meta name="author" content="Unknown">
- <meta name="copyright" content="Unknown">
- <meta name="version" content="0.0">
- <style type="text/css"><!--
-BODY {
- font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-H1, H2, H3, H4, H5, H6, P, TD, TH {
- font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-H1 { font-size: 2em; }
-H2 { font-size: 1.75em; }
-H3 { font-size: 1.5em; }
-H4 { font-size: 1.25em; }
-
-KBD {
- font-family: monaco, courier, monospace;
- font-weight: bold;
-}
-
-PRE {
- font-family: monaco, courier, monospace;
-}
-
-BLOCKQUOTE {
- border-left: solid 2px #777;
- margin: 1em 0;
- padding: 10px;
-}
-
-BLOCKQUOTE OL LI {
- margin-left: -1em;
-}
-
-PRE.command, PRE.example {
- background: #eee;
- margin: 0 36pt;
- padding: 10px;
-}
-
-P.compact {
- margin: 0;
-}
-
-P.example {
- font-style: italic;
- margin-left: 36pt;
-}
-
-DL.man DD {
- margin-left: 5em;
-}
-
-DL.man DT {
- margin-left: 0;
-}
-
-PRE.man {
- margin: 0;
-}
-
-PRE.command EM, PRE.example EM {
- font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-P.command {
- font-family: monaco, courier, monospace;
- margin-left: 36pt;
-}
-
-P.formula {
- font-style: italic;
- margin-left: 36pt;
-}
-
-A IMG {
- border: none;
-}
-
-A:link:hover IMG {
- background: #f0f0f0;
- border-radius: 10px;
- -moz-border-radius: 10px;
-}
-
-A:link, A:visited {
- font-weight: inherit;
- text-decoration: none;
-}
-
-A:link:hover, A:visited:hover, A:active {
- text-decoration: underline;
-}
-
-SUB, SUP {
- font-size: 50%;
-}
-
-TR.data, TD.data, TR.data TD {
- margin-top: 10pt;
- padding: 5pt;
- border-bottom: solid 1pt #999999;
-}
-
-TR.data TH {
- border-bottom: solid 1pt #999999;
- padding-top: 10pt;
- padding-left: 5pt;
- text-align: left;
-}
-
-DIV.table TABLE {
- border: solid thin #999999;
- border-collapse: collapse;
- border-spacing: 0;
- margin-left: auto;
- margin-right: auto;
-}
-
-DIV.table CAPTION {
- caption-side: top;
- font-size: 120%;
- font-style: italic;
- font-weight: bold;
- margin-left: auto;
- margin-right: auto;
-}
-
-DIV.table TABLE TD {
- border: solid thin #cccccc;
- padding: 5pt 10pt 0;
-}
-
-DIV.table TABLE TH {
- background: #cccccc;
- border: none;
- border-bottom: solid thin #999999;
-}
-
-DIV.figure TABLE {
- margin-left: auto;
- margin-right: auto;
-}
-
-DIV.figure CAPTION {
- caption-side: bottom;
- font-size: 120%;
- font-style: italic;
- font-weight: bold;
- margin-left: auto;
- margin-right: auto;
-}
-
-TH.label {
- text-align: right;
- vertical-align: top;
-}
-
-TH.sublabel {
- text-align: right;
- font-weight: normal;
-}
-
-HR {
- border: solid thin;
-}
-
-SPAN.info {
- background: black;
- border: thin solid black;
- color: white;
- font-size: 80%;
- font-style: italic;
- font-weight: bold;
- white-space: nowrap;
-}
-
-H2 SPAN.info, H3 SPAN.info, H4 SPAN.info {
- float: right;
- font-size: 100%;
-}
-
-H1.title {
-}
-
-H2.title, H3.title {
- border-bottom: solid 2pt #000000;
-}
-
-DIV.indent, TABLE.indent {
- margin-top: 2em;
- margin-left: auto;
- margin-right: auto;
- width: 90%;
-}
-
-TABLE.indent {
- border-collapse: collapse;
-}
-
-TABLE.indent TD, TABLE.indent TH {
- padding: 0;
-}
-
-TABLE.list {
- border-collapse: collapse;
- margin-left: auto;
- margin-right: auto;
- width: 90%;
-}
-
-TABLE.list TH {
+<head>
+<title>Developing Raster Printer Drivers</title>
+<meta name="keywords" content="Programming">
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+<meta name="generator" content="codedoc v3.7">
+<meta name="author" content="Unknown">
+<meta name="language" content="en-US">
+<meta name="copyright" content="Unknown">
+<meta name="version" content="0.0">
+<style type="text/css"><!--
+body {
background: white;
- border-bottom: solid thin #cccccc;
- color: #444444;
- padding-top: 10pt;
- padding-left: 5pt;
- text-align: left;
- vertical-align: bottom;
- white-space: nowrap;
+ color: black;
+ font-family: sans-serif;
+ font-size: 12pt;
}
-
-TABLE.list TH A {
- color: #4444cc;
+a {
+ color: black;
}
-
-TABLE.list TD {
- border-bottom: solid thin #eeeeee;
- padding-top: 5pt;
- padding-left: 5pt;
-}
-
-TABLE.list TR:nth-child(even) {
- background: #f8f8f8;
-}
-
-TABLE.list TR:nth-child(odd) {
- background: #f4f4f4;
+a:link, a:visited {
+ color: #00f;
}
-
-DT {
- margin-left: 36pt;
- margin-top: 12pt;
+a:link:hover, a:visited:hover, a:active {
+ color: #c0c;
}
-
-DD {
- margin-left: 54pt;
+body, p, h1, h2, h3, h4, h5, h6 {
+ font-family: sans-serif;
+ line-height: 1.4;
}
-
-DL.category DT {
+h1, h2, h3, h4, h5, h6 {
font-weight: bold;
+ page-break-inside: avoid;
}
-
-P.summary {
- margin-left: 36pt;
- font-family: monaco, courier, monospace;
-}
-
-DIV.summary TABLE {
- border: solid thin #999999;
- border-collapse: collapse;
- border-spacing: 0;
- margin: 10px;
-}
-
-DIV.summary TABLE TD, DIV.summary TABLE TH {
- border: solid thin #999999;
- padding: 5px;
- text-align: left;
- vertical-align: top;
-}
-
-DIV.summary TABLE THEAD TH {
- background: #eeeeee;
-}
-
-/* API documentation styles... */
-div.body h1 {
+h1 {
font-size: 250%;
- font-weight: bold;
margin: 0;
}
-div.body h2 {
+h2 {
font-size: 250%;
margin-top: 1.5em;
}
-div.body h3 {
- font-size: 150%;
+h3 {
+ font-size: 200%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
-div.body h4 {
- font-size: 110%;
+h4 {
+ font-size: 150%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
-div.body h5 {
- font-size: 100%;
+h5 {
+ font-size: 125%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
-div.contents {
- background: #e8e8e8;
- border: solid thin black;
- padding: 10px;
-}
-div.contents h1 {
+h6 {
font-size: 110%;
+ margin-bottom: 0.5em;
+ margin-top: 1.5em;
}
-div.contents h2 {
- font-size: 100%;
+img.title {
+ width: 256px;
}
-div.contents ul.contents {
- font-size: 80%;
+div.header h1, div.header p {
+ text-align: center;
}
-.class {
- border-bottom: solid 2px gray;
+div.contents, div.body, div.footer {
+ page-break-before: always;
}
-.constants {
+.class, .enumeration, .function, .struct, .typedef, .union {
+ border-bottom: solid 2px gray;
}
.description {
margin-top: 0.5em;
}
-.discussion {
-}
-.enumeration {
- border-bottom: solid 2px gray;
-}
.function {
- border-bottom: solid 2px gray;
margin-bottom: 0;
}
-.members {
-}
-.method {
-}
-.parameters {
-}
-.returnvalue {
-}
-.struct {
- border-bottom: solid 2px gray;
-}
-.typedef {
- border-bottom: solid 2px gray;
-}
-.union {
- border-bottom: solid 2px gray;
-}
-.variable {
-}
-h1, h2, h3, h4, h5, h6 {
- page-break-inside: avoid;
-}
blockquote {
border: solid thin gray;
- box-shadow: 3px 3px 5px rgba(0,0,0,0.5);
- padding: 10px 10px 0px;
+ box-shadow: 3px 3px 5px rgba(127,127,127,0.25);
+ margin: 1em 0;
+ padding: 10px;
page-break-inside: avoid;
}
p code, li code, p.code, pre, ul.code li {
- background: rgba(127,127,127,0.1);
- border: thin dotted gray;
font-family: monospace;
hyphens: manual;
-webkit-hyphens: manual;
- page-break-inside: avoid;
}
p.code, pre, ul.code li {
+ background: rgba(127,127,127,0.25);
+ border: thin dotted gray;
padding: 10px;
+ page-break-inside: avoid;
}
-p code, li code {
- padding: 2px 5px;
+pre {
+ white-space: pre-wrap;
}
a:link, a:visited {
text-decoration: none;
font-weight: bold;
white-space: nowrap;
}
-h2 span.info, h3 span.info, h4 span.info {
- border-radius: 10px;
+h1 span.info, h2 span.info, h3 span.info, h4 span.info {
+ border-top-left-radius: 10px;
+ border-top-right-radius: 10px;
float: right;
- font-size: 80%;
padding: 3px 6px;
}
-h2.title span.info, h3.title span.info, h4.title span.info {
- border-bottom-left-radius: 0px;
- border-bottom-right-radius: 0px;
-}
-h2.title span.info {
- padding: 4px 6px;
-}
ul.code, ul.contents, ul.subcontents {
list-style-type: none;
margin: 0;
ul.contents li ul.code, ul.contents li ul.subcontents {
padding-left: 2em;
}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+td {
+ border: solid 1px gray;
+ padding: 5px 10px;
+ vertical-align: top;
+}
+td.left {
+ text-align: left;
+}
+td.center {
+ text-align: center;
+}
+td.right {
+ text-align: right;
+}
+th {
+ border-bottom: solid 2px gray;
+ padding: 1px 5px;
+ text-align: center;
+ vertical-align: bottom;
+}
+tr:nth-child(even) {
+ background: rgba(127,127,127,0.25);
+}
table.list {
border-collapse: collapse;
width: 100%;
}
-table.list tr:nth-child(even) {
- background: rgba(127,127,127,0.1);]n}
table.list th {
+ border-bottom: none;
border-right: 2px solid gray;
font-family: monospace;
+ font-weight: normal;
padding: 5px 10px 5px 2px;
text-align: right;
vertical-align: top;
}
table.list td {
+ border: none;
padding: 5px 2px 5px 10px;
text-align: left;
vertical-align: top;
}
-h1.title {
+h2.title, h3.title {
+ border-bottom: solid 2px gray;
+}
+/* Syntax highlighting */
+span.comment {
+ color: darkgreen;
+}
+span.directive {
+ color: purple;
}
-h2.title {
- border-bottom: solid 2px black;
+span.number {
+ color: brown;
}
-h3.title {
- border-bottom: solid 2px black;
+span.reserved {
+ color: darkcyan;
+}
+span.string {
+ color: magenta;
+}
+/* Dark mode overrides */
+@media (prefers-color-scheme: dark) {
+ body {
+ background: black;
+ color: #ccc;
+ }
+ a {
+ color: #ccc;
+ }
+ a:link, a:visited {
+ color: #66f;
+ }
+ a:link:hover, a:visited:hover, a:active {
+ color: #f06;
+ }
+}
+/* Show contents on left side in web browser */
+@media screen and (min-width: 800px) {
+ div.contents {
+ border-right: solid thin gray;
+ bottom: 0px;
+ box-shadow: 3px 3px 5px rgba(127,127,127,0.5);
+ font-size: 10pt;
+ left: 0px;
+ overflow: scroll;
+ padding: 1%;
+ position: fixed;
+ top: 0px;
+ width: 18%;
+ }
+ div.contents h2.title {
+ margin-top: 0px;
+ }
+ div.header, div.body, div.footer {
+ margin-left: 20%;
+ padding: 1% 2%;
+ }
+}
+/* Center title page content vertically */
+@media print {
+ div.header {
+ padding-top: 33%;
+ }
}
--></style>
- </head>
- <body>
+</head>
+<body>
+<div class="header">
<!--
Raster printer driver documentation for CUPS.
</tr>
</tbody>
</table></div>
- <div class="contents">
- <h2 class="title">Contents</h2>
- <ul class="contents">
- <li><a href="#BASICS">Printer Driver Basics</a></li>
- <li><a href="#CREATING">Creating New PPD Files</a></li>
- <li><a href="#FILTERS">Using Filters</a></li>
- <li><a href="#COLOR">Implementing Color Management</a></li>
- <li><a href="#MACOSX">Adding macOS Features</a></li>
- </ul>
- </div>
- <div class="body">
+</div>
+<div class="contents">
+<h2 class="title">Contents</h2>
+<ul class="contents">
+<li><a href="#BASICS">Printer Driver Basics</a></li>
+<li><a href="#CREATING">Creating New PPD Files</a></li>
+<li><a href="#FILTERS">Using Filters</a></li>
+<li><a href="#COLOR">Implementing Color Management</a></li>
+<li><a href="#MACOSX">Adding macOS Features</a></li>
+</ul>
+</div>
+<div class="body">
<h2 class='title'><a name='BASICS'>Printer Driver Basics</a></h2>
<p>A CUPS raster printer driver consists of a PostScript Printer Description (PPD) file that describes the features and capabilities of the device, one or more <em>filter</em> programs that prepare print data for the device, and zero or more support files for color management, online help, and so forth. The PPD file includes references to all of the filters and support files used by the driver.</p>
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> APPrinterIconPath "" /Library/Printers/Vendor/filename.icns
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> APPrinterPreset "name/text" "*option choice ..."
</pre>
- </div>
- </body>
+</div>
+</body>
</html>
<!DOCTYPE html>
-<html>
+<html lang="en-US">
<!-- SECTION: Specifications -->
- <head>
- <title>CUPS PPD Extensions</title>
- <meta name="keywords" content="Specifications">
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="codedoc v3.1">
- <meta name="author" content="Unknown">
- <meta name="copyright" content="Unknown">
- <meta name="version" content="0.0">
- <style type="text/css"><!--
-BODY {
- font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-H1, H2, H3, H4, H5, H6, P, TD, TH {
- font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-H1 { font-size: 2em; }
-H2 { font-size: 1.75em; }
-H3 { font-size: 1.5em; }
-H4 { font-size: 1.25em; }
-
-KBD {
- font-family: monaco, courier, monospace;
- font-weight: bold;
-}
-
-PRE {
- font-family: monaco, courier, monospace;
-}
-
-BLOCKQUOTE {
- border-left: solid 2px #777;
- margin: 1em 0;
- padding: 10px;
-}
-
-BLOCKQUOTE OL LI {
- margin-left: -1em;
-}
-
-PRE.command, PRE.example {
- background: #eee;
- margin: 0 36pt;
- padding: 10px;
-}
-
-P.compact {
- margin: 0;
-}
-
-P.example {
- font-style: italic;
- margin-left: 36pt;
-}
-
-DL.man DD {
- margin-left: 5em;
-}
-
-DL.man DT {
- margin-left: 0;
-}
-
-PRE.man {
- margin: 0;
-}
-
-PRE.command EM, PRE.example EM {
- font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-P.command {
- font-family: monaco, courier, monospace;
- margin-left: 36pt;
-}
-
-P.formula {
- font-style: italic;
- margin-left: 36pt;
-}
-
-A IMG {
- border: none;
-}
-
-A:link:hover IMG {
- background: #f0f0f0;
- border-radius: 10px;
- -moz-border-radius: 10px;
-}
-
-A:link, A:visited {
- font-weight: inherit;
- text-decoration: none;
-}
-
-A:link:hover, A:visited:hover, A:active {
- text-decoration: underline;
-}
-
-SUB, SUP {
- font-size: 50%;
-}
-
-TR.data, TD.data, TR.data TD {
- margin-top: 10pt;
- padding: 5pt;
- border-bottom: solid 1pt #999999;
-}
-
-TR.data TH {
- border-bottom: solid 1pt #999999;
- padding-top: 10pt;
- padding-left: 5pt;
- text-align: left;
-}
-
-DIV.table TABLE {
- border: solid thin #999999;
- border-collapse: collapse;
- border-spacing: 0;
- margin-left: auto;
- margin-right: auto;
-}
-
-DIV.table CAPTION {
- caption-side: top;
- font-size: 120%;
- font-style: italic;
- font-weight: bold;
- margin-left: auto;
- margin-right: auto;
-}
-
-DIV.table TABLE TD {
- border: solid thin #cccccc;
- padding: 5pt 10pt 0;
-}
-
-DIV.table TABLE TH {
- background: #cccccc;
- border: none;
- border-bottom: solid thin #999999;
-}
-
-DIV.figure TABLE {
- margin-left: auto;
- margin-right: auto;
-}
-
-DIV.figure CAPTION {
- caption-side: bottom;
- font-size: 120%;
- font-style: italic;
- font-weight: bold;
- margin-left: auto;
- margin-right: auto;
-}
-
-TH.label {
- text-align: right;
- vertical-align: top;
-}
-
-TH.sublabel {
- text-align: right;
- font-weight: normal;
-}
-
-HR {
- border: solid thin;
-}
-
-SPAN.info {
- background: black;
- border: thin solid black;
- color: white;
- font-size: 80%;
- font-style: italic;
- font-weight: bold;
- white-space: nowrap;
-}
-
-H2 SPAN.info, H3 SPAN.info, H4 SPAN.info {
- float: right;
- font-size: 100%;
-}
-
-H1.title {
-}
-
-H2.title, H3.title {
- border-bottom: solid 2pt #000000;
-}
-
-DIV.indent, TABLE.indent {
- margin-top: 2em;
- margin-left: auto;
- margin-right: auto;
- width: 90%;
-}
-
-TABLE.indent {
- border-collapse: collapse;
-}
-
-TABLE.indent TD, TABLE.indent TH {
- padding: 0;
-}
-
-TABLE.list {
- border-collapse: collapse;
- margin-left: auto;
- margin-right: auto;
- width: 90%;
-}
-
-TABLE.list TH {
+<head>
+<title>CUPS PPD Extensions</title>
+<meta name="keywords" content="Specifications">
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+<meta name="generator" content="codedoc v3.7">
+<meta name="author" content="Unknown">
+<meta name="language" content="en-US">
+<meta name="copyright" content="Unknown">
+<meta name="version" content="0.0">
+<style type="text/css"><!--
+body {
background: white;
- border-bottom: solid thin #cccccc;
- color: #444444;
- padding-top: 10pt;
- padding-left: 5pt;
- text-align: left;
- vertical-align: bottom;
- white-space: nowrap;
+ color: black;
+ font-family: sans-serif;
+ font-size: 12pt;
}
-
-TABLE.list TH A {
- color: #4444cc;
-}
-
-TABLE.list TD {
- border-bottom: solid thin #eeeeee;
- padding-top: 5pt;
- padding-left: 5pt;
+a {
+ color: black;
}
-
-TABLE.list TR:nth-child(even) {
- background: #f8f8f8;
-}
-
-TABLE.list TR:nth-child(odd) {
- background: #f4f4f4;
+a:link, a:visited {
+ color: #00f;
}
-
-DT {
- margin-left: 36pt;
- margin-top: 12pt;
+a:link:hover, a:visited:hover, a:active {
+ color: #c0c;
}
-
-DD {
- margin-left: 54pt;
+body, p, h1, h2, h3, h4, h5, h6 {
+ font-family: sans-serif;
+ line-height: 1.4;
}
-
-DL.category DT {
+h1, h2, h3, h4, h5, h6 {
font-weight: bold;
+ page-break-inside: avoid;
}
-
-P.summary {
- margin-left: 36pt;
- font-family: monaco, courier, monospace;
-}
-
-DIV.summary TABLE {
- border: solid thin #999999;
- border-collapse: collapse;
- border-spacing: 0;
- margin: 10px;
-}
-
-DIV.summary TABLE TD, DIV.summary TABLE TH {
- border: solid thin #999999;
- padding: 5px;
- text-align: left;
- vertical-align: top;
-}
-
-DIV.summary TABLE THEAD TH {
- background: #eeeeee;
-}
-
-/* API documentation styles... */
-div.body h1 {
+h1 {
font-size: 250%;
- font-weight: bold;
margin: 0;
}
-div.body h2 {
+h2 {
font-size: 250%;
margin-top: 1.5em;
}
-div.body h3 {
- font-size: 150%;
+h3 {
+ font-size: 200%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
-div.body h4 {
- font-size: 110%;
+h4 {
+ font-size: 150%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
-div.body h5 {
- font-size: 100%;
+h5 {
+ font-size: 125%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
-div.contents {
- background: #e8e8e8;
- border: solid thin black;
- padding: 10px;
-}
-div.contents h1 {
+h6 {
font-size: 110%;
+ margin-bottom: 0.5em;
+ margin-top: 1.5em;
}
-div.contents h2 {
- font-size: 100%;
+img.title {
+ width: 256px;
}
-div.contents ul.contents {
- font-size: 80%;
+div.header h1, div.header p {
+ text-align: center;
}
-.class {
- border-bottom: solid 2px gray;
+div.contents, div.body, div.footer {
+ page-break-before: always;
}
-.constants {
+.class, .enumeration, .function, .struct, .typedef, .union {
+ border-bottom: solid 2px gray;
}
.description {
margin-top: 0.5em;
}
-.discussion {
-}
-.enumeration {
- border-bottom: solid 2px gray;
-}
.function {
- border-bottom: solid 2px gray;
margin-bottom: 0;
}
-.members {
-}
-.method {
-}
-.parameters {
-}
-.returnvalue {
-}
-.struct {
- border-bottom: solid 2px gray;
-}
-.typedef {
- border-bottom: solid 2px gray;
-}
-.union {
- border-bottom: solid 2px gray;
-}
-.variable {
-}
-h1, h2, h3, h4, h5, h6 {
- page-break-inside: avoid;
-}
blockquote {
border: solid thin gray;
- box-shadow: 3px 3px 5px rgba(0,0,0,0.5);
- padding: 10px 10px 0px;
+ box-shadow: 3px 3px 5px rgba(127,127,127,0.25);
+ margin: 1em 0;
+ padding: 10px;
page-break-inside: avoid;
}
p code, li code, p.code, pre, ul.code li {
- background: rgba(127,127,127,0.1);
- border: thin dotted gray;
font-family: monospace;
hyphens: manual;
-webkit-hyphens: manual;
- page-break-inside: avoid;
}
p.code, pre, ul.code li {
+ background: rgba(127,127,127,0.25);
+ border: thin dotted gray;
padding: 10px;
+ page-break-inside: avoid;
}
-p code, li code {
- padding: 2px 5px;
+pre {
+ white-space: pre-wrap;
}
a:link, a:visited {
text-decoration: none;
font-weight: bold;
white-space: nowrap;
}
-h2 span.info, h3 span.info, h4 span.info {
- border-radius: 10px;
+h1 span.info, h2 span.info, h3 span.info, h4 span.info {
+ border-top-left-radius: 10px;
+ border-top-right-radius: 10px;
float: right;
- font-size: 80%;
padding: 3px 6px;
}
-h2.title span.info, h3.title span.info, h4.title span.info {
- border-bottom-left-radius: 0px;
- border-bottom-right-radius: 0px;
-}
-h2.title span.info {
- padding: 4px 6px;
-}
ul.code, ul.contents, ul.subcontents {
list-style-type: none;
margin: 0;
ul.contents li ul.code, ul.contents li ul.subcontents {
padding-left: 2em;
}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+td {
+ border: solid 1px gray;
+ padding: 5px 10px;
+ vertical-align: top;
+}
+td.left {
+ text-align: left;
+}
+td.center {
+ text-align: center;
+}
+td.right {
+ text-align: right;
+}
+th {
+ border-bottom: solid 2px gray;
+ padding: 1px 5px;
+ text-align: center;
+ vertical-align: bottom;
+}
+tr:nth-child(even) {
+ background: rgba(127,127,127,0.25);
+}
table.list {
border-collapse: collapse;
width: 100%;
}
-table.list tr:nth-child(even) {
- background: rgba(127,127,127,0.1);]n}
table.list th {
+ border-bottom: none;
border-right: 2px solid gray;
font-family: monospace;
+ font-weight: normal;
padding: 5px 10px 5px 2px;
text-align: right;
vertical-align: top;
}
table.list td {
+ border: none;
padding: 5px 2px 5px 10px;
text-align: left;
vertical-align: top;
}
-h1.title {
-}
-h2.title {
- border-bottom: solid 2px black;
+h2.title, h3.title {
+ border-bottom: solid 2px gray;
}
-h3.title {
- border-bottom: solid 2px black;
+/* Syntax highlighting */
+span.comment {
+ color: darkgreen;
+}
+span.directive {
+ color: purple;
+}
+span.number {
+ color: brown;
+}
+span.reserved {
+ color: darkcyan;
+}
+span.string {
+ color: magenta;
+}
+/* Dark mode overrides */
+@media (prefers-color-scheme: dark) {
+ body {
+ background: black;
+ color: #ccc;
+ }
+ a {
+ color: #ccc;
+ }
+ a:link, a:visited {
+ color: #66f;
+ }
+ a:link:hover, a:visited:hover, a:active {
+ color: #f06;
+ }
+}
+/* Show contents on left side in web browser */
+@media screen and (min-width: 800px) {
+ div.contents {
+ border-right: solid thin gray;
+ bottom: 0px;
+ box-shadow: 3px 3px 5px rgba(127,127,127,0.5);
+ font-size: 10pt;
+ left: 0px;
+ overflow: scroll;
+ padding: 1%;
+ position: fixed;
+ top: 0px;
+ width: 18%;
+ }
+ div.contents h2.title {
+ margin-top: 0px;
+ }
+ div.header, div.body, div.footer {
+ margin-left: 20%;
+ padding: 1% 2%;
+ }
+}
+/* Center title page content vertically */
+@media print {
+ div.header {
+ padding-top: 33%;
+ }
}
--></style>
- </head>
- <body>
+</head>
+<body>
+<div class="header">
<!--
PPD extension documentation for CUPS.
</tr>
</tbody>
</table></div>
- <div class="contents">
- <h2 class="title">Contents</h2>
- <ul class="contents">
- <li><a href="#SYNTAX">PPD File Syntax</a></li>
- <li><a href="#AUTOCONFIG">Auto-Configuration</a><ul class="subcontents">
- <li><a href="#APAutoSetupTool">APAutoSetupTool</a></li>
- <li><a href="#QUERYKEYWORD">?MainKeyword</a></li>
- <li><a href="#OID">OIDMainKeyword</a></li>
- </ul></li>
- <li><a href="#PROFILES">Color Profiles</a><ul class="subcontents">
- <li><a href="#cupsColorProfile">cupsColorProfile</a></li>
- <li><a href="#cupsICCProfile">cupsICCProfile</a></li>
- <li><a href="#APCustom">Custom Color Matching Support</a></li>
- </ul></li>
- <li><a href="#CONSTRAINTS">Constraints</a><ul class="subcontents">
- <li><a href="#cupsUIConstraints">cupsUIConstraints</a></li>
- <li><a href="#cupsUIResolver">cupsUIResolver</a></li>
- </ul></li>
- <li><a href="#I18N">Globalized PPD Support</a></li>
- <li><a href="#OPTIONS"><span class="info">CUPS 1.3/macOS 10.6</span>Custom Options</a></li>
- <li><a href="#RASTERPS">Writing PostScript Option Commands for Raster Drivers</a></li>
- <li><a href="#MEDIA">Media Keywords</a><ul class="subcontents">
- <li><a href="#cupsMediaQualifier2">cupsMediaQualifier2</a></li>
- <li><a href="#cupsMediaQualifier3">cupsMediaQualifier3</a></li>
- <li><a href="#cupsMinSize">cupsMinSize</a></li>
- <li><a href="#cupsMaxSize">cupsMaxSize</a></li>
- <li><a href="#cupsPageSizeCategory">cupsPageSizeCategory</a></li>
- </ul></li>
- <li><a href="#ATTRIBUTES">General Attributes</a><ul class="subcontents">
- <li><a href="#cupsBackSide">cupsBackSide</a></li>
- <li><a href="#cupsCommands">cupsCommands</a></li>
- <li><a href="#cupsEvenDuplex">cupsEvenDuplex</a></li>
- <li><a href="#cupsFax">cupsFax</a></li>
- <li><a href="#cupsFilter">cupsFilter</a></li>
- <li><a href="#cupsFilter2">cupsFilter2</a></li>
- <li><a href="#cupsFinishingTemplate">cupsFinishingTemplate</a></li>
- <li><a href="#cupsFlipDuplex">cupsFlipDuplex</a></li>
- <li><a href="#cupsIPPFinishings">cupsIPPFinishings</a></li>
- <li><a href="#cupsIPPReason">cupsIPPReason</a></li>
- <li><a href="#cupsIPPSupplies">cupsIPPSupplies</a></li>
- <li><a href="#cupsJobAccountId">cupsJobAccountId</a></li>
- <li><a href="#cupsJobAccountingUserId">cupsJobAccountingUserId</a></li>
- <li><a href="#cupsJobPassword">cupsJobPassword</a></li>
- <li><a href="#cupsLanguages">cupsLanguages</a></li>
- <li><a href="#cupsMandatory">cupsMandatory</a></li>
- <li><a href="#cupsManualCopies">cupsManualCopies</a></li>
- <li><a href="#cupsMarkerName">cupsMarkerName</a></li>
- <li><a href="#cupsMarkerNotice">cupsMarkerNotice</a></li>
- <li><a href="#cupsMaxCopies">cupsMaxCopies</a></li>
- <li><a href="#cupsModelNumber">cupsModelNumber</a></li>
- <li><a href="#cupsPJLCharset">cupsPJLCharset</a></li>
- <li><a href="#cupsPJLDisplay">cupsPJLDisplay</a></li>
- <li><a href="#cupsPortMonitor">cupsPortMonitor</a></li>
- <li><a href="#cupsPreFilter">cupsPreFilter</a></li>
- <li><a href="#cupsPrintQuality">cupsPrintQuality</a></li>
- <li><a href="#cupsSingleFile">cupsSingleFile</a></li>
- <li><a href="#cupsSNMPSupplies">cupsSNMPSupplies</a></li>
- <li><a href="#cupsVersion">cupsVersion</a></li>
- <li><a href="#JCLToPDFInterpreter">JCLToPDFInterpreter</a></li>
- </ul></li>
- <li><a href="#MACOSX">macOS Attributes</a><ul class="subcontents">
- <li><a href="#APDialogExtension">APDialogExtension</a></li>
- <li><a href="#APDuplexRequiresFlippedMargin">APDuplexRequiresFlippedMargin</a></li>
- <li><a href="#APHelpBook">APHelpBook</a></li>
- <li><a href="#APICADriver">APICADriver</a></li>
- <li><a href="#APPrinterIconPath">APPrinterIconPath</a></li>
- <li><a href="#APPrinterLowInkTool">APPrinterLowInkTool</a></li>
- <li><a href="#APPrinterPreset">APPrinterPreset</a></li>
- <li><a href="#APPrinterUtilityPath">APPrinterUtilityPath</a></li>
- <li><a href="#APScannerOnly">APScannerOnly</a></li>
- <li><a href="#APScanAppBundleID">APScanAppBundleID</a></li>
- </ul></li>
- <li><a href="#HISTORY">Change History</a></li>
- </ul>
- </div>
- <div class="body">
+</div>
+<div class="contents">
+<h2 class="title">Contents</h2>
+<ul class="contents">
+<li><a href="#SYNTAX">PPD File Syntax</a></li>
+<li><a href="#AUTOCONFIG">Auto-Configuration</a><ul class="subcontents">
+<li><a href="#APAutoSetupTool">APAutoSetupTool</a></li>
+<li><a href="#QUERYKEYWORD">?MainKeyword</a></li>
+<li><a href="#OID">OIDMainKeyword</a></li>
+</ul></li>
+<li><a href="#PROFILES">Color Profiles</a><ul class="subcontents">
+<li><a href="#cupsColorProfile">cupsColorProfile</a></li>
+<li><a href="#cupsICCProfile">cupsICCProfile</a></li>
+<li><a href="#APCustom">Custom Color Matching Support</a></li>
+</ul></li>
+<li><a href="#CONSTRAINTS">Constraints</a><ul class="subcontents">
+<li><a href="#cupsUIConstraints">cupsUIConstraints</a></li>
+<li><a href="#cupsUIResolver">cupsUIResolver</a></li>
+</ul></li>
+<li><a href="#I18N">Globalized PPD Support</a></li>
+<li><a href="#OPTIONS">Custom Options</a></li>
+<li><a href="#RASTERPS">Writing PostScript Option Commands for Raster Drivers</a></li>
+<li><a href="#MEDIA">Media Keywords</a><ul class="subcontents">
+<li><a href="#cupsMediaQualifier2">cupsMediaQualifier2</a></li>
+<li><a href="#cupsMediaQualifier3">cupsMediaQualifier3</a></li>
+<li><a href="#cupsMinSize">cupsMinSize</a></li>
+<li><a href="#cupsMaxSize">cupsMaxSize</a></li>
+<li><a href="#cupsPageSizeCategory">cupsPageSizeCategory</a></li>
+</ul></li>
+<li><a href="#ATTRIBUTES">General Attributes</a><ul class="subcontents">
+<li><a href="#cupsBackSide">cupsBackSide</a></li>
+<li><a href="#cupsCommands">cupsCommands</a></li>
+<li><a href="#cupsEvenDuplex">cupsEvenDuplex</a></li>
+<li><a href="#cupsFax">cupsFax</a></li>
+<li><a href="#cupsFilter">cupsFilter</a></li>
+<li><a href="#cupsFilter2">cupsFilter2</a></li>
+<li><a href="#cupsFinishingTemplate">cupsFinishingTemplate</a></li>
+<li><a href="#cupsFlipDuplex">cupsFlipDuplex</a></li>
+<li><a href="#cupsIPPFinishings">cupsIPPFinishings</a></li>
+<li><a href="#cupsIPPReason">cupsIPPReason</a></li>
+<li><a href="#cupsIPPSupplies">cupsIPPSupplies</a></li>
+<li><a href="#cupsJobAccountId">cupsJobAccountId</a></li>
+<li><a href="#cupsJobAccountingUserId">cupsJobAccountingUserId</a></li>
+<li><a href="#cupsJobPassword">cupsJobPassword</a></li>
+<li><a href="#cupsLanguages">cupsLanguages</a></li>
+<li><a href="#cupsMandatory">cupsMandatory</a></li>
+<li><a href="#cupsManualCopies">cupsManualCopies</a></li>
+<li><a href="#cupsMarkerName">cupsMarkerName</a></li>
+<li><a href="#cupsMarkerNotice">cupsMarkerNotice</a></li>
+<li><a href="#cupsMaxCopies">cupsMaxCopies</a></li>
+<li><a href="#cupsModelNumber">cupsModelNumber</a></li>
+<li><a href="#cupsPJLCharset">cupsPJLCharset</a></li>
+<li><a href="#cupsPJLDisplay">cupsPJLDisplay</a></li>
+<li><a href="#cupsPortMonitor">cupsPortMonitor</a></li>
+<li><a href="#cupsPreFilter">cupsPreFilter</a></li>
+<li><a href="#cupsPrintQuality">cupsPrintQuality</a></li>
+<li><a href="#cupsSingleFile">cupsSingleFile</a></li>
+<li><a href="#cupsSNMPSupplies">cupsSNMPSupplies</a></li>
+<li><a href="#cupsVersion">cupsVersion</a></li>
+<li><a href="#JCLToPDFInterpreter">JCLToPDFInterpreter</a></li>
+</ul></li>
+<li><a href="#MACOSX">macOS Attributes</a><ul class="subcontents">
+<li><a href="#APDialogExtension">APDialogExtension</a></li>
+<li><a href="#APDuplexRequiresFlippedMargin">APDuplexRequiresFlippedMargin</a></li>
+<li><a href="#APHelpBook">APHelpBook</a></li>
+<li><a href="#APICADriver">APICADriver</a></li>
+<li><a href="#APPrinterIconPath">APPrinterIconPath</a></li>
+<li><a href="#APPrinterLowInkTool">APPrinterLowInkTool</a></li>
+<li><a href="#APPrinterPreset">APPrinterPreset</a></li>
+<li><a href="#APPrinterUtilityPath">APPrinterUtilityPath</a></li>
+<li><a href="#APScannerOnly">APScannerOnly</a></li>
+<li><a href="#APScanAppBundleID">APScanAppBundleID</a></li>
+</ul></li>
+<li><a href="#HISTORY">Change History</a></li>
+</ul>
+</div>
+<div class="body">
<h2 class='title'><a name='SYNTAX'>PPD File Syntax</a></h2>
<p>The PPD format is text-based and uses lines of up to 255 characters terminated by a carriage return, linefeed, or combination of carriage return and line feed. The following ABNF definition [<a href="http://tools.ietf.org/html/rfc5234" target="_blank">RFC5234</a>] defines the general format of lines in a PPD file:</p>
<li>Added <tt>cupsProtocol</tt> keyword</li>
</ul>
- </div>
- </body>
+</div>
+</body>
</html>
echo Generating CUPS API help files...
codedoc --section "Programming" \
--title "Developing PostScript Printer Drivers" \
- --css ../doc/cups-printable.css \
--header postscript-driver.header \
--body postscript-driver.shtml \
>../doc/help/postscript-driver.html
codedoc --section "Programming" \
--title "Introduction to the PPD Compiler" \
- --css ../doc/cups-printable.css \
--header ppd-compiler.header \
--body ppd-compiler.shtml \
>../doc/help/ppd-compiler.html
codedoc --section "Programming" \
--title "Developing Raster Printer Drivers" \
- --css ../doc/cups-printable.css \
--header raster-driver.header \
--body raster-driver.shtml \
>../doc/help/raster-driver.html
codedoc --section "Specifications" \
--title "CUPS PPD Extensions" \
- --css ../doc/cups-printable.css \
--header spec-ppd.header \
--body spec-ppd.shtml \
>../doc/help/spec-ppd.html