Hi!
We're proud to announce the release of PyX 0.9! After quite some time
we finally managed to prepare a new major release. Many improvements
and fixes are included (see the attached list of changes), but there
are a couple of highlights which should be mentioned separately: This
release adds a set of deformers to PyX for path manipulations like
smoothing, shifting, etc. A new set of extensively documented examples
describing various aspects of PyX in a cookbook-like fashion have been
written. Type 1 font-stripping is now handled by a newly written
Python module. The evaluation of functions for graph plotting is now
left to Python. Thereby some obscure data manipulation could be
removed from the bar style for handling of nested bar graphs.
Transparency is now supported for PDF output.
Let me try to summarize some of the *visible* changes (to existing
code out there) we needed to apply to facilitate some of the major
goals of this release:
- The path system has passed another restructuring phase. The
normpath, which allows for all the advanced path features of PyX,
have been moved into a separate module normpath. The
parametrization of the paths (i.e. of the normpaths) is now
handled by normpathparam instances allowing for mixing arc lengths
and normpathparam instances in any order in many path functions
like split etc. The normpathparam instances allow the addition of
arc lengths to walk along a path, for example starting at the end
of a path or at an intersection point.
- The evaluation of mathematical expressions in the classes from the
graph.data module is now left to Python. While this leads to a
huge set of other improvements (like being not restricted to the
floats datatype anymore), there are no differences between the
evaluation of the expression compared to Python anymore. As Python
by default still uses integer division for integer arguments, the
meaning of a function expression like "1/2" has changed
dramatically. In earlier versions of PyX for this example the
value 0.5 was calculated, now it becomes 0. (I'm looking forward
to Python 3000 to get rid of this situation once and for all! :-))
- Bars graphs on a list of data sets, which in earlier versions have
been automatically converted to use a nested bar axis, don't do
that automatic conversion anymore. You may want to look at the
example http://pyx.sourceforge.net/examples/bargraphs/compare.html
to learn more about the new and more flexible solution.
- The stroke styles linestyle and dash now use the rellength feature
by default. Furthermore the rellength feature was adjusted to not
modify the dash lengths for the default linewidth. Hence you're
affected by this change when you have used the rellength feature
before or you used linestyles on linewidths different from the
default.
- The bbox calcuation was modified in two respects: First it now
properly takes into account the shape of bezier boxes (so the real
bounding box is now used instead of the control box). Secondly PyX
now takes into account the linewidths when stroking a path and
adds it to the bounding box.
Happy PyXing ...
Jörg, Michael, and André
------------------
0.9 (2006/05/24):
- most important changes (to be included in the release notes):
- mathtree removal (warning about integer division)
- barpos style does not build tuples for nestedbar axes automatically
- new deformers for path manipulation (for smoothing, shifting, ... paths)
- font modules:
- new framework for font handling
- own implementation of type1 font stripping (old pdftex code fragments removed)
- complete type1 font command representation and glyph path extraction from font programs
- t1code extension module (C version of de-/encoding routines used in Type 1 font files)
- AFM file parser
- graph modules:
- data module:
- mathtree removal: more flexibility due to true python expressions
- default style instantiation bug (reported by Gregory Novak)
- style module:
- automatic subaxis tuple creation removed in barpos (create tuples
in expressions now; subnames argument removed since it became pointless;
adujstaxis became independend from selectstyle for all styles now)
- remove multiple painting of frompath in histogram and barpos styles
- fix missing attribute select when using a bar style once only (reported by Alan Isaac)
- fix histograms for negative y-coordinates (reported by Dominic Ford, bug #1492548)
- fix histogram to stroke lines to the baseline for steps=0 when two subsequent values are equal
- add key method for histogram style (reported by Hagemann, bug #1371554)
- implement a changebar style
- graph, axis and style module:
- support for mutual linking of axes between graphs
- new domethods dependency handling
- separate axis range calculation from dolayout
- axis.parter module:
- linear and logarthmic partitioners always need lists now
(as it was documented all the time; renamed tickdist/labeldist
to tickdists/labeldists; renamed tickpos/labelpos to
tickpreexps/labelpreexps)
- axis module:
- patch to tickpos and vtickpos (reported by Wojciech Smigaj, cf. patch #1286112)
- anchoredpathaxis added (suggested by Wojciech Smigaj)
- properly handle range rating on inversed axis (reported by Dominic Ford, cf. bug #1461513)
- invalidate axis partitions with a single label only by the distance rater
- fallback (with warning) to linear partitioner on a small logarithmics scale
- painter module:
- patch to allow for tickattrs=None (reported by Wojciech Smigaj, cf. patch #1286116)
- color module:
- transparency support (PDF only)
- conversion between colorspaces
- nonlinear palettes added
- the former palette must now be initialized as linearpalette
- remove min and max arguments of palettes
- text module:
- improve escapestring to handle all ascii characters
- correct vshift when text size is modified by a text.size instance
- recover from exceptions (reported by Alan Isaac)
- handle missing italic angle information in tfm for pdf output (reported by Brett Calcott)
- allow for .def and .fd files in texmessage.loaddef (new name for
texmessage.loadfd, which was restricted to .fd files)
- path module:
- correct closepath (do not invalidate currentpoint but set it to the
beginning of the current subpath); structural rework of pathitems
- calculate real bboxes for Bezier curves
- fix intersection due to non-linear parametrization of bezier curves
- add rotate methods to path, normpath, normsubpath, and normsubpathitems
- add flushskippedline to normsubpath
- add arclentoparam to normsubpath and normsubpathitems
- path is no longer a canvasitem
- reduce number of parameters of outputPS/outputPDF methods (do not pass context and registry)
- normpath module:
- contains normpath, normsubpath and normpathparam which have originally
been in the path module
- return "invalid" for certain path operations when the curve "speed" is
below a certain threshold
- normpath is no longer a canvasitem
- reduce number of parameters of outputPS/outputPDF methods (do not pass context and registry)
- deformer module:
- rewritten smoothed to make use of the subnormpath facilities
- rewritten parallel for arbitrary paths
- deco module:
- add basic text decorator
- allow arrows at arbitrary positions along the path
- connector module:
- boxdists parameter need to be a list/tuple of two items now
- changed the orientation of the angle parameters
- trafo module:
- renamed _apply to apply_pt
- introduce _epsilon for checking the singularity of a trafo
- epsfile module:
- use rectclip instead of clip to remove the clipping path from the
PostScript stack, which otherwise might create strange effects for
certain PostScript files (reported by Gert Ingold)
- dvifile module:
- silently ignore TrueType fonts in font mapping files (reported by Gabriel Vasseur)
- type1font module:
- accept [ and ] as separators in encoding files (reported by Mojca Miklavec, cf. bug #1429524)
- canvas module:
- remove registerPS/registerPDF in favour of registering resourcing during the outputPS/outputPDF run
- move bbox handling to registry
- rename outputPS/outputPDF -> processPS/processPDF
- remove set method of canvas
- add a pipeGS method to directly pass the PyX output to ghostscript
- allow file instances as parameter of the writeXXXfile methods (feature request #1419658 by Jason Pratt)
- document modules:
- allow file instances as parameter of the writeXXXfile methods (feature request #1419658 by Jason Pratt)
- style module:
- make rellength the default for dash styles
- random notes:
- switched to subversion on 2006/03/09
--
by _ _ _ Dr. André Wobst
/ \ \ / ) wobsta@..., http://www.wobsta.de/
/ _ \ \/\/ / PyX - High quality PostScript and PDF figures
(_/ \_)_/\_/ with Python & TeX: visit http://pyx.sourceforge.net/