Diagrams: Difference between revisions
(→Output) |
|||
Line 35: | Line 35: | ||
* pure Haskell PDF export via [http://hackage.haskell.org/package/HPDF HPDF] | * pure Haskell PDF export via [http://hackage.haskell.org/package/HPDF HPDF] | ||
* exotic backends | * exotic backends | ||
** generate Java2d or Processing source code | ** generate Java2d or [http://www.processing.org/ Processing] source code | ||
==== Input ==== | ==== Input ==== |
Revision as of 13:09, 23 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:
High-level code
- constraint solving
- high-level diagrams
- function plots
- histograms
- density diagrams
Low-level code
- 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
- text, rectangles, polygons, paths, stars, symbols
- graphical attributes
- fill, stroke, arrows, shadow
Input/Output
Output
- interactive drawing via Cairo
- pure Haskell PDF export via HPDF
- exotic backends
- generate Java2d or Processing source code
Input
- pure Haskell PNG import via pngload
- pure Haskell SVG import