[cairo] Re: cairo_image_surface_create_for_data() args

Steve Chaplin stevech1097 at yahoo.com.au
Tue May 17 06:52:27 PDT 2005

On Sun, 2005-05-15 at 11:21 -0400, Owen Taylor wrote:
> Do you think the other pairs there actually map to Python? While you
> certainly could implement:
>  def set_source (self, pattern_or_surface, dx=0, dy=0):
>     if [pattern_or_surface is a pattern]: 
>        if (dx != 0 or dy != 0):
>            raise SomeError
> It doesn't strike me as being natural Python or a particularly good
> idea. The overloading pairs are designed more for a strongly typed
> languages with overloads ... C++/Java/C#, say. My expectations would
> probably be that the Python API would match the C API in this area.

It doesn't look like very natural Python so it may be best not to do any
of the overloading.
If cairo_image_surface_create() and cairo_image_surface_create_for_data
() had the same argument order then it could be treated as a case of
optional arguments, and should work.

cairo.ImageSurface(format, width, height, data=None, stride=None)

> P.S. - while the name of the section is "overloading and optional
>        arguments", there is nothing about optional arguments in there
>        I meant to say something, but didn't really common up with 
>        any compelling use cases ... maybe cr.rel_move_to (dy=20)

Optional arguments is something that Python can support.
How about cr.set_source_rgba(r,g,b,a=1.0)
Then cr.set_source_rgb(r,g,b) is not even needed is it?

Other possibilities?


cr.select_font_face(family, slant=cairo.FONT_SLANT_NORMAL,

cr.set_dash(dash_list, offset=0.0)


More information about the cairo mailing list