chiark / gitweb /
preview png, actually make it a png
[pandemic-rising-tide.git] / cmyk.ps
diff --git a/cmyk.ps b/cmyk.ps
index 922ce85cec7c3188a8390e10291014eb1df7814c..73ecfda27ed6ae408ed30407cf03fb61d7905b6d 100644 (file)
--- a/cmyk.ps
+++ b/cmyk.ps
 %!
 
-/m 16 def
+/copyright [
+    (cmyk.{ps,pdf})
+    (v0.1)
+    (Copyright 2019)
+    (Ian Jackson)
+    (GNU AGPL v3+)
+    (NO WARRANTY)
+] def
 
-/knx 2 def
-/kny 4 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/>.
 
-% o = outer, i = inner, f = final
+%    CYM     K
+%
+%    9^3     0 1 2     9 pagex   @   9 x 9 x 3       = 243
+%
+%    pages Y
+%      horiz M         } M-C-K grid
+%        vert C        } M-C-K grid
+%           veert' K   } M-C-K grid
+%
+%    5^3     3 4       1 page    @   5 x 5 x 5 x 2   = 250
+%    5^3     6 8       1 page    @   5 x 5 x 5 x 2   = 250
+%
+%    pages K
+%      columns K'
+%        vert Y
+%          horiz M     } M-C-K grid
+%            vert' C   } M-C-K grid
+
+/debug false def
+%/debug true def
+
+/paperx 595 def
+/papery 842 def
+
+/margin 18 def
+
+/printareax paperx margin 2 mul sub def
+/printareay papery margin 2 mul sub def
+
+/textx 20 def
+/texty 12 def
+
+/szox printareax textx sub def
+/szoy printareay texty sub def
 
-/szox 595 def
-/szoy 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
 
+/margby 2 def
+
 % strid = stride
 
-/n      m     1 add   def
-/kmx    knx   1 sub   def
-/kmy    kny   1 sub   def
+/digits [ (0) (1) (2) (3) (4) (5) (6) (7) (8) (9)
+          (a) (b) (c) (d) (e) (f) ] def
 
-/stridox  szox  n  div  def
-/stridoy  szoy  n  div  def
+/cctexty 8 def
+/ccfont /Helvetica findfont cctexty scalefont def
 
-/szix  stridox  margox sub  def
-/sziy  stridoy  margoy sub  def
+/Helvetica findfont texty scalefont setfont
 
-/stridix  szix  knx  div def
-/stridiy  sziy  kny  div def
+/ifdebug { debug exch if } def
 
-/szfx  stridix  margix sub  def
-/szfy  stridiy  margiy sub  def
+/klist_get {
+    klist
+        blackx
+        blacky  knx mul add
+       get
+} def
+/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 
 
-0 1 m {                        /yellow  exch def
-    0 1 m {            /magenta exch def
-    0 1 m {            /cyan    exch def
+/cmy_xy2val {
+    maxval gm div  mul  round cvi
+} def
 
-    gsave
+/maxvalshow {
+               (/) show
+               maxval (_) cvs show
+} def
 
-        magenta                        stridox mul
-        cyan    neg m add      stridoy mul  translate
+/someyellow {
+    
+    /gn     gm    1 add   def
+    /kmx    knx   1 sub   def
+    /kmy    kny   1 sub   def
 
-        szfy setlinewidth
+    /stridox  gridox  gn  div  def
+    /stridoy  gridoy  gn  div  def
 
-        0 1 kmx {      /blackx exch def
-        0 1 kmy {      /blacky exch def
+    /szix  stridox  margox sub  def
+    /sziy  stridoy  margoy sub  def
 
-               cyan            n div
-                 magenta       n div
-                 yellow                n div
-                 blackx        knx div
-                 blacky  add   kny div
+    /stridix  szix  knx  div def
+    /stridiy  sziy  kny  div def
 
-                 setcmykcolor
+    /szfx  stridix  margix sub  def
+    /szfy  stridiy  margiy sub  def
+
+    0 1 gm {           /cyany    exch def
+    0 1 kmy {          /blacky   exch def
+
+    0 1 gm {           /magentax exch def
+    0 1 kmx {          /blackx   exch def
+
+    gsave
+        szfy setlinewidth
+        kentry_x kentry_y translate
 
-                blackx                         stridix mul
-                 blacky  neg kmy add           stridiy mul
-                 szfy -0.5 mul add
-                 moveto
+               cyany           gm div
+                 magentax      gm div
+                 yellowval     maxval div
+                klist_get maxval div
+ { 4 copy } ifdebug
+
+                 setcmykcolor
 
+                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
+
+
+
+      cyany 0 le  blacky 0 le  and {  % top row
+          0  setgray
+          0  stridiy margoy add  translate
+         0 0 moveto
+         text_u
+      } if
 
     grestore
 
     } for
     } for
 
+      gsave
+        0  kentry_y  translate
+       0 0 moveto
+       text_l
+      grestore
+
+    } for
+    } for
+
+    gsave
+      0  printareay texty sub  translate
+      0 0 moveto  text_ul
+    grestore
+
+} def
+
+/start_page {
+    margin margin translate
+} def
+start_page
+
+/finish_page {
     0 setgray
 
-    /Helvetica findfont 18 scalefont setfont
-    0 0 moveto
-    (Y) show
-    yellow (___) cvs show
     showpage
+    start_page
+} def
+
+/maxval 8 def
+
+/gm 8 def
+
+/knx 1 def
+/kny 3 def
+
+/klist [ 0 1 2 ] def
+/ylist [ 0 1 2 3 5 8 11 15 ] def
+
+/gridox szox def
+/gridoy szoy def
+
+/text_yellow {
+    (Y) show
+    yellowval (_) cvs show
+} def
+
+/text_ul { text_yellow } def
+
+/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
+
+/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
+
+/ranges {
+    0 1 maxval {               /yellowval  exch def
+
+        /ytext { digits yellow get } def
+
+        someyellow
+
+    finish_page
+    } for
+} def
+ranges
+
+/gm 4 def
+/gn 5 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
+
+  0 1 gm { /yellowy exch def
+
+    /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
+
+  /text_l_p true  def  
 
-} for
+/klist [ 3 4 ] def  ranges2
+/klist [ 6 8 ] def  /text_l_p false def  ranges2