Cool! Looking forward to it.<div><br><div class="gmail_quote">On Mon, Feb 2, 2009 at 12:10 AM, Jeff Heard <span dir="ltr">&lt;<a href="mailto:jefferson.r.heard@gmail.com">jefferson.r.heard@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Everyone, I&#39;ll be releasing Hieroglyph this week. &nbsp;Right now I&#39;m unit<br>
testing and I&#39;ve been out of town this past weekend without much<br>
opportunity to work on it. &nbsp;It&#39;s not yet a complete functional<br>
re-working of Cairo -- for instance, right now patterns aren&#39;t<br>
supported, and Pango layouts aren&#39;t either -- but it should become so.<br>
&nbsp;I&#39;ll also be forking Hieroglyph to develop a complete,<br>
pure-functional 2D graphics toolkit.<br>
<br>
-- Jeff<br>
<br>
2009/1/31 Peter Verswyvelen &lt;<a href="mailto:bugfact@gmail.com">bugfact@gmail.com</a>&gt;:<br>
<div><div></div><div class="Wj3C7c">&gt; Hi Conal,<br>
&gt; Do you have any links to this interesting work of Jefferson Heard? Blogs or<br>
&gt; something? I failed to Google it, I mainly found his OpenGL TrueType<br>
&gt; bindings on Hackage and his<br>
&gt; beautiful <a href="http://bluheron.europa.renci.org/docs/BeautifulCode.pdf" target="_blank">http://bluheron.europa.renci.org/docs/BeautifulCode.pdf</a><br>
&gt; Regarding semantics, modern GPUs are able to render 2D graphics (e.g. filled<br>
&gt; or stroked curves) as real functions / relations; you don&#39;t need fine<br>
&gt; tessellation anymore since these computational monsters have become so fast<br>
&gt; that per pixel inside / outside testing are feasible now. It&#39;s basically a<br>
&gt; simple form of real-time ray-tracing :) &nbsp;A quick search revealed another<br>
&gt; paper using these<br>
&gt; techniques <a href="http://alice.loria.fr/publications/papers/2005/VTM/vtm.pdf" target="_blank">http://alice.loria.fr/publications/papers/2005/VTM/vtm.pdf</a><br>
&gt; Cheers,<br>
&gt; Peter<br>
&gt; 2009/1/31 Conal Elliott &lt;<a href="mailto:conal@conal.net">conal@conal.net</a>&gt;<br>
&gt;&gt;<br>
&gt;&gt; Hi Antony,<br>
&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Hopefully some enterprising Haskell hacker will wrap Cairo in a nice<br>
&gt;&gt;&gt; purely functional API.<br>
&gt;&gt;<br>
&gt;&gt; Jefferson Heard is working on such a thing, called Hieroglyph. &nbsp;Lately<br>
&gt;&gt; I&#39;ve been helping him simplify the design and shift it toward a clear,<br>
&gt;&gt; composable semantic basis, i.e. &quot;genuinely functional&quot; (as in the Fruit<br>
&gt;&gt; paper), meaning that it can be understood &amp; reasoned about in precise terms<br>
&gt;&gt; via model that is much simpler than IO.<br>
&gt;&gt;<br>
&gt;&gt; In the process, I realized more clearly that the *very goal* of making a<br>
&gt;&gt; purely functional wrapper around an imperative library leads to muddled<br>
&gt;&gt; thinking. &nbsp;It&#39;s easy to hide the IO without really eliminating it from the<br>
&gt;&gt; semantics, especially if the goal is defined in terms of an IO-based<br>
&gt;&gt; library. &nbsp;Much harder, and I think much more rewarding, is to design<br>
&gt;&gt; semantically, from the ground up, and then figure out how to implement the<br>
&gt;&gt; elegant semantics with the odds &amp; ends at hand (like Cairo, OpenGL, GPU<br>
&gt;&gt; architectures, ...).<br>
&gt;&gt;<br>
&gt;&gt; Regards,<br>
&gt;&gt;<br>
&gt;&gt; &nbsp; &nbsp; - Conal<br>
&gt;&gt;<br>
&gt;&gt; On Fri, Jan 30, 2009 at 1:56 PM, Antony Courtney<br>
&gt;&gt; &lt;<a href="mailto:antony.courtney@gmail.com">antony.courtney@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Fri, Jan 30, 2009 at 4:25 PM, Bryan O&#39;Sullivan &lt;<a href="mailto:bos@serpentine.com">bos@serpentine.com</a>&gt;<br>
&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt; &gt; On Fri, Jan 30, 2009 at 1:11 PM, Antony Courtney<br>
&gt;&gt;&gt; &gt; &lt;<a href="mailto:antony.courtney@gmail.com">antony.courtney@gmail.com</a>&gt;<br>
&gt;&gt;&gt; &gt; wrote:<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; A 2-D vector graphics library such as Java2D ( or Quartz on OS/X or<br>
&gt;&gt;&gt; &gt;&gt; GDI+ on Windows ) supports things like computing tight bounding<br>
&gt;&gt;&gt; &gt;&gt; rectangles for arbitrary shapes, hit testing for determining whether a<br>
&gt;&gt;&gt; &gt;&gt; point is inside or outside a shape and constructive area geometry for<br>
&gt;&gt;&gt; &gt;&gt; shape compositing and clipping without dropping down to a raster<br>
&gt;&gt;&gt; &gt;&gt; representation.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; These are the kinds of capabilities provided by Cairo, which is very<br>
&gt;&gt;&gt; &gt; pleasant to use (PDF-style imaging model) and quite portable. There are<br>
&gt;&gt;&gt; &gt; already Cairo bindings provided by gtk2hs, too.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Hi Bryan,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Nice to hear from you! &nbsp;Been a while...<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Just had a quick look and it does indeed appear that Cairo now<br>
&gt;&gt;&gt; supports some of the features I mention above (bounds calculations and<br>
&gt;&gt;&gt; hit testing). &nbsp;Cairo has clearly come a long way from when I was last<br>
&gt;&gt;&gt; working on Fruit and Haven in 2003/2004; &nbsp;back then it looked like it<br>
&gt;&gt;&gt; only provided a way to render or rasterize vector graphics on to<br>
&gt;&gt;&gt; bitmap surfaces and not much else.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; It&#39;s not clear to me if the Cairo API in its current form supports<br>
&gt;&gt;&gt; vector-level clipping or constructive area geometry, and it looks like<br>
&gt;&gt;&gt; the API is still pretty render-centric (e.g. is it possible to obtain<br>
&gt;&gt;&gt; the vector representation of rendering text in a particular font?).<br>
&gt;&gt;&gt; That might make it challenging to use Cairo for something like the<br>
&gt;&gt;&gt; Haven API, but maybe one can live without that level of generality.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; In any case: delighted to see progress on this front! &nbsp;Hopefully some<br>
&gt;&gt;&gt; enterprising Haskell hacker will wrap Cairo in a nice purely<br>
&gt;&gt;&gt; functional API.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; &nbsp; &nbsp;-Antony<br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; Haskell-Cafe mailing list<br>
&gt;&gt;&gt; <a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
&gt;&gt;&gt; <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Haskell-Cafe mailing list<br>
&gt;&gt; <a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
&gt;&gt; <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Haskell-Cafe mailing list<br>
&gt; <a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
&gt; <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
&gt;<br>
&gt;<br>
</div></div></blockquote></div><br></div>