%! % Copyright (C) 1994 Aladdin Enterprises. All rights reserved. % % This file is part of AFPL Ghostscript. % % AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND. No author or % distributor accepts any responsibility for the consequences of using it, or % for whether it serves any particular purpose or works at all, unless he or % she says so in writing. Refer to the Aladdin Free Public License (the % "License") for full details. % % Every copy of AFPL Ghostscript must include a copy of the License, normally % in a plain ASCII text file named PUBLIC. The License grants you the right % to copy, modify and redistribute AFPL Ghostscript, but only under certain % conditions described in the License. Among other things, the License % requires that the copyright notice and this notice be preserved on all % copies. % $Id: zeroline.ps,v 1.2 2000/09/19 18:29:11 lpd Exp $ % zeroline.ps % Test file to determine how other PostScript implementations handle % filling zero-width lines under a variety of conditions. % Add a small "fan" of zero-width lines at different angles to the path. /fan { currentpoint 100 0 rlineto 2 copy moveto 100 20 rlineto 2 copy moveto 100 100 rlineto 2 copy moveto 20 100 rlineto moveto 0 100 rlineto } def % Append a rectangle to the current path. /rectappend { 4 -2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath } def % Fill a rectangle. /rectfill { gsave newpath rectappend fill grestore } def % Stroke a rectangle. /rectstroke { gsave newpath rectappend stroke grestore } def % Clip to a rectangle. Unlike the real rectclip, % this clear the current path. /rectclip { newpath rectappend clip newpath } def 40 40 translate % Display fans of different colors on different backgrounds. gsave 0 setgray 0 0 120 120 rectstroke 10 10 moveto fan fill 140 0 translate 0 setgray 0 0 120 120 rectstroke 0.8 setgray 10 10 moveto fan fill 140 0 translate 0 setgray 0 0 120 120 rectfill 1 setgray 10 10 moveto fan fill grestore 0 140 translate % Display rectangles with two edges coincident. gsave newpath 0 setgray 0 0 40 40 rectappend 0 0 20 20 rectappend eofill 60 0 translate 0 0 40 40 rectappend 40 0 -20 20 rectappend fill grestore 0 60 translate % Display superimposed lines. gsave /super { currentpoint fan 2 copy moveto 20 0 rmoveto 50 0 rlineto 2 copy moveto 20 4 rmoveto 50 10 rlineto 2 copy moveto 20 20 rmoveto 50 50 rlineto 2 copy moveto 4 20 rmoveto 10 50 rlineto moveto 0 20 rmoveto 0 50 rlineto } def 0 setgray 0 0 moveto super fill 140 0 translate 0 0 moveto super eofill grestore 0 140 translate showpage