[cairo] API proposal: cairo_format_from_content and cairo_content_from_format

Behdad Esfahbod behdad at behdad.org
Tue Apr 24 11:47:59 PDT 2007


On Tue, 2007-04-24 at 21:36 +0300, Mox Soini wrote:
> Hmm.. interesting.
> 
> This "getSimilar()" stuff starts to make some sense to me too :)
> 
> If I understood correctly, the equivalent of "getDrawable" on Mac OS X
> Quartz is
> getContext, which is already in the quartz cairo API
> (cairo_quartz_surface_get_cg_context). For Mac OS X, there is no
> problems with using the latest version of Cairo, because the earlier
> once just simply wouldn't work (and it's not part of the pre-installed
> system).
> 
> If there is support for this in win32 too, we could simplify the
> getSimilar code a lot!
> 
> If we would use just the generic case, I guess the only thing is that
> we'd probably need to check is whether we are really using native
> surface, when we do getContext/getThing. (on a surface created with
> getSimilar). In the case it is non-native image surface, then we'd
> need to extract the image from there...
> 
> Could you cairo guys check, if the getThing thing works for win32 backend?

I think cairo_win32_surface_get_dc() is exactly that.  Note that if the
create_similar() surface is not native, there's probably very good
reasons for it, so you are better follow that.  You can test the type of
it using cairo_surface_get_type().  If it's an image surface, you can
get the image data using
cairo_image_surface_get_data/format/width/height/stride().

behdad


>       Mox
> 
> On 4/24/07, Behdad Esfahbod <behdad at behdad.org> wrote:
> > On Tue, 2007-04-24 at 17:40 -0400, Radek Doulik wrote:
> > > > Ok, so the obvious question would be: why doesn't the generic path work
> > > > for all platforms?
> > >
> > >       Because I need the system level drawable to do the text rendering which
> > > unfortunately has to happen in another part of OOo.
> > >
> > >       I still use cairo 1.0.x and so it is impossible to get the X11 drawable
> > > (or other system level drawable on the other platforms) from a surface
> > > created with cairo_surface_create_similar.
> >
> > Ok, makes sense.  But with cairo 1.4.4 already out, isn't it time to
> > move to 1.2?  1.2 provides cairo_xlib_surface_get_drawable.  I assume
> > similar API may be missing in other backends, but we will not be able to
> > magically add it if you don't tell us about it.  Please do so.
> >
> >
> > Thanks,
> > behdad
> >
> > >       Thus I am creating the drawable beforehand and pass it to
> > > cairo_xlib_surface_create_with_xrender_format (similarly on other
> > > platforms)
> > >
> > > Cheers
> > > Radek
> > >
> > > > > Best Regards,
> > > > >
> > > > >            Mox
> > > > >
> > > > > P.S. I have not created the original OOo functions (e.g.
> > > > > getSurface()), just doing porting work for Mac OS X...
> > > > >
> > > > > On 4/24/07, Carl Worth <cworth at cworth.org> wrote:
> > > > > > On Mon, 23 Apr 2007 17:32:39 -0400, Behdad Esfahbod wrote:
> > > > > > > Given the definition above, it's apparently something image-surface
> > > > > > > centric.  I was ignoring that until Max showed us how OO.o has the two
> > > > > > > following functions implemented:
> > > > > > >
> > > > > > > Format cairoHelperFormatFromContent(Content aContent);
> > > > > > > int cairoHelperX11FormatFromContent(Content aContent);
> > > > > > >
> > > > > > > Now that makes a lot more sense.
> > > > > >
> > > > > > Yeah, that's really the only way it would start making any
> > > > > > sense. Within the context of a given backend, you could want to ask
> > > > > > what format is associated with the surface returned by create_similar
> > > > > > for a particular content value.
> > > > > >
> > > > > > But even then, it still doesn't make a lot of sense. For example, if
> > > > > > you're running an X server with a 565 visual, then doing
> > > > > > create_similar with CAIRO_CONTENT_COLOR will give you a surface
> > > > > > targeting an X11 Pixmap with a 565 visual. But we still don't have any
> > > > > > cairo_format_t to describe that, so I don't see how trying to map a
> > > > > > content to a format in an "xlib aware" fashion would help.
> > > > > >
> > > > > > I guess I still don't see where this would be used. In what sequences
> > > > > > does OO.o find this useful?
> > > > > >
> > > > > > -Carl
> > > > > >
> > > > > > _______________________________________________
> > > > > > cairo mailing list
> > > > > > cairo at cairographics.org
> > > > > > http://cairographics.org/cgi-bin/mailman/listinfo/cairo
> > > > > >
> > > > > >
> > > > >
> > > > >
> > >
> > > _______________________________________________
> > > cairo mailing list
> > > cairo at cairographics.org
> > > http://cairographics.org/cgi-bin/mailman/listinfo/cairo
> > --
> > behdad
> > http://behdad.org/
> >
> > "Those who would give up Essential Liberty to purchase a little
> >  Temporary Safety, deserve neither Liberty nor Safety."
> >         -- Benjamin Franklin, 1759
> >
> >
> >
> >
> 
> 
-- 
behdad
http://behdad.org/

"Those who would give up Essential Liberty to purchase a little
 Temporary Safety, deserve neither Liberty nor Safety."
        -- Benjamin Franklin, 1759





More information about the cairo mailing list