Changelog for diagrams-lib-

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. 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 * 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