
Changes from version 0.9-6 to 0.9-7
===================================

1.  Make search for and call to 'gsexe' more robust.

    Thanks to Tomas Kalibera for report and patch.


Changes from version 0.9-4 to 0.9-6
===================================

1.  Tweak to make robust changes to PostScriptTrace() more efficient.

    Thanks again to Harold Gutch.


Changes from version 0.9-4 to 0.9-5
===================================

1.  Make PostScriptTrace() more robust to definitions 
    within PostScript file being traced (by working
    more with local dictionaries).

    Thanks to Harold Gutch for bug report and patch!


Changes from version 0.9-2 to 0.9-4
===================================

1.  Update references to JSS article to use DOI.


Changes from version 0.9-2 to 0.9-3
===================================

1.  Add -dNOSAFER flag to 'gs' command.  

    From ghostscript version 9.28, -dSAFER is the default, 
    which means that file permission restrictions are applied
    (ghostscript cannot read or write files unless explicitly
    allowed).  -dNOSAFER is a simple "fix" that reverts to
    the old, permissive, behaviour.  A more sophisticated fix
    would identify the files that ghostscript needs to access
    and provide explicit permissions.


Changes from version 0.9-1 to 0.9-2
===================================

1.  When stroking a path, convert to a filled path if the pen 
    is skewed.

2.  Added support for setdash with odd number of values
    (by appending the first value to the end)


Changes from version 0.9-0 to 0.9-1
===================================

1.  The temporary PostScript file that is created by PostScriptTrace()
    to convert from PostScript to RGML is now created in /tmp
    so that it is automatically removed on R exit.
    Thanks to suggestion and patch from Rainer Krug.


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

1.  Changes to make use of new makeContext() and makeContent()
    hooks in 'grid':

    - dependency on R >= 2.16.0

    - "picstroke" changed to gTree rather than just grob
    - "picturetext" changed to gTree rather than just grob
    - "symbolstroke" changed to gTree rather than just grob
    - "symbolfill" changed to gTree rather than just grob

    - makeContent.picstroke() function
    - makeContent.picturetext() function
    - makeContent.symbolstroke() function
    - makeContent.symbolfill() function

    - removed drawDetails.picstroke()
    - removed drawDetails.picturetext()
    - removed drawDetails.symbolstroke()
    - removed drawDetails.symbolfill()

2.  Bug fix for 'lwd' when image involves PostScript rotation

3.  Improvements to determination of ghostscript command syntax
    (based on dev2bitmap).  Suggestion by Brian Ripley.

4.  Add support for rectangles (translated to a path). (Simon)

5.  Now able to use PostScript 'linecap', 'linejoin' and 'linemiter'
    properties, which map to 'lineend', 'linejoin' and 'linemitre' grid line
    properties. (Simon)

6.  Added defence for /Pattern result from /currentcolorspace
    (which we cannot support properly).

    Treat this the same as /Separation result, which is (now) to
    use "grey" as the colour.

7.  Changed ghostscript device from 'pswrite' to 'ps2write'
    (because 'pswrite' is deprecated in ghostscript 9.10).
    Reported by Troy Travlos.


Changes from version 0.8-0 to 0.8-4
===================================

1.  Fixed bug in conversion of "PictureStroke" objects to grobs
    with multiple "moves" (i.e., a complex path that is stroked
    rather than filled).  It used to drop the last bit of the 
    path (the bit after the last "move").

    Problem reported by Rene Locher.

2.  Made conversion of "PictureOp" objects to grobs a bit more
    robust (can now handle 'x' and 'y' vectors that have no
    name attributes).

3.  Added more defensive code for extraction of font information
    when importing text.

    Thanks to Wojciech Wojciak for report, diagnosis, and patch!

4.  Added defenses against NUL bytes in text.

    The test case is a file produced by dvips which has bitmap
    font (subsets) with custom encodings so that some pieces
    of text contain control characters, including in one case 
    a NUL byte (\000 or ^@).  (See Bugs/tabart.ps)

    Thanks again to Wojciech Wojciak for report and test case.

5.  Moved vignette files from inst/doc/ to vignettes/ directory.

    Removed jss.cls and jss.bst from inst/doc.

    Thanks to Brian Ripley for pointing out the problem and solution!


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

1.  Added support for /xshow, /yshow, and /xyshow
    (fine-tuned positioning of text)

2.  Small fix for case where import generates char paths
    from text that consists of only a moveto 
    (e.g., text is only a space character).

3.  Ability to cope with "Separation" colorspace
    (actually just some defensive code so that PostScriptTrace()
     does not fall over;  just sets the colour to "black").

4.  Extraction of font information is more robust 
    (checks whether information is actually there before
     trying to extract it!).


Changes from version 0.7 to 0.7-4
===============================

1.  Fix warning in vignettes.

2.  Improvement to PostScriptTrace() to protect itself from
    traced file doing a 'cleardictstack'.

    The test case is vasarely.ps (part of the ghostscript distribution).
    Reported by Al Roark.

3.  Fixed bug in vignette "import" in Figure 20.

4.  Fixed bug in grid.symbols() so that it handles vector 'size'.

    Problem reported by Baptiste Auguie.


Changes from version 0.6-4 to 0.7
===============================

