Thank you for the answer, which learned me a lot. I have checked the
hack for PDF files. It works. There is surely a similar hack for EPS files.
If somebody is interested I have written another script in PyX to
experiment with the 'nonzero winding number'.
André
Ken Starks a écrit :
> This is usually called the 'winding rule'. In PDF the Path-painting
> operator f is the one normally used in PyX, and
> uses the 'non-zero winding number' rule.
> The alternative operator, f* uses the 'Even-Odd' rule, and as far as I
> can see is not implemeted in PyX.
>
> Fot a quick hack to show the possibility, go to the file deco.py, line
> 277, and (temporarily) change the f to f*:
>
> # *****************************************************
> else:
> # only fill fillpath - for the moment
> if self.fillstyles:
> file.write("q\n") # gsave
> _writefillstyles(self.fillstyles, context(),
> registry, bbox)
>
> file.write("f*\n") # fill (changed here from f to f* for
> the EVEN ODD rule )
> bbox += fillpath.bbox()
>
> # ********************************************************
>
>
> A suitable test file to show the difference is:
>
> from pyx import *
>
> c = canvas.canvas()
>
> W=2
> numofstripes=3
> A=(numofstripes+1.5)*W
> w = W / 2.0
> Left=w
> Right=A-w
> Bottom=w
> Top=A-w
>
> mypath1 = path.path(path.moveto(0,0),path.lineto(0,A),
> path.lineto(A,A),path.lineto(A,0),
> path.closepath())
> mypath2=path.path()
> for n in range(1,numofstripes+1):
> a,b=n*W,n*W+w
> mypath2.append(path.moveto(a,Bottom))
> mypath2.append(path.lineto(a,Top))
> mypath2.append(path.lineto(b,Top))
> mypath2.append(path.lineto(b,Bottom))
> mypath2.append(path.closepath())
>
> mypath2.append(path.moveto(Left,a))
> mypath2.append(path.lineto(Right,a))
> mypath2.append(path.lineto(Right,b))
> mypath2.append(path.lineto(Left,b))
> mypath2.append(path.closepath())
>
> mypath2.append(path.moveto(Left,(Top+Bottom)/2.0))
> mypath2.append(path.lineto((Left+Right)/2.0,Bottom))
> mypath2.append(path.lineto(Right,(Top+Bottom)/2.0))
> mypath2.append(path.lineto((Left+Right)/2.0,Top))
> mypath2.append(path.closepath())
>
>
> c.stroke(mypath1, [style.linewidth.thin])
> c.fill(mypath2, [style.linewidth.thin])
>
> c.writePDFfile("checkerboard")
>
>
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> PyX-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/pyx-user
>
>
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
PyX-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pyx-user