@hackage wumpus-basic0.14.0

Common drawing utilities built on wumpus-core.

** WARNING ** - this package is sub-alpha, it was released to Hackage prematurely and while its capabilities have improved with subsequent updates it is arguably becoming even less stable and more experimental (unfortunately the only thing consistent about the API is that it consistently changes...).

Version 0.14.0 breaks up Wumpus-Basic into two layers - Wumpus.Basic for core data types, general utilities and System utilities (currently only font loading); the other layer, Wumpus.Drawing, is for for specific drawing "objects" - arrowheads, dots, and the like. The APIs of the Drawing modules have not been given much attention as the underlying graphic types have changed, they are due for substantial revision. This includes modules that were previously considered fairly stable such as the Basic.SafeFonts module which no longer seems very SVG safe.

NOTE - many of the demos now use font metrics. Font metrics for the "Core 14" PostScript fonts are distributed as *.afm files with GhostScript in the fonts directory. Wumpus expects the GhostScript font metrics to be AFM version 2.0 files (this matches GhostScript 8.63). Alternatively, metrics for the Core 14 fonts are available from Adode (AFM version 4.1), see the links below. To run the demos properly you will need one of these sets of metrics.

Adobe Font techinal notes: https://www.adobe.com/devnet/font.html

Core 14 AFM metrics: https://www.adobe.com/content/dam/Adobe/en/devnet/font/pdfs/Core14_AFMs.tar

Also note that Wumpus uses fallback metrics (derived from the monospaced Courier font) when font loading fails, rather than throwing a terminal error. Applications should ideally check the font loading log to ensure that fonts have loaded correctly (the demos print this log to standard out).

Changelog:

v0.13.0 to v0.14.0:

  • Re-organised module hierarchy, Wumpus-Basic is now divided into two layers - Basic (Font loader, utils, kernel drawing) and Drawing - constructed graphic objects like arrows, dots, etc.

  • Re-designed the ContextFunction function types. Context functions with different numbers of static arguments are now separate newtypes. This has allowed a major cull of the combinators operating on context functions (prepro, postpro, situ, etc.) and now only a handful of special combinators are needed. As the newtypes are instances of Monad and Applicative the usual Applicative and Monad combinators are now more readily useful.

  • Work on the font loader code to improve its robustness, and improved error signalling on load failure. Loading glyph metrics now returns both the metrics (possibly fallback metrics if parsing failed) and a log.

v0.12.0 to v0.13.0:

  • Major changes to Basic.Graphic modules. DrawingR is renamed Drawing and is substantially re-worked. Graphic functional types are now encapulated in the Drawing constructor Drawing (ctx -> pt -> prim) rather than partially outside it pt -> Drawing (ctx -> prim). Drawing monad renamed TraceDrawing and DrawingT transformer renamed TraceDrawingT.

  • Rudimentary font loading added, only AFM files are supported.

  • Basic.Shapes.Coordinate re-worked. The Coordinate type is now more like the Shapes types (excepting the intentional difference in drawing style).

  • Basic.Shapes.Plaintext removed.

  • Basic.Text.LRText completely redesigned.