|
|
//
|
|
|
// 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"
|
|
|
}
|
|
|
}
|