From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- dviware/dvipsconfig/config.psgrid | 175 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 dviware/dvipsconfig/config.psgrid (limited to 'dviware/dvipsconfig/config.psgrid') diff --git a/dviware/dvipsconfig/config.psgrid b/dviware/dvipsconfig/config.psgrid new file mode 100644 index 0000000000..86910c49ff --- /dev/null +++ b/dviware/dvipsconfig/config.psgrid @@ -0,0 +1,175 @@ +%! +% config.psgrid +% Configuration and header file for dvips. Load with: dvips -P psgrid +% +% Draw a line grid in PostScript's standard coordinate grid. +% The resulting grid can be used for measuring BoundingBoxes. +% +% This code is based on code from the book +% +% @Book{Merz:PostscriptAcrobatBibel, +% author = "Thomas Merz", +% title = "Die PostScript- und Acrobat-Bibel. Was Sie schon +% immer {\"u}ber PostScript und Acrobat/{PDF} wissen +% wollten", +% publisher = "Thomas Merz Verlag", +% year = "1996", +% address = "M{\"u}nchen", +% edition = "1", +% ISBN = "3-9804943-0-6", +% } +% @Book{Merz:PostscriptAcrobatBible, +% author = "Thomas Merz", +% title = "PostScript & acrobat/{PDF}: applications, +% troubleshooting, and cross-platform publishing", +% publisher = "Springer", +% year = "1997", +% address = "Berlin", +% ISBN = "3-540-60854-0", +% } +% +% The original code can be found in file ps/eps/gitter.ps on the CD which +% accompanies the German edition. +% The original code is copyright (C) Thomas Merz 1994-96. +% Incorporation of the original code into this file is with permission of +% Thomas Merz. +% For further information about the book see http://www.pdflib.com/ +% +% This file is built so it can be used both as the header file for +% PostScript and as the configuration file for dvips. +% (Note that dvips ignores any lines beginning with a space or a "%".) +% +% Copyright (C) 1995-2006 by Volker Kuhlmann. +% Released under the terms of the GNU General Public License (GPL) Version 2. +% See http://www.gnu.org/ for details. +% +% Volker Kuhlmann +% 25, 26 Oct 1997; 25 Jan 1998; 9 Mar 2000; 11 May 2006 +% + /dr@wgrid { + + save + 25 dict begin + + /step 10 def % grid line increment, in PostScript point + /medstep 50 def % solid grid lines every this often + /numstep 100 def % numbered grid lines every this often + + /FontSize 10 def % font size of numbers + + %initgraphics % don't use - can stuff things up and is not necessary + newpath 0 setlinecap 0 setlinejoin 10 setmiterlimit + + clippath pathbbox newpath + cvi /ury exch def + cvi /urx exch def + 10 div floor 10 mul cvi /lly exch def + 10 div floor 10 mul cvi /llx exch def + urx llx sub /lenx exch def + ury lly sub /leny exch def + + /snaptopixel { + transform + .25 sub round .25 add exch + .25 sub round .25 add exch + itransform + } bind def + + 0.01 setlinewidth + [1 2] 0 setdash % dashed line + 0 setgray + /set-line-style { + dup medstep mod 0 eq { [ ] 0 setdash } if + %dup 100 mod 0 eq { 0.75 setlinewidth 0.35 setgray } if + %dup 0 eq { 1.25 setlinewidth } if + %dup 0 eq { 0.8 setlinewidth } if + dup numstep mod 0 eq { 0.4 setlinewidth } if + dup 0 eq { 0.6 setlinewidth } if + } bind def + + llx step urx { % draw vertical lines + gsave + set-line-style + lly snaptopixel moveto 0 leny snaptopixel rlineto stroke + grestore + } for + + lly step ury { % draw horizontal lines + gsave + set-line-style + llx exch snaptopixel moveto lenx 0 snaptopixel rlineto stroke + grestore + } for + + % circle at (0,0) + [ ] 0 setdash 1 setlinewidth newpath 15 0 moveto 0 0 15 0 360 arc stroke + + /kreis { % clip light circle from existing lines + gsave 1 setgray + %/d (500) stringwidth pop def + dup stringwidth pop /d exch def % adjust circle size to string width + currentpoint FontSize 3 div add exch d 2 div add exch + d 0.6 mul 0 360 arc + fill grestore + } def + + % axes labelling font + /Helvetica-Bold findfont FontSize scalefont setfont + 0.5 setgray + + % print axis labelling, X + llx numstep div floor numstep mul cvi + numstep urx { % for + dup 0 eq + { + pop + }{ + dup 20 moveto + ( ) cvs dup stringwidth pop 2 div neg 0 rmoveto + kreis show + } ifelse + } bind for + + % print axis labelling, Y + lly numstep div floor numstep mul cvi + numstep ury { % for + dup 0 eq + { + pop + }{ + 40 1 index moveto + ( ) cvs dup stringwidth pop + neg 3 sub FontSize 3 div neg rmoveto + kreis show + } ifelse + } bind for + + end restore + + } bind def % dr@wgrid + + % %% Hook into dvips-generated PS + % at start of page: + %/bop-hook where + % { + % pop + % /@ldbophookgrid /bop-hook load def + % /bop-hook { @ldbophookgrid dr@wgrid } def + % }{ + % /bop-hook { dr@wgrid } def + % } ifelse + % at end of page: + /eop-hook where + { + pop + /@ldeophookgrid /eop-hook load def + /eop-hook { @ldeophookgrid dr@wgrid } def + }{ + /eop-hook { dr@wgrid } def + } ifelse +% + { % start a procedure so PostScript `ignores' the dvips configuration part. +h config.psgrid + } pop % PostScript cleanup +% +% EOF config.psgrid -- cgit v1.2.3