Diagrams: Difference between revisions

From HaskellWiki
m (Update homepage links)
 
(79 intermediate revisions by 5 users not shown)
Line 1: Line 1:
The '''diagrams''' library provides an embedded domain-specific language (EDSL) for creating simple pictures and diagrams in Haskell
[[Category:Graphics]]
[[Category:Libraries]]
[[Category:Packages]]


* [http://code.haskell.org/diagrams/ Homepage]
[[Image:Diagrams-logo.png]]
* [http://byorgey.wordpress.com/ Blog]
* [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/diagrams HackageDB]


The [http://diagrams.github.io diagrams framework] provides an embedded domain-specific language (EDSL) for declarative drawing.


== Rewrite ==
This is the diagrams wiki, for collecting tips and tricks, examples, information about related projects, and any other related information.  If you are looking for more structured documentation (tutorial, user manual, API reference), see the [http://diagrams.github.io diagrams web page].  There are also [https://github.com/diagrams/diagrams-lib/issues?state=open bug] [https://github.com/diagrams/diagrams-core/issues?state=open trackers] for different parts of the project.


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.
* [[/FAQ|Frequently asked questions]]
* [[/Install|Installation instructions]]
* [[/Contributing|How to contribute]]
* [[/Projects|Projects]]: who is working on what.
* [[/GSoC|Google Summer of Code projects]]


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.
* [[/Converting|Converting between different diagrams types]]


A rewrite of diagrams should include '''separate packages''' for:
* [[/Support|Which versions of GHC and Haskell Platform are supported]]


=== High-level code ===
* [[/Dev/Migrate0.7|0.6 to 0.7 migration]]: Description of API changes that may affect diagrams 0.6 code, with explanations of how to migrate to 0.7
* constraint solving
* [[/Dev/Migrate1.0|0.7 to 1.0 migration]]: Description of API changes that may affect diagrams 0.7 code, with explanations of how to migrate to 1.0
* high-level diagrams
* [[/Dev/Migrate1.1|1.0 to 1.1 migration]]: Description of API changes that may affect diagrams 1.0 code, with explanations of how to migrate to 1.1
** function plots
* [[/Dev/Migrate1.2|1.1 to 1.2 migration]]: Description of API changes that may affect diagrams 1.1 code, with explanations of how to migrate to 1.2
** histograms
* [[/Dev/Migrate1.3|1.2 to 1.3 migration]]: Description of API changes that may affect diagrams 1.2 code, with explanations of how to migrate to 1.3
** density diagrams
* [[/Dev/Migrate1.4|1.3 to 1.4 migration]]: Description of API changes that may affect diagrams 1.3 code, with explanations of how to migrate to 1.4


=== Low-level code ===
* [[/Dev|Developer wiki]]: notes on wanted features, style guidelines, best practices, etc.
* graphical primitives
** 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
** boolean operations of paths
* graphical attributes
** fill, stroke, arrows, shadow


=== Input/Output ===
* [[/Dev/BuildStatus|Build status]] of all diagrams packages at a glance.
* pure Haskell SVG loader
* [http://diagrams.github.io/backend-tests/all-index.html Current test case results for backends side-by-side.]
* interactive painting via Cairo
* pure Haskell PDF conversion via HPDF
* pure Haskell PNG conversion via ???
* etc.
 
== Inspiration ==
 
=== Food for thought ===
 
* [http://www.adobe.com/devnet/pdf/pdf_reference.html PDF reference]
* [http://www.w3.org/TR/SVG11/ SVG reference]
 
=== Related non-Haskell projects ===
 
* [http://asymptote.sourceforge.net/ Asymptote]
* [http://www.tug.org/metapost.html MetaPost]
* [http://www.texample.net/tikz/examples/ TikZ]
 
=== Related Haskell projects ===
 
* [http://hackage.haskell.org/package/Chart Chart]
* [http://hackage.haskell.org/package/gd gd]
* [http://www.haskell.org/haven/ Haven]
* [http://hackage.haskell.org/package/Hieroglyph Hieroglyph]
* [http://hackage.haskell.org/package/HPlot HPlot]
* [http://hackage.haskell.org/package/hps hps]
* [http://hackage.haskell.org/package/OpenVG OpenVG]

Latest revision as of 13:28, 13 August 2018


The diagrams framework provides an embedded domain-specific language (EDSL) for declarative drawing.

This is the diagrams wiki, for collecting tips and tricks, examples, information about related projects, and any other related information. If you are looking for more structured documentation (tutorial, user manual, API reference), see the diagrams web page. There are also bug trackers for different parts of the project.

  • 0.6 to 0.7 migration: Description of API changes that may affect diagrams 0.6 code, with explanations of how to migrate to 0.7
  • 0.7 to 1.0 migration: Description of API changes that may affect diagrams 0.7 code, with explanations of how to migrate to 1.0
  • 1.0 to 1.1 migration: Description of API changes that may affect diagrams 1.0 code, with explanations of how to migrate to 1.1
  • 1.1 to 1.2 migration: Description of API changes that may affect diagrams 1.1 code, with explanations of how to migrate to 1.2
  • 1.2 to 1.3 migration: Description of API changes that may affect diagrams 1.2 code, with explanations of how to migrate to 1.3
  • 1.3 to 1.4 migration: Description of API changes that may affect diagrams 1.3 code, with explanations of how to migrate to 1.4
  • Developer wiki: notes on wanted features, style guidelines, best practices, etc.