Re: Cairo and ISO C++

Jeff Muizelaar <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <[email protected]>
On 1/20/2014, 7:16 PM, Michael McLaughlin wrote:
> Hi!
> I wanted to give everyone an update. Earlier today a proposal that 
> Herb, Jason, and I have been working on, N3888: A Proposal to Add 2D 
> Graphics Rendering and Display to C++, was published here: 
> http://isocpp.org/files/papers/N3888.pdf . The main focus of the 
> proposal is a series of rules that enable a mechanical transformation 
> from the cairo API to an API that is in the style of the C++ Standard 
> Library (the STL).
I've only quickly skimmed this proposal but one suggestion that 
immediately comes to mind is to drop the EXTEND_NONE mode. I've only 
ever seen this extend mode in cairo. It's not in CoreGraphics, Skia, or 
Direct2D and is not very efficiently implemented on GPUs.

It's also a bit of a user trap because the intuitive way to draw an 
image is with cairo_paint_surface() which works as long as the 
transformation matrix is the identity. As soon as it is not, you end up 
with fuzzy image borders. CoreGraphics, Skia and Direct2D all solve this 
problem by having api similar to HTML Canvas's drawImage() that 
effectively does set_extend(EXTEND_PAD); clip(imageBoundsRect()); 
paint(image);

The work we've done on the Moz2D API may also be of some interest to 
you. It aims to be an efficient C++ wrapper around cairo, CoreGraphics, 
Skia and Direct2D. The API is not as polished as cairo but it aims to 
expose a common subset of functionality. Because of this it has been 
much easier to support different backends than it has been in cairo. You 
can see it here: http://dxr.mozilla.org/mozilla-central/source/gfx/2d/2D.h

-Jeff
-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.