## Changelog for diagrams-lib-0.5

0.5: 9 March 2012
* New features:
- 'mkSizeSpec' function for constructing a SizeSpec2D from two (Maybe Double)s
- 'beneath' as convenient synonym for 'flip atop'
- Improvements and extensions to rounded rectangles by Peter Hall:
+ roundedRect' allows rounded rectangles with a different radius
specified for each corner
+ both roundedRect' and roundedRect now allow negative radii,
resulting in "inverted" circular corners
- #64: New 'Alignable' class for things that can be aligned.
- explodeTrail and explodePath have been generalized to return any
PathLike type.
- New path functions pathCentroid (compute the centroid of a
path's vertices) and expandPath (scale a path about its centroid).
- Generalized 'centroid' function now exported from new module
Diagrams.Points
- Initial (experimental) support for animation:
+ Animation and QAnimation defined as synonyms for Active
diagrams (see 'active' package)
+ Instances for Active: V, HasOrigin, Transformable,
HasStyle, PathLike, Juxtaposable, Alignable
+ animEnvelope and animRect functions for automatic bounding of
animations
- addClosingSegment function for making the implicit closing
segment of a closed trail explicit
- Improvements to BoundingBox module from Michael Sloan: querying
of BoundingBox bounds, corners, extents, and transformation of
objects to fit within a given box.
- Text alignment options from Michael Sloan
- 'view' function for restricting a diagram's envelope to a
rectangular region.
- 'iterateN' function for iterating a finite number of times
- 'atAngle' for placing two diagrams next to each other along a
specified angle.
- padX and padY functions for padding in the X- and Y-directions
independently.
- generalized showOrigin function from Ian Ross
- #40: add shears to Diagrams.TwoD.Transform
* Performance improvements
- Use a balanced folding scheme for cat', reducing time in some
cases from O(n^2) to O(n log n)
- More efficient implementation of beside
* New instances:
- Alignable instances for QDiagram, Path, Envelope, Active, Set,
Map, []
- Renderable instances for NullBackend (Trail, Path, Segment,
Image, Text)
- Instances for Active: V, HasOrigin, Transformable,
HasStyle, PathLike, Juxtaposable, Alignable
* API changes
- #61: terminology change from "bounds" to "envelope"
+ boundary -> envelopeP
+ "bounding region" -> "envelope"
+ Bounds -> Envelope
+ Boundable -> Enveloped
+ getBounds -> getEnvelope
+ etc.
- rename AnnDiagram to QDiagram
- R2 used to be a synonym for (Double, Double) but is now
abstract. To convert between pairs of Doubles and R2, use the
new functions 'r2' and 'unr2'. There are two reasons for this
change:
1. to allow for future changes to the implementation of R2;
2. (Double, Double) was an awkward special case getting in the
way of useful tuple instances for classes like HasOrigin,
Enveloped, and so on.
- 'circlePath' has been removed; its functionality has been
subsumed by 'circle'.
- adjustSegment now takes an extra tolerance option.
- Ellipses are now represented using Bezier approximations rather
than a separate special type.
- BoundingBox no longer has a Transformable instance; the old
instance was misleading at best.
- Change semantics of 'beside' (hence also (|||) and (===)) so the
result's origin is the same as that of the first argument.
- adjustDia2D now takes a SizeSpec2D.
- 'beside' and related functions are now implemented in terms of
'juxtapose'.
- Instead of taking an R2, roundedRect now takes a pair of
Doubles, to be more consistent with 'rect'.
* Dependency/version changes
- Support for GHC 7.4.1:
+ depend on colour >= 2.3.2
+ update base and array upper bounds
- bump vector-space upper bound
* Bug fixes
- Avoid scale by zero error in showOrigin.
- Base adjustDia2D translation on output size rather than diagram size.
0.4.0.1: 30 October 2011
* bump data-default dependency to allow version 0.3
0.4: 23 October 2011
* documentation fixes
* New functions and primitives:
+ 'wedge' shape primitive
+ 'fromDirection' function for converting angles to 2D unit vectors;
inverse function 'direction' generalized to return any Angle type
+ New functions for computing and adjusting segment lengths
+ 'scaleUToX' and 'scaleUToY' for doing uniform scales
resulting in a desired width or height.
+ 'circlePath', 'reversePath', 'decoratePath'
* New features:
+ Completely new and improved polygon generation API
+ Cubic splines
+ User-controllable path fill rules
* Bug fixes:
+ fix incorrect corner case in arc generation
+ fix incorrect reverseTrail function
0.3: 18 June 2011
* New features:
+ new customizable stroke' function which lets you assign names to
path vertices
+ circle and square functions now take a size argument
+ function for adjusting 2D diagrams to requested size abstracted
from cairo backend
+ generalize PathLike class to include an instance for diagrams,
and collapse things like polygon/polygonPath into a single
polymorphic function
+ basic text support
+ basic support for external images
+ very sketchy initial proof-of-concept library of 3D primitives.
See also http://patch-tag.com/r/byorgey/diagrams-povray.
* Bug fixes:
+ Issue 32 (mempty not behaving correctly within concatenations)
0.2: 3 June 2011
* documentation fixes
* New functions and primitives:
+ scaleToX and scaleToY for scaling to an absolute width/height
+ reverseTrail
+ new Angle class and ability to use radians, degrees, or circle fractions
for specifying angles
+ rotateAbout and reflectAbout transformations based on new conjugation functions
+ rect and roundedRect primitives
+ explodeTrail/Path for breaking trails and paths into individual segments
* New features:
+ opacity attribute
+ support for path clipping
* New modules:
+ Diagrams.BoundingBox
* Fixes and updates:
+ withBounds now properly uses the new bounds instead of just combining
them with the old
0.1.1: 18 May 2011
* minor documentation fixes
* link to new website
0.1: 17 May 2011
* initial preview release