| // | |
| // PPD file compiler test data file for CUPS. | |
| // | |
| // Copyright © 2007-2011 by Apple Inc. | |
| // Copyright © 1997-2003 by Easy Software Products. | |
| // | |
| // Licensed under Apache License v2.0. See the file "LICENSE" for more | |
| // information. | |
| // | |
| /* | |
| * C-style comments are supported. | |
| */ | |
| // | |
| // C++-style comments are supported. | |
| // | |
| // | |
| // Include the common media size definitions... | |
| // | |
| // #include directives support both <name> to include a standard file | |
| // and "name" or just name without the quotes for a local file. Local | |
| // files resolve relative to the current file's path. Unlike C/C++, | |
| // #include <name> does not look in multiple directories, and | |
| // #include "name" does not look in the standard directory. | |
| // | |
| #include <media.defs> | |
| // | |
| // Include the CUPS raster definitions... | |
| // | |
| #include <raster.defs> | |
| // | |
| // Include the standard CUPS fonts... | |
| // | |
| #include <font.defs> | |
| // | |
| // Define variables using the #define directive. In this case we | |
| // are defining constants for the model number, which is used by | |
| // our imaginary rastertofoo filter to determine which model-specific | |
| // features to use/support. | |
| // | |
| #define MODEL_BW 0 | |
| #define MODEL_COLOR 1 | |
| #define MODEL_LASER 0 | |
| #define MODEL_PHOTO 2 | |
| // | |
| // Media sizes are defined using the #media directive. The order of | |
| // values is: size name/text, width, length. | |
| // | |
| // "Size name" is an alphanumeric string of up to 40 characters as | |
| // defined by the Adobe PPD specification. | |
| // | |
| // "Size text" is a text string of up to 80 characters as defined by | |
| // the Adobe PPD specification. | |
| // | |
| // "Width" and "length" are the width and length of the media size. | |
| // Numbers by themselves represent points (72 points = 1 inch). The | |
| // suffixes "cm", "ft", "in", "m", "mm", and "pt" are recognized to | |
| // specify centimeters, feet, inches, meters, millimeters, and points, | |
| // respectively. | |
| // | |
| #media "FooLetter/Foo Letter" 8in 10in | |
| #media "FooPhoto/Foo Photo" 200mm 300mm | |
| // | |
| // Message catalogs can be included using #po... | |
| // | |
| #po fr foo-fr.po | |
| // | |
| // Specify that the drivers use all of the standard base fonts... | |
| // | |
| Font * | |
| // | |
| // All copyright lines are put at the top of the PPD file in order | |
| // of their appearance. Copyright text can span multiple lines and | |
| // will be properly included in the PPD file with comment prefixes | |
| // on each line. | |
| // | |
| // First an MIT-style copyright/license notice... | |
| // | |
| Copyright "Copyright 2007 by Foo Industries." | |
| Copyright " | |
| Permission is granted for redistribution of this file as long as | |
| this copyright notice is intact and the contents of the file are | |
| not altered in any way from their original form. | |
| Permission is hereby granted, free of charge, to any person | |
| obtaining a copy of this software and associated documentation | |
| files (the \"Software\"), to deal in the Software without | |
| restriction, including without limitation the rights to use, | |
| copy, modify, merge, publish, distribute, sublicense, and/or | |
| sell copies of the Software, and to permit persons to whom the | |
| Software is furnished to do so, subject to the following | |
| conditions: | |
| The above copyright notice and this permission notice shall be | |
| included in all copies or substantial portions of the Software. | |
| THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, | |
| EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | |
| OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |
| NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | |
| HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | |
| WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |
| FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | |
| OTHER DEALINGS IN THE SOFTWARE. | |
| " | |
| // | |
| // Then a GPL notice... | |
| // | |
| Copyright "Copyright 2007 by Foo Industries." | |
| Copyright " | |
| This software is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU General Public License as | |
| published by the Free Software Foundation; either version 2 of | |
| the License, or (at your option) any later version. | |
| This software is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| GNU General Public License for more details. | |
| You should have received a copy of the GNU General Public | |
| License along with this software; if not, write to the Free | |
| Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
| MA 02111 USA | |
| " | |
| // | |
| // All printer drivers must define the manufacturer, model, PC | |
| // filename, and version strings; since this test file contains | |
| // drivers for an imaginary manufacturer "Foo", all of the drivers | |
| // listed in this file share common manufacturer and version | |
| // strings. | |
| // | |
| Manufacturer "Foo" | |
| Version 1.0 | |
| // | |
| // Printer drivers can access driver-specific attributes in a PPD | |
| // file; these attributes are specified using lines of the form: | |
| // | |
| // Attribute name selector value | |
| // | |
| // "Name" is the name of the attribute and should start with either | |
| // the "cups" prefix or the name of the vendor, e.g. "hpFoo", | |
| // "epsonBar", etc. The name can be any alphanumeric character (a-z, | |
| // A-Z, and 0-9) and cannot be a common prefix of another attribute, | |
| // e.g. "fooLines" and "fooLinesPerInch" cannot be in the same file. | |
| // | |
| // "Selector" is a selector string containing any characters except | |
| // colon (:). Typically this will be one or more keywords separated | |
| // by the forward slash (/), however the empty string ("") can be used | |
| // to omit the selector. | |
| // | |
| // "Value" is a quoted value string that can contain any printable | |
| // characters except the double quote ("). Hexadecimal numbers | |
| // inside angle brackets (<xx>) can be used to substitute escape | |
| // codes and other special characters. | |
| // | |
| Attribute fooOutputFormat "" "PCL" | |
| Attribute fooPJL Begin "<1B>%-12345X@PJL<0D0A>" | |
| Attribute fooPJL Enter/PCL "@PJL ENTER LANGUAGE=PCL<0D0A>" | |
| Attribute fooPJL End "<1B>%-12345X@PJL END JOB<0D0A>" | |
| // | |
| // Most printer drivers use filters; exceptions include PostScript | |
| // printers and PPD files for software RIPs. | |
| // | |
| // The format is: | |
| // | |
| // Filter mime-type cost program | |
| // | |
| // The "mime-type" field defines the MIME type that the filter program | |
| // accepts; for CUPS raster printer drivers, this will be | |
| // "application/vnd.cups-raster". | |
| // | |
| // The "cost" field defines the relative cost of the filter in terms of | |
| // both CPU and memory usage, and is used to limit the number of | |
| // simultaneous jobs in some configurations. Most raster filters should | |
| // have a cost of 100, unless the filter does no dithering - then a cost | |
| // of 33 is more appropriate. | |
| // | |
| // The "program" field defined the filter program to run; use the null | |
| // filter "-" to define a MIME type that the printer accepts directly. | |
| // If no path information is provided, then the program will be run | |
| // from the standard CUPS filter directory, usually | |
| // /usr/lib/cups/filter. | |
| // | |
| // When compiling PPD files for PostScript capable devices that use | |
| // additional filters, add a null filter for the MIME type | |
| // "application/vnd.cups-postscript" so that printer commands, user | |
| // job filters, and page markings can be added to the PostScript | |
| // output that is sent to the printer. | |
| // | |
| Filter application/vnd.cups-raster 100 rastertofoo | |
| // | |
| // Attributes are included thusly... | |
| // | |
| Attribute cupsIPPReason "com.foo-serious-error/A Serious Error" "http://foo.com/serious.html" | |
| // | |
| // Curley braces are used for grouping common data and for isolating | |
| // individual printer models. All data values are inherited *except* | |
| // for the PCFilename and ModelName strings. | |
| // | |
| { | |
| // | |
| // Define two printer drivers that support only the FooLetter and | |
| // FooPhoto media size. One is color, the other is black-and-white. | |
| // | |
| // Both printers share two MediaSize definitions; the name listed | |
| // after the MediaSize keyword must be one of the Adobe standard | |
| // names listed in the PPD specification or any named size defined | |
| // using the #media directive. | |
| // | |
| // Default options are indicated by placing an asterisk (*) before | |
| // the keyword. | |
| // | |
| // For custom size and margin specification, see the next group of | |
| // printer drivers. | |
| // | |
| MediaSize FooLetter | |
| *MediaSize FooPhoto | |
| // | |
| // These imaginary printers support printing at 300, 600x300, | |
| // and 600 DPI. We'll use the old-style Resolution convenience | |
| // keyword which accepts the following parameters: colorspace/ | |
| // order, bits-per-color, row count, row feed, row step, and | |
| // name/text. | |
| // | |
| // The name must be of the form NNNsuffix or NNNxMMMsuffix, | |
| // where NNN and MMM represent the X and Y resolution in dots | |
| // per inch. | |
| // | |
| Resolution - 8 0 0 0 "300dpi/300 DPI" | |
| Resolution - 8 0 0 0 "600x300dpi/600 x 300 DPI" | |
| *Resolution - 8 0 0 0 "600dpi/600 DPI" | |
| // | |
| // One printer is grayscale only, and the other does grayscale | |
| // and color. Define the grayscale color model for both printers | |
| // using the old-style ColorModel convenience keyword which | |
| // accepts the name/text, colorspace, color order, and compression | |
| // parameters. | |
| // | |
| ColorModel Gray/Grayscale w chunked 0 | |
| { | |
| // | |
| // The first sub-group contains the grayscale printer, which | |
| // only needs the model name, PC filename, and model number | |
| // values set... | |
| // | |
| // The ModelName keyword defines the string that is shown to | |
| // the user. | |
| // | |
| ModelName "Mono Photo Printer" | |
| // | |
| // The ModelNumber keyword defines the cupsModelNumber | |
| // attribute value. We use the "(name name)" notation | |
| // to perform a bitwise OR of the #define'd constants. | |
| // | |
| ModelNumber ($MODEL_BW $MODEL_PHOTO) | |
| // | |
| // The PCFileName keyword defines the filename of the PPD | |
| // file and should be 8 characters or less + the .ppd | |
| // extension. | |
| // | |
| PCFileName "foogphot.ppd" | |
| } | |
| { | |
| // | |
| // The second sub-group contains the color printer, which | |
| // needs another ColorModel definition along with the model | |
| // name, PC filename, and model number values. For fun, we'll | |
| // add some input slots (paper trays) as well. | |
| // | |
| // The ModelName keyword defines the string that is shown to | |
| // the user. | |
| // | |
| ModelName "Color Photo Printer" | |
| // | |
| // The ModelNumber keyword defines the cupsModelNumber | |
| // attribute value. We use the "(name name)" notation | |
| // to perform a bitwise OR of the #define'd constants. | |
| // | |
| ModelNumber ($MODEL_COLOR $MODEL_PHOTO) | |
| // | |
| // The PCFileName keyword defines the filename of the PPD | |
| // file and should be 8 characters or less + the .ppd | |
| // extension. | |
| // | |
| PCFileName "foocphot.ppd" | |
| // | |
| // This printer does color printing, too, so add it and make | |
| // RGB the default... | |
| // | |
| ColorDevice Yes | |
| *ColorModel RGB/Color rgb chunked 0 | |
| // | |
| // The old-style InputSlot keyword accepts tray definitions | |
| // of the form: | |
| // | |
| // InputSlot position name/text | |
| // | |
| InputSlot 0 "Upper/Main Paper Tray" | |
| InputSlot 1 "LargeCapacity/Large Paper Tray" | |
| } | |
| } | |
| { | |
| // | |
| // Define two printer drivers that support two typical laser | |
| // printers with custom page sizes. One is color, the other is | |
| // black-and-white. | |
| // | |
| // Both printers share several MediaSize definitions and support | |
| // custom page sizes from 3x5 to 13x19 inches. | |
| // | |
| // All US media sizes use hardware margins of 0.25 inches on the sides | |
| // and 12 points (1/6th inch) at the top and bottom. European sizes | |
| // and custom sizes use margins of 12 points all around. | |
| // | |
| // The order of the HWMargins numbers are left, bottom, right, and top. | |
| // The current HWMargins values are used when defining each media size. | |
| // The last HWMargins values are used for custom page size margins. | |
| // | |
| HWMargins 0.25in 12pt 0.25in 12pt | |
| *MediaSize Letter | |
| MediaSize Legal | |
| MediaSize Tabloid | |
| MediaSize TabloidExtra | |
| HWMargins 12pt 12pt 12pt 12pt | |
| MediaSize A4 | |
| MediaSize A3 | |
| // | |
| // Specify that custom/variable paper sizes are supported, and the | |
| // range of sizes that are supported... | |
| // | |
| VariablePaperSize Yes | |
| MinSize 3in 5in | |
| MaxSize 13in 19in | |
| // | |
| // These imaginary printers support printing at 600 and 1200 DPI. | |
| // We'll use the new Option and Choice keywords to define the | |
| // Resolution options... | |
| // | |
| // Option option-name option-text option-type | |
| // Choice choice-name choice-text code | |
| // | |
| // "Option-type" is the type of option: boolean, pickone, or pickmany. | |
| // | |
| Option Resolution PickOne AnySetup 10 | |
| Choice "600dpi/600 DPI" "<</HWResolution[600 600]/cupsBitsPerColor 8>>setpagedevice" | |
| Choice "1200dpi/1200 DPI" "<</HWResolution[1200 1200]/cupsBitsPerColor 8>>setpagedevice" | |
| // | |
| // One printer is grayscale only, and the other does grayscale | |
| // and color. Define the grayscale color model for both printers | |
| // using the new Option and Choice keywords. | |
| // | |
| Option "ColorModel/Color Mode" PickOne AnySetup 10 | |
| Choice Gray/Grayscale "<</cupsColorSpace $CUPS_CSPACE_W>>setpagedevice" | |
| // | |
| // Both printers provide two paper trays, which we'll define using | |
| // the new Option and Choice keywords... | |
| // | |
| Option "InputSlot/Input Slot" PickOne AnySetup 10 | |
| Choice "Upper/Main Paper Tray" "<</MediaPosition 0>>setpagedevice" | |
| Choice "LargeCapacity/Large Paper Tray" "<</MediaPosition 1>>setpagedevice" | |
| // | |
| // Both printers support duplexing... | |
| // | |
| // The Duplex keyword accepts values of "none" (no duplexing capability), | |
| // "normal" (standard duplexing capability), and "flip" (auto-duplex that | |
| // requires the back side to be flipped by the RIP...) | |
| // | |
| Duplex normal | |
| { | |
| // | |
| // The first sub-group contains the grayscale printer, which | |
| // only needs the model name, PC filename, and model number | |
| // values set... | |
| // | |
| // The ModelName keyword defines the string that is shown to | |
| // the user. | |
| // | |
| ModelName "Mono Laser Printer" | |
| // | |
| // The ModelNumber keyword defines the cupsModelNumber | |
| // attribute value. We use the "(name name)" notation | |
| // to perform a bitwise OR of the #define'd constants. | |
| // | |
| ModelNumber ($MODEL_BW $MODEL_LASER) | |
| // | |
| // The PCFileName keyword defines the filename of the PPD | |
| // file and should be 8 characters or less + the .ppd | |
| // extension. | |
| // | |
| PCFileName "fooglasr.ppd" | |
| } | |
| { | |
| // | |
| // The second sub-group contains the color printer, which | |
| // needs another ColorModel definition along with the model | |
| // name, PC filename, and model number values. | |
| // | |
| // The ModelName keyword defines the string that is shown to | |
| // the user. | |
| // | |
| ModelName "Color Laser Printer" | |
| // | |
| // The ModelNumber keyword defines the cupsModelNumber | |
| // attribute value. We use the "(name name)" notation | |
| // to perform a bitwise OR of the #define'd constants. | |
| // | |
| ModelNumber ($MODEL_COLOR $MODEL_LASER) | |
| // | |
| // The PCFileName keyword defines the filename of the PPD | |
| // file and should be 8 characters or less + the .ppd | |
| // extension. | |
| // | |
| PCFileName "fooclasr.ppd" | |
| // | |
| // This printer does color printing, too, so add it and make | |
| // RGB the default... | |
| // | |
| ColorDevice Yes | |
| Option "ColorModel/Color Mode" PickOne AnySetup 10 | |
| *Choice RGB/Color "<</cupsColorSpace $CUPS_CSPACE_RGB>>setpagedevice" | |
| } | |
| } |