X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=usr_share%2Falign.ps;fp=usr_share%2Falign.ps;h=2e0d8165010582ad121c6a23941a614491e3b7d5;hb=1b8dcad8b9da618cb6c0e22a762cafb08e262640;hp=0000000000000000000000000000000000000000;hpb=608ca3eeeacd74efa85ad44f5585d1b1b60c8d85;p=grml-scripts-core.git diff --git a/usr_share/align.ps b/usr_share/align.ps new file mode 100644 index 0000000..2e0d816 --- /dev/null +++ b/usr_share/align.ps @@ -0,0 +1,227 @@ +%!PS-Adobe-3.0 +%%Pages: 1 +%%Title: Alignment testpage for Ghostscript +%%Creator: Dieter Stueken () +%%BeginProlog +% Source: http://www.geocrawler.com/archives/3/378/1997/1/50/2064509/ + +/rectdraw % rectdraw - + { exch 4 -1 roll exch 2 array astore {0 moveto 0 PH rlineto stroke} forall + 2 array astore {0 exch moveto PW 0 rlineto stroke} forall + } bind def + +/arrow % arrow + { gsave translate rotate + 0 0 moveto 20 60 lineto -20 60 lineto closepath stroke + 0 0 moveto 0 80 lineto stroke + grestore + } bind def + +/triangle { % len ang x y + gsave translate dup rotate exch + 0 setlinewidth + 0 0 moveto + dup 0 lineto + dup 0.98 mul dup 10 div lineto + closepath + gsave 0.65 setgray fill grestore stroke + 100 10 moveto + 100 100 2 index { + gsave 0 -12 rmoveto 0 24 rlineto stroke grestore + gsave 0 24 rmoveto 10 div 2 index neg rotate + cvi =string cvs -6 -4 rmoveto show grestore + 100 10 rmoveto + } for + 0 0 moveto + 0 10 2 index { + pop + gsave 0 -6 rmoveto 0 12 rlineto stroke grestore + 10 1 rmoveto + } for + pop pop + grestore +} bind def + +/round {dup 3 1 roll mul cvi exch div} def + +/Show { % print value or unfold array + dup type /realtype eq {100 round} if + dup type /nulltype eq + { pop (-NULL-) show} + {dup type /arraytype eq + { ([ ) show {Show} forall ( ]) show} + {=string cvs show ( ) show} + ifelse } + ifelse +} bind def + +/Pval { % key val, move down 1 line + gsave exch + gsave Show (:) show grestore + 150 0 rmoveto Show + grestore + 0 -12 rmoveto +} bind def + +/showtext { + /S 80 string def + { currentfile S readline pop dup (%END) eq { pop exit } if + gsave show grestore 0 -12 rmoveto + } loop +} bind def + +/.knownget { 2 copy known { get true } { pop pop false } ifelse } bind def + +%%EndProlog +%%BeginSetup + +% you may try different settings here, but start with default settings first +%<< +% /.HWMargins [8.5 38.0 10.5 12.5] +% /Margins [-35 -51] +%>> setpagedevice +% + +%%EndSetup +%%Page: 1 + +% printout all values + +/Helvetica findfont +12 scalefont setfont +120 756 moveto + +showtext +Current settings: + +%END + +[/OutputDevice + /Margins + /.HWMargins + /.MarginsHWResolution + /HWResolution + /PageOffset + /PageSize +] { currentpagedevice 1 index + .knownget not {(-undefined-)} if Pval +} forall + +showtext + +Graphics alignment: + +Let the distance in inches from the left edge of the page to the +vertical line be H, and from the bottom edge to the horizontal line +be V. You may define the alignment of your page to the paper by + + << /Margins [x y] >> setpagedevice +with +%END + +gsave +/res currentpagedevice /.MarginsHWResolution .knownget not {600} if def +( x = (1 - H) * ) show res 0 get =string cvs show +(, y = (V - 1) * ) show res 1 get =string cvs show +grestore 0 -12 rmoveto + +showtext + +If set correctly the drawn arrows should extend into the +papers corners (not the clipping corners). After archieving +that, you may continue with the clipping edges. + +The clipping edges may be set by + + << /.HWMargins [ml mb mr mt] >> setpagedevice + +where [ml mb mr mt] are the distances of the clipped edges of +your graphics relative to the papers edges (left bottom right top) +measured in 1/72 inches. The wedge shaped rules may be used to +define these values very accurately as its intersections are in +1/72 inches. Take the value at the cutoff point from the scale to +the next clockwise edge. + +Start setting the margin values to all zero to see the natural hardware +clipping of your printer. You should then define the margins just as big +enough to keep the defined margins within your printers real hardware +clipping. This is archieved if you can see the thin line drawn all around +your defined margin. In addition the thin drawn arrows are just touching +the margin and should be totally visible. + +When you put this settings into your inititializing file "gs_init.ps" +you may want to apply this setting to a specific printer device only. +Here is an example of a printer specific setup: + +<< + /ljet4 << % make entries for some device + /.HWMargins [16.0 13.2 13.0 11.1] + /Margins [-132 -92] + >> + /ljet2p << % and for an other devices, too + /.HWMargins [14.4 6.8 14.5 17.5] + /Margins [-60 -23] + >> +>> currentpagedevice /OutputDevice get +.knownget {setpagedevice} if +%END + +% get page size +currentpagedevice /PageSize get aload pop +/PH exch def +/PW exch def + +1 setlinewidth +PW 0 0 0 triangle +PH 90 PW 0 triangle +PW 180 PW PH triangle +PH 270 0 PH triangle + +% get clipping values +clippath pathbbox newpath + +% show clipping box +gsave +1 setlinewidth % 0.65 setgray +4 copy rectdraw +grestore + +/CT exch def +/CR exch def +/CB exch def +/CL exch def + +% draw the alignment lines +0 setlinewidth +72 0 moveto 0 CT rlineto stroke +0 72 moveto CR 0 rlineto stroke + +2 setlinewidth +1 setlinejoin +1 setlinecap + +0 200 moveto 71 0 rlineto -24 -12 rlineto 0 24 rlineto 24 -12 rlineto stroke +34 206 moveto (H) show + +144 0 moveto 0 71 rlineto -12 -24 rlineto 24 0 rlineto -12 24 rlineto stroke +150 34 moveto (V) show + + +% draw arrows into to the papers corners +1 setlinewidth +45 +90 sub dup 0 0 arrow +90 sub dup 0 PH arrow +90 sub dup PW PH arrow +90 sub dup PW 0 arrow +pop %45 + +% draw arrows touching the clipping edges +0 setlinewidth + 0 PW 2 div CB arrow +180 PW 2 div CT arrow +-90 CL PH 2 div arrow + 90 CR PH 2 div arrow + +showpage +%%EOF \ No newline at end of file