On 11/23/05 3:26 AM, Peter Weilbacher wrote:
The part that I didn't describe above and that you are not aware of was that we cannot draw transparent pixels on OS/2 (the graphics routines don't know an alpha channel). We can only compute the appearance of transparency and so simulate the correct appearance. Under these circumstances, cairo doesn't draw anything for the empty areas. But when blitting to screen the transparent areas are filled with whatever was there before (random parts of previous SVG content in most cases). As cairo has no knowledge about the background color it cannot draw these pixels correctly. Hence my original question about the background color behind the SVG and how I could access it from nsSVGCairoCanvas.
It sounds like your cairo backend might be correctly implemented, but as it isn't in CVS I can't check. Cairo has fallbacks that allow it to be implemented on platforms that have no native support for an alpha channel. If a backend doesn't support native compositing, the fallback calls _cairo_os2_surface_acquire_dest_image to obtain the current surface contents, does the composite internally, and then _cairo_os2_surface_release_dest_image to render the result. This is similar to the method nsImageOS2.cpp uses to draw RGBA images.
-tor _______________________________________________ mozilla-layout mailing list [email protected] http://mail.mozilla.org/listinfo/mozilla-layout
