Skip to content

Commit c7f2227

Browse files
committed
Rework border to use eofill
GS fails to paint certain corner pixels when stroking a path at small scales.
1 parent f9607a7 commit c7f2227

3 files changed

Lines changed: 57 additions & 22 deletions

File tree

src/renlinear.ps.src

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -270,20 +270,33 @@ begin
270270
grestore
271271
} if
272272
showbearer { % Overrides showborder
273-
gsave
274-
newpath
275-
bl aload pop moveto br aload pop lineto
276-
tl aload pop moveto tr aload pop lineto
277-
bordercolor (unset) ne { bordercolor //setanycolor exec not { grestore grestore //raiseerror exec } if } if
278-
borderwidth inkspread 2 mul sub setlinewidth stroke
279-
grestore
273+
borderwidth inkspread gt {
274+
gsave
275+
newpath
276+
bl aload pop moveto br aload pop lineto
277+
tl aload pop moveto tr aload pop lineto
278+
bordercolor (unset) ne { bordercolor //setanycolor exec not { grestore grestore //raiseerror exec } if } if
279+
borderwidth inkspread sub setlinewidth stroke
280+
grestore
281+
} if
280282
} {
281283
showborder {
282-
gsave
283-
newpath bl aload pop moveto [ br tr tl ] { aload pop lineto } forall closepath
284-
bordercolor (unset) ne { bordercolor //setanycolor exec not { grestore grestore //raiseerror exec } if } if
285-
borderwidth inkspread 2 mul sub setlinewidth stroke
286-
grestore
284+
/hw borderwidth inkspread sub 2 div def
285+
hw 0 gt {
286+
gsave
287+
bordercolor (unset) ne { bordercolor //setanycolor exec not { grestore grestore //raiseerror exec } if } if
288+
newpath
289+
bl aload pop hw sub exch hw sub exch moveto
290+
br aload pop hw sub exch hw add exch lineto
291+
tr aload pop hw add exch hw add exch lineto
292+
tl aload pop hw add exch hw sub exch lineto closepath
293+
bl aload pop hw add exch hw add exch moveto
294+
tl aload pop hw sub exch hw add exch lineto
295+
tr aload pop hw sub exch hw sub exch lineto
296+
br aload pop hw add exch hw sub exch lineto closepath
297+
eofill
298+
grestore
299+
} if
287300
} if } ifelse
288301

289302
%

src/renmatrix.ps.src

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -540,11 +540,22 @@ begin
540540
grestore
541541
} if
542542
showborder {
543-
gsave
544-
newpath bl aload pop moveto [ br tr tl ] { aload pop lineto } forall closepath
545-
bordercolor (unset) ne { bordercolor //setanycolor exec not { grestore grestore //raiseerror exec } if } if
546-
borderwidth inkspread 2 mul sub setlinewidth stroke
547-
grestore
543+
/hw borderwidth inkspread sub 2 div def
544+
hw 0 gt {
545+
gsave
546+
bordercolor (unset) ne { bordercolor //setanycolor exec not { grestore grestore //raiseerror exec } if } if
547+
newpath
548+
bl aload pop hw sub exch hw sub exch moveto
549+
br aload pop hw sub exch hw add exch lineto
550+
tr aload pop hw add exch hw add exch lineto
551+
tl aload pop hw add exch hw sub exch lineto closepath
552+
bl aload pop hw add exch hw add exch moveto
553+
tl aload pop hw sub exch hw add exch lineto
554+
tr aload pop hw sub exch hw sub exch lineto
555+
br aload pop hw add exch hw sub exch lineto closepath
556+
eofill
557+
grestore
558+
} if
548559
} if
549560

550561
%

src/renmaximatrix.ps.src

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -145,11 +145,22 @@ begin
145145
grestore
146146
} if
147147
showborder {
148-
gsave
149-
newpath bl aload pop moveto [ br tr tl ] { aload pop lineto } forall closepath
150-
bordercolor (unset) ne { bordercolor //setanycolor exec not { grestore grestore //raiseerror exec } if } if
151-
borderwidth inkspread 2 mul sub setlinewidth stroke
152-
grestore
148+
/hw borderwidth inkspread sub 2 div def
149+
hw 0 gt {
150+
gsave
151+
bordercolor (unset) ne { bordercolor //setanycolor exec not { grestore grestore //raiseerror exec } if } if
152+
newpath
153+
bl aload pop hw sub exch hw sub exch moveto
154+
br aload pop hw sub exch hw add exch lineto
155+
tr aload pop hw add exch hw add exch lineto
156+
tl aload pop hw add exch hw sub exch lineto closepath
157+
bl aload pop hw add exch hw add exch moveto
158+
tl aload pop hw sub exch hw add exch lineto
159+
tr aload pop hw sub exch hw sub exch lineto
160+
br aload pop hw add exch hw sub exch lineto closepath
161+
eofill
162+
grestore
163+
} if
153164
} if
154165

155166
barcolor (unset) ne { barcolor //setanycolor exec not { grestore //raiseerror exec } if } if

0 commit comments

Comments
 (0)