Re: stencils with stroke-thickness set to zero

2014-03-11 Thread Ralph Palmer
On Mon, Mar 10, 2014 at 8:11 AM, lpietsch lukas.piet...@freenet.de wrote:

 There seems to be an inconsistency between the PS and the SVG backends in
 the
 treatment of path stencils. In PS, it seems to be impossible to create a
 filled shape with no visible contour line, whereas in SVG this is possible.
 If you create a stencil with the thickness parameter set to zero (via
 make-path-stencil or via (ly:make-stencil ('path ...), the SVG backend
 will do just that: no visible contour stroke, just a filled shape. The PS
 backend will add a visible hairline around the stencil, giving it at least
 one pixel in extra width. This may result in quite a visible difference
 between the two results, at least in screen display and with small or thin
 shapes.

 Test snippet:

 #(define teststencil (make-path-stencil
 '(moveto 0  0 lineto 0 1 lineto 0.05 1 lineto 0.05 0 closepath)
  0 1 1 #t))
 \markup { \stencil #teststencil }

 This will result in a markedly thicker line on screen in the PS output than
 in the SVG output.

 To bring the PS behaviour in line with the SVG behaviour (which I find more
 intuitive and more logical), change the path function in scm/output-ps.scm
 so as to omit the stroke command if the fill parameter is #t and the
 thickness parameter is zero. Change l.286-294 from:

  (ly:format
   gsave currentpoint translate
 ~a setlinecap ~a setlinejoin ~a setlinewidth
 ~l gsave stroke grestore ~a grestore
   cap-numeric
   join-numeric
   thickness
   (convert-path-exps exps)
   (if fill? fill 

 to:

  (ly:format
   gsave currentpoint translate
 ~a setlinecap ~a setlinejoin ~a setlinewidth
 ~l ~a ~a grestore
   cap-numeric
   join-numeric
   thickness
   (convert-path-exps exps)
   (if (or (not fill?)( thickness 0)) gsave stroke grestore )
   (if fill? fill 


Greetings, Lukas - This has been submitted as Issue 3882 :
https://code.google.com/p/lilypond/issues/detail?id=3882

Ralph
___
bug-lilypond mailing list
bug-lilypond@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-lilypond


stencils with stroke-thickness set to zero

2014-03-10 Thread lpietsch
There seems to be an inconsistency between the PS and the SVG backends in the
treatment of path stencils. In PS, it seems to be impossible to create a
filled shape with no visible contour line, whereas in SVG this is possible.
If you create a stencil with the thickness parameter set to zero (via
make-path-stencil or via (ly:make-stencil ('path ...), the SVG backend
will do just that: no visible contour stroke, just a filled shape. The PS
backend will add a visible hairline around the stencil, giving it at least
one pixel in extra width. This may result in quite a visible difference
between the two results, at least in screen display and with small or thin
shapes.

Test snippet:

#(define teststencil (make-path-stencil 
'(moveto 0  0 lineto 0 1 lineto 0.05 1 lineto 0.05 0 closepath)
 0 1 1 #t))
\markup { \stencil #teststencil }

This will result in a markedly thicker line on screen in the PS output than
in the SVG output.

To bring the PS behaviour in line with the SVG behaviour (which I find more
intuitive and more logical), change the path function in scm/output-ps.scm
so as to omit the stroke command if the fill parameter is #t and the
thickness parameter is zero. Change l.286-294 from:

 (ly:format
  gsave currentpoint translate
~a setlinecap ~a setlinejoin ~a setlinewidth
~l gsave stroke grestore ~a grestore
  cap-numeric
  join-numeric
  thickness
  (convert-path-exps exps)
  (if fill? fill 

to:

 (ly:format
  gsave currentpoint translate
~a setlinecap ~a setlinejoin ~a setlinewidth
~l ~a ~a grestore
  cap-numeric
  join-numeric
  thickness
  (convert-path-exps exps)
  (if (or (not fill?)( thickness 0)) gsave stroke grestore )
  (if fill? fill 





--
View this message in context: 
http://lilypond.1069038.n5.nabble.com/stencils-with-stroke-thickness-set-to-zero-tp160283.html
Sent from the Bugs mailing list archive at Nabble.com.

___
bug-lilypond mailing list
bug-lilypond@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-lilypond