wumpus-core-0.52.0: wumpus-core.cabal
name: wumpus-core
version: 0.52.0
license: BSD3
license-file: LICENSE
copyright: Stephen Tetley <stephen.tetley@gmail.com>
maintainer: Stephen Tetley <stephen.tetley@gmail.com>
homepage: http://code.google.com/p/copperbox/
category: Graphics
synopsis: Pure Haskell PostScript and SVG generation.
description:
.
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.
.
GENERAL DRAWBACKS...
.
For actually building pictures, diagrams, etc. Wumpus-Core is
very low-level. There are two supplementary packages
@Wumpus-Basic@ and @Wumpus-Drawing@ also on Hackage that aim to
be a higher-level basis for creating certain types of diagram,
but they are experimental - functionality is added and dropped
between releases and curently the API is too unstable to write
code upon (they should be considered a technology preview rather
than re-usable libraries).
.
Also, 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. Compared to other systems, Wumpus might be rather
limited, however, the design permits a fairly simple
implementation.
.
.
Changelog:
.
v0.51.0 to v0.52.0:
.
* Added limited support for adding SVG ids to text and
Primitives.
.
* Fixed types of @d2r@ and @r2d@ to Double for degrees, rather
than a parametric (Real a, Floating a) type. Although this is
less general, it removes the burden of type annotating the
common case.
.
* Added the vector functions @orthoVec@, @vsum@ and @vdiff@ to
@Core.Geometry@.
.
* Re-named @clip@ to @clipPrimitive@
.
v0.50.0 to v0.51.0:
.
* Added special cases to handle continuity to the function
@lineDirection@ in @Core.Geometry@.
.
* Added @zeroVec@ to @Core.Geometry@.
.
* Extended some Haddock documentation.
.
v0.43.0 to v0.50.0:
.
* Major change hence the version number jump - the notion of
parametric unit has been removed from the @Picture@ objects
(it for remains the @Geometric@ objects @Point2@, @Vec2@ etc.).
Certain useful units, e.g. @em@ and @en@, are contextual on
the \"current point size\", and having a parametric unit here
was actually a hinderance to supporting units properly in
higher-level layers. Now all Picture objects (those defined
or exported from @Core.Picture@) are fixed to use Double
- representing PostScript points. Higher level layers that
intend to support alternative units must translate drawing
objects to PostScript point measurements /before/ calling the
Picture API. Geometric objects - objects defined in
@Core.Geometry@, e.g. @Point2@, @Vec2@ - are still polymorphic
on unit.
.
* Picture API change - Various function names changed.
@lineTo@ becomes @absLineTo@ and @curveTo@ becomes
@absCurveTo@. The path builders are qualified with /Prim/,
@vertexPath@ becomes @vertexPrimPath@, @vectorPath@ becomes
@vectorPrimPath@, @emptyPath@ becomes @emptyPrimPath@ and
@curvedPath@ becomes @curvedPrimPath@. @xlink@ becomes
@xlinkPrim@.
.
* API change - @PtSize@ data type replaced by @AfmUnit@ for font
measurements.
.
* API and representation change - clipping paths are represented
as @Primitive@ constructor rather than a @Picture@ constructor.
This should make them more useful. The type of the function
@clip@ in @Core.Picture@ has likewise changed.
.
* Picture API change - changed @primPath@ to @absPrimPath@, added
the functions @relPrimPath@, @relLineTo@, @relCurveTo@.
.
* Added the class @Tolerance@ to @Core.Geometry@ and made the Eq
instances of @Point2@, @Vec2@ and @BoundingBox@ tolerant.
Tolerance accounts for a fairly lax equality on floating point
numbers - it is suitable for Wumpus (printing) where high
accuracy is needed.
.
v0.42.1 to v0.43.0:
.
* API change - the function @bezierCircle@ in @Core.Geometry@
has changed. It now implements a better method of drawing
circles with Bezier curves and no longer needs the
subvision factor. The old circle drawing function has been
retained as @subdivisionCircle@ as it is useful for
corroborating @bezierCircle@, but the general use of
@subdivisionCircle@ should be avoided.
.
* Added a function @bezierEllipse@ to @Core.Geometry@.
.
build-type: Simple
stability: unstable
cabal-version: >= 1.2
extra-source-files:
CHANGES,
LICENSE,
demo/AffineTest01.hs,
demo/AffineTest02.hs,
demo/AffineTest03.hs,
demo/AffineTestBase.hs,
demo/ClipPic.hs,
demo/DeltaPic.hs,
demo/EllipsePic.hs,
demo/FontMetrics.hs,
demo/Hyperlink.hs,
demo/KernPic.hs,
demo/LabelPic.hs,
demo/Latin1Pic.hs,
demo/MultiPic.hs,
demo/TextBBox.hs,
demo/TransformEllipse.hs,
demo/TransformPath.hs,
demo/TransformTextlabel.hs,
demo/ZOrderPic.hs,
doc/Guide.pdf,
doc-src/Guide.lhs,
doc-src/Makefile,
doc-src/WorldFrame.hs
library
hs-source-dirs: src
build-depends: base < 5,
containers >= 0.3 && <= 0.6,
time >= 1.1.3 && < 1.6,
vector-space >= 0.6 && < 1.0
exposed-modules:
Wumpus.Core,
Wumpus.Core.AffineTrans,
Wumpus.Core.BoundingBox,
Wumpus.Core.Colour,
Wumpus.Core.FontSize,
Wumpus.Core.Geometry,
Wumpus.Core.GraphicProps,
Wumpus.Core.OutputPostScript,
Wumpus.Core.OutputSVG,
Wumpus.Core.Picture,
Wumpus.Core.Text.Base,
Wumpus.Core.Text.GlyphIndices,
Wumpus.Core.Text.GlyphNames,
Wumpus.Core.Text.Latin1Encoding,
Wumpus.Core.Text.StandardEncoding,
Wumpus.Core.Text.Symbol,
Wumpus.Core.VersionNumber,
Wumpus.Core.WumpusTypes
other-modules:
Wumpus.Core.PageTranslation,
Wumpus.Core.PictureInternal,
Wumpus.Core.PostScriptDoc,
Wumpus.Core.SVGDoc,
Wumpus.Core.TrafoInternal,
Wumpus.Core.Utils.Common,
Wumpus.Core.Utils.HList,
Wumpus.Core.Utils.JoinList,
Wumpus.Core.Utils.FormatCombinators
extensions:
ghc-options:
includes: