<div dir="ltr"><div>Hi Rob,</div><div> </div><div>That was definitely an interesting read and well worth the time. I plan to read it again in the morning when my brain is fresh. I think the best lesson I took from it so far comes in the form of a confirmation. When SG13 (the ISO C++ 2D Graphics Study Group) formed, we decided that for "V1" we would focus on an immediate mode API (i.e. a relatively stateful, low-level drawing API) and leave a retained mode API (i.e. something with a scene graph, along the lines of the scenes that can be composed by parsing SVG, XAML, or HTML) for later if there was a demand for it. I had strong suspicions (gleaned from my own perspective as a user of such technologies along with some very simple creations of scene graphs for various internal tools) that creating, maintaining, and allowing the manipulation of a scene graph was complex. Your article very much confirms that suspicion and makes me extremely glad that we decided to choose a very narrow scope to begin with.</div>
<div> </div><div>Thanks for the interesting read and the insight that it, and your comments, provide!</div><div> </div><div>-Mike</div><div> </div><div><br></div><div class="gmail_extra"><div><br></div><div class="gmail_quote">
On Sun, Feb 2, 2014 at 5:27 PM, Robert O'Callahan <span dir="ltr"><<a href="mailto:robert@ocallahan.org" target="_blank">robert@ocallahan.org</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 dir="ltr"><div class="im">On Tue, Jan 21, 2014 at 8:17 PM, Jeff Muizelaar <span dir="ltr"><<a href="mailto:jeff@infidigm.net" target="_blank">jeff@infidigm.net</a>></span> wrote:<br></div><div class="gmail_extra">
<div class="gmail_quote"><div class="im">
<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">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: <a href="http://dxr.mozilla.org/mozilla-central/source/gfx/2d/2D.h" target="_blank">http://dxr.mozilla.org/mozilla-central/source/gfx/2d/2D.h</a><span><font color="#888888"><br>

</font></span></blockquote><div> </div></div><div>Some of the motivation behind Moz2D is given here: <a href="http://robert.ocallahan.org/2011/09/graphics-api-design.html" target="_blank">http://robert.ocallahan.org/2011/09/graphics-api-design.html</a>. I think that's worth reading, not because I wrote it :-), but because it crystallizes some lessons from using cairo in Firefox for many years.<br>

<br></div><div>Even given the disadvantages of cairo discussed there, it might still be the best choice for a C++ standard library. If you want the standard library to be convenient for building specific graphical applications, and care less about using it to build browser-like application frameworks --- and you don't care about squeezing out every last drop of performance --- it's probably fine.<br>

</div></div><br clear="all">Rob<span class="HOEnZb"><font color="#888888"><br>-- <br><div dir="ltr">Jtehsauts  tshaei dS,o n" Wohfy  Mdaon  yhoaus  eanuttehrotraiitny  eovni le atrhtohu gthot sf oirng iyvoeu rs ihnesa.r"t sS?o  Whhei csha iids  teoa stiheer :p atroa lsyazye,d  'mYaonu,r  "sGients  uapr,e  tfaokreg iyvoeunr, 'm aotr  atnod  sgaoy ,h o'mGee.t"  uTph eann dt hwea lmka'n?  gBoutt  uIp  waanndt  wyeonut  thoo mken.o w  <span><span><b><br>

</b></span></span></div>
</font></span></div></div>
</blockquote></div><br></div></div>