chiark / gitweb /
preview png, actually make it a png
[pandemic-rising-tide.git] / cmyk.ps
diff --git a/cmyk.ps b/cmyk.ps
index 143a6cd3b64c5787484a615b62643fdb54d12326..73ecfda27ed6ae408ed30407cf03fb61d7905b6d 100644 (file)
--- a/cmyk.ps
+++ b/cmyk.ps
@@ -1,5 +1,31 @@
 %!
 
+/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
@@ -18,9 +44,8 @@
 %          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
 
@@ -181,59 +206,140 @@ start_page
     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 ] 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