
Changes from 0.8-0 to 0.9-0
===========================

1.  Added dependency on R >= 2.13.0

    (grid.grab(wrap=TRUE) only works with bug fix in r54813).

2.  Replaced partially matching arguments with full argument names. (Simon)

3.  Added plotmath support (outputs MathML).

    Note that positioning of MathML output is VERY unlikely to
    be accurate because there is not only the problem of font
    differences BUT ALSO the problem of a different math
    formula layout engine!

4.  Changed x11() to dev.new() in tests/*.R code.

5.  Added animation support for polygon grobs and path grobs.

6.  Changed translation of rastergrob grobs to SVG elements.
    They are now an <image> wrapped in two <g>s.
    The outer <g> provides a translation;  the inner <g> provides
    a scaling;  and the image is at (0, 0) and size (1, 1).
    This allows for ...

7.  Added animation support for rastergrob grobs.

8.  Added animation support for xspline grobs.

    Note that closed xsplines are unlikely to animate smoothly
    (because the result is an animated <path> with a variable 
     number of operations).

9.  Added 'group' argument for grid.hyperlink().


Changes from 0.7-0 to 0.8-0
===========================

1.  Started rounding all numeric values to 2 dp (in SVG output).

2.  Added "animValue" and "animUnit" classes to somewhat formalise
    the specification of animation values for attributes.

    Coercion methods are defined so that animation values can be
    specified as vectors, units, matrices, or lists (of units).

3.  Removed 'id' argument from grid.animate().

4.  Added 'begin' argument to grid.animate().

5.  Added "animation" vignette, which describes how to specify
    animation values for grid.animate().

6.  Named top-level gTree "gridSVG" (and therefore <g id="gridSVG">).

7.  Added 'inline' argument to grid.script().

8.  Added 'group' argument to grid.garnish() so that attributes
    can be applied EITHER to the parent <g> (the default) 
    OR to the individual child elements.

9.  Changed conversion of graphical parameters.  

    Instead of creating a single 'style' attribute in each element,
    now create individual SVG presentation attributes, like 'fill'
    and 'fill-opacity'.

    Also, ONLY record explicit 'gp' settings, rather than ALWAYS
    recording ALL current settings for ALL elements.

10. Modified grid.garnish() so that can garnish same grob multiple   
    times (without overwriting previous garnish).

11. Modified grid.animate() so that can animate same grob multiple
    times (without overwriting previous animation).

12. Added 'group' argument to grid.animate() so that animation
    can apply EITHER to the individual child elements (the default)
    OR to the parent <g>.

13. Added vignette on extending the 'gridSVG' package.

    vignette("extensibility")

14. Added 'interpolate' argument to grid.animate()
    (only currently supports "linear" or "discrete").

15. Implemented animation for segments grobs.

16. Improved recording of viewports and vpPaths, when depth
    is greater than 1 (e.g., a vpStack).  Now all viewports
    (not just the last one) are recorded as <g> elements.


Changes from 0.6-0 to 0.7-0
===========================

1.  Added support for polyline grobs (Simon)

2.  Polygon grobs now respect the id parameter (Simon)

3.  Semi-transparent colours can now be applied, making use of SVG's
    fill-opacity and stroke-opacity properties. (Simon)

4.  xsplines can be drawn. Currently uses the <polyline> or <path>
    elements depending on whether the xspline is open or closed. (Simon)

5.  Lines, segments, polylines, xsplines now support the arrow parameter.
    (Simon)

6.  Grobs that produce multiple SVG elements now wrap the multiple 
    elements in a <g> with the original grob name on the <g>
    and the multiple elements name-mangled with integer suffix. (Simon)

7.  Multiline text support added. (Simon)

8.  Text with multiple labels no longer draw all labels at each location.
    (Simon)

9.  Points (in particular, pch = 1) have more accurate radii. (Simon)

10. Raster grobs can be drawn. (Simon)

11. Every grob is now grouped in a <g> element. The group receives the name
    of the original grob but any elements that will be produced from that
    grob will receive the grob name with an integer suffix. (Simon)

12. Points grobs have been refactored and its parameters now obey the
    recycling rule. Grouping occurs where points require multiple
    elements. (Simon)

13. Line properties such as linejoin and lineend are now understood.
    (Simon)

14. The gpar() properties, font/fontface and fontfamily are now
    supported. "fontface" has a direct mapping to CSS, but fontfamily is a
    little bit more messy. "fontfamily" has to specify fallback fonts if none
    are present in the browser. Most fonts have been catered for, those that
    are present in names(pdfFonts()) and names(postscriptFonts()) are given
    a reasonable attempt. (Simon)

15. Naming of grobs has been refactored into a function call, subGrobName().
    To get the base name of the grob again, baseGrobName() should be used.
    This allows an easier switch to a different naming scheme if necessary.
    (Simon)

16. Initial support for frameGrobs (and cellGrobs). (Simon)

17. Numerical justification of text is supported. Justification parameters
    are rounded so they belong to one of {0, 0.5, 1}. (Simon)

18. gTree support has been improved, all lattice demos can now be drawn, along with
    some ggplot plots (assuming pchs are supported). (Simon)

19. The HTML file that is produced now rounds the height and width attributes up to
    the nearest integer to avoid scrollbars becoming visible. (Simon)

20. Warnings are no longer produced regarding unclosed connections. (Simon)

21. pchs 0:25 and 32:127 are supported. (Simon)

22. Clipping to viewports is now possible. This occurs at the group level so that
    when a viewport is pushed to, its name is now suffixed with the number of times
    that the viewport has been pushed to. (Simon)

Changes from 0.5-10 to 0.6-0
============================

1.  Updated for the fact that R graphics engine now supports
    complex paths.

    Removed grid.path() and pathGrob() from this package
    (now in 'grid' package)

    Removed svgGrobify() 
    (the normal grobify() in 'grImport' now handles complex paths)

    Tweaked passage of 'grid' pathgrob through generic device to
    SVG device.
    

Changes from 0.5-8 to 0.5-10
===========================

1.  conversion of gpar() to SVG CSS now recognises 'fillrule'
    (so that pathgrobs [and polgyons] can specify "nonzero" or "evenodd")

2.  svgGrobify() passes object@rule from PictureFill objects
    to gpar() so that 'fill' and 'eofill' from imported images
    will be represented by appropriate paths in SVG.

3.  The current locale encoding (i.e., the encoding used to
    write the SVG file) is now recorded in the SVG file.


Changes from 0.5-3 to 0.5-8
===========================

1.  Added 'redraw' argument to grid.garnish()

2.  Improved sizing of text 
    (especially when it is controlled via 'cex')

3.  Correction for rotated text 
    (SVG measures angles clock-wise)

4.  Improved recording of SVG 'style' attribute so that it
    handles vectorized settings better.

5.  Improved recording of 'lty' setting in SVG output.

6.  Forced ALL gpar settings from grid to SVG output
    (i.e., no longer have to EXPLICITLY set gpars).

7.  Added checks for XML specials when producing SVG output.

8.  Improved sizing of text (and line widths) to be responsive
    to device resolution.

9.  Added grid.path() and pathGrob() which can be used to draw 
    polygons with holes (when producing SVG output).

10. Added svgGrobify() which uses pathGrob() when converting
    a Picture from 'grImport' to grobs.


Changes from 0.3 to 0.4
=========================

1.  Updated properly for R 2.0.0

    Hyperlinks work the same as before, but Animation now works 
    differently:  you animate an entire grob rather than an
    individual unit.

2.  Integrated changes from Nathan Whitehouse and colleagues to
    support arbitrary SVG attributes and script chunks.

3.  SVG shape chunks now use grid grob names for the id attribute.

    If more than one chunk is produced, then a 1:n suffix is attached.
    For example, grid.circle(r=1:4/8, name="circgrob") produces four
    <circle> chunks with id's "circle1" to "circle4", but 
    grid.rect(name="rectgrob") produces a single <rect> chunk with
    id "rectgrob".

4.  Added NAMESPACE.


Changes from 0.2-1 to 0.3
=========================

1.  Minimal update to get version that runs with grid in R 1.9.*


Changes from 0.2 to 0.2-1
=========================

1.  Changed implementation of lpaste from recursive to loop
    (to avoid "evaluation nested too deeply" problems)

2.  Fixed up [cx|cy].time.unit for case where only one of x|y
    is a "time.unit".  Used to not replicate the "normal" unit
    correctly.