1.  RGML <path> elements ("stroke", "fill", and "char")
    are now converted into "pathgrob" grobs by grobify(),
    which means that it is now possible to correctly 
    reproduce more complex images, particularly, paths
    with holes using grid.picture().

    Similar change allows similar functionality with picture().

    Old behaviour retained (for grid.picture()) via
    oldGrobify() function.

2.  Improved PostScriptTrace() to at least have a prayer
    at handling non-standard color spaces (like R's sRGB !!!)
     
3.  The vignettes have been updated for the new complex-path
    support.


Changes from version 0.6 to 0.6-4
===============================

1.  Minor fix to how 'FUN' argument gets passed down by grobify().

2.  PostScriptTrace() now records eofill slightly differently from
    fill.  This is captured in a 'rule' slot in PictureFill objects
    by readPicture().

3.  readPicture() attempts to handle non-printing characters
    in imported text (by replacing them with full stops).  
    The 'tidy' argument allows the user to turn off this 
    conversion if desired.

4.  Fix to cope with zero-height text in imported image
    (problem reported by Toby Dylan Hocking)


Changes from version 0.5 to 0.6
===============================

1.  Added checks for XML special characters (e.g, '&')
    in text values (and improved encoding support).

2.  Added support for /widthshow and /awidthshow operators 
    (and improved /ashow support).

3.  Added support for line types (lty/setdash) 
    (and improved recording of line width).

4.  Added support for rotated text
    (and improved calculation of text width).

5.  Added 'charpos' argument to PostScriptTrace() to allow
    text that is NOT stroked to still be drawn as individual
    characters (with each character having its own location).

6.  Added 'sizeByWidth' argument to grobify (method for 
    PictureText objects) so that text size can be calculated
    from traced width OR from font height (the latter
    is based on querying the font so that two pieces of text 
    using the same font at the same scale will have the 
    same height upon tracing).

7.  Text paths are now ALWAYS a single path.  If 
    charpath=TRUE, then the text will also have child
    paths (which are the individual letters stroked).
    Alternatively, if charpos=TRUE, then the text will
    have child paths that are the individual letters
    as further text elements.

8.  Added "[[" method for Picture objects (to allow 
    access to paths within a PictureText path that
    has PictureChars or PictureTexts as children;
    subsetting by "[" does not access children of 
    a PictureText path).

9.  The 'bgText' argument for grobify(PictureChar) can now
    be a named vector so that, e.g., "o" can be "white" (to 
    fill the centre), while "i" can be "black" (to fill the
    dot).  The default value for 'bgText' has sensible settings. 

10. PostScriptTrace() now also records font name information for
    text.  This information is not currently used in drawing,
    but at least the information is now recorded in the 
    RGML format.

11. Bumped RGML file version to "3".

12. Added vignette to describe the variety of ways that you
    can import text from an external image.


Changes from version 0.4-5 to 0.5
=================================

1.  Added picture() function for drawing Picture as part
    of a plot produced by the 'graphics' package.


Changes from version 0.4-4 to 0.4-5
===================================

1.  Added 'encoding' argument to PostScriptTrace().


Changes from version 0.4 to 0.4-4
=================================

1.  Added support for /ashow operator.


Changes from version 0.3-1 to 0.4
=================================

1.  Fixed bug in how the width and height of text is calculated when
    PostScriptTrace(charpath=FALSE).

2.  Added 'setflat' argument to PostScriptTrace() to allow
    control of how many lines each curve is broken into.

3.  Allowed 'label' argument of picturePaths() to be a logical
    so can easily turn off labelling.

4.  Added a DTD for the RGML format (in inst/dtd/).

5.  Added a 'version' attribute to the <picture> element
    in the RGML format.  This allows 'grImport' to detect
    out-of-date RGML files and prompt for PostScriptTrace()
    to be re-run.


Changes from version 0.3 to 0.3-1
=================================

1.  Fixes to License: in DESCRIPTION and to imports in NAMESPACE


Changes from version 0.2-4 to 0.3
=================================

1.  Added 'distort' argument to grid.picture() so that image
    will not try to maintain its aspect ratio if distort=TRUE.

    Decided to bump minor version number cos this is not just 
    a bug fix.

    Motivated by feature request from Toby Dylan Hocking.


Changes from version 0.2-3 to 0.2-4
===================================

1.  Fix to PostScriptTrace() so that full file paths work on Windows.

    Thanks to Duncan Murdoch and Alex Hanke for bug reports.


Changes from version 0.2-2 to 0.2-3
===================================

1.  Fix to explodePaths() so that it handles paths that do not
    need exploding.


Changes from version 0.1 to 0.2
=================================

1.  Importing text was not working at all;  this now works, though
    imported text is just character outlines.  The default drawing
    method just strokes the character outline;  you can attempt
    to fill the characters, in which case, the first outline in each
    character is filled in the current colour, then all subsequent 
    outlines for the character are filled using a user-specified 
    background colour (default is "white").  This a very simple-
    minded approach, but it does work for some straightforward
    examples (an example where it doesn't work is the dot on a 
    lower-case "i").

    This change adds a new "char" type of path (to the existing
    "stroke" and "fill" types) and a new "PictureChar" class
    (to the existing "PictureStroke" and "PictureFill" classes).

2.  A path with zero locations used to cause an error;  such
    paths are now just not drawn.

3.  A new function explodePaths() breaks up any path with multiple
    'move' operations into separate paths.

4.  Added some tests in test/ dir.

[thanks to Ken Knoblauch for bug reports and testing 
 that led to these improvements]
