diff options
Diffstat (limited to 'Master/xemtex/gslib/lines.ps')
-rw-r--r-- | Master/xemtex/gslib/lines.ps | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/Master/xemtex/gslib/lines.ps b/Master/xemtex/gslib/lines.ps new file mode 100644 index 00000000000..b784e01aa7c --- /dev/null +++ b/Master/xemtex/gslib/lines.ps @@ -0,0 +1,166 @@ +%! +% Copyright (C) 1989, 1990, 1992, 1994, 1996 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: lines.ps,v 1.2.6.1.2.1 2003/04/12 14:02:38 giles Exp $ +% Test line rendering (stroke). + +% Exercise the miter limit. The left column of lines should bevel at +% 90 degrees, the right column at 60 degrees. + +gsave +1.8 setlinewidth +0 setgray +15 15 scale +-5 5 translate +[1.415 2.0] + { setmiterlimit 12 0 translate 0 0 moveto + 10 30 360 + { gsave 5 0 rlineto rotate 2.5 0 rlineto + gsave 0 setlinewidth 1 0 0 setrgbcolor stroke grestore + strokepath 0 setlinewidth stroke + grestore + 0 4 rmoveto + } for + } forall + +showpage +grestore + +% Exercise all the combinations of cap and join styles +% for one-line, two-line, and closed paths. + +gsave + +/drawlines { +gsave +2.0 setmiterlimit +2.0 setlinewidth +6 6 scale +5 20 translate +{0 1 2} % line cap + { setlinecap gsave + {0 1 2} % line join + { setlinejoin gsave + { {currentpoint lineto} + {3 7 lineto} + {3 7 lineto 5 1 lineto} + {3 7 lineto 6 3 lineto closepath} + } + { gsave 0 0 moveto exec + gsave stroke grestore + 0.5 setlinewidth 1 0 0 setrgbcolor stroke + grestore 8 0 translate + } forall + grestore 35 0 translate + } forall + grestore 0 20 translate + } forall +grestore +} def +/xflip + { 8.5 72 mul 0 translate -1 1 scale + } def +/rot90 + { 90 rotate 0 -9.75 72 mul translate + } def +/rot180 + { rot90 rot90 + } def +/rot270 + { rot180 rot90 + } def + +drawlines showpage +gsave xflip drawlines grestore showpage +gsave rot90 drawlines grestore showpage +gsave rot90 xflip drawlines grestore showpage +gsave drawlines rot180 showpage +gsave rot180 xflip drawlines grestore showpage +gsave rot270 drawlines grestore showpage +gsave rot270 xflip drawlines grestore showpage +grestore + +% Here are some boundary conditions, contributed by Mark Rawling. + +gsave +1 setlinecap +2.6 setmiterlimit +3.0 setlinewidth + +5 5 scale +10 20 translate + +% [ 0.5 sqrt dup dup dup neg exch 0 0 ] concat % 45 rotate + +{0 1 2} % line join +{ + setlinejoin gsave + 0 0 moveto 0 10 lineto 10 0 lineto gsave stroke grestore + 15 0 translate + 0 0 moveto 0 10 lineto 10 20 lineto gsave stroke grestore + 15 0 translate + 10 0 moveto 10 10 lineto 0 20 lineto gsave stroke grestore + 15 0 translate + 10 0 moveto 10 10 lineto 0 0 lineto gsave stroke grestore + grestore + gsave + 0 20 translate + 0 20 moveto 0 10 lineto 10 20 lineto gsave stroke grestore + 15 0 translate + 0 20 moveto 0 10 lineto 10 0 lineto gsave stroke grestore + 15 0 translate + 10 20 moveto 10 10 lineto 0 0 lineto gsave stroke grestore + 15 0 translate + 10 20 moveto 10 10 lineto 0 20 lineto gsave stroke grestore + grestore 60 0 translate +} forall + +showpage +grestore + +% Test narrow lines at a variety of angles. + +gsave + +/rad 120 def +/ray { gsave rotate 0 0 moveto rad 0 rlineto stroke grestore } def +/star + { newpath gsave + gsave 0.5 setgray 0 0 rad 0 360 arc stroke grestore + 0 90 359 + { rotate + 0 3 14 { ray } for + 15 15 89 { ray } for + } for + grestore + } def + +0 setgray +150 150 translate +[ [ 0 0.5 1 ] [ 1.5 2 2.5 ] [ 3 3.5 4 ] ] + { gsave + { setlinewidth star + 250 0 translate + } forall + grestore 0 250 translate + } forall + +grestore showpage + +% End + +quit |