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

