wumpus-core: Pure Haskell PostScript and SVG generation.

[ bsd3, graphics, library ] [ Propose Tags ]

Wumpus-Core is a low-level library for generating static 2D vector pictures, its salient feature is portability due to no FFI dependencies. It can generate PostScript (EPS) files and SVG files. The generated PostScript code is plain and reasonably efficient as the use of stack operations, i.e gsave and grestore, is minimized.

Although Wumpus-Core only generates vector output, the generated PostScript can be interpreted by GraphicsMagick or a similar tool to convert EPS files into bitmap image files (e.g JPEGs).

Wumpus-Core makes pictures from paths and text labels. Paths themselves are made from points. The usual affine transformations (rotations, scaling, translations) can be applied to Pictures. Unlike PostScript there is no notion of a current point, Wumpus-Core builds pictures in a coordinate-free style.


For actually building pictures, diagrams, etc. Wumpus-Core is very low-level. There is a supplementary package Wumpus-Basic available that helps create certain types of diagram, but it is experimental - functionality is added and dropped between releases, it has no stable API.

Some of the design decisions made for Wumpus-Core are not sophisticated (e.g. how path and text attributes like colour are handled, and how the bounding boxes of text labels are calculated), so Wumpus might be limited compared to other systems. However, the design permits a fairly simple implementation, which is a priority.

UPDATING from 0.37.0 or earlier to 0.41.0.

There were substantial changes in verion 0.40.0 - hence the version number jump from 0.37.0. Version 0.41.0 introduces mostly cosmetic changes, but for upgrading from 0.37.0 or earlier the change-notes that follow are still relevant.

Core.Picture API change - the path construction function has changed from path to primPath. The type of the path segments has changed, the functions lineTo and curveTo now build AbsPathSegments and primPath consumes AbsPathSegments.

The Text API has changed substantially, however most user code should only need minor changes. The functions writePS_latin1, writeEPS_latin1 and writeSVG_latin1 have been removed, code should be changed to use writePS, writeEPS and and writeSVG respectively. These three functions no longer take a TextEncoder argument as TextEncoders no longer exist.

The Font Size API has also changed substantially. It now exports a more consistent set of metrics (consistent with what is present in font files - the previous version was derived from hand measurements). It also adds a margin to bounding box calculations, again this is more consistent with how font files actually work.

The handling of escaped special characters is now more consistent and the escaping mecahnism has been clarified (previously the documentation and the implementation were at odds): PostScript glyph names are delimited between & (ampersand) and ; (semi), Unicode code points are delimited by &# (ampersand-hash) and ; (semi). Note Wumpus silently drops mal-formed escape charcters, for robustness this is preferable to throwing a runtime error, but it does mean the output needs visually checking.


v0.40.0 to v0.41.0:

v0.37.0 to v0.40.0:

Versions [RSS] [faq] 0.12.0, 0.13.0, 0.13.1, 0.14.0, 0.15.0, 0.16.0, 0.17.0, 0.18.0, 0.19.0, 0.20.0, 0.21.0, 0.22.0, 0.23.0, 0.30.0, 0.31.0, 0.32.0, 0.33.0, 0.34.0, 0.35.0, 0.36.0, 0.37.0, 0.40.0, 0.41.0, 0.42.0, 0.42.1, 0.43.0, 0.50.0, 0.51.0, 0.52.0, 0.52.1
Change log CHANGES
Dependencies base (<4.5), containers (>=0.3 && <=0.6), time (>=1.1.3 && <1.6), vector-space (>=0.6 && <1.0) [details]
License BSD-3-Clause
Copyright Stephen Tetley <stephen.tetley@gmail.com>
Maintainer Stephen Tetley <stephen.tetley@gmail.com>
Revised Revision 1 made by HerbertValerioRiedel at 2015-11-07T11:46:14Z
Category Graphics
Home page http://code.google.com/p/copperbox/
Uploaded by StephenTetley at 2010-12-28T13:59:44Z
Distributions NixOS:0.52.1
Downloads 23197 total (97 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs uploaded by user
Build status unknown [no reports yet]




Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

For package maintainers and hackage trustees