Difference between revisions of "Diagrams"

From HaskellWiki
Jump to navigation Jump to search
m
(delete some stuff I don't intend to support)
Line 14: Line 14:
 
A rewrite of diagrams should include '''separate packages''' for:
 
A rewrite of diagrams should include '''separate packages''' for:
   
=== High-level code ===
+
=== Core DSL ===
* constraint solving
 
* high-level diagrams
 
** function plots
 
** histograms
 
** density diagrams
 
   
=== Low-level code ===
 
 
* graphical primitives
 
* graphical primitives
** text, rectangles, polygons, paths, stars, [http://www.jroller.com/aalmiray/entry/jsilhouette_0_3_released symbols]
+
** text, rectangles, polygons, paths, stars?, [http://www.jroller.com/aalmiray/entry/jsilhouette_0_3_released symbols]?
 
*** imho there should be primitive shape typeclass, so that shapes like circles and rectangles have a "convertToPath" function. Backends like SVG can then choose to convert shapes like a rectangle to a polygon or to a SVG rectangle
 
*** imho there should be primitive shape typeclass, so that shapes like circles and rectangles have a "convertToPath" function. Backends like SVG can then choose to convert shapes like a rectangle to a polygon or to a SVG rectangle
 
** boolean operations of paths
 
** boolean operations of paths
 
* graphical attributes
 
* graphical attributes
 
** fill, stroke, arrows, shadow
 
** fill, stroke, arrows, shadow
 
* constraint solving
   
 
=== Input/Output ===
 
=== Input/Output ===

Revision as of 18:24, 27 October 2009

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


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 because of its Cairo dependence.

A rewrite of diagrams should include separate packages for:

Core DSL

  • graphical primitives
    • text, rectangles, polygons, paths, stars?, symbols?
      • imho there should be primitive shape typeclass, so that shapes like circles and rectangles have a "convertToPath" function. Backends like SVG can then choose to convert shapes like a rectangle to a polygon or to a SVG rectangle
    • boolean operations of paths
  • graphical attributes
    • fill, stroke, arrows, shadow
  • constraint solving

Input/Output

Output

  • interactive drawing via Cairo
  • PDF export via pure HPDF
  • EPS export
  • LaTeX export
  • exotic backends

Input

  • pure Haskell PNG import via pngload
  • pure Haskell SVG import

Inspiration

Related non-Haskell projects

Food for thought