diff options
Diffstat (limited to 'Master/xemtex/gslib/stcinfo.ps')
-rw-r--r-- | Master/xemtex/gslib/stcinfo.ps | 800 |
1 files changed, 0 insertions, 800 deletions
diff --git a/Master/xemtex/gslib/stcinfo.ps b/Master/xemtex/gslib/stcinfo.ps deleted file mode 100644 index c910f0d9435..00000000000 --- a/Master/xemtex/gslib/stcinfo.ps +++ /dev/null @@ -1,800 +0,0 @@ -% Copyright (C) 1995 Aladdin Enterprises. All rights reserved -% -% This program 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 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 General -% Public License for more details. -% -% You should have received a copy of the GNU General Public License along -% with this program; if not, write to the Free Software Foundation, Inc., -% 59 Temple Place, Suite 330, Boston, MA, 02111-1307. - -% $Id: stcinfo.ps,v 1.2.6.1.2.1 2003/04/12 14:02:39 giles Exp $ -% stcinfo.ps -% Epson Stylus-Color Printer-Driver - -% The purpose of this file is to print & show Parameters of the -% stcolor-driver. If not run on ghostscript/stcolor, it prints -% something like a color-chart. - -% use either existing STCinfo-dictionary, retrieve new one or create dummy - -statusdict begin product end -dup (Ghostscript) eq 1 index (Aladdin Ghostscript) eq or -exch (AFPL Ghostscript) eq or{ - - currentdevice getdeviceprops .dicttomark - dup /Name get (stcolor) eq /STCi_onstc exch def - /STCinfo where {/STCinfo get exch pop} if - /STCinfo exch def - -}{ - - /STCinfo 10 dict def - STCinfo begin /Name (unknown) def end - /STCi_onstc false def - -}ifelse - -% Next Block are procedures to generate the color-triangles. -% you may wish to separate them, just look ahead for the name -% given in the next line to achieve that. -% Begin: colortri_procedures - -% Plot the CIE-XY-triangle (or something like that) - -% /colortri_mat Conversion matrix RGB -> XYZ -% /colortri_bg procedure, that takes X/Y-Values and delivers the -% "background color" as RGB-Values, default is: -% {pop pop 0.85 dup dup} - -% The default matrix was taken from: -% Color spaces FAQ - David Bourgin -% Date: 15/6/94 (items 5.3 and 6 updated) -% Last update: 29/6/94 - - /colortri_mat [ % RGB -> CIE XYZitu601-1 (D65) - 0.4306 0.3415 0.1784 - 0.2220 0.7067 0.0713 - 0.0202 0.1295 0.9394 - ] def - - /colortri_bg {pop pop 0.85 dup dup} bind def - - -% +---------------------------------------------------------------------+ -% | Besides from fixing bugs, nothing should be changed below this line | -% +---------------------------------------------------------------------+ - - -% Arbitrary operation on a pair of vectors, *CHANGES* 1st. -% invoke: Vaccu Vop op vop - /vop { - bind 0 1 3 index length 1 sub { - 3 index 1 index get 3 index 2 index get 3 index exec 4 index 3 1 roll put - } for pop pop - } bind def - - /vsub { {sub} vop } bind def % subtract two vectors - /vmul { {mul} vop } bind def % multiply two vectors - -% Compute sum of vectors elements - /vsum {0.0 exch{add}forall} bind def - - -% Sum up products of elements - /veqn { [ 3 -1 roll {} forall ] exch vmul vsum } bind def - -% Find index of |maximum| in array - /imax { - dup 0 get abs 0 exch % array i v[i] - 1 1 4 index length 1 sub { - 3 index 1 index get abs dup 3 index gt {4 2 roll}if pop pop - } for - 3 -1 roll pop - } bind def - -% Procedure to *CHANGE* RGB-Values into XYZ-Values - /rgb2xyz { - 0 3 6 { colortri_mat exch 3 getinterval 1 index veqn exch } for astore - } bind def - -% Procedure to *CHANGE* transform rgb->xy - /rgb2xy { - rgb2xyz - dup 0 get 1 index 1 get 2 index vsum % XYZ X Y sum - dup 0 ne { - exch 1 index div 3 1 roll div % XYZ y x - 2 index exch 0 exch put % xYZ y - 1 index exch 1 exch put % xyZ - }{ - pop pop pop dup 0 0 put dup 0 1 put - } ifelse - 0 2 getinterval - } bind def - -% So here we go with our procedure - -/colortri { %Usage: box #pixels - save - 1 index type /arraytype eq {exch 8}{3 1 roll} ifelse % Default scale - /colortri_scale exch def - /colortri_box exch def - - -% Prepare some useful constants for xy -> RGB conversion - - /colsum [ % Array with column-sums - 0 1 2{0 exch 3 1 index 6 add{colortri_mat exch get add}for}for - ] def - - /Xrow colortri_mat 0 3 getinterval def % two rows from colortri_mat - /Yrow colortri_mat 3 3 getinterval def - -% Avoid allocating new arrays - /xcoeff 3 array def - /ycoeff 3 array def - -% Procedure to derive RGB-Values form X,Y - /xy2rgb{ aload pop - dup dup dup ycoeff astore colsum vmul Yrow vsub imax - 3 index dup dup xcoeff astore colsum vmul Xrow vsub imax - 3 -1 roll 1 index 1 index gt{ - xcoeff ycoeff /xcoeff exch def /ycoeff exch def pop 3 -1 roll pop - }{ - 3 1 roll pop pop - } ifelse - 1e-6 lt { % No Pivot ? - pop colortri_bg xcoeff astore pop - }{ % Have a Pivot - dup ycoeff exch get neg - 0 1 2 { dup ycoeff exch get 2 index div ycoeff 3 1 roll put} for - pop ycoeff 1 index 0 put - - xcoeff 1 index get - 0 1 2 { - ycoeff 1 index get 2 index mul xcoeff 2 index get add - xcoeff 3 1 roll put - } for - pop xcoeff 1 index 0 put - xcoeff imax 1e-6 lt { % no Pivot ? - pop pop colortri_bg xcoeff astore pop - }{ - dup 2 index or 3 exch sub - xcoeff 1 index get xcoeff 3 index get div neg - xcoeff exch 3 index exch put - xcoeff 1 index 1 put - ycoeff exch get ycoeff 2 index get xcoeff 4 -1 roll get mul add - xcoeff 3 1 roll put - 0 1 2 { - xcoeff exch get dup -0.0015 lt exch 1.0015 gt or { - colortri_bg xcoeff astore dup exit - } if - } for - pop pop xcoeff - } ifelse - } ifelse - } bind def - -% Compute the displayed range - [ 1 1 1 ] rgb2xy - dup 0 get /colortri_x0 exch def /colortri_dx colortri_x0 def - 1 get /colortri_y0 exch def /colortri_dy colortri_y0 def - [[0 0 1][0 1 0][0 1 1][1 0 0][1 0 1][1 1 0]] { - rgb2xy - dup 0 get - dup colortri_x0 lt {/colortri_x0 1 index def}if - dup colortri_dx gt {/colortri_dx 1 index def}if - pop 1 get - dup colortri_y0 lt {/colortri_y0 1 index def}if - dup colortri_dy gt {/colortri_dy 1 index def}if - pop - } forall - colortri_dx colortri_x0 sub /colortri_dx exch def - colortri_dy colortri_y0 sub /colortri_dy exch def -% - -% determine the scale - colortri_box 2 get colortri_box 0 get sub colortri_dx div % fx - colortri_box 3 get colortri_box 1 get sub colortri_dy div % fx fy - gt { % fy limits - colortri_box 3 get colortri_box 1 get sub - dup colortri_dx mul colortri_dy div exch - }{ % fx limits - colortri_box 2 get colortri_box 0 get sub - dup colortri_dy mul colortri_dx div - } ifelse - dtransform abs colortri_scale div cvi /colortri_ny exch def - abs colortri_scale div cvi /colortri_nx exch def - colortri_nx colortri_scale mul colortri_ny colortri_scale mul - idtransform abs exch abs exch - colortri_box 0 get colortri_box 2 get 1 index sub 3 index sub 2 div add - colortri_box 1 get colortri_box 3 get 1 index sub 3 index sub 2 div add - transform .5 add cvi exch .5 add cvi exch itransform - translate scale - -% String & indices - /colortri_tmp colortri_nx 3 mul string def - /colortri_dx colortri_dx colortri_nx 1 sub div def - /colortri_dy colortri_dy colortri_ny 1 sub div def - /colortri_xy [ colortri_x0 colortri_y0 ] def - /colortri_ie colortri_tmp length 3 sub def - - colortri_nx colortri_ny 8 [ colortri_nx 0 0 colortri_ny 0 0 ] - { - colortri_xy 0 colortri_x0 put - 0 3 colortri_ie { - colortri_tmp exch % buf ir - colortri_xy xy2rgb % buf ir rgb buf ib - 2 index 2 index 2 add 2 index 2 get 255 mul cvi put - 2 index 2 index 1 add 2 index 1 get 255 mul cvi put - 0 get 255 mul cvi put - colortri_xy dup 0 exch 0 get colortri_dx add put - }for - colortri_xy dup 1 exch 1 get colortri_dy add put - colortri_tmp - } bind - false 3 colorimage - restore -} bind def - -% [ newpath clippath pathbbox ] colortri showpage % standalone usage - -% End: colortri_procedures - -% The next section is a group of procedures, that I for myself -% do no more fully understand, but they do the Job. - -% Begin: stcinfo_procedures_1 - -% fetch a parameter from the dictionary -/STCiget { STCinfo exch get } bind def - -% action upon ProcessColorModel -/STCimode { - /ProcessColorModel STCiget dup - /DeviceCMYK eq{pop 2}{/DeviceRGB eq{1}{0}ifelse}ifelse get exec -} bind def - -% print given number of blanks -/STCipspace { - dup 0 gt{ 1 exch 1 exch { pop ( ) print}for }{ pop } ifelse -} bind def - -% print right or left-justified text -/STCiprint { - dup 0 gt { dup 2 index length sub STCipspace } if - 1 index print - dup 0 lt { neg dup 2 index length sub STCipspace } if - pop pop -} bind def - -% floating-point to fixed-length-string conversion - -/STCicvs { % number -> string - -% Prepare the result - 8 string dup 0 ( ) putinterval - exch - -% Make it unsigned - dup 0 lt {neg(-)}{( )}ifelse 0 get exch - - dup 1000 lt 1 index 0 eq 2 index 0.001 ge or and { % floating point - (e+) 0 - }{ % engineering - 0 { - 1 index 1000.0 ge - {3 add exch 1000 div exch} - {1 index 1 lt {3 sub exch 1000 mul exch}{exit}ifelse} - ifelse - }loop - dup 0 lt {neg(e-)}{(e+)}ifelse exch - }ifelse - -% string sign num esig e - -% always up to three Integer Digits plus sign - 2 index cvi 3 { % string sign num esig e int ind - 1 index 10 div cvi dup 10 mul 3 index exch sub cvi - (0123456789) exch get 8 index exch 3 index exch put - 3 -2 roll 1 sub exch pop dup 0 eq 2 index 0 eq or {exit} if - } loop exch pop % string sign num esig e ind - 5 index exch 6 -1 roll put % string num esig e - -% print either fraction or exponent - dup 0 eq { pop pop dup cvi sub % String fraction - - dup 0.0 ne { % Fraction present - 0.0005 add 1 index 4 (.) putinterval - 5 1 7 { % string frac ind - exch 10 mul dup cvi exch 1 index sub % string ind ic nfrac - exch (0123456789) exch get 3 -1 roll % string nfrac chr ind - exch 3 index 3 1 roll put - } for - } if - pop - - }{ 3 -1 roll pop % string esig e - - exch 2 index exch 4 exch putinterval - 7 -1 6 { % string n i - 1 index 10 div cvi dup 10 mul 3 index exch sub cvi % string n i n/10 - (0123456789) exch get 4 index exch 3 index exch put - exch pop exch pop - } for - pop - } ifelse - -} bind def - -% compute colorvalue-steps from transfer & coding -/STCisteps { % xfer, coding => X-values, Y-Values -% 2^nbits - 2 /BitsPerComponent STCiget dup 11 gt { pop 11 } if exp cvi - -% X & Y - Arrays (stack: xv:4 yv:3 xfer:2 coding:1 2^ni:0) - dup 1 add array 1 index array 5 2 roll - -% compute GS-Color-Value according to the coding-array - - 1 index null eq { % no coding present - - 0 1 2 index 1 sub { - dup 6 index exch dup 4 index div put - 4 index exch dup 3 index 1 sub div put - } for - - }{ % coding-array given - - 1.0 1 index 1 sub div % y step - 0 % current index - 0 1 4 index 1 sub { % over indices - dup 3 index mul - { - dup 3 index 1 add dup 8 index length ge {pop pop exit} if % i y - 7 index exch get le {exit} if - 2 index 1 add 3 1 roll 4 -1 roll pop - } loop - 5 index 3 index get sub - 5 index 3 index 1 add get 6 index 4 index get sub div - 2 index add 5 index length 1 sub div - 2 copy exch dup 0 eq { - 10 index exch 0.0 put pop - }{ - dup 10 index exch 1 sub get 3 -1 roll add 2 div - 10 index 3 1 roll put - }ifelse - 7 index 3 1 roll put - } for % over indices - pop pop - } ifelse - 4 index 1 index 1.0 put - -% Replace the raw y-values by those computed from the transfer-array - - 0 1 2 index 1 sub { % over indices, 2nd - dup 5 index exch get - dup 5 index length 1 sub mul cvi % -> iy - 5 index 1 index get - 1 index 1 add 7 index length lt { - dup 7 index 3 index 1 add get exch sub - 3 index 3 index 9 index length 1 sub div sub mul - 7 index length 1 sub mul add - } if - exch pop exch pop 5 index 3 1 roll put - } for % over indices, 2nd - - pop pop pop -} bind def - -/STCibar { % Window X-Values proc => Window - 0 1 3 index length 2 sub { - dup 3 index exch get exch - 1 add 3 index exch get - dup 2 index add 2 div 3 index exec % Color to average - 4 index 2 get 5 index 0 get sub exch 1 index mul 5 index 0 get add 3 1 roll - mul 4 index 0 get add 4 index 3 get 5 index 1 get - newpath - 2 index 1 index moveto - 3 index 1 index lineto - 3 index 2 index lineto - 2 index 2 index lineto - closepath fill - pop pop pop pop - } for - pop pop - 0 setgray - newpath - dup 0 get 1 index 1 get moveto - dup 2 get 1 index 1 get lineto - dup 2 get 1 index 3 get lineto - dup 0 get 1 index 3 get lineto - closepath stroke - pop -} bind def - -% End: stcinfo_procedures_1 - -% Begin: stcinfo_preparation - -% Compute used area from clippath - -/STCi_clip [ - newpath clippath pathbbox - 2 sub 4 1 roll 2 sub 4 1 roll 2 add 4 1 roll 2 add 4 1 roll -] def - -% -% Perpare the texual messages, assume no stcolor if this fails -% -{ - /STCi_stopped % A Special Mark - -% Textual Parameters (an array of pairs of strings) - /STCi_l1 0 def - /STCi_l2 0 def - /STCi_text [ -% Driver-Name & Version - (Parameters of) - /Name STCiget length /Version STCiget length add 1 add string - dup 0 /Name STCiget putinterval dup /Name STCiget length (-)putinterval - dup /Name STCiget length 1 add /Version STCiget putinterval -% Dithering-Algorithm - (Dithering) - /Dithering STCiget - [{( \(Monochrome\))}{( \(RGB\))}{( \(CMYK\))}] STCimode - dup length 2 index length add string exch 1 index exch - 3 index length exch putinterval dup 3 1 roll exch 0 exch putinterval -% Flags for the algorithm - (Flag4-0) 5 string - dup 0 /Flag4 STCiget {(T)}{(f)} ifelse putinterval - dup 1 /Flag3 STCiget {(T)}{(f)} ifelse putinterval - dup 2 /Flag2 STCiget {(T)}{(f)} ifelse putinterval - dup 3 /Flag1 STCiget {(T)}{(f)} ifelse putinterval - dup 4 /Flag0 STCiget {(T)}{(f)} ifelse putinterval - -% Bits Per Pixel & Bits Per Component - (BitsPerPixel) 10 string % (nn -> nxnn) - /BitsPerPixel STCiget 1 index cvs length % string used - dup 2 index exch ( -> ) putinterval 4 add dup 2 add exch 2 index exch - [{(1x)}{(3x)}{(4x)}] STCimode putinterval % String used - /BitsPerComponent STCiget 2 index 2 index 2 getinterval cvs length add - 0 exch getinterval - - () () -% ColorAdjustMatrix - (ColorAdjustMatrix) - /ColorAdjustMatrix STCiget dup null eq { - pop (default) - }{ - { STCicvs } forall - [{ % Monochrome - 26 string - dup 0 6 -1 roll putinterval dup 8 ( ) putinterval - dup 9 5 -1 roll putinterval dup 17 ( ) putinterval - dup 18 4 -1 roll putinterval - }{ % RGB - 26 string - dup 0 12 -1 roll putinterval dup 8 ( ) putinterval - dup 9 11 -1 roll putinterval dup 17 ( ) putinterval - dup 18 10 -1 roll putinterval - - () 26 string - dup 0 11 -1 roll putinterval dup 8 ( ) putinterval - dup 9 10 -1 roll putinterval dup 17 ( ) putinterval - dup 18 9 -1 roll putinterval - - () 26 string - dup 0 10 -1 roll putinterval dup 8 ( ) putinterval - dup 9 9 -1 roll putinterval dup 17 ( ) putinterval - dup 18 8 -1 roll putinterval - }{ - 35 string - dup 0 19 -1 roll putinterval dup 8 ( ) putinterval - dup 9 18 -1 roll putinterval dup 17 ( ) putinterval - dup 18 17 -1 roll putinterval dup 26 ( ) putinterval - dup 27 16 -1 roll putinterval - - () 35 string - dup 0 17 -1 roll putinterval dup 8 ( ) putinterval - dup 9 16 -1 roll putinterval dup 17 ( ) putinterval - dup 18 15 -1 roll putinterval dup 26 ( ) putinterval - dup 27 14 -1 roll putinterval - - () 35 string - dup 0 15 -1 roll putinterval dup 8 ( ) putinterval - dup 9 14 -1 roll putinterval dup 17 ( ) putinterval - dup 18 13 -1 roll putinterval dup 26 ( ) putinterval - dup 27 12 -1 roll putinterval - - () 35 string - dup 0 13 -1 roll putinterval dup 8 ( ) putinterval - dup 9 12 -1 roll putinterval dup 17 ( ) putinterval - dup 18 11 -1 roll putinterval dup 26 ( ) putinterval - dup 27 10 -1 roll putinterval - - } - ] STCimode - } ifelse - () () - -% Printer Model - (Printer-Model) /Model STCiget - -% Resolution - (Resolution) 15 string % (nnnnnxnnnnn DpI) - /HWResolution STCiget 0 get cvi 1 index cvs length - dup 2 index exch (x) putinterval 1 add dup 2 index exch 5 getinterval - /HWResolution STCiget 1 get cvi exch cvs length add dup 2 index - exch ( DpI) putinterval 4 add 0 exch getinterval - -% HWsize holds entire Page in Pixels, -% .HWMargins is [left,bottom,right,top] in Points - (Printed Area) 18 string % (nnnnnxnnnnn Pixel) - /HWSize STCiget 0 get /.HWMargins STCiget dup 0 get exch 2 get add - /HWResolution STCiget 0 get mul 72.0 div sub cvi 1 index cvs length - dup 2 index exch (x) putinterval 1 add dup 2 index exch 5 getinterval - /HWSize STCiget 1 get /.HWMargins STCiget dup 1 get exch 3 get add - /HWResolution STCiget 1 get mul 72.0 div sub cvi exch cvs length add - dup 2 index exch ( Pixel) putinterval 6 add 0 exch getinterval - - () () -% WeaveMode - (Weave-Mode) - /noWeave STCiget { - (noWeave) - }{ - /Microweave STCiget {(Microweave)}{(Softweave)}ifelse - }ifelse -% Unidirectional - (Unidirectional) /Unidirectional STCiget {(ON)}{(off)} ifelse -% Output coding - (OutputCode) /OutputCode STCiget -% number of heads - (escp_Band) /escp_Band STCiget 3 string cvs - (escp_Width) /escp_Width STCiget 5 string cvs - (escp_Height) /escp_Height STCiget 5 string cvs - (escp_Top) /escp_Top STCiget 5 string cvs - (escp_Bottom) /escp_Bottom STCiget 5 string cvs - ] def - -% -% compute the Proper X & Y-Arrays -% - [{ % Monochrome - /Ktransfer STCiget /Kcoding STCiget STCisteps - /STCi_yv [ 3 -1 roll ] def - /STCi_xv [ 3 -1 roll ] def - /STCi_col [[0 0 0]] def - /STCi_set [{1.0 exch sub setgray}] def - }{ % RGB - /Rtransfer STCiget /Rcoding STCiget STCisteps - /Gtransfer STCiget /Gcoding STCiget STCisteps - /Btransfer STCiget /Bcoding STCiget STCisteps - exch 4 -1 roll 6 -1 roll exch 3 -1 roll - /STCi_xv [ 5 2 roll ] def - /STCi_yv [ 5 2 roll ] def - /STCi_col [[1 0 0] [0 1 0] [0 0 1]] def - /STCi_set [ - {1.0 exch sub 1 exch dup setrgbcolor} - {1.0 exch sub dup 1 exch setrgbcolor} - {1.0 exch sub dup 1 setrgbcolor} - ] def - }{ % CMYK - /Ctransfer STCiget /Ccoding STCiget STCisteps - /Mtransfer STCiget /Mcoding STCiget STCisteps exch 3 1 roll - /Ytransfer STCiget /Ycoding STCiget STCisteps exch 4 1 roll - /Ktransfer STCiget /Kcoding STCiget STCisteps exch 5 1 roll - /STCi_yv [ 6 2 roll ] def - /STCi_xv [ 6 2 roll ] def - /STCi_col [[0 1 1] [1 0 1] [1.0 0.5 0.0] [0 0 0]] def - /STCi_set [ - { 0 0 0 setcmykcolor } - { 0 exch 0 0 setcmykcolor } - { 0 exch 0 exch 0 setcmykcolor } - { 0 exch 0 exch 0 exch setcmykcolor } - ] def - } - ]STCimode - -} stopped - -{ {/STCi_stopped eq {exit}if}loop true} -{ {/STCi_stopped eq {exit}if}loop false} ifelse - -% End: stcinfo_preparation - -% The Next section does the real job - -% Begin: stcinfo_execution -{ - (%%[ stcinfo.ps: currentdevice is not supported -> colortri ]%%\n) print - STCi_clip colortri % The default action - -}{ -% -% Print the text -% - 0 2 STCi_text length 2 sub { dup 1 add exch - STCi_text exch get length dup STCi_l1 gt{/STCi_l1 exch def}{pop}ifelse - STCi_text exch get length dup STCi_l2 gt{/STCi_l2 exch def}{pop}ifelse - } for - /STCi_l2 STCi_l2 neg def - 0 2 STCi_text length 2 sub { - dup 1 add STCi_text exch get exch STCi_text exch get - 1 index length 0 gt { - dup STCi_l1 STCiprint length 0 gt {(: )}{( )}ifelse print print - }{ - pop pop - } ifelse - (\n) print - } for -% -% Deactivate a present ColorAdjust Matrix, if any -% - /ColorAdjustMatrix STCiget null ne STCi_onstc and { - mark - /ColorAdjustMatrix null - currentdevice putdeviceprops pop - } if -% -% "Show" the text -% - /Times-Roman findfont 10 scalefont setfont - /STCi_l1 0 def - 0 2 STCi_text length 2 sub { - STCi_text exch get stringwidth pop dup STCi_l1 gt { - /STCi_l1 exch def - }{ - pop - } ifelse - } for - STCi_l1 STCi_clip 0 get add /STCi_l1 exch def - - STCi_clip 3 get 12 sub - 0 2 STCi_text length 2 sub { - STCi_text exch get dup length 0 gt { - dup stringwidth pop STCi_l1 exch sub 2 index moveto show - }{ - pop - } ifelse - 12 sub - } for - pop - - /Courier findfont 10 scalefont setfont - /STCi_l2 0 def - 1 2 STCi_text length 1 sub { - STCi_text exch get stringwidth pop dup STCi_l2 gt { - /STCi_l2 exch def - }{ - pop - } ifelse - } for - - STCi_clip 3 get 12 sub - 1 2 STCi_text length 1 sub { - STCi_text exch get dup length 0 gt { - STCi_l1 12 add 2 index moveto show - }{ - pop - } ifelse - 12 sub - } for - pop - -% -% compute the space for the graph-window -% - STCi_l1 12 add STCi_l2 add 12 add dup STCi_clip 2 get exch sub % Extend - [ 3 -1 roll dup 3 index add STCi_clip 3 get dup 5 index sub 3 1 roll ] - /STCi_win exch def /STCi_l1 exch def - -% The "Axis" - newpath - STCi_win 0 get STCi_win 1 get 14 add moveto - STCi_win 2 get STCi_win 1 get 14 add lineto stroke - - STCi_win 0 get 14 add STCi_win 1 get moveto - STCi_win 0 get 14 add STCi_win 3 get lineto stroke - -% The Labels - /Times-Roman findfont 10 scalefont setfont - (Postscript-color) dup stringwidth pop - STCi_win 2 get STCi_win 0 get sub 14 sub 1 index sub 2 div exch pop - STCi_win 0 get add 14 add STCi_win 1 get 4 add moveto show - - gsave - STCi_win 0 get 10 add STCi_win 1 get 14 add translate 90 rotate - (Device-color) dup stringwidth pop - STCi_win 3 get STCi_win 1 get sub 14 sub 1 index sub 2 div exch pop - 0 moveto show - grestore - -% The Graphs - gsave - STCi_win 0 get 14 add STCi_win 1 get 14 add - STCi_win 2 get 2 index sub STCi_win 3 get 2 index sub - 4 2 roll translate - STCi_col 0 1 2 index length 1 sub { - 1 index 1 index get aload pop setrgbcolor - STCi_xv 1 index get STCi_yv 3 -1 roll get - newpath - 1 index 0 get 5 index mul 1 index 0 get 5 index mul moveto - 1 index 1 get 5 index mul 1 index 0 get 5 index mul lineto - 1 1 2 index length 1 sub { - 2 index 1 index get 6 index mul - 2 index 2 index get 6 index mul lineto - 2 index 1 index 1 add get 6 index mul - 2 index 2 index get 6 index mul lineto - pop - } for - stroke pop pop - } for - pop pop pop - grestore - -% -% Find lowest Y from Text or graph -% - STCi_win 1 get STCi_clip 3 get STCi_text length 2 div 12 mul sub - dup 2 index gt { pop } { exch pop } ifelse 12 sub - -% -% compute the upper bar-window -% - /STCi_win [ - STCi_clip 0 get 4 -1 roll 36 sub STCi_clip 2 get 1 index 36 add - ] def - -% -% Draw the required number of graphs -% - [{ % Monochrome - STCi_win STCi_xv 0 get {setgray} STCibar - }{ % RGB - STCi_win STCi_xv 0 get {0 0 setrgbcolor} STCibar - STCi_win dup 1 exch 1 get 47 sub put - STCi_win dup 3 exch 3 get 47 sub put - STCi_win STCi_xv 1 get {0 0 3 1 roll setrgbcolor} STCibar - STCi_win dup 1 exch 1 get 47 sub put - STCi_win dup 3 exch 3 get 47 sub put - STCi_win STCi_xv 2 get {0 0 3 2 roll setrgbcolor} STCibar - }{ % CMYK - STCi_win STCi_xv 0 get {0 0 0 setcmykcolor} STCibar - STCi_win dup 1 exch 1 get 47 sub put - STCi_win dup 3 exch 3 get 47 sub put - STCi_win STCi_xv 1 get {0 0 0 4 1 roll setcmykcolor} STCibar - STCi_win dup 1 exch 1 get 47 sub put - STCi_win dup 3 exch 3 get 47 sub put - STCi_win STCi_xv 2 get {0 0 0 4 2 roll setcmykcolor} STCibar - STCi_win dup 1 exch 1 get 47 sub put - STCi_win dup 3 exch 3 get 47 sub put - STCi_win STCi_xv 3 get {0 0 0 4 3 roll setcmykcolor} STCibar - } - ] STCimode - - STCi_win 1 STCi_clip 1 get put - STCi_win dup 3 exch 3 get 47 sub put - -% -% Plot either one or two Color-Triangles -% - /ColorAdjustMatrix STCiget null ne STCi_onstc and { - STCi_win 0 get STCi_win 2 get add 2 div - [STCi_win 0 get STCi_win 1 get 3 index STCi_win 3 get ] colortri - mark /ColorAdjustMatrix dup STCiget currentdevice putdeviceprops pop - [1 index STCi_win 1 get STCi_win 2 get STCi_win 3 get ] colortri - pop - }{ - STCi_win colortri - } ifelse - newpath clippath stroke -} ifelse -showpage |