%!PS-Adobe-3.0
%%BoundingBox: 0 0 612 792
%%Pages: 1
%%LanguageLevel: 1
%%DocumentData: Clean7Bit
%%DocumentSuppliedResources: procset testprint/1.0
%%DocumentNeededResources: font Helvetica Helvetica-Bold Times-Roman
%%Creator: Michael Sweet, Easy Software Products
%%CreationDate: May 11, 1999
%%Title: Test Page
%%EndComments
%%BeginProlog
%%BeginResource procset testprint 1.1 0
%
%   PostScript test page for the Common UNIX Printing System ("CUPS").
%
%   Copyright 1993-2001 Easy Software Products
%
%   These coded instructions, statements, and computer programs are the
%   property of Easy Software Products and are protected by Federal
%   copyright law.  Distribution and use rights are outlined in the file
%   "LICENSE.txt" which should have been included with this file.  If this
%   file is missing or damaged please contact Easy Software Products
%   at:
%
%       Attn: CUPS Licensing Information
%       Easy Software Products
%       44141 Airport View Drive, Suite 204
%       Hollywood, Maryland 20636-3111 USA
%
%       Voice: (301) 373-9603
%       EMail: cups-info@cups.org
%         WWW: http://www.cups.org
%
/OCTANT {			% Draw a color wheel OCTANT...
				% (name) radius r g b OCTANT -
  % Loop through 100 shades...
  0 0.010101 0.98 {
    % Set the color...
    3 index 1 eq		% R == 1?
    3 index 1 eq		% G == 1?
    3 index 1 eq		% B == 1?
    and and {
      0 index 4 index mul 	% R * val
      1 index 4 index mul 	% G * val
      2 index 4 index mul 	% B * val
    } {
      0 index 4 index mul 	% R * val
      1 index neg 1 add	add	% + (1 - val)
      1 index 4 index mul 	% G * val
      2 index neg 1 add	add	% + (1 - val)
      2 index 4 index mul 	% B * val
      3 index neg 1 add	add	% + (1 - val)
    } ifelse
    setrgbcolor

    % Draw a polygon...
    dup 5 index mul dup 0	% x1, y1
    moveto
    0.707106781 mul dup lineto	% x2, y2

    0.010101 add 4 index mul dup % x3
    0.707106781 mul dup lineto	% x3, y3
    0 lineto			% x4, y4
    closepath
    fill
  } for

  % Draw a line around the polygons...
  pop pop pop dup
  0 setgray
  0 0 moveto
  dup 0 lineto
  0.707106781 mul dup lineto
  closepath
  stroke

  % Draw the label...
  0 exch dup -9 div exch	% text offset = 0, -radius/9
  dup 0.923879532 mul		% x = radius * cos(22.5)
  exch 0.382683432 mul		% y = radius * cos(22.5)
  moveto			% position label
  gsave
    22.5 rotate			% rotate label
    rmoveto			% offset label
    show			% show label
  grestore
} bind def
/CENTER {			% Draw centered text
				% (name) CENTER -
  dup stringwidth pop		% Get the width of the string
  0.5 mul neg 0 rmoveto		% Shift left 1/2 of the distance
  show				% Show the string
} bind def
/RIGHT {			% Draw right-justified text
				% (name) RIGHT -
  dup stringwidth pop		% Get the width of the string
  neg 0 rmoveto			% Shift left the entire distance
  show				% Show the string
} bind def
/NUMBER {			% Draw a number
				% power n NUMBER -
  1 index 1 eq {		% power == 1?
    round cvi exch pop		% Convert "n" to integer
  } {
    1 index mul round exch div	% Truncate extra decimal places
  } ifelse
  100 string cvs show		% Convert to a string and show it...
} bind def
/CUPSLOGO {			% Draw the CUPS logo
				% height CUPSLOGO
  % Start with a big C...
  /Helvetica findfont 1 index scalefont setfont
  0 setgray
  0 0 moveto
  (C) show

  % Then "UNIX Printing System" much smaller...
  /Helvetica-Bold findfont 1 index 9 div scalefont setfont
  0.25 mul
  dup dup 2.0 mul moveto
  (UNIX) show
  dup dup 1.6 mul moveto
  (Printing) show
  dup 1.2 mul moveto
  (System) show
} bind def
/ESPLOGO {			% Draw the ESP logo
				% height ESPLOGO
  % Compute the size of the logo...
  0 0
  2 index 1.5 mul 3 index

  % Do the "metallic" fill from 10% black to 40% black...
  1 -0.001 0 {
    dup			% loopval
    -0.15 mul		% loopval * -0.15
    0.9 add		% 0.9 - loopval * 0.15
    setgray		% set gray shade

    0			% x
    1 index neg		% loopval
    1 add		% 1 - loopval
    3 index		% height
    mul			% height * (1 - loopval)
    moveto		% starting point

    dup			% loopval
    3 index		% width
    mul			% loopval * width
    2 index		% height
    lineto		% Next point

    0			% x
    2 index		% height
    lineto		% Next point

    closepath
    fill

    dup			% loopval
    0.15 mul		% loopval * 0.15
    0.6 add		% 0.6 + loopval * 0.15
    setgray

    dup			% loopval
    neg 1 add		% 1 - loopval
    3 index		% width
    mul			% (1 - loopval) * width
    0			% y
    moveto		% Starting point

    2 index		% width
    exch		% loopval
    2 index		% height
    mul			% loopval * height
    lineto		% Next point

    1 index		% width
    0			% y
    lineto		% Next point

    closepath
    fill
  } for

  0 setgray rectstroke

  /Helvetica-BoldOblique findfont 1 index 3 div scalefont setfont
  dup 40 div

  dup 4 mul 1 index 25 mul moveto (E) show
  dup 10 mul 1 index 15 mul moveto (S) show
  dup 16 mul 1 index 5 mul moveto (P) show

  /Helvetica-BoldOblique findfont 2 index 5 div scalefont setfont
  dup 14 mul 1 index 29 mul moveto (asy) show
  dup 20 mul 1 index 19 mul moveto (oftware) show
  dup 26 mul 1 index 9 mul moveto (roducts) show

  pop
} bind def
%%EndResource
%%EndProlog
%%Page: 1 1
gsave

  % Determine the imageable area and device resolution...
  initclip newpath clippath pathbbox	% Get bounding rectangle
  72 div /pageTop exch def		% Get top margin in inches
  72 div /pageRight exch def		% Get right margin in inches
  72 div /pageBottom exch def		% Get bottom margin in inches
  72 div /pageLeft exch def		% Get left margin in inches

  4 setlinewidth			% Draw wide lines
  0 setgray closepath stroke		% Draw a clipping rectangle
  1 setlinewidth			% Draw normal lines

  /pageWidth pageRight pageLeft sub def	% pageWidth = pageRight - pageLeft
  /pageHeight pageTop pageBottom sub def% pageHeight = pageTop - pageBottom

  72 72 dtransform			% Get device resolution per inch
  /yResolution exch abs def		% yResolution = abs(yres)
  /xResolution exch abs def		% xResolution = abs(xres)

  % Figure out the sizes of things...
  /wheelSize				% size of wheels
  pageWidth pageHeight lt
  { pageWidth 9 mul }
  { pageHeight 7 mul }
  ifelse def

  % Create fonts...
  /bigFont /Helvetica-Bold findfont	% bigFont = Helvetica-Bold
  pageHeight 3 mul scalefont def	% size = pageHeight * 3 (nominally 33)

  /mediumFont /Helvetica findfont	% mediumFont = Helvetica
  pageHeight 1.5 mul scalefont def	% size = pageHeight * 1.5 (nominally 16.5)

  /smallFont /Times-Roman findfont	% smallFont = Times-Roman
  pageHeight scalefont def		% size = pageHeight (nominally 11)

  % Offset page to account for lower-left margin...
  pageLeft 72 mul
  pageBottom 72 mul
  translate

  % Draw the color wheel...
  mediumFont setfont			% Font
  0 setgray				% Color

  gsave
    % Position the wheel on the left side...
    pageWidth 18 mul			% x = pageWidth * 1/4 * 72
    pageHeight 54 mul			% y = pageHeight * 3/4 * 72
    translate

    % Size the wheel...
    wheelSize

    % Draw the colors...
    dup (C) exch 0 1 1 OCTANT 45 rotate
    dup (M) exch 1 0 1 OCTANT 45 rotate
    dup (Y) exch 1 1 0 OCTANT 45 rotate
    dup (K) exch 0 0 0 OCTANT 45 rotate
    dup (R) exch 1 0 0 OCTANT 45 rotate
    dup (G) exch 0 1 0 OCTANT 45 rotate
    dup (B) exch 0 0 1 OCTANT 45 rotate
    (W) exch 1 1 1 OCTANT 45 rotate
  grestore

  % Label the color wheel...
  pageWidth 18 mul			% x = pageWidth * 1/4 * 72
  pageHeight 44 mul			% y = pageHeight * 19/32 * 72
  moveto				% Position the text
  (Color Wheel) CENTER			% Show the text centered

  % Draw radial lines...
  gsave
    0 setlinewidth			% 1 pixel lines

    % Position the lines on the left side...
    pageWidth 54 mul			% x = pageWidth * 3/4 * 72
    pageHeight 54 mul			% y = pageHeight * 3/4 * 72
    translate

    % Size the wheel...
    wheelSize

    % Loop at 1 degree increments
    0 1 359 {
      pop				% Discard angle - not used
      0 0 moveto			% Start line at the center
      dup 0 lineto			% Draw to the radius
      1 rotate				% Rotate 1 degree
    } for

    pop					% Discard radius - not needed anymore
    stroke      			% Draw lines...

  grestore

  % Label the lines...
  pageWidth 54 mul			% x = pageWidth * 3/4 * 72
  pageHeight 44 mul			% y = pageHeight * 19/32 * 72
  moveto				% Position the text
  (1 Degree Radial Lines) CENTER	% Show the text centered

  % Imageable area...
  pageHeight 15 mul			% Height of imageable area

  pageWidth 4.5 mul			% x = pageWidth * 1/16 * 72
  pageHeight 35.5 mul			% y = pageHeight * 1/2 * 72
  2 index sub				% y -= height
  pageWidth 28 mul			% width = pageWidth * 1/4 * 72
  3 index				% height
  0.5 setgray rectfill			% Draw a shadow

  pageWidth 4 mul			% x = pageWidth * 1/16 * 72
  pageHeight 36 mul			% y = pageHeight * 1/2 * 72
  2 index sub				% y -= height
  pageWidth 28 mul			% width = pageWidth * 3/8 * 72
  3 index				% height
  4 copy 1 setgray rectfill		% Clear the box to white
  0 setgray rectstroke			% Draw a black box around it...

  pop					% Discard height

  % Label the imageable area...
  pageWidth 4 mul			% x = pageWidth * 1/16 * 72
  pageHeight 37 mul			% y = pageHeight * 1/2 * 72
  moveto				% Position the text
  mediumFont setfont			% Font
  (Imageable Area) show			% Show the text

  smallFont setfont			% Font
  pageWidth 14 mul			% x = pageWidth * 3/16 * 72
  pageHeight 36 mul			% y = pageWidth * 1/2 * 72
  pageHeight -2 mul add			% y -= 2 * smallFont height

  % Page Size inches
  2 copy moveto				% Move to x & y
  (Page Size: ) RIGHT			% Label
  100 pageWidth NUMBER			% pageWidth
  (x) show				% "x"
  100 pageHeight NUMBER			% pageHeight
  (in) show				% "in"

  % Page Size millimeters
  pageHeight sub			% Move down...

  2 copy moveto				% Move to x & y
  10 pageWidth 25.4 mul NUMBER		% pageWidth
  (x) show				% "x"
  10 pageHeight 25.4 mul NUMBER		% pageHeight
  (mm) show				% "mm"

  % Lower-left inches
  pageHeight 2 mul sub			% Move down...

  2 copy moveto				% Move to x & y
  (Lower-Left: ) RIGHT			% Label
  100 pageLeft NUMBER			% pageLeft
  (x) show				% "x"
  100 pageBottom NUMBER			% pageBottom
  (in) show				% "in"

  % Lower-left millimeters
  pageHeight sub			% Move down...

  2 copy moveto				% Move to x & y
  10 pageLeft 25.4 mul NUMBER		% pageLeft
  (x) show				% "x"
  10 pageBottom 25.4 mul NUMBER		% pageBottom
  (mm) show				% "mm"

  % Upper-right inches
  pageHeight 2 mul sub			% Move down...

  2 copy moveto				% Move to x & y
  (Upper-Right: ) RIGHT			% Label
  100 pageRight NUMBER			% pageRight
  (x) show				% "x"
  100 pageTop NUMBER			% pageTop
  (in) show				% "in"

  % Upper-right millimeters
  pageHeight sub			% Move down...

  2 copy moveto				% Move to x & y
  10 pageRight 25.4 mul NUMBER		% pageRight
  (x) show				% "x"
  10 pageTop 25.4 mul NUMBER		% pageTop
  (mm) show				% "mm"

  % Resolution dots-per-inch
  pageHeight 2 mul sub			% Move down...

  2 copy moveto				% Move to x & y
  (Resolution: ) RIGHT			% Label
  1 xResolution NUMBER			% xResolution
  (x) show				% "x"
  1 yResolution NUMBER			% yResolution
  (dpi) show				% "dpi"

  % Resolution dots-per-meter
  pageHeight sub			% Move down...

  moveto				% Move to x & y
  1 xResolution 39.27 mul NUMBER	% xResolution
  (x) show				% "x"
  1 yResolution 39.27 mul NUMBER	% yResolution
  (dpm) show				% "dpm"

  % Interpreter Information...
  pageHeight 15 mul			% Height of interpreter information

  pageWidth 40.5 mul			% x = pageWidth * 9/16 * 72
  pageHeight 35.5 mul			% y = pageHeight * 1/2 * 72
  2 index sub				% y -= height
  pageWidth 28 mul			% width = pageWidth * 1/4 * 72
  3 index				% height
  0.5 setgray rectfill			% Draw a shadow

  pageWidth 40 mul			% x = pageWidth * 9/16 * 72
  pageHeight 36 mul			% y = pageHeight * 1/2 * 72
  2 index sub				% y -= height
  pageWidth 28 mul			% width = pageWidth * 3/8 * 72
  3 index				% height
  4 copy 1 setgray rectfill		% Clear the box to white
  0 setgray rectstroke			% Draw a black box around it...

  pop					% Discard height

  % Label the interpreter info...
  pageWidth 40 mul			% x = pageWidth * 9/16 * 72
  pageHeight 37 mul			% y = pageHeight * 1/2 * 72
  moveto				% Position the text
  mediumFont setfont			% Font
  (Interpreter Information) show	% Show the text

  smallFont setfont			% Font
  pageWidth 49 mul			% x = pageWidth * 11/16 * 72
  pageHeight 36 mul			% y = pageWidth * 1/2 * 72
  pageHeight 2 mul sub			% y -= 2 * smallFont height

  % Language level
  2 copy moveto				% Move to x & y
  (PostScript: ) RIGHT			% Label
  (Level ) show				% "Level "
  1 languagelevel NUMBER		% Language level

  % Version
  pageHeight 2 mul sub			% Move down...
  2 copy moveto				% Move to x & y
  (Version: ) RIGHT			% Label
  version show				% Version
  ( \() show				% " ("
  1 revision NUMBER			% Revision
  (\)) show				% ")"

  % Product
  pageHeight 2 mul sub			% Move down...
  2 copy moveto				% Move to x & y
  (Product: ) RIGHT			% Label
  product show				% Product name

  % Serial Number
  pageHeight 2 mul sub			% Move down...
  2 copy moveto				% Move to x & y
  (Serial #: ) RIGHT			% Label
  1 serialnumber NUMBER			% S/N

  % Draw the label at the top...
  pageWidth 36 mul			% Center of page
  pageHeight 68 mul			% Top of page (15/16ths)
  2 copy moveto				% Position text
  bigFont setfont			% Font
  (Printer Test Page) CENTER		% Show text centered

  % Draw the copyright notice at the bottom...
  pageWidth 36 mul			% Center of page
  pageHeight 10 mul			% Bottom of page
  2 copy moveto				% Position text
  (Printed Using CUPS v1.1.x) CENTER	% Show text centered

  pageHeight 2 mul sub			% Move down...
  2 copy moveto				% Position text
  smallFont setfont			% Font
  (Copyright 1993-2001 Easy Software Products, All Rights Reserved.) CENTER
  pageHeight sub			% Move down...
  2 copy moveto				% Position text
  (CUPS, and the CUPS logo are the trademark property of) CENTER
  pageHeight sub			% Move down...
  2 copy moveto				% Position text
  (Easy Software Products, 44141 Airport View Drive, Suite 204,) CENTER
  pageHeight sub			% Move down...
  2 copy moveto				% Position text
  (Hollywood, Maryland, 20636-3111, USA.) CENTER

  % Then the CUPS logo....
  gsave
    pageWidth 4 mul
    pageHeight 4 mul
    translate
    pageWidth 9 mul CUPSLOGO
  grestore

  % And the ESP logo....
  gsave
    pageWidth 59 mul
    pageHeight 4 mul
    translate
    pageWidth 6 mul ESPLOGO
  grestore
% Show the page...
grestore
showpage
%
% End of "$Id$".
%
%%EOF