[Sugar-devel] TA cairo conversion

Walter Bender walter.bender at gmail.com
Sat Nov 5 16:03:14 EDT 2011


On Sat, Nov 5, 2011 at 8:56 AM, Walter Bender <walter.bender at gmail.com> wrote:
> I pushed a few more patches last night [1]. I have just two blockers
> right now to releasing the Cairo version:
>
> (1) I cannot seem to figure out how to convert my surface to a pixbuf
> or png for saving to a file;
>        surface = canvas.canvas.get_target()  # get the surface used
> by the canvas
>        surface.cairo_surface_write_to_png(file_name)  <--- fails
> because XlibSurface doesn't have a cairo_surface_write_to_png
> attribute
> (2) I cannot seem to create the proper surface from a Pixbuf to use in
> non-interactive mode in replacement of the canvas surface. I have
> unsuccessfully tried to create a pixbuf and use it to source a cairo
> context.
>
> The only non-blockers are:
> (1) I am struggling with the erratic behavior of rotate on bitmaps. It
> is disabled at the moment.

I was just thinking about it backwards... Works as expected now.

> (2) There must be some way to cache the surfaces used by the sprites
> instead of re-rendering them from pixbufs each time, but using
> get_target() gives X errors.

I'll keep poking at this one as I think it may help with performance.
The basic idea is:

        for i, img in enumerate(self.images):
            if self.surfaces[i] is not None:
                cr.set_source_surface(self.surfaces[i],
                                      self.rect.x + self._dx[i],
                                      self.rect.y + self._dy[i])
            else:
                cr.set_source_pixbuf(img,
                                     self.rect.x + self._dx[i],
                                     self.rect.y + self._dy[i])
                self.surfaces[i] = cr.get_target()

-walter

>
> Any pointers appreciated.
>
> -walter
>
> [1] http://git.sugarlabs.org/~walter/turtleart/walters-cairo/commits/master
>
> --
> Walter Bender
> Sugar Labs
> http://www.sugarlabs.org
>



-- 
Walter Bender
Sugar Labs
http://www.sugarlabs.org


More information about the Sugar-devel mailing list