Difference between revisions of "Diagrams"

From HaskellWiki
Jump to navigation Jump to search
Line 7: Line 7:
 
== Ideas for the rewrite ==
 
== Ideas for the rewrite ==
   
Many Haskell graphic libraries are tied to a specific rendering backend (Cairo, OpenGL, libGD etc) which makes collaboration and reuse of code and data strcutreus very hard or impossible.
+
Many Haskell graphic libraries are tied to a specific rendering backend (Cairo, OpenGL, libGD etc) which makes collaboration and reuse of code and data structures very hard or impossible.
  +
  +
Also some dependencies are hard to fulfill. Cairo is very difficult to install on Mac OS 10.6. If you just need to generate PDF diagrams, you could choose the pure HPDF library where e.g. Hieroglyph can not be installed.
   
 
A rewrite of diagrams should include separate packages for:
 
A rewrite of diagrams should include separate packages for:

Revision as of 11:35, 23 October 2009

The diagrams library provides an embedded domain-specific language (EDSL) for creating simple pictures and diagrams in Haskell


Ideas for the rewrite

Many Haskell graphic libraries are tied to a specific rendering backend (Cairo, OpenGL, libGD etc) which makes collaboration and reuse of code and data structures very hard or impossible.

Also some dependencies are hard to fulfill. Cairo is very difficult to install on Mac OS 10.6. If you just need to generate PDF diagrams, you could choose the pure HPDF library where e.g. Hieroglyph can not be installed.

A rewrite of diagrams should include separate packages for:

  • high-level code (constraint solving)
  • low-level graphical primitives (rectangles, polygons, paths, etc)
    • imho there should be primitive shape typeclass like circles and rectangles having a "convertToPath" function. Backends like SVG can then choose to use a primitive like a rectangle as a polygon or a rectangle
    • boolean combination of paths
  • input/output backends
    • pure Haskell SVG loader
    • interactive painting via Cairo
    • pure Haskell PDF conversion via HPDF
    • pure Haskell PNG conversion via ???
    • etc.