<div dir="ltr"><div>Thanks for all the great feedback from everyone so far. I'm working to finish up the initial reference implementation and get it published on GitHub at which point the plan is to use the mechanisms there to add and track the various ideas that have come in so far so that we hopefully don't overlook any of them. I can't guarantee that they'll all be adopted, but I hope that a lot of them will be (some of them I'd thought of already, others I didn't but think make a lot of sense).</div>
<div> </div><div>I had hoped to have the reference implementation done a few hours ago but I got caught up in the intricacies of the raster source pattern's callbacks and it took me a lot longer than I expected to get a handle on how they seem to be used. I'm still working on mechanisms for them and am making real progress again, but at this point I'm adopting an "it'll be ready when it's ready" attitude rather than making any predictions.</div>
<div> </div><div>Thanks again for all the great suggestions and please keep them coming!</div>
<div> </div><div>-Mike</div><div> </div><div><br></div><div class="gmail_extra"><div class="gmail_quote">On Wed, Jan 22, 2014 at 7:32 AM, Tavmjong Bah <span dir="ltr"><<a href="mailto:tavmjong@free.fr" target="_blank">tavmjong@free.fr</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid"><div>On Mon, 2014-01-20 at 19:16 -0500, Michael McLaughlin wrote:<br>
> Hi!<br>
><br>
> I wanted to give everyone an update. Earlier today a proposal that<br>
> Herb, Jason, and I have been working on, N3888: A Proposal to Add 2D<br>
> Graphics Rendering and Display to C++, was published here:<br>
> <a href="http://isocpp.org/files/papers/N3888.pdf" target="_blank">http://isocpp.org/files/papers/N3888.pdf</a> . The main focus of the<br>
> proposal is a series of rules that enable a mechanical transformation<br>
> from the cairo API to an API that is in the style of the C++ Standard<br>
> Library (the STL).<br>
><br>
> We expect to present the proposal for feedback at the Issaquah, WA<br>
> meeting of the ISO C++ Committee (PDF) which runs from Feb. 10 - Feb.<br>
> 15, 2014 (I will personally be there from mid-day Monday through<br>
> Wednesday). We do not expect that the proposal is final and we are<br>
> soliciting feedback on it from everyone who is interested. This<br>
> includes all of you. We are hopeful that you will all be receptive to<br>
> the approach we have taken and are supportive of the concept (even if<br>
> you might have some ideas about how to make technical improvements).<br>
<br>
</div>This looks quite interesting. We (Inkscape) use Cairo to render SVG. It<br>
is a pretty good match for this. Firefox and Webkit also used/use Cairo<br>
too (see comment at end). I assume that the target "backend" is<br>
on-screen display so one would still need a library like Cairo to handle<br>
other types of output (PNG, PDF, SVG, etc.).<br>
<br>
I do have one overall observation. Cairo and other similar libraries<br>
seem to implement the same graphics elements that have been around since<br>
the beginning. Perhaps this is because those are the only elements that<br>
are really needed but I have a feeling this is more that they copy from<br>
each other. I would hope that this specification would be a bit more<br>
forward looking.<br>
<br>
Here are a few things that are missing from Cairo:<br>
<br>
1. The ability to use fonts that are not installed on the system (i.e.<br>
user fonts) at the same time one uses system fonts. (There is a user<br>
font API in Cairo but isn't integrated with the other font back ends.)<br>
<br>
2. Font selection. The world is more than 'normal' and 'bold' or<br>
'normal' and 'italic'. Font families often have many more variants. This<br>
is a very important point for designers. For a better idea of what is<br>
required see: <a href="http://www.w3.org/TR/css3-fonts/" target="_blank">http://www.w3.org/TR/css3-fonts/</a><br>
<br>
3. Pseudo 3D transforms. See: <a href="http://www.w3.org/TR/css3-transforms/" target="_blank">http://www.w3.org/TR/css3-transforms/</a><br>
<br>
4. Arcs line-join. See:<br>
<a href="https://svgwg.org/svg2-draft/painting.html#LineJoin" target="_blank">https://svgwg.org/svg2-draft/painting.html#LineJoin</a><br>
(I have an experimental implementation for the bitmap Cairo back-end.)<br>
<br>
5. Color spaces and color management.<br>
<br>
6. More than 24bit color (with alpha). The development version of Gimp<br>
can handle 32 bit floating point per channel (as well as archaic indexed<br>
color formats), see:<br>
<a href="http://libregraphicsworld.org/blog/entry/gimp-2.8-released-next-version-to-get-high-bit-depth-precision" target="_blank">http://libregraphicsworld.org/blog/entry/gimp-2.8-released-next-version-to-get-high-bit-depth-precision</a><br>
<br>
7. Pixel operations (provided to Cairo via pixman). Including setting<br>
upscaling/downscaling method.<br>
<br>
8. Filter effects. See: <a href="http://www.w3.org/TR/filter-effects/" target="_blank">http://www.w3.org/TR/filter-effects/</a><br>
<br>
9. Metadata (author, etc.) if this proposal is for more than on-screen<br>
display.<br>
<br>
I've asked the Inkscape developers mailing list and the SVG WG mailing<br>
list for others.<br>
<br>
A couple more comments:<br>
<br>
One should treat Canvas and SVG separately. They serve different<br>
purposes (one produces bitmap graphics, the other vectorized graphics;<br>
they are part of different standardization processes). The fact that<br>
Apple has hinted at IP rights with regards to Canvas should not effect<br>
SVG. BTW, that email is from 2007, apparently before Canvas was<br>
incorporated into HTML5, so Apple should have by now clarified what IP<br>
rights they could assert.<br>
<br>
Firefox used Cairo for all rendering at one point. They have moved away<br>
from it. For their rational, see:<br>
<br>
<a href="https://people.mozilla.org/~roc/Samsung/Mozilla2DGraphics.pdf" target="_blank">https://people.mozilla.org/~roc/Samsung/Mozilla2DGraphics.pdf</a><br>
<a href="https://blog.mozilla.org/joe/2011/04/26/introducing-the-azure-project/" target="_blank">https://blog.mozilla.org/joe/2011/04/26/introducing-the-azure-project/</a><br>
<br>
Tav<br>
<br>
<br>
<br>
<br>
</blockquote></div><br></div></div>