[cairo] Re: Language binding appendix

Steve Chaplin stevech1097 at yahoo.com.au
Mon May 9 02:52:26 PDT 2005

On Sun, 2005-05-08 at 13:35 -0700, cairo-request at cairographics.org
>  - The suggested cairo_path_t API is perhaps an uncomfortable
>    compromise between specifying it and leaving it up to the 
>    language binding. It might be better to nail down a a fixed
>    iterator API rather than saying "make it match the language
>    binding's iterators".

I implemented path iterators for Pycairo today.

For Python, Appendix A recommended

for element in cr.copy_path():
    if element.getType == cairo.PATH_ELEMENT_MOVE_TO:
        (x, y) = element.getPoint(0)
        doMoveTo (x, y)

1) Instead of element.getPoint(0), element.getPoint(1), element.getPoint(2)
   I think its simpler to use element.getpoints() to return all a tuple of 
   points relevant to the element type - (), (x,y) or (x1,y1,x2,y2,x3,y3)

2) Instead of returning an element object, with a getType attribute and 
   a getPoint() method, I'd prefer to return element as a (type, points) 
   tuple. Its makes it easier to write the python extension since you
   don't need to create an custom element object, and I think its gives
   a simpler interface.
The hypothetical Python loop would then be:

for type, points in cr.copy_path():
    if type == cairo.PATH_ELEMENT_MOVE_TO:
        x, y = points
        doMoveTo (x, y)

This is the way it currently works in cvs.


More information about the cairo mailing list