%!
+/copyright [
+ (cmyk.{ps,pdf})
+ (v0.1)
+ (Copyright 2019)
+ (Ian Jackson)
+ (GNU AGPL v3+)
+ (NO WARRANTY)
+] def
+
+% cmyk printer sample test
+%
+% Copyright (C) 2019 Ian Jackson
+%
+% This program is free software: you can redistribute it and/or modify
+% it under the terms of the GNU Affero General Public License as
+% published by the Free Software Foundation, either version 3 of the
+% License, or (at your option) any later version.
+%
+% This program 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 Affero General Public License for more details.
+%
+% You can obtain a copy of the GNU Affero General Public License
+% from <http://www.gnu.org/licenses/>.
+
% CYM K
%
% 9^3 0 1 2 9 pagex @ 9 x 9 x 3 = 243
% horiz M } M-C-K grid
% vert' C } M-C-K grid
-% 16^3 x 0 .. 3 1 Y per page
-% 8^3 x 4 .. 7 4 Y per page 8 = 0 2 4 6 8 10 12 15
-% 8 10 13 15
+/debug false def
+%/debug true def
/paperx 595 def
/papery 842 def
% o = outer, i = inner, f = final
-/margox 5 def
-/margoy 5 def
+/margox 2 def
+/margoy 2 def
/margix 2 def
/margiy 2 def
-/margbx 10 def
-/margby 10 def
+/margby 2 def
% strid = stride
/digits [ (0) (1) (2) (3) (4) (5) (6) (7) (8) (9)
(a) (b) (c) (d) (e) (f) ] def
+/cctexty 8 def
+/ccfont /Helvetica findfont cctexty scalefont def
+
/Helvetica findfont texty scalefont setfont
+/ifdebug { debug exch if } def
+
/klist_get {
klist
blackx
blacky knx mul add
get
} def
-/kentry_moveto {
- blackx stridix mul
- blacky neg kmy add stridiy mul
- szfy +0.5 mul add
+/kentry_x {
+ textx
+ magentax stridox mul add
+ blackx stridix mul add
+
+} def
+/kentry_y {
+ blacky neg kmy add stridiy mul
+ cyany neg gm add stridoy mul add
+} def
+
+/cmy_xy2val {
+ maxval gm div mul round cvi
+} def
+
+/maxvalshow {
+ (/) show
+ maxval (_) cvs show
} def
/someyellow {
/szfx stridix margix sub def
/szfy stridiy margiy sub def
- 0 1 gm { /magenta exch def
- 0 1 gm { /cyan exch def
-
- gsave
- textx 0 translate
+ 0 1 gm { /cyany exch def
+ 0 1 kmy { /blacky exch def
- magenta stridox mul
- cyan neg gm add stridoy mul translate
+ 0 1 gm { /magentax exch def
+ 0 1 kmx { /blackx exch def
+ gsave
szfy setlinewidth
-
- 0 1 kmx { /blackx exch def
- 0 1 kmy { /blacky exch def
-
- cyan gn div
- magenta gn div
- yellow gn div
+ kentry_x kentry_y translate
- klist_get base div
+ cyany gm div
+ magentax gm div
+ yellowval maxval div
+ klist_get maxval div
+ { 4 copy } ifdebug
setcmykcolor
- kentry_moveto moveto
-
+ 0 szfy +0.5 mul moveto
szfx 0 rlineto stroke
+ { gsave
+ /Helvetica findfont 6.5 scalefont setfont
+ 0
+ 1 1 4 {
+ index
+ 0.5 ge {
+ pop 1
+ } if
} for
+ setgray
+ 0 1 3 {
+ 6.5 mul 0 exch moveto
+ 20 string cvs show
} for
+ grestore } ifdebug
- grestore
- } for
- } for
-
- gsave
-
- 0 gridoy translate
-
- text_l_p text_u_p and {
- gsave
- 0 0 moveto (K) show
-
- gsave
- 0 stridoy neg translate
-
- 0 1 kmx { /blackx exch def
- 0 1 kmy { /blacky exch def
- kentry_moveto exch 0.65 mul exch moveto
- klist_get digits exch get
- show
- } for
- } for
- grestore
- grestore
- } if
-
- text_u_p {
- gsave
- textx 0 translate
- 0 0 moveto (Y) show ytext show
- 1 1 gm { /magenta exch def
- gm stridox mul 0 moveto
- digits gm get show
- } for
- grestore
+ cyany 0 le blacky 0 le and { % top row
+ 0 setgray
+ 0 stridiy margoy add translate
+ 0 0 moveto
+ text_u
} if
grestore
-} def
-
-/ranges {
-
- 0 1 gm { /yellow exch def
-
- /ytext digits yellow get def
+ } for
+ } for
- someyellow
+ gsave
+ 0 kentry_y translate
+ 0 0 moveto
+ text_l
+ grestore
- finish_page
} for
+ } for
+
+ gsave
+ 0 printareay texty sub translate
+ 0 0 moveto text_ul
+ grestore
} def
start_page
} def
-/base 16 def
+/maxval 8 def
-/gm 15 def
+/gm 8 def
-/knx 2 def
-/kny 2 def
+/knx 1 def
+/kny 3 def
-/klist [ 0 1 2 3 ] def
+/klist [ 0 1 2 ] def
/ylist [ 0 1 2 3 5 8 11 15 ] def
/gridox szox def
/gridoy szoy def
-/text_l_p true def
-/text_u_p true def
+/text_yellow {
+ (Y) show
+ yellowval (_) cvs show
+} def
-ranges
+/text_ul { text_yellow } def
-/ranges2 {
+/text_cyan {
+ (C) show
+ cyany cmy_xy2val (_) cvs show
+} def
+/text_magenta {
+ (M) show
+ magentax cmy_xy2val (_) cvs show
+ magentax gm ge { maxvalshow } if
+} def
-/gm 8 def
+/text_l {
+ 0 texty 0.25 mul translate
+ cyany 0 le {
+ (K) show
+ klist blacky get (_) cvs show
+ 0 texty moveto
+ } if
+ blacky 0 le {
+ text_cyan
+ cyany gm 2 sub ge {
+ gsave
+ ccfont setfont
+ cctexty 0.75 mul texty -0.75 mul translate
+ 90 rotate
+ 0 1 1 { /copyrighty exch def
+ 0 cctexty copyrighty neg mul moveto
+ copyright cyany neg gm add 2 mul copyrighty add get
+ dup stringwidth
+ neg exch neg exch rmoveto
+ show
+ } for
+ grestore
+ } if
+ } if
+} def
+/text_u {
+ text_magenta
+} def
-/gridox szox 2 div margbx sub def
-/gridoy szoy 2 div margby sub def
+/ranges {
+ 0 1 maxval { /yellowval exch def
-0 1 1 { /yellowpage exch def
-0 1 1 { /yellowx exch def
-0 1 1 { /yellowy exch def
+ /ytext { digits yellow get } def
-/yellowix
- yellowpage 4 mul
- yellowy neg 1 add 2 mul add
- yellowx add def
+ someyellow
-gsave
- yellowx gridox margbx add mul
- yellowy gridoy margby add mul
- translate
+ finish_page
+ } for
+} def
+ranges
- /yellow ylist yellowix get def
+/gm 4 def
+/gn 5 def
- /text_l_p yellowx 0 le def
- /text_u_p yellowy 1 ge def
+/knx 2 def
+/kny 1 def
+
+/text_u {
+ yellowy 0 le {
+ magentax 0 le {
+ (K) show
+ klist blackx get (_) cvs show
+ blackx knx 1 sub eq {
+ maxvalshow
+ } if
+ ( ) show
+ } if
+ blackx 0 le {
+ text_magenta
+ magentax gm ge {
+ gsave
+ ( ) show
+ ccfont setfont
+% stridox gn mul stridoy sub 0 translate
+ % stridix 0.5 mul -0.25 cctexty mul 0 exch moveto
+ 0 1 1 {
+ ( ) show
+ copyright exch get
+ show
+ } for
+ grestore
+ } if
+ } if
+ } if
+} def
+/text_ul {
+} def
+/text_l {
+ 0 texty 0.5 mul translate
+ cyany 0 le { 0 texty moveto text_yellow } if
+ 0 0 moveto text_cyan
+} def
+
+/ranges2 {
+
+ /gridoy szoy margby 4 mul sub gn div def
- someyellow
-grestore
+ 0 1 gm { /yellowy exch def
-} for
-} for
-finish_page
-} for
+ /yellowval yellowy cmy_xy2val def
+ /text_u_p yellowy 1 ge def
+ gsave
+ 0
+ yellowy neg gm add gridoy margby add mul
+ translate
+ someyellow
+ grestore
+ } for
+
+ finish_page
} def
-/klist [ 4 5 6 7 ] def ranges2
-/klist [ 8 10 13 15 ] def ranges2
+ /text_l_p true def
+
+/klist [ 3 4 ] def ranges2
+/klist [ 6 8 ] def /text_l_p false def ranges2