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