On some systems math.atan2 raises an exception when called with two
zeros. Fix one occurrence in the arrow module.
Reported by Joel Biddier

Cancelling the drawing of a poly line or poly bezier with ESC
resulted in tracebacks until the next mouse click. Reported by
Antoon Pardon (Savannah bug #9378). Patch by Valentin Ungureanu
(Savannah patch #3141).

The SVG filter handles ill-formed transform specifications a bit
better. The old version would hang in a regular expression match if
the triling closing parenthesis of e.g. a matrix specification was
missing. Bug report by Joel Biddier

The svg import filter also accepts capital Z as closepath command of
a path specification as required by the SVG specification. Savannah
Patch #3587 by Bernhard Reiter.

In the print dialog, when the user clicked on the file selection
button and cancelled the dialog, Skencil would give an exception.
This is now fixed.

The usage messge printed when the --help option is given on the
command line now correctly refers to "skencil" not "sketch" anymore.

The source URL in the spec file now refers to skencil as well. It
still points to sourceforge, though. Patch by Paul Dickson

The setup.py script now finds the tcl/tk libraries on OpenBSD as
well (savannag bug #12046)

Already in 0.6.16, but not mentioned before: Skencil's type1 font
parsing code could not cope with some type1 files -- files with no
subrs or with flexes. Now it can. Bug report by André Pascual

Skencil is the new name for the vector drawing program formerly known
as "Sketch".

This is only a superficial renaming. All places in the GUI are
changed and the main executable is now called skencil (for backwards
compatibility you can also start Skencil with "sketch" as before).

Internally nothing has changed in this regard. The main python
package is still called Sketch for instance and the userspecific
configuration is still stored in ~/.sketch

Thanks to Frank Koormann for coming up with the name "Skencil".

New icons including a new icon for Skencil itself contributed by
Taiabati (http://www.taiabati.it/). These icons were drawn with
Skencil and the raster versions were created with the help of Gimp.
The Skencil files can be found in the Examples directory.

The sk2ps.py script has a new option, --embed-fonts or -e to embed
the fonts used by a drawing in the postscript output. Patch by Otto
Tronarp

The print dialog also has a check box "Embed fonts" now. Patch by
Antoon Pardon

The sk2ppm.py script has a new option, --alpha-bits or -A, to make
ghostscript ase anti-aliasing. Patch by Tamito KAJIYAMA

The skshow.py script has a new option, --fit. If given it fits the
bounding box of the drawing rather than the page to the window size.
Patch by Antoon Pardon

Allow digits in the keys of format specifiers in the format strings
returned by the Info method of a GraphicsObject.

The SVG import filter now handles the viewBox attribute of the svg
element (it doesn't handle the preserveAspectRatio attribute though).
The filter also makes sure that non-text object won't get a font
attribute and it understands more color names. Bugs reported by Keith
Hopper

The CMX import filter handles poly-curves with a large number of
points better now. Reported by Tim Wright.

The extension modules in Sketch/Modules, Filter and Pax now use the
Python Memory API correctly as specified for Python 1.5.2 but it
should also be compatible with later versions including 2.3
(according to the discussion in April 2002)

The postscript output handles writing to an EPS file that's also
referenced by the drawing itself. Previously, in such cases Sketch
would open the eps file it was writing to again and copy the file
into itself filling up the file system. Bug reported by Rodrigo
Benenson (SF #550917)

The command Style->Update Style now works under Python 2.2 as well.
Bug reported by Juan Pablo Romero. Pieter Edelman pointed out that it
happens only under Python 2.2.

The line dialog now updates when the selected object doesn't have an
outline. It just checks the "None" checkbox in this case. In earlier
versions it would just ignore the selection change when the newly
selected object didn't have an outline. Reported by Antoon Pardon.

setup.py now looks for the tk header files in /usr/include/tclX.Y
(X.Y is the tcl version) as well.

Each time the line dialog was opened an empty arrow head was added to
the list of arrow heads making the option menu grow by one entry each
time the line dialog was opened. Fixed now.

Fix a typo in the simple_separation script. Spotted by Esteban
Manchado Velázquez

simple_separation provides a very simple form of color separation by
creating one ps file for each color used in the drawing.

The Illustrator-import filter now gives a warning if the file looks
as if it's not generated by AI. Furthermore it understands text
alignment now.

The SVG import filter parses paths more correctly now. The old
version didn't accept numbers without delimiters in between, which is
legal in an SVG path if the second number starts with a sign.

Some of the scripts in the Script module are now loaded automatically
on startup. If you don't want that, put the line

preferences.standard_scripts = []

into ~/.sketch/preferences.py

The resolution of EPS images is configurable now. You can set it with
in ~/.sketch/preferences.py with a line like

preferences.eps_preview_resolution = 144

In this example the resolutioin is set ot 144 pixels per inch, which
is twice the default value.

Bug Fixes:

Quote filenames of EPS files properly when rendering the preview.
The previous behavior was a security problem.

The setup.py script omitted the -lX11 parameter for the paxtkinter
module when run under Python 2.1 or with the --tk-autoconf parameter.
Spotted by Grant Edwards.

The PostScriptDevice's DrawLineXY method used the wrong y coordinate
for the end-point.

The PostScriptDevice uses floats for font sizes now.

Call setlocale to make the gettext functions work properly. There's
some strange interaction with tcl/tk for which Sketch/UI/skapp.py
contains a workaround. Reported by Gregor Hoffleit.

Not really a bug-fix, perhaps, but in SafeScripts it's now allowed to
call a few of the special python methods, such as __cmp__. The spread
script ran into this problem in some cases.

The reload panel lists the correct modules again.

In the Pax module, the CopyPlane of the pixmap objects allows another
pixmap as the destination drawable too.

Already done in 0.6.12: Fixed a bug in the stream filter module that
prevented Sketch from loading very small images embedded in Sketch
documents. Reported by Geoffrey T. Dairiki.

Internal Changes:

Plugins can now have plugin specific libraries. This is done with a
slightly incompatible way in how the plugin path is handled.

If A plugin has additional library modules, the library modules
should be put into a Lib direcory in the directory where the plugin
is placed. Sketch will automatically create a Lib package whose
__path__ contains that Lib directory so that the plugin can import
modules from there with "import Lib.module". How this works can be
seen in both new plugins (multi-line text and the drawfile input
filter).

Plugins may now have an additional configuration variable,
load_immediately. When set to true (default false) it will cause the
plugin management code to load the plugin module immediately after it
has been scanned.

The function Sketch.UI.prompt.get_sketch_modules once again correctly
determines which modules belong to Sketch.

Fix some typos in skshow's doc-string. This is basically what's
already done with the Debian packages.

Changing the paper format could lead to an inconsistent mapping
between document and window coordinates. Reported by Antoon Pardon.

Internal Changes:

The TrafoPlugin objects have a Trafo method now that returns the
transformation.

TrafoPlugin.__init__ now accepts a trafo object as the trafo kw-arg
and accepts the loading kw-arg.

The Append* methods of curve objects now raise a TypeError exception
when the first segment appended to a curve is not a line segment. One
consequence of this change is that Sketch may not be able to load
some sk-files anymore when they contain curves that start with a
bezier segment. You can use the new script Misc/fix_broken_sk_file.py
to fix such files.

Fix setup.py so that Sketch can be compiled with Python 2.1. The main
change here is that in Python 2.1, the _tkinter configuration can't
be taken from the Setup file anymore because of Python's new build
process.

If setup.py is run by Python 2.1 or higher it now uses the distutils
and code pretty much like Python's setup.py to figure out which
compiler flags to use for the Tk-specific C-code.

This change also introduces two new command line options for the
configure command:

--tk-flags=flags

Compiler flags to use for building the tk-modules. E.g.

./setup.py configure --tk-flags="-L/opt/tk/lib -ltk8.2 -ltcl8.2"

--tk-autoconf

Determine the compiler flags for Sketch's tk-modules without
referring to Python's Setup file as described above. When run
under Python 2.1 this will always be done. You can use this flag
to force this mode under older Python versions.

Fix a small problem in the SVG inport filter's handling of
coordinates in %-units. Patch provided by Philipp Matthias Hahn

Several fixes to make Sketch work with Python 2.0. Thomas Gellekum
contributed a patch for Sketch/Modules/skcolor.c and Ron Shonkwiler
pointed out problems in Pax when using PseudoColor visuals that are
also fixed now.

In tk versions >= 8.1, key stroke events with non-ASCII characters
should work once more for Latin1 characters. Those tk-versions report
characters as UTF8 which confused Sketch. Reported by Armin Geisse

Fixed a small name error in selection.py which could be triggered by
buggy user scripts

Fix a bug in generating the warning message when keystrokes are
overridden by userhooks.py

The import filters are a bit more robust. They ignore empty curve
objects automatically

<Ctrl-Space> now does the same as <Space> alone, that is, switch
between selection- and edit-mode. Unlike <Space>, <Ctrl-Space> also
works when editing text.

Pressing Ctrl when moving objects or Bezier-nodes now also constrains
to diagonals in addition to horizontal and vertical movement. Based
on a patch by Antoon Pardon.

You can now click and drag a bezier segment in edit mode. Based on
demo code by Simon Budig.

Sketch can write PDF files now. For this feature you need reportlab
from <http://www.reportlab.com>. This filter is quite complete, but
there are some limitations. It doesn't suport embedded EPS files,
tiled image fills, fonts that aren't among PDFs builtin fonts (it
will use Times-Roman instead), and some more esoteric features.

Note that reportlab 1.0 has some bugs that affect Sketch. They're
already fixed in CVS, so they should be in their next release.

The SVG export filter supports radial and axial gradients now.

Guide-lines no longer snap to other guide-lines when dragging them
but they still snap to guide-objects (i.e. objects on the guide layer
that are not guide-lines).

Bug fixes:

Give a meaningful error message when trying to print a document that
has no printable layers. Previous versions would fail with a
traceback in that case. The bug affected both File->Save as
PostScript and the Print dialog. Reported by Michael Walton.

In setup.py, use sys.exec_prefix to determine the location of
"Setup". Patch contributed by Tessa Lau

Sometimes the allocation of a shared memory image fails even though
tests at startup showed that they're supported (a common problem on
Solaris due to a default configuration which only allows relatively
small shared memory images). This case is handled more gracefully
now.

setup.py now also looks in Setup.local (in addition to Setup) for the
tkinter configuration. Pointed out by Daisuke Yabuki.

In paxtkinter, initialize the Tcl interpreter properly. The old
incorrect way was causing problems with a japanese
internationalization patch. Pointed out by Daisuke Yabuki.

The rectangle object used to print a lot of tracebacks in edit mode
when the user didn't select a handle. Fixed now.

The information about the currently selected object in the status-bar
wasn't always updated correctly

Internal Changes:

The stream-filter module includes ASCII85 encode and decode filters
and some bug-fixes.

The missing import of the plugins module that prevented Sketch from
loading any vector files, including it's native sk-format, is fixed.

Correction: The changes in the PIL import code in Sketch 0.6.6 do not
make it work with the PIL packages in SuSE Linux 6.2 and 6.3 out of
the box. Those packages are broken and have to be fixed as described
in INSTALL. The same applies to SuSE 6.4.

French translations contributed by Yves Ceccone and Frédéric
Toussaint.

Updated Spanish translations provided by Esteban Manchado Velázquez.

A few new scripts in the Scripts package: average_points,
create_star_outline, inspect_beziers and create_spiral, contributed
by Tamito KAJIYAMA and spread which defines eight scripts to
distribute the selected objects in various ways, contributed by
Michael Loßin

A new command line option, --run-script <scriptfile>, which executes
the file scriptfile on startup after creating the widgets and either
creating an empty new document or loading a document from a file if a
document filename was supplied on the command line.

The script is executed by execfile() with a globals dictionary
containg a 'context' object just like a normal user script.

If a directory is given on the command line instead of a normal file,
Sketch now opens a file open dialog with that directory (suggested by
François Pinard).

A simple slideshow tool, skshow.py. It's installed together with
sketch.py and sk2ps.py. Run it with the --help option to get more
information on how it works. (originally written as an example for
Christof Ecker)

A new crosshairs style cursor, activated by the menu item
View->Crosshairs. If snapping is active, this cursor is warped to a
snap point if the mouse pointer is near one. (suggested by Rainer
Menzner)

The "Zoom Area" tool can also zoom out now by holding the control key
when releasing the mouse button.

New sections in the Developer's Guide about the connector module and
plugin objects.

A new file Misc/magic with an entry for your magic file, as used by
e.g. file(1). Contributed by Michael Loßin.

The Python Imaging Library is used as a package now. Some people want
to install PIL without the PIL.pth file because of name conflicts
with e.g. Zope. This change also makes Sketch work with the pil rpm
of SuSE Linux 6.2-6.3 out of the box.

The PostScript generator now treats dashes for lines with widths less
than 1 point as the screen drawing routines. I.e. the lengths of the
dash are computed as if the line width was 1 pt.

Fix the bug in the PostScript generator that produced incorrect
dashes if two lines with same logical dash-pattern but different line
widths were printed one immediately after the other.

The eval() security hole in the xfig import filter should be plugged
now.

The "Update From..." button in the plugin object dialogs works now.

Fixed a bug that caused objects to share fill patterns when assigning
fill properties to several objects at once. E.g. assigning an axial
gradient to two objects and then transforming one of the objects
would modify the gradient of he other object as well.

Changed a few places where pointers were cast to ints to support
64bit systems properly (reported by Philipp Reisner).

Fixed the AFM file parser to accept floating point numbers in various
places as the specification says (reported by Rainer Menzner).

Fixed a bug where the selection info wasn't updated properly. To
reproduce it in 0.6.5: Select the text tool and click somewhere but
don't type anything. Select the text tool again and click somewhere
else, type something, go to selection mode and press DEL. (reported
by Darren Stalder)

In mainwindow.py, bzip2 isn't called with the -c flag anymore. that
flag isn't necessary here anyway and some bzip2 versions didn't like
it. (reported by Michael Lossin)

In preparation for Python 1.6, checked for and corrected list appends
with more than one argument.

Initialization is a bit simpler now. Programs that use Sketch as a
library no only require that the Sketch module is in sys.path and
they have to call Sketch.init_lib(). If they want to use the Tk part
of Sketch as well they have to call Sketch.init_ui() which implicitly
also calls init_lib().

The default properties for Text-objects created by scripts have
changed. They used to have an empty fill pattern, but a black
outline, which doesn't make sense and really was a bug. Now they have
a black uniform fill and no outline.

The po files are now created with xpot from po-utils. See po/README.

The wrapper object for safe scripts doesn't complain about __cmp__
and __coerce__ anymore.

"Snap To Objects" now also works for raster images and eps files.
They can even be used as guides by moving them onto the guide layer.
They behave just like rectangles in this regard.

bzip2 compressed sk-files (and also ai and svg) can now be
uncompressed transparently if bzip2 is installed. The same
functionality for gzip was already present in 0.5.0.

A new example script, Script/save_selection.py that saves the current
selection as an eps file.

More accurate papersizes for the A<n> formats, contributed by Martin
Glaser. The sizes used to be derived from first principles, so to
speak, everytime on start up, but that does not yield exactly the
same values that the standard defines. The old code is still there in
Sketch/Graphics/papersize.py, if you're curious.

The way paper formats are stored in the sk-files has changed
slightly. Only formats of a fixed list are stored by name now, for
all others only the dimensions are saved. This was done to prevent
problems if users add new formats in their userhooks.py.

The 'layer up' button in the layer dialog works now.

The DSC parser, used for e.g. extracting the bounding box of EPS
files, can cope with non-Unix line separator conventions.

Fixed a bug in the code that draws axial (linear) gradients on the
screen. In some cases the direction of diagonal the gradients was
incorrect, most noticable for very large border values. Postscript
output was not affected.

Removed .ps and .eps from the list of possible file name extensions.
They misled users to assume that File->Open was the way to load EPS
files.

The --imaging-include option of setup.py should work properly with
relative filenames now.

Removed the GPL copyright notices from Pax/clipmask.[ch] because they
shouldn't be there. Those files have the same license as the rest of
the code in Pax.

Fixed a typo in Resources/Fontmetrics/gs.sfd. The font in line 2 is
URWGothicL-Book

"Zoom Out" was translated incorrectly in de.po

Added -lm to _sketchmodule in Sketch/Modules/Setup.config and
Sketch/Modules/Setup.in

Fixed a bug in Sketch's postscript procset
(Resources/Misc/sketch-proc.ps) that caused problems when a
sketch-eps that contains eps's that use showpage was embedded in a ps
file which was then run through psnup (got that? :) ) To reproduce
it, create an eps with dvips, embed it in a Sketch drawing, export as
eps, embed it in a tex-document, create a psfile from that with dvips
and 'psnup -2' it. The resulting psfile executes a superfluous
showpage at the end of the embedded tex-eps.

Blending of two path-text objects works now. In previous versions
attempting this would leave the document in an inconsistent state and
the user couldn't undo the operation or even save properly.

Fixed bugs in the type1 font file parser and the underlying
postscript tokenizer. Some type 1 font files caused segfaults in the
tokenizer (e.g. the UTB_____.pfa font that comes with X11).

Updated Spanish translation provided by Esteban Manchado Velázquez.

More color icons provided by Panos Katsaloulis. Again, if you want to
use them, put the line

preferences.color_icons = 1

into ~/.sketch/preferences.py .

Misc/export_raster.py: additional boolean parameter for the
export_raster and export_alpha functions, use_bbox. If use_bbox is
true only render the contents of the bounding rectangle, otherwise
render the entire page.

Added Misc/Symbolgroup/, a plugin-object that can be used to build a
simple symbol library. See Misc/Symbolgroup/README for more details.

setup.py: Give a more meaningful error message if _tkinter is not
configured in Python's Setup

The mkfontdb.py script can also generate ghostscript Fontmap files
now thanks to Jeffrey Boser. The script is now at version 1.3.

The default properties for new objects can be set now by pressing the
apply button in the fill-, line- and font-dialogs when no object is
selected. Sketch will ask whether graphics objects or text objects
should be affected. You can select both, of course.

If you don't like this behavior, you can switch it off by putting the
following line into your ~/.sketch/preferences.py:

preferences.set_default_properties = 0

A new button in the lower left corner of the main window (with an X
bitmap) that is equivalent to Style/No Fill when pressed with the
left mouse button and equivalent to Style/No Line when pressed with
the middle mouse button.

When editing bezier curves, the ctrl-key now restricts the movement
of nodes to horizontal and vertical and when dragging a control
point, the angle of the tangent is restricted to multiples of 15
degrees.

When drawing bezier curves the ctrl-key now restricts the slope of
the tangent to multiples of 15 degrees.

When drawing poly-lines, the ctrl-key now restricts the slopes of the
lines to multiples of 15 degrees.

Selecting a blend group works a little different now, so that
clicking on the interpolation selects the entire blend group. In
earlier versions only the interpolation object was selected in that
case. Clicking on a control object of a blend group still selects
just the control object. (The blend group object contains both the
control objects and the interpolation objects).

The reason for this change is that it makes it easier to select two
blend groups to create an interpolation betweem them.

The change also affects the blend dialog if the selected blend group
has more than one control object. To change the number of steps in an
interpolation you have to select the interpolation object by holding
Ctrl and Shift when clicking on the object, just like you would with
a normal group to select a contained object.

A small change in the way Sketch determines which handle to drag when
editing a bezier curve: When a node and one of its control points
coincide, it was impossible to drag the control point. Now Sketch
selects the control point in that case. Coinciding nodes and control
points can occur when gridding is on and they're often found
Illustrator files.

There's a new directory Misc/ that contains some scripts that I use
occasionally. These scripts are somewhat unpolished and will probably
need some tweaking to fit your needs.

I also consider them 'half-supported', that is I test and fix them
only as far as I actually use them.

There are two scripts at the moment. One lets you export raster
images via ghostscript, and the other reads paths exported by Gimp.

A small reorganization of the sfd files in Resources/Fontmetrics. The
Charter and Utopia fonts are now listed in a separate file gsopt.sfd.

The rationale behind this is that std.sfd contains the standard
postscript files--in as far as that can be defined--like Times-Roman
or Courier. gs.sfd lists the URW fonts that make up the standard
ghostscript fonts, which are basically clones of the standard
postscript fonts. gsopt.sfd lists optional ghostscript fonts.

The afm-file parser is more tolerant now. It had problems with empty
lines.

fixed a bug that made the context command 'Select Mask' fail.

fixed a bug that caused the first few characters of a path-text to be
misplaced if the start position coincided with a node (but not the
start-node) of the curve-object.

Fixed a small bug in the cmxfilter that flipped the orientation of
conical gradients.

The command line option --version works again.

There a new option for ~/.sketch/preferences.py, fallback_font. This
is the name of the font to use when a font or the corresponding
metrics can't be found. The default is 'Times-Roman'

Added a note about the slightly broken pyimglib package in SuSE Linux
6.2 to the INSTALL file.

Fixed a few typos in the German translation.

Updated Spanish translation provided by Esteban Manchado Velázquez.

Added a new section about export filters to the developer's guide.

setup.py parsed macro definitions in Setup incorrectly. This is fixed
now. I also documented the --python-setup option.

setup.py's build command accepts arguments of the form <KEY>=<VALUE>
now. These are passed through to make to let you override variables
like CC or OPT. See the generated Makefiles or Makefile.pre.in for
more details.

The mkfontdb.py script knows a few more foundries and has a new
commandline option '-f' to specify the foundry used when it can't be
determined from the afm-file. I also increased its version to 1.2

Import/Export filters for the proposed Web-standard for vector
graphics, SVG. For the import filter, but not for the export filter,
you need the Python xml-package; see the INSTALL file for details on
where to get it.

Both filters are very primitive at the moment and only handle some
simple shapes and fills/strokes. In particular, there's no support
for Text or gradient fills among others yet.

Cleaned up the documentation to have less practically empty
HTML-files and extended the section on font-configuration. It
contains information about Sketch's font-path and on how to add
fonts.

Converted the images in the docs to the PNG format.

When editing text objects, you can position the caret with the mouse
now.

The create_star script is now interactive. It pops up a modal dialog
asking for the parameters of the star as an example how to use
dialogs is user scripts.

The sample scripts select_same_line_color.py and
select_same_fill_color.py are substantially faster now if there's a
large number of objects to be selected.

The help message in setup.py is more compact now, thanks to Gregor
Hoffleit.

Fixed a bug in the XFig filter that lead to the rejection of files
with "Flush Left" justification (as generated by pstoedit, for
example).

If you use rotated text, ruler_font_rotated must be compatible with
ruler_font, i.e. one must be a rotated version of the other.

The '[0 10 ~10 0]' is a transformation matrix which rotates the
characters by 90 degrees counter clockwise. This syntax was introduced
in X11R6, so to use this your X server must be compatible with that
X11 release.

Depending on the quality of your font renderer and your
X-configuration, the rotated fonts might look quite ugly, so you might
have to test a number of different fonts to get good results. On my
system, these settings are quite acceptable:

The align dialog allows you to align the selected objects relative to
the lowermost one. It would probably be better to use the first
selected object instead, but that's not possible with Sketch at the
moment, due to its implementation.

Fixed a byte order bug that resulted in wrong colors for images on a
big-endian X-server.

Fixed some mask-group bugs: The Effects| Create Maskgroup entry is now
grayed out correctly again and ungrouping the mask group places the
mask on top of the objects now. Both bugs were introduced when I
changed the behaviour of Create Maskgroup for Sketch 0.5.3.

The AddFunction function of the script-registry has a new keyword
parameter 'args'. See the user's guide for more details.

If you delete all characters of a text object (with backspace or DEL)
and then select a different object or change into another mode, the
now empty text-object is removed from the drawing.

A user scripting facility. The user's guide has a new section about
user scripts to get you started. The mechanisms to hook user scripts
into Sketch are somewhat experimental, though and may change.

A new import filter for Corel's CMX format. The filter is incomplete
and only handles 16bit CMX files, because I only have sample files for
that CMX-version.

A new import filter for Windows Metafiles (WMF), again incomplete.

The tooltips are active by default now.

Setting the unit of the position indicator in the status bar (via its
context menu) also sets the default unit used else where in Sketch.

The dimensions of rectangles and ellipses are now given in the current
default unit.

When creating ellipses or rectangles the current dimensions are
displayed in the statusbar.

Similarly, when transforming an object, information about the current
transformation is displayed in the statusbar, such as scaling factors
and rotation angles.

The ellipse drawing mode has two new variations:

When holding down Shift, the ellipse is centered at the start point.

When holding down Shift+Ctrl, the ellipse is a circle centered at
the start point with the current pointer position on its periphery.

Similarly, holding down Shift while drawing a rectangle uses the
start point as the center of the rectangle.

Path-text has been improved, introducing a slight incompatibility:

Characters that don't fit on the path are simply not drawn, but they
are still there. In previous versions, these characters were all
drawn at the same position at the end of the path.

It is possible that path-text objects will look slightly different
in future versions due to improvements in the algorithms used. In
particular, multiple subpaths in a curve may be supported.

You can drag the start position of the text along the path by
dragging the small rectangular handle in edit mode. This is probably
not the best interface. Suggestions welcome.

In previous versions, the curve-like objects were automatically
converted to bezier objetcs before the path-text group was created.
Now, these objects remain as they are, i.e. rectangles will remain
rectangles and ellipses remain ellipses.

.sk files with rectangles or ellipses as the curves in path-text
objects will not be read correctly by earlier versions.

You can now insert nodes and cut curves at specific positions:

Select a curve object in edit mode

click on the outline where you want to insert the node or cut the
curve. A small filled circle appears.

Select "Curve | Insert Nodes" or "Curve | Cut Curve" respectively.

This new method also affects Line->Curve and Curve->Line. They convert
the segment marked with the filled curve.

The old behaviour is still there.

The curve-object in a path-text object and the control-objects in a
blend-group can now be converted to a bezier object in place.

Added a few new key-strokes.

The .sk file version number was updated to "1 2" because of the
changes for path-text objects.

Bug fixes:

In the font dialog, the sizes list is updated together with the entry
widget.

"Update From..." in the font dialog works now.

Images loaded from the same image file share the raster data again.

Renamed the script mkfontdir.py to mkfontdb.py. This new version
creates fonts.scale files by default now and is also distributed
separately from Sketch. It's now distributed under the GPL and not the
LGPL.

Sketch now has an experimental configure, build and install script.
This script is modelled after the proposed standard for Python
packages and applications currently discussed in the Python distutils
SIG, although it's not much more than a wrapper around the old
makefiles.

For details on its use, see the INSTALL file.

Python 1.5.2 compatibility:

I've run Sketch with the 1.5.2b1 release for more than two weeks now,
and almost everything works as before, with these exceptions:

The stricter syntax check for functions with default arguments
produced syntax errors in two places. These have been corrected.

The new sorting order for objects of different types revealed an error
in the example file line.sk. This file is fixed in the new release.
The skloader should really make more checks during import.

The Drawing modes are now permanent by default. They were mentioned as
permanent in the NEWS for Sketch 0.5.2, but this was not really true.
Whether they are permanent or temporary is configurable, and the
default was `temporary'. To make them temporary again append the line

preferences.creation_is_temporary = 1

to the file ~/.sketch/preferences.py. This file (and the directory)
will be created automatically by Sketch after it has run. Editing the
preferences file works only if Sketch is not running, because Sketch
always writes it on exit.

This option will be moved into the Options-dialog someday.

If you feel adventurous, you can try the tooltips feature, by adding
the line

preferences.activate_tooltips = 1

to ~/.sketch/preferences.py. I hacked the code recently to make it
work again, but it probably still has some bugs.

There's an Illustrator export filter. To save a file in this format,
select File|Save As... and supply a filename ending in '.ai'. Due to
limitations in the standard Tk file dialog, selecting the Illustrator
format in the file type option menu is not sufficient or even
necessary.

The current filter is incomplete.

Rectangles may have rounded corners now. To create rounded corners,
select a rectangle in edit mode and drag one of the corners.

The .sk file version number was updated because of the rounded corner
rectangles.

Bezier curves (including poly lines) can now be used as guides. Move
them to the guide layer and activate Arrange|Snap to guides. This
already worked for ellipses and rectangles.

When drawing polylines, the first click-drag-release creates the first
line and not just the staring point.

When creating a mask group, the topmost object becomes the mask. This
is more intuitive, I think, than the lower most used before.

To create guide lines, you can now simply drag from the rulers into
the canvas just as in Gimp or CorelDraw.

To delete a guide line just drag it and drop it somewhere outside of
the canvas.

A new command File|Insert Document lets you load a vector drawing in
any of the supported formats and insert it into the current document
as a group. You can then ungroup and edit it.

The default unit for lengths is now configurable via the options menu.
This does not affect the rulers yet.

The current position in the status bar shows the snapped position now
if snapping is active.

Blending of two closed curves with differing numbers of segments
produced ill-formed bezier curves. This is now fixed, but results in
sligthly different blend groups as before in this special case.

Converting a text object to curves results in a group with separate
bezier objects for the characters (instead of a single multi-path bezier
object).

Two new window commands. Windows|Hide Dialogs hides (withdraws) all
dialogs currently visible and Windows|Show Dialogs shows them again.

Added a few new commands to the context menu for fill and line
properties.

A new command to select all nodes of a bezier object. Available from
the Curve menu and from the context menu.

Snapping of guide lines works properly now.

If you want 'live' scrolling in the drawing area, where the display is
updated while the scrollbars are dragged, add this to your Xresources:

sketch*canvas_frame.Scrollbar.jump: 0

The current release is not optimized for this, though, so it might be
too slow.

Sketch contains a work-around for a bug in the Python 1.5.1 module
import code that affected Sketch's import filters.

An improved AI import filter with a faster and better parser. It is
still not complete. See the comments in Plugins/Filters/ailoader.py
for more details about the implemented features and limitations.

A new (and experimental) print dialog is available via 'File/Print...'

The script sk2ps.py works.

The return value of XClearArea is ignored now, because XClearArea is
declared void on SGIs.

In the layer dialog, the context menu has been reorganized a bit and
contains some layer specific entries ('Grid...' for the grid layer
(the same as Arrange/Grid...) and 'Guide Lines...' for the guide layer
(the same as Arrange/Guide Lines...))

In the layer dialog , some of the buttons are grayed out if the
corresponding layer attribute cannot be changed (e.g. the grid layer
is always locked).

The test for X shared memory images should work properly now.

fixed the bug where images rotated by exactly 90 degrees were not
drawn.

the drawing modes (create curve, create rectangle, etc) are now
permanent. You have to switch to edit-mode or selection mode
explicitly.

Switching between modes is now easier. The buttons for edit/select
mode and for drawing are now `radiobuttons' and provide both a means
to switch from one mode to another and an indicator for the current
mode.

the button for snap to grid now changes its relief from flat to sunken
if snapping is active (instead of changing its bitmap).

Added a label to the statusbar that indicates whether the drawing was
modified since the last save or since it was loaded/created.

_sketchmodule.so doesn't use drem anymore. (drem is not available on
Solaris)

The color allocation strategy for PseudoColor displays is
configurable. The option is not available from the dialog yet.