New features
New eachName traversal, for traversing over parts of a Name that match a given type
More documentation explaining HasOrigin and Transformable instances for Envelope
Dependency/version changes
lens-4.15New instances
Transformable instance for Measured
A bunch more instances for Query (Distributive, Representable, Profunctor, Coseive, Closed, Costrong, Corepresentable)
API changes
Move some Query-related functions to diagrams-lib (sample, value, resetValue, clearValue)
Remove some redundant constraints in type signatures (should not actually affect API)
New features
New mkText' function, which allows making a text primitive without recommending a fill colour or font size so users can recommend their own (e.g. using the recommendFontSize function).
New functions reflectXY and reflectionXY
New composeAligned combinator for doing composition under an alignment while leaving the local origin unaffected.
Add _LocLoop and _LocLine prisms
New bspline function for creating uniform cubic B-splines
Skinned classNew standard attributes for separate fill and stroke opacity (see #248).
New HasQuery class for things which can be spatially queried for values from some monoid.
New function inquire for testing whether a given point is inside a diagram.
New font weights: bolder, lighter, thinWeight, ultraLight, light, mediumWeight, heavy, semiBold, ultraBold. Note that currently only the SVG backend deals with the new weights.
Export GetSegmentCodomain and update documentation
Improved performance of 2D rotations
New instances
Alignable instance for Located
ToPath instances for lines and loops
Serialize instances for Trail, Path, Located, SegTree, Segment
Generic instances for Path, Located
Action instance for Angle: angles act by rotation.
API changes
snugBL, snugBR, snugTR and snugBR are deprecated. These functions were unintuitive, ad-hoc, and not particularly useful, especially since e.g. snugL and snugB do not commute. You can use something like snugB . snugL directly, or use snug with a direction vector. See #250 for more details.Dependency/version changes
fsnotify and drop dependency on deprecated system-filepathlens-4.15Bug fixes
ReadPath to use attoparsecloadFont' function, to read font data from an XmlSourceKern(..) from Graphics.SVGFonts.ReadFontSerialize instances for FontData and KernNew features
New modules:
Diagrams.TwoD.Path.LSystem: module for generating L-system fractals
Diagrams.TwoD.Path.Boolean: boolean operations on paths
Diagrams.Color.XKCD: Common names for the 949 most common RGB monitor colors, as determined by the xkcd color name survey.
Diagrams.TwoD.Layout.Constrained: 2D layout via relative constraint specifications
Diagrams.Anchors: layout via specified anchor points
Diagrams.TwoD.Path.Follow: monoid for trails which matches tangent vectors at endpoints
Diagrams.TwoD.Path.IteratedSubset is greatly expanded, with more tools, examples, and documentation
New radial layout algorithm for rose trees, radialLayout function in Diagrams.TwoD.Layout.Tree
Code in Diagrams.TwoD.Apollonian cleaned up and generalized
API changes
Diagrams.TwoD.Path.Turtle: pen width is now a Measure n instead of nNo changes.
No changes.
No changes.
New features
Can now output PDFs.
Font files are now embedded with file-embed.
Various functions for better GIF support.
Support for group opacity.
New instances
ToResult instance for animated GIFs.svg-buildersvgId and svgClassNo changes.
No changes.
haskell-src-exts-1.18 and haskell-src-exts-simplediagrams-builder-pgf: add catch-all case for file extensioninput option automatically selected when using pgf backenddiagrams is now default output directoryghc-8.0setup-config can’t be readlucid-svg with svg-builderTypeable, Data, Read, Eq, Ord, Functor, Foldable, Traversablebase-4.8base-4.8monoid-extras-0.4vector-space to linearlens-4.9base-4.8New features
Update for ghc-7.10.
Switch from vector-space to linear for linear algebra.
OpacityGroup annotation for setting the opacity of diagrams as a group. Opacity groups can be applied with the opacityGroup or groupOpacity functions.
Added atAttr, atMAttr and atTAttr lenses onto the attributes of styles.
InSpace and SameSpace synonyms.
size function for computing the range of an enveloped object in the basis vectors.
“Grouping” for transparent things #21
Dependency/version changes
base-4.8lens-4.9New instances
Show instances for Attribute and Style.Each, Ixed and At instances for and Style.API changes
Measure has a new internal representation. Local, Global, Normalized, and Output have been renamed to local, global, normalized and output respectivly. Measure is now defined in Diagrams.Core.Measure.
GTAttribute has been removed. MAttribute now holds measured attributes and no longer requires a Data instance.
V is now a * -> * kind type family.
New type family N for the number type of an object, Scalar type family no longer exists.
(|>) has moved to (.>>) to make room for lens’s snoc operator.
Style’s internal representation now uses a hashmap of the TypeRep.
Merged pull requests:
Bump lens upper version bounds #74 (RyanGlScott)
Add Diagram B synonym for Diagram b v n #73 (jeffreyrosenbluth)
Bump linear upper version bounds #75 (RyanGlScott)
Change Measure back to not using Scalar v #65 (Mathnerd314)
Remove gratuitous Data constraints #69 (Mathnerd314)
Initial release
New features
Native image type that backends can specify.
Affine maps between spaces for path-like objects. A new Diagrams.ThreeD.Projections has some helper functions for orthographic and perspective projections.
Intersections for path-like objects using Bézier clipping.
Helper functions in Diagrams.Matrix for converting between transforms and matrices.
New Diagrams module that only exports functions defined in diagrams.
New Direction type. Direction is a vector that’s forgot it’s magnitude. Some functions have changed their type from R2 to Direction V2 n to make it clear that magnitude has no effect.
Use the fsnotify package for command line looping. Command line looping now works on Windows.
groupOpacity function added for lowering the opacity of a diagram as a whole.
New ToPath class for converting path-like things to a Path.
New instances
Each instances for BoundingBox, Offset, Segment, FixedSegment and Path.
Reversing instances for Offset, Segment, FixedSegment, Trail and Path.
AsEmpty instances for BoundingBox, Trail and Path.
Cons and Snoc instances for Path and Line.
New Show instances for Angle, Segment, SomeColor, Trail' and at.
Tangent instance for (FixedSegment v n).
Ord instances for LineMiterLimit, LineJoin and LineCap.
New helper functions
_Line and _Loop prisms.
Style lenses: _fontSize, _lineWidth, _fillTexture, _lineTexture, _opacity, _font, _lineCap, _lineJoin _dashing.
_SomeColor iso and _AC prism onto an AlphaColour.
atPoints function to zip points with diagrams.
API changes
Diagram type synonym now only takes a backend token: Diagram B
Types that previously had a v variable now have v and n.
Control.Lens and Data.Default.Class are now exported from from Diagrams.Prelude
Measure has a new internal representation. Local, Global, Normalized, and Output have been renamed to local, global, normalized and output respectivly.
SizeSpec2D has moved to SizeSpec v n in Diagrams.SizeSpec. Dims, Height, Width andAbsolutehave moved todims2D,mkHeight,mkWidthandabsolute` respectively.
Color instances for Colour and AlphaColour are limited to Double for better type inference.
under has been renamed to underT. New transformed, translated, movedTo, movedFrom and rotated isomorphisms to use with lens’s under function.
stroke is now polymorphic. Use strokePath or strokeP to get old stroke behaviour.
angleBetween now works for any vector space, which means the angle is always positive. The old behaviour can be retrieved from signedAngleBetween
arc now takes a starting Direction and a sweep Angle. arcCW and arcCCW take a start and finish Direction.
Dependency/version changes
linear instead of vector-spaceClosed issues:
Merged pull requests:
ReadFont, into Fonts (built-in fonts) and Text (rendering text to Diagrams).textSVG' and textSVG_ now have the text as a separate argument, distinct from TextOptions.ReadFont does not use unsafePerformIO any more. unsafePerformIO is now only used to load built-in fonts.New features
Diagrams.TwoD.IteratedSubset and added more examples.Diagrams.TwoD.Layout.Grid.API changes
Diagrams.Lens has had a lot of its lenses removed because they’re either invalid lenses or are now in diagrams-lib.Dependency/version changes
diagrams-core-1.3diarams-lib-1.3linear instead of vector-spaceFixed bugs:
Dependency/version changes
lens-4.9Merged pull requests:
Closed issues:
base-4.8diagrams-lib-1.3diagrams-cairo-1.3diagrams-core-1.3 and diagrams-lib-1.3lens-4.9semigroups-0.16Merged pull requests:
Twinside master #25 (jeffreyrosenbluth)
Preparing for float text size and PointSize new type in FontyFruity. #24 (Twinside)
Bump lens upper version bounds #14 (RyanGlScott)
Diagram B #12 (jeffreyrosenbluth)
call defaultAnimMainRender with ASetter for loop options #8 (bergey)
New features
User settable ID prefixes
Support opacity group
Fix clipping bug (Issue #70)
Internal Changes
Switch rendering engine from blaze-svg to lucid-svg
Use fsnotify for looping
Add defs tags for clips and gradients
Bug Fixes
Implemented enhancements
clip path, gradients, etc in defs tag. #73Merged pull requests:
Allow user to set ID prefixes #71 (mightybyte)
Lucid #69 (jeffreyrosenbluth)
Initial (official) release
diagrams-lib-1.3.diagrams-rasterific support.DIAGRAMS_SANDBOX environment variable.exceptions-0.8diagrams-latex directory creation on Windowsdiagrams-builder-0.7, diagrams-lib-1.3, and diagrams-svg-1.3New features
New function matrixHomRep to convert a transformation to a homogeneous matrix representation.
New function dropTransl to drop the translation component from a transformation.
A mini-DSL for Measures.
New extent function, used in diameter.
New dimension function to return the dimension of a vector space.
New _relative iso between points and vectors.
avgScale function (for computing the average scaling factor of a transformation) has been moved from diagrams-lib to diagrams-core and generalized to work over any vector space.
Dependency/version changes
semigroups-0.14lens-4.1API changes
Major refactoring which removes freeze (and hence Split transforms, etc.) and adds units of Measure.
Refactoring and simplification of the Backend class.
Remove Multibackend.
Remove nullPrim, IsPrim and simplify RPrim so that it does not carry a transformation.
Update adjustDia to return a transformation, not just a scale factor. Add renderDiaT which returns a transformation (for use by end users, e.g. to convert output coordinates back into local coordinates).
New features
Several attributes (such as line width, dashing size, arrowhead size, and font size) that formerly had a value of type Double now have the more general type Measure R2. This allows the attributes to be specified relative to one of four measurement frames: Local, Global, Normalized, and Output.
New DSL for specifying measurements.
New synonyms for specifying measurements, e.g. thin, thick, and medium, large.
Support for radial and linear gradients for fills and strokes.
New DImage type that supports both embedded and external images in Backends that support them.
New lengths Traversal for setting headLength and tailLength simultaneously.
Frustrum and Box shapes added to Diagrams.ThreeD.Shapes.
New function quartForm to find roots of quartic polynomials.
New Lenses for polar coordinates.
New trig functions, sinA, atanA, etc. which take Angle as input or output.
New instances
Transformable instances for LineWidth, Dashing, LineTexture, and FillTexture.API changes
FillColor and LineColor attributes have been replaced with the more general FillTexture and LineTexture. Use the solid function to convert a color to a texture.
The size of arrow heads and tails is now specified in terms of length instead of the radius of their circumcircle.
Gaps at the ends of arrows are now specified using Measure R2.
The gap traversal has been replaced by gaps for consistency in naming, though gap is still provided for backwards compatibility.
fontSize now takes a value of type Measure R2.
Get rid of (bitrotted) Show backend.
Functions in TwoD.Adjust now return the adjustment transformation itself in addition to the resized Diagram and Options record; this can be used, e.g. to convert screen coordinates back into diagram coordinates.
Export pathLocSegments.
The avgScale function has been moved to Diagrams.Core.
The Angle definition and related functions (e.g. angleBetween) have moved to a separate module, Diagrams.Angle.
A separate Diagrams.TwoD.Attributes module now contains most of the attributes that require 2D transformation instances.
The splitColorFills function has been replaced by splitTextureFills.
Dependency/version changes
semigroups-0.15optparse-applicative-0.9.0New features
Much improved text support using the pango library instead of cairo’s “toy” text API.
Support for linear and radial gradients on strokes and fills.
Dependency/version changes
opt-parse-applicative-0.9lens-4.2mtl-2.2transformers-0.4Measure refactoring.diagrams-core-1.2 and diagrams-lib-1.2semigroups-0.15New features
Support for radial and linear gradients.
Support for embedded images in .png format.
New instances
Renderable instances for DImage Embedded.API changes
Updates to work with Measure units.
Substantial refactoring of Backend instance to support changes in Diagrams.Core.
Initial release
New features
basis functiondeterminant function for computing the determinant of a TransformationTypeable constraint on Prims, making it possible to extract things back out of a Prim wrapper using castTraces now return a sorted list of intersections, instead of only the smallest. This is used to implement a new family of functions rayTraceV, rayTraceP, maxRayTraceV, maxRayTraceP, which work similarly to the parallel versions without Ray, but return the first intersection in the positive direction from the given point, rather than the smallest in absolute terms.Annotation type and corresponding applyAnnotation function, for attaching uninterpreted annotations at specific points in a diagram tree. Currently this is used for hyperlinks; more annotation types will be added in the future.Dependency/version changes
lens-4.0vector-space-points-0.2Bug fixes
New features
Support for Deformations, arbitrary (non-affine) transformations on objects such as points, paths, and located trails (though not on diagrams).
New functions clipTo, which clips a diagram’s envelope and trace along with its visual representation, and clipped, which clips the diagram’s visual representation but replaces its envelope and trace with those of the clipping path.
New arrowV function, for creating an arrow with the direction and magnitude of a given vector.
gap traversal, for setting the head and tail gaps of an arrow simultaneously.
Generalized types for centerXY and snugXY, based on new basis function from `diagrams-core
New 3D Transforms, alignment, and 3D-specific Prelude.
New frame function similar to pad, but increases the envelope of a diagram by an amount specified in local units in every direction irrespective of the local origin.
New splitFills function for pushing fill attributes down to subtrees containing only loops (mostly of relevance only to backend implementors).
New instances
Typeable instances for all data types that are used as diagram primitives.Sectionable instance for FixedSegment.API changes
Angle is now a type, rather than a class. It uses a single internal representation for angles, and lenses turn, rad, and deg are supplied for constructing (using @@) and viewing (using ^.) Angles in various units. In addition, the Num instance for Angle has been removed, eliminating a class of errors where a bare number is interpreted in units other than what you expect.
Removed Num instance for angles.
Dependency/version changes
lens >= 4.0.array-0.5.hashable-1.1.NumInstances dependency.Bug fixes
Performance improvements
colorToSRGBA function now avoids expensive matrix operations, offering dramatic speedups in rendering diagrams with many color attributes.New features
gifMain function.Dependency/version changes
diagrams-core-1.1 and diagrams-lib-1.1unix-2.7vector-0.10Bug fixes
New features
Experimental support for raw CMYK colors.
Dependency/version changes
Allow diagrams-core-1.1 and diagrams-lib-1.1.
New features
Dependency/version changes
diagrams-core-1.1 and diagrams-lib-1.1lens-4.0Bug fixes
Use splitFills to properly render certain diagrams with mixed lines and filled loops. Previously, in certain situations loops that should have been filled were not. (#43)
Don’t emit last segment of a loop if it is linear.
See diagrams-cairo#38. This wasn’t actually causing any observable problems in the SVG backend output, but this seems a better/more robust way to do things in any case.
Diagram b v or IO (Diagram b v). This means that expressions interpreted by diagrams-builder (via e.g. diagrams-haddock or BlogLiterately-diagrams) can do some IO to build a diagram.foldDUAL.New features
Delayed subtrees: instead of a primitive, one can now also have a delayed subtree at a leaf, containing a continuation which generates a QDiagram when given the accumulated d-annotation at that point in the tree. Useful for things which need to know the final transformation applied to them before deciding what diagram to generate. The prototypical use case is arrows: see https://github.com/diagrams/diagrams-lib/issues/112 . However, this may be useful for other things as well: for example, diagrams which scale normally until hitting some maximum or minimum size, at which point they refuse to scale any further (or more generally diagrams which scale as some non-linear function of the transformation applied to them).
The only downside is that the u-annotation must be fixed ahead of time—doing otherwise requires a more general solution for constraint solving.
New function lookupName for doing a simple lookup of a named subdiagram
New module Diagrams.Core.Compile, containing a framework for compiling QDiagrams into a simpler tree type RTree, which may be used by backends for rendering.
New instances
Qualifiable instances for (,), (,,), [], Set, Map k, and (->) e.
(->) e instance for Juxtaposable (thanks to Carlos Scheidegger)
API changes
Export pointDiagram function, which creates an otherwise empty diagram with a point (not empty) envelope
lens library.
envelope, trace, and subMap are now Lens'esWrapped instances for Trace, TransInv, QDiagram, SubMap, Envelope, Style, Query, and Name (replaces Newtype instances)Isos for Query, Envelope, QDiagram, SubMap, TransInvNew features
Diagrams.TwoD.Arrow and Diagrams.TwoD.Arrowheads for creating arrows.Diagrams.Backend.CmdLine, providing a flexible framework for creating command-line-driven diagram rendering executables.Diagrams.Offset: offsetTrail and offsetPath for one-sided offsets of trails and paths; expandTrail and expandPath for “stroking” trails and paths, computing a path whose fill corresponds to the stroke of the given trail or path.Diagrams.Tangent for computing tangent and normal vectors of segments, trails, and paths.Diagrams.Align to allow diagrams to be aligned by Trace called snug, snugBy and snugCenter and the ability to define other boundary functions for alignment. Functions snugL, snugR, etc. are included in TwoD.Align.Control.Lens are now used consistently for record fields throughout the library.angleRatio for calculating the ratio between two angles.asTurn, asRad, and asDeg for resolving type ambiguityannularWedge in TwoD.ArcavgScale utility in TwoD.Transform, for backends which cannot fully implement freezing of line widthheptagon, a vast improvement over the linguistic frankenstein septagon.lookupName (re-exported from diagrams-core) for simple lookups of named subdiagramsangleBetween to calculate the angle between two vectors.arcBetween to draw an arc between two given points.Diagrams.ThreeD.Align, .Camera, .Light, .Shapes, .Transform, .Types, and .Vector. This is still a “feature preview” (in particular, appropriate 3D backends are still under construction).New instances
AdditiveGroup and VectorSpace instances for Turn, Rad, DegAlignable instance for (->) eDefault instances for FillRule, FillRuleA, LineJoin, LineCap, FillColorShow instances for FillRule, FillRuleAAPI changes
e no longer exported from Diagrams.Prelude.Diagrams.BoundingBox is no longer exported from Diagrams.Prelude.Diagrams.Core.pointDiagram from Diagrams.Prelude.fromAlphaColour method to Color class.& renamed to ^&tan, over, and both from Data.Colour._x, _y, and _z for R2, P2, R3, P3fullTurn from Diagrams.Prelude.Codomain (Located a) is now Point (Codomain a) instead of Located (Codomain a).domainBounds from Diagrams.Parametric.Diagrams.Parametric to its own module, Diagrams.Parametric.Adjust.strokeT (and primed variant) to strokeTrail; rename strokeLocT to strokeLocTrail.ScaleInv is now in its own module, Diagrams.TwoD.Transform.ScaleInv.Image type (but not constructor) from Diagrams.TwoDFloating and RealFloat instances for Turn and DegoffsetSegment now returns a Located instead of a tuple.Num and Fractional instances for R2.Dependency/version changes
newtype dependencylens, tagged, optparse-applicative, filepath, safe, vector-space-points, MemoTrieintervals >= 0.3 && < 0.5.Bug fixes
intervals 0.3, which allows diagrams to build on Windows, by evading a GHCi linker bug which affects the FFI use in previous versions of intervals (diagrams-contrib#14)Diagrams.TwoD.Offset (#118).wedge from Diagrams.TwoD.Arc is now a loop (#99).Performance improvements
R2 is now strict and UNPACKedOffset, Segment, OffsetEnvelope, and SizeSpec2D.getEnvelope calculation for Segment more efficient by floating divisions out of the inner calculation.HasTrie instance for R2.RTree interface, leading to smaller output files.diagrams-lib.B as an alias for SVG tokenRTree interface.diagrams-lib.B as an alias for Cairo token.diagrams-lib.B as an alias for Postscript token.New features
Diagrams.TwoD.Sunburst, for drawing sunburst charts.Diagrams.TwoD.Path.Metafont, for specifying trails/paths using an API inspired by Metafont. Like cubicSpline but gives you control over things like the tension/curvature or the tangent at a given point.Diagrams.TwoD.Path.Calligraphic for making simple “calligraphic” strokes.Diagrams.Lens with lenses for working with diagrams.Bug fixes
Diagrams.TwoD.Factorization.primeLayout has been rewritten to avoid iterated transformations, giving a significant performance boost.New features
new function onBasis, to extract the matrix equivalent of a Transformation
SubMaps are now Deletable
new function localize for hiding/deleting names from scope
new IsPrim class, containing transformWithFreeze function. This is primarily intended to support scale-invariant primitives (e.g. arrowheads) but may be useful for other stuff as well. The default implementation of renderDia now uses transformWithFreeze.
optimized Transformable instance for TransInv
New instances
Eq, Ord, Enveloped, Traced, and Qualifiable instances for TransInv
Transformable instance for functions, which acts by conjugation
API changes
named and namePoint have moved to the diagrams-lib package.Dependency/version changes
base-4.7monoid-extras-0.3semigroups-0.9Bug fixes
diameter and radius functions now work correctly.semigroupoids-3.1base-4.7QuickCheck-2.6semigroups-0.9New features
New module Diagrams.TwoD.Curvature, for computing the curvature of 2D segments at any given point.
New module Diagrams.Offset, containing an offsetSegment function that builds a trail a fixed distance from the original segment. This is a precursor to planned functions offsetTrail and offsetPath.
New function Diagrams.TwoD.Transform.onBasis, for extracting a matrix representation of a 2D transformation
New functions extrudeEnvelope and intrudeEnvelope, for extending or shrinking an envelope only in a certain direction.
Generalize the Color class to absolute colors. This addresses concerns raised in issue #66 by letting the backend choose which color space to render Color instances to. Functions are provided for backwards compatibility with the old semantics.
New function scaleInvPrim for creating a diagram from a single scale-invariant primitive.
New module Diagrams.Parametric, containing a collection of classes abstracting over “parametric” things: Parametric, DomainBounds, EndValues, Sectionable, and HasArcLength, with instances for segments, trails, and related things.
Trail is now a wrapper type which can contain both loops and lines.Located wrapper type for adding locations to translation-invariant things. Paths now consist of a collection of Located Trails.PathLike class is now renamed to TrailLike; the trailLike function takes a Located Trail as input.New convenience functions boundaryFrom and boundaryFromMay, for computing boundaries of subdiagrams.
Re-export from diagrams-lib a lot of things defined in diagrams-core, to make them easier for users to find. Several new modules have been created as a result: Diagrams.Query, Diagrams.Envelope, Diagrams.Trace, and Diagrams.Names.
Export the centroid function from Diagrams.Prelude.
triangle is now a synonym for eqTriangle.
New instances
IsPrim instances for Path, Ellipsoid, Image, Text, and ScaleInvEq, Ord, and Show instances for SizeSpec2DAPI changes
CircleFrac has been renamed Turn (though CircleFrac is retained as a deprecated synonym).
Diagrams.Coordinates is no longer exported from Diagrams.Prelude. This is for compatibility with lens, as (&) is a rather important lens operator and clashes with Diagrams.Coordinates. Users who want the Coordinates stuff can import Diagrams.Coordinates explicitly.
Dependency/version changes
base-4.7semigroups-0.9NumInstances-1.3monoid-extras-0.3data-default-class instead of data-defaultBug fixes
Quadratic solver is now more numerically stable, getting rid of some incorrect behavior of juxtapose (#46)
Added a special case that was a not handled properly by the quadratic solver, resulting in bogus envelopes in certain cases (#88).
Import only Data.NumInstances.Tuple instead of Data.NumInstances. Previously, Diagrams.Prelude exported Eq, Show, and Num instances for functions and tuples; now it only exports tuple instances. Users wishing to use Diagrams.CubicSpline with a vector space built over functions (!?) can import Data.NumInstances.Function themselves. (#48)
Do scaling on a Path before constructing a TrailLike in rect (#43)
New features
New module Diagrams.Color.HSV with an hsvBlend function for blending colors in HSV space.
Diagrams logo code is now in Diagrams.Example.Logo.
New symmetric layout algorithm for binary trees in Diagrams.TwoD.Layout.Tree.
New Diagrams.TwoD.Path.IteratedSubset module, for constructing paths using an “iterated subset” algorithm (repeatedly replacing segments with a given path).
New Diagrams.TwoD.Layout.CirclePacking module for circle-packing layout
New Diagrams.TwoD.Factorization module, for creating “factorization diagrams” as seen at http://mathlesstraveled.com/2012/11/05/more-factorization-diagrams/ and on the cover of Hacker Monthly (http://mathlesstraveled.com/2012/10/05/factorization-diagrams/).
Diagrams.TwoD.Path.Turtle: generalize runTurtle function, and add new functions drawTurtle and sketchTurtle. drawTurtle results in a diagram (like the old runTurtle), and sketchTurtle yields a path (ignoring pen style commands).
Dependency/version changes
lens-3.8QuickCheck-2.6Bug fixes
Diagrams.TwoD.Path.Turtle which sometimes caused it to output a doubled path (#13).Documentation
diagrams-haddockNew features
renderToSVG convenience functionNew instances
Show instance for Options SVG R2Dependency/version changes
base-4.7 and unix-2.7monoid-extras-0.3First release as an officially supported diagrams backend, generating Postscript via native Haskell. Supports all features except transparency.
New features
renderCairo function for more convenient use of the cairo backend.New instances
Show instance for Options Cairo R2.The diagrams-gtk package continues to work with no changes; 0.6.0.1 has been released simply to allow the dependency versions base-4.7, diagrams-lib-0.7, and diagrams-cairo-0.7.
New features
Add hsenv compatibility.
new diagrams-builder-postscript tool
miscellaneous improvements to diagrams-latex.sty
Dependency/version changes
cryptohash >= 0.8 && < 0.10 (use new unified API)base16-bytestring dependencydiagrams-haddock is a new tool for embedding automatically-generated diagrams in Haddock documentation. It has been released for a while, but 0.1.1.1 is the first version officially included in a major diagrams release.
First release as an officially supported diagrams package, adding nice support to diagrams for text using fonts in SVG format.
New features
Proper support for subdiagrams: previous versions of diagrams-core had a mechanism for associating names with a pair of a location and an envelope. Now, names are associated with actual subdiagrams (including their location and envelope, along with all the other information stored by a diagram).
See Diagrams.Core.Types.
Traces: in addition to an envelope, each diagram now stores a “trace”, which is like an embedded raytracer: given any ray (represented by a base point and a vector), the trace computes the closest point of intersection with the diagram along the ray. This is useful for determining points on the boundary of a diagram, e.g. when drawing arrows between diagrams.
See Diagrams.Core.Trace.
API changes
The modules have all been renamed to be more consistent with the module naming scheme in the rest of the diagrams universe. In particular:
Graphics.Rendering.Diagrams –> Diagrams.Core Grahpics.Rendering.Diagrams.Core –> Diagrams.Core.Types Graphics.Rendering.Diagrams.* –> Diagrams.Core.*
Graphics.Rendering.Diagrams.UDTree has been split out into a separate dual-tree package (which has also been substantially rewritten).
Graphics.Rendering.Diagrams.{Monoids,MList} have been split out into a separate monoid-extras package.
The names function now returns a list of names and their associated locations, instead of the associated subdiagrams. In particular the output is suitable to be rendered to a String using show.
The new subMap function fills a similar role that names used to play, returning the entire mapping from names to subdiagrams.
New functions envelope[VP]May
envelopeV and envelopeP return the zero vector and origin, respectively, when called on an empty envelope. However, sometimes it’s useful to actually know whether the envelope was empty or not (the zero vector and the origin are legitimate outputs from non-empty envelopes). The new functions have their return type wrapped in Maybe for this purpose.
New functions envelopeS and envelopeSMay
Like envelope[VP](May), but returning a scalar multiple of the input vector.
The Graphics.Rendering.Diagrams.Util module has been removed, along with the withLength function. Calls to withLength can be replaced using
withLength s v = s *^ normalized v
Add needed constraints (InnerSpace v, OrderedField (Scalar v), Monoid' m) to the type of the renderDias method in the MultiBackend class.
Generalized Transformable instances for pairs and tuples
Previously, the components of the tuples were required to have
the same type; but everything still works as long as they all
share the same vector space. This is actually useful in
practice: say, if we wanted to pair a diagram with a path and
then apply the same transformation to both.Improvements
diameterDependency/version changes
base-4.6containers-0.5.*MemoTrie-0.6.1Bug fixes
juxtaposeDefault now correctly handles empty envelopes (#37)
juxtaposeDefault is now the identity on the second object if either one has an empty envelope. In particular this means that mempty is now an identity element for beside and friends.
Bump dependency upper bounds:
semigroupoids < 3.1base < 4.7QuickCheck < 2.6New features
boundingRect function for constructing a bounding rectangle
bg function for “setting the background color” (i.e. placing atop a colored bounding rectangle)
New functions setDefault2DAttributes and adjustDiaSize2D. adjustDia2D does both — so the behavior of adjustDia2D has not changed, but it is now possible to apply just one of the two adjustments using the new functions.
Diagrams.TwoD.Transform now exports a ScaleInv type for creating scale-invariant objects, which are only affected by rotational and translational components of transformations.
The new Diagrams.Coordinates module provides nicer syntax for constructing and pattern-matching point and vector literals.
New fromFixedSeg function in Diagrams.Segment, which decomposes a FixedSegment into a starting point and a Segment.
New withTrace function for setting the Trace of a diagram.
Three new size-related functions:
New sized function for scaling an object to a particular size. One particularly nice use of this is to obviate the need to keep fiddling with the line width to get diagrams to “look right”; just set the line width relative to some arbitrary scale (e.g. assuming the final diagram will fit into a 1x1 box) and then apply sized to the final diagram to make it that given arbitrary size. It can also be used for easily making something (a diagram, path, trail, …) the same size as something else, with the help of the new sizeSpec2D function.
New sizedAs function, for setting the size of some object to be “the same as” some other object.
New sizeSpec2D function for conveniently calculating the size of an object as a SizeSpec2D value (for use with the new sized funtion).
New extrudeEnvelope and intrudeEnvelope functions for modifying envelopes in a single direction only, as well as new functions extrude{Left,Right,Bottom,Top} specializing extrudeEnvelope to 2D.
arcCW draws clockwise arcs; arc' draws arcs counterclockwise or clockwise as the radius is positive or negative, respectively.
fill color attribute is generalized to support “recommended” and “committed” colors; text objects use a recommended fill color of black.
New instances
The Show instance for R2 now produces something like 2 & 6 instead of R2 { unR2 = (2,6) }. The Read instance has also been changed to match, so read . show = id.
Enveloped instance for FixedSegment
Traced instances for Segment, FixedSegment, Trail, and Path
New derived Eq instances for LineCapA, LineJoinA, Dashing, DashingA, FillRule, Font, FontSize, FontSlant, FontSlantA, FontWeight, and FontWeightA
Renderable Ellipsoid NullBackend instance
API changes
Data.Colour (minus atop and AffineSpace) is now re-exported from Diagrams.Prelude for convenience.
The beneath function is now infixl 6.
The BoundingBox module has had a complete overhaul. There is now a special empty bounding box, and bounding boxes are an instance of Monoid.
The type of withEnvelope has been slightly generalized.
Diagrams.TwoD.Adjust.adjustSize is now deprecated; it has been renamed and moved to Diagrams.TwoD.Size.requiredScaleT.
expandPath has been renamed to scalePath.
Dependency/version changes
data-default 0.4 and 0.5base-4.6containers-0.5Bug fixes
arc and arcT functions now always produce counterclockwise arcs, as claimed.Version bumped to 0.6 to match other diagrams packages.
New features
New pure implementation of Turtle library, in Turtle.Internals
Diagrams.TwoD.Layout.Tree:
New renderTree' function which gives the edge-drawing function access to the values stored at the nodes instead of just the node positions.
The type of renderTree is generalized to work with any QDiagram b R2 m.
Bug fixes
Diagrams.TwoD.Tilings wasn’t actually checking whether vertexes had been already visited.Dependency/version changes
fclabels to lensNew features
New --list option for multiMain to list all available diagrams
Major documentation improvements
New modules:
Diagrams.Backend.Cairo.Ptr, for rendering directly to buffers in memory
Diagrams.Backend.Cairo.List, for rendering to a list of lists of pixels.
API changes
Removal of StyleParam from Diagrams.Backend.Cairo.Text, change functions in that module to accept Style R2. Usage can be fixed by applying these style functions to mempty.
GTK rendering has been split out into a new package, diagrams-gtk.
The Diagrams.Backend.Cairo.Gtk module is now Diagrams.Backend.Gtk in the diagrams-gtk package.
The CairoOptions record has a new boolean cairoBypassAdjust option; when set, the backend should bypass calling adjustDia2D.
The GTK output type is gone.
There is a new RenderOnly output type, for when you don’t care about the IO action but only want the cairo Render action.
Dependency/version changes
Upper bounds relaxed to allow base-4.6, unix-2.6, cmdargs-0.10, split-0.2.*, mtl-2.1
Add a dependency on time, and conditional compilation to use either ClockTime or UTCTime depending on the version of the directory package
Add dependency on colour
Lower bound on cairo raised to 0.12.4
Bug fixes
Fixed looped compile mode, which was repeatedly trying to compile when the code contained errors, instead of trying once and then waiting for a change.
Fix a bug where default attributes were not being set when using the “bypass” mode used by the gtk backend. (#16)
Initial release. Split out into a separate package from diagrams-cairo.
First “officially supported” release.
Features still not implemented:
As of this release everything else Should Work (tm).
diagrams-builder-svg tool.diagrams_cache instead of diagrams by defaultDiagrams.Builder.CmdLine; factor out common utilities for command-line toolsJuxtaposable classNullBackend and D types, for conveniently giving a monomorphic type to diagrams when we don’t care which one it is.adjustDia to return a new options record (with an explicitly filled-in size)Enveloped, HasOrigin, Juxtaposable, HasStyle, and Transformable instances for Sets and tuplesV Double = DoubleJuxtaposable and Boundable instances for MapAnnDiagram renamed to QDiagramboundary -> envelopePBounds -> EnvelopeBoundable -> EnvelopedgetBounds -> getEnvelopePoint into separate package (vector-space-points)Point constructor P is no longer exported from Graphics.Rendering.Diagrams. See the Diagrams.TwoD.Types module from diagrams-lib for new tools for working with abstract 2D points. If you really need the P constructor, import Graphics.Rendering.Diagrams.Points.vector-space 0.8 is now required.mkSizeSpec function for constructing a SizeSpec2D from two Maybe Doublesbeneath as convenient synonym for flip atoproundedRect' allows rounded rectangles with a different radius specified for each cornerroundedRect' and roundedRect now allow negative radii, resulting in “inverted” circular cornersAlignable class for things that can be aligned.explodeTrail and explodePath have been generalized to return any PathLike type.pathCentroid (compute the centroid of a path’s vertices) and expandPath (scale a path about its centroid).centroid function now exported from new module Diagrams.Points.Animation and QAnimation defined as synonyms for Active diagrams (see active package)Active: V, HasOrigin, Transformable, HasStyle, PathLike, Juxtaposable, AlignableanimEnvelope and animRect functions for automatic bounding of animationsaddClosingSegment function for making the implicit closing segment of a closed trail explicitBoundingBox module from Michael Sloan: querying of BoundingBox bounds, corners, extents, and transformation of objects to fit within a given box.view function for restricting a diagram’s envelope to a rectangular region.iterateN function for iterating a finite number of timesatAngle 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.showOrigin function from Ian RossDiagrams.TwoD.Transformcat', reducing time in some cases from \(O(n^2)\) to \(O(n \log n)\)besideAlignable instances for QDiagram, Path, Envelope, Active, Set, Map, []Renderable instances for NullBackend (Trail, Path, Segment, Image, Text)Active: V, HasOrigin, Transformable, HasStyle, PathLike, Juxtaposable, AlignableR2 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:
R2;(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.BoundingBox no longer has a Transformable instance; the old instance was misleading at best.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.R2, roundedRect now takes a pair of Doubles, to be more consistent with rect.colour >= 2.3.2base and array upper boundsvector-space upper boundshowOrigin.adjustDia2D translation on output size rather than diagram size.Diagrams.Backend.Cairo.Text module by Michael Sloan, with functions for creating appropriately sized text objects by querying cairo for the size, and related supporting functions.animMain function, by generating frames sampled at regular intervals.Diagrams.Backend.Cairo to Diagrams.Backend.Cairo.Internal and export everything. Diagrams.Backend.Cairo now just re-exports selected functions from Internal. This allows anyone who wants access to the helper/utility functions to import Internal.cmdargs upper boundbase, filepath, and old-time upper bounds