Changelog of @hackage/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;
    1. (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