<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Acspike</id>
	<title>Inkscape Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Acspike"/>
	<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/Special:Contributions/Acspike"/>
	<updated>2026-05-09T19:44:43Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=PythonEffectTutorial&amp;diff=35654</id>
		<title>PythonEffectTutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=PythonEffectTutorial&amp;diff=35654"/>
		<updated>2008-09-07T19:36:48Z</updated>

		<summary type="html">&lt;p&gt;Acspike: add to Extensions category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Effect extensions in Inkscape means a simple programs or scripts that reads an SVG file from standard input, transforms it somehow and prints it to the standart output.  Usually Inkscape sits on both ends, providing the file with some parameters as input first and finally reading the output, which is then used for further work.&lt;br /&gt;
[[Image:Effect_flow.svg|thumb|right|400px]]&lt;br /&gt;
&lt;br /&gt;
We will write a simple effect extension script in [http://docs.python.org Python] that will put &amp;quot;Hello World!&amp;quot; or &amp;quot;Hello &amp;lt;value of --what option&amp;gt;!&amp;quot; string in the center of document and inside a new layer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''This script won't work with the current version of inkscape, it might still help as a useful guide how to create your own scripts though.  Especially the methods to access the xml structure have changed, please refer to the [http://codespeak.net/lxml/ lxml] documentation.''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Effect Extension Script ==&lt;br /&gt;
&lt;br /&gt;
First of all create a file ''hello_world.py'' and make it executable with the Python interpreter with the well-known directive:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you're going to put the file somewhere else than into inkscape's installation directory, we need to add a path so that python can find the necessary modules:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
sys.path.append('/usr/share/inkscape/extensions') # or another path, as necessary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Import the ''inkex.py'' file with the ''Effect'' base class that will do most of the work for us and the ''simplestyle.py'' module with support functions for working with CSS styles. We will use just the ''formatStyle'' function from this module:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import inkex&lt;br /&gt;
from simplestyle import *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Declare a ''HelloWordEffect'' class that inherits from ''Effect'' and write a constructor where the base class is initialized and script options for the option parser are defined:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class HelloWorldEffect(inkex.Effect):&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        inkex.Effect.__init__(self)&lt;br /&gt;
        self.OptionParser.add_option('-w', '--what', action = 'store',&lt;br /&gt;
          type = 'string', dest = 'what', default = 'World',&lt;br /&gt;
          help = 'What would you like to greet?')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The complete documentation for the ''OptionParser'' class can be found at http://docs.python.org/lib/module-optparse.html. Here we just use the ''add_option'' method which has as first argument a short option name, as second argument a long option name and then a few other arguments with this meaning:&lt;br /&gt;
&lt;br /&gt;
* ''action'' - An action which should be done with option value. In this case we use action ''store'' which will store option value in ''self.options.&amp;lt;destination&amp;gt;'' attribute.&lt;br /&gt;
* ''type'' - Type of option value. We use string here.&lt;br /&gt;
* ''dest'' - Destination of option action specified by ''action'' argument. Using ''what'' value we say that we want to store option value to self.options.what attribute.&lt;br /&gt;
* ''default'' - Defalut value for this option if it is not specified.&lt;br /&gt;
* ''help'' - A help string that will be displayed if script will be given no arguments or some option or argument will have wrong syntax.&lt;br /&gt;
&lt;br /&gt;
Inkscape will create a GUI form with widgets for all specified options and prefill them with the default values specified using the ''.inx'' file for this extension which we will write later. &lt;br /&gt;
&lt;br /&gt;
We need to override only one ''Effect'' class method to provide the desired effect functionality: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    def effect(self):&lt;br /&gt;
        what = self.options.what&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
As you can imagine we just stored the ''--what'' option value to the ''what'' variable.&lt;br /&gt;
&lt;br /&gt;
Now we will finally start to do something. We will have to work with the XML representation of the SVG document that we can access via ''Effect'''s ''self.document'' attribute.&lt;br /&gt;
It is of lxml's '' _ElementTree'' class type.  Complete documentation for the lxml package lxml can be found at http://codespeak.net/lxml/.&lt;br /&gt;
&lt;br /&gt;
First we get SVG document's ''svg'' element and its dimensions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        svg = self.document.getroot()&lt;br /&gt;
        # or alternatively&lt;br /&gt;
        # svg = self.document.xpath('//svg:svg',namespaces=inkex.NSS)[0]&lt;br /&gt;
&lt;br /&gt;
        # Again, there are two ways to get the attibutes:&lt;br /&gt;
        width  = inkex.unittouu(svg.get('width'))&lt;br /&gt;
        height = inkex.unittouu(svg.attrib['height'])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The ''xpath'' function returns a list of all matching elements so we just use the first one of them.&lt;br /&gt;
&lt;br /&gt;
We now create an SVG group element ('' 'g' '') and &amp;quot;mark&amp;quot; it as a layer using Inkscape' SVG extensions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        layer = inkex.etree.SubElement(svg, 'g')&lt;br /&gt;
        layer.set(inkex.addNS('label', 'inkscape'), 'Hello %s Layer' % (what))&lt;br /&gt;
        layer.set(inkex.addNS('groupmode', 'inkscape'), 'layer')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This creates ''inkscape:label'' and ''inkscape:groupmode'' attributes, which will only be read by Inkscape or compatible applications.  To all other viewers, this new element looks just like a plain SVG group.&lt;br /&gt;
&lt;br /&gt;
Now we create an SVG text element with a text value containing the &amp;quot;Hello World&amp;quot; string:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        text = inkex.etree.Element(inkex.addNS('text','svg'))&lt;br /&gt;
        text.text = 'Hello %s!' % (what)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set the position of the text to the center of SVG document:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        text.set('x', str(width / 2))&lt;br /&gt;
        text.set('y', str(height / 2))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If we want to center the text on its position we need to define the CSS style of the SVG ''text'' element. Actually we use the ''text-anchor'' SVG extension to CSS styles to do that work:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        style = {'text-align' : 'center', 'text-anchor' : 'middle'}&lt;br /&gt;
        text.set('style', formatStyle(style))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally we connect all created elements together and put them into the SVG document:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        layer.append(text)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We just defined a class that inherited from the original effect extension so we have to create an instance of it and execute it in the main control flow:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
effect = HelloWorldEffect()&lt;br /&gt;
effect.affect()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extension Description File ==&lt;br /&gt;
&lt;br /&gt;
To include script in Inkscape's main menu create ''hello_world.inx'' file describing script evokation. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;inkscape-extension&amp;gt;&lt;br /&gt;
  &amp;lt;_name&amp;gt;Hello World!&amp;lt;/_name&amp;gt;&lt;br /&gt;
  &amp;lt;id&amp;gt;org.ekips.filter.hello_world&amp;lt;/id&amp;gt;&lt;br /&gt;
  &amp;lt;dependency type=&amp;quot;executable&amp;quot; location=&amp;quot;extensions&amp;quot;&amp;gt;hello_world.py&amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency type=&amp;quot;executable&amp;quot; location=&amp;quot;extensions&amp;quot;&amp;gt;inkex.py&amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;param name=&amp;quot;what&amp;quot; type=&amp;quot;string&amp;quot; _gui-text=&amp;quot;What would you like to greet?&amp;quot;&amp;gt;World&amp;lt;/param&amp;gt;&lt;br /&gt;
  &amp;lt;effect&amp;gt;&lt;br /&gt;
    &amp;lt;object-type&amp;gt;all&amp;lt;/object-type&amp;gt;&lt;br /&gt;
    &amp;lt;effects-menu&amp;gt;&lt;br /&gt;
       &amp;lt;submenu _name=&amp;quot;Examples&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/effects-menu&amp;gt;&lt;br /&gt;
  &amp;lt;/effect&amp;gt;&lt;br /&gt;
  &amp;lt;script&amp;gt;&lt;br /&gt;
    &amp;lt;command reldir=&amp;quot;extensions&amp;quot; interpreter=&amp;quot;python&amp;quot;&amp;gt;hello_world.py&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/inkscape-extension&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create ''&amp;lt;param&amp;gt;'' element for every option of a script and ''&amp;lt;dependency&amp;gt;'' for every included module which is not from Python standard library. Inkscape will search for this modules in directory with script. ''&amp;lt;effect&amp;gt;'' element and its descendants defines name of menu item evoking our new &amp;quot;Hello World!&amp;quot; extension.&lt;br /&gt;
&lt;br /&gt;
If the inx file isn't well formed or if any of the dependencies wasn't met, the extension won't show up in the menu. If your extension doesn't show up, take a look at extension-errors.log, which may give you a hint why it wasn't loaded.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
To install a new extenstion just put ''hello_world.py'' and ''hello_world.inx'' files with all dependency modules to the ''&amp;lt;path_to_inkscape&amp;gt;/extensions'' or ''~/.inkscape/extensions'' directory.  On Linux you will probably have to make the python script executable first if you haven't done this yet.  This is usually done by the usual command (or in your preferred file manager):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ chmod a+x hello_world.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now start Inkscape. A new menu item ''Hello World!'' in ''Effects-&amp;gt;Examples'' menu should appear.&lt;br /&gt;
&lt;br /&gt;
== Complete Source Code ==&lt;br /&gt;
&lt;br /&gt;
Here is a complete commented source pre of ''hello_world.py'' script file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
# These two lines are only needed if you don't put the script directly into&lt;br /&gt;
# the installation directory&lt;br /&gt;
import sys&lt;br /&gt;
sys.path.append('/usr/share/inkscape/extensions')&lt;br /&gt;
&lt;br /&gt;
# We will use the inkex module with the predefined Effect base class.&lt;br /&gt;
import inkex&lt;br /&gt;
# The simplestyle module provides functions for style parsing.&lt;br /&gt;
from simplestyle import *&lt;br /&gt;
&lt;br /&gt;
class HelloWorldEffect(inkex.Effect):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Example Inkscape effect extension.&lt;br /&gt;
    Creates a new layer with a &amp;quot;Hello World!&amp;quot; text centered in the middle of the document.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Constructor.&lt;br /&gt;
        Defines the &amp;quot;--what&amp;quot; option of a script.&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        # Call the base class constructor.&lt;br /&gt;
        inkex.Effect.__init__(self)&lt;br /&gt;
&lt;br /&gt;
        # Define string option &amp;quot;--what&amp;quot; with &amp;quot;-w&amp;quot; shortcut and default value &amp;quot;World&amp;quot;.&lt;br /&gt;
        self.OptionParser.add_option('-w', '--what', action = 'store',&lt;br /&gt;
          type = 'string', dest = 'what', default = 'World',&lt;br /&gt;
          help = 'What would you like to greet?')&lt;br /&gt;
&lt;br /&gt;
    def effect(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Effect behaviour.&lt;br /&gt;
        Overrides base class' method and inserts &amp;quot;Hello World&amp;quot; text into SVG document.&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        # Get script's &amp;quot;--what&amp;quot; option value.&lt;br /&gt;
        what = self.options.what&lt;br /&gt;
&lt;br /&gt;
        # Get access to main SVG document element and get its dimensions.&lt;br /&gt;
        svg = self.document.getroot()&lt;br /&gt;
        # or alternatively&lt;br /&gt;
        # svg = self.document.xpath('//svg:svg',namespaces=inkex.NSS)[0]&lt;br /&gt;
&lt;br /&gt;
        # Again, there are two ways to get the attibutes:&lt;br /&gt;
        width  = inkex.unittouu(svg.get('width'))&lt;br /&gt;
        height = inkex.unittouu(svg.attrib['height'])&lt;br /&gt;
&lt;br /&gt;
        # Create a new layer.&lt;br /&gt;
        layer = inkex.etree.SubElement(svg, 'g')&lt;br /&gt;
        layer.set(inkex.addNS('label', 'inkscape'), 'Hello %s Layer' % (what))&lt;br /&gt;
        layer.set(inkex.addNS('groupmode', 'inkscape'), 'layer')&lt;br /&gt;
&lt;br /&gt;
        # Create text element&lt;br /&gt;
        text = inkex.etree.Element(inkex.addNS('text','svg'))&lt;br /&gt;
        text.text = 'Hello %s!' % (what)&lt;br /&gt;
&lt;br /&gt;
        # Set text position to center of document.&lt;br /&gt;
        text.set('x', str(width / 2))&lt;br /&gt;
        text.set('y', str(height / 2))&lt;br /&gt;
&lt;br /&gt;
        # Center text horizontally with CSS style.&lt;br /&gt;
        style = {'text-align' : 'center', 'text-anchor': 'middle'}&lt;br /&gt;
        text.set('style', formatStyle(style))&lt;br /&gt;
&lt;br /&gt;
        # Connect elements together.&lt;br /&gt;
        layer.append(text)&lt;br /&gt;
&lt;br /&gt;
# Create effect instance and apply it.&lt;br /&gt;
effect = HelloWorldEffect()&lt;br /&gt;
effect.affect()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Last edited by --[[User:Rubikcube|Rubikcube]] 21:18, 7 August 2008 (UTC), based on a version by&lt;br /&gt;
[[User:Blackhex|Blackhex]] 11:59, 26 April 2007 (UTC)&lt;br /&gt;
[[Category:Developer Documentation]]&lt;br /&gt;
[[Category:Extensions]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Lib2geom_Release_Notes_02&amp;diff=30934</id>
		<title>Lib2geom Release Notes 02</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Lib2geom_Release_Notes_02&amp;diff=30934"/>
		<updated>2008-06-25T22:56:14Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* Release Notes for lib2geom v 0.2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Release Notes for lib2geom v 0.2 ==&lt;br /&gt;
&lt;br /&gt;
*Greatly expanded Python bindings&lt;br /&gt;
**began wrapping Rect, d2pwsb, pwd2sb, Region, Regions, Path and PathVector&lt;br /&gt;
**...&lt;br /&gt;
*Boolean Ops&lt;br /&gt;
&lt;br /&gt;
--[[User:Verbalshadow|verbalshadow]] 22:41, 25 June 2008 (UTC)&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Lib2geom_Release_Notes_02&amp;diff=30924</id>
		<title>Lib2geom Release Notes 02</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Lib2geom_Release_Notes_02&amp;diff=30924"/>
		<updated>2008-06-25T22:56:02Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* Release Notes for lib2geom v 0.2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Release Notes for lib2geom v 0.2 ==&lt;br /&gt;
&lt;br /&gt;
*Greatly expanded Python bindings&lt;br /&gt;
**began wrapping Rect, d2pwsb, pwd2sb, Region, Regions, Path and PathVector&lt;br /&gt;
**&lt;br /&gt;
*Boolean Ops&lt;br /&gt;
&lt;br /&gt;
--[[User:Verbalshadow|verbalshadow]] 22:41, 25 June 2008 (UTC)&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=BlueprintCutterControl&amp;diff=29954</id>
		<title>BlueprintCutterControl</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=BlueprintCutterControl&amp;diff=29954"/>
		<updated>2008-06-04T15:40:24Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* What available solutions exist */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
&lt;br /&gt;
One of often requested features is ability to print to cutting plotters or create files for them.&lt;br /&gt;
&lt;br /&gt;
Right now this page is a collection of ideas to to solve the issue in a sane and crossplatform way.&lt;br /&gt;
&lt;br /&gt;
= How it usually works =&lt;br /&gt;
&lt;br /&gt;
# Client brings a EPS/AI file.&lt;br /&gt;
# Printing service imports it to an application like.&lt;br /&gt;
# Then the operator runs conversion and looks at preview.&lt;br /&gt;
# If it's OK, the file goes to cutter.&lt;br /&gt;
&lt;br /&gt;
= What available solutions exist =&lt;br /&gt;
&lt;br /&gt;
# There is a DXF exporter for CraftRobo bundled with Inkscape.&lt;br /&gt;
# There is a half-standalone project called [http://vidar.gimp.org/graphtecprint/ graphtecprint].&lt;br /&gt;
# There is a &amp;quot;scrapbook&amp;quot; project by Aaron Spike called [http://code.google.com/p/cuft/ cuft].&lt;br /&gt;
# There is a testing version of an HPGL exporter written by Aaron Spike.&lt;br /&gt;
&lt;br /&gt;
''I'm about to adapt the INX file from the HPGL exporter and commit the extension to SVN''--[[User:Prokoudine|Prokoudine]] 14:19, 4 June 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
''The cuft project aims to collect information about the GSD format. Currently there is no externally useful code.''--[[User:Acspike|Acspike]] 15:38, 4 June 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
= What should be done =&lt;br /&gt;
&lt;br /&gt;
== For direct cutting ==&lt;br /&gt;
&lt;br /&gt;
We probably do not want to distribute cutter drivers with Inkscape, but at the same time we want cutters to be available for users on all platforms.&lt;br /&gt;
&lt;br /&gt;
What we could do is:&lt;br /&gt;
&lt;br /&gt;
# Split functionality between Inkscape and actual printing backend.&lt;br /&gt;
# Find an upstream project like CUPS to ship the drivers with it.&lt;br /&gt;
# Make sure we can still use cutter driver on Windows where CUPS is not that widely used.&lt;br /&gt;
# Create a [http://wiki.inkscape.org/wiki/index.php/MakingLivePathEffects live path effect] (LPE) for creating polylines from Bezier curves (using [http://lib2geom.sourceforge.net/ lib2geom])&lt;br /&gt;
&lt;br /&gt;
Device dependent options (cutting speed, cutting force, knife position fine-tuning etc.) should go to Print dialog (Advanced tab or the like). It looks like Cairo backend would be the only correct way to pass polylines to a cutter.&lt;br /&gt;
&lt;br /&gt;
== For just exporting ==&lt;br /&gt;
&lt;br /&gt;
# Use available LPE for previewing&lt;br /&gt;
# Create as many exporters as required (see below)&lt;br /&gt;
&lt;br /&gt;
= File formats =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File extension&lt;br /&gt;
! Full name&lt;br /&gt;
! Devices&lt;br /&gt;
! Exporter&lt;br /&gt;
|-&lt;br /&gt;
| DXF&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| Available in current stable version of Inkscape&lt;br /&gt;
|-&lt;br /&gt;
| GSD&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Available from [http://code.google.com/p/cuft/ cuft]'s SVN&lt;br /&gt;
|-&lt;br /&gt;
| HPGL&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Getting ready for inclusion into 0.46+svn&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Cutters =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Device&lt;br /&gt;
! Protocol&lt;br /&gt;
! Linux drivers&lt;br /&gt;
! Windows drivers&lt;br /&gt;
! Mac OS drivers&lt;br /&gt;
|-&lt;br /&gt;
| Graphtec FC7000Mk2&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Graphtec CE5000&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
| Graphtec CC200-20&lt;br /&gt;
| &lt;br /&gt;
| [http://vidar.gimp.org/graphtecprint/ vidar's page]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Graphtec CE5000-120AP&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
| Graphtec Craft ROBO&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Graphtec FC2250&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
| Graphtec FC4200&lt;br /&gt;
| &lt;br /&gt;
| [http://vidar.gimp.org/graphtecprint/ vidar's page] + patch from Ulisses (comments in the blog)&lt;br /&gt;
| &lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
| QuicKutz Silhouette&lt;br /&gt;
| based on Graphtec CC200-20&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Xyron Wishblade&lt;br /&gt;
| Graphtec CC200-20&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=103&amp;amp;type=1 Roland CAMM-1 Pro GX-300 Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=106&amp;amp;type=1 Roland CAMM-1 Pro GX-500 Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=95&amp;amp;type=1 Roland STIKA SV-8 Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=96&amp;amp;type=1 Roland STIKA SV-12 Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=101&amp;amp;type=1 Roland STIKA SV-15 Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=17&amp;amp;type=1 Roland CAMM-1 GX-24 Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=20&amp;amp;type=1 Roland VersaCAMM SP-300 V Printer/Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=20&amp;amp;type=1 Roland VersaCAMM SP-300 V Printer/Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=21&amp;amp;type=1 Roland VersaCAMM SP-540 V Printer/Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=112&amp;amp;type=1 Roland VersaCAMM VP-300 V Printer/Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=113&amp;amp;type=1 Roland VersaCAMM VP-300 V Printer/Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=83&amp;amp;type=1 Roland SolJet Pro III XC-540 Printer/Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=BlueprintCutterControl&amp;diff=29944</id>
		<title>BlueprintCutterControl</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=BlueprintCutterControl&amp;diff=29944"/>
		<updated>2008-06-04T15:40:10Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* What available solutions exist */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
&lt;br /&gt;
One of often requested features is ability to print to cutting plotters or create files for them.&lt;br /&gt;
&lt;br /&gt;
Right now this page is a collection of ideas to to solve the issue in a sane and crossplatform way.&lt;br /&gt;
&lt;br /&gt;
= How it usually works =&lt;br /&gt;
&lt;br /&gt;
# Client brings a EPS/AI file.&lt;br /&gt;
# Printing service imports it to an application like.&lt;br /&gt;
# Then the operator runs conversion and looks at preview.&lt;br /&gt;
# If it's OK, the file goes to cutter.&lt;br /&gt;
&lt;br /&gt;
= What available solutions exist =&lt;br /&gt;
&lt;br /&gt;
# There is a DXF exporter for CraftRobo bundled with Inkscape.&lt;br /&gt;
# There is a half-standalone project called [http://vidar.gimp.org/graphtecprint/ graphtecprint].&lt;br /&gt;
# There is a &amp;quot;scrapbook&amp;quot; project by Aaron Spike called [http://code.google.com/p/cuft/ cuft].&lt;br /&gt;
# There is a testing version of an HPGL exporter written by Aaron Spike.&lt;br /&gt;
&lt;br /&gt;
''I'm about to adapt the INX file from the HPGL exporter and commit the extension to SVN''--[[User:Prokoudine|Prokoudine]] 14:19, 4 June 2008 (UTC)&lt;br /&gt;
''The cuft project aims to collect information about the GSD format. Currently there is no externally useful code.''--[[User:Acspike|Acspike]] 15:38, 4 June 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
= What should be done =&lt;br /&gt;
&lt;br /&gt;
== For direct cutting ==&lt;br /&gt;
&lt;br /&gt;
We probably do not want to distribute cutter drivers with Inkscape, but at the same time we want cutters to be available for users on all platforms.&lt;br /&gt;
&lt;br /&gt;
What we could do is:&lt;br /&gt;
&lt;br /&gt;
# Split functionality between Inkscape and actual printing backend.&lt;br /&gt;
# Find an upstream project like CUPS to ship the drivers with it.&lt;br /&gt;
# Make sure we can still use cutter driver on Windows where CUPS is not that widely used.&lt;br /&gt;
# Create a [http://wiki.inkscape.org/wiki/index.php/MakingLivePathEffects live path effect] (LPE) for creating polylines from Bezier curves (using [http://lib2geom.sourceforge.net/ lib2geom])&lt;br /&gt;
&lt;br /&gt;
Device dependent options (cutting speed, cutting force, knife position fine-tuning etc.) should go to Print dialog (Advanced tab or the like). It looks like Cairo backend would be the only correct way to pass polylines to a cutter.&lt;br /&gt;
&lt;br /&gt;
== For just exporting ==&lt;br /&gt;
&lt;br /&gt;
# Use available LPE for previewing&lt;br /&gt;
# Create as many exporters as required (see below)&lt;br /&gt;
&lt;br /&gt;
= File formats =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File extension&lt;br /&gt;
! Full name&lt;br /&gt;
! Devices&lt;br /&gt;
! Exporter&lt;br /&gt;
|-&lt;br /&gt;
| DXF&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| Available in current stable version of Inkscape&lt;br /&gt;
|-&lt;br /&gt;
| GSD&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Available from [http://code.google.com/p/cuft/ cuft]'s SVN&lt;br /&gt;
|-&lt;br /&gt;
| HPGL&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Getting ready for inclusion into 0.46+svn&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Cutters =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Device&lt;br /&gt;
! Protocol&lt;br /&gt;
! Linux drivers&lt;br /&gt;
! Windows drivers&lt;br /&gt;
! Mac OS drivers&lt;br /&gt;
|-&lt;br /&gt;
| Graphtec FC7000Mk2&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Graphtec CE5000&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
| Graphtec CC200-20&lt;br /&gt;
| &lt;br /&gt;
| [http://vidar.gimp.org/graphtecprint/ vidar's page]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Graphtec CE5000-120AP&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
| Graphtec Craft ROBO&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Graphtec FC2250&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
| Graphtec FC4200&lt;br /&gt;
| &lt;br /&gt;
| [http://vidar.gimp.org/graphtecprint/ vidar's page] + patch from Ulisses (comments in the blog)&lt;br /&gt;
| &lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
| QuicKutz Silhouette&lt;br /&gt;
| based on Graphtec CC200-20&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Xyron Wishblade&lt;br /&gt;
| Graphtec CC200-20&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=103&amp;amp;type=1 Roland CAMM-1 Pro GX-300 Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=106&amp;amp;type=1 Roland CAMM-1 Pro GX-500 Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=95&amp;amp;type=1 Roland STIKA SV-8 Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=96&amp;amp;type=1 Roland STIKA SV-12 Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=101&amp;amp;type=1 Roland STIKA SV-15 Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=17&amp;amp;type=1 Roland CAMM-1 GX-24 Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=20&amp;amp;type=1 Roland VersaCAMM SP-300 V Printer/Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=20&amp;amp;type=1 Roland VersaCAMM SP-300 V Printer/Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=21&amp;amp;type=1 Roland VersaCAMM SP-540 V Printer/Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=112&amp;amp;type=1 Roland VersaCAMM VP-300 V Printer/Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=113&amp;amp;type=1 Roland VersaCAMM VP-300 V Printer/Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rolanddg.co.uk/public/portfolio/details.aspx?id=83&amp;amp;type=1 Roland SolJet Pro III XC-540 Printer/Cutter]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Inkscape&amp;diff=16516</id>
		<title>Inkscape</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Inkscape&amp;diff=16516"/>
		<updated>2007-10-24T11:29:21Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* General */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a freeform area for Inkscape development and discussion.  &lt;br /&gt;
Curious about [[WikiSyntax]]?&lt;br /&gt;
&lt;br /&gt;
Other languages: [[Inkscape en español|Wiki en español]], [[L'Inkscape en Català|Wiki en Català]], [[Inkscape em Português|Wiki em Português]], [[Startseite|Wiki auf Deutsch]]...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;11&amp;quot; width=&amp;quot;100%&amp;quot;&amp;gt;&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width:33%;background-color: #E6E6E6; padding:.5em;&amp;quot;&amp;gt;&lt;br /&gt;
=== About Inkscape ===&lt;br /&gt;
* [http://www.inkscape.org/ Inkscape Homepage]&lt;br /&gt;
* [[About Inkscape]]&lt;br /&gt;
* [[InkscapeFeatures]]&lt;br /&gt;
* [[FAQ]] - Frequently Asked Questions&lt;br /&gt;
* [[ProjectInfo]]&lt;br /&gt;
* [[SupportedOperatingSystems]]&lt;br /&gt;
* [[Tools]] - Supporting Tools and Applications&lt;br /&gt;
* [[Galleries]]&lt;br /&gt;
* [[ArticlesAndPresentations]]&lt;br /&gt;
* [[TestimonialComments]]&lt;br /&gt;
* [[InkscapePopularity]]&lt;br /&gt;
* [[ContactInfo]] - our heroes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td style=&amp;quot;width:33%;;background-color: white; padding:.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== User Documentation ===&lt;br /&gt;
* [[InstallHelp]]&lt;br /&gt;
* [[International and Local Communities]]&lt;br /&gt;
* [[InkscapeTerminology]]&lt;br /&gt;
* [[UserManual]]&lt;br /&gt;
* [http://inkscape.org/doc/ Tutorials]&lt;br /&gt;
* [[InkscapeSVG|Inkscape SVG vs. Plain SVG]]&lt;br /&gt;
* [[GettingExtensionsWorking]]&lt;br /&gt;
* [[GettingEffectsWorking]]&lt;br /&gt;
* [[WhatEffectsDo]]&lt;br /&gt;
* [[UsingTheConnectorTool]]&lt;br /&gt;
* [[Installing Fonts as a User]]&lt;br /&gt;
* [[EmergencySave]] - recovery in case Inkscape crashed&lt;br /&gt;
* [[ReleaseNotes046|Release Notes]] for 0.46 (upcoming)&lt;br /&gt;
* [[ReleaseNotes045|Release Notes]] for 0.45&lt;br /&gt;
* [[ReleaseNotes044|Release Notes]] for 0.44 and past&lt;br /&gt;
* [[Announcing Releases]] for 0.44 and past&lt;br /&gt;
* [[TricksAndTips]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td style=&amp;quot;width:33%;background-color: #E6E6E6; padding:.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Help Inkscape Without Coding === &lt;br /&gt;
&lt;br /&gt;
* [[HelpWanted]]&lt;br /&gt;
* [[CreatingDists]]: how to build packages&lt;br /&gt;
* [[WebsiteEditing]]&lt;br /&gt;
* [[UpdatingTrackerItems]]&lt;br /&gt;
* [[TutorialsAndHelp]]&lt;br /&gt;
* [[How_To_Start_A_Page]] how to use the wiki&lt;br /&gt;
* [[TestingInkscape]]&lt;br /&gt;
* [[Translation information]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;0&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;background-color: white; border-width:1px; border-style:solid; border-color:#62C012&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:11px 0em 0em 11px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th colspan=&amp;quot;2&amp;quot; align=&amp;quot;left&amp;quot; style=&amp;quot;padding:.5em 0em 0em .5em&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Developer Documentation ===&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;width:50%;padding:.5em&amp;quot;&amp;gt;&lt;br /&gt;
==== General ====&lt;br /&gt;
* [[DeveloperManual]]&lt;br /&gt;
* [[CompilingInkscape]]&lt;br /&gt;
* [[WorkingWithSVN]]&lt;br /&gt;
* [[Using Eclipse]]&lt;br /&gt;
* [[HandlingPreferences]]:  creating and using preference values&lt;br /&gt;
* [[AddSPObject]]: how to add a new SPObject type&lt;br /&gt;
* [[ReprListeners]]: responding to XML doc changes&lt;br /&gt;
* [[ErrorsAndWarnings]]: how to deal with reporting errors, warnings, and other messages&lt;br /&gt;
* [[DebuggingTips]]: random tips to help debug problems&lt;br /&gt;
&lt;br /&gt;
* [[DeveloperTitles]]: terms for various roles in Inkscape&lt;br /&gt;
* [[InkscapeJanitors]]: small tasks that need doing&lt;br /&gt;
* [[ExtensionAttributes]]: currently defined attributes in Inkscape's XML namespace and what they do&lt;br /&gt;
&lt;br /&gt;
* [[ExtensionsRepository]]: an Internet central for Inkscape Extensions&lt;br /&gt;
* [[OtherProjects]] (outside links)&lt;br /&gt;
* [[MakingLivePathEffects]]: detailed instructions for building new live path effects&lt;br /&gt;
* [[:Category:Extensions|Extensions]]&lt;br /&gt;
** [[ExtensionArchitecture]]: an overview of the functionality provided by extensions and the possible implementations&lt;br /&gt;
** [[MakingAnINX]]: A description of the INX file format&lt;br /&gt;
** [[ScriptingHOWTO]]: Guidelines for writing External Script Extensions&lt;br /&gt;
** [[PythonModules]]: Helper modules for extensions crafted with python&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width:50%;padding:.5em&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Development Discussion ====&lt;br /&gt;
* [[Roadmap]]: the main todo list&lt;br /&gt;
* [[NewFeatureProposals]]&lt;br /&gt;
* [[ExtensionArchitectureProposals]]&lt;br /&gt;
* [[Coding Style|Coding Style Discussion]]&lt;br /&gt;
* [[FileTypes]]&lt;br /&gt;
* [[ApplicationIcons]] (Application + Interface)&lt;br /&gt;
* [[InkscapeColor]]&lt;br /&gt;
* [[PrintingSubsystem]]&lt;br /&gt;
* [[SVG Competitors Plan]] - MS WVG vs SVG, etc&lt;br /&gt;
* [[SVG Tiny Compliance]]&lt;br /&gt;
* [[SVG Test Suite Compliance]] - [[W3C]] full test suite&lt;br /&gt;
* [[CSS Support]]&lt;br /&gt;
* [[OpenDocument proposal]]&lt;br /&gt;
* [[Googles Summer Of Code]]&lt;br /&gt;
* [[UI MockupScreenshots]]&lt;br /&gt;
* [[lib2geom]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;width:50%;padding:.5em&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== User Interface Discussion ====&lt;br /&gt;
* [[Translation_information]]&lt;br /&gt;
* [[AddingInterfaceVerbs]]&lt;br /&gt;
* [[AccessibleGraphics]]&lt;br /&gt;
* [[ObjectManager]]&lt;br /&gt;
* [[DialogsReorganization]]&lt;br /&gt;
* [[ModalInterfaces]]&lt;br /&gt;
* [[TextUsability]]: text tool /dialog dialog&lt;br /&gt;
* [[KeyboardShortcutsToDo]]&lt;br /&gt;
** [[KeyboardProfiles]]: how you can help &lt;br /&gt;
* [[StatusbarAPI]]&lt;br /&gt;
* [[Animation-(Timeline)]]&lt;br /&gt;
* [[Free Desktop Graphic Suite]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width:50%;padding:.5em&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Rearchitecture Discussion ====&lt;br /&gt;
* [[SubsystemRearchitecture]]&lt;br /&gt;
* [[GtkMMification]]: replace C boilerplate with gtkmm objects&lt;br /&gt;
* [[PathRepresentation]]&lt;br /&gt;
* [[Cairoification]]&lt;br /&gt;
* [[ScribusInteroperability]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[WikiAttic]]: pages that are no longer relevant but kept for historical value&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:About Inkscape]]&lt;br /&gt;
[[Category:User Documentation]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=LivePathEffects&amp;diff=14209</id>
		<title>LivePathEffects</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=LivePathEffects&amp;diff=14209"/>
		<updated>2007-04-16T01:15:59Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* see also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Live Path Effects allow arbitrary path-changing effects to be applied to any path object. These effects are fully live and interactive. Inkscape will remember the original path before the transformation was applied, so you will be able to remove the effect, chain several effects on the same path, adjust their parameters, etc. All the effects metadata will be stored in Inkscape-only attributes. At the same time, the resulting visible path (with the effects applied) is saved using pure SVG elements and attributes and thus visible to all SVG renderers, thus upholding Inkscape's basic principle of operation: drawings must ''look'' exactly the same in Inkscape as in any SVG-compliant renderer. &lt;br /&gt;
&lt;br /&gt;
This approach will allow us to make many of the effects currently implemeted as extensions (in the Effects menu) live and interactive. Path randomization, putting pattern along path, blends, envelopes, various distortions - all these can and should be live path effects, not the clunky, slow, and inconvenient Python scripts. Fortunately, Inkscape architecture makes creating live path effects relatively easy.&lt;br /&gt;
&lt;br /&gt;
The Stage I was a very simple test done by ACSpike. It proved the feasibility of the approach. Now we need to move ahead. Johan is currently working on Live Path Effects for Google's Summer of Code!&lt;br /&gt;
&lt;br /&gt;
Also see: [[LivePathEffects Discussion]]&lt;br /&gt;
&lt;br /&gt;
== BByak's email detailing live path effects, stage II ==&lt;br /&gt;
&lt;br /&gt;
Overall, our Stage II goals are:&lt;br /&gt;
&lt;br /&gt;
1. make the system capable of handling several different effects,&lt;br /&gt;
with new ones easy to add&lt;br /&gt;
&lt;br /&gt;
2. make sure effects are correctly read in SPPath and in all&lt;br /&gt;
shapes&lt;br /&gt;
&lt;br /&gt;
3. make sure objects with effects are correctly transformed&lt;br /&gt;
&lt;br /&gt;
4. make sure paths with effects are correctly node-edited&lt;br /&gt;
&lt;br /&gt;
5. make sure shapes with effects are correctly handle-edited&lt;br /&gt;
&lt;br /&gt;
6. make sure objects with effects are correctly written and&lt;br /&gt;
rendered the same in Batik&lt;br /&gt;
&lt;br /&gt;
Most of these goals are surprisingly easy to achieve  :)  So don't&lt;br /&gt;
be frightened by the length of this email - it's just wordy&lt;br /&gt;
explanations.&lt;br /&gt;
&lt;br /&gt;
After all this works, we can move on to implementing the Path&lt;br /&gt;
Effects tool and handle-dragging UI for editing effects on&lt;br /&gt;
canvas... that will be Stage III.&lt;br /&gt;
&lt;br /&gt;
Now, the goals in detail:&lt;br /&gt;
&lt;br /&gt;
1. The inkscape:path-effect&lt;br /&gt;
attribute would store a string identifier of the effect to apply,&lt;br /&gt;
or &amp;quot;none&amp;quot;. If there's no such attribute, it's the same as&lt;br /&gt;
&amp;quot;none&amp;quot;. In addition, register several attributes for distortion&lt;br /&gt;
parameters:&lt;br /&gt;
&lt;br /&gt;
inkscape:path-effect-param1&lt;br /&gt;
inkscape:path-effect-param2&lt;br /&gt;
inkscape:path-effect-param3&lt;br /&gt;
&lt;br /&gt;
etc. The interpretation of these will of course depend on the&lt;br /&gt;
value of inkscape:path-effect.&lt;br /&gt;
&lt;br /&gt;
Then, move the reading of these attributes into SPShape, as they&lt;br /&gt;
will be used by all its subclasses (not only SPPath but also&lt;br /&gt;
shapes) in the same way. (That is, sp_object_read_attr(object,&lt;br /&gt;
&amp;quot;inkscape:path-effect&amp;quot;) etc must also be in sp_shape_build.)&lt;br /&gt;
Store the values in appropriate new members of SPShape. Write a&lt;br /&gt;
generic function that takes SPCurve and a SPShape pointers and&lt;br /&gt;
distorts the SPCurve according to the values of the members of&lt;br /&gt;
SPShape. Store that function in sp-shape.cpp and declare in&lt;br /&gt;
sp-shape.h so that it can be used from outside.&lt;br /&gt;
&lt;br /&gt;
You can even code a couple useful effects at this stage  :) &lt;br /&gt;
&lt;br /&gt;
2. For SPPath, it's all ready: it reads original-d, distorts it&lt;br /&gt;
and sets the curve from that. In shapes, it's even simpler. Take&lt;br /&gt;
SPStar for an example. In sp-star.cpp, find the line&lt;br /&gt;
&lt;br /&gt;
	sp_shape_set_curve_insync (SP_SHAPE (star), c, TRUE);&lt;br /&gt;
&lt;br /&gt;
and just insert the call to the distortion function in sp-shape&lt;br /&gt;
before that, passing it the curve and SP_SHAPE (star). That is&lt;br /&gt;
all! Shapes have no need for original-d because their path is&lt;br /&gt;
generated from the shape parameters anyway.&lt;br /&gt;
&lt;br /&gt;
3. Transforming objects works like this. In &amp;quot;preserve&amp;quot; mode (see&lt;br /&gt;
Inkscape Prefs), a transform= attribute is added or edited on all&lt;br /&gt;
transformed objects. In the &amp;quot;optimize&amp;quot; mode (which is the&lt;br /&gt;
default), various types of objects variously try to embed the&lt;br /&gt;
transform, or a component thereof. If this is not possible, again,&lt;br /&gt;
transform= attribute is added. For example, for paths,&lt;br /&gt;
sp_path_transform can completely embed all of the transform into&lt;br /&gt;
its curve (i.e. into d=), by transforming each path point by that&lt;br /&gt;
matrix, so it returns identity and transform= is not set. For&lt;br /&gt;
rects, sp_rect_set_transform embeds only translation and scaling&lt;br /&gt;
components of the matrix; the remainder, if any, is written as&lt;br /&gt;
transform=. For stars and ellipses, no embedding is attempted at&lt;br /&gt;
all, so the whole transform is always written as transform=.&lt;br /&gt;
&lt;br /&gt;
Now, for paths, sp_path_transform currently transforms the&lt;br /&gt;
(SPShape*)path-&amp;gt;curve, i.e. the distorted curve stored in base&lt;br /&gt;
SPShape instance. But we also need to transform the original path&lt;br /&gt;
by the same matrix too, so that it stays in sync. The easiest way&lt;br /&gt;
to do this, which will also have other benefits, is to store the&lt;br /&gt;
original path in SPPath as another SPCurve. That is,&lt;br /&gt;
(SPShape*)path-&amp;gt;curve will be the distorted path, while&lt;br /&gt;
(SPPath*)path-&amp;gt;original_curve will store the original path.&lt;br /&gt;
&lt;br /&gt;
You will thus need to add this member in sp-path.h and to add to&lt;br /&gt;
store the original SPCurve before distortion in that member in&lt;br /&gt;
sp_path_set, case SP_ATTR_ORIGINAL_D. (You may need to figure out&lt;br /&gt;
how to copy SPCurves and/or bpaths. Also don't forget to free the&lt;br /&gt;
SPCurve when destroying the path in sp_path_release.) Then look at&lt;br /&gt;
sp_path_transform:&lt;br /&gt;
&lt;br /&gt;
    /* Transform the path */&lt;br /&gt;
    NRBPath dpath, spath;&lt;br /&gt;
    spath.path = shape-&amp;gt;curve-&amp;gt;bpath;&lt;br /&gt;
    nr_path_duplicate_transform(&amp;amp;dpath, &amp;amp;spath, xform);&lt;br /&gt;
    SPCurve *curve = sp_curve_new_from_bpath(dpath.path);&lt;br /&gt;
    if (curve) {&lt;br /&gt;
        sp_shape_set_curve(shape, curve, TRUE);&lt;br /&gt;
        sp_curve_unref(curve);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
And just do the same also for your original SPCurve stored in&lt;br /&gt;
SPPath. That is all.&lt;br /&gt;
&lt;br /&gt;
For shapes, you normally don't need to do anything at all. Those&lt;br /&gt;
that don't attempt any embedding and always use transform=&lt;br /&gt;
attribute are not affected at all. Those that do embed do it just&lt;br /&gt;
by adjusting their internal shape parameters and regenerating the&lt;br /&gt;
curve - for example sp_rect_set_transform calls&lt;br /&gt;
sp_rect_set_shape(rect). Provided you inserted a distortion call&lt;br /&gt;
into *_set_shape, you are all set.&lt;br /&gt;
&lt;br /&gt;
CAVEAT: rects are the only shape which currently uses &amp;lt;rect&amp;gt;, not&lt;br /&gt;
&amp;lt;path&amp;gt;. So you cannot apply shape effects to rects at all, until&lt;br /&gt;
this is changed. It's on my TODO for a long time, hope I will get&lt;br /&gt;
a round tuit soon.&lt;br /&gt;
&lt;br /&gt;
4. The Inkscape::NodePath::Path reads the path from SPCurve, but&lt;br /&gt;
after modifying it, it writes directly to the d= attribute. This&lt;br /&gt;
needs to be changed thus: (a) if the path is distorted, read the&lt;br /&gt;
SPCurve from SPPath, not from SPShape (i.e. the original, not the&lt;br /&gt;
distorted one), and (b) if the path is distorted, write the edited&lt;br /&gt;
path to inkscape:original-d= instead of d= (in&lt;br /&gt;
update_repr_internal). Setting inkscape:original-d will trigger&lt;br /&gt;
reading it and setting both original and distorted curves, the&lt;br /&gt;
latter in turn triggering a redisplay of the distorted path. So I&lt;br /&gt;
think this will be enough for nodepath to edit the source path,&lt;br /&gt;
with the nodes generally not lying on the visible distorted&lt;br /&gt;
path. Adding a helper display of the original path between&lt;br /&gt;
nodepath nodes can be left for later.&lt;br /&gt;
&lt;br /&gt;
5. I think here nothing at all is needed. The knotholder thing&lt;br /&gt;
reads and writes from the shape's internal parameters, and thus is&lt;br /&gt;
totally unaffected by the visible distorted path.&lt;br /&gt;
&lt;br /&gt;
6. Look at sp_path_write: it writes the d= attribute from&lt;br /&gt;
(SPShape*)path-&amp;gt;curve, that is, from the distorted path. So the&lt;br /&gt;
&amp;quot;same display in Batik&amp;quot; part is already taken care of. We only&lt;br /&gt;
need to write the original-d so it stays in sync. Just repeat this&lt;br /&gt;
block:&lt;br /&gt;
&lt;br /&gt;
    if ( shape-&amp;gt;curve != NULL ) {&lt;br /&gt;
        NArtBpath *abp = sp_curve_first_bpath(shape-&amp;gt;curve);&lt;br /&gt;
        if (abp) {&lt;br /&gt;
            gchar *str = sp_svg_write_path(abp);&lt;br /&gt;
            sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, str);&lt;br /&gt;
            g_free(str);&lt;br /&gt;
        } else {&lt;br /&gt;
            sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, NULL);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
but for path-&amp;gt;original_curve and the inkscape:original-d&lt;br /&gt;
attribute, and you are all set.&lt;br /&gt;
&lt;br /&gt;
For shapes, again, nothing needs to be done. Except for rects,&lt;br /&gt;
shapes' _write methods (e.g. sp_star_write) create &amp;lt;path&amp;gt; element&lt;br /&gt;
and set its d= from the SPShape curve. This is just what we need.&lt;br /&gt;
&lt;br /&gt;
That is all - as you see, it's all quite simple, logical and fits&lt;br /&gt;
neatly. There will be gotchas of course, but overall the system&lt;br /&gt;
looks quite straightforward and robust. I'm really excited by&lt;br /&gt;
this.&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
*[http://sourceforge.net/mailarchive/message.php?msg_id=3c78ff030603181509i3870330yc3777107f6f78d17%40mail.gmail.com Inkscape-devel: path effects: our plan]&lt;br /&gt;
*[http://sourceforge.net/mailarchive/message.php?msg_id=1142710409.20227.43.camel%40localhost.localdomain Inkscape-devel: Live Effects Discussion]&lt;br /&gt;
*[http://sourceforge.net/mailarchive/message.php?msg_id=444F68E9.9000806%40ekips.org Inkscape-devel: path effect grammar]&lt;br /&gt;
*[http://www.w3.org/TR/2004/WD-SVG12-20041027/vectoreffects.html Vector Effects in SVG 1.2]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=LivePathEffects&amp;diff=14208</id>
		<title>LivePathEffects</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=LivePathEffects&amp;diff=14208"/>
		<updated>2007-04-16T01:15:42Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* see also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Live Path Effects allow arbitrary path-changing effects to be applied to any path object. These effects are fully live and interactive. Inkscape will remember the original path before the transformation was applied, so you will be able to remove the effect, chain several effects on the same path, adjust their parameters, etc. All the effects metadata will be stored in Inkscape-only attributes. At the same time, the resulting visible path (with the effects applied) is saved using pure SVG elements and attributes and thus visible to all SVG renderers, thus upholding Inkscape's basic principle of operation: drawings must ''look'' exactly the same in Inkscape as in any SVG-compliant renderer. &lt;br /&gt;
&lt;br /&gt;
This approach will allow us to make many of the effects currently implemeted as extensions (in the Effects menu) live and interactive. Path randomization, putting pattern along path, blends, envelopes, various distortions - all these can and should be live path effects, not the clunky, slow, and inconvenient Python scripts. Fortunately, Inkscape architecture makes creating live path effects relatively easy.&lt;br /&gt;
&lt;br /&gt;
The Stage I was a very simple test done by ACSpike. It proved the feasibility of the approach. Now we need to move ahead. Johan is currently working on Live Path Effects for Google's Summer of Code!&lt;br /&gt;
&lt;br /&gt;
Also see: [[LivePathEffects Discussion]]&lt;br /&gt;
&lt;br /&gt;
== BByak's email detailing live path effects, stage II ==&lt;br /&gt;
&lt;br /&gt;
Overall, our Stage II goals are:&lt;br /&gt;
&lt;br /&gt;
1. make the system capable of handling several different effects,&lt;br /&gt;
with new ones easy to add&lt;br /&gt;
&lt;br /&gt;
2. make sure effects are correctly read in SPPath and in all&lt;br /&gt;
shapes&lt;br /&gt;
&lt;br /&gt;
3. make sure objects with effects are correctly transformed&lt;br /&gt;
&lt;br /&gt;
4. make sure paths with effects are correctly node-edited&lt;br /&gt;
&lt;br /&gt;
5. make sure shapes with effects are correctly handle-edited&lt;br /&gt;
&lt;br /&gt;
6. make sure objects with effects are correctly written and&lt;br /&gt;
rendered the same in Batik&lt;br /&gt;
&lt;br /&gt;
Most of these goals are surprisingly easy to achieve  :)  So don't&lt;br /&gt;
be frightened by the length of this email - it's just wordy&lt;br /&gt;
explanations.&lt;br /&gt;
&lt;br /&gt;
After all this works, we can move on to implementing the Path&lt;br /&gt;
Effects tool and handle-dragging UI for editing effects on&lt;br /&gt;
canvas... that will be Stage III.&lt;br /&gt;
&lt;br /&gt;
Now, the goals in detail:&lt;br /&gt;
&lt;br /&gt;
1. The inkscape:path-effect&lt;br /&gt;
attribute would store a string identifier of the effect to apply,&lt;br /&gt;
or &amp;quot;none&amp;quot;. If there's no such attribute, it's the same as&lt;br /&gt;
&amp;quot;none&amp;quot;. In addition, register several attributes for distortion&lt;br /&gt;
parameters:&lt;br /&gt;
&lt;br /&gt;
inkscape:path-effect-param1&lt;br /&gt;
inkscape:path-effect-param2&lt;br /&gt;
inkscape:path-effect-param3&lt;br /&gt;
&lt;br /&gt;
etc. The interpretation of these will of course depend on the&lt;br /&gt;
value of inkscape:path-effect.&lt;br /&gt;
&lt;br /&gt;
Then, move the reading of these attributes into SPShape, as they&lt;br /&gt;
will be used by all its subclasses (not only SPPath but also&lt;br /&gt;
shapes) in the same way. (That is, sp_object_read_attr(object,&lt;br /&gt;
&amp;quot;inkscape:path-effect&amp;quot;) etc must also be in sp_shape_build.)&lt;br /&gt;
Store the values in appropriate new members of SPShape. Write a&lt;br /&gt;
generic function that takes SPCurve and a SPShape pointers and&lt;br /&gt;
distorts the SPCurve according to the values of the members of&lt;br /&gt;
SPShape. Store that function in sp-shape.cpp and declare in&lt;br /&gt;
sp-shape.h so that it can be used from outside.&lt;br /&gt;
&lt;br /&gt;
You can even code a couple useful effects at this stage  :) &lt;br /&gt;
&lt;br /&gt;
2. For SPPath, it's all ready: it reads original-d, distorts it&lt;br /&gt;
and sets the curve from that. In shapes, it's even simpler. Take&lt;br /&gt;
SPStar for an example. In sp-star.cpp, find the line&lt;br /&gt;
&lt;br /&gt;
	sp_shape_set_curve_insync (SP_SHAPE (star), c, TRUE);&lt;br /&gt;
&lt;br /&gt;
and just insert the call to the distortion function in sp-shape&lt;br /&gt;
before that, passing it the curve and SP_SHAPE (star). That is&lt;br /&gt;
all! Shapes have no need for original-d because their path is&lt;br /&gt;
generated from the shape parameters anyway.&lt;br /&gt;
&lt;br /&gt;
3. Transforming objects works like this. In &amp;quot;preserve&amp;quot; mode (see&lt;br /&gt;
Inkscape Prefs), a transform= attribute is added or edited on all&lt;br /&gt;
transformed objects. In the &amp;quot;optimize&amp;quot; mode (which is the&lt;br /&gt;
default), various types of objects variously try to embed the&lt;br /&gt;
transform, or a component thereof. If this is not possible, again,&lt;br /&gt;
transform= attribute is added. For example, for paths,&lt;br /&gt;
sp_path_transform can completely embed all of the transform into&lt;br /&gt;
its curve (i.e. into d=), by transforming each path point by that&lt;br /&gt;
matrix, so it returns identity and transform= is not set. For&lt;br /&gt;
rects, sp_rect_set_transform embeds only translation and scaling&lt;br /&gt;
components of the matrix; the remainder, if any, is written as&lt;br /&gt;
transform=. For stars and ellipses, no embedding is attempted at&lt;br /&gt;
all, so the whole transform is always written as transform=.&lt;br /&gt;
&lt;br /&gt;
Now, for paths, sp_path_transform currently transforms the&lt;br /&gt;
(SPShape*)path-&amp;gt;curve, i.e. the distorted curve stored in base&lt;br /&gt;
SPShape instance. But we also need to transform the original path&lt;br /&gt;
by the same matrix too, so that it stays in sync. The easiest way&lt;br /&gt;
to do this, which will also have other benefits, is to store the&lt;br /&gt;
original path in SPPath as another SPCurve. That is,&lt;br /&gt;
(SPShape*)path-&amp;gt;curve will be the distorted path, while&lt;br /&gt;
(SPPath*)path-&amp;gt;original_curve will store the original path.&lt;br /&gt;
&lt;br /&gt;
You will thus need to add this member in sp-path.h and to add to&lt;br /&gt;
store the original SPCurve before distortion in that member in&lt;br /&gt;
sp_path_set, case SP_ATTR_ORIGINAL_D. (You may need to figure out&lt;br /&gt;
how to copy SPCurves and/or bpaths. Also don't forget to free the&lt;br /&gt;
SPCurve when destroying the path in sp_path_release.) Then look at&lt;br /&gt;
sp_path_transform:&lt;br /&gt;
&lt;br /&gt;
    /* Transform the path */&lt;br /&gt;
    NRBPath dpath, spath;&lt;br /&gt;
    spath.path = shape-&amp;gt;curve-&amp;gt;bpath;&lt;br /&gt;
    nr_path_duplicate_transform(&amp;amp;dpath, &amp;amp;spath, xform);&lt;br /&gt;
    SPCurve *curve = sp_curve_new_from_bpath(dpath.path);&lt;br /&gt;
    if (curve) {&lt;br /&gt;
        sp_shape_set_curve(shape, curve, TRUE);&lt;br /&gt;
        sp_curve_unref(curve);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
And just do the same also for your original SPCurve stored in&lt;br /&gt;
SPPath. That is all.&lt;br /&gt;
&lt;br /&gt;
For shapes, you normally don't need to do anything at all. Those&lt;br /&gt;
that don't attempt any embedding and always use transform=&lt;br /&gt;
attribute are not affected at all. Those that do embed do it just&lt;br /&gt;
by adjusting their internal shape parameters and regenerating the&lt;br /&gt;
curve - for example sp_rect_set_transform calls&lt;br /&gt;
sp_rect_set_shape(rect). Provided you inserted a distortion call&lt;br /&gt;
into *_set_shape, you are all set.&lt;br /&gt;
&lt;br /&gt;
CAVEAT: rects are the only shape which currently uses &amp;lt;rect&amp;gt;, not&lt;br /&gt;
&amp;lt;path&amp;gt;. So you cannot apply shape effects to rects at all, until&lt;br /&gt;
this is changed. It's on my TODO for a long time, hope I will get&lt;br /&gt;
a round tuit soon.&lt;br /&gt;
&lt;br /&gt;
4. The Inkscape::NodePath::Path reads the path from SPCurve, but&lt;br /&gt;
after modifying it, it writes directly to the d= attribute. This&lt;br /&gt;
needs to be changed thus: (a) if the path is distorted, read the&lt;br /&gt;
SPCurve from SPPath, not from SPShape (i.e. the original, not the&lt;br /&gt;
distorted one), and (b) if the path is distorted, write the edited&lt;br /&gt;
path to inkscape:original-d= instead of d= (in&lt;br /&gt;
update_repr_internal). Setting inkscape:original-d will trigger&lt;br /&gt;
reading it and setting both original and distorted curves, the&lt;br /&gt;
latter in turn triggering a redisplay of the distorted path. So I&lt;br /&gt;
think this will be enough for nodepath to edit the source path,&lt;br /&gt;
with the nodes generally not lying on the visible distorted&lt;br /&gt;
path. Adding a helper display of the original path between&lt;br /&gt;
nodepath nodes can be left for later.&lt;br /&gt;
&lt;br /&gt;
5. I think here nothing at all is needed. The knotholder thing&lt;br /&gt;
reads and writes from the shape's internal parameters, and thus is&lt;br /&gt;
totally unaffected by the visible distorted path.&lt;br /&gt;
&lt;br /&gt;
6. Look at sp_path_write: it writes the d= attribute from&lt;br /&gt;
(SPShape*)path-&amp;gt;curve, that is, from the distorted path. So the&lt;br /&gt;
&amp;quot;same display in Batik&amp;quot; part is already taken care of. We only&lt;br /&gt;
need to write the original-d so it stays in sync. Just repeat this&lt;br /&gt;
block:&lt;br /&gt;
&lt;br /&gt;
    if ( shape-&amp;gt;curve != NULL ) {&lt;br /&gt;
        NArtBpath *abp = sp_curve_first_bpath(shape-&amp;gt;curve);&lt;br /&gt;
        if (abp) {&lt;br /&gt;
            gchar *str = sp_svg_write_path(abp);&lt;br /&gt;
            sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, str);&lt;br /&gt;
            g_free(str);&lt;br /&gt;
        } else {&lt;br /&gt;
            sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, NULL);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
but for path-&amp;gt;original_curve and the inkscape:original-d&lt;br /&gt;
attribute, and you are all set.&lt;br /&gt;
&lt;br /&gt;
For shapes, again, nothing needs to be done. Except for rects,&lt;br /&gt;
shapes' _write methods (e.g. sp_star_write) create &amp;lt;path&amp;gt; element&lt;br /&gt;
and set its d= from the SPShape curve. This is just what we need.&lt;br /&gt;
&lt;br /&gt;
That is all - as you see, it's all quite simple, logical and fits&lt;br /&gt;
neatly. There will be gotchas of course, but overall the system&lt;br /&gt;
looks quite straightforward and robust. I'm really excited by&lt;br /&gt;
this.&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
*[http://sourceforge.net/mailarchive/message.php?msg_id=3c78ff030603181509i3870330yc3777107f6f78d17%40mail.gmail.com Inkscape-devel path effects: our plan]&lt;br /&gt;
*[http://sourceforge.net/mailarchive/message.php?msg_id=1142710409.20227.43.camel%40localhost.localdomain Inkscape-devel Live Effects Discussion]&lt;br /&gt;
*[http://sourceforge.net/mailarchive/message.php?msg_id=444F68E9.9000806%40ekips.org Inkscape-devel: path effect grammar]&lt;br /&gt;
*[http://www.w3.org/TR/2004/WD-SVG12-20041027/vectoreffects.html Vector Effects in SVG 1.2]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=LivePathEffects&amp;diff=14207</id>
		<title>LivePathEffects</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=LivePathEffects&amp;diff=14207"/>
		<updated>2007-04-16T01:14:43Z</updated>

		<summary type="html">&lt;p&gt;Acspike: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Live Path Effects allow arbitrary path-changing effects to be applied to any path object. These effects are fully live and interactive. Inkscape will remember the original path before the transformation was applied, so you will be able to remove the effect, chain several effects on the same path, adjust their parameters, etc. All the effects metadata will be stored in Inkscape-only attributes. At the same time, the resulting visible path (with the effects applied) is saved using pure SVG elements and attributes and thus visible to all SVG renderers, thus upholding Inkscape's basic principle of operation: drawings must ''look'' exactly the same in Inkscape as in any SVG-compliant renderer. &lt;br /&gt;
&lt;br /&gt;
This approach will allow us to make many of the effects currently implemeted as extensions (in the Effects menu) live and interactive. Path randomization, putting pattern along path, blends, envelopes, various distortions - all these can and should be live path effects, not the clunky, slow, and inconvenient Python scripts. Fortunately, Inkscape architecture makes creating live path effects relatively easy.&lt;br /&gt;
&lt;br /&gt;
The Stage I was a very simple test done by ACSpike. It proved the feasibility of the approach. Now we need to move ahead. Johan is currently working on Live Path Effects for Google's Summer of Code!&lt;br /&gt;
&lt;br /&gt;
Also see: [[LivePathEffects Discussion]]&lt;br /&gt;
&lt;br /&gt;
== BByak's email detailing live path effects, stage II ==&lt;br /&gt;
&lt;br /&gt;
Overall, our Stage II goals are:&lt;br /&gt;
&lt;br /&gt;
1. make the system capable of handling several different effects,&lt;br /&gt;
with new ones easy to add&lt;br /&gt;
&lt;br /&gt;
2. make sure effects are correctly read in SPPath and in all&lt;br /&gt;
shapes&lt;br /&gt;
&lt;br /&gt;
3. make sure objects with effects are correctly transformed&lt;br /&gt;
&lt;br /&gt;
4. make sure paths with effects are correctly node-edited&lt;br /&gt;
&lt;br /&gt;
5. make sure shapes with effects are correctly handle-edited&lt;br /&gt;
&lt;br /&gt;
6. make sure objects with effects are correctly written and&lt;br /&gt;
rendered the same in Batik&lt;br /&gt;
&lt;br /&gt;
Most of these goals are surprisingly easy to achieve  :)  So don't&lt;br /&gt;
be frightened by the length of this email - it's just wordy&lt;br /&gt;
explanations.&lt;br /&gt;
&lt;br /&gt;
After all this works, we can move on to implementing the Path&lt;br /&gt;
Effects tool and handle-dragging UI for editing effects on&lt;br /&gt;
canvas... that will be Stage III.&lt;br /&gt;
&lt;br /&gt;
Now, the goals in detail:&lt;br /&gt;
&lt;br /&gt;
1. The inkscape:path-effect&lt;br /&gt;
attribute would store a string identifier of the effect to apply,&lt;br /&gt;
or &amp;quot;none&amp;quot;. If there's no such attribute, it's the same as&lt;br /&gt;
&amp;quot;none&amp;quot;. In addition, register several attributes for distortion&lt;br /&gt;
parameters:&lt;br /&gt;
&lt;br /&gt;
inkscape:path-effect-param1&lt;br /&gt;
inkscape:path-effect-param2&lt;br /&gt;
inkscape:path-effect-param3&lt;br /&gt;
&lt;br /&gt;
etc. The interpretation of these will of course depend on the&lt;br /&gt;
value of inkscape:path-effect.&lt;br /&gt;
&lt;br /&gt;
Then, move the reading of these attributes into SPShape, as they&lt;br /&gt;
will be used by all its subclasses (not only SPPath but also&lt;br /&gt;
shapes) in the same way. (That is, sp_object_read_attr(object,&lt;br /&gt;
&amp;quot;inkscape:path-effect&amp;quot;) etc must also be in sp_shape_build.)&lt;br /&gt;
Store the values in appropriate new members of SPShape. Write a&lt;br /&gt;
generic function that takes SPCurve and a SPShape pointers and&lt;br /&gt;
distorts the SPCurve according to the values of the members of&lt;br /&gt;
SPShape. Store that function in sp-shape.cpp and declare in&lt;br /&gt;
sp-shape.h so that it can be used from outside.&lt;br /&gt;
&lt;br /&gt;
You can even code a couple useful effects at this stage  :) &lt;br /&gt;
&lt;br /&gt;
2. For SPPath, it's all ready: it reads original-d, distorts it&lt;br /&gt;
and sets the curve from that. In shapes, it's even simpler. Take&lt;br /&gt;
SPStar for an example. In sp-star.cpp, find the line&lt;br /&gt;
&lt;br /&gt;
	sp_shape_set_curve_insync (SP_SHAPE (star), c, TRUE);&lt;br /&gt;
&lt;br /&gt;
and just insert the call to the distortion function in sp-shape&lt;br /&gt;
before that, passing it the curve and SP_SHAPE (star). That is&lt;br /&gt;
all! Shapes have no need for original-d because their path is&lt;br /&gt;
generated from the shape parameters anyway.&lt;br /&gt;
&lt;br /&gt;
3. Transforming objects works like this. In &amp;quot;preserve&amp;quot; mode (see&lt;br /&gt;
Inkscape Prefs), a transform= attribute is added or edited on all&lt;br /&gt;
transformed objects. In the &amp;quot;optimize&amp;quot; mode (which is the&lt;br /&gt;
default), various types of objects variously try to embed the&lt;br /&gt;
transform, or a component thereof. If this is not possible, again,&lt;br /&gt;
transform= attribute is added. For example, for paths,&lt;br /&gt;
sp_path_transform can completely embed all of the transform into&lt;br /&gt;
its curve (i.e. into d=), by transforming each path point by that&lt;br /&gt;
matrix, so it returns identity and transform= is not set. For&lt;br /&gt;
rects, sp_rect_set_transform embeds only translation and scaling&lt;br /&gt;
components of the matrix; the remainder, if any, is written as&lt;br /&gt;
transform=. For stars and ellipses, no embedding is attempted at&lt;br /&gt;
all, so the whole transform is always written as transform=.&lt;br /&gt;
&lt;br /&gt;
Now, for paths, sp_path_transform currently transforms the&lt;br /&gt;
(SPShape*)path-&amp;gt;curve, i.e. the distorted curve stored in base&lt;br /&gt;
SPShape instance. But we also need to transform the original path&lt;br /&gt;
by the same matrix too, so that it stays in sync. The easiest way&lt;br /&gt;
to do this, which will also have other benefits, is to store the&lt;br /&gt;
original path in SPPath as another SPCurve. That is,&lt;br /&gt;
(SPShape*)path-&amp;gt;curve will be the distorted path, while&lt;br /&gt;
(SPPath*)path-&amp;gt;original_curve will store the original path.&lt;br /&gt;
&lt;br /&gt;
You will thus need to add this member in sp-path.h and to add to&lt;br /&gt;
store the original SPCurve before distortion in that member in&lt;br /&gt;
sp_path_set, case SP_ATTR_ORIGINAL_D. (You may need to figure out&lt;br /&gt;
how to copy SPCurves and/or bpaths. Also don't forget to free the&lt;br /&gt;
SPCurve when destroying the path in sp_path_release.) Then look at&lt;br /&gt;
sp_path_transform:&lt;br /&gt;
&lt;br /&gt;
    /* Transform the path */&lt;br /&gt;
    NRBPath dpath, spath;&lt;br /&gt;
    spath.path = shape-&amp;gt;curve-&amp;gt;bpath;&lt;br /&gt;
    nr_path_duplicate_transform(&amp;amp;dpath, &amp;amp;spath, xform);&lt;br /&gt;
    SPCurve *curve = sp_curve_new_from_bpath(dpath.path);&lt;br /&gt;
    if (curve) {&lt;br /&gt;
        sp_shape_set_curve(shape, curve, TRUE);&lt;br /&gt;
        sp_curve_unref(curve);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
And just do the same also for your original SPCurve stored in&lt;br /&gt;
SPPath. That is all.&lt;br /&gt;
&lt;br /&gt;
For shapes, you normally don't need to do anything at all. Those&lt;br /&gt;
that don't attempt any embedding and always use transform=&lt;br /&gt;
attribute are not affected at all. Those that do embed do it just&lt;br /&gt;
by adjusting their internal shape parameters and regenerating the&lt;br /&gt;
curve - for example sp_rect_set_transform calls&lt;br /&gt;
sp_rect_set_shape(rect). Provided you inserted a distortion call&lt;br /&gt;
into *_set_shape, you are all set.&lt;br /&gt;
&lt;br /&gt;
CAVEAT: rects are the only shape which currently uses &amp;lt;rect&amp;gt;, not&lt;br /&gt;
&amp;lt;path&amp;gt;. So you cannot apply shape effects to rects at all, until&lt;br /&gt;
this is changed. It's on my TODO for a long time, hope I will get&lt;br /&gt;
a round tuit soon.&lt;br /&gt;
&lt;br /&gt;
4. The Inkscape::NodePath::Path reads the path from SPCurve, but&lt;br /&gt;
after modifying it, it writes directly to the d= attribute. This&lt;br /&gt;
needs to be changed thus: (a) if the path is distorted, read the&lt;br /&gt;
SPCurve from SPPath, not from SPShape (i.e. the original, not the&lt;br /&gt;
distorted one), and (b) if the path is distorted, write the edited&lt;br /&gt;
path to inkscape:original-d= instead of d= (in&lt;br /&gt;
update_repr_internal). Setting inkscape:original-d will trigger&lt;br /&gt;
reading it and setting both original and distorted curves, the&lt;br /&gt;
latter in turn triggering a redisplay of the distorted path. So I&lt;br /&gt;
think this will be enough for nodepath to edit the source path,&lt;br /&gt;
with the nodes generally not lying on the visible distorted&lt;br /&gt;
path. Adding a helper display of the original path between&lt;br /&gt;
nodepath nodes can be left for later.&lt;br /&gt;
&lt;br /&gt;
5. I think here nothing at all is needed. The knotholder thing&lt;br /&gt;
reads and writes from the shape's internal parameters, and thus is&lt;br /&gt;
totally unaffected by the visible distorted path.&lt;br /&gt;
&lt;br /&gt;
6. Look at sp_path_write: it writes the d= attribute from&lt;br /&gt;
(SPShape*)path-&amp;gt;curve, that is, from the distorted path. So the&lt;br /&gt;
&amp;quot;same display in Batik&amp;quot; part is already taken care of. We only&lt;br /&gt;
need to write the original-d so it stays in sync. Just repeat this&lt;br /&gt;
block:&lt;br /&gt;
&lt;br /&gt;
    if ( shape-&amp;gt;curve != NULL ) {&lt;br /&gt;
        NArtBpath *abp = sp_curve_first_bpath(shape-&amp;gt;curve);&lt;br /&gt;
        if (abp) {&lt;br /&gt;
            gchar *str = sp_svg_write_path(abp);&lt;br /&gt;
            sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, str);&lt;br /&gt;
            g_free(str);&lt;br /&gt;
        } else {&lt;br /&gt;
            sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, NULL);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
but for path-&amp;gt;original_curve and the inkscape:original-d&lt;br /&gt;
attribute, and you are all set.&lt;br /&gt;
&lt;br /&gt;
For shapes, again, nothing needs to be done. Except for rects,&lt;br /&gt;
shapes' _write methods (e.g. sp_star_write) create &amp;lt;path&amp;gt; element&lt;br /&gt;
and set its d= from the SPShape curve. This is just what we need.&lt;br /&gt;
&lt;br /&gt;
That is all - as you see, it's all quite simple, logical and fits&lt;br /&gt;
neatly. There will be gotchas of course, but overall the system&lt;br /&gt;
looks quite straightforward and robust. I'm really excited by&lt;br /&gt;
this.&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
*[http://sourceforge.net/mailarchive/message.php?msg_id=3c78ff030603181509i3870330yc3777107f6f78d17%40mail.gmail.com [Inkscape-devel] path effects: our plan]&lt;br /&gt;
*[http://sourceforge.net/mailarchive/message.php?msg_id=1142710409.20227.43.camel%40localhost.localdomain [Inkscape-devel] Live Effects Discussion]&lt;br /&gt;
*[http://sourceforge.net/mailarchive/message.php?msg_id=444F68E9.9000806%40ekips.org [Inkscape-devel] path effect grammar]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=LivePathEffects&amp;diff=14205</id>
		<title>LivePathEffects</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=LivePathEffects&amp;diff=14205"/>
		<updated>2007-04-16T01:12:54Z</updated>

		<summary type="html">&lt;p&gt;Acspike: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Live Path Effects allow arbitrary path-changing effects to be applied to any path object. These effects are fully live and interactive. Inkscape will remember the original path before the transformation was applied, so you will be able to remove the effect, chain several effects on the same path, adjust their parameters, etc. All the effects metadata will be stored in Inkscape-only attributes. At the same time, the resulting visible path (with the effects applied) is saved using pure SVG elements and attributes and thus visible to all SVG renderers, thus upholding Inkscape's basic principle of operation: drawings must ''look'' exactly the same in Inkscape as in any SVG-compliant renderer. &lt;br /&gt;
&lt;br /&gt;
This approach will allow us to make many of the effects currently implemeted as extensions (in the Effects menu) live and interactive. Path randomization, putting pattern along path, blends, envelopes, various distortions - all these can and should be live path effects, not the clunky, slow, and inconvenient Python scripts. Fortunately, Inkscape architecture makes creating live path effects relatively easy.&lt;br /&gt;
&lt;br /&gt;
The Stage I was a very simple test done by ACSpike. It proved the feasibility of the approach. Now we need to move ahead. Johan is currently working on Live Path Effects for Google's Summer of Code!&lt;br /&gt;
&lt;br /&gt;
Also see: [[LivePathEffects Discussion]]&lt;br /&gt;
&lt;br /&gt;
== BByak's email detailing live path effects, stage II ==&lt;br /&gt;
&lt;br /&gt;
Overall, our Stage II goals are:&lt;br /&gt;
&lt;br /&gt;
1. make the system capable of handling several different effects,&lt;br /&gt;
with new ones easy to add&lt;br /&gt;
&lt;br /&gt;
2. make sure effects are correctly read in SPPath and in all&lt;br /&gt;
shapes&lt;br /&gt;
&lt;br /&gt;
3. make sure objects with effects are correctly transformed&lt;br /&gt;
&lt;br /&gt;
4. make sure paths with effects are correctly node-edited&lt;br /&gt;
&lt;br /&gt;
5. make sure shapes with effects are correctly handle-edited&lt;br /&gt;
&lt;br /&gt;
6. make sure objects with effects are correctly written and&lt;br /&gt;
rendered the same in Batik&lt;br /&gt;
&lt;br /&gt;
Most of these goals are surprisingly easy to achieve  :)  So don't&lt;br /&gt;
be frightened by the length of this email - it's just wordy&lt;br /&gt;
explanations.&lt;br /&gt;
&lt;br /&gt;
After all this works, we can move on to implementing the Path&lt;br /&gt;
Effects tool and handle-dragging UI for editing effects on&lt;br /&gt;
canvas... that will be Stage III.&lt;br /&gt;
&lt;br /&gt;
Now, the goals in detail:&lt;br /&gt;
&lt;br /&gt;
1. The inkscape:path-effect&lt;br /&gt;
attribute would store a string identifier of the effect to apply,&lt;br /&gt;
or &amp;quot;none&amp;quot;. If there's no such attribute, it's the same as&lt;br /&gt;
&amp;quot;none&amp;quot;. In addition, register several attributes for distortion&lt;br /&gt;
parameters:&lt;br /&gt;
&lt;br /&gt;
inkscape:path-effect-param1&lt;br /&gt;
inkscape:path-effect-param2&lt;br /&gt;
inkscape:path-effect-param3&lt;br /&gt;
&lt;br /&gt;
etc. The interpretation of these will of course depend on the&lt;br /&gt;
value of inkscape:path-effect.&lt;br /&gt;
&lt;br /&gt;
Then, move the reading of these attributes into SPShape, as they&lt;br /&gt;
will be used by all its subclasses (not only SPPath but also&lt;br /&gt;
shapes) in the same way. (That is, sp_object_read_attr(object,&lt;br /&gt;
&amp;quot;inkscape:path-effect&amp;quot;) etc must also be in sp_shape_build.)&lt;br /&gt;
Store the values in appropriate new members of SPShape. Write a&lt;br /&gt;
generic function that takes SPCurve and a SPShape pointers and&lt;br /&gt;
distorts the SPCurve according to the values of the members of&lt;br /&gt;
SPShape. Store that function in sp-shape.cpp and declare in&lt;br /&gt;
sp-shape.h so that it can be used from outside.&lt;br /&gt;
&lt;br /&gt;
You can even code a couple useful effects at this stage  :) &lt;br /&gt;
&lt;br /&gt;
2. For SPPath, it's all ready: it reads original-d, distorts it&lt;br /&gt;
and sets the curve from that. In shapes, it's even simpler. Take&lt;br /&gt;
SPStar for an example. In sp-star.cpp, find the line&lt;br /&gt;
&lt;br /&gt;
	sp_shape_set_curve_insync (SP_SHAPE (star), c, TRUE);&lt;br /&gt;
&lt;br /&gt;
and just insert the call to the distortion function in sp-shape&lt;br /&gt;
before that, passing it the curve and SP_SHAPE (star). That is&lt;br /&gt;
all! Shapes have no need for original-d because their path is&lt;br /&gt;
generated from the shape parameters anyway.&lt;br /&gt;
&lt;br /&gt;
3. Transforming objects works like this. In &amp;quot;preserve&amp;quot; mode (see&lt;br /&gt;
Inkscape Prefs), a transform= attribute is added or edited on all&lt;br /&gt;
transformed objects. In the &amp;quot;optimize&amp;quot; mode (which is the&lt;br /&gt;
default), various types of objects variously try to embed the&lt;br /&gt;
transform, or a component thereof. If this is not possible, again,&lt;br /&gt;
transform= attribute is added. For example, for paths,&lt;br /&gt;
sp_path_transform can completely embed all of the transform into&lt;br /&gt;
its curve (i.e. into d=), by transforming each path point by that&lt;br /&gt;
matrix, so it returns identity and transform= is not set. For&lt;br /&gt;
rects, sp_rect_set_transform embeds only translation and scaling&lt;br /&gt;
components of the matrix; the remainder, if any, is written as&lt;br /&gt;
transform=. For stars and ellipses, no embedding is attempted at&lt;br /&gt;
all, so the whole transform is always written as transform=.&lt;br /&gt;
&lt;br /&gt;
Now, for paths, sp_path_transform currently transforms the&lt;br /&gt;
(SPShape*)path-&amp;gt;curve, i.e. the distorted curve stored in base&lt;br /&gt;
SPShape instance. But we also need to transform the original path&lt;br /&gt;
by the same matrix too, so that it stays in sync. The easiest way&lt;br /&gt;
to do this, which will also have other benefits, is to store the&lt;br /&gt;
original path in SPPath as another SPCurve. That is,&lt;br /&gt;
(SPShape*)path-&amp;gt;curve will be the distorted path, while&lt;br /&gt;
(SPPath*)path-&amp;gt;original_curve will store the original path.&lt;br /&gt;
&lt;br /&gt;
You will thus need to add this member in sp-path.h and to add to&lt;br /&gt;
store the original SPCurve before distortion in that member in&lt;br /&gt;
sp_path_set, case SP_ATTR_ORIGINAL_D. (You may need to figure out&lt;br /&gt;
how to copy SPCurves and/or bpaths. Also don't forget to free the&lt;br /&gt;
SPCurve when destroying the path in sp_path_release.) Then look at&lt;br /&gt;
sp_path_transform:&lt;br /&gt;
&lt;br /&gt;
    /* Transform the path */&lt;br /&gt;
    NRBPath dpath, spath;&lt;br /&gt;
    spath.path = shape-&amp;gt;curve-&amp;gt;bpath;&lt;br /&gt;
    nr_path_duplicate_transform(&amp;amp;dpath, &amp;amp;spath, xform);&lt;br /&gt;
    SPCurve *curve = sp_curve_new_from_bpath(dpath.path);&lt;br /&gt;
    if (curve) {&lt;br /&gt;
        sp_shape_set_curve(shape, curve, TRUE);&lt;br /&gt;
        sp_curve_unref(curve);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
And just do the same also for your original SPCurve stored in&lt;br /&gt;
SPPath. That is all.&lt;br /&gt;
&lt;br /&gt;
For shapes, you normally don't need to do anything at all. Those&lt;br /&gt;
that don't attempt any embedding and always use transform=&lt;br /&gt;
attribute are not affected at all. Those that do embed do it just&lt;br /&gt;
by adjusting their internal shape parameters and regenerating the&lt;br /&gt;
curve - for example sp_rect_set_transform calls&lt;br /&gt;
sp_rect_set_shape(rect). Provided you inserted a distortion call&lt;br /&gt;
into *_set_shape, you are all set.&lt;br /&gt;
&lt;br /&gt;
CAVEAT: rects are the only shape which currently uses &amp;lt;rect&amp;gt;, not&lt;br /&gt;
&amp;lt;path&amp;gt;. So you cannot apply shape effects to rects at all, until&lt;br /&gt;
this is changed. It's on my TODO for a long time, hope I will get&lt;br /&gt;
a round tuit soon.&lt;br /&gt;
&lt;br /&gt;
4. The Inkscape::NodePath::Path reads the path from SPCurve, but&lt;br /&gt;
after modifying it, it writes directly to the d= attribute. This&lt;br /&gt;
needs to be changed thus: (a) if the path is distorted, read the&lt;br /&gt;
SPCurve from SPPath, not from SPShape (i.e. the original, not the&lt;br /&gt;
distorted one), and (b) if the path is distorted, write the edited&lt;br /&gt;
path to inkscape:original-d= instead of d= (in&lt;br /&gt;
update_repr_internal). Setting inkscape:original-d will trigger&lt;br /&gt;
reading it and setting both original and distorted curves, the&lt;br /&gt;
latter in turn triggering a redisplay of the distorted path. So I&lt;br /&gt;
think this will be enough for nodepath to edit the source path,&lt;br /&gt;
with the nodes generally not lying on the visible distorted&lt;br /&gt;
path. Adding a helper display of the original path between&lt;br /&gt;
nodepath nodes can be left for later.&lt;br /&gt;
&lt;br /&gt;
5. I think here nothing at all is needed. The knotholder thing&lt;br /&gt;
reads and writes from the shape's internal parameters, and thus is&lt;br /&gt;
totally unaffected by the visible distorted path.&lt;br /&gt;
&lt;br /&gt;
6. Look at sp_path_write: it writes the d= attribute from&lt;br /&gt;
(SPShape*)path-&amp;gt;curve, that is, from the distorted path. So the&lt;br /&gt;
&amp;quot;same display in Batik&amp;quot; part is already taken care of. We only&lt;br /&gt;
need to write the original-d so it stays in sync. Just repeat this&lt;br /&gt;
block:&lt;br /&gt;
&lt;br /&gt;
    if ( shape-&amp;gt;curve != NULL ) {&lt;br /&gt;
        NArtBpath *abp = sp_curve_first_bpath(shape-&amp;gt;curve);&lt;br /&gt;
        if (abp) {&lt;br /&gt;
            gchar *str = sp_svg_write_path(abp);&lt;br /&gt;
            sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, str);&lt;br /&gt;
            g_free(str);&lt;br /&gt;
        } else {&lt;br /&gt;
            sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, NULL);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
but for path-&amp;gt;original_curve and the inkscape:original-d&lt;br /&gt;
attribute, and you are all set.&lt;br /&gt;
&lt;br /&gt;
For shapes, again, nothing needs to be done. Except for rects,&lt;br /&gt;
shapes' _write methods (e.g. sp_star_write) create &amp;lt;path&amp;gt; element&lt;br /&gt;
and set its d= from the SPShape curve. This is just what we need.&lt;br /&gt;
&lt;br /&gt;
That is all - as you see, it's all quite simple, logical and fits&lt;br /&gt;
neatly. There will be gotchas of course, but overall the system&lt;br /&gt;
looks quite straightforward and robust. I'm really excited by&lt;br /&gt;
this.&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
*[http://sourceforge.net/mailarchive/message.php?msg_id=3c78ff030603181509i3870330yc3777107f6f78d17%40mail.gmail.com Message1]&lt;br /&gt;
*[http://sourceforge.net/mailarchive/message.php?msg_id=1142710409.20227.43.camel%40localhost.localdomain|message2]&lt;br /&gt;
*[http://sourceforge.net/mailarchive/message.php?msg_id=444F68E9.9000806%40ekips.org|message3]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=LivePathEffects&amp;diff=14204</id>
		<title>LivePathEffects</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=LivePathEffects&amp;diff=14204"/>
		<updated>2007-04-16T01:12:32Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* see also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Live Path Effects allow arbitrary path-changing effects to be applied to any path object. These effects are fully live and interactive. Inkscape will remember the original path before the transformation was applied, so you will be able to remove the effect, chain several effects on the same path, adjust their parameters, etc. All the effects metadata will be stored in Inkscape-only attributes. At the same time, the resulting visible path (with the effects applied) is saved using pure SVG elements and attributes and thus visible to all SVG renderers, thus upholding Inkscape's basic principle of operation: drawings must ''look'' exactly the same in Inkscape as in any SVG-compliant renderer. &lt;br /&gt;
&lt;br /&gt;
This approach will allow us to make many of the effects currently implemeted as extensions (in the Effects menu) live and interactive. Path randomization, putting pattern along path, blends, envelopes, various distortions - all these can and should be live path effects, not the clunky, slow, and inconvenient Python scripts. Fortunately, Inkscape architecture makes creating live path effects relatively easy.&lt;br /&gt;
&lt;br /&gt;
The Stage I was a very simple test done by ACSpike. It proved the feasibility of the approach. Now we need to move ahead. Johan is currently working on Live Path Effects for Google's Summer of Code!&lt;br /&gt;
&lt;br /&gt;
Also see: [[LivePathEffects Discussion]]&lt;br /&gt;
&lt;br /&gt;
== BByak's email detailing live path effects, stage II ==&lt;br /&gt;
&lt;br /&gt;
Overall, our Stage II goals are:&lt;br /&gt;
&lt;br /&gt;
1. make the system capable of handling several different effects,&lt;br /&gt;
with new ones easy to add&lt;br /&gt;
&lt;br /&gt;
2. make sure effects are correctly read in SPPath and in all&lt;br /&gt;
shapes&lt;br /&gt;
&lt;br /&gt;
3. make sure objects with effects are correctly transformed&lt;br /&gt;
&lt;br /&gt;
4. make sure paths with effects are correctly node-edited&lt;br /&gt;
&lt;br /&gt;
5. make sure shapes with effects are correctly handle-edited&lt;br /&gt;
&lt;br /&gt;
6. make sure objects with effects are correctly written and&lt;br /&gt;
rendered the same in Batik&lt;br /&gt;
&lt;br /&gt;
Most of these goals are surprisingly easy to achieve  :)  So don't&lt;br /&gt;
be frightened by the length of this email - it's just wordy&lt;br /&gt;
explanations.&lt;br /&gt;
&lt;br /&gt;
After all this works, we can move on to implementing the Path&lt;br /&gt;
Effects tool and handle-dragging UI for editing effects on&lt;br /&gt;
canvas... that will be Stage III.&lt;br /&gt;
&lt;br /&gt;
Now, the goals in detail:&lt;br /&gt;
&lt;br /&gt;
1. The inkscape:path-effect&lt;br /&gt;
attribute would store a string identifier of the effect to apply,&lt;br /&gt;
or &amp;quot;none&amp;quot;. If there's no such attribute, it's the same as&lt;br /&gt;
&amp;quot;none&amp;quot;. In addition, register several attributes for distortion&lt;br /&gt;
parameters:&lt;br /&gt;
&lt;br /&gt;
inkscape:path-effect-param1&lt;br /&gt;
inkscape:path-effect-param2&lt;br /&gt;
inkscape:path-effect-param3&lt;br /&gt;
&lt;br /&gt;
etc. The interpretation of these will of course depend on the&lt;br /&gt;
value of inkscape:path-effect.&lt;br /&gt;
&lt;br /&gt;
Then, move the reading of these attributes into SPShape, as they&lt;br /&gt;
will be used by all its subclasses (not only SPPath but also&lt;br /&gt;
shapes) in the same way. (That is, sp_object_read_attr(object,&lt;br /&gt;
&amp;quot;inkscape:path-effect&amp;quot;) etc must also be in sp_shape_build.)&lt;br /&gt;
Store the values in appropriate new members of SPShape. Write a&lt;br /&gt;
generic function that takes SPCurve and a SPShape pointers and&lt;br /&gt;
distorts the SPCurve according to the values of the members of&lt;br /&gt;
SPShape. Store that function in sp-shape.cpp and declare in&lt;br /&gt;
sp-shape.h so that it can be used from outside.&lt;br /&gt;
&lt;br /&gt;
You can even code a couple useful effects at this stage  :) &lt;br /&gt;
&lt;br /&gt;
2. For SPPath, it's all ready: it reads original-d, distorts it&lt;br /&gt;
and sets the curve from that. In shapes, it's even simpler. Take&lt;br /&gt;
SPStar for an example. In sp-star.cpp, find the line&lt;br /&gt;
&lt;br /&gt;
	sp_shape_set_curve_insync (SP_SHAPE (star), c, TRUE);&lt;br /&gt;
&lt;br /&gt;
and just insert the call to the distortion function in sp-shape&lt;br /&gt;
before that, passing it the curve and SP_SHAPE (star). That is&lt;br /&gt;
all! Shapes have no need for original-d because their path is&lt;br /&gt;
generated from the shape parameters anyway.&lt;br /&gt;
&lt;br /&gt;
3. Transforming objects works like this. In &amp;quot;preserve&amp;quot; mode (see&lt;br /&gt;
Inkscape Prefs), a transform= attribute is added or edited on all&lt;br /&gt;
transformed objects. In the &amp;quot;optimize&amp;quot; mode (which is the&lt;br /&gt;
default), various types of objects variously try to embed the&lt;br /&gt;
transform, or a component thereof. If this is not possible, again,&lt;br /&gt;
transform= attribute is added. For example, for paths,&lt;br /&gt;
sp_path_transform can completely embed all of the transform into&lt;br /&gt;
its curve (i.e. into d=), by transforming each path point by that&lt;br /&gt;
matrix, so it returns identity and transform= is not set. For&lt;br /&gt;
rects, sp_rect_set_transform embeds only translation and scaling&lt;br /&gt;
components of the matrix; the remainder, if any, is written as&lt;br /&gt;
transform=. For stars and ellipses, no embedding is attempted at&lt;br /&gt;
all, so the whole transform is always written as transform=.&lt;br /&gt;
&lt;br /&gt;
Now, for paths, sp_path_transform currently transforms the&lt;br /&gt;
(SPShape*)path-&amp;gt;curve, i.e. the distorted curve stored in base&lt;br /&gt;
SPShape instance. But we also need to transform the original path&lt;br /&gt;
by the same matrix too, so that it stays in sync. The easiest way&lt;br /&gt;
to do this, which will also have other benefits, is to store the&lt;br /&gt;
original path in SPPath as another SPCurve. That is,&lt;br /&gt;
(SPShape*)path-&amp;gt;curve will be the distorted path, while&lt;br /&gt;
(SPPath*)path-&amp;gt;original_curve will store the original path.&lt;br /&gt;
&lt;br /&gt;
You will thus need to add this member in sp-path.h and to add to&lt;br /&gt;
store the original SPCurve before distortion in that member in&lt;br /&gt;
sp_path_set, case SP_ATTR_ORIGINAL_D. (You may need to figure out&lt;br /&gt;
how to copy SPCurves and/or bpaths. Also don't forget to free the&lt;br /&gt;
SPCurve when destroying the path in sp_path_release.) Then look at&lt;br /&gt;
sp_path_transform:&lt;br /&gt;
&lt;br /&gt;
    /* Transform the path */&lt;br /&gt;
    NRBPath dpath, spath;&lt;br /&gt;
    spath.path = shape-&amp;gt;curve-&amp;gt;bpath;&lt;br /&gt;
    nr_path_duplicate_transform(&amp;amp;dpath, &amp;amp;spath, xform);&lt;br /&gt;
    SPCurve *curve = sp_curve_new_from_bpath(dpath.path);&lt;br /&gt;
    if (curve) {&lt;br /&gt;
        sp_shape_set_curve(shape, curve, TRUE);&lt;br /&gt;
        sp_curve_unref(curve);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
And just do the same also for your original SPCurve stored in&lt;br /&gt;
SPPath. That is all.&lt;br /&gt;
&lt;br /&gt;
For shapes, you normally don't need to do anything at all. Those&lt;br /&gt;
that don't attempt any embedding and always use transform=&lt;br /&gt;
attribute are not affected at all. Those that do embed do it just&lt;br /&gt;
by adjusting their internal shape parameters and regenerating the&lt;br /&gt;
curve - for example sp_rect_set_transform calls&lt;br /&gt;
sp_rect_set_shape(rect). Provided you inserted a distortion call&lt;br /&gt;
into *_set_shape, you are all set.&lt;br /&gt;
&lt;br /&gt;
CAVEAT: rects are the only shape which currently uses &amp;lt;rect&amp;gt;, not&lt;br /&gt;
&amp;lt;path&amp;gt;. So you cannot apply shape effects to rects at all, until&lt;br /&gt;
this is changed. It's on my TODO for a long time, hope I will get&lt;br /&gt;
a round tuit soon.&lt;br /&gt;
&lt;br /&gt;
4. The Inkscape::NodePath::Path reads the path from SPCurve, but&lt;br /&gt;
after modifying it, it writes directly to the d= attribute. This&lt;br /&gt;
needs to be changed thus: (a) if the path is distorted, read the&lt;br /&gt;
SPCurve from SPPath, not from SPShape (i.e. the original, not the&lt;br /&gt;
distorted one), and (b) if the path is distorted, write the edited&lt;br /&gt;
path to inkscape:original-d= instead of d= (in&lt;br /&gt;
update_repr_internal). Setting inkscape:original-d will trigger&lt;br /&gt;
reading it and setting both original and distorted curves, the&lt;br /&gt;
latter in turn triggering a redisplay of the distorted path. So I&lt;br /&gt;
think this will be enough for nodepath to edit the source path,&lt;br /&gt;
with the nodes generally not lying on the visible distorted&lt;br /&gt;
path. Adding a helper display of the original path between&lt;br /&gt;
nodepath nodes can be left for later.&lt;br /&gt;
&lt;br /&gt;
5. I think here nothing at all is needed. The knotholder thing&lt;br /&gt;
reads and writes from the shape's internal parameters, and thus is&lt;br /&gt;
totally unaffected by the visible distorted path.&lt;br /&gt;
&lt;br /&gt;
6. Look at sp_path_write: it writes the d= attribute from&lt;br /&gt;
(SPShape*)path-&amp;gt;curve, that is, from the distorted path. So the&lt;br /&gt;
&amp;quot;same display in Batik&amp;quot; part is already taken care of. We only&lt;br /&gt;
need to write the original-d so it stays in sync. Just repeat this&lt;br /&gt;
block:&lt;br /&gt;
&lt;br /&gt;
    if ( shape-&amp;gt;curve != NULL ) {&lt;br /&gt;
        NArtBpath *abp = sp_curve_first_bpath(shape-&amp;gt;curve);&lt;br /&gt;
        if (abp) {&lt;br /&gt;
            gchar *str = sp_svg_write_path(abp);&lt;br /&gt;
            sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, str);&lt;br /&gt;
            g_free(str);&lt;br /&gt;
        } else {&lt;br /&gt;
            sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, NULL);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
but for path-&amp;gt;original_curve and the inkscape:original-d&lt;br /&gt;
attribute, and you are all set.&lt;br /&gt;
&lt;br /&gt;
For shapes, again, nothing needs to be done. Except for rects,&lt;br /&gt;
shapes' _write methods (e.g. sp_star_write) create &amp;lt;path&amp;gt; element&lt;br /&gt;
and set its d= from the SPShape curve. This is just what we need.&lt;br /&gt;
&lt;br /&gt;
That is all - as you see, it's all quite simple, logical and fits&lt;br /&gt;
neatly. There will be gotchas of course, but overall the system&lt;br /&gt;
looks quite straightforward and robust. I'm really excited by&lt;br /&gt;
this.&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
*[http://sourceforge.net/mailarchive/message.php?msg_id=3c78ff030603181509i3870330yc3777107f6f78d17%40mail.gmail.com&lt;br /&gt;
Message1]&lt;br /&gt;
*[http://sourceforge.net/mailarchive/message.php?msg_id=1142710409.20227.43.camel%40localhost.localdomain|message2]&lt;br /&gt;
*[http://sourceforge.net/mailarchive/message.php?msg_id=444F68E9.9000806%40ekips.org|message3]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=LivePathEffects&amp;diff=14203</id>
		<title>LivePathEffects</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=LivePathEffects&amp;diff=14203"/>
		<updated>2007-04-16T01:09:20Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* see also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Live Path Effects allow arbitrary path-changing effects to be applied to any path object. These effects are fully live and interactive. Inkscape will remember the original path before the transformation was applied, so you will be able to remove the effect, chain several effects on the same path, adjust their parameters, etc. All the effects metadata will be stored in Inkscape-only attributes. At the same time, the resulting visible path (with the effects applied) is saved using pure SVG elements and attributes and thus visible to all SVG renderers, thus upholding Inkscape's basic principle of operation: drawings must ''look'' exactly the same in Inkscape as in any SVG-compliant renderer. &lt;br /&gt;
&lt;br /&gt;
This approach will allow us to make many of the effects currently implemeted as extensions (in the Effects menu) live and interactive. Path randomization, putting pattern along path, blends, envelopes, various distortions - all these can and should be live path effects, not the clunky, slow, and inconvenient Python scripts. Fortunately, Inkscape architecture makes creating live path effects relatively easy.&lt;br /&gt;
&lt;br /&gt;
The Stage I was a very simple test done by ACSpike. It proved the feasibility of the approach. Now we need to move ahead. Johan is currently working on Live Path Effects for Google's Summer of Code!&lt;br /&gt;
&lt;br /&gt;
Also see: [[LivePathEffects Discussion]]&lt;br /&gt;
&lt;br /&gt;
== BByak's email detailing live path effects, stage II ==&lt;br /&gt;
&lt;br /&gt;
Overall, our Stage II goals are:&lt;br /&gt;
&lt;br /&gt;
1. make the system capable of handling several different effects,&lt;br /&gt;
with new ones easy to add&lt;br /&gt;
&lt;br /&gt;
2. make sure effects are correctly read in SPPath and in all&lt;br /&gt;
shapes&lt;br /&gt;
&lt;br /&gt;
3. make sure objects with effects are correctly transformed&lt;br /&gt;
&lt;br /&gt;
4. make sure paths with effects are correctly node-edited&lt;br /&gt;
&lt;br /&gt;
5. make sure shapes with effects are correctly handle-edited&lt;br /&gt;
&lt;br /&gt;
6. make sure objects with effects are correctly written and&lt;br /&gt;
rendered the same in Batik&lt;br /&gt;
&lt;br /&gt;
Most of these goals are surprisingly easy to achieve  :)  So don't&lt;br /&gt;
be frightened by the length of this email - it's just wordy&lt;br /&gt;
explanations.&lt;br /&gt;
&lt;br /&gt;
After all this works, we can move on to implementing the Path&lt;br /&gt;
Effects tool and handle-dragging UI for editing effects on&lt;br /&gt;
canvas... that will be Stage III.&lt;br /&gt;
&lt;br /&gt;
Now, the goals in detail:&lt;br /&gt;
&lt;br /&gt;
1. The inkscape:path-effect&lt;br /&gt;
attribute would store a string identifier of the effect to apply,&lt;br /&gt;
or &amp;quot;none&amp;quot;. If there's no such attribute, it's the same as&lt;br /&gt;
&amp;quot;none&amp;quot;. In addition, register several attributes for distortion&lt;br /&gt;
parameters:&lt;br /&gt;
&lt;br /&gt;
inkscape:path-effect-param1&lt;br /&gt;
inkscape:path-effect-param2&lt;br /&gt;
inkscape:path-effect-param3&lt;br /&gt;
&lt;br /&gt;
etc. The interpretation of these will of course depend on the&lt;br /&gt;
value of inkscape:path-effect.&lt;br /&gt;
&lt;br /&gt;
Then, move the reading of these attributes into SPShape, as they&lt;br /&gt;
will be used by all its subclasses (not only SPPath but also&lt;br /&gt;
shapes) in the same way. (That is, sp_object_read_attr(object,&lt;br /&gt;
&amp;quot;inkscape:path-effect&amp;quot;) etc must also be in sp_shape_build.)&lt;br /&gt;
Store the values in appropriate new members of SPShape. Write a&lt;br /&gt;
generic function that takes SPCurve and a SPShape pointers and&lt;br /&gt;
distorts the SPCurve according to the values of the members of&lt;br /&gt;
SPShape. Store that function in sp-shape.cpp and declare in&lt;br /&gt;
sp-shape.h so that it can be used from outside.&lt;br /&gt;
&lt;br /&gt;
You can even code a couple useful effects at this stage  :) &lt;br /&gt;
&lt;br /&gt;
2. For SPPath, it's all ready: it reads original-d, distorts it&lt;br /&gt;
and sets the curve from that. In shapes, it's even simpler. Take&lt;br /&gt;
SPStar for an example. In sp-star.cpp, find the line&lt;br /&gt;
&lt;br /&gt;
	sp_shape_set_curve_insync (SP_SHAPE (star), c, TRUE);&lt;br /&gt;
&lt;br /&gt;
and just insert the call to the distortion function in sp-shape&lt;br /&gt;
before that, passing it the curve and SP_SHAPE (star). That is&lt;br /&gt;
all! Shapes have no need for original-d because their path is&lt;br /&gt;
generated from the shape parameters anyway.&lt;br /&gt;
&lt;br /&gt;
3. Transforming objects works like this. In &amp;quot;preserve&amp;quot; mode (see&lt;br /&gt;
Inkscape Prefs), a transform= attribute is added or edited on all&lt;br /&gt;
transformed objects. In the &amp;quot;optimize&amp;quot; mode (which is the&lt;br /&gt;
default), various types of objects variously try to embed the&lt;br /&gt;
transform, or a component thereof. If this is not possible, again,&lt;br /&gt;
transform= attribute is added. For example, for paths,&lt;br /&gt;
sp_path_transform can completely embed all of the transform into&lt;br /&gt;
its curve (i.e. into d=), by transforming each path point by that&lt;br /&gt;
matrix, so it returns identity and transform= is not set. For&lt;br /&gt;
rects, sp_rect_set_transform embeds only translation and scaling&lt;br /&gt;
components of the matrix; the remainder, if any, is written as&lt;br /&gt;
transform=. For stars and ellipses, no embedding is attempted at&lt;br /&gt;
all, so the whole transform is always written as transform=.&lt;br /&gt;
&lt;br /&gt;
Now, for paths, sp_path_transform currently transforms the&lt;br /&gt;
(SPShape*)path-&amp;gt;curve, i.e. the distorted curve stored in base&lt;br /&gt;
SPShape instance. But we also need to transform the original path&lt;br /&gt;
by the same matrix too, so that it stays in sync. The easiest way&lt;br /&gt;
to do this, which will also have other benefits, is to store the&lt;br /&gt;
original path in SPPath as another SPCurve. That is,&lt;br /&gt;
(SPShape*)path-&amp;gt;curve will be the distorted path, while&lt;br /&gt;
(SPPath*)path-&amp;gt;original_curve will store the original path.&lt;br /&gt;
&lt;br /&gt;
You will thus need to add this member in sp-path.h and to add to&lt;br /&gt;
store the original SPCurve before distortion in that member in&lt;br /&gt;
sp_path_set, case SP_ATTR_ORIGINAL_D. (You may need to figure out&lt;br /&gt;
how to copy SPCurves and/or bpaths. Also don't forget to free the&lt;br /&gt;
SPCurve when destroying the path in sp_path_release.) Then look at&lt;br /&gt;
sp_path_transform:&lt;br /&gt;
&lt;br /&gt;
    /* Transform the path */&lt;br /&gt;
    NRBPath dpath, spath;&lt;br /&gt;
    spath.path = shape-&amp;gt;curve-&amp;gt;bpath;&lt;br /&gt;
    nr_path_duplicate_transform(&amp;amp;dpath, &amp;amp;spath, xform);&lt;br /&gt;
    SPCurve *curve = sp_curve_new_from_bpath(dpath.path);&lt;br /&gt;
    if (curve) {&lt;br /&gt;
        sp_shape_set_curve(shape, curve, TRUE);&lt;br /&gt;
        sp_curve_unref(curve);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
And just do the same also for your original SPCurve stored in&lt;br /&gt;
SPPath. That is all.&lt;br /&gt;
&lt;br /&gt;
For shapes, you normally don't need to do anything at all. Those&lt;br /&gt;
that don't attempt any embedding and always use transform=&lt;br /&gt;
attribute are not affected at all. Those that do embed do it just&lt;br /&gt;
by adjusting their internal shape parameters and regenerating the&lt;br /&gt;
curve - for example sp_rect_set_transform calls&lt;br /&gt;
sp_rect_set_shape(rect). Provided you inserted a distortion call&lt;br /&gt;
into *_set_shape, you are all set.&lt;br /&gt;
&lt;br /&gt;
CAVEAT: rects are the only shape which currently uses &amp;lt;rect&amp;gt;, not&lt;br /&gt;
&amp;lt;path&amp;gt;. So you cannot apply shape effects to rects at all, until&lt;br /&gt;
this is changed. It's on my TODO for a long time, hope I will get&lt;br /&gt;
a round tuit soon.&lt;br /&gt;
&lt;br /&gt;
4. The Inkscape::NodePath::Path reads the path from SPCurve, but&lt;br /&gt;
after modifying it, it writes directly to the d= attribute. This&lt;br /&gt;
needs to be changed thus: (a) if the path is distorted, read the&lt;br /&gt;
SPCurve from SPPath, not from SPShape (i.e. the original, not the&lt;br /&gt;
distorted one), and (b) if the path is distorted, write the edited&lt;br /&gt;
path to inkscape:original-d= instead of d= (in&lt;br /&gt;
update_repr_internal). Setting inkscape:original-d will trigger&lt;br /&gt;
reading it and setting both original and distorted curves, the&lt;br /&gt;
latter in turn triggering a redisplay of the distorted path. So I&lt;br /&gt;
think this will be enough for nodepath to edit the source path,&lt;br /&gt;
with the nodes generally not lying on the visible distorted&lt;br /&gt;
path. Adding a helper display of the original path between&lt;br /&gt;
nodepath nodes can be left for later.&lt;br /&gt;
&lt;br /&gt;
5. I think here nothing at all is needed. The knotholder thing&lt;br /&gt;
reads and writes from the shape's internal parameters, and thus is&lt;br /&gt;
totally unaffected by the visible distorted path.&lt;br /&gt;
&lt;br /&gt;
6. Look at sp_path_write: it writes the d= attribute from&lt;br /&gt;
(SPShape*)path-&amp;gt;curve, that is, from the distorted path. So the&lt;br /&gt;
&amp;quot;same display in Batik&amp;quot; part is already taken care of. We only&lt;br /&gt;
need to write the original-d so it stays in sync. Just repeat this&lt;br /&gt;
block:&lt;br /&gt;
&lt;br /&gt;
    if ( shape-&amp;gt;curve != NULL ) {&lt;br /&gt;
        NArtBpath *abp = sp_curve_first_bpath(shape-&amp;gt;curve);&lt;br /&gt;
        if (abp) {&lt;br /&gt;
            gchar *str = sp_svg_write_path(abp);&lt;br /&gt;
            sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, str);&lt;br /&gt;
            g_free(str);&lt;br /&gt;
        } else {&lt;br /&gt;
            sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, NULL);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
but for path-&amp;gt;original_curve and the inkscape:original-d&lt;br /&gt;
attribute, and you are all set.&lt;br /&gt;
&lt;br /&gt;
For shapes, again, nothing needs to be done. Except for rects,&lt;br /&gt;
shapes' _write methods (e.g. sp_star_write) create &amp;lt;path&amp;gt; element&lt;br /&gt;
and set its d= from the SPShape curve. This is just what we need.&lt;br /&gt;
&lt;br /&gt;
That is all - as you see, it's all quite simple, logical and fits&lt;br /&gt;
neatly. There will be gotchas of course, but overall the system&lt;br /&gt;
looks quite straightforward and robust. I'm really excited by&lt;br /&gt;
this.&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
*[http://sourceforge.net/mailarchive/message.php?msg_id=3c78ff030603181509i3870330yc3777107f6f78d17%40mail.gmail.com|Message1]&lt;br /&gt;
*[http://sourceforge.net/mailarchive/message.php?msg_id=1142710409.20227.43.camel%40localhost.localdomain|message2]&lt;br /&gt;
*[http://sourceforge.net/mailarchive/message.php?msg_id=444F68E9.9000806%40ekips.org|message3]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=LivePathEffects&amp;diff=14202</id>
		<title>LivePathEffects</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=LivePathEffects&amp;diff=14202"/>
		<updated>2007-04-16T01:07:10Z</updated>

		<summary type="html">&lt;p&gt;Acspike: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Live Path Effects allow arbitrary path-changing effects to be applied to any path object. These effects are fully live and interactive. Inkscape will remember the original path before the transformation was applied, so you will be able to remove the effect, chain several effects on the same path, adjust their parameters, etc. All the effects metadata will be stored in Inkscape-only attributes. At the same time, the resulting visible path (with the effects applied) is saved using pure SVG elements and attributes and thus visible to all SVG renderers, thus upholding Inkscape's basic principle of operation: drawings must ''look'' exactly the same in Inkscape as in any SVG-compliant renderer. &lt;br /&gt;
&lt;br /&gt;
This approach will allow us to make many of the effects currently implemeted as extensions (in the Effects menu) live and interactive. Path randomization, putting pattern along path, blends, envelopes, various distortions - all these can and should be live path effects, not the clunky, slow, and inconvenient Python scripts. Fortunately, Inkscape architecture makes creating live path effects relatively easy.&lt;br /&gt;
&lt;br /&gt;
The Stage I was a very simple test done by ACSpike. It proved the feasibility of the approach. Now we need to move ahead. Johan is currently working on Live Path Effects for Google's Summer of Code!&lt;br /&gt;
&lt;br /&gt;
Also see: [[LivePathEffects Discussion]]&lt;br /&gt;
&lt;br /&gt;
== BByak's email detailing live path effects, stage II ==&lt;br /&gt;
&lt;br /&gt;
Overall, our Stage II goals are:&lt;br /&gt;
&lt;br /&gt;
1. make the system capable of handling several different effects,&lt;br /&gt;
with new ones easy to add&lt;br /&gt;
&lt;br /&gt;
2. make sure effects are correctly read in SPPath and in all&lt;br /&gt;
shapes&lt;br /&gt;
&lt;br /&gt;
3. make sure objects with effects are correctly transformed&lt;br /&gt;
&lt;br /&gt;
4. make sure paths with effects are correctly node-edited&lt;br /&gt;
&lt;br /&gt;
5. make sure shapes with effects are correctly handle-edited&lt;br /&gt;
&lt;br /&gt;
6. make sure objects with effects are correctly written and&lt;br /&gt;
rendered the same in Batik&lt;br /&gt;
&lt;br /&gt;
Most of these goals are surprisingly easy to achieve  :)  So don't&lt;br /&gt;
be frightened by the length of this email - it's just wordy&lt;br /&gt;
explanations.&lt;br /&gt;
&lt;br /&gt;
After all this works, we can move on to implementing the Path&lt;br /&gt;
Effects tool and handle-dragging UI for editing effects on&lt;br /&gt;
canvas... that will be Stage III.&lt;br /&gt;
&lt;br /&gt;
Now, the goals in detail:&lt;br /&gt;
&lt;br /&gt;
1. The inkscape:path-effect&lt;br /&gt;
attribute would store a string identifier of the effect to apply,&lt;br /&gt;
or &amp;quot;none&amp;quot;. If there's no such attribute, it's the same as&lt;br /&gt;
&amp;quot;none&amp;quot;. In addition, register several attributes for distortion&lt;br /&gt;
parameters:&lt;br /&gt;
&lt;br /&gt;
inkscape:path-effect-param1&lt;br /&gt;
inkscape:path-effect-param2&lt;br /&gt;
inkscape:path-effect-param3&lt;br /&gt;
&lt;br /&gt;
etc. The interpretation of these will of course depend on the&lt;br /&gt;
value of inkscape:path-effect.&lt;br /&gt;
&lt;br /&gt;
Then, move the reading of these attributes into SPShape, as they&lt;br /&gt;
will be used by all its subclasses (not only SPPath but also&lt;br /&gt;
shapes) in the same way. (That is, sp_object_read_attr(object,&lt;br /&gt;
&amp;quot;inkscape:path-effect&amp;quot;) etc must also be in sp_shape_build.)&lt;br /&gt;
Store the values in appropriate new members of SPShape. Write a&lt;br /&gt;
generic function that takes SPCurve and a SPShape pointers and&lt;br /&gt;
distorts the SPCurve according to the values of the members of&lt;br /&gt;
SPShape. Store that function in sp-shape.cpp and declare in&lt;br /&gt;
sp-shape.h so that it can be used from outside.&lt;br /&gt;
&lt;br /&gt;
You can even code a couple useful effects at this stage  :) &lt;br /&gt;
&lt;br /&gt;
2. For SPPath, it's all ready: it reads original-d, distorts it&lt;br /&gt;
and sets the curve from that. In shapes, it's even simpler. Take&lt;br /&gt;
SPStar for an example. In sp-star.cpp, find the line&lt;br /&gt;
&lt;br /&gt;
	sp_shape_set_curve_insync (SP_SHAPE (star), c, TRUE);&lt;br /&gt;
&lt;br /&gt;
and just insert the call to the distortion function in sp-shape&lt;br /&gt;
before that, passing it the curve and SP_SHAPE (star). That is&lt;br /&gt;
all! Shapes have no need for original-d because their path is&lt;br /&gt;
generated from the shape parameters anyway.&lt;br /&gt;
&lt;br /&gt;
3. Transforming objects works like this. In &amp;quot;preserve&amp;quot; mode (see&lt;br /&gt;
Inkscape Prefs), a transform= attribute is added or edited on all&lt;br /&gt;
transformed objects. In the &amp;quot;optimize&amp;quot; mode (which is the&lt;br /&gt;
default), various types of objects variously try to embed the&lt;br /&gt;
transform, or a component thereof. If this is not possible, again,&lt;br /&gt;
transform= attribute is added. For example, for paths,&lt;br /&gt;
sp_path_transform can completely embed all of the transform into&lt;br /&gt;
its curve (i.e. into d=), by transforming each path point by that&lt;br /&gt;
matrix, so it returns identity and transform= is not set. For&lt;br /&gt;
rects, sp_rect_set_transform embeds only translation and scaling&lt;br /&gt;
components of the matrix; the remainder, if any, is written as&lt;br /&gt;
transform=. For stars and ellipses, no embedding is attempted at&lt;br /&gt;
all, so the whole transform is always written as transform=.&lt;br /&gt;
&lt;br /&gt;
Now, for paths, sp_path_transform currently transforms the&lt;br /&gt;
(SPShape*)path-&amp;gt;curve, i.e. the distorted curve stored in base&lt;br /&gt;
SPShape instance. But we also need to transform the original path&lt;br /&gt;
by the same matrix too, so that it stays in sync. The easiest way&lt;br /&gt;
to do this, which will also have other benefits, is to store the&lt;br /&gt;
original path in SPPath as another SPCurve. That is,&lt;br /&gt;
(SPShape*)path-&amp;gt;curve will be the distorted path, while&lt;br /&gt;
(SPPath*)path-&amp;gt;original_curve will store the original path.&lt;br /&gt;
&lt;br /&gt;
You will thus need to add this member in sp-path.h and to add to&lt;br /&gt;
store the original SPCurve before distortion in that member in&lt;br /&gt;
sp_path_set, case SP_ATTR_ORIGINAL_D. (You may need to figure out&lt;br /&gt;
how to copy SPCurves and/or bpaths. Also don't forget to free the&lt;br /&gt;
SPCurve when destroying the path in sp_path_release.) Then look at&lt;br /&gt;
sp_path_transform:&lt;br /&gt;
&lt;br /&gt;
    /* Transform the path */&lt;br /&gt;
    NRBPath dpath, spath;&lt;br /&gt;
    spath.path = shape-&amp;gt;curve-&amp;gt;bpath;&lt;br /&gt;
    nr_path_duplicate_transform(&amp;amp;dpath, &amp;amp;spath, xform);&lt;br /&gt;
    SPCurve *curve = sp_curve_new_from_bpath(dpath.path);&lt;br /&gt;
    if (curve) {&lt;br /&gt;
        sp_shape_set_curve(shape, curve, TRUE);&lt;br /&gt;
        sp_curve_unref(curve);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
And just do the same also for your original SPCurve stored in&lt;br /&gt;
SPPath. That is all.&lt;br /&gt;
&lt;br /&gt;
For shapes, you normally don't need to do anything at all. Those&lt;br /&gt;
that don't attempt any embedding and always use transform=&lt;br /&gt;
attribute are not affected at all. Those that do embed do it just&lt;br /&gt;
by adjusting their internal shape parameters and regenerating the&lt;br /&gt;
curve - for example sp_rect_set_transform calls&lt;br /&gt;
sp_rect_set_shape(rect). Provided you inserted a distortion call&lt;br /&gt;
into *_set_shape, you are all set.&lt;br /&gt;
&lt;br /&gt;
CAVEAT: rects are the only shape which currently uses &amp;lt;rect&amp;gt;, not&lt;br /&gt;
&amp;lt;path&amp;gt;. So you cannot apply shape effects to rects at all, until&lt;br /&gt;
this is changed. It's on my TODO for a long time, hope I will get&lt;br /&gt;
a round tuit soon.&lt;br /&gt;
&lt;br /&gt;
4. The Inkscape::NodePath::Path reads the path from SPCurve, but&lt;br /&gt;
after modifying it, it writes directly to the d= attribute. This&lt;br /&gt;
needs to be changed thus: (a) if the path is distorted, read the&lt;br /&gt;
SPCurve from SPPath, not from SPShape (i.e. the original, not the&lt;br /&gt;
distorted one), and (b) if the path is distorted, write the edited&lt;br /&gt;
path to inkscape:original-d= instead of d= (in&lt;br /&gt;
update_repr_internal). Setting inkscape:original-d will trigger&lt;br /&gt;
reading it and setting both original and distorted curves, the&lt;br /&gt;
latter in turn triggering a redisplay of the distorted path. So I&lt;br /&gt;
think this will be enough for nodepath to edit the source path,&lt;br /&gt;
with the nodes generally not lying on the visible distorted&lt;br /&gt;
path. Adding a helper display of the original path between&lt;br /&gt;
nodepath nodes can be left for later.&lt;br /&gt;
&lt;br /&gt;
5. I think here nothing at all is needed. The knotholder thing&lt;br /&gt;
reads and writes from the shape's internal parameters, and thus is&lt;br /&gt;
totally unaffected by the visible distorted path.&lt;br /&gt;
&lt;br /&gt;
6. Look at sp_path_write: it writes the d= attribute from&lt;br /&gt;
(SPShape*)path-&amp;gt;curve, that is, from the distorted path. So the&lt;br /&gt;
&amp;quot;same display in Batik&amp;quot; part is already taken care of. We only&lt;br /&gt;
need to write the original-d so it stays in sync. Just repeat this&lt;br /&gt;
block:&lt;br /&gt;
&lt;br /&gt;
    if ( shape-&amp;gt;curve != NULL ) {&lt;br /&gt;
        NArtBpath *abp = sp_curve_first_bpath(shape-&amp;gt;curve);&lt;br /&gt;
        if (abp) {&lt;br /&gt;
            gchar *str = sp_svg_write_path(abp);&lt;br /&gt;
            sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, str);&lt;br /&gt;
            g_free(str);&lt;br /&gt;
        } else {&lt;br /&gt;
            sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, NULL);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
but for path-&amp;gt;original_curve and the inkscape:original-d&lt;br /&gt;
attribute, and you are all set.&lt;br /&gt;
&lt;br /&gt;
For shapes, again, nothing needs to be done. Except for rects,&lt;br /&gt;
shapes' _write methods (e.g. sp_star_write) create &amp;lt;path&amp;gt; element&lt;br /&gt;
and set its d= from the SPShape curve. This is just what we need.&lt;br /&gt;
&lt;br /&gt;
That is all - as you see, it's all quite simple, logical and fits&lt;br /&gt;
neatly. There will be gotchas of course, but overall the system&lt;br /&gt;
looks quite straightforward and robust. I'm really excited by&lt;br /&gt;
this.&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
*http://sourceforge.net/mailarchive/message.php?msg_id=3c78ff030603181509i3870330yc3777107f6f78d17%40mail.gmail.com&lt;br /&gt;
*http://sourceforge.net/mailarchive/message.php?msg_id=1142710409.20227.43.camel%40localhost.localdomain&lt;br /&gt;
*http://sourceforge.net/mailarchive/message.php?msg_id=444F68E9.9000806%40ekips.org&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=LivePathEffects&amp;diff=14201</id>
		<title>LivePathEffects</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=LivePathEffects&amp;diff=14201"/>
		<updated>2007-04-15T21:51:48Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* see also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
Live Path Effects allow arbitrary path-changing effects to be applied to any path object. These effects are fully live and interactive. Inkscape will remember the original path before the transformation was applied, so you will be able to remove the effect, chain several effects on the same path, adjust their parameters, etc. All the effects metadata will be stored in Inkscape-only attributes. At the same time, the resulting visible path (with the effects applied) is saved using pure SVG elements and attributes and thus visible to all SVG renderers, thus upholding Inkscape's basic principle of operation: drawings must ''look'' exactly the same in Inkscape as in any SVG-compliant renderer. &lt;br /&gt;
&lt;br /&gt;
This approach will allow us to make many of the effects currently implemeted as extensions (in the Effects menu) live and interactive. Path randomization, putting pattern along path, blends, envelopes, various distortions - all these can and should be live path effects, not the clunky, slow, and inconvenient Python scripts. Fortunately, Inkscape architecture makes creating live path effects relatively easy.&lt;br /&gt;
&lt;br /&gt;
The Stage I was a very simple test done by ACSpike. It proved the feasibility of the approach. Now we need to move ahead. Johan is currently working on Live Path Effects for Google's Summer of Code!&lt;br /&gt;
&lt;br /&gt;
Also see: [[LivePathEffects Discussion]]&lt;br /&gt;
&lt;br /&gt;
= BByak's email detailing live path effects, stage II =&lt;br /&gt;
&lt;br /&gt;
Overall, our Stage II goals are:&lt;br /&gt;
&lt;br /&gt;
1. make the system capable of handling several different effects,&lt;br /&gt;
with new ones easy to add&lt;br /&gt;
&lt;br /&gt;
2. make sure effects are correctly read in SPPath and in all&lt;br /&gt;
shapes&lt;br /&gt;
&lt;br /&gt;
3. make sure objects with effects are correctly transformed&lt;br /&gt;
&lt;br /&gt;
4. make sure paths with effects are correctly node-edited&lt;br /&gt;
&lt;br /&gt;
5. make sure shapes with effects are correctly handle-edited&lt;br /&gt;
&lt;br /&gt;
6. make sure objects with effects are correctly written and&lt;br /&gt;
rendered the same in Batik&lt;br /&gt;
&lt;br /&gt;
Most of these goals are surprisingly easy to achieve  :)  So don't&lt;br /&gt;
be frightened by the length of this email - it's just wordy&lt;br /&gt;
explanations.&lt;br /&gt;
&lt;br /&gt;
After all this works, we can move on to implementing the Path&lt;br /&gt;
Effects tool and handle-dragging UI for editing effects on&lt;br /&gt;
canvas... that will be Stage III.&lt;br /&gt;
&lt;br /&gt;
Now, the goals in detail:&lt;br /&gt;
&lt;br /&gt;
1. The inkscape:path-effect&lt;br /&gt;
attribute would store a string identifier of the effect to apply,&lt;br /&gt;
or &amp;quot;none&amp;quot;. If there's no such attribute, it's the same as&lt;br /&gt;
&amp;quot;none&amp;quot;. In addition, register several attributes for distortion&lt;br /&gt;
parameters:&lt;br /&gt;
&lt;br /&gt;
inkscape:path-effect-param1&lt;br /&gt;
inkscape:path-effect-param2&lt;br /&gt;
inkscape:path-effect-param3&lt;br /&gt;
&lt;br /&gt;
etc. The interpretation of these will of course depend on the&lt;br /&gt;
value of inkscape:path-effect.&lt;br /&gt;
&lt;br /&gt;
Then, move the reading of these attributes into SPShape, as they&lt;br /&gt;
will be used by all its subclasses (not only SPPath but also&lt;br /&gt;
shapes) in the same way. (That is, sp_object_read_attr(object,&lt;br /&gt;
&amp;quot;inkscape:path-effect&amp;quot;) etc must also be in sp_shape_build.)&lt;br /&gt;
Store the values in appropriate new members of SPShape. Write a&lt;br /&gt;
generic function that takes SPCurve and a SPShape pointers and&lt;br /&gt;
distorts the SPCurve according to the values of the members of&lt;br /&gt;
SPShape. Store that function in sp-shape.cpp and declare in&lt;br /&gt;
sp-shape.h so that it can be used from outside.&lt;br /&gt;
&lt;br /&gt;
You can even code a couple useful effects at this stage  :) &lt;br /&gt;
&lt;br /&gt;
2. For SPPath, it's all ready: it reads original-d, distorts it&lt;br /&gt;
and sets the curve from that. In shapes, it's even simpler. Take&lt;br /&gt;
SPStar for an example. In sp-star.cpp, find the line&lt;br /&gt;
&lt;br /&gt;
	sp_shape_set_curve_insync (SP_SHAPE (star), c, TRUE);&lt;br /&gt;
&lt;br /&gt;
and just insert the call to the distortion function in sp-shape&lt;br /&gt;
before that, passing it the curve and SP_SHAPE (star). That is&lt;br /&gt;
all! Shapes have no need for original-d because their path is&lt;br /&gt;
generated from the shape parameters anyway.&lt;br /&gt;
&lt;br /&gt;
3. Transforming objects works like this. In &amp;quot;preserve&amp;quot; mode (see&lt;br /&gt;
Inkscape Prefs), a transform= attribute is added or edited on all&lt;br /&gt;
transformed objects. In the &amp;quot;optimize&amp;quot; mode (which is the&lt;br /&gt;
default), various types of objects variously try to embed the&lt;br /&gt;
transform, or a component thereof. If this is not possible, again,&lt;br /&gt;
transform= attribute is added. For example, for paths,&lt;br /&gt;
sp_path_transform can completely embed all of the transform into&lt;br /&gt;
its curve (i.e. into d=), by transforming each path point by that&lt;br /&gt;
matrix, so it returns identity and transform= is not set. For&lt;br /&gt;
rects, sp_rect_set_transform embeds only translation and scaling&lt;br /&gt;
components of the matrix; the remainder, if any, is written as&lt;br /&gt;
transform=. For stars and ellipses, no embedding is attempted at&lt;br /&gt;
all, so the whole transform is always written as transform=.&lt;br /&gt;
&lt;br /&gt;
Now, for paths, sp_path_transform currently transforms the&lt;br /&gt;
(SPShape*)path-&amp;gt;curve, i.e. the distorted curve stored in base&lt;br /&gt;
SPShape instance. But we also need to transform the original path&lt;br /&gt;
by the same matrix too, so that it stays in sync. The easiest way&lt;br /&gt;
to do this, which will also have other benefits, is to store the&lt;br /&gt;
original path in SPPath as another SPCurve. That is,&lt;br /&gt;
(SPShape*)path-&amp;gt;curve will be the distorted path, while&lt;br /&gt;
(SPPath*)path-&amp;gt;original_curve will store the original path.&lt;br /&gt;
&lt;br /&gt;
You will thus need to add this member in sp-path.h and to add to&lt;br /&gt;
store the original SPCurve before distortion in that member in&lt;br /&gt;
sp_path_set, case SP_ATTR_ORIGINAL_D. (You may need to figure out&lt;br /&gt;
how to copy SPCurves and/or bpaths. Also don't forget to free the&lt;br /&gt;
SPCurve when destroying the path in sp_path_release.) Then look at&lt;br /&gt;
sp_path_transform:&lt;br /&gt;
&lt;br /&gt;
    /* Transform the path */&lt;br /&gt;
    NRBPath dpath, spath;&lt;br /&gt;
    spath.path = shape-&amp;gt;curve-&amp;gt;bpath;&lt;br /&gt;
    nr_path_duplicate_transform(&amp;amp;dpath, &amp;amp;spath, xform);&lt;br /&gt;
    SPCurve *curve = sp_curve_new_from_bpath(dpath.path);&lt;br /&gt;
    if (curve) {&lt;br /&gt;
        sp_shape_set_curve(shape, curve, TRUE);&lt;br /&gt;
        sp_curve_unref(curve);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
And just do the same also for your original SPCurve stored in&lt;br /&gt;
SPPath. That is all.&lt;br /&gt;
&lt;br /&gt;
For shapes, you normally don't need to do anything at all. Those&lt;br /&gt;
that don't attempt any embedding and always use transform=&lt;br /&gt;
attribute are not affected at all. Those that do embed do it just&lt;br /&gt;
by adjusting their internal shape parameters and regenerating the&lt;br /&gt;
curve - for example sp_rect_set_transform calls&lt;br /&gt;
sp_rect_set_shape(rect). Provided you inserted a distortion call&lt;br /&gt;
into *_set_shape, you are all set.&lt;br /&gt;
&lt;br /&gt;
CAVEAT: rects are the only shape which currently uses &amp;lt;rect&amp;gt;, not&lt;br /&gt;
&amp;lt;path&amp;gt;. So you cannot apply shape effects to rects at all, until&lt;br /&gt;
this is changed. It's on my TODO for a long time, hope I will get&lt;br /&gt;
a round tuit soon.&lt;br /&gt;
&lt;br /&gt;
4. The Inkscape::NodePath::Path reads the path from SPCurve, but&lt;br /&gt;
after modifying it, it writes directly to the d= attribute. This&lt;br /&gt;
needs to be changed thus: (a) if the path is distorted, read the&lt;br /&gt;
SPCurve from SPPath, not from SPShape (i.e. the original, not the&lt;br /&gt;
distorted one), and (b) if the path is distorted, write the edited&lt;br /&gt;
path to inkscape:original-d= instead of d= (in&lt;br /&gt;
update_repr_internal). Setting inkscape:original-d will trigger&lt;br /&gt;
reading it and setting both original and distorted curves, the&lt;br /&gt;
latter in turn triggering a redisplay of the distorted path. So I&lt;br /&gt;
think this will be enough for nodepath to edit the source path,&lt;br /&gt;
with the nodes generally not lying on the visible distorted&lt;br /&gt;
path. Adding a helper display of the original path between&lt;br /&gt;
nodepath nodes can be left for later.&lt;br /&gt;
&lt;br /&gt;
5. I think here nothing at all is needed. The knotholder thing&lt;br /&gt;
reads and writes from the shape's internal parameters, and thus is&lt;br /&gt;
totally unaffected by the visible distorted path.&lt;br /&gt;
&lt;br /&gt;
6. Look at sp_path_write: it writes the d= attribute from&lt;br /&gt;
(SPShape*)path-&amp;gt;curve, that is, from the distorted path. So the&lt;br /&gt;
&amp;quot;same display in Batik&amp;quot; part is already taken care of. We only&lt;br /&gt;
need to write the original-d so it stays in sync. Just repeat this&lt;br /&gt;
block:&lt;br /&gt;
&lt;br /&gt;
    if ( shape-&amp;gt;curve != NULL ) {&lt;br /&gt;
        NArtBpath *abp = sp_curve_first_bpath(shape-&amp;gt;curve);&lt;br /&gt;
        if (abp) {&lt;br /&gt;
            gchar *str = sp_svg_write_path(abp);&lt;br /&gt;
            sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, str);&lt;br /&gt;
            g_free(str);&lt;br /&gt;
        } else {&lt;br /&gt;
            sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, NULL);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
but for path-&amp;gt;original_curve and the inkscape:original-d&lt;br /&gt;
attribute, and you are all set.&lt;br /&gt;
&lt;br /&gt;
For shapes, again, nothing needs to be done. Except for rects,&lt;br /&gt;
shapes' _write methods (e.g. sp_star_write) create &amp;lt;path&amp;gt; element&lt;br /&gt;
and set its d= from the SPShape curve. This is just what we need.&lt;br /&gt;
&lt;br /&gt;
That is all - as you see, it's all quite simple, logical and fits&lt;br /&gt;
neatly. There will be gotchas of course, but overall the system&lt;br /&gt;
looks quite straightforward and robust. I'm really excited by&lt;br /&gt;
this.&lt;br /&gt;
&lt;br /&gt;
= see also =&lt;br /&gt;
*http://sourceforge.net/mailarchive/message.php?msg_id=3c78ff030603181509i3870330yc3777107f6f78d17%40mail.gmail.com&lt;br /&gt;
*http://sourceforge.net/mailarchive/message.php?msg_id=1142710409.20227.43.camel%40localhost.localdomain&lt;br /&gt;
*http://sourceforge.net/mailarchive/message.php?msg_id=444F68E9.9000806%40ekips.org&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=LivePathEffects&amp;diff=14200</id>
		<title>LivePathEffects</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=LivePathEffects&amp;diff=14200"/>
		<updated>2007-04-15T21:51:29Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* see also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
Live Path Effects allow arbitrary path-changing effects to be applied to any path object. These effects are fully live and interactive. Inkscape will remember the original path before the transformation was applied, so you will be able to remove the effect, chain several effects on the same path, adjust their parameters, etc. All the effects metadata will be stored in Inkscape-only attributes. At the same time, the resulting visible path (with the effects applied) is saved using pure SVG elements and attributes and thus visible to all SVG renderers, thus upholding Inkscape's basic principle of operation: drawings must ''look'' exactly the same in Inkscape as in any SVG-compliant renderer. &lt;br /&gt;
&lt;br /&gt;
This approach will allow us to make many of the effects currently implemeted as extensions (in the Effects menu) live and interactive. Path randomization, putting pattern along path, blends, envelopes, various distortions - all these can and should be live path effects, not the clunky, slow, and inconvenient Python scripts. Fortunately, Inkscape architecture makes creating live path effects relatively easy.&lt;br /&gt;
&lt;br /&gt;
The Stage I was a very simple test done by ACSpike. It proved the feasibility of the approach. Now we need to move ahead. Johan is currently working on Live Path Effects for Google's Summer of Code!&lt;br /&gt;
&lt;br /&gt;
Also see: [[LivePathEffects Discussion]]&lt;br /&gt;
&lt;br /&gt;
= BByak's email detailing live path effects, stage II =&lt;br /&gt;
&lt;br /&gt;
Overall, our Stage II goals are:&lt;br /&gt;
&lt;br /&gt;
1. make the system capable of handling several different effects,&lt;br /&gt;
with new ones easy to add&lt;br /&gt;
&lt;br /&gt;
2. make sure effects are correctly read in SPPath and in all&lt;br /&gt;
shapes&lt;br /&gt;
&lt;br /&gt;
3. make sure objects with effects are correctly transformed&lt;br /&gt;
&lt;br /&gt;
4. make sure paths with effects are correctly node-edited&lt;br /&gt;
&lt;br /&gt;
5. make sure shapes with effects are correctly handle-edited&lt;br /&gt;
&lt;br /&gt;
6. make sure objects with effects are correctly written and&lt;br /&gt;
rendered the same in Batik&lt;br /&gt;
&lt;br /&gt;
Most of these goals are surprisingly easy to achieve  :)  So don't&lt;br /&gt;
be frightened by the length of this email - it's just wordy&lt;br /&gt;
explanations.&lt;br /&gt;
&lt;br /&gt;
After all this works, we can move on to implementing the Path&lt;br /&gt;
Effects tool and handle-dragging UI for editing effects on&lt;br /&gt;
canvas... that will be Stage III.&lt;br /&gt;
&lt;br /&gt;
Now, the goals in detail:&lt;br /&gt;
&lt;br /&gt;
1. The inkscape:path-effect&lt;br /&gt;
attribute would store a string identifier of the effect to apply,&lt;br /&gt;
or &amp;quot;none&amp;quot;. If there's no such attribute, it's the same as&lt;br /&gt;
&amp;quot;none&amp;quot;. In addition, register several attributes for distortion&lt;br /&gt;
parameters:&lt;br /&gt;
&lt;br /&gt;
inkscape:path-effect-param1&lt;br /&gt;
inkscape:path-effect-param2&lt;br /&gt;
inkscape:path-effect-param3&lt;br /&gt;
&lt;br /&gt;
etc. The interpretation of these will of course depend on the&lt;br /&gt;
value of inkscape:path-effect.&lt;br /&gt;
&lt;br /&gt;
Then, move the reading of these attributes into SPShape, as they&lt;br /&gt;
will be used by all its subclasses (not only SPPath but also&lt;br /&gt;
shapes) in the same way. (That is, sp_object_read_attr(object,&lt;br /&gt;
&amp;quot;inkscape:path-effect&amp;quot;) etc must also be in sp_shape_build.)&lt;br /&gt;
Store the values in appropriate new members of SPShape. Write a&lt;br /&gt;
generic function that takes SPCurve and a SPShape pointers and&lt;br /&gt;
distorts the SPCurve according to the values of the members of&lt;br /&gt;
SPShape. Store that function in sp-shape.cpp and declare in&lt;br /&gt;
sp-shape.h so that it can be used from outside.&lt;br /&gt;
&lt;br /&gt;
You can even code a couple useful effects at this stage  :) &lt;br /&gt;
&lt;br /&gt;
2. For SPPath, it's all ready: it reads original-d, distorts it&lt;br /&gt;
and sets the curve from that. In shapes, it's even simpler. Take&lt;br /&gt;
SPStar for an example. In sp-star.cpp, find the line&lt;br /&gt;
&lt;br /&gt;
	sp_shape_set_curve_insync (SP_SHAPE (star), c, TRUE);&lt;br /&gt;
&lt;br /&gt;
and just insert the call to the distortion function in sp-shape&lt;br /&gt;
before that, passing it the curve and SP_SHAPE (star). That is&lt;br /&gt;
all! Shapes have no need for original-d because their path is&lt;br /&gt;
generated from the shape parameters anyway.&lt;br /&gt;
&lt;br /&gt;
3. Transforming objects works like this. In &amp;quot;preserve&amp;quot; mode (see&lt;br /&gt;
Inkscape Prefs), a transform= attribute is added or edited on all&lt;br /&gt;
transformed objects. In the &amp;quot;optimize&amp;quot; mode (which is the&lt;br /&gt;
default), various types of objects variously try to embed the&lt;br /&gt;
transform, or a component thereof. If this is not possible, again,&lt;br /&gt;
transform= attribute is added. For example, for paths,&lt;br /&gt;
sp_path_transform can completely embed all of the transform into&lt;br /&gt;
its curve (i.e. into d=), by transforming each path point by that&lt;br /&gt;
matrix, so it returns identity and transform= is not set. For&lt;br /&gt;
rects, sp_rect_set_transform embeds only translation and scaling&lt;br /&gt;
components of the matrix; the remainder, if any, is written as&lt;br /&gt;
transform=. For stars and ellipses, no embedding is attempted at&lt;br /&gt;
all, so the whole transform is always written as transform=.&lt;br /&gt;
&lt;br /&gt;
Now, for paths, sp_path_transform currently transforms the&lt;br /&gt;
(SPShape*)path-&amp;gt;curve, i.e. the distorted curve stored in base&lt;br /&gt;
SPShape instance. But we also need to transform the original path&lt;br /&gt;
by the same matrix too, so that it stays in sync. The easiest way&lt;br /&gt;
to do this, which will also have other benefits, is to store the&lt;br /&gt;
original path in SPPath as another SPCurve. That is,&lt;br /&gt;
(SPShape*)path-&amp;gt;curve will be the distorted path, while&lt;br /&gt;
(SPPath*)path-&amp;gt;original_curve will store the original path.&lt;br /&gt;
&lt;br /&gt;
You will thus need to add this member in sp-path.h and to add to&lt;br /&gt;
store the original SPCurve before distortion in that member in&lt;br /&gt;
sp_path_set, case SP_ATTR_ORIGINAL_D. (You may need to figure out&lt;br /&gt;
how to copy SPCurves and/or bpaths. Also don't forget to free the&lt;br /&gt;
SPCurve when destroying the path in sp_path_release.) Then look at&lt;br /&gt;
sp_path_transform:&lt;br /&gt;
&lt;br /&gt;
    /* Transform the path */&lt;br /&gt;
    NRBPath dpath, spath;&lt;br /&gt;
    spath.path = shape-&amp;gt;curve-&amp;gt;bpath;&lt;br /&gt;
    nr_path_duplicate_transform(&amp;amp;dpath, &amp;amp;spath, xform);&lt;br /&gt;
    SPCurve *curve = sp_curve_new_from_bpath(dpath.path);&lt;br /&gt;
    if (curve) {&lt;br /&gt;
        sp_shape_set_curve(shape, curve, TRUE);&lt;br /&gt;
        sp_curve_unref(curve);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
And just do the same also for your original SPCurve stored in&lt;br /&gt;
SPPath. That is all.&lt;br /&gt;
&lt;br /&gt;
For shapes, you normally don't need to do anything at all. Those&lt;br /&gt;
that don't attempt any embedding and always use transform=&lt;br /&gt;
attribute are not affected at all. Those that do embed do it just&lt;br /&gt;
by adjusting their internal shape parameters and regenerating the&lt;br /&gt;
curve - for example sp_rect_set_transform calls&lt;br /&gt;
sp_rect_set_shape(rect). Provided you inserted a distortion call&lt;br /&gt;
into *_set_shape, you are all set.&lt;br /&gt;
&lt;br /&gt;
CAVEAT: rects are the only shape which currently uses &amp;lt;rect&amp;gt;, not&lt;br /&gt;
&amp;lt;path&amp;gt;. So you cannot apply shape effects to rects at all, until&lt;br /&gt;
this is changed. It's on my TODO for a long time, hope I will get&lt;br /&gt;
a round tuit soon.&lt;br /&gt;
&lt;br /&gt;
4. The Inkscape::NodePath::Path reads the path from SPCurve, but&lt;br /&gt;
after modifying it, it writes directly to the d= attribute. This&lt;br /&gt;
needs to be changed thus: (a) if the path is distorted, read the&lt;br /&gt;
SPCurve from SPPath, not from SPShape (i.e. the original, not the&lt;br /&gt;
distorted one), and (b) if the path is distorted, write the edited&lt;br /&gt;
path to inkscape:original-d= instead of d= (in&lt;br /&gt;
update_repr_internal). Setting inkscape:original-d will trigger&lt;br /&gt;
reading it and setting both original and distorted curves, the&lt;br /&gt;
latter in turn triggering a redisplay of the distorted path. So I&lt;br /&gt;
think this will be enough for nodepath to edit the source path,&lt;br /&gt;
with the nodes generally not lying on the visible distorted&lt;br /&gt;
path. Adding a helper display of the original path between&lt;br /&gt;
nodepath nodes can be left for later.&lt;br /&gt;
&lt;br /&gt;
5. I think here nothing at all is needed. The knotholder thing&lt;br /&gt;
reads and writes from the shape's internal parameters, and thus is&lt;br /&gt;
totally unaffected by the visible distorted path.&lt;br /&gt;
&lt;br /&gt;
6. Look at sp_path_write: it writes the d= attribute from&lt;br /&gt;
(SPShape*)path-&amp;gt;curve, that is, from the distorted path. So the&lt;br /&gt;
&amp;quot;same display in Batik&amp;quot; part is already taken care of. We only&lt;br /&gt;
need to write the original-d so it stays in sync. Just repeat this&lt;br /&gt;
block:&lt;br /&gt;
&lt;br /&gt;
    if ( shape-&amp;gt;curve != NULL ) {&lt;br /&gt;
        NArtBpath *abp = sp_curve_first_bpath(shape-&amp;gt;curve);&lt;br /&gt;
        if (abp) {&lt;br /&gt;
            gchar *str = sp_svg_write_path(abp);&lt;br /&gt;
            sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, str);&lt;br /&gt;
            g_free(str);&lt;br /&gt;
        } else {&lt;br /&gt;
            sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, NULL);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
but for path-&amp;gt;original_curve and the inkscape:original-d&lt;br /&gt;
attribute, and you are all set.&lt;br /&gt;
&lt;br /&gt;
For shapes, again, nothing needs to be done. Except for rects,&lt;br /&gt;
shapes' _write methods (e.g. sp_star_write) create &amp;lt;path&amp;gt; element&lt;br /&gt;
and set its d= from the SPShape curve. This is just what we need.&lt;br /&gt;
&lt;br /&gt;
That is all - as you see, it's all quite simple, logical and fits&lt;br /&gt;
neatly. There will be gotchas of course, but overall the system&lt;br /&gt;
looks quite straightforward and robust. I'm really excited by&lt;br /&gt;
this.&lt;br /&gt;
&lt;br /&gt;
= see also =&lt;br /&gt;
http://sourceforge.net/mailarchive/message.php?msg_id=3c78ff030603181509i3870330yc3777107f6f78d17%40mail.gmail.com&lt;br /&gt;
http://sourceforge.net/mailarchive/message.php?msg_id=1142710409.20227.43.camel%40localhost.localdomain&lt;br /&gt;
http://sourceforge.net/mailarchive/message.php?msg_id=444F68E9.9000806%40ekips.org&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=LivePathEffects&amp;diff=14199</id>
		<title>LivePathEffects</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=LivePathEffects&amp;diff=14199"/>
		<updated>2007-04-15T21:35:34Z</updated>

		<summary type="html">&lt;p&gt;Acspike: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
Live Path Effects allow arbitrary path-changing effects to be applied to any path object. These effects are fully live and interactive. Inkscape will remember the original path before the transformation was applied, so you will be able to remove the effect, chain several effects on the same path, adjust their parameters, etc. All the effects metadata will be stored in Inkscape-only attributes. At the same time, the resulting visible path (with the effects applied) is saved using pure SVG elements and attributes and thus visible to all SVG renderers, thus upholding Inkscape's basic principle of operation: drawings must ''look'' exactly the same in Inkscape as in any SVG-compliant renderer. &lt;br /&gt;
&lt;br /&gt;
This approach will allow us to make many of the effects currently implemeted as extensions (in the Effects menu) live and interactive. Path randomization, putting pattern along path, blends, envelopes, various distortions - all these can and should be live path effects, not the clunky, slow, and inconvenient Python scripts. Fortunately, Inkscape architecture makes creating live path effects relatively easy.&lt;br /&gt;
&lt;br /&gt;
The Stage I was a very simple test done by ACSpike. It proved the feasibility of the approach. Now we need to move ahead. Johan is currently working on Live Path Effects for Google's Summer of Code!&lt;br /&gt;
&lt;br /&gt;
Also see: [[LivePathEffects Discussion]]&lt;br /&gt;
&lt;br /&gt;
= BByak's email detailing live path effects, stage II =&lt;br /&gt;
&lt;br /&gt;
Overall, our Stage II goals are:&lt;br /&gt;
&lt;br /&gt;
1. make the system capable of handling several different effects,&lt;br /&gt;
with new ones easy to add&lt;br /&gt;
&lt;br /&gt;
2. make sure effects are correctly read in SPPath and in all&lt;br /&gt;
shapes&lt;br /&gt;
&lt;br /&gt;
3. make sure objects with effects are correctly transformed&lt;br /&gt;
&lt;br /&gt;
4. make sure paths with effects are correctly node-edited&lt;br /&gt;
&lt;br /&gt;
5. make sure shapes with effects are correctly handle-edited&lt;br /&gt;
&lt;br /&gt;
6. make sure objects with effects are correctly written and&lt;br /&gt;
rendered the same in Batik&lt;br /&gt;
&lt;br /&gt;
Most of these goals are surprisingly easy to achieve  :)  So don't&lt;br /&gt;
be frightened by the length of this email - it's just wordy&lt;br /&gt;
explanations.&lt;br /&gt;
&lt;br /&gt;
After all this works, we can move on to implementing the Path&lt;br /&gt;
Effects tool and handle-dragging UI for editing effects on&lt;br /&gt;
canvas... that will be Stage III.&lt;br /&gt;
&lt;br /&gt;
Now, the goals in detail:&lt;br /&gt;
&lt;br /&gt;
1. The inkscape:path-effect&lt;br /&gt;
attribute would store a string identifier of the effect to apply,&lt;br /&gt;
or &amp;quot;none&amp;quot;. If there's no such attribute, it's the same as&lt;br /&gt;
&amp;quot;none&amp;quot;. In addition, register several attributes for distortion&lt;br /&gt;
parameters:&lt;br /&gt;
&lt;br /&gt;
inkscape:path-effect-param1&lt;br /&gt;
inkscape:path-effect-param2&lt;br /&gt;
inkscape:path-effect-param3&lt;br /&gt;
&lt;br /&gt;
etc. The interpretation of these will of course depend on the&lt;br /&gt;
value of inkscape:path-effect.&lt;br /&gt;
&lt;br /&gt;
Then, move the reading of these attributes into SPShape, as they&lt;br /&gt;
will be used by all its subclasses (not only SPPath but also&lt;br /&gt;
shapes) in the same way. (That is, sp_object_read_attr(object,&lt;br /&gt;
&amp;quot;inkscape:path-effect&amp;quot;) etc must also be in sp_shape_build.)&lt;br /&gt;
Store the values in appropriate new members of SPShape. Write a&lt;br /&gt;
generic function that takes SPCurve and a SPShape pointers and&lt;br /&gt;
distorts the SPCurve according to the values of the members of&lt;br /&gt;
SPShape. Store that function in sp-shape.cpp and declare in&lt;br /&gt;
sp-shape.h so that it can be used from outside.&lt;br /&gt;
&lt;br /&gt;
You can even code a couple useful effects at this stage  :) &lt;br /&gt;
&lt;br /&gt;
2. For SPPath, it's all ready: it reads original-d, distorts it&lt;br /&gt;
and sets the curve from that. In shapes, it's even simpler. Take&lt;br /&gt;
SPStar for an example. In sp-star.cpp, find the line&lt;br /&gt;
&lt;br /&gt;
	sp_shape_set_curve_insync (SP_SHAPE (star), c, TRUE);&lt;br /&gt;
&lt;br /&gt;
and just insert the call to the distortion function in sp-shape&lt;br /&gt;
before that, passing it the curve and SP_SHAPE (star). That is&lt;br /&gt;
all! Shapes have no need for original-d because their path is&lt;br /&gt;
generated from the shape parameters anyway.&lt;br /&gt;
&lt;br /&gt;
3. Transforming objects works like this. In &amp;quot;preserve&amp;quot; mode (see&lt;br /&gt;
Inkscape Prefs), a transform= attribute is added or edited on all&lt;br /&gt;
transformed objects. In the &amp;quot;optimize&amp;quot; mode (which is the&lt;br /&gt;
default), various types of objects variously try to embed the&lt;br /&gt;
transform, or a component thereof. If this is not possible, again,&lt;br /&gt;
transform= attribute is added. For example, for paths,&lt;br /&gt;
sp_path_transform can completely embed all of the transform into&lt;br /&gt;
its curve (i.e. into d=), by transforming each path point by that&lt;br /&gt;
matrix, so it returns identity and transform= is not set. For&lt;br /&gt;
rects, sp_rect_set_transform embeds only translation and scaling&lt;br /&gt;
components of the matrix; the remainder, if any, is written as&lt;br /&gt;
transform=. For stars and ellipses, no embedding is attempted at&lt;br /&gt;
all, so the whole transform is always written as transform=.&lt;br /&gt;
&lt;br /&gt;
Now, for paths, sp_path_transform currently transforms the&lt;br /&gt;
(SPShape*)path-&amp;gt;curve, i.e. the distorted curve stored in base&lt;br /&gt;
SPShape instance. But we also need to transform the original path&lt;br /&gt;
by the same matrix too, so that it stays in sync. The easiest way&lt;br /&gt;
to do this, which will also have other benefits, is to store the&lt;br /&gt;
original path in SPPath as another SPCurve. That is,&lt;br /&gt;
(SPShape*)path-&amp;gt;curve will be the distorted path, while&lt;br /&gt;
(SPPath*)path-&amp;gt;original_curve will store the original path.&lt;br /&gt;
&lt;br /&gt;
You will thus need to add this member in sp-path.h and to add to&lt;br /&gt;
store the original SPCurve before distortion in that member in&lt;br /&gt;
sp_path_set, case SP_ATTR_ORIGINAL_D. (You may need to figure out&lt;br /&gt;
how to copy SPCurves and/or bpaths. Also don't forget to free the&lt;br /&gt;
SPCurve when destroying the path in sp_path_release.) Then look at&lt;br /&gt;
sp_path_transform:&lt;br /&gt;
&lt;br /&gt;
    /* Transform the path */&lt;br /&gt;
    NRBPath dpath, spath;&lt;br /&gt;
    spath.path = shape-&amp;gt;curve-&amp;gt;bpath;&lt;br /&gt;
    nr_path_duplicate_transform(&amp;amp;dpath, &amp;amp;spath, xform);&lt;br /&gt;
    SPCurve *curve = sp_curve_new_from_bpath(dpath.path);&lt;br /&gt;
    if (curve) {&lt;br /&gt;
        sp_shape_set_curve(shape, curve, TRUE);&lt;br /&gt;
        sp_curve_unref(curve);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
And just do the same also for your original SPCurve stored in&lt;br /&gt;
SPPath. That is all.&lt;br /&gt;
&lt;br /&gt;
For shapes, you normally don't need to do anything at all. Those&lt;br /&gt;
that don't attempt any embedding and always use transform=&lt;br /&gt;
attribute are not affected at all. Those that do embed do it just&lt;br /&gt;
by adjusting their internal shape parameters and regenerating the&lt;br /&gt;
curve - for example sp_rect_set_transform calls&lt;br /&gt;
sp_rect_set_shape(rect). Provided you inserted a distortion call&lt;br /&gt;
into *_set_shape, you are all set.&lt;br /&gt;
&lt;br /&gt;
CAVEAT: rects are the only shape which currently uses &amp;lt;rect&amp;gt;, not&lt;br /&gt;
&amp;lt;path&amp;gt;. So you cannot apply shape effects to rects at all, until&lt;br /&gt;
this is changed. It's on my TODO for a long time, hope I will get&lt;br /&gt;
a round tuit soon.&lt;br /&gt;
&lt;br /&gt;
4. The Inkscape::NodePath::Path reads the path from SPCurve, but&lt;br /&gt;
after modifying it, it writes directly to the d= attribute. This&lt;br /&gt;
needs to be changed thus: (a) if the path is distorted, read the&lt;br /&gt;
SPCurve from SPPath, not from SPShape (i.e. the original, not the&lt;br /&gt;
distorted one), and (b) if the path is distorted, write the edited&lt;br /&gt;
path to inkscape:original-d= instead of d= (in&lt;br /&gt;
update_repr_internal). Setting inkscape:original-d will trigger&lt;br /&gt;
reading it and setting both original and distorted curves, the&lt;br /&gt;
latter in turn triggering a redisplay of the distorted path. So I&lt;br /&gt;
think this will be enough for nodepath to edit the source path,&lt;br /&gt;
with the nodes generally not lying on the visible distorted&lt;br /&gt;
path. Adding a helper display of the original path between&lt;br /&gt;
nodepath nodes can be left for later.&lt;br /&gt;
&lt;br /&gt;
5. I think here nothing at all is needed. The knotholder thing&lt;br /&gt;
reads and writes from the shape's internal parameters, and thus is&lt;br /&gt;
totally unaffected by the visible distorted path.&lt;br /&gt;
&lt;br /&gt;
6. Look at sp_path_write: it writes the d= attribute from&lt;br /&gt;
(SPShape*)path-&amp;gt;curve, that is, from the distorted path. So the&lt;br /&gt;
&amp;quot;same display in Batik&amp;quot; part is already taken care of. We only&lt;br /&gt;
need to write the original-d so it stays in sync. Just repeat this&lt;br /&gt;
block:&lt;br /&gt;
&lt;br /&gt;
    if ( shape-&amp;gt;curve != NULL ) {&lt;br /&gt;
        NArtBpath *abp = sp_curve_first_bpath(shape-&amp;gt;curve);&lt;br /&gt;
        if (abp) {&lt;br /&gt;
            gchar *str = sp_svg_write_path(abp);&lt;br /&gt;
            sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, str);&lt;br /&gt;
            g_free(str);&lt;br /&gt;
        } else {&lt;br /&gt;
            sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, NULL);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
but for path-&amp;gt;original_curve and the inkscape:original-d&lt;br /&gt;
attribute, and you are all set.&lt;br /&gt;
&lt;br /&gt;
For shapes, again, nothing needs to be done. Except for rects,&lt;br /&gt;
shapes' _write methods (e.g. sp_star_write) create &amp;lt;path&amp;gt; element&lt;br /&gt;
and set its d= from the SPShape curve. This is just what we need.&lt;br /&gt;
&lt;br /&gt;
That is all - as you see, it's all quite simple, logical and fits&lt;br /&gt;
neatly. There will be gotchas of course, but overall the system&lt;br /&gt;
looks quite straightforward and robust. I'm really excited by&lt;br /&gt;
this.&lt;br /&gt;
&lt;br /&gt;
= see also =&lt;br /&gt;
http://sourceforge.net/mailarchive/message.php?msg_id=3c78ff030603181509i3870330yc3777107f6f78d17%40mail.gmail.com&lt;br /&gt;
http://sourceforge.net/mailarchive/message.php?msg_id=1142710409.20227.43.camel%40localhost.localdomain&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=14000</id>
		<title>Release notes/0.45</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=14000"/>
		<updated>2007-03-20T17:03:34Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* Inkscape 0.45.1 changes with respect to 0.45 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Inkscape 0.45.1 changes with respect to 0.45 =&lt;br /&gt;
&lt;br /&gt;
*Patch [ 1667939 ]: fix crash when tile-tracing with too small clones&lt;br /&gt;
*Patch [ 1666532 ]: Broken link in inkview man page&lt;br /&gt;
*Patch [ 1665447 ]: fix for the blur quantization bug 1617082&lt;br /&gt;
*Patch [ 1664849 ]: fix for 1662589: increase blur margins&lt;br /&gt;
*Patch [ 1664004 ]: embedimage.py with fixed search order&lt;br /&gt;
*Patch [ 1662649 ]: markers.svg with reversed order&lt;br /&gt;
*Crudely improve check-markup for &amp;amp;#123; markup, fix translations with bugs in that area (dz and zh_TW).&lt;br /&gt;
*Patch [ 1659404 ]: Set locale directory from environment variable&lt;br /&gt;
*Patch [ 1657072 ]: fix for bug 1654495&lt;br /&gt;
*Patch [ 1654636 ]: defocus dropper checkboxes&lt;br /&gt;
*Adding japanese.nsh and russian.nsh into files that should go into the release tarball&lt;br /&gt;
*Correct russian translation&lt;br /&gt;
*Patch [ 1651797 ]: fix for attributes when saving/save-a-copy&lt;br /&gt;
*Patch [ 1651752 ]: fix dropper tool&lt;br /&gt;
*Pattern along path extension fixed on Windows&lt;br /&gt;
*Include libtiff3.dll in the Windows distribution, fixing crash when opening TIFF files&lt;br /&gt;
*Patch [ 1673067 ]: fix blur export on flowtext&lt;br /&gt;
*Patch [ 1678075 ]: fix FontInstance.cpp compile issue&lt;br /&gt;
*Patch [ 1673502 ]: fix broken Envelope (Summers Night) effect&lt;br /&gt;
*Patch [ 1680182 ]: fix pattern inversion on bool op (bug 1659445)&lt;br /&gt;
*Patch [ 1681754 ]: fix crash when editing text with multiple tspans&lt;br /&gt;
*Patch [ 1682425 ]: fix bug 1679477 (crash exporting gradients to ODG)&lt;br /&gt;
*Khmer translation now installs correctly&lt;br /&gt;
*Updated Slovak translation&lt;br /&gt;
*Updated Bulgarian translation&lt;br /&gt;
*Updated Catalan translation&lt;br /&gt;
*Updated Czech translation&lt;br /&gt;
*Security: fixed format string overflows in dialogs (CVE-2007-1463) and whiteboard Jabber protocol (CVE-2007-1464).&lt;br /&gt;
&lt;br /&gt;
= Inkscape 0.45: overview =&lt;br /&gt;
&lt;br /&gt;
This release brings the exciting new features developed by the Google Summer of Code 2006 participants, as well as tons of other improvements across the board. Here are the highlights:&lt;br /&gt;
&lt;br /&gt;
* '''Gaussian blur''' is the first SVG filter supported by Inkscape. You can blur any object to any extent - yet it remains vector and fully editable. This gives a huge boost to Inkscape as a creative art tool.&lt;br /&gt;
&lt;br /&gt;
* '''Display speed and interactivity''': not only does Inkscape render faster, but it can now respond to user input before it finished redrawing the screen, which greatly improves the responsiveness (perceived speed or interactivity) of the program.&lt;br /&gt;
&lt;br /&gt;
* '''History dialog''' makes it easy to to review your editing session and jump to any step of it, undoing and redoing multiple actions with one click.&lt;br /&gt;
&lt;br /&gt;
* Several important tool features are added, notably the new selection mode in '''Node tool''' and the adjustable rounded caps in '''Calligraphic pen'''.&lt;br /&gt;
&lt;br /&gt;
* '''Bitmap tracing''' works better for multi-color traces, sports a redesigned dialog and several new options.&lt;br /&gt;
&lt;br /&gt;
* Many new '''extension effects''' are added, including '''Color effects''' and '''Pattern along path'''. &lt;br /&gt;
&lt;br /&gt;
* The '''Outline mode''' has got many fixes and improvements, including a keyboard shortcut.&lt;br /&gt;
&lt;br /&gt;
* Several new commands in '''Help''' menu open various Inkscape-related pages in your default browser, making Inkscape reference information more accessible as you work. &lt;br /&gt;
&lt;br /&gt;
* Dozens of smaller '''features''' are added throughout the program, and hundreds of '''bugs''' are fixed.&lt;br /&gt;
&lt;br /&gt;
= SVG filters: Gaussian blur =&lt;br /&gt;
&lt;br /&gt;
Thanks to Google's Summer of Code program, Inkscape now has basic support for [http://www.w3.org/TR/SVG11/filters.html SVG filters]. The only filter enabled so far is '''Gaussian blur'''. &lt;br /&gt;
&lt;br /&gt;
With it, you can softly and naturally blur any Inkscape objects: paths, shapes, groups, text, images. Clones inherit blurring from their original, but they can also be blurred independently from the original (you can create blurred clones with Tile Clones, too). Both the fill and stroke of an object are blurred together, creating semitransparent margins that smoothly blend into the background. &lt;br /&gt;
&lt;br /&gt;
Gaussian blur enables a wide range of photorealistic effects: arbitrarily shaped shades and lights, depth of field, drop shadows, glows, etc. Also, blurred objects can be used as masks for other objects to achieve the &amp;quot;feathered mask&amp;quot; effect.&lt;br /&gt;
&lt;br /&gt;
* To blur selected objects, open the Fill and Stroke dialog (Ctrl+Shift+F) and use the '''Blur''' slider. The blur value is a percentage, with 100% corresponding to a blurring radius (standard deviation of Gaussian function) of 1/8 of the object's bounding box' perimeter (that is, for a square, a blur of 100% will have the radius equal to half a side, which turns any shape into an amorphous cloud). &lt;br /&gt;
&lt;br /&gt;
* The '''Tile Clones''' dialog also supports blurring. On the '''Blur &amp;amp; opacity''' tab, you can set the blur percentage per row or per column of your tiling, as well as randomize blurring and make it alternate (all the same options as for Opacity).&lt;br /&gt;
&lt;br /&gt;
* The quality of on-screen blur display is controlled by the '''Blur quality''' option on the new '''Filters''' tab of Inkscape Preferences (Ctrl+Shift+P). The available options range from best quality/slowest display to worst quality/fastest display, the default being in the middle of the range. Any setting except the &amp;quot;best quality&amp;quot; may introduce some rendering artifacts, especially when blurring thin strokes; on the other hand, the &amp;quot;best quality&amp;quot; setting may make Inkscape extremely slow at high zooms. These settings only affect the screen display of blurred objects; bitmap export always uses the best quality (and may therefore become quite slow for images with a lot of blur).&lt;br /&gt;
&lt;br /&gt;
Here are a few tips on using blur:&lt;br /&gt;
&lt;br /&gt;
* '''Masks and clipping''' are applied ''after'' blur. That is, if you clip an object and then blur it (or blur it first and then clip - it makes no difference), the clipped edges will remain crisp. Often, this is what you want. If, however, you want to blur the clipped/masked edges too (possibly with a different radius), you can use grouping: group the clipped object with some other object (which you can then delete from the group) and blur the group.&lt;br /&gt;
&lt;br /&gt;
* A simple '''drop shadow''' is now very easy to do: just copy the object, paint the copy black, blur it, shift away a bit and lower it to the bottom. However, such a shadow does not update when you edit the foreground object. If your object is already black (or, more generally, if you want the shadow to be the same color as the object), you can clone instead of copy to make the shadow auto-updating. But what if your foreground object is not black but you need an auto-updating black shadow? Here's a recipe: unset the object's fill (it becomes black); create ''two'' clones of it; put one clone on top and paint any color you want; put the other clone at bottom, blur it and shift sideways. Now you can edit the unset-fill original (use Alt+click to select it) and everything will update. &lt;br /&gt;
&lt;br /&gt;
* If an object has a fill that you don't want to blur (e.g. pattern, or if it's a bitmap), but you just want to '''feather the edges''', use a blurred transparency mask. For this, copy the object; paint it white; blur it as needed; scale the blurred copy down so its blur margins are entirely within the original object; select both the original and the blurred mask; do Object &amp;gt; Mask &amp;gt; Set.&lt;br /&gt;
&lt;br /&gt;
* '''Transforming''' a blurred object '''transforms its blur''', too. This applies to a non-uniform scaling as well, so by squeezing a blurred object you make its blur squeezed as well. So, the easiest way to blur a path horizontally more than vertically is this: stretch it upwards without blur, then apply blur and squeeze it back into the original shape. (This only works if the stretched path does not already have a Transform attribute.)&lt;br /&gt;
&lt;br /&gt;
* You can combine '''blurring with gradients'''. For example, an ellipse with elliptic opacity gradient will look much softer and more natural when blurred. An object with a horizontal linear opacity gradient, when blurred, will look as if it's more blurred on its transparent side than on its opaque side.&lt;br /&gt;
&lt;br /&gt;
* A '''clone of a blurred object''' inherits the blur of the original. Therefore, such a clone can be blurred ''more'', but you can't &amp;quot;unblur&amp;quot; it to make the clone sharper than its original (unless, of course, you unlink it). The Fill and Stroke dialog shows you the amount of the blur applied to this particular object; however, if the object is a clone of an already blurred original, the dialog does not reflect that.&lt;br /&gt;
&lt;br /&gt;
* Note that '''Firefox 2.0''' does not support SVG filters, so your files will be displayed in Firefox 2.0 without blur. However, filter support has been added  in the current development version and will be included in Firefox 3.0. The Opera web browser, as well as librsvg (used by Wikipedia) and Batik, support filters correctly in their current versions.&lt;br /&gt;
&lt;br /&gt;
= Undo history =&lt;br /&gt;
&lt;br /&gt;
* Inkscape now features a &amp;lt;b&amp;gt;History Dialog&amp;lt;/b&amp;gt; accessible via &amp;lt;b&amp;gt;Ctrl+Shift+H&amp;lt;/b&amp;gt; or Edit &amp;amp;gt; Undo History. All changes made to the document since it was opened are recorded here.&lt;br /&gt;
&lt;br /&gt;
:* In the dialog, changes are listed from the '''oldest (top)''' to the '''newest (bottom)'''. &lt;br /&gt;
&lt;br /&gt;
:* The type of each change is indicated by an '''icon''' and a short '''description'''.&lt;br /&gt;
&lt;br /&gt;
:* For readability, consecutive changes of the same type are placed in a '''collapsible branch''' showing a triangle marker and the number of the hidden actions in the branch.&lt;br /&gt;
&lt;br /&gt;
:* By clicking on an event in the list, you can easily '''move through the undo history''', i.e. undo or redo any number of actions with one click.&lt;br /&gt;
&lt;br /&gt;
* The Undo and Redo commands in the Edit menu display the descriptions of the commands to be undone and redone, correspondingly. (These are the same descriptions that you see in the History dialog.)&lt;br /&gt;
&lt;br /&gt;
= Rendering improvements =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Interruptible display&amp;lt;/b&amp;gt;: Previously, Inkscape could not do anything until it finishes the current screen redraw. Now the redraw is made interruptible, so that Inkscape responds to mouse and keyboard input and can abort the current redraw and start over if you do some screen-changing operation. As a result, Inkscape now feels '''much snappier and more interactive'''. This interruptibility is fine-tuned for some continuous-drag operations (such as node dragging) so that a balance is achieved between responsiveness and completeness of display.&lt;br /&gt;
&lt;br /&gt;
* Screen render is faster by '''2-3%''' overall:&lt;br /&gt;
&lt;br /&gt;
:* Complex drawings with '''transparency''' are faster by up to '''5%'''.&lt;br /&gt;
&lt;br /&gt;
:* '''Radial gradients''' are rendered faster by at least '''10%'''.&lt;br /&gt;
&lt;br /&gt;
* Rendering (compositing) quality has been improved. This is most visible with (partially) transparent gradients: '''banding''' is a lot less pronounced now. Speed has also been improved in some cases.&lt;br /&gt;
&lt;br /&gt;
* Display is more responsive when working at high zoom levels when using a tablet.&lt;br /&gt;
&lt;br /&gt;
= Tools = &lt;br /&gt;
&lt;br /&gt;
== Node tool ==&lt;br /&gt;
&lt;br /&gt;
* You can &amp;lt;b&amp;gt;grow or shrink node selection&amp;lt;/b&amp;gt; by hovering the mouse pointer over a node and using &amp;lt;b&amp;gt;mousewheel&amp;lt;/b&amp;gt; (up = grow, down = shrink) or the keys &amp;lt;b&amp;gt;PageUp&amp;lt;/b&amp;gt; (grow) and &amp;lt;b&amp;gt;PageDown&amp;lt;/b&amp;gt; (shrink). ''Growing'' adds the closest unselected node to the selection; shrinking deselects the farthest selected node. There are two modes that differ by how the closest/farthest nodes are chosen:&lt;br /&gt;
&lt;br /&gt;
:* &amp;lt;b&amp;gt;Spatial selection&amp;lt;/b&amp;gt; (mousewheel, PageUp/PageDown): distances to nodes are measured directly, regardless of which subpath a node belongs to. &lt;br /&gt;
&lt;br /&gt;
:* &amp;lt;b&amp;gt;Linear selection&amp;lt;/b&amp;gt; (Ctrl+mousewheel, Ctrl+PageUp/Ctrl+PageDown): node distances are measured ''along the path'', and only the nodes belonging to the same subpath as the hovered node are considered (i.e. other subpaths are never selected).&lt;br /&gt;
&lt;br /&gt;
:This technique is convenient for quickly selecting an area in a complex path starting from a center - for example, for node sculpting.&lt;br /&gt;
&lt;br /&gt;
== Dropper ==&lt;br /&gt;
&lt;br /&gt;
* Instead of the confusing toggle button, now the Controls bar for the Dropper tool has two checkboxes, '''Pick alpha''' and '''Set alpha''', which work as follows. Suppose you have an object selected and, using Dropper, click on an object which has red (#FF0000) fill and 0.5 opacity (half-transparent).&lt;br /&gt;
&lt;br /&gt;
:* If the &amp;quot;Pick alpha&amp;quot; checkbox is off, the selected object will get the fill color #800000 (i.e. faded-out red) and fill opacity will be at 1.0 (opaque). &lt;br /&gt;
&lt;br /&gt;
:* If the &amp;quot;Pick alpha&amp;quot; checkbox is on but &amp;quot;Set alpha&amp;quot; is off, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 1.0. &lt;br /&gt;
&lt;br /&gt;
:* If both &amp;quot;Pick alpha&amp;quot; and &amp;quot;Set alpha&amp;quot; are on, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 0.5 (half-transparent). &lt;br /&gt;
&lt;br /&gt;
:If you Shift+click instead of click, the same changes will be made to stroke color and stroke opacity, correspondingly. Note that in no situation can Dropper change the ''master opacity'' of the selected object(s) (only the fill/stroke opacity), although it can pick it just as it does any other kind of opacity.&lt;br /&gt;
&lt;br /&gt;
== Calligraphy ==&lt;br /&gt;
&lt;br /&gt;
* A new numeric parameter, &amp;lt;b&amp;gt;Caps&amp;lt;/b&amp;gt;, controls the amount of protruding at the ends of calligraphic strokes. This parameter can range from 0 (flat caps, default behavior in previous versions) through 1 (approximately half-circle caps) and up to 5 (long elliptic caps). Rounded caps much improve the look of low-fixation strokes, simulating a rounded pen.  &lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Drag&amp;quot; parameter has been renamed to &amp;lt;b&amp;gt;Wiggle&amp;lt;/b&amp;gt; with a value inversion (i.e. low drag corresponds to high wiggle, and vice versa). Increase this parameter (default is 0) to make the pen waver and wiggle in curly patterns.&lt;br /&gt;
&lt;br /&gt;
* As a first step towards a redesign of the tools' controls, the '''Controls bar of the Calligraphy pen''' has been upgraded. Now it no longer prevents the Inkscape window from resizing narrower than the bar. The items on the far right end of the bar which didn't fit in a narrow window are still accessible through an '''expansion menu''' which allows you to toggle switches, select commands, and set values of numeric fields. Also, each editable numeric value field has a new '''right-click menu''' with some common values which often allows you to set a desired value much faster than by scrolling the control or typing the value into it.&lt;br /&gt;
&lt;br /&gt;
* With low or zero Fixation parameter, some users of tablet pens experienced &amp;quot;blobs&amp;quot; (brief reversals of a stroke's right/left edges, causing &amp;quot;holes&amp;quot; and &amp;quot;bubbles&amp;quot; in a calligraphic stroke), especially often at the start of a stroke. Hopefully this problem is now fixed without reducing the responsiveness of the tool.&lt;br /&gt;
&lt;br /&gt;
= Outline mode =&lt;br /&gt;
&lt;br /&gt;
* A new menu command (&amp;lt;b&amp;gt;View &amp;gt; Display Mode &amp;gt; Toggle&amp;lt;/b&amp;gt;) and a new keyboard shortcut (&amp;lt;b&amp;gt;Ctrl+&amp;amp;lt;keypad 5&amp;amp;gt;&amp;lt;/b&amp;gt;) switch the display mode from Normal to Outline and back.&lt;br /&gt;
&lt;br /&gt;
* The window title displays &amp;quot;&amp;lt;b&amp;gt;(outline)&amp;lt;/b&amp;gt;&amp;quot; next to the file name when that editing window is in Outline mode. &lt;br /&gt;
&lt;br /&gt;
* An object with &amp;lt;b&amp;gt;mask and/or clipping path&amp;lt;/b&amp;gt;, when viewed in Outline mode, now displays both the object itself and its clipping path and mask as objects, using different outline colors. By default, &amp;lt;b&amp;gt;clippaths use green&amp;lt;/b&amp;gt; outlines, and &amp;lt;b&amp;gt;masks use blue&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Images&amp;lt;/b&amp;gt; in Outline mode are displayed as &amp;lt;b&amp;gt;red&amp;lt;/b&amp;gt; (by default) frames with two diagonals.&lt;br /&gt;
&lt;br /&gt;
* An object with no fill and no stroke, invisible and not selectable by mouse clicking in normal mode, can now be &amp;lt;b&amp;gt;picked by a mouse click&amp;lt;/b&amp;gt; in the Outline mode using its visible outline.&lt;br /&gt;
&lt;br /&gt;
* The bug whereby stroked shapes didn't change stroke width when switching to Outline mode or back is fixed.&lt;br /&gt;
&lt;br /&gt;
* All outline colors are changeable by editing the &amp;quot;wireframecolors&amp;quot; group inside &amp;quot;options&amp;quot; in the preferences file (~/.inkscape/preferences.xml). The &amp;quot;onlight&amp;quot; and &amp;quot;ondark&amp;quot; attributes set the colors of the regular object outlines on light and dark backgrounds (default black and white correspondingly); the &amp;quot;images&amp;quot;, &amp;quot;clips&amp;quot;, and &amp;quot;masks&amp;quot; attributes set the colors of images, clipping paths, and masks (defaults are red, green, and blue correspondingly). Each attribute is a decimal integer corresponding to the hex RRGGBBAA of the color.  &lt;br /&gt;
&lt;br /&gt;
* To cater for specialized uses, such as preparing input for personal media cutters, Inkscape now has an option to start in the Outline mode upon launch. To enable this, add the following line to your preferences.xml file:&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;group id=&amp;quot;startmode&amp;quot; outline=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:placing it after the &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; opening tag.&lt;br /&gt;
&lt;br /&gt;
= Keyboard profiles =&lt;br /&gt;
&lt;br /&gt;
The previous release allowed sets of keybindings (keymaps) to be created for Inkscape in the style of other applications.  Two more keymaps have been added:  &lt;br /&gt;
&lt;br /&gt;
* '''Adobe Illustrator''' &lt;br /&gt;
* '''Macromedia Freehand'''&lt;br /&gt;
&lt;br /&gt;
Of course not every feature in these other programs has a direct match to features in Inkscape; so, if you can, please '''help us out''' by reporting any problems you may have or improvements you would like to request.&lt;br /&gt;
&lt;br /&gt;
Additionally, a keymap that focuses on tablet-based illustration and drawing work has been added:&lt;br /&gt;
&lt;br /&gt;
* '''right-handed-illustration.xml'''&lt;br /&gt;
&lt;br /&gt;
This keymap places all commonly-used commands under the left hand, so that the user's hands rarely leave the keyboard or the tablet/stylus.&lt;br /&gt;
&lt;br /&gt;
(To enable a profile, copy it into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; in the same directory, overwriting the old file. To restore the default Inkscape set, copy &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
More of Inkscape's keys are implemented as actions and are therefore available for remapping via keyboard profiles. New actions include '''EditSelectNext''' and '''EditSelectPrev''' for selecting next/previous object or node (by default, they are bound to Tab/Shift+Tab; as a result of becoming global actions, these keys now work in all tools and not only in Selector and Node tool as before).&lt;br /&gt;
&lt;br /&gt;
= Extension effects =&lt;br /&gt;
&lt;br /&gt;
Inkscape's extension effects, written in Python using the '''inkex''' utility class, are currently a major growth point of the project. They allow new developers to create functionality very quickly, without having to learn Inkscape's huge C/C++ codebase. However, eventually we plan to move many of these effects into the core of Inkscape, which will make them much faster and more interactive. From this viewpoint, effects can be considered a quick way to prototype and test the algorithms and UI controls of the future Inkscape features. However, this does not prevent effects from being genuinely useful in everyday work, and in this version we have several excellent additions. &lt;br /&gt;
&lt;br /&gt;
== New effects ==&lt;br /&gt;
&lt;br /&gt;
* '''Pattern along path''': A new powerful extension in the &amp;quot;Generate from path&amp;quot; submenu allows you to bend, repeat and/or stretch a pattern object (which can be a path or a group) along a &amp;quot;skeleton&amp;quot; path. This makes it easy to create a variety of patterned and shaped strokes. (This obsoletes the old &amp;quot;Kochify&amp;quot; extension which is removed.)&lt;br /&gt;
&lt;br /&gt;
:Effect's parameters include: &lt;br /&gt;
&lt;br /&gt;
:* ''Copies of the pattern'' selects one of the four modes: '''Single stretched''': one copy of the pattern is placed on the skeleton path and stretched/squeezed to match its length;  '''Repeated stretched''': as many copies as would fit are placed along the skeleton path and stretched to fit exactly; '''Single''' and '''Repeated''': same but without stretching.&lt;br /&gt;
&lt;br /&gt;
:* ''Deformation type'' can be one of: '''Snake''' bends the pattern flatly in the plane of the drawing, the width not depending on direction; '''Ribbon''' bends it as a vertical ribbon or like a calligraphic stroke with maximum fixation, so that width depends on direction (minimum for vertical parts of the stroke, maximum for horizontal).&lt;br /&gt;
&lt;br /&gt;
:* Several parameters allow you to adjust spacing between the copies of the pattern (for Multiple modes) and their offset in two directions (along the skeleton path and perpendicular to it).&lt;br /&gt;
&lt;br /&gt;
:* Normally the effect assumes that the pattern object is horizontal and bends its horizontal axis (at mid-height) along the skeleton path. There's a checkbox that allows you to use a '''vertical pattern''' instead. &lt;br /&gt;
&lt;br /&gt;
:Some examples of using this effect are shown on a screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.45-patternalongpath.png].&lt;br /&gt;
&lt;br /&gt;
* '''Color effects''': A new group of extensions in the '''Color''' submenu of the Effects menu allows you to adjust all colors of a selection at once. These commands affect both fill and stroke colors, including gradients (but not bitmaps). The commands include:&lt;br /&gt;
&lt;br /&gt;
:* a full set of '''HSL adjustments''' (increasing/decreasing hue, saturation, or lightness by 5%), &lt;br /&gt;
&lt;br /&gt;
:* '''Brighter''' and '''Darker''' (adjust brightness up or down by 10%), &lt;br /&gt;
&lt;br /&gt;
:* '''Desaturate''', &lt;br /&gt;
&lt;br /&gt;
:* '''Grayscale''', &lt;br /&gt;
&lt;br /&gt;
:* '''Negative''', &lt;br /&gt;
&lt;br /&gt;
:* commands for removing or swapping the '''Red''', '''Green''', '''Blue''' channels, &lt;br /&gt;
&lt;br /&gt;
:* a '''Custom''' command where you can set your own formulas for modifying the color channels. &lt;br /&gt;
&lt;br /&gt;
:Some examples of using this effect are shown on a screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.45-coloreffects.png].&lt;br /&gt;
&lt;br /&gt;
:Note: undoing color changes on gradients exposes a bug where an object seems to &amp;quot;disappear&amp;quot;; this is only a display issue (caused by the order in which gradients and their users are restored on undo) not causing any loss of information. Also, on large documents and large selections with gradients, Python's XPath code may get quite slow. Despite these shortcomings, we decided to add this extension, because it's genuinely useful functionality which was so far missing in Inkscape.&lt;br /&gt;
&lt;br /&gt;
* Recent fixes in the processing of SVG &amp;lt;defs /&amp;gt; have made it possible to implement the often requested '''Color Markers to Match Stroke''' effect. It is no longer necessary to hand-edit XML to recolor arrowheads; just change the stroke color of your path and call this effect to recolor its markers to match.&lt;br /&gt;
&lt;br /&gt;
* '''Lorem ipsum''' (in &amp;quot;Render&amp;quot; submenu) is a new extension that creates the traditional Latin-like random text for design mock-ups. The number of paragraphs, the number of sentences per paragraph and the possible fluctuation of the number of sentences (for uneven paragraphs) can be adjusted. If no flowed text element is selected, a new one in a new layer is created, matching the size of the canvas.&lt;br /&gt;
&lt;br /&gt;
* '''Fractalize''' (in &amp;quot;Modify Path&amp;quot; submenu) replaces each segment of the selected path by a crooked line, subdivided to the given depth, with randomly displaced nodes. &lt;br /&gt;
&lt;br /&gt;
* '''g2png''': The new group-to-PNG Python extension (g2png) is an easy way to export any group or layer to individual PNG files. It was first created for use in the [http://www.le-radar.com/?mm/inkscape Inkscape User Manual] (also available in SVN in the user_manual module) but is also interesting for many other uses. If e.g. you have to draw a set of icons, you can draw them in the same document, thus making copying, duplicating, cloning etc. easier. Then just create a group  for each icon, and with the extension, each group ends up in its own PNG file.&lt;br /&gt;
&lt;br /&gt;
== Improved effects ==&lt;br /&gt;
&lt;br /&gt;
* The '''Function Plotter''' has been extended, providing greater flexibility in x- and y-range definition. &lt;br /&gt;
&lt;br /&gt;
* The '''Measure Path''' extension is improved with several new parameters added (units, scale, precision, distance from path).&lt;br /&gt;
&lt;br /&gt;
* The '''Extract One Image''' extension is fixed to automatically append filename extension to the created bitmap file.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Blur Edge&amp;quot; extension is renamed into '''Inset/Outset Halo''' to avoid confusion with the real Gaussian blur that we now support, as well as to better describe what this extension actually does: From the selected path, it creates a group of inset and outset paths that form a stepped &amp;quot;halo&amp;quot; around the object. &lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
* '''3 new parameter types''' have been added to the extension effect UI: '''tabs''', '''enumerations''' and '''optiongroups''' (radio buttons). Examples are available of how to use these parameters in INX files: the new Function Plotter uses tabs; enumerations are used by the Pattern along path extension; and a small developer example is given to illustrate the use of optiongroups (identical to enumerations).&lt;br /&gt;
&lt;br /&gt;
* In an extension's INX file, you can specify &amp;lt;code&amp;gt;&amp;amp;lt;effects-menu hidden=&amp;quot;yes&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt; to hide that extension from the Effects menu. However, such a &amp;quot;hidden&amp;quot; extension can still be assigned a keyboard shortcut (by using its &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; as an &amp;quot;action&amp;quot; in your &amp;lt;code&amp;gt;~/.inkscape/keys/default.xml&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* In an extension's INX file, you can add &amp;lt;code&amp;gt;needs-document=&amp;quot;no&amp;quot;&amp;lt;/code&amp;gt; attribute to the &amp;lt;code&amp;gt;&amp;amp;lt;effect&amp;amp;gt;&amp;lt;/code&amp;gt; element. This indicates that the extension does not process the current SVG document, and Inkscape will not bother saving and restoring the document from a temporary file which allows this extension to run faster and smoother. (This is used for the new open-in-default-browser Help menu commands which are technically implemented as extensions.)&lt;br /&gt;
&lt;br /&gt;
= Export formats =&lt;br /&gt;
&lt;br /&gt;
== AI import/export ==&lt;br /&gt;
&lt;br /&gt;
* We only support AI import and export for Adobe Illustrator 8.0 and older.  This has been clarified in the Open and Save As lists.&lt;br /&gt;
&lt;br /&gt;
== PDF export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape's PDF exporter has been improved:&lt;br /&gt;
&lt;br /&gt;
* '''New features:''' bitmap images can be embedded; PDF files can be exported from command line using the &amp;lt;code&amp;gt;--export-pdf&amp;lt;/code&amp;gt; parameter. &lt;br /&gt;
&lt;br /&gt;
* '''Changed behavior:''' the pointless text to path question is gone. &lt;br /&gt;
&lt;br /&gt;
* '''Fixed bugs:''' save failure is now detected, miter limits are now &amp;gt;= 1, PDFs with transparent gradient are now embeddable, eccentric elliptic gradients fixed, dash style inheritance fixed, transparency inheritance fixed.&lt;br /&gt;
&lt;br /&gt;
== PS/EPS export ==&lt;br /&gt;
&lt;br /&gt;
There's a new option to &amp;lt;b&amp;gt;embed the fonts&amp;lt;/b&amp;gt; used in the document in the PS or EPS exported file. As of now, this works for &amp;lt;b&amp;gt;Type 1 fonts only&amp;lt;/b&amp;gt;, not TrueType. The option is available when performing the export from the GUI as well as from the command line via the &amp;lt;code&amp;gt;--export-embed-fonts&amp;lt;/code&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
== EMF export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape has a limited support for exporting &amp;lt;b&amp;gt;EMF&amp;lt;/b&amp;gt; (Enhanced Meta File) format. This works &amp;lt;b&amp;gt;only on Windows&amp;lt;/b&amp;gt;, and only exports strokes and fills with constant colors. No text, no images, no gradients, no transparency.&lt;br /&gt;
&lt;br /&gt;
= SVG output =&lt;br /&gt;
&lt;br /&gt;
For specialized uses, several aspects of Inkscape's SVG output can now be customized via editing the preferences.xml file (there's no UI for these options). A &amp;lt;group id=&amp;quot;&amp;lt;b&amp;gt;svgoutput&amp;lt;/b&amp;gt;&amp;quot;&amp;gt; inside &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; can have the following attributes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;usenamedcolors&amp;lt;/b&amp;gt; (default is 0). If nonzero, Inkscape uses symbolic color names (such as &amp;quot;white&amp;quot; or &amp;quot;lime&amp;quot;) and three-digit color designations (such as $dfe) where appropriate; otherwise, it always uses six-digit colors (such as $d0f0e0). Note that in 0.44, the default was to use named colors, which created problems for some extension effects.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;numericprecision&amp;lt;/b&amp;gt; (default is 8). This is the number of significant digits written for each number into SVG. You can lower this number to get slightly more compact SVG at the expense of precision.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;minimumexponent&amp;lt;/b&amp;gt; (default is -8). In transform= attributes, any number whose absolute value is less than 10 to the power of minimumexponent (i.e. less than 10&amp;lt;sup&amp;gt;-8&amp;lt;/sup&amp;gt; by default) is written as 0.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;indent&amp;lt;/b&amp;gt; (default is 2) controls the number of spaces that each level of nesting in SVG is shifted. Set this to 0 to disable indentation.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;inlineattrs&amp;lt;/b&amp;gt; (default is 0). If nonzero, attributes are placed on the same line as their tags; otherwise they are separated by newlines.&lt;br /&gt;
&lt;br /&gt;
= Bitmap tracing =&lt;br /&gt;
&lt;br /&gt;
* A '''new color quantization algorithm''' for multiscan traces works faster (especially for large numbers of colors) and gives more adequate results with less colors used. This improves tracing results both for full-color photographs and for limited-color drawings. &lt;br /&gt;
&lt;br /&gt;
* The Trace Bitmap dialog now provides access to three more tracing parameters:&lt;br /&gt;
&lt;br /&gt;
:* '''Suppress speckles''': If set, spots or speckles larger than the given size (in pixels) are suppressed in the trace.&lt;br /&gt;
&lt;br /&gt;
:* '''Smooth corners''': This parameter controls how much smoothing is applied to corners in the traced path.&lt;br /&gt;
&lt;br /&gt;
:* '''Optimize paths''': If set, trace paths are optimized by joining adjacent Bezier segments with the given tolerance.&lt;br /&gt;
&lt;br /&gt;
* All controls in the Trace Bitmap dialog are reorganized to be easier to find. The dialog is redesigned to use two main tabs: '''Mode''' (where you select the tracing mode, such as brightness cutoff or color multiscan) and '''Options''' (where you set various tracing options, such as corner smoothing). The preview is placed horizontally to the right of the tabs. Most labels and tooltips are rewritten for clarity. The trace preview image is made twice larger.&lt;br /&gt;
&lt;br /&gt;
= Even more improvements =&lt;br /&gt;
&lt;br /&gt;
* The '''opacity''' of objects is now displayed as percentage, '''from 0 to 100''', both in the Fill &amp;amp; Stroke dialog (with one fractional digit) and in the statusbar style indicator (with no fractional digits), instead of from 0 to 1.0 as before. This makes opacity values easier to read, type, and say.&lt;br /&gt;
&lt;br /&gt;
* A '''Save a copy''' command has been added to the file menu, similar to the 'Save a copy' functionality of e.g. Adobe Illustrator. With this command, you can save your document under a new filename, but Inkscape will then &amp;quot;forget&amp;quot; it has done this: later saves will be to the old filename. The default shortcut assigned to this function is '''Shift+Ctrl+Alt+S'''.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Text and flowed text objects&amp;lt;/b&amp;gt; behave more consistently. Now you can put a flowed text on path or (re)flow it into a shape just as you would do with a regular (unflowed) text. Previously, the need to convert a flowed text to text before these operations was a stumble for many users.&lt;br /&gt;
&lt;br /&gt;
* Several commands were added to the '''Help menu''', providing the long-missing access to basic information about Inkscape and SVG right from the program: [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/index.php Inkscape manual], [http://inkscape.org/doc/inkscape-man.html Command line options], [http://wiki.inkscape.org/wiki/index.php/FAQ FAQ], Release notes, [http://inkscape.org/report_bugs.php Bug report page], and the [http://www.w3.org/TR/SVG11/ SVG 1.1 specification]. All these commands open the corresponding web pages in the user's default web browser. &lt;br /&gt;
&lt;br /&gt;
* Exported PNG images have the correct '''resolution''' set in the header.&lt;br /&gt;
&lt;br /&gt;
* The Path -&amp;gt; '''Union''' (Ctrl++) operation now functions when only a '''single object''' is selected. Use this to '''remove self-intersections''' in path objects.&lt;br /&gt;
&lt;br /&gt;
* We removed the &amp;quot;hacked&amp;quot; '''filename entry field''' that we had added to the Open and Save dialogs because starting from version 2.10, GTK+ has finally restored this field in their '''standard file dialog'''. The standard field at the top of the dialog supports type-ahead find and performs the default dialog action (open or save) by pressing Enter, which means you can now do a quick '''Ctrl+O, Ctrl+V, Enter''' sequence to open the file whose path is in your clipboard (this closes a long-standing usability bug). Those who use older versions of GTK are advised either to upgrade to 2.10 or use Ctrl+L to open a pop-up filename box. (Our Windows builds are shipped with GTK+ 2.10.)&lt;br /&gt;
&lt;br /&gt;
* The '''Create Bitmap''' function (Alt+B in the default keymap) is made more useful. Unless you have specific resolution or minimum size set for this command in preferences.xml (&amp;lt;code&amp;gt;&amp;amp;lt;group id=&amp;quot;createbitmap&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt;), it will take the '''resolution hint''' from the object whose bitmap copy you are creating (in other words, it will use the resolution that you specified for that object when exporting it via the Export Bitmap dialog), or the default '''90 dpi''' if that object was not yet exported. Also, a 90 dpi bitmap (with its pixels exactly 1 px in size) will be '''snapped''' to the pixel grid. This makes it easy to use Create Bitmap for quick '''rasterization preview''' of an object or document. (Note: if you have used a previous version of Inkscape, your preferences.xml may contain &amp;lt;code&amp;gt;minsize=&amp;quot;250&amp;quot;&amp;lt;/code&amp;gt;; delete this for objects' resolution hints to work.)&lt;br /&gt;
&lt;br /&gt;
* Using extended input (i.e. tablet pressure and tilt) can now be disabled via Preferences (Misc tab). This is intended to be a last-resort option for those platform/hardware combinations that are not properly supported by GTK. With extended input disabled, you can still use your tablet as a mouse. &lt;br /&gt;
&lt;br /&gt;
* Simplify Path now has two modes when working with a group of paths:  the default mode, which treats all of the paths as one large object to simplify, or the new mode, which acts the same as using Simplify on each path in a group separately.  In preferences.xml, set '''options.simplifyindividualpaths''' to 1 to get the new mode.&lt;br /&gt;
&lt;br /&gt;
* For long Simplify operations (more than 20 paths at a time), Inkscape provides user feedback via the status bar as to how many paths have been simplified.  This change also prevents Inkscape from appearing to have locked up during the operation.&lt;br /&gt;
&lt;br /&gt;
* New '''templates''' added for '''video formats''' (PAL, NTSC and HDTV 1080) as well as DVD cover templates that were not installed in the previous version. This will help video and DVD authoring with Inkscape. The business card 85&amp;amp;times;54 template is now installed as well.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Other&amp;quot; license type was added to the metadata/license dialog so that people know that they are entering a URI to an &amp;quot;other&amp;quot; license.&lt;br /&gt;
&lt;br /&gt;
= Examples = &lt;br /&gt;
&lt;br /&gt;
* With all the recent additions - clipping, masking, and especially blur - Inkscape is now able to produce extremely photorealistic art. In the share/examples folder in Inkscape distribution, you will find two brand new, stunningly realistic images of shiny cars: &amp;lt;b&amp;gt;car.svgz&amp;lt;/b&amp;gt; by Konstantin Rotkevich and &amp;lt;b&amp;gt;gallardo.svgz&amp;lt;/b&amp;gt; by Michael Grosberg.&lt;br /&gt;
&lt;br /&gt;
* Inkscape 0.45 does not yet have gradient meshes. But with the addition of Gaussian Blur, this feature suddenly got within reach. A new example file, &amp;lt;b&amp;gt;gradient-mesh-experimental.svgz&amp;lt;/b&amp;gt;, explains the approach Inkscape will likely take to implement this feature in a fully SVG-compatible way.&lt;br /&gt;
&lt;br /&gt;
* Although Inkscape does not support animation yet, you can add any animation scripts and attributes to your SVG file manually in a text editor - and the file will still be editable in Inkscape. Tavmjong Bah used this technique to create  &amp;lt;b&amp;gt;animated-clock.svg&amp;lt;/b&amp;gt; which, when loaded in an SVG viewer supporting animation (such as Firefox, Opera, or Batik), demonstrates the intricate moving clockwork of a watch - and shows real time to boot! If loaded in Inkscape, the image is static, but instead you can freely edit any of the objects.&lt;br /&gt;
&lt;br /&gt;
= Translations, tutorials, templates =&lt;br /&gt;
&lt;br /&gt;
* Remarkable improvements are in the '''Danish''', '''Finnish''', '''Nepalese''' and the '''Vietnamese''' translations of the user interface. They all jumped from 0 to over 90 percent in a very short timespan.&lt;br /&gt;
&lt;br /&gt;
* All people which are familiar with '''pig latin''' are now able to use Inkscape's user interface in that language. Isthay isway oughtbray otay usway ybay away ewnay anslatortray.&lt;br /&gt;
&lt;br /&gt;
* Updated '''British English''', '''Catalan''', '''Czech''', '''Bulgarian''', '''French''', '''Danish''', '''Finnish''', '''German''', '''Brazilian Portuguese''' and '''Thai''', '''Vietnamese''' and '''Dzongkha''' translations.&lt;br /&gt;
&lt;br /&gt;
* A new Esperanto translation added including default document template.&lt;br /&gt;
&lt;br /&gt;
* Default Lithuanian template was not installed before, which is now fixed.&lt;br /&gt;
&lt;br /&gt;
* New tutorial &amp;quot;Easter Eggs&amp;quot; by Steve Karg.&lt;br /&gt;
&lt;br /&gt;
* Added Catalan default template and elements tutorial.&lt;br /&gt;
&lt;br /&gt;
* Russian header and footer templates for tutorials are added.&lt;br /&gt;
&lt;br /&gt;
* Several tutorial translations were updated, namely '''Catalan''', '''Brazilian Portuguese''', '''Russian''', '''German''', '''Danish''' and '''French'''.&lt;br /&gt;
&lt;br /&gt;
* There are also new Russian and Japanese translations of Windows installer strings.&lt;br /&gt;
&lt;br /&gt;
= Dependency changes =&lt;br /&gt;
&lt;br /&gt;
* We have changed the '''GTK+''' requirement for compilation to version 2.8. However, it is highly recommended to use at least the version '''2.10.7''' because previous versions contain at least one crash bug which may cause Inkscape to crash after typing in a value into a spinbutton.&lt;br /&gt;
&lt;br /&gt;
= Notable bugfixes =&lt;br /&gt;
&lt;br /&gt;
* When deleting a node, neighboring smooth nodes are converted to cusp.&lt;br /&gt;
&lt;br /&gt;
* Releasing the mouse button while dragging nodes using a tablet will now always release the nodes.  Before this, a race condition could occur where dragging could continue after the mouse button was released.&lt;br /&gt;
&lt;br /&gt;
* An object's mask and clipping path are now preserved after Simplify, Object/Stroke to path, or boolean operations.&lt;br /&gt;
&lt;br /&gt;
* Ungrouping a group containing clipped/masked objects might sometime break the clip/mask (move it away); this is fixed.&lt;br /&gt;
&lt;br /&gt;
* Transforming an object and its clone no longer behaves unexpectedly when they are both within a transformed group. &lt;br /&gt;
&lt;br /&gt;
* User-supplied templates in ~/.inkscape/templates can now be SVGZ files in addition to SVG.&lt;br /&gt;
&lt;br /&gt;
* Previously, Inkscape didn't check if there's enough free memory for its pixel buffers and could crash without warning due to insufficient memory e.g. upon zooming in. This problem became much worse after implementing Gaussian blur, because rendering blurred objects at high zooms may require a pixel buffer much bigger than the visible canvas. Now this situation is handled more gracefully: if a display operation requires more memory than available, or more than 100Mb (which corresponds to a 5000x5000 pixel buffer), it is skipped. This may result in blurred objects &amp;quot;disappearing&amp;quot; at high zooms. This is purely a display issue, however, and it never corrupts data; just zoom out (or reduce blur radius) and the disappeared object will show up OK.&lt;br /&gt;
&lt;br /&gt;
* When resizing objects, scaling numbers in the statusbar are no longer overwritten by other text when pressing the modifier keys (Alt, Shift, Ctrl).&lt;br /&gt;
&lt;br /&gt;
* To work around problems some users had with pressure-sensitive tablets ([http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1281512&amp;amp;group_id=93438&amp;amp;atid=604306 bug 1281512]), the pressure sensitivity can be disabled from the Misc tab of Inkscape Preferences dialog. After that, the tablet can still be used as a regular mouse. &lt;br /&gt;
&lt;br /&gt;
* The layer widget in the statusbar used to lose its current layer after an effect run; this is fixed.&lt;br /&gt;
&lt;br /&gt;
* When using different display resolutions or a dual screen setup, dialogs could be displayed off-screen; this is fixed: now Inkscape checks whether the saved position of the dialog is offscreen, if so it will move the dialog to the center of the screen. Note that this not solve all problems. If the dialog is still not visible, go to the [http://sourceforge.net/tracker/?func=detail&amp;amp;atid=604306&amp;amp;aid=1250236&amp;amp;group_id=93438 bug 1250236] where a procedure is given to make the dialog visible (by editing preferences.xml).&lt;br /&gt;
&lt;br /&gt;
* Grid and guidelines no longer vanish when changing their color.&lt;br /&gt;
&lt;br /&gt;
* Group transformation is now correctly re-applied when ungrouping and then undoing the ungroup operation.&lt;br /&gt;
&lt;br /&gt;
* Text dialog no longer discards the style of the selected text.&lt;br /&gt;
&lt;br /&gt;
* Inkscape no longer crashes when you try to unflow an empty flowed text.&lt;br /&gt;
&lt;br /&gt;
* Thanks to patches submitted by users of our community, Inkscape can now be built on SGI IRIX 6.5.28, gcc 3.4.0 systems and on Tru64 systems.&lt;br /&gt;
&lt;br /&gt;
= Known problems =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problem with &amp;quot;Dialogs on Top&amp;quot; on Windows ====&lt;br /&gt;
&lt;br /&gt;
* Although the &amp;quot;Dialogs on Top&amp;quot; option is now available on Windows (File &amp;gt; Inkscape Preferences &amp;gt; Windows), it does not work exactly as it should (yet!). When the document window is minimized, the dialogs remain visible, i.e. are not minimized together with the document window. Because of this, it is not possible to get the document window back by clicking its taskbar button. A workaround to this problem is to '''right-click the Inkscape taskbar button and select &amp;quot;Restore&amp;quot;.''' We expect that future releases of GTK will solve this problem.&lt;br /&gt;
&lt;br /&gt;
==== Spinbuttons may crash if you have GTK+ older than 2.10.7 ====&lt;br /&gt;
&lt;br /&gt;
* You may experience crashes after typing in a value into a spinbutton if you have a version of GTK+ 2.10.6 or older. Upgrade your GTK+ to fix this. (This does not affect the Windows package as it comes with GTK+ 2.10.9.)&lt;br /&gt;
&lt;br /&gt;
==== Numerical Python required for Perspective effect ====&lt;br /&gt;
&lt;br /&gt;
* This effect will not work until you install a python module called '''numpy''' (Numerical Python). It can be downloaded at [http://numpy.scipy.org/ numpy.scipy.org]. The Windows package already contains this module.&lt;br /&gt;
&lt;br /&gt;
==== Do not use a clone of an object as its clipping path/mask ====&lt;br /&gt;
&lt;br /&gt;
* In this version, you cannot use an object's clone as its clipping path or mask. Either unlink the clone first, or clip one clone of a source object (not the source itself) by another clone of the same. Properly fixing this bug requires some deep changes in the code and therefore was postponed until after 0.45 so as not to delay the release.&lt;br /&gt;
&lt;br /&gt;
==== Non-Unicode symbol fonts on Windows don't work ====&lt;br /&gt;
&lt;br /&gt;
* On Windows, symbol fonts without a Unicode map do not work. This is a limitation of the Pango library that we use.&lt;br /&gt;
&lt;br /&gt;
==== Problems with some Debian libgc-6.7 packages ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape will hang or crash when linked with the first Debian packaged version of the Boehm garbage collection library. This problem was fixed in version 1:6.7-2  of the package.  If you have libgc 6.7 on your Debian-based system, make sure that you are using that version of the package or later.&lt;br /&gt;
&lt;br /&gt;
==== Beware of defective themes on Linux ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape and other Gtk programs can crash on any Linux, when the &amp;lt;b&amp;gt;gtk2-engines-smooth / libsmooth&amp;lt;/b&amp;gt; package is installed. We have filed a bug against libsmooth which is now in gtk-engine and part of gnome. Removing the package resolves the problem. Update: this bug appears to be fixed in newer versions of gtk-engines. If you are affected by this problem please update to a newer version of gtk-engines. If problems persist then please inform the gtk-engines maintainers of the problem. &lt;br /&gt;
&lt;br /&gt;
* A similar crash happens if the &amp;lt;b&amp;gt;KDE Baghira&amp;lt;/b&amp;gt; theme or the package &amp;lt;b&amp;gt;gtk_qt_engine&amp;lt;/b&amp;gt; are installed. If you experience Inkscape crashes on KDE, please try to install a different theme from Baghira, or uninstall the gtk_qt_engine package from your system. Both problems also affect older versions of Inkscape.&lt;br /&gt;
&lt;br /&gt;
= Previous releases =&lt;br /&gt;
&lt;br /&gt;
* [[ReleaseNotes044]]&lt;br /&gt;
* [[ReleaseNotes043]]&lt;br /&gt;
* [[ReleaseNotes042]]&lt;br /&gt;
* [[ReleaseNotes041]]&lt;br /&gt;
* [[ReleaseNotes040]]&lt;br /&gt;
* [[ReleaseNotes039]]&lt;br /&gt;
* [[ReleaseNotes038]]&lt;br /&gt;
* [[ReleaseNotes037]]&lt;br /&gt;
* [[ReleaseNotes036]]&lt;br /&gt;
* [[ReleaseNotes035]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=13980</id>
		<title>Release notes/0.45</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=13980"/>
		<updated>2007-03-16T23:29:01Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* Inkscape 0.45.1 changes with respect to 0.45 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Inkscape 0.45.1 changes with respect to 0.45 =&lt;br /&gt;
&lt;br /&gt;
*Patch [ 1667939 ]: fix crash when tile-tracing with too small clones&lt;br /&gt;
*Patch [ 1666532 ]: Broken link in inkview man page&lt;br /&gt;
*Patch [ 1665447 ]: fix for the blur quantization bug 1617082&lt;br /&gt;
*Patch [ 1664849 ]: fix for 1662589: increase blur margins&lt;br /&gt;
*Patch [ 1664004 ]: embedimage.py with fixed search order&lt;br /&gt;
*Patch [ 1662649 ]: markers.svg with reversed order&lt;br /&gt;
*Crudely improve check-markup for &amp;amp;#123; markup, fix translations with bugs in that area (dz and zh_TW).&lt;br /&gt;
*Patch [ 1659404 ]: Set locale directory from environment variable&lt;br /&gt;
*Patch [ 1657072 ]: fix for bug 1654495&lt;br /&gt;
*Patch [ 1654636 ]: defocus dropper checkboxes&lt;br /&gt;
*Updated slovak translation&lt;br /&gt;
*Adding japanese.nsh and russian.nsh into files that should go into the release tarball&lt;br /&gt;
*Correct russian translation&lt;br /&gt;
*Patch [ 1651797 ]: fix for attributes when saving/save-a-copy&lt;br /&gt;
*Patch [ 1651752 ]: fix dropper tool&lt;br /&gt;
*Pattern along path extension fixed on Windows&lt;br /&gt;
*Include libtiff3.dll in the Windows distribution, fixing crash when opening TIFF files&lt;br /&gt;
*Patch [ 1673067 ]: fix blur export on flowtext&lt;br /&gt;
*Patch [ 1678075 ]: fix FontInstance.cpp compile issue&lt;br /&gt;
*Patch [ 1673502 ]: fix broken Envelope (Summers Night) effect&lt;br /&gt;
*Patch [ 1680182 ]: fix pattern inversion on bool op (bug 1659445)&lt;br /&gt;
*Patch [ 1681754 ]: fix crash when editing text with multiple tspans&lt;br /&gt;
*Patch [ 1682425 ]: fix bug 1679477 (crash exporting gradients to ODG)&lt;br /&gt;
&lt;br /&gt;
= Inkscape 0.45: overview =&lt;br /&gt;
&lt;br /&gt;
This release brings the exciting new features developed by the Google Summer of Code 2006 participants, as well as tons of other improvements across the board. Here are the highlights:&lt;br /&gt;
&lt;br /&gt;
* '''Gaussian blur''' is the first SVG filter supported by Inkscape. You can blur any object to any extent - yet it remains vector and fully editable. This gives a huge boost to Inkscape as a creative art tool.&lt;br /&gt;
&lt;br /&gt;
* '''Display speed and interactivity''': not only does Inkscape render faster, but it can now respond to user input before it finished redrawing the screen, which greatly improves the responsiveness (perceived speed or interactivity) of the program.&lt;br /&gt;
&lt;br /&gt;
* '''History dialog''' makes it easy to to review your editing session and jump to any step of it, undoing and redoing multiple actions with one click.&lt;br /&gt;
&lt;br /&gt;
* Several important tool features are added, notably the new selection mode in '''Node tool''' and the adjustable rounded caps in '''Calligraphic pen'''.&lt;br /&gt;
&lt;br /&gt;
* '''Bitmap tracing''' works better for multi-color traces, sports a redesigned dialog and several new options.&lt;br /&gt;
&lt;br /&gt;
* Many new '''extension effects''' are added, including '''Color effects''' and '''Pattern along path'''. &lt;br /&gt;
&lt;br /&gt;
* The '''Outline mode''' has got many fixes and improvements, including a keyboard shortcut.&lt;br /&gt;
&lt;br /&gt;
* Several new commands in '''Help''' menu open various Inkscape-related pages in your default browser, making Inkscape reference information more accessible as you work. &lt;br /&gt;
&lt;br /&gt;
* Dozens of smaller '''features''' are added throughout the program, and hundreds of '''bugs''' are fixed.&lt;br /&gt;
&lt;br /&gt;
= SVG filters: Gaussian blur =&lt;br /&gt;
&lt;br /&gt;
Thanks to Google's Summer of Code program, Inkscape now has basic support for [http://www.w3.org/TR/SVG11/filters.html SVG filters]. The only filter enabled so far is '''Gaussian blur'''. &lt;br /&gt;
&lt;br /&gt;
With it, you can softly and naturally blur any Inkscape objects: paths, shapes, groups, text, images. Clones inherit blurring from their original, but they can also be blurred independently from the original (you can create blurred clones with Tile Clones, too). Both the fill and stroke of an object are blurred together, creating semitransparent margins that smoothly blend into the background. &lt;br /&gt;
&lt;br /&gt;
Gaussian blur enables a wide range of photorealistic effects: arbitrarily shaped shades and lights, depth of field, drop shadows, glows, etc. Also, blurred objects can be used as masks for other objects to achieve the &amp;quot;feathered mask&amp;quot; effect.&lt;br /&gt;
&lt;br /&gt;
* To blur selected objects, open the Fill and Stroke dialog (Ctrl+Shift+F) and use the '''Blur''' slider. The blur value is a percentage, with 100% corresponding to a blurring radius (standard deviation of Gaussian function) of 1/8 of the object's bounding box' perimeter (that is, for a square, a blur of 100% will have the radius equal to half a side, which turns any shape into an amorphous cloud). &lt;br /&gt;
&lt;br /&gt;
* The '''Tile Clones''' dialog also supports blurring. On the '''Blur &amp;amp; opacity''' tab, you can set the blur percentage per row or per column of your tiling, as well as randomize blurring and make it alternate (all the same options as for Opacity).&lt;br /&gt;
&lt;br /&gt;
* The quality of on-screen blur display is controlled by the '''Blur quality''' option on the new '''Filters''' tab of Inkscape Preferences (Ctrl+Shift+P). The available options range from best quality/slowest display to worst quality/fastest display, the default being in the middle of the range. Any setting except the &amp;quot;best quality&amp;quot; may introduce some rendering artifacts, especially when blurring thin strokes; on the other hand, the &amp;quot;best quality&amp;quot; setting may make Inkscape extremely slow at high zooms. These settings only affect the screen display of blurred objects; bitmap export always uses the best quality (and may therefore become quite slow for images with a lot of blur).&lt;br /&gt;
&lt;br /&gt;
Here are a few tips on using blur:&lt;br /&gt;
&lt;br /&gt;
* '''Masks and clipping''' are applied ''after'' blur. That is, if you clip an object and then blur it (or blur it first and then clip - it makes no difference), the clipped edges will remain crisp. Often, this is what you want. If, however, you want to blur the clipped/masked edges too (possibly with a different radius), you can use grouping: group the clipped object with some other object (which you can then delete from the group) and blur the group.&lt;br /&gt;
&lt;br /&gt;
* A simple '''drop shadow''' is now very easy to do: just copy the object, paint the copy black, blur it, shift away a bit and lower it to the bottom. However, such a shadow does not update when you edit the foreground object. If your object is already black (or, more generally, if you want the shadow to be the same color as the object), you can clone instead of copy to make the shadow auto-updating. But what if your foreground object is not black but you need an auto-updating black shadow? Here's a recipe: unset the object's fill (it becomes black); create ''two'' clones of it; put one clone on top and paint any color you want; put the other clone at bottom, blur it and shift sideways. Now you can edit the unset-fill original (use Alt+click to select it) and everything will update. &lt;br /&gt;
&lt;br /&gt;
* If an object has a fill that you don't want to blur (e.g. pattern, or if it's a bitmap), but you just want to '''feather the edges''', use a blurred transparency mask. For this, copy the object; paint it white; blur it as needed; scale the blurred copy down so its blur margins are entirely within the original object; select both the original and the blurred mask; do Object &amp;gt; Mask &amp;gt; Set.&lt;br /&gt;
&lt;br /&gt;
* '''Transforming''' a blurred object '''transforms its blur''', too. This applies to a non-uniform scaling as well, so by squeezing a blurred object you make its blur squeezed as well. So, the easiest way to blur a path horizontally more than vertically is this: stretch it upwards without blur, then apply blur and squeeze it back into the original shape. (This only works if the stretched path does not already have a Transform attribute.)&lt;br /&gt;
&lt;br /&gt;
* You can combine '''blurring with gradients'''. For example, an ellipse with elliptic opacity gradient will look much softer and more natural when blurred. An object with a horizontal linear opacity gradient, when blurred, will look as if it's more blurred on its transparent side than on its opaque side.&lt;br /&gt;
&lt;br /&gt;
* A '''clone of a blurred object''' inherits the blur of the original. Therefore, such a clone can be blurred ''more'', but you can't &amp;quot;unblur&amp;quot; it to make the clone sharper than its original (unless, of course, you unlink it). The Fill and Stroke dialog shows you the amount of the blur applied to this particular object; however, if the object is a clone of an already blurred original, the dialog does not reflect that.&lt;br /&gt;
&lt;br /&gt;
* Note that '''Firefox 2.0''' does not support SVG filters, so your files will be displayed in Firefox 2.0 without blur. However, filter support has been added  in the current development version and will be included in Firefox 3.0. The Opera web browser, as well as librsvg (used by Wikipedia) and Batik, support filters correctly in their current versions.&lt;br /&gt;
&lt;br /&gt;
= Undo history =&lt;br /&gt;
&lt;br /&gt;
* Inkscape now features a &amp;lt;b&amp;gt;History Dialog&amp;lt;/b&amp;gt; accessible via &amp;lt;b&amp;gt;Ctrl+Shift+H&amp;lt;/b&amp;gt; or Edit &amp;amp;gt; Undo History. All changes made to the document since it was opened are recorded here.&lt;br /&gt;
&lt;br /&gt;
:* In the dialog, changes are listed from the '''oldest (top)''' to the '''newest (bottom)'''. &lt;br /&gt;
&lt;br /&gt;
:* The type of each change is indicated by an '''icon''' and a short '''description'''.&lt;br /&gt;
&lt;br /&gt;
:* For readability, consecutive changes of the same type are placed in a '''collapsible branch''' showing a triangle marker and the number of the hidden actions in the branch.&lt;br /&gt;
&lt;br /&gt;
:* By clicking on an event in the list, you can easily '''move through the undo history''', i.e. undo or redo any number of actions with one click.&lt;br /&gt;
&lt;br /&gt;
* The Undo and Redo commands in the Edit menu display the descriptions of the commands to be undone and redone, correspondingly. (These are the same descriptions that you see in the History dialog.)&lt;br /&gt;
&lt;br /&gt;
= Rendering improvements =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Interruptible display&amp;lt;/b&amp;gt;: Previously, Inkscape could not do anything until it finishes the current screen redraw. Now the redraw is made interruptible, so that Inkscape responds to mouse and keyboard input and can abort the current redraw and start over if you do some screen-changing operation. As a result, Inkscape now feels '''much snappier and more interactive'''. This interruptibility is fine-tuned for some continuous-drag operations (such as node dragging) so that a balance is achieved between responsiveness and completeness of display.&lt;br /&gt;
&lt;br /&gt;
* Screen render is faster by '''2-3%''' overall:&lt;br /&gt;
&lt;br /&gt;
:* Complex drawings with '''transparency''' are faster by up to '''5%'''.&lt;br /&gt;
&lt;br /&gt;
:* '''Radial gradients''' are rendered faster by at least '''10%'''.&lt;br /&gt;
&lt;br /&gt;
* Rendering (compositing) quality has been improved. This is most visible with (partially) transparent gradients: '''banding''' is a lot less pronounced now. Speed has also been improved in some cases.&lt;br /&gt;
&lt;br /&gt;
* Display is more responsive when working at high zoom levels when using a tablet.&lt;br /&gt;
&lt;br /&gt;
= Tools = &lt;br /&gt;
&lt;br /&gt;
== Node tool ==&lt;br /&gt;
&lt;br /&gt;
* You can &amp;lt;b&amp;gt;grow or shrink node selection&amp;lt;/b&amp;gt; by hovering the mouse pointer over a node and using &amp;lt;b&amp;gt;mousewheel&amp;lt;/b&amp;gt; (up = grow, down = shrink) or the keys &amp;lt;b&amp;gt;PageUp&amp;lt;/b&amp;gt; (grow) and &amp;lt;b&amp;gt;PageDown&amp;lt;/b&amp;gt; (shrink). ''Growing'' adds the closest unselected node to the selection; shrinking deselects the farthest selected node. There are two modes that differ by how the closest/farthest nodes are chosen:&lt;br /&gt;
&lt;br /&gt;
:* &amp;lt;b&amp;gt;Spatial selection&amp;lt;/b&amp;gt; (mousewheel, PageUp/PageDown): distances to nodes are measured directly, regardless of which subpath a node belongs to. &lt;br /&gt;
&lt;br /&gt;
:* &amp;lt;b&amp;gt;Linear selection&amp;lt;/b&amp;gt; (Ctrl+mousewheel, Ctrl+PageUp/Ctrl+PageDown): node distances are measured ''along the path'', and only the nodes belonging to the same subpath as the hovered node are considered (i.e. other subpaths are never selected).&lt;br /&gt;
&lt;br /&gt;
:This technique is convenient for quickly selecting an area in a complex path starting from a center - for example, for node sculpting.&lt;br /&gt;
&lt;br /&gt;
== Dropper ==&lt;br /&gt;
&lt;br /&gt;
* Instead of the confusing toggle button, now the Controls bar for the Dropper tool has two checkboxes, '''Pick alpha''' and '''Set alpha''', which work as follows. Suppose you have an object selected and, using Dropper, click on an object which has red (#FF0000) fill and 0.5 opacity (half-transparent).&lt;br /&gt;
&lt;br /&gt;
:* If the &amp;quot;Pick alpha&amp;quot; checkbox is off, the selected object will get the fill color #800000 (i.e. faded-out red) and fill opacity will be at 1.0 (opaque). &lt;br /&gt;
&lt;br /&gt;
:* If the &amp;quot;Pick alpha&amp;quot; checkbox is on but &amp;quot;Set alpha&amp;quot; is off, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 1.0. &lt;br /&gt;
&lt;br /&gt;
:* If both &amp;quot;Pick alpha&amp;quot; and &amp;quot;Set alpha&amp;quot; are on, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 0.5 (half-transparent). &lt;br /&gt;
&lt;br /&gt;
:If you Shift+click instead of click, the same changes will be made to stroke color and stroke opacity, correspondingly. Note that in no situation can Dropper change the ''master opacity'' of the selected object(s) (only the fill/stroke opacity), although it can pick it just as it does any other kind of opacity.&lt;br /&gt;
&lt;br /&gt;
== Calligraphy ==&lt;br /&gt;
&lt;br /&gt;
* A new numeric parameter, &amp;lt;b&amp;gt;Caps&amp;lt;/b&amp;gt;, controls the amount of protruding at the ends of calligraphic strokes. This parameter can range from 0 (flat caps, default behavior in previous versions) through 1 (approximately half-circle caps) and up to 5 (long elliptic caps). Rounded caps much improve the look of low-fixation strokes, simulating a rounded pen.  &lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Drag&amp;quot; parameter has been renamed to &amp;lt;b&amp;gt;Wiggle&amp;lt;/b&amp;gt; with a value inversion (i.e. low drag corresponds to high wiggle, and vice versa). Increase this parameter (default is 0) to make the pen waver and wiggle in curly patterns.&lt;br /&gt;
&lt;br /&gt;
* As a first step towards a redesign of the tools' controls, the '''Controls bar of the Calligraphy pen''' has been upgraded. Now it no longer prevents the Inkscape window from resizing narrower than the bar. The items on the far right end of the bar which didn't fit in a narrow window are still accessible through an '''expansion menu''' which allows you to toggle switches, select commands, and set values of numeric fields. Also, each editable numeric value field has a new '''right-click menu''' with some common values which often allows you to set a desired value much faster than by scrolling the control or typing the value into it.&lt;br /&gt;
&lt;br /&gt;
* With low or zero Fixation parameter, some users of tablet pens experienced &amp;quot;blobs&amp;quot; (brief reversals of a stroke's right/left edges, causing &amp;quot;holes&amp;quot; and &amp;quot;bubbles&amp;quot; in a calligraphic stroke), especially often at the start of a stroke. Hopefully this problem is now fixed without reducing the responsiveness of the tool.&lt;br /&gt;
&lt;br /&gt;
= Outline mode =&lt;br /&gt;
&lt;br /&gt;
* A new menu command (&amp;lt;b&amp;gt;View &amp;gt; Display Mode &amp;gt; Toggle&amp;lt;/b&amp;gt;) and a new keyboard shortcut (&amp;lt;b&amp;gt;Ctrl+&amp;amp;lt;keypad 5&amp;amp;gt;&amp;lt;/b&amp;gt;) switch the display mode from Normal to Outline and back.&lt;br /&gt;
&lt;br /&gt;
* The window title displays &amp;quot;&amp;lt;b&amp;gt;(outline)&amp;lt;/b&amp;gt;&amp;quot; next to the file name when that editing window is in Outline mode. &lt;br /&gt;
&lt;br /&gt;
* An object with &amp;lt;b&amp;gt;mask and/or clipping path&amp;lt;/b&amp;gt;, when viewed in Outline mode, now displays both the object itself and its clipping path and mask as objects, using different outline colors. By default, &amp;lt;b&amp;gt;clippaths use green&amp;lt;/b&amp;gt; outlines, and &amp;lt;b&amp;gt;masks use blue&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Images&amp;lt;/b&amp;gt; in Outline mode are displayed as &amp;lt;b&amp;gt;red&amp;lt;/b&amp;gt; (by default) frames with two diagonals.&lt;br /&gt;
&lt;br /&gt;
* An object with no fill and no stroke, invisible and not selectable by mouse clicking in normal mode, can now be &amp;lt;b&amp;gt;picked by a mouse click&amp;lt;/b&amp;gt; in the Outline mode using its visible outline.&lt;br /&gt;
&lt;br /&gt;
* The bug whereby stroked shapes didn't change stroke width when switching to Outline mode or back is fixed.&lt;br /&gt;
&lt;br /&gt;
* All outline colors are changeable by editing the &amp;quot;wireframecolors&amp;quot; group inside &amp;quot;options&amp;quot; in the preferences file (~/.inkscape/preferences.xml). The &amp;quot;onlight&amp;quot; and &amp;quot;ondark&amp;quot; attributes set the colors of the regular object outlines on light and dark backgrounds (default black and white correspondingly); the &amp;quot;images&amp;quot;, &amp;quot;clips&amp;quot;, and &amp;quot;masks&amp;quot; attributes set the colors of images, clipping paths, and masks (defaults are red, green, and blue correspondingly). Each attribute is a decimal integer corresponding to the hex RRGGBBAA of the color.  &lt;br /&gt;
&lt;br /&gt;
* To cater for specialized uses, such as preparing input for personal media cutters, Inkscape now has an option to start in the Outline mode upon launch. To enable this, add the following line to your preferences.xml file:&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;group id=&amp;quot;startmode&amp;quot; outline=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:placing it after the &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; opening tag.&lt;br /&gt;
&lt;br /&gt;
= Keyboard profiles =&lt;br /&gt;
&lt;br /&gt;
The previous release allowed sets of keybindings (keymaps) to be created for Inkscape in the style of other applications.  Two more keymaps have been added:  &lt;br /&gt;
&lt;br /&gt;
* '''Adobe Illustrator''' &lt;br /&gt;
* '''Macromedia Freehand'''&lt;br /&gt;
&lt;br /&gt;
Of course not every feature in these other programs has a direct match to features in Inkscape; so, if you can, please '''help us out''' by reporting any problems you may have or improvements you would like to request.&lt;br /&gt;
&lt;br /&gt;
Additionally, a keymap that focuses on tablet-based illustration and drawing work has been added:&lt;br /&gt;
&lt;br /&gt;
* '''right-handed-illustration.xml'''&lt;br /&gt;
&lt;br /&gt;
This keymap places all commonly-used commands under the left hand, so that the user's hands rarely leave the keyboard or the tablet/stylus.&lt;br /&gt;
&lt;br /&gt;
(To enable a profile, copy it into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; in the same directory, overwriting the old file. To restore the default Inkscape set, copy &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
More of Inkscape's keys are implemented as actions and are therefore available for remapping via keyboard profiles. New actions include '''EditSelectNext''' and '''EditSelectPrev''' for selecting next/previous object or node (by default, they are bound to Tab/Shift+Tab; as a result of becoming global actions, these keys now work in all tools and not only in Selector and Node tool as before).&lt;br /&gt;
&lt;br /&gt;
= Extension effects =&lt;br /&gt;
&lt;br /&gt;
Inkscape's extension effects, written in Python using the '''inkex''' utility class, are currently a major growth point of the project. They allow new developers to create functionality very quickly, without having to learn Inkscape's huge C/C++ codebase. However, eventually we plan to move many of these effects into the core of Inkscape, which will make them much faster and more interactive. From this viewpoint, effects can be considered a quick way to prototype and test the algorithms and UI controls of the future Inkscape features. However, this does not prevent effects from being genuinely useful in everyday work, and in this version we have several excellent additions. &lt;br /&gt;
&lt;br /&gt;
== New effects ==&lt;br /&gt;
&lt;br /&gt;
* '''Pattern along path''': A new powerful extension in the &amp;quot;Generate from path&amp;quot; submenu allows you to bend, repeat and/or stretch a pattern object (which can be a path or a group) along a &amp;quot;skeleton&amp;quot; path. This makes it easy to create a variety of patterned and shaped strokes. (This obsoletes the old &amp;quot;Kochify&amp;quot; extension which is removed.)&lt;br /&gt;
&lt;br /&gt;
:Effect's parameters include: &lt;br /&gt;
&lt;br /&gt;
:* ''Copies of the pattern'' selects one of the four modes: '''Single stretched''': one copy of the pattern is placed on the skeleton path and stretched/squeezed to match its length;  '''Repeated stretched''': as many copies as would fit are placed along the skeleton path and stretched to fit exactly; '''Single''' and '''Repeated''': same but without stretching.&lt;br /&gt;
&lt;br /&gt;
:* ''Deformation type'' can be one of: '''Snake''' bends the pattern flatly in the plane of the drawing, the width not depending on direction; '''Ribbon''' bends it as a vertical ribbon or like a calligraphic stroke with maximum fixation, so that width depends on direction (minimum for vertical parts of the stroke, maximum for horizontal).&lt;br /&gt;
&lt;br /&gt;
:* Several parameters allow you to adjust spacing between the copies of the pattern (for Multiple modes) and their offset in two directions (along the skeleton path and perpendicular to it).&lt;br /&gt;
&lt;br /&gt;
:* Normally the effect assumes that the pattern object is horizontal and bends its horizontal axis (at mid-height) along the skeleton path. There's a checkbox that allows you to use a '''vertical pattern''' instead. &lt;br /&gt;
&lt;br /&gt;
:Some examples of using this effect are shown on a screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.45-patternalongpath.png].&lt;br /&gt;
&lt;br /&gt;
* '''Color effects''': A new group of extensions in the '''Color''' submenu of the Effects menu allows you to adjust all colors of a selection at once. These commands affect both fill and stroke colors, including gradients (but not bitmaps). The commands include:&lt;br /&gt;
&lt;br /&gt;
:* a full set of '''HSL adjustments''' (increasing/decreasing hue, saturation, or lightness by 5%), &lt;br /&gt;
&lt;br /&gt;
:* '''Brighter''' and '''Darker''' (adjust brightness up or down by 10%), &lt;br /&gt;
&lt;br /&gt;
:* '''Desaturate''', &lt;br /&gt;
&lt;br /&gt;
:* '''Grayscale''', &lt;br /&gt;
&lt;br /&gt;
:* '''Negative''', &lt;br /&gt;
&lt;br /&gt;
:* commands for removing or swapping the '''Red''', '''Green''', '''Blue''' channels, &lt;br /&gt;
&lt;br /&gt;
:* a '''Custom''' command where you can set your own formulas for modifying the color channels. &lt;br /&gt;
&lt;br /&gt;
:Some examples of using this effect are shown on a screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.45-coloreffects.png].&lt;br /&gt;
&lt;br /&gt;
:Note: undoing color changes on gradients exposes a bug where an object seems to &amp;quot;disappear&amp;quot;; this is only a display issue (caused by the order in which gradients and their users are restored on undo) not causing any loss of information. Also, on large documents and large selections with gradients, Python's XPath code may get quite slow. Despite these shortcomings, we decided to add this extension, because it's genuinely useful functionality which was so far missing in Inkscape.&lt;br /&gt;
&lt;br /&gt;
* Recent fixes in the processing of SVG &amp;lt;defs /&amp;gt; have made it possible to implement the often requested '''Color Markers to Match Stroke''' effect. It is no longer necessary to hand-edit XML to recolor arrowheads; just change the stroke color of your path and call this effect to recolor its markers to match.&lt;br /&gt;
&lt;br /&gt;
* '''Lorem ipsum''' (in &amp;quot;Render&amp;quot; submenu) is a new extension that creates the traditional Latin-like random text for design mock-ups. The number of paragraphs, the number of sentences per paragraph and the possible fluctuation of the number of sentences (for uneven paragraphs) can be adjusted. If no flowed text element is selected, a new one in a new layer is created, matching the size of the canvas.&lt;br /&gt;
&lt;br /&gt;
* '''Fractalize''' (in &amp;quot;Modify Path&amp;quot; submenu) replaces each segment of the selected path by a crooked line, subdivided to the given depth, with randomly displaced nodes. &lt;br /&gt;
&lt;br /&gt;
* '''g2png''': The new group-to-PNG Python extension (g2png) is an easy way to export any group or layer to individual PNG files. It was first created for use in the [http://www.le-radar.com/?mm/inkscape Inkscape User Manual] (also available in SVN in the user_manual module) but is also interesting for many other uses. If e.g. you have to draw a set of icons, you can draw them in the same document, thus making copying, duplicating, cloning etc. easier. Then just create a group  for each icon, and with the extension, each group ends up in its own PNG file.&lt;br /&gt;
&lt;br /&gt;
== Improved effects ==&lt;br /&gt;
&lt;br /&gt;
* The '''Function Plotter''' has been extended, providing greater flexibility in x- and y-range definition. &lt;br /&gt;
&lt;br /&gt;
* The '''Measure Path''' extension is improved with several new parameters added (units, scale, precision, distance from path).&lt;br /&gt;
&lt;br /&gt;
* The '''Extract One Image''' extension is fixed to automatically append filename extension to the created bitmap file.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Blur Edge&amp;quot; extension is renamed into '''Inset/Outset Halo''' to avoid confusion with the real Gaussian blur that we now support, as well as to better describe what this extension actually does: From the selected path, it creates a group of inset and outset paths that form a stepped &amp;quot;halo&amp;quot; around the object. &lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
* '''3 new parameter types''' have been added to the extension effect UI: '''tabs''', '''enumerations''' and '''optiongroups''' (radio buttons). Examples are available of how to use these parameters in INX files: the new Function Plotter uses tabs; enumerations are used by the Pattern along path extension; and a small developer example is given to illustrate the use of optiongroups (identical to enumerations).&lt;br /&gt;
&lt;br /&gt;
* In an extension's INX file, you can specify &amp;lt;code&amp;gt;&amp;amp;lt;effects-menu hidden=&amp;quot;yes&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt; to hide that extension from the Effects menu. However, such a &amp;quot;hidden&amp;quot; extension can still be assigned a keyboard shortcut (by using its &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; as an &amp;quot;action&amp;quot; in your &amp;lt;code&amp;gt;~/.inkscape/keys/default.xml&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* In an extension's INX file, you can add &amp;lt;code&amp;gt;needs-document=&amp;quot;no&amp;quot;&amp;lt;/code&amp;gt; attribute to the &amp;lt;code&amp;gt;&amp;amp;lt;effect&amp;amp;gt;&amp;lt;/code&amp;gt; element. This indicates that the extension does not process the current SVG document, and Inkscape will not bother saving and restoring the document from a temporary file which allows this extension to run faster and smoother. (This is used for the new open-in-default-browser Help menu commands which are technically implemented as extensions.)&lt;br /&gt;
&lt;br /&gt;
= Export formats =&lt;br /&gt;
&lt;br /&gt;
== AI import/export ==&lt;br /&gt;
&lt;br /&gt;
* We only support AI import and export for Adobe Illustrator 8.0 and older.  This has been clarified in the Open and Save As lists.&lt;br /&gt;
&lt;br /&gt;
== PDF export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape's PDF exporter has been improved:&lt;br /&gt;
&lt;br /&gt;
* '''New features:''' bitmap images can be embedded; PDF files can be exported from command line using the &amp;lt;code&amp;gt;--export-pdf&amp;lt;/code&amp;gt; parameter. &lt;br /&gt;
&lt;br /&gt;
* '''Changed behavior:''' the pointless text to path question is gone. &lt;br /&gt;
&lt;br /&gt;
* '''Fixed bugs:''' save failure is now detected, miter limits are now &amp;gt;= 1, PDFs with transparent gradient are now embeddable, eccentric elliptic gradients fixed, dash style inheritance fixed, transparency inheritance fixed.&lt;br /&gt;
&lt;br /&gt;
== PS/EPS export ==&lt;br /&gt;
&lt;br /&gt;
There's a new option to &amp;lt;b&amp;gt;embed the fonts&amp;lt;/b&amp;gt; used in the document in the PS or EPS exported file. As of now, this works for &amp;lt;b&amp;gt;Type 1 fonts only&amp;lt;/b&amp;gt;, not TrueType. The option is available when performing the export from the GUI as well as from the command line via the &amp;lt;code&amp;gt;--export-embed-fonts&amp;lt;/code&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
== EMF export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape has a limited support for exporting &amp;lt;b&amp;gt;EMF&amp;lt;/b&amp;gt; (Enhanced Meta File) format. This works &amp;lt;b&amp;gt;only on Windows&amp;lt;/b&amp;gt;, and only exports strokes and fills with constant colors. No text, no images, no gradients, no transparency.&lt;br /&gt;
&lt;br /&gt;
= SVG output =&lt;br /&gt;
&lt;br /&gt;
For specialized uses, several aspects of Inkscape's SVG output can now be customized via editing the preferences.xml file (there's no UI for these options). A &amp;lt;group id=&amp;quot;&amp;lt;b&amp;gt;svgoutput&amp;lt;/b&amp;gt;&amp;quot;&amp;gt; inside &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; can have the following attributes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;usenamedcolors&amp;lt;/b&amp;gt; (default is 0). If nonzero, Inkscape uses symbolic color names (such as &amp;quot;white&amp;quot; or &amp;quot;lime&amp;quot;) and three-digit color designations (such as $dfe) where appropriate; otherwise, it always uses six-digit colors (such as $d0f0e0). Note that in 0.44, the default was to use named colors, which created problems for some extension effects.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;numericprecision&amp;lt;/b&amp;gt; (default is 8). This is the number of significant digits written for each number into SVG. You can lower this number to get slightly more compact SVG at the expense of precision.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;minimumexponent&amp;lt;/b&amp;gt; (default is -8). In transform= attributes, any number whose absolute value is less than 10 to the power of minimumexponent (i.e. less than 10&amp;lt;sup&amp;gt;-8&amp;lt;/sup&amp;gt; by default) is written as 0.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;indent&amp;lt;/b&amp;gt; (default is 2) controls the number of spaces that each level of nesting in SVG is shifted. Set this to 0 to disable indentation.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;inlineattrs&amp;lt;/b&amp;gt; (default is 0). If nonzero, attributes are placed on the same line as their tags; otherwise they are separated by newlines.&lt;br /&gt;
&lt;br /&gt;
= Bitmap tracing =&lt;br /&gt;
&lt;br /&gt;
* A '''new color quantization algorithm''' for multiscan traces works faster (especially for large numbers of colors) and gives more adequate results with less colors used. This improves tracing results both for full-color photographs and for limited-color drawings. &lt;br /&gt;
&lt;br /&gt;
* The Trace Bitmap dialog now provides access to three more tracing parameters:&lt;br /&gt;
&lt;br /&gt;
:* '''Suppress speckles''': If set, spots or speckles larger than the given size (in pixels) are suppressed in the trace.&lt;br /&gt;
&lt;br /&gt;
:* '''Smooth corners''': This parameter controls how much smoothing is applied to corners in the traced path.&lt;br /&gt;
&lt;br /&gt;
:* '''Optimize paths''': If set, trace paths are optimized by joining adjacent Bezier segments with the given tolerance.&lt;br /&gt;
&lt;br /&gt;
* All controls in the Trace Bitmap dialog are reorganized to be easier to find. The dialog is redesigned to use two main tabs: '''Mode''' (where you select the tracing mode, such as brightness cutoff or color multiscan) and '''Options''' (where you set various tracing options, such as corner smoothing). The preview is placed horizontally to the right of the tabs. Most labels and tooltips are rewritten for clarity. The trace preview image is made twice larger.&lt;br /&gt;
&lt;br /&gt;
= Even more improvements =&lt;br /&gt;
&lt;br /&gt;
* The '''opacity''' of objects is now displayed as percentage, '''from 0 to 100''', both in the Fill &amp;amp; Stroke dialog (with one fractional digit) and in the statusbar style indicator (with no fractional digits), instead of from 0 to 1.0 as before. This makes opacity values easier to read, type, and say.&lt;br /&gt;
&lt;br /&gt;
* A '''Save a copy''' command has been added to the file menu, similar to the 'Save a copy' functionality of e.g. Adobe Illustrator. With this command, you can save your document under a new filename, but Inkscape will then &amp;quot;forget&amp;quot; it has done this: later saves will be to the old filename. The default shortcut assigned to this function is '''Shift+Ctrl+Alt+S'''.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Text and flowed text objects&amp;lt;/b&amp;gt; behave more consistently. Now you can put a flowed text on path or (re)flow it into a shape just as you would do with a regular (unflowed) text. Previously, the need to convert a flowed text to text before these operations was a stumble for many users.&lt;br /&gt;
&lt;br /&gt;
* Several commands were added to the '''Help menu''', providing the long-missing access to basic information about Inkscape and SVG right from the program: [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/index.php Inkscape manual], [http://inkscape.org/doc/inkscape-man.html Command line options], [http://wiki.inkscape.org/wiki/index.php/FAQ FAQ], Release notes, [http://inkscape.org/report_bugs.php Bug report page], and the [http://www.w3.org/TR/SVG11/ SVG 1.1 specification]. All these commands open the corresponding web pages in the user's default web browser. &lt;br /&gt;
&lt;br /&gt;
* Exported PNG images have the correct '''resolution''' set in the header.&lt;br /&gt;
&lt;br /&gt;
* The Path -&amp;gt; '''Union''' (Ctrl++) operation now functions when only a '''single object''' is selected. Use this to '''remove self-intersections''' in path objects.&lt;br /&gt;
&lt;br /&gt;
* We removed the &amp;quot;hacked&amp;quot; '''filename entry field''' that we had added to the Open and Save dialogs because starting from version 2.10, GTK+ has finally restored this field in their '''standard file dialog'''. The standard field at the top of the dialog supports type-ahead find and performs the default dialog action (open or save) by pressing Enter, which means you can now do a quick '''Ctrl+O, Ctrl+V, Enter''' sequence to open the file whose path is in your clipboard (this closes a long-standing usability bug). Those who use older versions of GTK are advised either to upgrade to 2.10 or use Ctrl+L to open a pop-up filename box. (Our Windows builds are shipped with GTK+ 2.10.)&lt;br /&gt;
&lt;br /&gt;
* The '''Create Bitmap''' function (Alt+B in the default keymap) is made more useful. Unless you have specific resolution or minimum size set for this command in preferences.xml (&amp;lt;code&amp;gt;&amp;amp;lt;group id=&amp;quot;createbitmap&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt;), it will take the '''resolution hint''' from the object whose bitmap copy you are creating (in other words, it will use the resolution that you specified for that object when exporting it via the Export Bitmap dialog), or the default '''90 dpi''' if that object was not yet exported. Also, a 90 dpi bitmap (with its pixels exactly 1 px in size) will be '''snapped''' to the pixel grid. This makes it easy to use Create Bitmap for quick '''rasterization preview''' of an object or document. (Note: if you have used a previous version of Inkscape, your preferences.xml may contain &amp;lt;code&amp;gt;minsize=&amp;quot;250&amp;quot;&amp;lt;/code&amp;gt;; delete this for objects' resolution hints to work.)&lt;br /&gt;
&lt;br /&gt;
* Using extended input (i.e. tablet pressure and tilt) can now be disabled via Preferences (Misc tab). This is intended to be a last-resort option for those platform/hardware combinations that are not properly supported by GTK. With extended input disabled, you can still use your tablet as a mouse. &lt;br /&gt;
&lt;br /&gt;
* Simplify Path now has two modes when working with a group of paths:  the default mode, which treats all of the paths as one large object to simplify, or the new mode, which acts the same as using Simplify on each path in a group separately.  In preferences.xml, set '''options.simplifyindividualpaths''' to 1 to get the new mode.&lt;br /&gt;
&lt;br /&gt;
* For long Simplify operations (more than 20 paths at a time), Inkscape provides user feedback via the status bar as to how many paths have been simplified.  This change also prevents Inkscape from appearing to have locked up during the operation.&lt;br /&gt;
&lt;br /&gt;
* New '''templates''' added for '''video formats''' (PAL, NTSC and HDTV 1080) as well as DVD cover templates that were not installed in the previous version. This will help video and DVD authoring with Inkscape. The business card 85&amp;amp;times;54 template is now installed as well.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Other&amp;quot; license type was added to the metadata/license dialog so that people know that they are entering a URI to an &amp;quot;other&amp;quot; license.&lt;br /&gt;
&lt;br /&gt;
= Examples = &lt;br /&gt;
&lt;br /&gt;
* With all the recent additions - clipping, masking, and especially blur - Inkscape is now able to produce extremely photorealistic art. In the share/examples folder in Inkscape distribution, you will find two brand new, stunningly realistic images of shiny cars: &amp;lt;b&amp;gt;car.svgz&amp;lt;/b&amp;gt; by Konstantin Rotkevich and &amp;lt;b&amp;gt;gallardo.svgz&amp;lt;/b&amp;gt; by Michael Grosberg.&lt;br /&gt;
&lt;br /&gt;
* Inkscape 0.45 does not yet have gradient meshes. But with the addition of Gaussian Blur, this feature suddenly got within reach. A new example file, &amp;lt;b&amp;gt;gradient-mesh-experimental.svgz&amp;lt;/b&amp;gt;, explains the approach Inkscape will likely take to implement this feature in a fully SVG-compatible way.&lt;br /&gt;
&lt;br /&gt;
* Although Inkscape does not support animation yet, you can add any animation scripts and attributes to your SVG file manually in a text editor - and the file will still be editable in Inkscape. Tavmjong Bah used this technique to create  &amp;lt;b&amp;gt;animated-clock.svg&amp;lt;/b&amp;gt; which, when loaded in an SVG viewer supporting animation (such as Firefox, Opera, or Batik), demonstrates the intricate moving clockwork of a watch - and shows real time to boot! If loaded in Inkscape, the image is static, but instead you can freely edit any of the objects.&lt;br /&gt;
&lt;br /&gt;
= Translations, tutorials, templates =&lt;br /&gt;
&lt;br /&gt;
* Remarkable improvements are in the '''Danish''', '''Finnish''', '''Nepalese''' and the '''Vietnamese''' translations of the user interface. They all jumped from 0 to over 90 percent in a very short timespan.&lt;br /&gt;
&lt;br /&gt;
* All people which are familiar with '''pig latin''' are now able to use Inkscape's user interface in that language. Isthay isway oughtbray otay usway ybay away ewnay anslatortray.&lt;br /&gt;
&lt;br /&gt;
* Updated '''British English''', '''Catalan''', '''Czech''', '''Bulgarian''', '''French''', '''Danish''', '''Finnish''', '''German''', '''Brazilian Portuguese''' and '''Thai''', '''Vietnamese''' and '''Dzongkha''' translations.&lt;br /&gt;
&lt;br /&gt;
* A new Esperanto translation added including default document template.&lt;br /&gt;
&lt;br /&gt;
* Default Lithuanian template was not installed before, which is now fixed.&lt;br /&gt;
&lt;br /&gt;
* New tutorial &amp;quot;Easter Eggs&amp;quot; by Steve Karg.&lt;br /&gt;
&lt;br /&gt;
* Added Catalan default template and elements tutorial.&lt;br /&gt;
&lt;br /&gt;
* Russian header and footer templates for tutorials are added.&lt;br /&gt;
&lt;br /&gt;
* Several tutorial translations were updated, namely '''Catalan''', '''Brazilian Portuguese''', '''Russian''', '''German''', '''Danish''' and '''French'''.&lt;br /&gt;
&lt;br /&gt;
* There are also new Russian and Japanese translations of Windows installer strings.&lt;br /&gt;
&lt;br /&gt;
= Dependency changes =&lt;br /&gt;
&lt;br /&gt;
* We have changed the '''GTK+''' requirement for compilation to version 2.8. However, it is highly recommended to use at least the version '''2.10.7''' because previous versions contain at least one crash bug which may cause Inkscape to crash after typing in a value into a spinbutton.&lt;br /&gt;
&lt;br /&gt;
= Notable bugfixes =&lt;br /&gt;
&lt;br /&gt;
* When deleting a node, neighboring smooth nodes are converted to cusp.&lt;br /&gt;
&lt;br /&gt;
* Releasing the mouse button while dragging nodes using a tablet will now always release the nodes.  Before this, a race condition could occur where dragging could continue after the mouse button was released.&lt;br /&gt;
&lt;br /&gt;
* An object's mask and clipping path are now preserved after Simplify, Object/Stroke to path, or boolean operations.&lt;br /&gt;
&lt;br /&gt;
* Ungrouping a group containing clipped/masked objects might sometime break the clip/mask (move it away); this is fixed.&lt;br /&gt;
&lt;br /&gt;
* Transforming an object and its clone no longer behaves unexpectedly when they are both within a transformed group. &lt;br /&gt;
&lt;br /&gt;
* User-supplied templates in ~/.inkscape/templates can now be SVGZ files in addition to SVG.&lt;br /&gt;
&lt;br /&gt;
* Previously, Inkscape didn't check if there's enough free memory for its pixel buffers and could crash without warning due to insufficient memory e.g. upon zooming in. This problem became much worse after implementing Gaussian blur, because rendering blurred objects at high zooms may require a pixel buffer much bigger than the visible canvas. Now this situation is handled more gracefully: if a display operation requires more memory than available, or more than 100Mb (which corresponds to a 5000x5000 pixel buffer), it is skipped. This may result in blurred objects &amp;quot;disappearing&amp;quot; at high zooms. This is purely a display issue, however, and it never corrupts data; just zoom out (or reduce blur radius) and the disappeared object will show up OK.&lt;br /&gt;
&lt;br /&gt;
* When resizing objects, scaling numbers in the statusbar are no longer overwritten by other text when pressing the modifier keys (Alt, Shift, Ctrl).&lt;br /&gt;
&lt;br /&gt;
* To work around problems some users had with pressure-sensitive tablets ([http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1281512&amp;amp;group_id=93438&amp;amp;atid=604306 bug 1281512]), the pressure sensitivity can be disabled from the Misc tab of Inkscape Preferences dialog. After that, the tablet can still be used as a regular mouse. &lt;br /&gt;
&lt;br /&gt;
* The layer widget in the statusbar used to lose its current layer after an effect run; this is fixed.&lt;br /&gt;
&lt;br /&gt;
* When using different display resolutions or a dual screen setup, dialogs could be displayed off-screen; this is fixed: now Inkscape checks whether the saved position of the dialog is offscreen, if so it will move the dialog to the center of the screen. Note that this not solve all problems. If the dialog is still not visible, go to the [http://sourceforge.net/tracker/?func=detail&amp;amp;atid=604306&amp;amp;aid=1250236&amp;amp;group_id=93438 bug 1250236] where a procedure is given to make the dialog visible (by editing preferences.xml).&lt;br /&gt;
&lt;br /&gt;
* Grid and guidelines no longer vanish when changing their color.&lt;br /&gt;
&lt;br /&gt;
* Group transformation is now correctly re-applied when ungrouping and then undoing the ungroup operation.&lt;br /&gt;
&lt;br /&gt;
* Text dialog no longer discards the style of the selected text.&lt;br /&gt;
&lt;br /&gt;
* Inkscape no longer crashes when you try to unflow an empty flowed text.&lt;br /&gt;
&lt;br /&gt;
* Thanks to patches submitted by users of our community, Inkscape can now be built on SGI IRIX 6.5.28, gcc 3.4.0 systems and on Tru64 systems.&lt;br /&gt;
&lt;br /&gt;
= Known problems =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problem with &amp;quot;Dialogs on Top&amp;quot; on Windows ====&lt;br /&gt;
&lt;br /&gt;
* Although the &amp;quot;Dialogs on Top&amp;quot; option is now available on Windows (File &amp;gt; Inkscape Preferences &amp;gt; Windows), it does not work exactly as it should (yet!). When the document window is minimized, the dialogs remain visible, i.e. are not minimized together with the document window. Because of this, it is not possible to get the document window back by clicking its taskbar button. A workaround to this problem is to '''right-click the Inkscape taskbar button and select &amp;quot;Restore&amp;quot;.''' We expect that future releases of GTK will solve this problem.&lt;br /&gt;
&lt;br /&gt;
==== Spinbuttons may crash if you have GTK+ older than 2.10.7 ====&lt;br /&gt;
&lt;br /&gt;
* You may experience crashes after typing in a value into a spinbutton if you have a version of GTK+ 2.10.6 or older. Upgrade your GTK+ to fix this. (This does not affect the Windows package as it comes with GTK+ 2.10.9.)&lt;br /&gt;
&lt;br /&gt;
==== Numerical Python required for Perspective effect ====&lt;br /&gt;
&lt;br /&gt;
* This effect will not work until you install a python module called '''numpy''' (Numerical Python). It can be downloaded at [http://numpy.scipy.org/ numpy.scipy.org]. The Windows package already contains this module.&lt;br /&gt;
&lt;br /&gt;
==== Do not use a clone of an object as its clipping path/mask ====&lt;br /&gt;
&lt;br /&gt;
* In this version, you cannot use an object's clone as its clipping path or mask. Either unlink the clone first, or clip one clone of a source object (not the source itself) by another clone of the same. Properly fixing this bug requires some deep changes in the code and therefore was postponed until after 0.45 so as not to delay the release.&lt;br /&gt;
&lt;br /&gt;
==== Non-Unicode symbol fonts on Windows don't work ====&lt;br /&gt;
&lt;br /&gt;
* On Windows, symbol fonts without a Unicode map do not work. This is a limitation of the Pango library that we use.&lt;br /&gt;
&lt;br /&gt;
==== Problems with some Debian libgc-6.7 packages ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape will hang or crash when linked with the first Debian packaged version of the Boehm garbage collection library. This problem was fixed in version 1:6.7-2  of the package.  If you have libgc 6.7 on your Debian-based system, make sure that you are using that version of the package or later.&lt;br /&gt;
&lt;br /&gt;
==== Beware of defective themes on Linux ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape and other Gtk programs can crash on any Linux, when the &amp;lt;b&amp;gt;gtk2-engines-smooth / libsmooth&amp;lt;/b&amp;gt; package is installed. We have filed a bug against libsmooth which is now in gtk-engine and part of gnome. Removing the package resolves the problem. Update: this bug appears to be fixed in newer versions of gtk-engines. If you are affected by this problem please update to a newer version of gtk-engines. If problems persist then please inform the gtk-engines maintainers of the problem. &lt;br /&gt;
&lt;br /&gt;
* A similar crash happens if the &amp;lt;b&amp;gt;KDE Baghira&amp;lt;/b&amp;gt; theme or the package &amp;lt;b&amp;gt;gtk_qt_engine&amp;lt;/b&amp;gt; are installed. If you experience Inkscape crashes on KDE, please try to install a different theme from Baghira, or uninstall the gtk_qt_engine package from your system. Both problems also affect older versions of Inkscape.&lt;br /&gt;
&lt;br /&gt;
= Previous releases =&lt;br /&gt;
&lt;br /&gt;
* [[ReleaseNotes044]]&lt;br /&gt;
* [[ReleaseNotes043]]&lt;br /&gt;
* [[ReleaseNotes042]]&lt;br /&gt;
* [[ReleaseNotes041]]&lt;br /&gt;
* [[ReleaseNotes040]]&lt;br /&gt;
* [[ReleaseNotes039]]&lt;br /&gt;
* [[ReleaseNotes038]]&lt;br /&gt;
* [[ReleaseNotes037]]&lt;br /&gt;
* [[ReleaseNotes036]]&lt;br /&gt;
* [[ReleaseNotes035]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Marketing]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=13955</id>
		<title>Release notes/0.45</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=13955"/>
		<updated>2007-03-13T21:42:57Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* Inkscape 0.45.1 changes with respect to 0.45 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Inkscape 0.45.1 changes with respect to 0.45 =&lt;br /&gt;
&lt;br /&gt;
*Patch [ 1667939 ]: fix crash when tile-tracing with too small clones&lt;br /&gt;
*Patch [ 1666532 ]: Broken link in inkview man page&lt;br /&gt;
*Patch [ 1665447 ]: fix for the blur quantization bug 1617082&lt;br /&gt;
*Patch [ 1664849 ]: fix for 1662589: increase blur margins&lt;br /&gt;
*Patch [ 1664004 ]: embedimage.py with fixed search order&lt;br /&gt;
*Patch [ 1662649 ]: markers.svg with reversed order&lt;br /&gt;
*Crudely improve check-markup for &amp;amp;#123; markup, fix translations with bugs in that area (dz and zh_TW).&lt;br /&gt;
*Patch [ 1659404 ]: Set locale directory from environment variable&lt;br /&gt;
*Patch [ 1657072 ]: fix for bug 1654495&lt;br /&gt;
*Patch [ 1654636 ]: defocus dropper checkboxes&lt;br /&gt;
*Updated slovak translation&lt;br /&gt;
*Adding japanese.nsh and russian.nsh into files that should go into the release tarball&lt;br /&gt;
*Correct russian translation&lt;br /&gt;
*Patch [ 1651797 ]: fix for attributes when saving/save-a-copy&lt;br /&gt;
*Patch [ 1651752 ]: fix dropper tool&lt;br /&gt;
*Pattern along path extension fixed on Windows&lt;br /&gt;
*Include libtiff3.dll in the Windows distribution, fixing crash when opening TIFF files&lt;br /&gt;
*Patch [ 1673067 ]: fix blur export on flowtext&lt;br /&gt;
*Patch [ 1678075 ]: fix FontInstance.cpp compile issue&lt;br /&gt;
*Patch [ 1673502 ]: fix broken Envelope (Summers Night) effect&lt;br /&gt;
*Patch [ 1680182 ]: fix pattern inversion on bool op (bug 1659445)&lt;br /&gt;
&lt;br /&gt;
= Inkscape 0.45: overview =&lt;br /&gt;
&lt;br /&gt;
This release brings the exciting new features developed by the Google Summer of Code 2006 participants, as well as tons of other improvements across the board. Here are the highlights:&lt;br /&gt;
&lt;br /&gt;
* '''Gaussian blur''' is the first SVG filter supported by Inkscape. You can blur any object to any extent - yet it remains vector and fully editable. This gives a huge boost to Inkscape as a creative art tool.&lt;br /&gt;
&lt;br /&gt;
* '''Display speed and interactivity''': not only does Inkscape render faster, but it can now respond to user input before it finished redrawing the screen, which greatly improves the responsiveness (perceived speed or interactivity) of the program.&lt;br /&gt;
&lt;br /&gt;
* '''History dialog''' makes it easy to to review your editing session and jump to any step of it, undoing and redoing multiple actions with one click.&lt;br /&gt;
&lt;br /&gt;
* Several important tool features are added, notably the new selection mode in '''Node tool''' and the adjustable rounded caps in '''Calligraphic pen'''.&lt;br /&gt;
&lt;br /&gt;
* '''Bitmap tracing''' works better for multi-color traces, sports a redesigned dialog and several new options.&lt;br /&gt;
&lt;br /&gt;
* Many new '''extension effects''' are added, including '''Color effects''' and '''Pattern along path'''. &lt;br /&gt;
&lt;br /&gt;
* The '''Outline mode''' has got many fixes and improvements, including a keyboard shortcut.&lt;br /&gt;
&lt;br /&gt;
* Several new commands in '''Help''' menu open various Inkscape-related pages in your default browser, making Inkscape reference information more accessible as you work. &lt;br /&gt;
&lt;br /&gt;
* Dozens of smaller '''features''' are added throughout the program, and hundreds of '''bugs''' are fixed.&lt;br /&gt;
&lt;br /&gt;
= SVG filters: Gaussian blur =&lt;br /&gt;
&lt;br /&gt;
Thanks to Google's Summer of Code program, Inkscape now has basic support for [http://www.w3.org/TR/SVG11/filters.html SVG filters]. The only filter enabled so far is '''Gaussian blur'''. &lt;br /&gt;
&lt;br /&gt;
With it, you can softly and naturally blur any Inkscape objects: paths, shapes, groups, text, images. Clones inherit blurring from their original, but they can also be blurred independently from the original (you can create blurred clones with Tile Clones, too). Both the fill and stroke of an object are blurred together, creating semitransparent margins that smoothly blend into the background. &lt;br /&gt;
&lt;br /&gt;
Gaussian blur enables a wide range of photorealistic effects: arbitrarily shaped shades and lights, depth of field, drop shadows, glows, etc. Also, blurred objects can be used as masks for other objects to achieve the &amp;quot;feathered mask&amp;quot; effect.&lt;br /&gt;
&lt;br /&gt;
* To blur selected objects, open the Fill and Stroke dialog (Ctrl+Shift+F) and use the '''Blur''' slider. The blur value is a percentage, with 100% corresponding to a blurring radius (standard deviation of Gaussian function) of 1/8 of the object's bounding box' perimeter (that is, for a square, a blur of 100% will have the radius equal to half a side, which turns any shape into an amorphous cloud). &lt;br /&gt;
&lt;br /&gt;
* The '''Tile Clones''' dialog also supports blurring. On the '''Blur &amp;amp; opacity''' tab, you can set the blur percentage per row or per column of your tiling, as well as randomize blurring and make it alternate (all the same options as for Opacity).&lt;br /&gt;
&lt;br /&gt;
* The quality of on-screen blur display is controlled by the '''Blur quality''' option on the new '''Filters''' tab of Inkscape Preferences (Ctrl+Shift+P). The available options range from best quality/slowest display to worst quality/fastest display, the default being in the middle of the range. Any setting except the &amp;quot;best quality&amp;quot; may introduce some rendering artifacts, especially when blurring thin strokes; on the other hand, the &amp;quot;best quality&amp;quot; setting may make Inkscape extremely slow at high zooms. These settings only affect the screen display of blurred objects; bitmap export always uses the best quality (and may therefore become quite slow for images with a lot of blur).&lt;br /&gt;
&lt;br /&gt;
Here are a few tips on using blur:&lt;br /&gt;
&lt;br /&gt;
* '''Masks and clipping''' are applied ''after'' blur. That is, if you clip an object and then blur it (or blur it first and then clip - it makes no difference), the clipped edges will remain crisp. Often, this is what you want. If, however, you want to blur the clipped/masked edges too (possibly with a different radius), you can use grouping: group the clipped object with some other object (which you can then delete from the group) and blur the group.&lt;br /&gt;
&lt;br /&gt;
* A simple '''drop shadow''' is now very easy to do: just copy the object, paint the copy black, blur it, shift away a bit and lower it to the bottom. However, such a shadow does not update when you edit the foreground object. If your object is already black (or, more generally, if you want the shadow to be the same color as the object), you can clone instead of copy to make the shadow auto-updating. But what if your foreground object is not black but you need an auto-updating black shadow? Here's a recipe: unset the object's fill (it becomes black); create ''two'' clones of it; put one clone on top and paint any color you want; put the other clone at bottom, blur it and shift sideways. Now you can edit the unset-fill original (use Alt+click to select it) and everything will update. &lt;br /&gt;
&lt;br /&gt;
* If an object has a fill that you don't want to blur (e.g. pattern, or if it's a bitmap), but you just want to '''feather the edges''', use a blurred transparency mask. For this, copy the object; paint it white; blur it as needed; scale the blurred copy down so its blur margins are entirely within the original object; select both the original and the blurred mask; do Object &amp;gt; Mask &amp;gt; Set.&lt;br /&gt;
&lt;br /&gt;
* '''Transforming''' a blurred object '''transforms its blur''', too. This applies to a non-uniform scaling as well, so by squeezing a blurred object you make its blur squeezed as well. So, the easiest way to blur a path horizontally more than vertically is this: stretch it upwards without blur, then apply blur and squeeze it back into the original shape. (This only works if the stretched path does not already have a Transform attribute.)&lt;br /&gt;
&lt;br /&gt;
* You can combine '''blurring with gradients'''. For example, an ellipse with elliptic opacity gradient will look much softer and more natural when blurred. An object with a horizontal linear opacity gradient, when blurred, will look as if it's more blurred on its transparent side than on its opaque side.&lt;br /&gt;
&lt;br /&gt;
* A '''clone of a blurred object''' inherits the blur of the original. Therefore, such a clone can be blurred ''more'', but you can't &amp;quot;unblur&amp;quot; it to make the clone sharper than its original (unless, of course, you unlink it). The Fill and Stroke dialog shows you the amount of the blur applied to this particular object; however, if the object is a clone of an already blurred original, the dialog does not reflect that.&lt;br /&gt;
&lt;br /&gt;
* Note that '''Firefox 2.0''' does not support SVG filters, so your files will be displayed in Firefox 2.0 without blur. However, filter support has been added  in the current development version and will be included in Firefox 3.0. The Opera web browser, as well as librsvg (used by Wikipedia) and Batik, support filters correctly in their current versions.&lt;br /&gt;
&lt;br /&gt;
= Undo history =&lt;br /&gt;
&lt;br /&gt;
* Inkscape now features a &amp;lt;b&amp;gt;History Dialog&amp;lt;/b&amp;gt; accessible via &amp;lt;b&amp;gt;Ctrl+Shift+H&amp;lt;/b&amp;gt; or Edit &amp;amp;gt; Undo History. All changes made to the document since it was opened are recorded here.&lt;br /&gt;
&lt;br /&gt;
:* In the dialog, changes are listed from the '''oldest (top)''' to the '''newest (bottom)'''. &lt;br /&gt;
&lt;br /&gt;
:* The type of each change is indicated by an '''icon''' and a short '''description'''.&lt;br /&gt;
&lt;br /&gt;
:* For readability, consecutive changes of the same type are placed in a '''collapsible branch''' showing a triangle marker and the number of the hidden actions in the branch.&lt;br /&gt;
&lt;br /&gt;
:* By clicking on an event in the list, you can easily '''move through the undo history''', i.e. undo or redo any number of actions with one click.&lt;br /&gt;
&lt;br /&gt;
* The Undo and Redo commands in the Edit menu display the descriptions of the commands to be undone and redone, correspondingly. (These are the same descriptions that you see in the History dialog.)&lt;br /&gt;
&lt;br /&gt;
= Rendering improvements =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Interruptible display&amp;lt;/b&amp;gt;: Previously, Inkscape could not do anything until it finishes the current screen redraw. Now the redraw is made interruptible, so that Inkscape responds to mouse and keyboard input and can abort the current redraw and start over if you do some screen-changing operation. As a result, Inkscape now feels '''much snappier and more interactive'''. This interruptibility is fine-tuned for some continuous-drag operations (such as node dragging) so that a balance is achieved between responsiveness and completeness of display.&lt;br /&gt;
&lt;br /&gt;
* Screen render is faster by '''2-3%''' overall:&lt;br /&gt;
&lt;br /&gt;
:* Complex drawings with '''transparency''' are faster by up to '''5%'''.&lt;br /&gt;
&lt;br /&gt;
:* '''Radial gradients''' are rendered faster by at least '''10%'''.&lt;br /&gt;
&lt;br /&gt;
* Rendering (compositing) quality has been improved. This is most visible with (partially) transparent gradients: '''banding''' is a lot less pronounced now. Speed has also been improved in some cases.&lt;br /&gt;
&lt;br /&gt;
* Display is more responsive when working at high zoom levels when using a tablet.&lt;br /&gt;
&lt;br /&gt;
= Tools = &lt;br /&gt;
&lt;br /&gt;
== Node tool ==&lt;br /&gt;
&lt;br /&gt;
* You can &amp;lt;b&amp;gt;grow or shrink node selection&amp;lt;/b&amp;gt; by hovering the mouse pointer over a node and using &amp;lt;b&amp;gt;mousewheel&amp;lt;/b&amp;gt; (up = grow, down = shrink) or the keys &amp;lt;b&amp;gt;PageUp&amp;lt;/b&amp;gt; (grow) and &amp;lt;b&amp;gt;PageDown&amp;lt;/b&amp;gt; (shrink). ''Growing'' adds the closest unselected node to the selection; shrinking deselects the farthest selected node. There are two modes that differ by how the closest/farthest nodes are chosen:&lt;br /&gt;
&lt;br /&gt;
:* &amp;lt;b&amp;gt;Spatial selection&amp;lt;/b&amp;gt; (mousewheel, PageUp/PageDown): distances to nodes are measured directly, regardless of which subpath a node belongs to. &lt;br /&gt;
&lt;br /&gt;
:* &amp;lt;b&amp;gt;Linear selection&amp;lt;/b&amp;gt; (Ctrl+mousewheel, Ctrl+PageUp/Ctrl+PageDown): node distances are measured ''along the path'', and only the nodes belonging to the same subpath as the hovered node are considered (i.e. other subpaths are never selected).&lt;br /&gt;
&lt;br /&gt;
:This technique is convenient for quickly selecting an area in a complex path starting from a center - for example, for node sculpting.&lt;br /&gt;
&lt;br /&gt;
== Dropper ==&lt;br /&gt;
&lt;br /&gt;
* Instead of the confusing toggle button, now the Controls bar for the Dropper tool has two checkboxes, '''Pick alpha''' and '''Set alpha''', which work as follows. Suppose you have an object selected and, using Dropper, click on an object which has red (#FF0000) fill and 0.5 opacity (half-transparent).&lt;br /&gt;
&lt;br /&gt;
:* If the &amp;quot;Pick alpha&amp;quot; checkbox is off, the selected object will get the fill color #800000 (i.e. faded-out red) and fill opacity will be at 1.0 (opaque). &lt;br /&gt;
&lt;br /&gt;
:* If the &amp;quot;Pick alpha&amp;quot; checkbox is on but &amp;quot;Set alpha&amp;quot; is off, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 1.0. &lt;br /&gt;
&lt;br /&gt;
:* If both &amp;quot;Pick alpha&amp;quot; and &amp;quot;Set alpha&amp;quot; are on, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 0.5 (half-transparent). &lt;br /&gt;
&lt;br /&gt;
:If you Shift+click instead of click, the same changes will be made to stroke color and stroke opacity, correspondingly. Note that in no situation can Dropper change the ''master opacity'' of the selected object(s) (only the fill/stroke opacity), although it can pick it just as it does any other kind of opacity.&lt;br /&gt;
&lt;br /&gt;
== Calligraphy ==&lt;br /&gt;
&lt;br /&gt;
* A new numeric parameter, &amp;lt;b&amp;gt;Caps&amp;lt;/b&amp;gt;, controls the amount of protruding at the ends of calligraphic strokes. This parameter can range from 0 (flat caps, default behavior in previous versions) through 1 (approximately half-circle caps) and up to 5 (long elliptic caps). Rounded caps much improve the look of low-fixation strokes, simulating a rounded pen.  &lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Drag&amp;quot; parameter has been renamed to &amp;lt;b&amp;gt;Wiggle&amp;lt;/b&amp;gt; with a value inversion (i.e. low drag corresponds to high wiggle, and vice versa). Increase this parameter (default is 0) to make the pen waver and wiggle in curly patterns.&lt;br /&gt;
&lt;br /&gt;
* As a first step towards a redesign of the tools' controls, the '''Controls bar of the Calligraphy pen''' has been upgraded. Now it no longer prevents the Inkscape window from resizing narrower than the bar. The items on the far right end of the bar which didn't fit in a narrow window are still accessible through an '''expansion menu''' which allows you to toggle switches, select commands, and set values of numeric fields. Also, each editable numeric value field has a new '''right-click menu''' with some common values which often allows you to set a desired value much faster than by scrolling the control or typing the value into it.&lt;br /&gt;
&lt;br /&gt;
* With low or zero Fixation parameter, some users of tablet pens experienced &amp;quot;blobs&amp;quot; (brief reversals of a stroke's right/left edges, causing &amp;quot;holes&amp;quot; and &amp;quot;bubbles&amp;quot; in a calligraphic stroke), especially often at the start of a stroke. Hopefully this problem is now fixed without reducing the responsiveness of the tool.&lt;br /&gt;
&lt;br /&gt;
= Outline mode =&lt;br /&gt;
&lt;br /&gt;
* A new menu command (&amp;lt;b&amp;gt;View &amp;gt; Display Mode &amp;gt; Toggle&amp;lt;/b&amp;gt;) and a new keyboard shortcut (&amp;lt;b&amp;gt;Ctrl+&amp;amp;lt;keypad 5&amp;amp;gt;&amp;lt;/b&amp;gt;) switch the display mode from Normal to Outline and back.&lt;br /&gt;
&lt;br /&gt;
* The window title displays &amp;quot;&amp;lt;b&amp;gt;(outline)&amp;lt;/b&amp;gt;&amp;quot; next to the file name when that editing window is in Outline mode. &lt;br /&gt;
&lt;br /&gt;
* An object with &amp;lt;b&amp;gt;mask and/or clipping path&amp;lt;/b&amp;gt;, when viewed in Outline mode, now displays both the object itself and its clipping path and mask as objects, using different outline colors. By default, &amp;lt;b&amp;gt;clippaths use green&amp;lt;/b&amp;gt; outlines, and &amp;lt;b&amp;gt;masks use blue&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Images&amp;lt;/b&amp;gt; in Outline mode are displayed as &amp;lt;b&amp;gt;red&amp;lt;/b&amp;gt; (by default) frames with two diagonals.&lt;br /&gt;
&lt;br /&gt;
* An object with no fill and no stroke, invisible and not selectable by mouse clicking in normal mode, can now be &amp;lt;b&amp;gt;picked by a mouse click&amp;lt;/b&amp;gt; in the Outline mode using its visible outline.&lt;br /&gt;
&lt;br /&gt;
* The bug whereby stroked shapes didn't change stroke width when switching to Outline mode or back is fixed.&lt;br /&gt;
&lt;br /&gt;
* All outline colors are changeable by editing the &amp;quot;wireframecolors&amp;quot; group inside &amp;quot;options&amp;quot; in the preferences file (~/.inkscape/preferences.xml). The &amp;quot;onlight&amp;quot; and &amp;quot;ondark&amp;quot; attributes set the colors of the regular object outlines on light and dark backgrounds (default black and white correspondingly); the &amp;quot;images&amp;quot;, &amp;quot;clips&amp;quot;, and &amp;quot;masks&amp;quot; attributes set the colors of images, clipping paths, and masks (defaults are red, green, and blue correspondingly). Each attribute is a decimal integer corresponding to the hex RRGGBBAA of the color.  &lt;br /&gt;
&lt;br /&gt;
* To cater for specialized uses, such as preparing input for personal media cutters, Inkscape now has an option to start in the Outline mode upon launch. To enable this, add the following line to your preferences.xml file:&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;group id=&amp;quot;startmode&amp;quot; outline=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:placing it after the &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; opening tag.&lt;br /&gt;
&lt;br /&gt;
= Keyboard profiles =&lt;br /&gt;
&lt;br /&gt;
The previous release allowed sets of keybindings (keymaps) to be created for Inkscape in the style of other applications.  Two more keymaps have been added:  &lt;br /&gt;
&lt;br /&gt;
* '''Adobe Illustrator''' &lt;br /&gt;
* '''Macromedia Freehand'''&lt;br /&gt;
&lt;br /&gt;
Of course not every feature in these other programs has a direct match to features in Inkscape; so, if you can, please '''help us out''' by reporting any problems you may have or improvements you would like to request.&lt;br /&gt;
&lt;br /&gt;
Additionally, a keymap that focuses on tablet-based illustration and drawing work has been added:&lt;br /&gt;
&lt;br /&gt;
* '''right-handed-illustration.xml'''&lt;br /&gt;
&lt;br /&gt;
This keymap places all commonly-used commands under the left hand, so that the user's hands rarely leave the keyboard or the tablet/stylus.&lt;br /&gt;
&lt;br /&gt;
(To enable a profile, copy it into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; in the same directory, overwriting the old file. To restore the default Inkscape set, copy &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
More of Inkscape's keys are implemented as actions and are therefore available for remapping via keyboard profiles. New actions include '''EditSelectNext''' and '''EditSelectPrev''' for selecting next/previous object or node (by default, they are bound to Tab/Shift+Tab; as a result of becoming global actions, these keys now work in all tools and not only in Selector and Node tool as before).&lt;br /&gt;
&lt;br /&gt;
= Extension effects =&lt;br /&gt;
&lt;br /&gt;
Inkscape's extension effects, written in Python using the '''inkex''' utility class, are currently a major growth point of the project. They allow new developers to create functionality very quickly, without having to learn Inkscape's huge C/C++ codebase. However, eventually we plan to move many of these effects into the core of Inkscape, which will make them much faster and more interactive. From this viewpoint, effects can be considered a quick way to prototype and test the algorithms and UI controls of the future Inkscape features. However, this does not prevent effects from being genuinely useful in everyday work, and in this version we have several excellent additions. &lt;br /&gt;
&lt;br /&gt;
== New effects ==&lt;br /&gt;
&lt;br /&gt;
* '''Pattern along path''': A new powerful extension in the &amp;quot;Generate from path&amp;quot; submenu allows you to bend, repeat and/or stretch a pattern object (which can be a path or a group) along a &amp;quot;skeleton&amp;quot; path. This makes it easy to create a variety of patterned and shaped strokes. (This obsoletes the old &amp;quot;Kochify&amp;quot; extension which is removed.)&lt;br /&gt;
&lt;br /&gt;
:Effect's parameters include: &lt;br /&gt;
&lt;br /&gt;
:* ''Copies of the pattern'' selects one of the four modes: '''Single stretched''': one copy of the pattern is placed on the skeleton path and stretched/squeezed to match its length;  '''Repeated stretched''': as many copies as would fit are placed along the skeleton path and stretched to fit exactly; '''Single''' and '''Repeated''': same but without stretching.&lt;br /&gt;
&lt;br /&gt;
:* ''Deformation type'' can be one of: '''Snake''' bends the pattern flatly in the plane of the drawing, the width not depending on direction; '''Ribbon''' bends it as a vertical ribbon or like a calligraphic stroke with maximum fixation, so that width depends on direction (minimum for vertical parts of the stroke, maximum for horizontal).&lt;br /&gt;
&lt;br /&gt;
:* Several parameters allow you to adjust spacing between the copies of the pattern (for Multiple modes) and their offset in two directions (along the skeleton path and perpendicular to it).&lt;br /&gt;
&lt;br /&gt;
:* Normally the effect assumes that the pattern object is horizontal and bends its horizontal axis (at mid-height) along the skeleton path. There's a checkbox that allows you to use a '''vertical pattern''' instead. &lt;br /&gt;
&lt;br /&gt;
:Some examples of using this effect are shown on a screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.45-patternalongpath.png].&lt;br /&gt;
&lt;br /&gt;
* '''Color effects''': A new group of extensions in the '''Color''' submenu of the Effects menu allows you to adjust all colors of a selection at once. These commands affect both fill and stroke colors, including gradients (but not bitmaps). The commands include:&lt;br /&gt;
&lt;br /&gt;
:* a full set of '''HSL adjustments''' (increasing/decreasing hue, saturation, or lightness by 5%), &lt;br /&gt;
&lt;br /&gt;
:* '''Brighter''' and '''Darker''' (adjust brightness up or down by 10%), &lt;br /&gt;
&lt;br /&gt;
:* '''Desaturate''', &lt;br /&gt;
&lt;br /&gt;
:* '''Grayscale''', &lt;br /&gt;
&lt;br /&gt;
:* '''Negative''', &lt;br /&gt;
&lt;br /&gt;
:* commands for removing or swapping the '''Red''', '''Green''', '''Blue''' channels, &lt;br /&gt;
&lt;br /&gt;
:* a '''Custom''' command where you can set your own formulas for modifying the color channels. &lt;br /&gt;
&lt;br /&gt;
:Some examples of using this effect are shown on a screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.45-coloreffects.png].&lt;br /&gt;
&lt;br /&gt;
:Note: undoing color changes on gradients exposes a bug where an object seems to &amp;quot;disappear&amp;quot;; this is only a display issue (caused by the order in which gradients and their users are restored on undo) not causing any loss of information. Also, on large documents and large selections with gradients, Python's XPath code may get quite slow. Despite these shortcomings, we decided to add this extension, because it's genuinely useful functionality which was so far missing in Inkscape.&lt;br /&gt;
&lt;br /&gt;
* Recent fixes in the processing of SVG &amp;lt;defs /&amp;gt; have made it possible to implement the often requested '''Color Markers to Match Stroke''' effect. It is no longer necessary to hand-edit XML to recolor arrowheads; just change the stroke color of your path and call this effect to recolor its markers to match.&lt;br /&gt;
&lt;br /&gt;
* '''Lorem ipsum''' (in &amp;quot;Render&amp;quot; submenu) is a new extension that creates the traditional Latin-like random text for design mock-ups. The number of paragraphs, the number of sentences per paragraph and the possible fluctuation of the number of sentences (for uneven paragraphs) can be adjusted. If no flowed text element is selected, a new one in a new layer is created, matching the size of the canvas.&lt;br /&gt;
&lt;br /&gt;
* '''Fractalize''' (in &amp;quot;Modify Path&amp;quot; submenu) replaces each segment of the selected path by a crooked line, subdivided to the given depth, with randomly displaced nodes. &lt;br /&gt;
&lt;br /&gt;
* '''g2png''': The new group-to-PNG Python extension (g2png) is an easy way to export any group or layer to individual PNG files. It was first created for use in the [http://www.le-radar.com/?mm/inkscape Inkscape User Manual] (also available in SVN in the user_manual module) but is also interesting for many other uses. If e.g. you have to draw a set of icons, you can draw them in the same document, thus making copying, duplicating, cloning etc. easier. Then just create a group  for each icon, and with the extension, each group ends up in its own PNG file.&lt;br /&gt;
&lt;br /&gt;
== Improved effects ==&lt;br /&gt;
&lt;br /&gt;
* The '''Function Plotter''' has been extended, providing greater flexibility in x- and y-range definition. &lt;br /&gt;
&lt;br /&gt;
* The '''Measure Path''' extension is improved with several new parameters added (units, scale, precision, distance from path).&lt;br /&gt;
&lt;br /&gt;
* The '''Extract One Image''' extension is fixed to automatically append filename extension to the created bitmap file.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Blur Edge&amp;quot; extension is renamed into '''Inset/Outset Halo''' to avoid confusion with the real Gaussian blur that we now support, as well as to better describe what this extension actually does: From the selected path, it creates a group of inset and outset paths that form a stepped &amp;quot;halo&amp;quot; around the object. &lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
* '''3 new parameter types''' have been added to the extension effect UI: '''tabs''', '''enumerations''' and '''optiongroups''' (radio buttons). Examples are available of how to use these parameters in INX files: the new Function Plotter uses tabs; enumerations are used by the Pattern along path extension; and a small developer example is given to illustrate the use of optiongroups (identical to enumerations).&lt;br /&gt;
&lt;br /&gt;
* In an extension's INX file, you can specify &amp;lt;code&amp;gt;&amp;amp;lt;effects-menu hidden=&amp;quot;yes&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt; to hide that extension from the Effects menu. However, such a &amp;quot;hidden&amp;quot; extension can still be assigned a keyboard shortcut (by using its &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; as an &amp;quot;action&amp;quot; in your &amp;lt;code&amp;gt;~/.inkscape/keys/default.xml&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* In an extension's INX file, you can add &amp;lt;code&amp;gt;needs-document=&amp;quot;no&amp;quot;&amp;lt;/code&amp;gt; attribute to the &amp;lt;code&amp;gt;&amp;amp;lt;effect&amp;amp;gt;&amp;lt;/code&amp;gt; element. This indicates that the extension does not process the current SVG document, and Inkscape will not bother saving and restoring the document from a temporary file which allows this extension to run faster and smoother. (This is used for the new open-in-default-browser Help menu commands which are technically implemented as extensions.)&lt;br /&gt;
&lt;br /&gt;
= Export formats =&lt;br /&gt;
&lt;br /&gt;
== AI import/export ==&lt;br /&gt;
&lt;br /&gt;
* We only support AI import and export for Adobe Illustrator 8.0 and older.  This has been clarified in the Open and Save As lists.&lt;br /&gt;
&lt;br /&gt;
== PDF export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape's PDF exporter has been improved:&lt;br /&gt;
&lt;br /&gt;
* '''New features:''' bitmap images can be embedded; PDF files can be exported from command line using the &amp;lt;code&amp;gt;--export-pdf&amp;lt;/code&amp;gt; parameter. &lt;br /&gt;
&lt;br /&gt;
* '''Changed behavior:''' the pointless text to path question is gone. &lt;br /&gt;
&lt;br /&gt;
* '''Fixed bugs:''' save failure is now detected, miter limits are now &amp;gt;= 1, PDFs with transparent gradient are now embeddable, eccentric elliptic gradients fixed, dash style inheritance fixed, transparency inheritance fixed.&lt;br /&gt;
&lt;br /&gt;
== PS/EPS export ==&lt;br /&gt;
&lt;br /&gt;
There's a new option to &amp;lt;b&amp;gt;embed the fonts&amp;lt;/b&amp;gt; used in the document in the PS or EPS exported file. As of now, this works for &amp;lt;b&amp;gt;Type 1 fonts only&amp;lt;/b&amp;gt;, not TrueType. The option is available when performing the export from the GUI as well as from the command line via the &amp;lt;code&amp;gt;--export-embed-fonts&amp;lt;/code&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
== EMF export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape has a limited support for exporting &amp;lt;b&amp;gt;EMF&amp;lt;/b&amp;gt; (Enhanced Meta File) format. This works &amp;lt;b&amp;gt;only on Windows&amp;lt;/b&amp;gt;, and only exports strokes and fills with constant colors. No text, no images, no gradients, no transparency.&lt;br /&gt;
&lt;br /&gt;
= SVG output =&lt;br /&gt;
&lt;br /&gt;
For specialized uses, several aspects of Inkscape's SVG output can now be customized via editing the preferences.xml file (there's no UI for these options). A &amp;lt;group id=&amp;quot;&amp;lt;b&amp;gt;svgoutput&amp;lt;/b&amp;gt;&amp;quot;&amp;gt; inside &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; can have the following attributes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;usenamedcolors&amp;lt;/b&amp;gt; (default is 0). If nonzero, Inkscape uses symbolic color names (such as &amp;quot;white&amp;quot; or &amp;quot;lime&amp;quot;) and three-digit color designations (such as $dfe) where appropriate; otherwise, it always uses six-digit colors (such as $d0f0e0). Note that in 0.44, the default was to use named colors, which created problems for some extension effects.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;numericprecision&amp;lt;/b&amp;gt; (default is 8). This is the number of significant digits written for each number into SVG. You can lower this number to get slightly more compact SVG at the expense of precision.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;minimumexponent&amp;lt;/b&amp;gt; (default is -8). In transform= attributes, any number whose absolute value is less than 10 to the power of minimumexponent (i.e. less than 10&amp;lt;sup&amp;gt;-8&amp;lt;/sup&amp;gt; by default) is written as 0.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;indent&amp;lt;/b&amp;gt; (default is 2) controls the number of spaces that each level of nesting in SVG is shifted. Set this to 0 to disable indentation.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;inlineattrs&amp;lt;/b&amp;gt; (default is 0). If nonzero, attributes are placed on the same line as their tags; otherwise they are separated by newlines.&lt;br /&gt;
&lt;br /&gt;
= Bitmap tracing =&lt;br /&gt;
&lt;br /&gt;
* A '''new color quantization algorithm''' for multiscan traces works faster (especially for large numbers of colors) and gives more adequate results with less colors used. This improves tracing results both for full-color photographs and for limited-color drawings. &lt;br /&gt;
&lt;br /&gt;
* The Trace Bitmap dialog now provides access to three more tracing parameters:&lt;br /&gt;
&lt;br /&gt;
:* '''Suppress speckles''': If set, spots or speckles larger than the given size (in pixels) are suppressed in the trace.&lt;br /&gt;
&lt;br /&gt;
:* '''Smooth corners''': This parameter controls how much smoothing is applied to corners in the traced path.&lt;br /&gt;
&lt;br /&gt;
:* '''Optimize paths''': If set, trace paths are optimized by joining adjacent Bezier segments with the given tolerance.&lt;br /&gt;
&lt;br /&gt;
* All controls in the Trace Bitmap dialog are reorganized to be easier to find. The dialog is redesigned to use two main tabs: '''Mode''' (where you select the tracing mode, such as brightness cutoff or color multiscan) and '''Options''' (where you set various tracing options, such as corner smoothing). The preview is placed horizontally to the right of the tabs. Most labels and tooltips are rewritten for clarity. The trace preview image is made twice larger.&lt;br /&gt;
&lt;br /&gt;
= Even more improvements =&lt;br /&gt;
&lt;br /&gt;
* The '''opacity''' of objects is now displayed as percentage, '''from 0 to 100''', both in the Fill &amp;amp; Stroke dialog (with one fractional digit) and in the statusbar style indicator (with no fractional digits), instead of from 0 to 1.0 as before. This makes opacity values easier to read, type, and say.&lt;br /&gt;
&lt;br /&gt;
* A '''Save a copy''' command has been added to the file menu, similar to the 'Save a copy' functionality of e.g. Adobe Illustrator. With this command, you can save your document under a new filename, but Inkscape will then &amp;quot;forget&amp;quot; it has done this: later saves will be to the old filename. The default shortcut assigned to this function is '''Shift+Ctrl+Alt+S'''.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Text and flowed text objects&amp;lt;/b&amp;gt; behave more consistently. Now you can put a flowed text on path or (re)flow it into a shape just as you would do with a regular (unflowed) text. Previously, the need to convert a flowed text to text before these operations was a stumble for many users.&lt;br /&gt;
&lt;br /&gt;
* Several commands were added to the '''Help menu''', providing the long-missing access to basic information about Inkscape and SVG right from the program: [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/index.php Inkscape manual], [http://inkscape.org/doc/inkscape-man.html Command line options], [http://wiki.inkscape.org/wiki/index.php/FAQ FAQ], Release notes, [http://inkscape.org/report_bugs.php Bug report page], and the [http://www.w3.org/TR/SVG11/ SVG 1.1 specification]. All these commands open the corresponding web pages in the user's default web browser. &lt;br /&gt;
&lt;br /&gt;
* Exported PNG images have the correct '''resolution''' set in the header.&lt;br /&gt;
&lt;br /&gt;
* The Path -&amp;gt; '''Union''' (Ctrl++) operation now functions when only a '''single object''' is selected. Use this to '''remove self-intersections''' in path objects.&lt;br /&gt;
&lt;br /&gt;
* We removed the &amp;quot;hacked&amp;quot; '''filename entry field''' that we had added to the Open and Save dialogs because starting from version 2.10, GTK+ has finally restored this field in their '''standard file dialog'''. The standard field at the top of the dialog supports type-ahead find and performs the default dialog action (open or save) by pressing Enter, which means you can now do a quick '''Ctrl+O, Ctrl+V, Enter''' sequence to open the file whose path is in your clipboard (this closes a long-standing usability bug). Those who use older versions of GTK are advised either to upgrade to 2.10 or use Ctrl+L to open a pop-up filename box. (Our Windows builds are shipped with GTK+ 2.10.)&lt;br /&gt;
&lt;br /&gt;
* The '''Create Bitmap''' function (Alt+B in the default keymap) is made more useful. Unless you have specific resolution or minimum size set for this command in preferences.xml (&amp;lt;code&amp;gt;&amp;amp;lt;group id=&amp;quot;createbitmap&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt;), it will take the '''resolution hint''' from the object whose bitmap copy you are creating (in other words, it will use the resolution that you specified for that object when exporting it via the Export Bitmap dialog), or the default '''90 dpi''' if that object was not yet exported. Also, a 90 dpi bitmap (with its pixels exactly 1 px in size) will be '''snapped''' to the pixel grid. This makes it easy to use Create Bitmap for quick '''rasterization preview''' of an object or document. (Note: if you have used a previous version of Inkscape, your preferences.xml may contain &amp;lt;code&amp;gt;minsize=&amp;quot;250&amp;quot;&amp;lt;/code&amp;gt;; delete this for objects' resolution hints to work.)&lt;br /&gt;
&lt;br /&gt;
* Using extended input (i.e. tablet pressure and tilt) can now be disabled via Preferences (Misc tab). This is intended to be a last-resort option for those platform/hardware combinations that are not properly supported by GTK. With extended input disabled, you can still use your tablet as a mouse. &lt;br /&gt;
&lt;br /&gt;
* Simplify Path now has two modes when working with a group of paths:  the default mode, which treats all of the paths as one large object to simplify, or the new mode, which acts the same as using Simplify on each path in a group separately.  In preferences.xml, set '''options.simplifyindividualpaths''' to 1 to get the new mode.&lt;br /&gt;
&lt;br /&gt;
* For long Simplify operations (more than 20 paths at a time), Inkscape provides user feedback via the status bar as to how many paths have been simplified.  This change also prevents Inkscape from appearing to have locked up during the operation.&lt;br /&gt;
&lt;br /&gt;
* New '''templates''' added for '''video formats''' (PAL, NTSC and HDTV 1080) as well as DVD cover templates that were not installed in the previous version. This will help video and DVD authoring with Inkscape. The business card 85&amp;amp;times;54 template is now installed as well.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Other&amp;quot; license type was added to the metadata/license dialog so that people know that they are entering a URI to an &amp;quot;other&amp;quot; license.&lt;br /&gt;
&lt;br /&gt;
= Examples = &lt;br /&gt;
&lt;br /&gt;
* With all the recent additions - clipping, masking, and especially blur - Inkscape is now able to produce extremely photorealistic art. In the share/examples folder in Inkscape distribution, you will find two brand new, stunningly realistic images of shiny cars: &amp;lt;b&amp;gt;car.svgz&amp;lt;/b&amp;gt; by Konstantin Rotkevich and &amp;lt;b&amp;gt;gallardo.svgz&amp;lt;/b&amp;gt; by Michael Grosberg.&lt;br /&gt;
&lt;br /&gt;
* Inkscape 0.45 does not yet have gradient meshes. But with the addition of Gaussian Blur, this feature suddenly got within reach. A new example file, &amp;lt;b&amp;gt;gradient-mesh-experimental.svgz&amp;lt;/b&amp;gt;, explains the approach Inkscape will likely take to implement this feature in a fully SVG-compatible way.&lt;br /&gt;
&lt;br /&gt;
* Although Inkscape does not support animation yet, you can add any animation scripts and attributes to your SVG file manually in a text editor - and the file will still be editable in Inkscape. Tavmjong Bah used this technique to create  &amp;lt;b&amp;gt;animated-clock.svg&amp;lt;/b&amp;gt; which, when loaded in an SVG viewer supporting animation (such as Firefox, Opera, or Batik), demonstrates the intricate moving clockwork of a watch - and shows real time to boot! If loaded in Inkscape, the image is static, but instead you can freely edit any of the objects.&lt;br /&gt;
&lt;br /&gt;
= Translations, tutorials, templates =&lt;br /&gt;
&lt;br /&gt;
* Remarkable improvements are in the '''Danish''', '''Finnish''', '''Nepalese''' and the '''Vietnamese''' translations of the user interface. They all jumped from 0 to over 90 percent in a very short timespan.&lt;br /&gt;
&lt;br /&gt;
* All people which are familiar with '''pig latin''' are now able to use Inkscape's user interface in that language. Isthay isway oughtbray otay usway ybay away ewnay anslatortray.&lt;br /&gt;
&lt;br /&gt;
* Updated '''British English''', '''Catalan''', '''Czech''', '''Bulgarian''', '''French''', '''Danish''', '''Finnish''', '''German''', '''Brazilian Portuguese''' and '''Thai''', '''Vietnamese''' and '''Dzongkha''' translations.&lt;br /&gt;
&lt;br /&gt;
* A new Esperanto translation added including default document template.&lt;br /&gt;
&lt;br /&gt;
* Default Lithuanian template was not installed before, which is now fixed.&lt;br /&gt;
&lt;br /&gt;
* New tutorial &amp;quot;Easter Eggs&amp;quot; by Steve Karg.&lt;br /&gt;
&lt;br /&gt;
* Added Catalan default template and elements tutorial.&lt;br /&gt;
&lt;br /&gt;
* Russian header and footer templates for tutorials are added.&lt;br /&gt;
&lt;br /&gt;
* Several tutorial translations were updated, namely '''Catalan''', '''Brazilian Portuguese''', '''Russian''', '''German''', '''Danish''' and '''French'''.&lt;br /&gt;
&lt;br /&gt;
* There are also new Russian and Japanese translations of Windows installer strings.&lt;br /&gt;
&lt;br /&gt;
= Dependency changes =&lt;br /&gt;
&lt;br /&gt;
* We have changed the '''GTK+''' requirement for compilation to version 2.8. However, it is highly recommended to use at least the version '''2.10.7''' because previous versions contain at least one crash bug which may cause Inkscape to crash after typing in a value into a spinbutton.&lt;br /&gt;
&lt;br /&gt;
= Notable bugfixes =&lt;br /&gt;
&lt;br /&gt;
* When deleting a node, neighboring smooth nodes are converted to cusp.&lt;br /&gt;
&lt;br /&gt;
* Releasing the mouse button while dragging nodes using a tablet will now always release the nodes.  Before this, a race condition could occur where dragging could continue after the mouse button was released.&lt;br /&gt;
&lt;br /&gt;
* An object's mask and clipping path are now preserved after Simplify, Object/Stroke to path, or boolean operations.&lt;br /&gt;
&lt;br /&gt;
* Ungrouping a group containing clipped/masked objects might sometime break the clip/mask (move it away); this is fixed.&lt;br /&gt;
&lt;br /&gt;
* Transforming an object and its clone no longer behaves unexpectedly when they are both within a transformed group. &lt;br /&gt;
&lt;br /&gt;
* User-supplied templates in ~/.inkscape/templates can now be SVGZ files in addition to SVG.&lt;br /&gt;
&lt;br /&gt;
* Previously, Inkscape didn't check if there's enough free memory for its pixel buffers and could crash without warning due to insufficient memory e.g. upon zooming in. This problem became much worse after implementing Gaussian blur, because rendering blurred objects at high zooms may require a pixel buffer much bigger than the visible canvas. Now this situation is handled more gracefully: if a display operation requires more memory than available, or more than 100Mb (which corresponds to a 5000x5000 pixel buffer), it is skipped. This may result in blurred objects &amp;quot;disappearing&amp;quot; at high zooms. This is purely a display issue, however, and it never corrupts data; just zoom out (or reduce blur radius) and the disappeared object will show up OK.&lt;br /&gt;
&lt;br /&gt;
* When resizing objects, scaling numbers in the statusbar are no longer overwritten by other text when pressing the modifier keys (Alt, Shift, Ctrl).&lt;br /&gt;
&lt;br /&gt;
* To work around problems some users had with pressure-sensitive tablets ([http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1281512&amp;amp;group_id=93438&amp;amp;atid=604306 bug 1281512]), the pressure sensitivity can be disabled from the Misc tab of Inkscape Preferences dialog. After that, the tablet can still be used as a regular mouse. &lt;br /&gt;
&lt;br /&gt;
* The layer widget in the statusbar used to lose its current layer after an effect run; this is fixed.&lt;br /&gt;
&lt;br /&gt;
* When using different display resolutions or a dual screen setup, dialogs could be displayed off-screen; this is fixed: now Inkscape checks whether the saved position of the dialog is offscreen, if so it will move the dialog to the center of the screen. Note that this not solve all problems. If the dialog is still not visible, go to the [http://sourceforge.net/tracker/?func=detail&amp;amp;atid=604306&amp;amp;aid=1250236&amp;amp;group_id=93438 bug 1250236] where a procedure is given to make the dialog visible (by editing preferences.xml).&lt;br /&gt;
&lt;br /&gt;
* Grid and guidelines no longer vanish when changing their color.&lt;br /&gt;
&lt;br /&gt;
* Group transformation is now correctly re-applied when ungrouping and then undoing the ungroup operation.&lt;br /&gt;
&lt;br /&gt;
* Text dialog no longer discards the style of the selected text.&lt;br /&gt;
&lt;br /&gt;
* Inkscape no longer crashes when you try to unflow an empty flowed text.&lt;br /&gt;
&lt;br /&gt;
* Thanks to patches submitted by users of our community, Inkscape can now be built on SGI IRIX 6.5.28, gcc 3.4.0 systems and on Tru64 systems.&lt;br /&gt;
&lt;br /&gt;
= Known problems =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problem with &amp;quot;Dialogs on Top&amp;quot; on Windows ====&lt;br /&gt;
&lt;br /&gt;
* Although the &amp;quot;Dialogs on Top&amp;quot; option is now available on Windows (File &amp;gt; Inkscape Preferences &amp;gt; Windows), it does not work exactly as it should (yet!). When the document window is minimized, the dialogs remain visible, i.e. are not minimized together with the document window. Because of this, it is not possible to get the document window back by clicking its taskbar button. A workaround to this problem is to '''right-click the Inkscape taskbar button and select &amp;quot;Restore&amp;quot;.''' We expect that future releases of GTK will solve this problem.&lt;br /&gt;
&lt;br /&gt;
==== Spinbuttons may crash if you have GTK+ older than 2.10.7 ====&lt;br /&gt;
&lt;br /&gt;
* You may experience crashes after typing in a value into a spinbutton if you have a version of GTK+ 2.10.6 or older. Upgrade your GTK+ to fix this. (This does not affect the Windows package as it comes with GTK+ 2.10.9.)&lt;br /&gt;
&lt;br /&gt;
==== Numerical Python required for Perspective effect ====&lt;br /&gt;
&lt;br /&gt;
* This effect will not work until you install a python module called '''numpy''' (Numerical Python). It can be downloaded at [http://numpy.scipy.org/ numpy.scipy.org]. The Windows package already contains this module.&lt;br /&gt;
&lt;br /&gt;
==== Do not use a clone of an object as its clipping path/mask ====&lt;br /&gt;
&lt;br /&gt;
* In this version, you cannot use an object's clone as its clipping path or mask. Either unlink the clone first, or clip one clone of a source object (not the source itself) by another clone of the same. Properly fixing this bug requires some deep changes in the code and therefore was postponed until after 0.45 so as not to delay the release.&lt;br /&gt;
&lt;br /&gt;
==== Non-Unicode symbol fonts on Windows don't work ====&lt;br /&gt;
&lt;br /&gt;
* On Windows, symbol fonts without a Unicode map do not work. This is a limitation of the Pango library that we use.&lt;br /&gt;
&lt;br /&gt;
==== Problems with some Debian libgc-6.7 packages ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape will hang or crash when linked with the first Debian packaged version of the Boehm garbage collection library. This problem was fixed in version 1:6.7-2  of the package.  If you have libgc 6.7 on your Debian-based system, make sure that you are using that version of the package or later.&lt;br /&gt;
&lt;br /&gt;
==== Beware of defective themes on Linux ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape and other Gtk programs can crash on any Linux, when the &amp;lt;b&amp;gt;gtk2-engines-smooth / libsmooth&amp;lt;/b&amp;gt; package is installed. We have filed a bug against libsmooth which is now in gtk-engine and part of gnome. Removing the package resolves the problem. Update: this bug appears to be fixed in newer versions of gtk-engines. If you are affected by this problem please update to a newer version of gtk-engines. If problems persist then please inform the gtk-engines maintainers of the problem. &lt;br /&gt;
&lt;br /&gt;
* A similar crash happens if the &amp;lt;b&amp;gt;KDE Baghira&amp;lt;/b&amp;gt; theme or the package &amp;lt;b&amp;gt;gtk_qt_engine&amp;lt;/b&amp;gt; are installed. If you experience Inkscape crashes on KDE, please try to install a different theme from Baghira, or uninstall the gtk_qt_engine package from your system. Both problems also affect older versions of Inkscape.&lt;br /&gt;
&lt;br /&gt;
= Previous releases =&lt;br /&gt;
&lt;br /&gt;
* [[ReleaseNotes044]]&lt;br /&gt;
* [[ReleaseNotes043]]&lt;br /&gt;
* [[ReleaseNotes042]]&lt;br /&gt;
* [[ReleaseNotes041]]&lt;br /&gt;
* [[ReleaseNotes040]]&lt;br /&gt;
* [[ReleaseNotes039]]&lt;br /&gt;
* [[ReleaseNotes038]]&lt;br /&gt;
* [[ReleaseNotes037]]&lt;br /&gt;
* [[ReleaseNotes036]]&lt;br /&gt;
* [[ReleaseNotes035]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Marketing]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Creating_Inkscape_distributions&amp;diff=13952</id>
		<title>Creating Inkscape distributions</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Creating_Inkscape_distributions&amp;diff=13952"/>
		<updated>2007-03-13T18:37:42Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* Creating a distribution source tarball package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Creating Dists of Inkscape ==&lt;br /&gt;
&lt;br /&gt;
Those who wish to produce packaged releases of inkscape are welcome to do so.&lt;br /&gt;
If it is packages changes that you've made to the official release, please select a&lt;br /&gt;
version name that distinguishes it from the official version, to avoid confusion.  For&lt;br /&gt;
example, “inkscape-0.35-johndoe.tar.gz”.  Please consider distributing your changes&lt;br /&gt;
as a patch rather than as a full distribution, as patches tend to be easier to &lt;br /&gt;
maintain.&lt;br /&gt;
&lt;br /&gt;
Inkscape's release process works like this:&lt;br /&gt;
&lt;br /&gt;
# Start of release process - Finish up work on features.&lt;br /&gt;
# Feature Freeze Mode - Shift focus from feature implementation to bug fixing&lt;br /&gt;
# Hard Freeze - Two freeze wardens are named.  All development must be done as patches submitted to the freeze wardens for review and integration.&lt;br /&gt;
# Branch - The codebase is tagged and branched.  Final release tarball is posted.  The codebase is returned to regular open development.&lt;br /&gt;
# Packaging - Three days are allowed for creating release dists (rpm's, deb's, exe's, and autopackages).&lt;br /&gt;
# Release Announcement - A Release Announcement and a Press Release are written and circulated to relevant online news sites.  Our Freshmeat record is updated.  &lt;br /&gt;
&lt;br /&gt;
=== Feature Freeze Mode ===&lt;br /&gt;
&lt;br /&gt;
In the run-up to [[CreatingDists]], for a short time preceding the tagging of the release it's a good idea to hold off on adding new features or doing other major changes like architectural changes to the code that might decrease its stability.  Whether a change is minor enough to be “ok” is left to the developer's judgement, and they're trusted to be conservative and careful.&lt;br /&gt;
&lt;br /&gt;
The most useful activity to do during a feature freeze is to locate and/or fix bugs that produce crashes, and to do so with the smallest amount of change to the codebase possible.  If a “proper” fix requires architectural changes or redesign of the code, consider writing that up as a post-release task.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
It might be useful to branch off a release branch a week before making the release.  Hopefully most people using CVS would switch to this branch at this time.  Then only bug fixes can go into that branch.  --[[Ted]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Branching the release candidate ===&lt;br /&gt;
&lt;br /&gt;
Before release, a branch should have been be created for that release in the form RELEASE_&amp;lt;major&amp;gt;_&amp;lt;minor&amp;gt;_BRANCH.  For example, 0.38 should have a branch called RELEASE_0_38_BRANCH.&lt;br /&gt;
&lt;br /&gt;
Minor fixes and code review can then be performed on that branch before the final release; it also permits making future point releases easily (if necessary).&lt;br /&gt;
&lt;br /&gt;
To create the release branch, do the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;svn copy https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/branches/RELEASE_0_38_BRANCH&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To check out this branch:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;svn checkout https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/branches/RELEASE_0_38_BRANCH inkscape-0.38-branch&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the release is deemed ready a distribution tarball should be created as below.&lt;br /&gt;
&lt;br /&gt;
=== Creating a distribution source tarball package ===&lt;br /&gt;
&lt;br /&gt;
On the release branch (NOT ON HEAD):&lt;br /&gt;
&lt;br /&gt;
* Set the version name via the file configure.ac in the AC_INIT() macro, Makefile.mingw.common, packaging/win32/inkscape.nsi, src/inkscape_version.h.mingw, debian/changelog, build.xml, and in build28.xml&lt;br /&gt;
* Run `perl packaging/mkNEWS 0.45 &amp;gt; NEWS` to add the release notes into the NEWS file in the release branch. This command requires perl and lynx. Don't forget to replace 0.45 with the correct version number.&lt;br /&gt;
* Run ./autogen.sh &amp;amp;&amp;amp; ./configure (with any flags, e.g. CXXFLAGS=).&lt;br /&gt;
* Run “cd src &amp;amp;&amp;amp; make helper/sp-marshal.h helper/sp-marshal.cpp inkscape_version.h &amp;amp;&amp;amp; perl mkfiles.pl &amp;amp;&amp;amp; perl mkdep.pl”, then do “cvs -q diff -du make.*|less” to check for anything strange (e.g. source files accidentally added or removed), and finally “cvs commit -m '' make.*”.&lt;br /&gt;
* Run &amp;quot;cd po &amp;amp;&amp;amp; make update-po&amp;quot; to update the translation files.  This especially must be done after string freeze.&lt;br /&gt;
* Make sure the code passes a “make distcheck”&lt;br /&gt;
* This should produce inkscape-VERSION.tar.gz&lt;br /&gt;
* Commit the changed configure.ac and other files to the branch&lt;br /&gt;
* Tag the release in CVS&lt;br /&gt;
&lt;br /&gt;
Release tags should be in the form RELEASE_&amp;lt;major&amp;gt;_&amp;lt;minor&amp;gt;_&amp;lt;point&amp;gt;. A non-point-release like 0.38 would get the tag RELEASE_0_38_0, 0.38.1 would get the tag RELEASE_0_38_1, and so on.&lt;br /&gt;
&lt;br /&gt;
On HEAD:&lt;br /&gt;
&lt;br /&gt;
* Add the release notes into the NEWS file in the release branch &lt;br /&gt;
* Change configure.ac and inkscape_version.h.mingw to reflect the new future version&lt;br /&gt;
&lt;br /&gt;
=== GPG signing Tarballs === &lt;br /&gt;
&lt;br /&gt;
Downstream packagers are asking for and may soon demand gpg signed tarballs. For Fedora, this is not a requirement, but does ease acceptance of packages. It also shows we are doing “The Right Thing”. md5sums are not foolproof.&lt;br /&gt;
 &lt;br /&gt;
* To create a gpg signed tarball:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$gpg -u packager@foo.net --armor --output tarball.sig --detach-sig tarball.tar.gz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To verify :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$gpg --verify ./tarball.asc ./tarball.tar.gz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course, this step doesn't mean much in practice unless people have a trust path to your key.  Packagers are encouraged to attend key signing parties and take other measures to establish important trust paths to their keys (particularly with downstream packagers).&lt;br /&gt;
&lt;br /&gt;
:Where are the public keys matching these sig's posted?&lt;br /&gt;
&lt;br /&gt;
=== Creating a Windows Distro ===&lt;br /&gt;
Inkscape/sodipodi has always been&lt;br /&gt;
buildable on Win32.  The problem with the sodipodi and original inkscape build, though,&lt;br /&gt;
was that the Win32 builder had to download and configure&lt;br /&gt;
a lot of things to make it to work.    Mingw, MSYS, automake,&lt;br /&gt;
autoconf, pkg-config, the codepages, etc.  He would spend more&lt;br /&gt;
time on THAT than the actual code.&lt;br /&gt;
&lt;br /&gt;
What a pain for the average developer/user who merely wants&lt;br /&gt;
to make Inkscape do what he wants it to do.  Why waste&lt;br /&gt;
days and days getting it to compile, when the developer&lt;br /&gt;
would rather be working on the program itself?&lt;br /&gt;
&lt;br /&gt;
So we spent several weeks collecting libraries, building others,&lt;br /&gt;
installing the codepages into the source (which we can delete soon&lt;br /&gt;
because of Pango) and creating a set of clean makefiles&lt;br /&gt;
that work on Win9x, NT, XP, and the cross-compiler.&lt;br /&gt;
It is a bit more work for people like me, but hopefully it&lt;br /&gt;
attains its goal of saving a lot of work for other people.&lt;br /&gt;
&lt;br /&gt;
Also, remember that on Unix/Linux,  $PREFIX is commonly&lt;br /&gt;
/usr/local  or  /usr  or something like that.   On M$, all of&lt;br /&gt;
a program's files are typically located in their own directory.  So all&lt;br /&gt;
of the files are located relative to “.”.  Actually, relative to&lt;br /&gt;
the .exe that is currently running.&lt;br /&gt;
&lt;br /&gt;
.....anyway, just wanted to explain that there is a reason&lt;br /&gt;
for the Win32 build to be constructed in such a manner,&lt;br /&gt;
and that we haven't just been arbitrary.&lt;br /&gt;
&lt;br /&gt;
Once the tree is built (“make -f Makefile.mingw” and “make -f Makefile.mingw dist-strip”) into the “inkscape” directory, the [http://nsis.sourceforge.net/ NSIS] installer script “inkscape.nsi” can be run to create the self-extracting win32 installer.&lt;br /&gt;
&lt;br /&gt;
The Windows download package should be named according to the following scheme:&lt;br /&gt;
&lt;br /&gt;
    inkscape-$RELEASE-$PKG.$WINVER.exe&lt;br /&gt;
&lt;br /&gt;
Where $WINVER is the required Windows version, e.g. “win32”.  For example:&lt;br /&gt;
&lt;br /&gt;
    inkscape-0.37-1.win32.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Creating a Debian .deb ===&lt;br /&gt;
&lt;br /&gt;
The article [[CompilingDebian]] provides a makefile to download a tarball and build a debian package therefrom.&lt;br /&gt;
&lt;br /&gt;
=== Creating a distribution RPM ===&lt;br /&gt;
&lt;br /&gt;
Method A:&lt;br /&gt;
# do as above for tarball, or download the release tarball&lt;br /&gt;
# login as root&lt;br /&gt;
# rpmbuild -tb inkscape-x.x.tar.gz&lt;br /&gt;
# Your RPMs will be in /usr/src/rpm[[/RPMS]] (/usr/src/redhat on RH systems)&lt;br /&gt;
# RPMs should be GPG signed&lt;br /&gt;
&lt;br /&gt;
Method B:&lt;br /&gt;
# do as above for tarball, or download the release tarball&lt;br /&gt;
# mkdir ~/rpm&lt;br /&gt;
# Copy the tarball to ~/rpm/SOURCES/&lt;br /&gt;
# Copy the inkscape.spec from the tarball to ~/rpm/SPECS/inkscape.spec&lt;br /&gt;
# rpmbuild -ba ~/rpm/SPECS/inkscape.spec&lt;br /&gt;
# Your RPMs will be in ~/rpm/RPMS and ~/rpm/SRPMS&lt;br /&gt;
# RPMs should be GPG signed&lt;br /&gt;
&lt;br /&gt;
The rpm should be named according to the following pattern:&lt;br /&gt;
&lt;br /&gt;
   inkscape-$RELEASE-$PKG.$DISTRO.$ARCH.rpm&lt;br /&gt;
&lt;br /&gt;
Where:&lt;br /&gt;
&lt;br /&gt;
$RELEASE: the Inkscape release number, such as “0.37”, “0.36.2”, etc.  &lt;br /&gt;
The third number should be omitted if it is 0.  (I.e., 0.37 instead of 0.37.0)&lt;br /&gt;
&lt;br /&gt;
$PKG:  A version number for your package.  Use a value of 1 for your package, and increment it if you&lt;br /&gt;
need to update the released package for some reason.&lt;br /&gt;
&lt;br /&gt;
$DISTRO:  The name and an indicator of the version number for the distro.  E.g.,&lt;br /&gt;
rh71, rh90, mdk91, suse90, fc1, etc.  No need to be too exhaustive with the distro versions;&lt;br /&gt;
for a given brand of distro it's probably enough to have a reasonably “modern” release&lt;br /&gt;
and an older one for legacy support.  For instance, rh71 and rh90.&lt;br /&gt;
&lt;br /&gt;
$ARCH:  The architecture that the package was built on.  E.g., i686, i386, athlon, ppc, etc.&lt;br /&gt;
Don't bother with i586 - either i386 or i686 is preferred.  The i386 packages will run on Cyrix &lt;br /&gt;
and K-6.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
   inkscape-0.37-1.mdk80.i386.rpm&lt;br /&gt;
   inkscape-0.37-1.mdk80.i686.rpm&lt;br /&gt;
   inkscape-0.37-1.mdk91.i386.rpm&lt;br /&gt;
   inkscape-0.37-1.mdk91.i686.rpm&lt;br /&gt;
&lt;br /&gt;
   inkscape-0.37-1.fc1.i386.rpm&lt;br /&gt;
   inkscape-0.37-1.fc1.i686.rpm&lt;br /&gt;
   inkscape-0.37-1.fc1.athlon.rpm&lt;br /&gt;
   inkscape-0.37-1.fc1.ppc.rpm&lt;br /&gt;
&lt;br /&gt;
For creating spec files, feel free to list yourself as the packager, but please use &lt;br /&gt;
inkscape-devel@lists.sourceforge.net as the contact email address, to ensure that&lt;br /&gt;
questions/complaints about the RPM go to the official support channel.&lt;br /&gt;
&lt;br /&gt;
==== Patching RPMs ====&lt;br /&gt;
&lt;br /&gt;
Occasionally, the RPM will not build without some modifications.  If the problem is serious enough that it affects every packaging format, this could signal a need to do a point release, but usually you can just add a patch specifically for the RPM.  This is what RPM is for, after all.  :-)&lt;br /&gt;
&lt;br /&gt;
Here's how to do it:&lt;br /&gt;
&lt;br /&gt;
1.  Create a copy of the source tree, with the modifications needed to correct the issue.&lt;br /&gt;
2.  Generate a patch like this:&lt;br /&gt;
&lt;br /&gt;
   $ diff -uNr package-1.0/ package-1.0p/ &amp;gt; ../SOURCES/package-1.0-my.patch&lt;br /&gt;
&lt;br /&gt;
3.  Next add the patch to the RPM.  In the specfile at %_topdir/SPECS/package.spec, add a line like this at the top of the file:&lt;br /&gt;
&lt;br /&gt;
   Patch0: package-1.0-my.patch&lt;br /&gt;
&lt;br /&gt;
Then further down add a line after the %setup section, like this:&lt;br /&gt;
&lt;br /&gt;
   %prep&lt;br /&gt;
   %setup ...&lt;br /&gt;
   %patch0 -p1&lt;br /&gt;
&lt;br /&gt;
It's a very good idea to split up changes into discrete patches, giving each a different number (they don't have to be consecutively numbered).  Also, be sure to upload the patch(es) to the patch tracker so they'll get into the codebase for the next release.&lt;br /&gt;
&lt;br /&gt;
Then rebuild the package like this:&lt;br /&gt;
&lt;br /&gt;
   rpmbuild -ba SPECS/package.spec&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Signing your package ===&lt;br /&gt;
&lt;br /&gt;
First, you need to have a public/private keypair. This can be generated with gpg using 'gpg --gen-key'.&lt;br /&gt;
&lt;br /&gt;
To add a signature to an extisting package, use the command rpm --addsign /path/to/package.rpm To sign in the process of building a package, use rpmbuild -bb --sign&lt;br /&gt;
&lt;br /&gt;
To check the signature on a package, use rpm --checksig.&lt;br /&gt;
&lt;br /&gt;
=== Releasing Dists on the [[SourceForge]] File Release Tool ===&lt;br /&gt;
&lt;br /&gt;
To release a file:  (You need Release Tech permission for your Inkscape account)&lt;br /&gt;
&lt;br /&gt;
* ftp upload.sf.net  (anonymous/anonymous)&lt;br /&gt;
* cd incoming&lt;br /&gt;
* mput filename&lt;br /&gt;
* go to Admin -&amp;gt; File Releases&lt;br /&gt;
* scroll to the bottom and click [Add Release] to the inkscape item&lt;br /&gt;
* Enter 0.35 in the box &amp;amp; click “Create this Release”&lt;br /&gt;
* Fill in the form, checkbox the file you uploaded in (c)&lt;br /&gt;
* It won't give you a clear “success” message, but you can check it got in right by going to the Files list.  You can then edit any of the info you entered, to make it more correct.&lt;br /&gt;
&lt;br /&gt;
Also see [[CVSNamingConventions]] if you are making a release. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Announcing Releases ===&lt;br /&gt;
&lt;br /&gt;
When you cut a release, send a copy of the release notes as an announcement to inkscape-announce@lists.sourceforge.net.&lt;br /&gt;
If you find other mailing lists or websites that should receive the announcements, add their email address to the inkscape-announce list.  This is done by a list admin such as Bryce Harrington.&lt;br /&gt;
&lt;br /&gt;
'''[[AnnouncingReleases]]''' - Keep an eye out for other places we could announce such as distros or graphics-related sites (not only Linux-centric!).&lt;br /&gt;
&lt;br /&gt;
=== Updating Website Collateral ===&lt;br /&gt;
&lt;br /&gt;
When a new release is cut, there are several pieces of info that need to be added to the website:&lt;br /&gt;
&lt;br /&gt;
* Add a news item on front page&lt;br /&gt;
* Review/revise FAQ&lt;br /&gt;
* Review/revise Roadmap&lt;br /&gt;
* Add or revise Screenshots (if appropriate)&lt;br /&gt;
* doc directory: Add the manpage for the release, update doc/keys.html file, and change the corresponding version number(s) in doc/index.php.&lt;br /&gt;
** From the shell on inkscape.org, cd to /home/inkscape/inkscape_web and run the command “(cd ../inkscape; svn update; chmod g+w -R * 2&amp;gt;/dev/null); pod2html --cachedir=/tmp --infile=../inkscape/inkscape.pod --outfile=doc/inkscape-man.html”.&lt;br /&gt;
&lt;br /&gt;
[[Category:Help Wanted]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=13951</id>
		<title>Release notes/0.45</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=13951"/>
		<updated>2007-03-13T18:31:45Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* Inkscape 0.45.1 changes with respect to 0.45 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Inkscape 0.45.1 changes with respect to 0.45 =&lt;br /&gt;
&lt;br /&gt;
*Patch [ 1667939 ]: fix crash when tile-tracing with too small clones&lt;br /&gt;
*Patch [ 1666532 ]: Broken link in inkview man page&lt;br /&gt;
*Patch [ 1665447 ]: fix for the blur quantization bug 1617082&lt;br /&gt;
*Patch [ 1664849 ]: fix for 1662589: increase blur margins&lt;br /&gt;
*Patch [ 1664004 ]: embedimage.py with fixed search order&lt;br /&gt;
*Patch [ 1662649 ]: markers.svg with reversed order&lt;br /&gt;
*Crudely improve check-markup for &amp;amp;#123; markup, fix translations with bugs in that area (dz and zh_TW).&lt;br /&gt;
*Patch [ 1659404 ]: Set locale directory from environment variable&lt;br /&gt;
*Patch [ 1657072 ]: fix for bug 1654495&lt;br /&gt;
*Patch [ 1654636 ]: defocus dropper checkboxes&lt;br /&gt;
*Updated slovak translation&lt;br /&gt;
*Adding japanese.nsh and russian.nsh into files that should go into the release tarball&lt;br /&gt;
*Correct russian translation&lt;br /&gt;
*Patch [ 1651797 ]: fix for attributes when saving/save-a-copy&lt;br /&gt;
*Patch [ 1651752 ]: fix dropper tool&lt;br /&gt;
*Pattern along path extension fixed on Windows&lt;br /&gt;
*Include libtiff3.dll in the Windows distribution, fixing crash when opening TIFF files&lt;br /&gt;
*Patch [ 1673067 ]: fix blur export on flowtext&lt;br /&gt;
*Patch [ 1678075 ]: fix FontInstance.cpp compile issue&lt;br /&gt;
*Patch [ 1673502 ]: fix broken Envelope (Summers Night) effect&lt;br /&gt;
&lt;br /&gt;
= Inkscape 0.45: overview =&lt;br /&gt;
&lt;br /&gt;
This release brings the exciting new features developed by the Google Summer of Code 2006 participants, as well as tons of other improvements across the board. Here are the highlights:&lt;br /&gt;
&lt;br /&gt;
* '''Gaussian blur''' is the first SVG filter supported by Inkscape. You can blur any object to any extent - yet it remains vector and fully editable. This gives a huge boost to Inkscape as a creative art tool.&lt;br /&gt;
&lt;br /&gt;
* '''Display speed and interactivity''': not only does Inkscape render faster, but it can now respond to user input before it finished redrawing the screen, which greatly improves the responsiveness (perceived speed or interactivity) of the program.&lt;br /&gt;
&lt;br /&gt;
* '''History dialog''' makes it easy to to review your editing session and jump to any step of it, undoing and redoing multiple actions with one click.&lt;br /&gt;
&lt;br /&gt;
* Several important tool features are added, notably the new selection mode in '''Node tool''' and the adjustable rounded caps in '''Calligraphic pen'''.&lt;br /&gt;
&lt;br /&gt;
* '''Bitmap tracing''' works better for multi-color traces, sports a redesigned dialog and several new options.&lt;br /&gt;
&lt;br /&gt;
* Many new '''extension effects''' are added, including '''Color effects''' and '''Pattern along path'''. &lt;br /&gt;
&lt;br /&gt;
* The '''Outline mode''' has got many fixes and improvements, including a keyboard shortcut.&lt;br /&gt;
&lt;br /&gt;
* Several new commands in '''Help''' menu open various Inkscape-related pages in your default browser, making Inkscape reference information more accessible as you work. &lt;br /&gt;
&lt;br /&gt;
* Dozens of smaller '''features''' are added throughout the program, and hundreds of '''bugs''' are fixed.&lt;br /&gt;
&lt;br /&gt;
= SVG filters: Gaussian blur =&lt;br /&gt;
&lt;br /&gt;
Thanks to Google's Summer of Code program, Inkscape now has basic support for [http://www.w3.org/TR/SVG11/filters.html SVG filters]. The only filter enabled so far is '''Gaussian blur'''. &lt;br /&gt;
&lt;br /&gt;
With it, you can softly and naturally blur any Inkscape objects: paths, shapes, groups, text, images. Clones inherit blurring from their original, but they can also be blurred independently from the original (you can create blurred clones with Tile Clones, too). Both the fill and stroke of an object are blurred together, creating semitransparent margins that smoothly blend into the background. &lt;br /&gt;
&lt;br /&gt;
Gaussian blur enables a wide range of photorealistic effects: arbitrarily shaped shades and lights, depth of field, drop shadows, glows, etc. Also, blurred objects can be used as masks for other objects to achieve the &amp;quot;feathered mask&amp;quot; effect.&lt;br /&gt;
&lt;br /&gt;
* To blur selected objects, open the Fill and Stroke dialog (Ctrl+Shift+F) and use the '''Blur''' slider. The blur value is a percentage, with 100% corresponding to a blurring radius (standard deviation of Gaussian function) of 1/8 of the object's bounding box' perimeter (that is, for a square, a blur of 100% will have the radius equal to half a side, which turns any shape into an amorphous cloud). &lt;br /&gt;
&lt;br /&gt;
* The '''Tile Clones''' dialog also supports blurring. On the '''Blur &amp;amp; opacity''' tab, you can set the blur percentage per row or per column of your tiling, as well as randomize blurring and make it alternate (all the same options as for Opacity).&lt;br /&gt;
&lt;br /&gt;
* The quality of on-screen blur display is controlled by the '''Blur quality''' option on the new '''Filters''' tab of Inkscape Preferences (Ctrl+Shift+P). The available options range from best quality/slowest display to worst quality/fastest display, the default being in the middle of the range. Any setting except the &amp;quot;best quality&amp;quot; may introduce some rendering artifacts, especially when blurring thin strokes; on the other hand, the &amp;quot;best quality&amp;quot; setting may make Inkscape extremely slow at high zooms. These settings only affect the screen display of blurred objects; bitmap export always uses the best quality (and may therefore become quite slow for images with a lot of blur).&lt;br /&gt;
&lt;br /&gt;
Here are a few tips on using blur:&lt;br /&gt;
&lt;br /&gt;
* '''Masks and clipping''' are applied ''after'' blur. That is, if you clip an object and then blur it (or blur it first and then clip - it makes no difference), the clipped edges will remain crisp. Often, this is what you want. If, however, you want to blur the clipped/masked edges too (possibly with a different radius), you can use grouping: group the clipped object with some other object (which you can then delete from the group) and blur the group.&lt;br /&gt;
&lt;br /&gt;
* A simple '''drop shadow''' is now very easy to do: just copy the object, paint the copy black, blur it, shift away a bit and lower it to the bottom. However, such a shadow does not update when you edit the foreground object. If your object is already black (or, more generally, if you want the shadow to be the same color as the object), you can clone instead of copy to make the shadow auto-updating. But what if your foreground object is not black but you need an auto-updating black shadow? Here's a recipe: unset the object's fill (it becomes black); create ''two'' clones of it; put one clone on top and paint any color you want; put the other clone at bottom, blur it and shift sideways. Now you can edit the unset-fill original (use Alt+click to select it) and everything will update. &lt;br /&gt;
&lt;br /&gt;
* If an object has a fill that you don't want to blur (e.g. pattern, or if it's a bitmap), but you just want to '''feather the edges''', use a blurred transparency mask. For this, copy the object; paint it white; blur it as needed; scale the blurred copy down so its blur margins are entirely within the original object; select both the original and the blurred mask; do Object &amp;gt; Mask &amp;gt; Set.&lt;br /&gt;
&lt;br /&gt;
* '''Transforming''' a blurred object '''transforms its blur''', too. This applies to a non-uniform scaling as well, so by squeezing a blurred object you make its blur squeezed as well. So, the easiest way to blur a path horizontally more than vertically is this: stretch it upwards without blur, then apply blur and squeeze it back into the original shape. (This only works if the stretched path does not already have a Transform attribute.)&lt;br /&gt;
&lt;br /&gt;
* You can combine '''blurring with gradients'''. For example, an ellipse with elliptic opacity gradient will look much softer and more natural when blurred. An object with a horizontal linear opacity gradient, when blurred, will look as if it's more blurred on its transparent side than on its opaque side.&lt;br /&gt;
&lt;br /&gt;
* A '''clone of a blurred object''' inherits the blur of the original. Therefore, such a clone can be blurred ''more'', but you can't &amp;quot;unblur&amp;quot; it to make the clone sharper than its original (unless, of course, you unlink it). The Fill and Stroke dialog shows you the amount of the blur applied to this particular object; however, if the object is a clone of an already blurred original, the dialog does not reflect that.&lt;br /&gt;
&lt;br /&gt;
* Note that '''Firefox 2.0''' does not support SVG filters, so your files will be displayed in Firefox 2.0 without blur. However, filter support has been added  in the current development version and will be included in Firefox 3.0. The Opera web browser, as well as librsvg (used by Wikipedia) and Batik, support filters correctly in their current versions.&lt;br /&gt;
&lt;br /&gt;
= Undo history =&lt;br /&gt;
&lt;br /&gt;
* Inkscape now features a &amp;lt;b&amp;gt;History Dialog&amp;lt;/b&amp;gt; accessible via &amp;lt;b&amp;gt;Ctrl+Shift+H&amp;lt;/b&amp;gt; or Edit &amp;amp;gt; Undo History. All changes made to the document since it was opened are recorded here.&lt;br /&gt;
&lt;br /&gt;
:* In the dialog, changes are listed from the '''oldest (top)''' to the '''newest (bottom)'''. &lt;br /&gt;
&lt;br /&gt;
:* The type of each change is indicated by an '''icon''' and a short '''description'''.&lt;br /&gt;
&lt;br /&gt;
:* For readability, consecutive changes of the same type are placed in a '''collapsible branch''' showing a triangle marker and the number of the hidden actions in the branch.&lt;br /&gt;
&lt;br /&gt;
:* By clicking on an event in the list, you can easily '''move through the undo history''', i.e. undo or redo any number of actions with one click.&lt;br /&gt;
&lt;br /&gt;
* The Undo and Redo commands in the Edit menu display the descriptions of the commands to be undone and redone, correspondingly. (These are the same descriptions that you see in the History dialog.)&lt;br /&gt;
&lt;br /&gt;
= Rendering improvements =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Interruptible display&amp;lt;/b&amp;gt;: Previously, Inkscape could not do anything until it finishes the current screen redraw. Now the redraw is made interruptible, so that Inkscape responds to mouse and keyboard input and can abort the current redraw and start over if you do some screen-changing operation. As a result, Inkscape now feels '''much snappier and more interactive'''. This interruptibility is fine-tuned for some continuous-drag operations (such as node dragging) so that a balance is achieved between responsiveness and completeness of display.&lt;br /&gt;
&lt;br /&gt;
* Screen render is faster by '''2-3%''' overall:&lt;br /&gt;
&lt;br /&gt;
:* Complex drawings with '''transparency''' are faster by up to '''5%'''.&lt;br /&gt;
&lt;br /&gt;
:* '''Radial gradients''' are rendered faster by at least '''10%'''.&lt;br /&gt;
&lt;br /&gt;
* Rendering (compositing) quality has been improved. This is most visible with (partially) transparent gradients: '''banding''' is a lot less pronounced now. Speed has also been improved in some cases.&lt;br /&gt;
&lt;br /&gt;
* Display is more responsive when working at high zoom levels when using a tablet.&lt;br /&gt;
&lt;br /&gt;
= Tools = &lt;br /&gt;
&lt;br /&gt;
== Node tool ==&lt;br /&gt;
&lt;br /&gt;
* You can &amp;lt;b&amp;gt;grow or shrink node selection&amp;lt;/b&amp;gt; by hovering the mouse pointer over a node and using &amp;lt;b&amp;gt;mousewheel&amp;lt;/b&amp;gt; (up = grow, down = shrink) or the keys &amp;lt;b&amp;gt;PageUp&amp;lt;/b&amp;gt; (grow) and &amp;lt;b&amp;gt;PageDown&amp;lt;/b&amp;gt; (shrink). ''Growing'' adds the closest unselected node to the selection; shrinking deselects the farthest selected node. There are two modes that differ by how the closest/farthest nodes are chosen:&lt;br /&gt;
&lt;br /&gt;
:* &amp;lt;b&amp;gt;Spatial selection&amp;lt;/b&amp;gt; (mousewheel, PageUp/PageDown): distances to nodes are measured directly, regardless of which subpath a node belongs to. &lt;br /&gt;
&lt;br /&gt;
:* &amp;lt;b&amp;gt;Linear selection&amp;lt;/b&amp;gt; (Ctrl+mousewheel, Ctrl+PageUp/Ctrl+PageDown): node distances are measured ''along the path'', and only the nodes belonging to the same subpath as the hovered node are considered (i.e. other subpaths are never selected).&lt;br /&gt;
&lt;br /&gt;
:This technique is convenient for quickly selecting an area in a complex path starting from a center - for example, for node sculpting.&lt;br /&gt;
&lt;br /&gt;
== Dropper ==&lt;br /&gt;
&lt;br /&gt;
* Instead of the confusing toggle button, now the Controls bar for the Dropper tool has two checkboxes, '''Pick alpha''' and '''Set alpha''', which work as follows. Suppose you have an object selected and, using Dropper, click on an object which has red (#FF0000) fill and 0.5 opacity (half-transparent).&lt;br /&gt;
&lt;br /&gt;
:* If the &amp;quot;Pick alpha&amp;quot; checkbox is off, the selected object will get the fill color #800000 (i.e. faded-out red) and fill opacity will be at 1.0 (opaque). &lt;br /&gt;
&lt;br /&gt;
:* If the &amp;quot;Pick alpha&amp;quot; checkbox is on but &amp;quot;Set alpha&amp;quot; is off, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 1.0. &lt;br /&gt;
&lt;br /&gt;
:* If both &amp;quot;Pick alpha&amp;quot; and &amp;quot;Set alpha&amp;quot; are on, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 0.5 (half-transparent). &lt;br /&gt;
&lt;br /&gt;
:If you Shift+click instead of click, the same changes will be made to stroke color and stroke opacity, correspondingly. Note that in no situation can Dropper change the ''master opacity'' of the selected object(s) (only the fill/stroke opacity), although it can pick it just as it does any other kind of opacity.&lt;br /&gt;
&lt;br /&gt;
== Calligraphy ==&lt;br /&gt;
&lt;br /&gt;
* A new numeric parameter, &amp;lt;b&amp;gt;Caps&amp;lt;/b&amp;gt;, controls the amount of protruding at the ends of calligraphic strokes. This parameter can range from 0 (flat caps, default behavior in previous versions) through 1 (approximately half-circle caps) and up to 5 (long elliptic caps). Rounded caps much improve the look of low-fixation strokes, simulating a rounded pen.  &lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Drag&amp;quot; parameter has been renamed to &amp;lt;b&amp;gt;Wiggle&amp;lt;/b&amp;gt; with a value inversion (i.e. low drag corresponds to high wiggle, and vice versa). Increase this parameter (default is 0) to make the pen waver and wiggle in curly patterns.&lt;br /&gt;
&lt;br /&gt;
* As a first step towards a redesign of the tools' controls, the '''Controls bar of the Calligraphy pen''' has been upgraded. Now it no longer prevents the Inkscape window from resizing narrower than the bar. The items on the far right end of the bar which didn't fit in a narrow window are still accessible through an '''expansion menu''' which allows you to toggle switches, select commands, and set values of numeric fields. Also, each editable numeric value field has a new '''right-click menu''' with some common values which often allows you to set a desired value much faster than by scrolling the control or typing the value into it.&lt;br /&gt;
&lt;br /&gt;
* With low or zero Fixation parameter, some users of tablet pens experienced &amp;quot;blobs&amp;quot; (brief reversals of a stroke's right/left edges, causing &amp;quot;holes&amp;quot; and &amp;quot;bubbles&amp;quot; in a calligraphic stroke), especially often at the start of a stroke. Hopefully this problem is now fixed without reducing the responsiveness of the tool.&lt;br /&gt;
&lt;br /&gt;
= Outline mode =&lt;br /&gt;
&lt;br /&gt;
* A new menu command (&amp;lt;b&amp;gt;View &amp;gt; Display Mode &amp;gt; Toggle&amp;lt;/b&amp;gt;) and a new keyboard shortcut (&amp;lt;b&amp;gt;Ctrl+&amp;amp;lt;keypad 5&amp;amp;gt;&amp;lt;/b&amp;gt;) switch the display mode from Normal to Outline and back.&lt;br /&gt;
&lt;br /&gt;
* The window title displays &amp;quot;&amp;lt;b&amp;gt;(outline)&amp;lt;/b&amp;gt;&amp;quot; next to the file name when that editing window is in Outline mode. &lt;br /&gt;
&lt;br /&gt;
* An object with &amp;lt;b&amp;gt;mask and/or clipping path&amp;lt;/b&amp;gt;, when viewed in Outline mode, now displays both the object itself and its clipping path and mask as objects, using different outline colors. By default, &amp;lt;b&amp;gt;clippaths use green&amp;lt;/b&amp;gt; outlines, and &amp;lt;b&amp;gt;masks use blue&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Images&amp;lt;/b&amp;gt; in Outline mode are displayed as &amp;lt;b&amp;gt;red&amp;lt;/b&amp;gt; (by default) frames with two diagonals.&lt;br /&gt;
&lt;br /&gt;
* An object with no fill and no stroke, invisible and not selectable by mouse clicking in normal mode, can now be &amp;lt;b&amp;gt;picked by a mouse click&amp;lt;/b&amp;gt; in the Outline mode using its visible outline.&lt;br /&gt;
&lt;br /&gt;
* The bug whereby stroked shapes didn't change stroke width when switching to Outline mode or back is fixed.&lt;br /&gt;
&lt;br /&gt;
* All outline colors are changeable by editing the &amp;quot;wireframecolors&amp;quot; group inside &amp;quot;options&amp;quot; in the preferences file (~/.inkscape/preferences.xml). The &amp;quot;onlight&amp;quot; and &amp;quot;ondark&amp;quot; attributes set the colors of the regular object outlines on light and dark backgrounds (default black and white correspondingly); the &amp;quot;images&amp;quot;, &amp;quot;clips&amp;quot;, and &amp;quot;masks&amp;quot; attributes set the colors of images, clipping paths, and masks (defaults are red, green, and blue correspondingly). Each attribute is a decimal integer corresponding to the hex RRGGBBAA of the color.  &lt;br /&gt;
&lt;br /&gt;
* To cater for specialized uses, such as preparing input for personal media cutters, Inkscape now has an option to start in the Outline mode upon launch. To enable this, add the following line to your preferences.xml file:&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;group id=&amp;quot;startmode&amp;quot; outline=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:placing it after the &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; opening tag.&lt;br /&gt;
&lt;br /&gt;
= Keyboard profiles =&lt;br /&gt;
&lt;br /&gt;
The previous release allowed sets of keybindings (keymaps) to be created for Inkscape in the style of other applications.  Two more keymaps have been added:  &lt;br /&gt;
&lt;br /&gt;
* '''Adobe Illustrator''' &lt;br /&gt;
* '''Macromedia Freehand'''&lt;br /&gt;
&lt;br /&gt;
Of course not every feature in these other programs has a direct match to features in Inkscape; so, if you can, please '''help us out''' by reporting any problems you may have or improvements you would like to request.&lt;br /&gt;
&lt;br /&gt;
Additionally, a keymap that focuses on tablet-based illustration and drawing work has been added:&lt;br /&gt;
&lt;br /&gt;
* '''right-handed-illustration.xml'''&lt;br /&gt;
&lt;br /&gt;
This keymap places all commonly-used commands under the left hand, so that the user's hands rarely leave the keyboard or the tablet/stylus.&lt;br /&gt;
&lt;br /&gt;
(To enable a profile, copy it into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; in the same directory, overwriting the old file. To restore the default Inkscape set, copy &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
More of Inkscape's keys are implemented as actions and are therefore available for remapping via keyboard profiles. New actions include '''EditSelectNext''' and '''EditSelectPrev''' for selecting next/previous object or node (by default, they are bound to Tab/Shift+Tab; as a result of becoming global actions, these keys now work in all tools and not only in Selector and Node tool as before).&lt;br /&gt;
&lt;br /&gt;
= Extension effects =&lt;br /&gt;
&lt;br /&gt;
Inkscape's extension effects, written in Python using the '''inkex''' utility class, are currently a major growth point of the project. They allow new developers to create functionality very quickly, without having to learn Inkscape's huge C/C++ codebase. However, eventually we plan to move many of these effects into the core of Inkscape, which will make them much faster and more interactive. From this viewpoint, effects can be considered a quick way to prototype and test the algorithms and UI controls of the future Inkscape features. However, this does not prevent effects from being genuinely useful in everyday work, and in this version we have several excellent additions. &lt;br /&gt;
&lt;br /&gt;
== New effects ==&lt;br /&gt;
&lt;br /&gt;
* '''Pattern along path''': A new powerful extension in the &amp;quot;Generate from path&amp;quot; submenu allows you to bend, repeat and/or stretch a pattern object (which can be a path or a group) along a &amp;quot;skeleton&amp;quot; path. This makes it easy to create a variety of patterned and shaped strokes. (This obsoletes the old &amp;quot;Kochify&amp;quot; extension which is removed.)&lt;br /&gt;
&lt;br /&gt;
:Effect's parameters include: &lt;br /&gt;
&lt;br /&gt;
:* ''Copies of the pattern'' selects one of the four modes: '''Single stretched''': one copy of the pattern is placed on the skeleton path and stretched/squeezed to match its length;  '''Repeated stretched''': as many copies as would fit are placed along the skeleton path and stretched to fit exactly; '''Single''' and '''Repeated''': same but without stretching.&lt;br /&gt;
&lt;br /&gt;
:* ''Deformation type'' can be one of: '''Snake''' bends the pattern flatly in the plane of the drawing, the width not depending on direction; '''Ribbon''' bends it as a vertical ribbon or like a calligraphic stroke with maximum fixation, so that width depends on direction (minimum for vertical parts of the stroke, maximum for horizontal).&lt;br /&gt;
&lt;br /&gt;
:* Several parameters allow you to adjust spacing between the copies of the pattern (for Multiple modes) and their offset in two directions (along the skeleton path and perpendicular to it).&lt;br /&gt;
&lt;br /&gt;
:* Normally the effect assumes that the pattern object is horizontal and bends its horizontal axis (at mid-height) along the skeleton path. There's a checkbox that allows you to use a '''vertical pattern''' instead. &lt;br /&gt;
&lt;br /&gt;
:Some examples of using this effect are shown on a screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.45-patternalongpath.png].&lt;br /&gt;
&lt;br /&gt;
* '''Color effects''': A new group of extensions in the '''Color''' submenu of the Effects menu allows you to adjust all colors of a selection at once. These commands affect both fill and stroke colors, including gradients (but not bitmaps). The commands include:&lt;br /&gt;
&lt;br /&gt;
:* a full set of '''HSL adjustments''' (increasing/decreasing hue, saturation, or lightness by 5%), &lt;br /&gt;
&lt;br /&gt;
:* '''Brighter''' and '''Darker''' (adjust brightness up or down by 10%), &lt;br /&gt;
&lt;br /&gt;
:* '''Desaturate''', &lt;br /&gt;
&lt;br /&gt;
:* '''Grayscale''', &lt;br /&gt;
&lt;br /&gt;
:* '''Negative''', &lt;br /&gt;
&lt;br /&gt;
:* commands for removing or swapping the '''Red''', '''Green''', '''Blue''' channels, &lt;br /&gt;
&lt;br /&gt;
:* a '''Custom''' command where you can set your own formulas for modifying the color channels. &lt;br /&gt;
&lt;br /&gt;
:Some examples of using this effect are shown on a screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.45-coloreffects.png].&lt;br /&gt;
&lt;br /&gt;
:Note: undoing color changes on gradients exposes a bug where an object seems to &amp;quot;disappear&amp;quot;; this is only a display issue (caused by the order in which gradients and their users are restored on undo) not causing any loss of information. Also, on large documents and large selections with gradients, Python's XPath code may get quite slow. Despite these shortcomings, we decided to add this extension, because it's genuinely useful functionality which was so far missing in Inkscape.&lt;br /&gt;
&lt;br /&gt;
* Recent fixes in the processing of SVG &amp;lt;defs /&amp;gt; have made it possible to implement the often requested '''Color Markers to Match Stroke''' effect. It is no longer necessary to hand-edit XML to recolor arrowheads; just change the stroke color of your path and call this effect to recolor its markers to match.&lt;br /&gt;
&lt;br /&gt;
* '''Lorem ipsum''' (in &amp;quot;Render&amp;quot; submenu) is a new extension that creates the traditional Latin-like random text for design mock-ups. The number of paragraphs, the number of sentences per paragraph and the possible fluctuation of the number of sentences (for uneven paragraphs) can be adjusted. If no flowed text element is selected, a new one in a new layer is created, matching the size of the canvas.&lt;br /&gt;
&lt;br /&gt;
* '''Fractalize''' (in &amp;quot;Modify Path&amp;quot; submenu) replaces each segment of the selected path by a crooked line, subdivided to the given depth, with randomly displaced nodes. &lt;br /&gt;
&lt;br /&gt;
* '''g2png''': The new group-to-PNG Python extension (g2png) is an easy way to export any group or layer to individual PNG files. It was first created for use in the [http://www.le-radar.com/?mm/inkscape Inkscape User Manual] (also available in SVN in the user_manual module) but is also interesting for many other uses. If e.g. you have to draw a set of icons, you can draw them in the same document, thus making copying, duplicating, cloning etc. easier. Then just create a group  for each icon, and with the extension, each group ends up in its own PNG file.&lt;br /&gt;
&lt;br /&gt;
== Improved effects ==&lt;br /&gt;
&lt;br /&gt;
* The '''Function Plotter''' has been extended, providing greater flexibility in x- and y-range definition. &lt;br /&gt;
&lt;br /&gt;
* The '''Measure Path''' extension is improved with several new parameters added (units, scale, precision, distance from path).&lt;br /&gt;
&lt;br /&gt;
* The '''Extract One Image''' extension is fixed to automatically append filename extension to the created bitmap file.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Blur Edge&amp;quot; extension is renamed into '''Inset/Outset Halo''' to avoid confusion with the real Gaussian blur that we now support, as well as to better describe what this extension actually does: From the selected path, it creates a group of inset and outset paths that form a stepped &amp;quot;halo&amp;quot; around the object. &lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
* '''3 new parameter types''' have been added to the extension effect UI: '''tabs''', '''enumerations''' and '''optiongroups''' (radio buttons). Examples are available of how to use these parameters in INX files: the new Function Plotter uses tabs; enumerations are used by the Pattern along path extension; and a small developer example is given to illustrate the use of optiongroups (identical to enumerations).&lt;br /&gt;
&lt;br /&gt;
* In an extension's INX file, you can specify &amp;lt;code&amp;gt;&amp;amp;lt;effects-menu hidden=&amp;quot;yes&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt; to hide that extension from the Effects menu. However, such a &amp;quot;hidden&amp;quot; extension can still be assigned a keyboard shortcut (by using its &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; as an &amp;quot;action&amp;quot; in your &amp;lt;code&amp;gt;~/.inkscape/keys/default.xml&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* In an extension's INX file, you can add &amp;lt;code&amp;gt;needs-document=&amp;quot;no&amp;quot;&amp;lt;/code&amp;gt; attribute to the &amp;lt;code&amp;gt;&amp;amp;lt;effect&amp;amp;gt;&amp;lt;/code&amp;gt; element. This indicates that the extension does not process the current SVG document, and Inkscape will not bother saving and restoring the document from a temporary file which allows this extension to run faster and smoother. (This is used for the new open-in-default-browser Help menu commands which are technically implemented as extensions.)&lt;br /&gt;
&lt;br /&gt;
= Export formats =&lt;br /&gt;
&lt;br /&gt;
== AI import/export ==&lt;br /&gt;
&lt;br /&gt;
* We only support AI import and export for Adobe Illustrator 8.0 and older.  This has been clarified in the Open and Save As lists.&lt;br /&gt;
&lt;br /&gt;
== PDF export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape's PDF exporter has been improved:&lt;br /&gt;
&lt;br /&gt;
* '''New features:''' bitmap images can be embedded; PDF files can be exported from command line using the &amp;lt;code&amp;gt;--export-pdf&amp;lt;/code&amp;gt; parameter. &lt;br /&gt;
&lt;br /&gt;
* '''Changed behavior:''' the pointless text to path question is gone. &lt;br /&gt;
&lt;br /&gt;
* '''Fixed bugs:''' save failure is now detected, miter limits are now &amp;gt;= 1, PDFs with transparent gradient are now embeddable, eccentric elliptic gradients fixed, dash style inheritance fixed, transparency inheritance fixed.&lt;br /&gt;
&lt;br /&gt;
== PS/EPS export ==&lt;br /&gt;
&lt;br /&gt;
There's a new option to &amp;lt;b&amp;gt;embed the fonts&amp;lt;/b&amp;gt; used in the document in the PS or EPS exported file. As of now, this works for &amp;lt;b&amp;gt;Type 1 fonts only&amp;lt;/b&amp;gt;, not TrueType. The option is available when performing the export from the GUI as well as from the command line via the &amp;lt;code&amp;gt;--export-embed-fonts&amp;lt;/code&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
== EMF export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape has a limited support for exporting &amp;lt;b&amp;gt;EMF&amp;lt;/b&amp;gt; (Enhanced Meta File) format. This works &amp;lt;b&amp;gt;only on Windows&amp;lt;/b&amp;gt;, and only exports strokes and fills with constant colors. No text, no images, no gradients, no transparency.&lt;br /&gt;
&lt;br /&gt;
= SVG output =&lt;br /&gt;
&lt;br /&gt;
For specialized uses, several aspects of Inkscape's SVG output can now be customized via editing the preferences.xml file (there's no UI for these options). A &amp;lt;group id=&amp;quot;&amp;lt;b&amp;gt;svgoutput&amp;lt;/b&amp;gt;&amp;quot;&amp;gt; inside &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; can have the following attributes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;usenamedcolors&amp;lt;/b&amp;gt; (default is 0). If nonzero, Inkscape uses symbolic color names (such as &amp;quot;white&amp;quot; or &amp;quot;lime&amp;quot;) and three-digit color designations (such as $dfe) where appropriate; otherwise, it always uses six-digit colors (such as $d0f0e0). Note that in 0.44, the default was to use named colors, which created problems for some extension effects.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;numericprecision&amp;lt;/b&amp;gt; (default is 8). This is the number of significant digits written for each number into SVG. You can lower this number to get slightly more compact SVG at the expense of precision.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;minimumexponent&amp;lt;/b&amp;gt; (default is -8). In transform= attributes, any number whose absolute value is less than 10 to the power of minimumexponent (i.e. less than 10&amp;lt;sup&amp;gt;-8&amp;lt;/sup&amp;gt; by default) is written as 0.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;indent&amp;lt;/b&amp;gt; (default is 2) controls the number of spaces that each level of nesting in SVG is shifted. Set this to 0 to disable indentation.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;inlineattrs&amp;lt;/b&amp;gt; (default is 0). If nonzero, attributes are placed on the same line as their tags; otherwise they are separated by newlines.&lt;br /&gt;
&lt;br /&gt;
= Bitmap tracing =&lt;br /&gt;
&lt;br /&gt;
* A '''new color quantization algorithm''' for multiscan traces works faster (especially for large numbers of colors) and gives more adequate results with less colors used. This improves tracing results both for full-color photographs and for limited-color drawings. &lt;br /&gt;
&lt;br /&gt;
* The Trace Bitmap dialog now provides access to three more tracing parameters:&lt;br /&gt;
&lt;br /&gt;
:* '''Suppress speckles''': If set, spots or speckles larger than the given size (in pixels) are suppressed in the trace.&lt;br /&gt;
&lt;br /&gt;
:* '''Smooth corners''': This parameter controls how much smoothing is applied to corners in the traced path.&lt;br /&gt;
&lt;br /&gt;
:* '''Optimize paths''': If set, trace paths are optimized by joining adjacent Bezier segments with the given tolerance.&lt;br /&gt;
&lt;br /&gt;
* All controls in the Trace Bitmap dialog are reorganized to be easier to find. The dialog is redesigned to use two main tabs: '''Mode''' (where you select the tracing mode, such as brightness cutoff or color multiscan) and '''Options''' (where you set various tracing options, such as corner smoothing). The preview is placed horizontally to the right of the tabs. Most labels and tooltips are rewritten for clarity. The trace preview image is made twice larger.&lt;br /&gt;
&lt;br /&gt;
= Even more improvements =&lt;br /&gt;
&lt;br /&gt;
* The '''opacity''' of objects is now displayed as percentage, '''from 0 to 100''', both in the Fill &amp;amp; Stroke dialog (with one fractional digit) and in the statusbar style indicator (with no fractional digits), instead of from 0 to 1.0 as before. This makes opacity values easier to read, type, and say.&lt;br /&gt;
&lt;br /&gt;
* A '''Save a copy''' command has been added to the file menu, similar to the 'Save a copy' functionality of e.g. Adobe Illustrator. With this command, you can save your document under a new filename, but Inkscape will then &amp;quot;forget&amp;quot; it has done this: later saves will be to the old filename. The default shortcut assigned to this function is '''Shift+Ctrl+Alt+S'''.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Text and flowed text objects&amp;lt;/b&amp;gt; behave more consistently. Now you can put a flowed text on path or (re)flow it into a shape just as you would do with a regular (unflowed) text. Previously, the need to convert a flowed text to text before these operations was a stumble for many users.&lt;br /&gt;
&lt;br /&gt;
* Several commands were added to the '''Help menu''', providing the long-missing access to basic information about Inkscape and SVG right from the program: [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/index.php Inkscape manual], [http://inkscape.org/doc/inkscape-man.html Command line options], [http://wiki.inkscape.org/wiki/index.php/FAQ FAQ], Release notes, [http://inkscape.org/report_bugs.php Bug report page], and the [http://www.w3.org/TR/SVG11/ SVG 1.1 specification]. All these commands open the corresponding web pages in the user's default web browser. &lt;br /&gt;
&lt;br /&gt;
* Exported PNG images have the correct '''resolution''' set in the header.&lt;br /&gt;
&lt;br /&gt;
* The Path -&amp;gt; '''Union''' (Ctrl++) operation now functions when only a '''single object''' is selected. Use this to '''remove self-intersections''' in path objects.&lt;br /&gt;
&lt;br /&gt;
* We removed the &amp;quot;hacked&amp;quot; '''filename entry field''' that we had added to the Open and Save dialogs because starting from version 2.10, GTK+ has finally restored this field in their '''standard file dialog'''. The standard field at the top of the dialog supports type-ahead find and performs the default dialog action (open or save) by pressing Enter, which means you can now do a quick '''Ctrl+O, Ctrl+V, Enter''' sequence to open the file whose path is in your clipboard (this closes a long-standing usability bug). Those who use older versions of GTK are advised either to upgrade to 2.10 or use Ctrl+L to open a pop-up filename box. (Our Windows builds are shipped with GTK+ 2.10.)&lt;br /&gt;
&lt;br /&gt;
* The '''Create Bitmap''' function (Alt+B in the default keymap) is made more useful. Unless you have specific resolution or minimum size set for this command in preferences.xml (&amp;lt;code&amp;gt;&amp;amp;lt;group id=&amp;quot;createbitmap&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt;), it will take the '''resolution hint''' from the object whose bitmap copy you are creating (in other words, it will use the resolution that you specified for that object when exporting it via the Export Bitmap dialog), or the default '''90 dpi''' if that object was not yet exported. Also, a 90 dpi bitmap (with its pixels exactly 1 px in size) will be '''snapped''' to the pixel grid. This makes it easy to use Create Bitmap for quick '''rasterization preview''' of an object or document. (Note: if you have used a previous version of Inkscape, your preferences.xml may contain &amp;lt;code&amp;gt;minsize=&amp;quot;250&amp;quot;&amp;lt;/code&amp;gt;; delete this for objects' resolution hints to work.)&lt;br /&gt;
&lt;br /&gt;
* Using extended input (i.e. tablet pressure and tilt) can now be disabled via Preferences (Misc tab). This is intended to be a last-resort option for those platform/hardware combinations that are not properly supported by GTK. With extended input disabled, you can still use your tablet as a mouse. &lt;br /&gt;
&lt;br /&gt;
* Simplify Path now has two modes when working with a group of paths:  the default mode, which treats all of the paths as one large object to simplify, or the new mode, which acts the same as using Simplify on each path in a group separately.  In preferences.xml, set '''options.simplifyindividualpaths''' to 1 to get the new mode.&lt;br /&gt;
&lt;br /&gt;
* For long Simplify operations (more than 20 paths at a time), Inkscape provides user feedback via the status bar as to how many paths have been simplified.  This change also prevents Inkscape from appearing to have locked up during the operation.&lt;br /&gt;
&lt;br /&gt;
* New '''templates''' added for '''video formats''' (PAL, NTSC and HDTV 1080) as well as DVD cover templates that were not installed in the previous version. This will help video and DVD authoring with Inkscape. The business card 85&amp;amp;times;54 template is now installed as well.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Other&amp;quot; license type was added to the metadata/license dialog so that people know that they are entering a URI to an &amp;quot;other&amp;quot; license.&lt;br /&gt;
&lt;br /&gt;
= Examples = &lt;br /&gt;
&lt;br /&gt;
* With all the recent additions - clipping, masking, and especially blur - Inkscape is now able to produce extremely photorealistic art. In the share/examples folder in Inkscape distribution, you will find two brand new, stunningly realistic images of shiny cars: &amp;lt;b&amp;gt;car.svgz&amp;lt;/b&amp;gt; by Konstantin Rotkevich and &amp;lt;b&amp;gt;gallardo.svgz&amp;lt;/b&amp;gt; by Michael Grosberg.&lt;br /&gt;
&lt;br /&gt;
* Inkscape 0.45 does not yet have gradient meshes. But with the addition of Gaussian Blur, this feature suddenly got within reach. A new example file, &amp;lt;b&amp;gt;gradient-mesh-experimental.svgz&amp;lt;/b&amp;gt;, explains the approach Inkscape will likely take to implement this feature in a fully SVG-compatible way.&lt;br /&gt;
&lt;br /&gt;
* Although Inkscape does not support animation yet, you can add any animation scripts and attributes to your SVG file manually in a text editor - and the file will still be editable in Inkscape. Tavmjong Bah used this technique to create  &amp;lt;b&amp;gt;animated-clock.svg&amp;lt;/b&amp;gt; which, when loaded in an SVG viewer supporting animation (such as Firefox, Opera, or Batik), demonstrates the intricate moving clockwork of a watch - and shows real time to boot! If loaded in Inkscape, the image is static, but instead you can freely edit any of the objects.&lt;br /&gt;
&lt;br /&gt;
= Translations, tutorials, templates =&lt;br /&gt;
&lt;br /&gt;
* Remarkable improvements are in the '''Danish''', '''Finnish''', '''Nepalese''' and the '''Vietnamese''' translations of the user interface. They all jumped from 0 to over 90 percent in a very short timespan.&lt;br /&gt;
&lt;br /&gt;
* All people which are familiar with '''pig latin''' are now able to use Inkscape's user interface in that language. Isthay isway oughtbray otay usway ybay away ewnay anslatortray.&lt;br /&gt;
&lt;br /&gt;
* Updated '''British English''', '''Catalan''', '''Czech''', '''Bulgarian''', '''French''', '''Danish''', '''Finnish''', '''German''', '''Brazilian Portuguese''' and '''Thai''', '''Vietnamese''' and '''Dzongkha''' translations.&lt;br /&gt;
&lt;br /&gt;
* A new Esperanto translation added including default document template.&lt;br /&gt;
&lt;br /&gt;
* Default Lithuanian template was not installed before, which is now fixed.&lt;br /&gt;
&lt;br /&gt;
* New tutorial &amp;quot;Easter Eggs&amp;quot; by Steve Karg.&lt;br /&gt;
&lt;br /&gt;
* Added Catalan default template and elements tutorial.&lt;br /&gt;
&lt;br /&gt;
* Russian header and footer templates for tutorials are added.&lt;br /&gt;
&lt;br /&gt;
* Several tutorial translations were updated, namely '''Catalan''', '''Brazilian Portuguese''', '''Russian''', '''German''', '''Danish''' and '''French'''.&lt;br /&gt;
&lt;br /&gt;
* There are also new Russian and Japanese translations of Windows installer strings.&lt;br /&gt;
&lt;br /&gt;
= Dependency changes =&lt;br /&gt;
&lt;br /&gt;
* We have changed the '''GTK+''' requirement for compilation to version 2.8. However, it is highly recommended to use at least the version '''2.10.7''' because previous versions contain at least one crash bug which may cause Inkscape to crash after typing in a value into a spinbutton.&lt;br /&gt;
&lt;br /&gt;
= Notable bugfixes =&lt;br /&gt;
&lt;br /&gt;
* When deleting a node, neighboring smooth nodes are converted to cusp.&lt;br /&gt;
&lt;br /&gt;
* Releasing the mouse button while dragging nodes using a tablet will now always release the nodes.  Before this, a race condition could occur where dragging could continue after the mouse button was released.&lt;br /&gt;
&lt;br /&gt;
* An object's mask and clipping path are now preserved after Simplify, Object/Stroke to path, or boolean operations.&lt;br /&gt;
&lt;br /&gt;
* Ungrouping a group containing clipped/masked objects might sometime break the clip/mask (move it away); this is fixed.&lt;br /&gt;
&lt;br /&gt;
* Transforming an object and its clone no longer behaves unexpectedly when they are both within a transformed group. &lt;br /&gt;
&lt;br /&gt;
* User-supplied templates in ~/.inkscape/templates can now be SVGZ files in addition to SVG.&lt;br /&gt;
&lt;br /&gt;
* Previously, Inkscape didn't check if there's enough free memory for its pixel buffers and could crash without warning due to insufficient memory e.g. upon zooming in. This problem became much worse after implementing Gaussian blur, because rendering blurred objects at high zooms may require a pixel buffer much bigger than the visible canvas. Now this situation is handled more gracefully: if a display operation requires more memory than available, or more than 100Mb (which corresponds to a 5000x5000 pixel buffer), it is skipped. This may result in blurred objects &amp;quot;disappearing&amp;quot; at high zooms. This is purely a display issue, however, and it never corrupts data; just zoom out (or reduce blur radius) and the disappeared object will show up OK.&lt;br /&gt;
&lt;br /&gt;
* When resizing objects, scaling numbers in the statusbar are no longer overwritten by other text when pressing the modifier keys (Alt, Shift, Ctrl).&lt;br /&gt;
&lt;br /&gt;
* To work around problems some users had with pressure-sensitive tablets ([http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1281512&amp;amp;group_id=93438&amp;amp;atid=604306 bug 1281512]), the pressure sensitivity can be disabled from the Misc tab of Inkscape Preferences dialog. After that, the tablet can still be used as a regular mouse. &lt;br /&gt;
&lt;br /&gt;
* The layer widget in the statusbar used to lose its current layer after an effect run; this is fixed.&lt;br /&gt;
&lt;br /&gt;
* When using different display resolutions or a dual screen setup, dialogs could be displayed off-screen; this is fixed: now Inkscape checks whether the saved position of the dialog is offscreen, if so it will move the dialog to the center of the screen. Note that this not solve all problems. If the dialog is still not visible, go to the [http://sourceforge.net/tracker/?func=detail&amp;amp;atid=604306&amp;amp;aid=1250236&amp;amp;group_id=93438 bug 1250236] where a procedure is given to make the dialog visible (by editing preferences.xml).&lt;br /&gt;
&lt;br /&gt;
* Grid and guidelines no longer vanish when changing their color.&lt;br /&gt;
&lt;br /&gt;
* Group transformation is now correctly re-applied when ungrouping and then undoing the ungroup operation.&lt;br /&gt;
&lt;br /&gt;
* Text dialog no longer discards the style of the selected text.&lt;br /&gt;
&lt;br /&gt;
* Inkscape no longer crashes when you try to unflow an empty flowed text.&lt;br /&gt;
&lt;br /&gt;
* Thanks to patches submitted by users of our community, Inkscape can now be built on SGI IRIX 6.5.28, gcc 3.4.0 systems and on Tru64 systems.&lt;br /&gt;
&lt;br /&gt;
= Known problems =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problem with &amp;quot;Dialogs on Top&amp;quot; on Windows ====&lt;br /&gt;
&lt;br /&gt;
* Although the &amp;quot;Dialogs on Top&amp;quot; option is now available on Windows (File &amp;gt; Inkscape Preferences &amp;gt; Windows), it does not work exactly as it should (yet!). When the document window is minimized, the dialogs remain visible, i.e. are not minimized together with the document window. Because of this, it is not possible to get the document window back by clicking its taskbar button. A workaround to this problem is to '''right-click the Inkscape taskbar button and select &amp;quot;Restore&amp;quot;.''' We expect that future releases of GTK will solve this problem.&lt;br /&gt;
&lt;br /&gt;
==== Spinbuttons may crash if you have GTK+ older than 2.10.7 ====&lt;br /&gt;
&lt;br /&gt;
* You may experience crashes after typing in a value into a spinbutton if you have a version of GTK+ 2.10.6 or older. Upgrade your GTK+ to fix this. (This does not affect the Windows package as it comes with GTK+ 2.10.9.)&lt;br /&gt;
&lt;br /&gt;
==== Numerical Python required for Perspective effect ====&lt;br /&gt;
&lt;br /&gt;
* This effect will not work until you install a python module called '''numpy''' (Numerical Python). It can be downloaded at [http://numpy.scipy.org/ numpy.scipy.org]. The Windows package already contains this module.&lt;br /&gt;
&lt;br /&gt;
==== Do not use a clone of an object as its clipping path/mask ====&lt;br /&gt;
&lt;br /&gt;
* In this version, you cannot use an object's clone as its clipping path or mask. Either unlink the clone first, or clip one clone of a source object (not the source itself) by another clone of the same. Properly fixing this bug requires some deep changes in the code and therefore was postponed until after 0.45 so as not to delay the release.&lt;br /&gt;
&lt;br /&gt;
==== Non-Unicode symbol fonts on Windows don't work ====&lt;br /&gt;
&lt;br /&gt;
* On Windows, symbol fonts without a Unicode map do not work. This is a limitation of the Pango library that we use.&lt;br /&gt;
&lt;br /&gt;
==== Problems with some Debian libgc-6.7 packages ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape will hang or crash when linked with the first Debian packaged version of the Boehm garbage collection library. This problem was fixed in version 1:6.7-2  of the package.  If you have libgc 6.7 on your Debian-based system, make sure that you are using that version of the package or later.&lt;br /&gt;
&lt;br /&gt;
==== Beware of defective themes on Linux ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape and other Gtk programs can crash on any Linux, when the &amp;lt;b&amp;gt;gtk2-engines-smooth / libsmooth&amp;lt;/b&amp;gt; package is installed. We have filed a bug against libsmooth which is now in gtk-engine and part of gnome. Removing the package resolves the problem. Update: this bug appears to be fixed in newer versions of gtk-engines. If you are affected by this problem please update to a newer version of gtk-engines. If problems persist then please inform the gtk-engines maintainers of the problem. &lt;br /&gt;
&lt;br /&gt;
* A similar crash happens if the &amp;lt;b&amp;gt;KDE Baghira&amp;lt;/b&amp;gt; theme or the package &amp;lt;b&amp;gt;gtk_qt_engine&amp;lt;/b&amp;gt; are installed. If you experience Inkscape crashes on KDE, please try to install a different theme from Baghira, or uninstall the gtk_qt_engine package from your system. Both problems also affect older versions of Inkscape.&lt;br /&gt;
&lt;br /&gt;
= Previous releases =&lt;br /&gt;
&lt;br /&gt;
* [[ReleaseNotes044]]&lt;br /&gt;
* [[ReleaseNotes043]]&lt;br /&gt;
* [[ReleaseNotes042]]&lt;br /&gt;
* [[ReleaseNotes041]]&lt;br /&gt;
* [[ReleaseNotes040]]&lt;br /&gt;
* [[ReleaseNotes039]]&lt;br /&gt;
* [[ReleaseNotes038]]&lt;br /&gt;
* [[ReleaseNotes037]]&lt;br /&gt;
* [[ReleaseNotes036]]&lt;br /&gt;
* [[ReleaseNotes035]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Marketing]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.46&amp;diff=13930</id>
		<title>Release notes/0.46</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.46&amp;diff=13930"/>
		<updated>2007-03-12T03:32:03Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* Even more improvements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Inkscape 0.46=&lt;br /&gt;
'''(not released yet)'''&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
&lt;br /&gt;
==Paint Bucket tool==&lt;br /&gt;
&lt;br /&gt;
The new Paint Bucket tool works exactly as you would expect: click in any area bounded on all sides and it will '''fill it with color'''. Being a vector tool, however, Inkscape's Paint Bucket just creates a new ''path'' that &amp;quot;fills in&amp;quot; the area in which you clicked. &lt;br /&gt;
&lt;br /&gt;
It is important to note that the tool is '''perceptual''', not geometric. That is, when looking for the boundaries around the point you clicked, it takes for such boundaries any ''visible'' color changes. This means that filling will stop at gradients, blurs, and even the color edges in the imported bitmaps, but will ignore any paths or other objects that are fully (or almost) transparent and do not stand out from the background. In short, it will work exactly as if you were filling a rasterized version of your image in a bitmap editor like Photoshop or GIMP - but will give you a vector object to work with.&lt;br /&gt;
&lt;br /&gt;
For example, now you can scan a pencil sketch, import the bitmap into Inkscape, and quickly fill all its cells with colors even without tracing the bitmap first. This is a very convenient and interactive way of digitizing your paper drawings, making the traditional bitmap tracing unnecessary in many cases.&lt;br /&gt;
&lt;br /&gt;
Internally, the tool works by performing a bitmap-based flood fill on a rendered version of the visible canvas, then tracing the resulting fill using [[potrace]] and placing the traced path into the document.&lt;br /&gt;
&lt;br /&gt;
It places the rendered path onto the current layer, so you can have a layer on top (for example, &amp;quot;Inks&amp;quot;) and select the layer below (&amp;quot;Colors&amp;quot;) and do the fills so that they always appear below the Inks.&lt;br /&gt;
&lt;br /&gt;
The resolution of the bitmap image used to perform the trace is dependent upon your document zoom level -- the more zoomed in to an area that you are, the higher the resolution of the bitmap-based flood fill. So, if you are got a fill that is too imprecise, has rough corners, or don't go into small nooks and appendices where it is supposed to go, just undo, zoom in closer and repeat filling from the same point. Conversely, if the fill leaks out through a small gap, zoom out to make the gap less visible and fill again.&lt;br /&gt;
&lt;br /&gt;
Like all object-creating tools, the Paint Bucket may use the last-set style for the objects it creates (this is the default), or it can use its own fixed style. You can switch between these modes on this tool's page in Inkscape Preferences (Ctrl+Shift+P). In the right-hand end of the tool's Controls bar, a swatch shows the style that will be used for the next created fill object. &lt;br /&gt;
&lt;br /&gt;
* The amount of ''outset'' on the resulting fill path is controllable.  Setting a positive outset causes fill paths to be larger than the filled bitmap area (good for eliminating anti-aliasing errors), while setting a negative outset causes the path to be smaller.  This works the same as the Outset and Inset path options.&lt;br /&gt;
&lt;br /&gt;
* Paint Bucket's perceptual fill can perform its fill on specific color channels, or on all of the visible colors.  You can restrict the fill algorithm to the following channels:&lt;br /&gt;
** Red&lt;br /&gt;
** Green&lt;br /&gt;
** Blue&lt;br /&gt;
** Hue&lt;br /&gt;
** Saturation&lt;br /&gt;
** Lightness&lt;br /&gt;
** Alpha&lt;br /&gt;
&lt;br /&gt;
Some potential improvements to the tool are:&lt;br /&gt;
&lt;br /&gt;
* If the [Ctrl] key is held down, clicking on an object changes the fill color to the current fill color, and [Shift]-[Ctrl] changes the stroke color to the current stroke color&lt;br /&gt;
&lt;br /&gt;
==Gradient Tool==&lt;br /&gt;
[- johan]&lt;br /&gt;
*Stops in gradients can be added, deleted, and edited on-canvas now.&lt;br /&gt;
**Stops can be added by double clicking on the gradient line or by Ctrl+Alt+Click on the line.&lt;br /&gt;
**Stops can be deleted by Ctrl+Alt+Click on a Stop or the delete key for the selected stop(s).&lt;br /&gt;
**More than one stop can be selected at a time.&lt;br /&gt;
***Can be moved together if next to each other.&lt;br /&gt;
***Can be deleted at the same time.&lt;br /&gt;
***When you have one of the '''gradient handles selected''', its style (color and opacity) is reflected by the selected style indicator (left of the statusbar) and the Fill&amp;amp;Stroke dialog. Previously, opacity of a gradient handle was reflected as fill-opacity and stroke-opacity; now it is reflected as '''master opacity''' (the &amp;quot;O:&amp;quot; spinbutton in the selected style indicator, the &amp;quot;Master opacity&amp;quot; slider in Fill&amp;amp;Stroke). This makes it much easier to view and change opacity of gradient handles using only the selected style indicator in the statusbar.&lt;br /&gt;
****When multiple gradient stops are selected, the selected style indicator (in the statusbar) displays and controls the averaged color and opacity of the selected stops.&lt;br /&gt;
*If the selected object(s) have gradient in fill or stroke, the '''selected style indicator''' in the bottom-left corner of the editing window now displays a '''live gradient preview''' prefixed by '''R''' or '''L''' to indicate Radial or Linear gradients (instead of displaying &amp;quot;L Gradient&amp;quot; or &amp;quot;R Gradient&amp;quot; text labels as before). Also, this and other similar widget now use italic font face to indicate &amp;lt;i&amp;gt;None&amp;lt;/i&amp;gt; and bold to indicate &amp;lt;b&amp;gt;Unset&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Node Tool:==&lt;br /&gt;
[sculpt profiles - bbyak]&lt;br /&gt;
&lt;br /&gt;
==Text Tool:==&lt;br /&gt;
* [text toolbar - deadchip]&lt;br /&gt;
&lt;br /&gt;
* If you have saved documents with a previous version of Inkscape which used right-to-left text (e.g. Arabic, Hebrew) then the paragraph alignment of non-flowed text has been reversed in this release. This is due to a bug in previous versions - the new behaviour is compliant with the SVG specification and compatible with other editors and viewers. To correct your images, simply reverse the paragraph alignment by selecting the text and clicking the appropriate button on the toolbar.&lt;br /&gt;
&lt;br /&gt;
=Renderer:=&lt;br /&gt;
* '''Smart redraw:''' With complex images and/or on slow computers, you may have noticed that Inkscape redraws the screen image in horizontal strips, and these strips are painted sequentially top to bottom. Now this direction is automatically changed based on where your mouse cursor is. In particular, if mouse is closer to the bottom of the area to redraw, strips will be painted in the bottom-to-top order. This significantly improves the responsiveness and interactivity in some situations. For example, when you are node-editing the bottom part of a complex path, the entire path needs to be redrawn on each change, but now this redraw starts from the bottom and therefore the you see the effect of your changes at once - i.e. while screen redraw may still lag behind your mouse movement, this lag is less noticeable. &lt;br /&gt;
&lt;br /&gt;
* [faster blur - jasper]&lt;br /&gt;
&lt;br /&gt;
* In this version, Inkscape starts using the [http://www.cairographics.org cairo] library for rendering. It is now used for '''outline mode''' display which, thanks to using cairo and other optimizations, redraws faster by about '''25%'''.&lt;br /&gt;
&lt;br /&gt;
* Several improvements make '''canvas panning and scrolling''' smoother and more interactive in complex slow-rendering documents:&lt;br /&gt;
&lt;br /&gt;
:* When panning by the middle mouse button, Inkscape no longer attempts to redraw the canvas while your mouse button is pressed. Any redrawing only happens after you release the mouse. As a result, the newly revealed parts of the canvas are somewhat more &amp;quot;dirty&amp;quot; but the '''panning is smoother than before''', with few if any &amp;quot;hiccups&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:* Previously, if you start panning with middle button while Inkscape is still redrawing screen in a complex drawing, panning sometimes completely failed or moved canvas just a little step. Now it is '''guaranteed to pan the canvas all the way''' from mouse-press point to mouse-release point in any case, even if sometimes it fails to show the intermediate positions.&lt;br /&gt;
&lt;br /&gt;
:* When pressing and holding Ctrl+arrows to scroll canvas, Inkscape normally accelerates scrolling so that each next scrolling step is bigger than the previous. Previously, in complex drawings this acceleration sometimes got interrupted, which made scrolling annoyingly bumpy and slow. Now this is fixed so that '''scrolling is smoothly accelerated''' even in a slow-rendering document. &lt;br /&gt;
&lt;br /&gt;
:* The default '''starting speed and acceleration''' of Ctrl+arrows scrolling are slightly increased. (They are both settable in Preferences.)&lt;br /&gt;
&lt;br /&gt;
=Filters &amp;amp; Effects=&lt;br /&gt;
&lt;br /&gt;
==More filters==&lt;br /&gt;
&lt;br /&gt;
[kiirala, haa_rodrigues?]&lt;br /&gt;
&lt;br /&gt;
=Bitmap export=&lt;br /&gt;
&lt;br /&gt;
* '''Batch export''': The Bitmap Export dialog (Ctrl+Shift+E) got a new checkbox, ''Batch export all selected objects''. This checkbox is available when two or more objects are selected. If it is checked, instead of exporting selection as a whole, Inkscape exports each selected object separately into its own PNG file. This uses each object's export hints (i.e. export filename and DPI) if they are remembered from a previous export; otherwise, the filename is created from the object ID and the DPI is 90 pixels per inch. '''Caution:''' Unlike regular export, batch export overwrites all existing PNG files without warning.&lt;br /&gt;
&lt;br /&gt;
:This makes it possible to implement all kinds of '''image slicing''' and automated export scenarios. For example, if you are working on a web site design, you can create a separate &amp;quot;export&amp;quot; layer. In that layer, &amp;quot;slice&amp;quot; your web page image into separate areas by creating invisible rectangles with no fill and no stroke. Select each rectangle (by Tab/Shift+Tab, or by switching to Outline mode where even an invisible rectangle can be selected by clicking on its outline) and export it into the corresponding filename (which gets saved as that object's export hint). After that, if you do any changes to your graphics, it's very easy to reexport all the slices: just switch to the &amp;quot;export&amp;quot; layer, select all in that layer (Ctrl+A), and export with the ''Batch export selected objects'' checkbox on.&lt;br /&gt;
&lt;br /&gt;
* '''Hide all except selected''': A new checkbox allows you to hide in the exported image everything except selected object(s).&lt;br /&gt;
&lt;br /&gt;
=Import/Export=&lt;br /&gt;
&lt;br /&gt;
* [new wpg lib - ted gould]&lt;br /&gt;
&lt;br /&gt;
=Command line=&lt;br /&gt;
&lt;br /&gt;
Several new command line options are added that make Inkscape even more scriptable and automatable than before.&lt;br /&gt;
&lt;br /&gt;
* --verb-list will list all the Verb IDs and their names in Inkscape. This makes writing your own menus and hotkeys much easier as you can easily find out what the choices are.&lt;br /&gt;
&lt;br /&gt;
* --verb followed by a verb ID allows you to specify a verb to be called on every document opened by Inkscape initially from the command line.&lt;br /&gt;
&lt;br /&gt;
* --select followed by a node ID will allow you to add a node to the list of selected objects.&lt;br /&gt;
&lt;br /&gt;
These options can be used, for example, for performance testing.  You could do something like this:&lt;br /&gt;
&lt;br /&gt;
 $ time inkscape --verb=FileClose my_complex_file.svg&lt;br /&gt;
&lt;br /&gt;
to measure the time it takes to load and display the file.&lt;br /&gt;
&lt;br /&gt;
Of course, with the ability to select objects, it can be much more useful than&lt;br /&gt;
that.  You can call effects, or any other verb, then FileSave and&lt;br /&gt;
FileClose to automate all kinds of things on your drawings.&lt;br /&gt;
&lt;br /&gt;
=UI=&lt;br /&gt;
&lt;br /&gt;
==Markers==&lt;br /&gt;
&lt;br /&gt;
* stock markers now appear in the &amp;quot;recently used markers&amp;quot; section of the marker selector dropdowns in the Fill &amp;amp; Stroke dialog.  Before, any markers with stock id's (including markers modified by the user) were hidden, making it difficult to work with modified stock markers.&lt;br /&gt;
&lt;br /&gt;
== [toolbars - joncruz] ==&lt;br /&gt;
&lt;br /&gt;
== [filedialogs - joncruz] ==&lt;br /&gt;
&lt;br /&gt;
== Print dialog integration == &lt;br /&gt;
&lt;br /&gt;
* '''Print Dialog''': The GTK Unix Print Dialog has been hooked up!  From the dialog, you can select any of the Postscript-capable printers known to your system and configure them as with any other GTK application.&lt;br /&gt;
&lt;br /&gt;
=Even more improvements=&lt;br /&gt;
&lt;br /&gt;
* '''[if enabled! - mental]''' A new cairo-based PDF exporter has been added to Inkscape. Inkscape 0.46 can export shapes, strokes, transparency, gradients, patterns, text, and images correctly to cairo. While clipping paths and masks are known to be faulty or missing. cairo will write a PDF with vector graphics when possible and fall back to raster graphics when needed. What can be exported as vectors and how much of the image will be rasterized when the fallback kicks in depends on your version of cairo. cairo version 1.2 with the pdf backend compiled in is the minimum requirement for any cairo-based PDF exports.&lt;br /&gt;
&lt;br /&gt;
* '''Gnome VFS Improvements''': Gnome VFS Non-Local files are now usable through all of our file choosers in Open, Save and Export. This compile-time option allowed people to open any Gnome-VFS-based URI from the command-line in the past, but not non-local resources (WebDAV, SFTP, etc) and this now allows for all the lovely possibilities Gnome-VFS provides.&lt;br /&gt;
&lt;br /&gt;
* In previous versions, Inkscape didn't allow you to '''group a single object.''' Yet in some cases, this operation is useful (for example, to blur the clipped edged of an object). So now this limitation is removed. &lt;br /&gt;
&lt;br /&gt;
* The somewhat cryptic &amp;quot;F:&amp;quot; and &amp;quot;S:&amp;quot; labels in the selected style indicator (at the left end of the statusbar) and in tool's style swatches are now spelled out as '''Fill:''' and '''Stroke:'''. We believe this makes the interface, even if less space-efficient, a bit more friendly for newbies.&lt;br /&gt;
&lt;br /&gt;
* The '''style swatches''' at the right end of object-creating tools' control bars now open the Preferences page of the corresponding tool when clicked. Also, now these swatches display a tooltip explaining its purpose (e.g. &amp;quot;Style of new rectangles&amp;quot;, &amp;quot;Style of new calligraphic strokes&amp;quot;, etc.)&lt;br /&gt;
&lt;br /&gt;
* After dragging a curve segment in Node tool, Inkscape no longer selects the two adjacent nodes if they were not selected before. &lt;br /&gt;
&lt;br /&gt;
* [more snapping: drawing rects, scaling in selector]&lt;br /&gt;
&lt;br /&gt;
* The '''sodipodi:docbase''' attribute is no longer added to the root &amp;lt;svg&amp;gt; element. This attribute used to keep the latest directory that the document was saved to, and thus represented a mild privacy violation (i.e., by sharing your Inkscape SVG files you allowed others to have a peek into your directory structure). Note, however, that Inkscape does not remove this attribute from old documents it opens; if you want you can remove it yourself. Inkscape just no longer creates this attribute in new documents. &lt;br /&gt;
&lt;br /&gt;
* Several bugs are fixed in searching for linked images. Now moving SVG documents with their associated images to a different place or a different machine should work more reliably. &lt;br /&gt;
&lt;br /&gt;
* In '''Pencil''' and '''Calligraphic''' tools, pressing '''Esc''' or '''Ctrl+Z''' while drawing cancels the currently drawn path or stroke. When not drawing, these keys work as before (Esc deselects, Crel+Z undoes last action). (This is the same behavior as in the Pen tool where it was introduced in a previous version.)&lt;br /&gt;
&lt;br /&gt;
* A set of new verbs has been added to allow the user to easily unlock locked objects or unhide hidden objects. There are two variants one that operates on the current layer and its children and one that operates globally. While searching for hidden or locked object descendants of locked layers are ignored.&lt;br /&gt;
&lt;br /&gt;
= Previous releases =&lt;br /&gt;
&lt;br /&gt;
* [[ReleaseNotes045]]&lt;br /&gt;
* [[ReleaseNotes044]]&lt;br /&gt;
* [[ReleaseNotes043]]&lt;br /&gt;
* [[ReleaseNotes042]]&lt;br /&gt;
* [[ReleaseNotes041]]&lt;br /&gt;
* [[ReleaseNotes040]]&lt;br /&gt;
* [[ReleaseNotes039]]&lt;br /&gt;
* [[ReleaseNotes038]]&lt;br /&gt;
* [[ReleaseNotes037]]&lt;br /&gt;
* [[ReleaseNotes036]]&lt;br /&gt;
* [[ReleaseNotes035]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Marketing]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=13923</id>
		<title>Release notes/0.45</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=13923"/>
		<updated>2007-03-11T18:17:05Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* Inkscape 0.45.1 changes with respect to 0.45 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Inkscape 0.45.1 changes with respect to 0.45 =&lt;br /&gt;
'''(not released yet)'''&lt;br /&gt;
&lt;br /&gt;
*Patch [ 1667939 ]: fix crash when tile-tracing with too small clones&lt;br /&gt;
*Patch [ 1666532 ]: Broken link in inkview man page&lt;br /&gt;
*Patch [ 1665447 ]: fix for the blur quantization bug 1617082&lt;br /&gt;
*Patch [ 1664849 ]: fix for 1662589: increase blur margins&lt;br /&gt;
*Patch [ 1664004 ]: embedimage.py with fixed search order&lt;br /&gt;
*Patch [ 1662649 ]: markers.svg with reversed order&lt;br /&gt;
*Crudely improve check-markup for &amp;amp;#123; markup, fix translations with bugs in that area (dz and zh_TW).&lt;br /&gt;
*Patch [ 1659404 ]: Set locale directory from environment variable&lt;br /&gt;
*Patch [ 1657072 ]: fix for bug 1654495&lt;br /&gt;
*Patch [ 1654636 ]: defocus dropper checkboxes&lt;br /&gt;
*Updated slovak translation&lt;br /&gt;
*Adding japanese.nsh and russian.nsh into files that should go into the release tarball&lt;br /&gt;
*Correct russian translation&lt;br /&gt;
*Patch [ 1651797 ]: fix for attributes when saving/save-a-copy&lt;br /&gt;
*Patch [ 1651752 ]: fix dropper tool&lt;br /&gt;
*Pattern along path extension fixed on Windows&lt;br /&gt;
*Include libtiff3.dll in the Windows distribution, fixing crash when opening TIFF files&lt;br /&gt;
*Patch [ 1673067 ]: fix blur export on flowtext&lt;br /&gt;
*Patch [ 1678075 ]: fix FontInstance.cpp compile issue&lt;br /&gt;
*Patch [ 1673502 ]: fix broken Envelope (Summers Night) effect&lt;br /&gt;
&lt;br /&gt;
= Inkscape 0.45: overview =&lt;br /&gt;
&lt;br /&gt;
This release brings the exciting new features developed by the Google Summer of Code 2006 participants, as well as tons of other improvements across the board. Here are the highlights:&lt;br /&gt;
&lt;br /&gt;
* '''Gaussian blur''' is the first SVG filter supported by Inkscape. You can blur any object to any extent - yet it remains vector and fully editable. This gives a huge boost to Inkscape as a creative art tool.&lt;br /&gt;
&lt;br /&gt;
* '''Display speed and interactivity''': not only does Inkscape render faster, but it can now respond to user input before it finished redrawing the screen, which greatly improves the responsiveness (perceived speed or interactivity) of the program.&lt;br /&gt;
&lt;br /&gt;
* '''History dialog''' makes it easy to to review your editing session and jump to any step of it, undoing and redoing multiple actions with one click.&lt;br /&gt;
&lt;br /&gt;
* Several important tool features are added, notably the new selection mode in '''Node tool''' and the adjustable rounded caps in '''Calligraphic pen'''.&lt;br /&gt;
&lt;br /&gt;
* '''Bitmap tracing''' works better for multi-color traces, sports a redesigned dialog and several new options.&lt;br /&gt;
&lt;br /&gt;
* Many new '''extension effects''' are added, including '''Color effects''' and '''Pattern along path'''. &lt;br /&gt;
&lt;br /&gt;
* The '''Outline mode''' has got many fixes and improvements, including a keyboard shortcut.&lt;br /&gt;
&lt;br /&gt;
* Several new commands in '''Help''' menu open various Inkscape-related pages in your default browser, making Inkscape reference information more accessible as you work. &lt;br /&gt;
&lt;br /&gt;
* Dozens of smaller '''features''' are added throughout the program, and hundreds of '''bugs''' are fixed.&lt;br /&gt;
&lt;br /&gt;
= SVG filters: Gaussian blur =&lt;br /&gt;
&lt;br /&gt;
Thanks to Google's Summer of Code program, Inkscape now has basic support for [http://www.w3.org/TR/SVG11/filters.html SVG filters]. The only filter enabled so far is '''Gaussian blur'''. &lt;br /&gt;
&lt;br /&gt;
With it, you can softly and naturally blur any Inkscape objects: paths, shapes, groups, text, images. Clones inherit blurring from their original, but they can also be blurred independently from the original (you can create blurred clones with Tile Clones, too). Both the fill and stroke of an object are blurred together, creating semitransparent margins that smoothly blend into the background. &lt;br /&gt;
&lt;br /&gt;
Gaussian blur enables a wide range of photorealistic effects: arbitrarily shaped shades and lights, depth of field, drop shadows, glows, etc. Also, blurred objects can be used as masks for other objects to achieve the &amp;quot;feathered mask&amp;quot; effect.&lt;br /&gt;
&lt;br /&gt;
* To blur selected objects, open the Fill and Stroke dialog (Ctrl+Shift+F) and use the '''Blur''' slider. The blur value is a percentage, with 100% corresponding to a blurring radius (standard deviation of Gaussian function) of 1/8 of the object's bounding box' perimeter (that is, for a square, a blur of 100% will have the radius equal to half a side, which turns any shape into an amorphous cloud). &lt;br /&gt;
&lt;br /&gt;
* The '''Tile Clones''' dialog also supports blurring. On the '''Blur &amp;amp; opacity''' tab, you can set the blur percentage per row or per column of your tiling, as well as randomize blurring and make it alternate (all the same options as for Opacity).&lt;br /&gt;
&lt;br /&gt;
* The quality of on-screen blur display is controlled by the '''Blur quality''' option on the new '''Filters''' tab of Inkscape Preferences (Ctrl+Shift+P). The available options range from best quality/slowest display to worst quality/fastest display, the default being in the middle of the range. Any setting except the &amp;quot;best quality&amp;quot; may introduce some rendering artifacts, especially when blurring thin strokes; on the other hand, the &amp;quot;best quality&amp;quot; setting may make Inkscape extremely slow at high zooms. These settings only affect the screen display of blurred objects; bitmap export always uses the best quality (and may therefore become quite slow for images with a lot of blur).&lt;br /&gt;
&lt;br /&gt;
Here are a few tips on using blur:&lt;br /&gt;
&lt;br /&gt;
* '''Masks and clipping''' are applied ''after'' blur. That is, if you clip an object and then blur it (or blur it first and then clip - it makes no difference), the clipped edges will remain crisp. Often, this is what you want. If, however, you want to blur the clipped/masked edges too (possibly with a different radius), you can use grouping: group the clipped object with some other object (which you can then delete from the group) and blur the group.&lt;br /&gt;
&lt;br /&gt;
* A simple '''drop shadow''' is now very easy to do: just copy the object, paint the copy black, blur it, shift away a bit and lower it to the bottom. However, such a shadow does not update when you edit the foreground object. If your object is already black (or, more generally, if you want the shadow to be the same color as the object), you can clone instead of copy to make the shadow auto-updating. But what if your foreground object is not black but you need an auto-updating black shadow? Here's a recipe: unset the object's fill (it becomes black); create ''two'' clones of it; put one clone on top and paint any color you want; put the other clone at bottom, blur it and shift sideways. Now you can edit the unset-fill original (use Alt+click to select it) and everything will update. &lt;br /&gt;
&lt;br /&gt;
* If an object has a fill that you don't want to blur (e.g. pattern, or if it's a bitmap), but you just want to '''feather the edges''', use a blurred transparency mask. For this, copy the object; paint it white; blur it as needed; scale the blurred copy down so its blur margins are entirely within the original object; select both the original and the blurred mask; do Object &amp;gt; Mask &amp;gt; Set.&lt;br /&gt;
&lt;br /&gt;
* '''Transforming''' a blurred object '''transforms its blur''', too. This applies to a non-uniform scaling as well, so by squeezing a blurred object you make its blur squeezed as well. So, the easiest way to blur a path horizontally more than vertically is this: stretch it upwards without blur, then apply blur and squeeze it back into the original shape. (This only works if the stretched path does not already have a Transform attribute.)&lt;br /&gt;
&lt;br /&gt;
* You can combine '''blurring with gradients'''. For example, an ellipse with elliptic opacity gradient will look much softer and more natural when blurred. An object with a horizontal linear opacity gradient, when blurred, will look as if it's more blurred on its transparent side than on its opaque side.&lt;br /&gt;
&lt;br /&gt;
* A '''clone of a blurred object''' inherits the blur of the original. Therefore, such a clone can be blurred ''more'', but you can't &amp;quot;unblur&amp;quot; it to make the clone sharper than its original (unless, of course, you unlink it). The Fill and Stroke dialog shows you the amount of the blur applied to this particular object; however, if the object is a clone of an already blurred original, the dialog does not reflect that.&lt;br /&gt;
&lt;br /&gt;
* Note that '''Firefox 2.0''' does not support SVG filters, so your files will be displayed in Firefox 2.0 without blur. However, filter support has been added  in the current development version and will be included in Firefox 3.0. The Opera web browser, as well as librsvg (used by Wikipedia) and Batik, support filters correctly in their current versions.&lt;br /&gt;
&lt;br /&gt;
= Undo history =&lt;br /&gt;
&lt;br /&gt;
* Inkscape now features a &amp;lt;b&amp;gt;History Dialog&amp;lt;/b&amp;gt; accessible via &amp;lt;b&amp;gt;Ctrl+Shift+H&amp;lt;/b&amp;gt; or Edit &amp;amp;gt; Undo History. All changes made to the document since it was opened are recorded here.&lt;br /&gt;
&lt;br /&gt;
:* In the dialog, changes are listed from the '''oldest (top)''' to the '''newest (bottom)'''. &lt;br /&gt;
&lt;br /&gt;
:* The type of each change is indicated by an '''icon''' and a short '''description'''.&lt;br /&gt;
&lt;br /&gt;
:* For readability, consecutive changes of the same type are placed in a '''collapsible branch''' showing a triangle marker and the number of the hidden actions in the branch.&lt;br /&gt;
&lt;br /&gt;
:* By clicking on an event in the list, you can easily '''move through the undo history''', i.e. undo or redo any number of actions with one click.&lt;br /&gt;
&lt;br /&gt;
* The Undo and Redo commands in the Edit menu display the descriptions of the commands to be undone and redone, correspondingly. (These are the same descriptions that you see in the History dialog.)&lt;br /&gt;
&lt;br /&gt;
= Rendering improvements =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Interruptible display&amp;lt;/b&amp;gt;: Previously, Inkscape could not do anything until it finishes the current screen redraw. Now the redraw is made interruptible, so that Inkscape responds to mouse and keyboard input and can abort the current redraw and start over if you do some screen-changing operation. As a result, Inkscape now feels '''much snappier and more interactive'''. This interruptibility is fine-tuned for some continuous-drag operations (such as node dragging) so that a balance is achieved between responsiveness and completeness of display.&lt;br /&gt;
&lt;br /&gt;
* Screen render is faster by '''2-3%''' overall:&lt;br /&gt;
&lt;br /&gt;
:* Complex drawings with '''transparency''' are faster by up to '''5%'''.&lt;br /&gt;
&lt;br /&gt;
:* '''Radial gradients''' are rendered faster by at least '''10%'''.&lt;br /&gt;
&lt;br /&gt;
* Rendering (compositing) quality has been improved. This is most visible with (partially) transparent gradients: '''banding''' is a lot less pronounced now. Speed has also been improved in some cases.&lt;br /&gt;
&lt;br /&gt;
* Display is more responsive when working at high zoom levels when using a tablet.&lt;br /&gt;
&lt;br /&gt;
= Tools = &lt;br /&gt;
&lt;br /&gt;
== Node tool ==&lt;br /&gt;
&lt;br /&gt;
* You can &amp;lt;b&amp;gt;grow or shrink node selection&amp;lt;/b&amp;gt; by hovering the mouse pointer over a node and using &amp;lt;b&amp;gt;mousewheel&amp;lt;/b&amp;gt; (up = grow, down = shrink) or the keys &amp;lt;b&amp;gt;PageUp&amp;lt;/b&amp;gt; (grow) and &amp;lt;b&amp;gt;PageDown&amp;lt;/b&amp;gt; (shrink). ''Growing'' adds the closest unselected node to the selection; shrinking deselects the farthest selected node. There are two modes that differ by how the closest/farthest nodes are chosen:&lt;br /&gt;
&lt;br /&gt;
:* &amp;lt;b&amp;gt;Spatial selection&amp;lt;/b&amp;gt; (mousewheel, PageUp/PageDown): distances to nodes are measured directly, regardless of which subpath a node belongs to. &lt;br /&gt;
&lt;br /&gt;
:* &amp;lt;b&amp;gt;Linear selection&amp;lt;/b&amp;gt; (Ctrl+mousewheel, Ctrl+PageUp/Ctrl+PageDown): node distances are measured ''along the path'', and only the nodes belonging to the same subpath as the hovered node are considered (i.e. other subpaths are never selected).&lt;br /&gt;
&lt;br /&gt;
:This technique is convenient for quickly selecting an area in a complex path starting from a center - for example, for node sculpting.&lt;br /&gt;
&lt;br /&gt;
== Dropper ==&lt;br /&gt;
&lt;br /&gt;
* Instead of the confusing toggle button, now the Controls bar for the Dropper tool has two checkboxes, '''Pick alpha''' and '''Set alpha''', which work as follows. Suppose you have an object selected and, using Dropper, click on an object which has red (#FF0000) fill and 0.5 opacity (half-transparent).&lt;br /&gt;
&lt;br /&gt;
:* If the &amp;quot;Pick alpha&amp;quot; checkbox is off, the selected object will get the fill color #800000 (i.e. faded-out red) and fill opacity will be at 1.0 (opaque). &lt;br /&gt;
&lt;br /&gt;
:* If the &amp;quot;Pick alpha&amp;quot; checkbox is on but &amp;quot;Set alpha&amp;quot; is off, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 1.0. &lt;br /&gt;
&lt;br /&gt;
:* If both &amp;quot;Pick alpha&amp;quot; and &amp;quot;Set alpha&amp;quot; are on, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 0.5 (half-transparent). &lt;br /&gt;
&lt;br /&gt;
:If you Shift+click instead of click, the same changes will be made to stroke color and stroke opacity, correspondingly. Note that in no situation can Dropper change the ''master opacity'' of the selected object(s) (only the fill/stroke opacity), although it can pick it just as it does any other kind of opacity.&lt;br /&gt;
&lt;br /&gt;
== Calligraphy ==&lt;br /&gt;
&lt;br /&gt;
* A new numeric parameter, &amp;lt;b&amp;gt;Caps&amp;lt;/b&amp;gt;, controls the amount of protruding at the ends of calligraphic strokes. This parameter can range from 0 (flat caps, default behavior in previous versions) through 1 (approximately half-circle caps) and up to 5 (long elliptic caps). Rounded caps much improve the look of low-fixation strokes, simulating a rounded pen.  &lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Drag&amp;quot; parameter has been renamed to &amp;lt;b&amp;gt;Wiggle&amp;lt;/b&amp;gt; with a value inversion (i.e. low drag corresponds to high wiggle, and vice versa). Increase this parameter (default is 0) to make the pen waver and wiggle in curly patterns.&lt;br /&gt;
&lt;br /&gt;
* As a first step towards a redesign of the tools' controls, the '''Controls bar of the Calligraphy pen''' has been upgraded. Now it no longer prevents the Inkscape window from resizing narrower than the bar. The items on the far right end of the bar which didn't fit in a narrow window are still accessible through an '''expansion menu''' which allows you to toggle switches, select commands, and set values of numeric fields. Also, each editable numeric value field has a new '''right-click menu''' with some common values which often allows you to set a desired value much faster than by scrolling the control or typing the value into it.&lt;br /&gt;
&lt;br /&gt;
* With low or zero Fixation parameter, some users of tablet pens experienced &amp;quot;blobs&amp;quot; (brief reversals of a stroke's right/left edges, causing &amp;quot;holes&amp;quot; and &amp;quot;bubbles&amp;quot; in a calligraphic stroke), especially often at the start of a stroke. Hopefully this problem is now fixed without reducing the responsiveness of the tool.&lt;br /&gt;
&lt;br /&gt;
= Outline mode =&lt;br /&gt;
&lt;br /&gt;
* A new menu command (&amp;lt;b&amp;gt;View &amp;gt; Display Mode &amp;gt; Toggle&amp;lt;/b&amp;gt;) and a new keyboard shortcut (&amp;lt;b&amp;gt;Ctrl+&amp;amp;lt;keypad 5&amp;amp;gt;&amp;lt;/b&amp;gt;) switch the display mode from Normal to Outline and back.&lt;br /&gt;
&lt;br /&gt;
* The window title displays &amp;quot;&amp;lt;b&amp;gt;(outline)&amp;lt;/b&amp;gt;&amp;quot; next to the file name when that editing window is in Outline mode. &lt;br /&gt;
&lt;br /&gt;
* An object with &amp;lt;b&amp;gt;mask and/or clipping path&amp;lt;/b&amp;gt;, when viewed in Outline mode, now displays both the object itself and its clipping path and mask as objects, using different outline colors. By default, &amp;lt;b&amp;gt;clippaths use green&amp;lt;/b&amp;gt; outlines, and &amp;lt;b&amp;gt;masks use blue&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Images&amp;lt;/b&amp;gt; in Outline mode are displayed as &amp;lt;b&amp;gt;red&amp;lt;/b&amp;gt; (by default) frames with two diagonals.&lt;br /&gt;
&lt;br /&gt;
* An object with no fill and no stroke, invisible and not selectable by mouse clicking in normal mode, can now be &amp;lt;b&amp;gt;picked by a mouse click&amp;lt;/b&amp;gt; in the Outline mode using its visible outline.&lt;br /&gt;
&lt;br /&gt;
* The bug whereby stroked shapes didn't change stroke width when switching to Outline mode or back is fixed.&lt;br /&gt;
&lt;br /&gt;
* All outline colors are changeable by editing the &amp;quot;wireframecolors&amp;quot; group inside &amp;quot;options&amp;quot; in the preferences file (~/.inkscape/preferences.xml). The &amp;quot;onlight&amp;quot; and &amp;quot;ondark&amp;quot; attributes set the colors of the regular object outlines on light and dark backgrounds (default black and white correspondingly); the &amp;quot;images&amp;quot;, &amp;quot;clips&amp;quot;, and &amp;quot;masks&amp;quot; attributes set the colors of images, clipping paths, and masks (defaults are red, green, and blue correspondingly). Each attribute is a decimal integer corresponding to the hex RRGGBBAA of the color.  &lt;br /&gt;
&lt;br /&gt;
* To cater for specialized uses, such as preparing input for personal media cutters, Inkscape now has an option to start in the Outline mode upon launch. To enable this, add the following line to your preferences.xml file:&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;group id=&amp;quot;startmode&amp;quot; outline=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:placing it after the &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; opening tag.&lt;br /&gt;
&lt;br /&gt;
= Keyboard profiles =&lt;br /&gt;
&lt;br /&gt;
The previous release allowed sets of keybindings (keymaps) to be created for Inkscape in the style of other applications.  Two more keymaps have been added:  &lt;br /&gt;
&lt;br /&gt;
* '''Adobe Illustrator''' &lt;br /&gt;
* '''Macromedia Freehand'''&lt;br /&gt;
&lt;br /&gt;
Of course not every feature in these other programs has a direct match to features in Inkscape; so, if you can, please '''help us out''' by reporting any problems you may have or improvements you would like to request.&lt;br /&gt;
&lt;br /&gt;
Additionally, a keymap that focuses on tablet-based illustration and drawing work has been added:&lt;br /&gt;
&lt;br /&gt;
* '''right-handed-illustration.xml'''&lt;br /&gt;
&lt;br /&gt;
This keymap places all commonly-used commands under the left hand, so that the user's hands rarely leave the keyboard or the tablet/stylus.&lt;br /&gt;
&lt;br /&gt;
(To enable a profile, copy it into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; in the same directory, overwriting the old file. To restore the default Inkscape set, copy &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
More of Inkscape's keys are implemented as actions and are therefore available for remapping via keyboard profiles. New actions include '''EditSelectNext''' and '''EditSelectPrev''' for selecting next/previous object or node (by default, they are bound to Tab/Shift+Tab; as a result of becoming global actions, these keys now work in all tools and not only in Selector and Node tool as before).&lt;br /&gt;
&lt;br /&gt;
= Extension effects =&lt;br /&gt;
&lt;br /&gt;
Inkscape's extension effects, written in Python using the '''inkex''' utility class, are currently a major growth point of the project. They allow new developers to create functionality very quickly, without having to learn Inkscape's huge C/C++ codebase. However, eventually we plan to move many of these effects into the core of Inkscape, which will make them much faster and more interactive. From this viewpoint, effects can be considered a quick way to prototype and test the algorithms and UI controls of the future Inkscape features. However, this does not prevent effects from being genuinely useful in everyday work, and in this version we have several excellent additions. &lt;br /&gt;
&lt;br /&gt;
== New effects ==&lt;br /&gt;
&lt;br /&gt;
* '''Pattern along path''': A new powerful extension in the &amp;quot;Generate from path&amp;quot; submenu allows you to bend, repeat and/or stretch a pattern object (which can be a path or a group) along a &amp;quot;skeleton&amp;quot; path. This makes it easy to create a variety of patterned and shaped strokes. (This obsoletes the old &amp;quot;Kochify&amp;quot; extension which is removed.)&lt;br /&gt;
&lt;br /&gt;
:Effect's parameters include: &lt;br /&gt;
&lt;br /&gt;
:* ''Copies of the pattern'' selects one of the four modes: '''Single stretched''': one copy of the pattern is placed on the skeleton path and stretched/squeezed to match its length;  '''Repeated stretched''': as many copies as would fit are placed along the skeleton path and stretched to fit exactly; '''Single''' and '''Repeated''': same but without stretching.&lt;br /&gt;
&lt;br /&gt;
:* ''Deformation type'' can be one of: '''Snake''' bends the pattern flatly in the plane of the drawing, the width not depending on direction; '''Ribbon''' bends it as a vertical ribbon or like a calligraphic stroke with maximum fixation, so that width depends on direction (minimum for vertical parts of the stroke, maximum for horizontal).&lt;br /&gt;
&lt;br /&gt;
:* Several parameters allow you to adjust spacing between the copies of the pattern (for Multiple modes) and their offset in two directions (along the skeleton path and perpendicular to it).&lt;br /&gt;
&lt;br /&gt;
:* Normally the effect assumes that the pattern object is horizontal and bends its horizontal axis (at mid-height) along the skeleton path. There's a checkbox that allows you to use a '''vertical pattern''' instead. &lt;br /&gt;
&lt;br /&gt;
:Some examples of using this effect are shown on a screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.45-patternalongpath.png].&lt;br /&gt;
&lt;br /&gt;
* '''Color effects''': A new group of extensions in the '''Color''' submenu of the Effects menu allows you to adjust all colors of a selection at once. These commands affect both fill and stroke colors, including gradients (but not bitmaps). The commands include:&lt;br /&gt;
&lt;br /&gt;
:* a full set of '''HSL adjustments''' (increasing/decreasing hue, saturation, or lightness by 5%), &lt;br /&gt;
&lt;br /&gt;
:* '''Brighter''' and '''Darker''' (adjust brightness up or down by 10%), &lt;br /&gt;
&lt;br /&gt;
:* '''Desaturate''', &lt;br /&gt;
&lt;br /&gt;
:* '''Grayscale''', &lt;br /&gt;
&lt;br /&gt;
:* '''Negative''', &lt;br /&gt;
&lt;br /&gt;
:* commands for removing or swapping the '''Red''', '''Green''', '''Blue''' channels, &lt;br /&gt;
&lt;br /&gt;
:* a '''Custom''' command where you can set your own formulas for modifying the color channels. &lt;br /&gt;
&lt;br /&gt;
:Some examples of using this effect are shown on a screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.45-coloreffects.png].&lt;br /&gt;
&lt;br /&gt;
:Note: undoing color changes on gradients exposes a bug where an object seems to &amp;quot;disappear&amp;quot;; this is only a display issue (caused by the order in which gradients and their users are restored on undo) not causing any loss of information. Also, on large documents and large selections with gradients, Python's XPath code may get quite slow. Despite these shortcomings, we decided to add this extension, because it's genuinely useful functionality which was so far missing in Inkscape.&lt;br /&gt;
&lt;br /&gt;
* Recent fixes in the processing of SVG &amp;lt;defs /&amp;gt; have made it possible to implement the often requested '''Color Markers to Match Stroke''' effect. It is no longer necessary to hand-edit XML to recolor arrowheads; just change the stroke color of your path and call this effect to recolor its markers to match.&lt;br /&gt;
&lt;br /&gt;
* '''Lorem ipsum''' (in &amp;quot;Render&amp;quot; submenu) is a new extension that creates the traditional Latin-like random text for design mock-ups. The number of paragraphs, the number of sentences per paragraph and the possible fluctuation of the number of sentences (for uneven paragraphs) can be adjusted. If no flowed text element is selected, a new one in a new layer is created, matching the size of the canvas.&lt;br /&gt;
&lt;br /&gt;
* '''Fractalize''' (in &amp;quot;Modify Path&amp;quot; submenu) replaces each segment of the selected path by a crooked line, subdivided to the given depth, with randomly displaced nodes. &lt;br /&gt;
&lt;br /&gt;
* '''g2png''': The new group-to-PNG Python extension (g2png) is an easy way to export any group or layer to individual PNG files. It was first created for use in the [http://www.le-radar.com/?mm/inkscape Inkscape User Manual] (also available in SVN in the user_manual module) but is also interesting for many other uses. If e.g. you have to draw a set of icons, you can draw them in the same document, thus making copying, duplicating, cloning etc. easier. Then just create a group  for each icon, and with the extension, each group ends up in its own PNG file.&lt;br /&gt;
&lt;br /&gt;
== Improved effects ==&lt;br /&gt;
&lt;br /&gt;
* The '''Function Plotter''' has been extended, providing greater flexibility in x- and y-range definition. &lt;br /&gt;
&lt;br /&gt;
* The '''Measure Path''' extension is improved with several new parameters added (units, scale, precision, distance from path).&lt;br /&gt;
&lt;br /&gt;
* The '''Extract One Image''' extension is fixed to automatically append filename extension to the created bitmap file.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Blur Edge&amp;quot; extension is renamed into '''Inset/Outset Halo''' to avoid confusion with the real Gaussian blur that we now support, as well as to better describe what this extension actually does: From the selected path, it creates a group of inset and outset paths that form a stepped &amp;quot;halo&amp;quot; around the object. &lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
* '''3 new parameter types''' have been added to the extension effect UI: '''tabs''', '''enumerations''' and '''optiongroups''' (radio buttons). Examples are available of how to use these parameters in INX files: the new Function Plotter uses tabs; enumerations are used by the Pattern along path extension; and a small developer example is given to illustrate the use of optiongroups (identical to enumerations).&lt;br /&gt;
&lt;br /&gt;
* In an extension's INX file, you can specify &amp;lt;code&amp;gt;&amp;amp;lt;effects-menu hidden=&amp;quot;yes&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt; to hide that extension from the Effects menu. However, such a &amp;quot;hidden&amp;quot; extension can still be assigned a keyboard shortcut (by using its &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; as an &amp;quot;action&amp;quot; in your &amp;lt;code&amp;gt;~/.inkscape/keys/default.xml&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* In an extension's INX file, you can add &amp;lt;code&amp;gt;needs-document=&amp;quot;no&amp;quot;&amp;lt;/code&amp;gt; attribute to the &amp;lt;code&amp;gt;&amp;amp;lt;effect&amp;amp;gt;&amp;lt;/code&amp;gt; element. This indicates that the extension does not process the current SVG document, and Inkscape will not bother saving and restoring the document from a temporary file which allows this extension to run faster and smoother. (This is used for the new open-in-default-browser Help menu commands which are technically implemented as extensions.)&lt;br /&gt;
&lt;br /&gt;
= Export formats =&lt;br /&gt;
&lt;br /&gt;
== AI import/export ==&lt;br /&gt;
&lt;br /&gt;
* We only support AI import and export for Adobe Illustrator 8.0 and older.  This has been clarified in the Open and Save As lists.&lt;br /&gt;
&lt;br /&gt;
== PDF export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape's PDF exporter has been improved:&lt;br /&gt;
&lt;br /&gt;
* '''New features:''' bitmap images can be embedded; PDF files can be exported from command line using the &amp;lt;code&amp;gt;--export-pdf&amp;lt;/code&amp;gt; parameter. &lt;br /&gt;
&lt;br /&gt;
* '''Changed behavior:''' the pointless text to path question is gone. &lt;br /&gt;
&lt;br /&gt;
* '''Fixed bugs:''' save failure is now detected, miter limits are now &amp;gt;= 1, PDFs with transparent gradient are now embeddable, eccentric elliptic gradients fixed, dash style inheritance fixed, transparency inheritance fixed.&lt;br /&gt;
&lt;br /&gt;
== PS/EPS export ==&lt;br /&gt;
&lt;br /&gt;
There's a new option to &amp;lt;b&amp;gt;embed the fonts&amp;lt;/b&amp;gt; used in the document in the PS or EPS exported file. As of now, this works for &amp;lt;b&amp;gt;Type 1 fonts only&amp;lt;/b&amp;gt;, not TrueType. The option is available when performing the export from the GUI as well as from the command line via the &amp;lt;code&amp;gt;--export-embed-fonts&amp;lt;/code&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
== EMF export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape has a limited support for exporting &amp;lt;b&amp;gt;EMF&amp;lt;/b&amp;gt; (Enhanced Meta File) format. This works &amp;lt;b&amp;gt;only on Windows&amp;lt;/b&amp;gt;, and only exports strokes and fills with constant colors. No text, no images, no gradients, no transparency.&lt;br /&gt;
&lt;br /&gt;
= SVG output =&lt;br /&gt;
&lt;br /&gt;
For specialized uses, several aspects of Inkscape's SVG output can now be customized via editing the preferences.xml file (there's no UI for these options). A &amp;lt;group id=&amp;quot;&amp;lt;b&amp;gt;svgoutput&amp;lt;/b&amp;gt;&amp;quot;&amp;gt; inside &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; can have the following attributes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;usenamedcolors&amp;lt;/b&amp;gt; (default is 0). If nonzero, Inkscape uses symbolic color names (such as &amp;quot;white&amp;quot; or &amp;quot;lime&amp;quot;) and three-digit color designations (such as $dfe) where appropriate; otherwise, it always uses six-digit colors (such as $d0f0e0). Note that in 0.44, the default was to use named colors, which created problems for some extension effects.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;numericprecision&amp;lt;/b&amp;gt; (default is 8). This is the number of significant digits written for each number into SVG. You can lower this number to get slightly more compact SVG at the expense of precision.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;minimumexponent&amp;lt;/b&amp;gt; (default is -8). In transform= attributes, any number whose absolute value is less than 10 to the power of minimumexponent (i.e. less than 10&amp;lt;sup&amp;gt;-8&amp;lt;/sup&amp;gt; by default) is written as 0.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;indent&amp;lt;/b&amp;gt; (default is 2) controls the number of spaces that each level of nesting in SVG is shifted. Set this to 0 to disable indentation.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;inlineattrs&amp;lt;/b&amp;gt; (default is 0). If nonzero, attributes are placed on the same line as their tags; otherwise they are separated by newlines.&lt;br /&gt;
&lt;br /&gt;
= Bitmap tracing =&lt;br /&gt;
&lt;br /&gt;
* A '''new color quantization algorithm''' for multiscan traces works faster (especially for large numbers of colors) and gives more adequate results with less colors used. This improves tracing results both for full-color photographs and for limited-color drawings. &lt;br /&gt;
&lt;br /&gt;
* The Trace Bitmap dialog now provides access to three more tracing parameters:&lt;br /&gt;
&lt;br /&gt;
:* '''Suppress speckles''': If set, spots or speckles larger than the given size (in pixels) are suppressed in the trace.&lt;br /&gt;
&lt;br /&gt;
:* '''Smooth corners''': This parameter controls how much smoothing is applied to corners in the traced path.&lt;br /&gt;
&lt;br /&gt;
:* '''Optimize paths''': If set, trace paths are optimized by joining adjacent Bezier segments with the given tolerance.&lt;br /&gt;
&lt;br /&gt;
* All controls in the Trace Bitmap dialog are reorganized to be easier to find. The dialog is redesigned to use two main tabs: '''Mode''' (where you select the tracing mode, such as brightness cutoff or color multiscan) and '''Options''' (where you set various tracing options, such as corner smoothing). The preview is placed horizontally to the right of the tabs. Most labels and tooltips are rewritten for clarity. The trace preview image is made twice larger.&lt;br /&gt;
&lt;br /&gt;
= Even more improvements =&lt;br /&gt;
&lt;br /&gt;
* The '''opacity''' of objects is now displayed as percentage, '''from 0 to 100''', both in the Fill &amp;amp; Stroke dialog (with one fractional digit) and in the statusbar style indicator (with no fractional digits), instead of from 0 to 1.0 as before. This makes opacity values easier to read, type, and say.&lt;br /&gt;
&lt;br /&gt;
* A '''Save a copy''' command has been added to the file menu, similar to the 'Save a copy' functionality of e.g. Adobe Illustrator. With this command, you can save your document under a new filename, but Inkscape will then &amp;quot;forget&amp;quot; it has done this: later saves will be to the old filename. The default shortcut assigned to this function is '''Shift+Ctrl+Alt+S'''.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Text and flowed text objects&amp;lt;/b&amp;gt; behave more consistently. Now you can put a flowed text on path or (re)flow it into a shape just as you would do with a regular (unflowed) text. Previously, the need to convert a flowed text to text before these operations was a stumble for many users.&lt;br /&gt;
&lt;br /&gt;
* Several commands were added to the '''Help menu''', providing the long-missing access to basic information about Inkscape and SVG right from the program: [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/index.php Inkscape manual], [http://inkscape.org/doc/inkscape-man.html Command line options], [http://wiki.inkscape.org/wiki/index.php/FAQ FAQ], Release notes, [http://inkscape.org/report_bugs.php Bug report page], and the [http://www.w3.org/TR/SVG11/ SVG 1.1 specification]. All these commands open the corresponding web pages in the user's default web browser. &lt;br /&gt;
&lt;br /&gt;
* Exported PNG images have the correct '''resolution''' set in the header.&lt;br /&gt;
&lt;br /&gt;
* The Path -&amp;gt; '''Union''' (Ctrl++) operation now functions when only a '''single object''' is selected. Use this to '''remove self-intersections''' in path objects.&lt;br /&gt;
&lt;br /&gt;
* We removed the &amp;quot;hacked&amp;quot; '''filename entry field''' that we had added to the Open and Save dialogs because starting from version 2.10, GTK+ has finally restored this field in their '''standard file dialog'''. The standard field at the top of the dialog supports type-ahead find and performs the default dialog action (open or save) by pressing Enter, which means you can now do a quick '''Ctrl+O, Ctrl+V, Enter''' sequence to open the file whose path is in your clipboard (this closes a long-standing usability bug). Those who use older versions of GTK are advised either to upgrade to 2.10 or use Ctrl+L to open a pop-up filename box. (Our Windows builds are shipped with GTK+ 2.10.)&lt;br /&gt;
&lt;br /&gt;
* The '''Create Bitmap''' function (Alt+B in the default keymap) is made more useful. Unless you have specific resolution or minimum size set for this command in preferences.xml (&amp;lt;code&amp;gt;&amp;amp;lt;group id=&amp;quot;createbitmap&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt;), it will take the '''resolution hint''' from the object whose bitmap copy you are creating (in other words, it will use the resolution that you specified for that object when exporting it via the Export Bitmap dialog), or the default '''90 dpi''' if that object was not yet exported. Also, a 90 dpi bitmap (with its pixels exactly 1 px in size) will be '''snapped''' to the pixel grid. This makes it easy to use Create Bitmap for quick '''rasterization preview''' of an object or document. (Note: if you have used a previous version of Inkscape, your preferences.xml may contain &amp;lt;code&amp;gt;minsize=&amp;quot;250&amp;quot;&amp;lt;/code&amp;gt;; delete this for objects' resolution hints to work.)&lt;br /&gt;
&lt;br /&gt;
* Using extended input (i.e. tablet pressure and tilt) can now be disabled via Preferences (Misc tab). This is intended to be a last-resort option for those platform/hardware combinations that are not properly supported by GTK. With extended input disabled, you can still use your tablet as a mouse. &lt;br /&gt;
&lt;br /&gt;
* Simplify Path now has two modes when working with a group of paths:  the default mode, which treats all of the paths as one large object to simplify, or the new mode, which acts the same as using Simplify on each path in a group separately.  In preferences.xml, set '''options.simplifyindividualpaths''' to 1 to get the new mode.&lt;br /&gt;
&lt;br /&gt;
* For long Simplify operations (more than 20 paths at a time), Inkscape provides user feedback via the status bar as to how many paths have been simplified.  This change also prevents Inkscape from appearing to have locked up during the operation.&lt;br /&gt;
&lt;br /&gt;
* New '''templates''' added for '''video formats''' (PAL, NTSC and HDTV 1080) as well as DVD cover templates that were not installed in the previous version. This will help video and DVD authoring with Inkscape. The business card 85&amp;amp;times;54 template is now installed as well.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Other&amp;quot; license type was added to the metadata/license dialog so that people know that they are entering a URI to an &amp;quot;other&amp;quot; license.&lt;br /&gt;
&lt;br /&gt;
= Examples = &lt;br /&gt;
&lt;br /&gt;
* With all the recent additions - clipping, masking, and especially blur - Inkscape is now able to produce extremely photorealistic art. In the share/examples folder in Inkscape distribution, you will find two brand new, stunningly realistic images of shiny cars: &amp;lt;b&amp;gt;car.svgz&amp;lt;/b&amp;gt; by Konstantin Rotkevich and &amp;lt;b&amp;gt;gallardo.svgz&amp;lt;/b&amp;gt; by Michael Grosberg.&lt;br /&gt;
&lt;br /&gt;
* Inkscape 0.45 does not yet have gradient meshes. But with the addition of Gaussian Blur, this feature suddenly got within reach. A new example file, &amp;lt;b&amp;gt;gradient-mesh-experimental.svgz&amp;lt;/b&amp;gt;, explains the approach Inkscape will likely take to implement this feature in a fully SVG-compatible way.&lt;br /&gt;
&lt;br /&gt;
* Although Inkscape does not support animation yet, you can add any animation scripts and attributes to your SVG file manually in a text editor - and the file will still be editable in Inkscape. Tavmjong Bah used this technique to create  &amp;lt;b&amp;gt;animated-clock.svg&amp;lt;/b&amp;gt; which, when loaded in an SVG viewer supporting animation (such as Firefox, Opera, or Batik), demonstrates the intricate moving clockwork of a watch - and shows real time to boot! If loaded in Inkscape, the image is static, but instead you can freely edit any of the objects.&lt;br /&gt;
&lt;br /&gt;
= Translations, tutorials, templates =&lt;br /&gt;
&lt;br /&gt;
* Remarkable improvements are in the '''Danish''', '''Finnish''', '''Nepalese''' and the '''Vietnamese''' translations of the user interface. They all jumped from 0 to over 90 percent in a very short timespan.&lt;br /&gt;
&lt;br /&gt;
* All people which are familiar with '''pig latin''' are now able to use Inkscape's user interface in that language. Isthay isway oughtbray otay usway ybay away ewnay anslatortray.&lt;br /&gt;
&lt;br /&gt;
* Updated '''British English''', '''Catalan''', '''Czech''', '''Bulgarian''', '''French''', '''Danish''', '''Finnish''', '''German''', '''Brazilian Portuguese''' and '''Thai''', '''Vietnamese''' and '''Dzongkha''' translations.&lt;br /&gt;
&lt;br /&gt;
* A new Esperanto translation added including default document template.&lt;br /&gt;
&lt;br /&gt;
* Default Lithuanian template was not installed before, which is now fixed.&lt;br /&gt;
&lt;br /&gt;
* New tutorial &amp;quot;Easter Eggs&amp;quot; by Steve Karg.&lt;br /&gt;
&lt;br /&gt;
* Added Catalan default template and elements tutorial.&lt;br /&gt;
&lt;br /&gt;
* Russian header and footer templates for tutorials are added.&lt;br /&gt;
&lt;br /&gt;
* Several tutorial translations were updated, namely '''Catalan''', '''Brazilian Portuguese''', '''Russian''', '''German''', '''Danish''' and '''French'''.&lt;br /&gt;
&lt;br /&gt;
* There are also new Russian and Japanese translations of Windows installer strings.&lt;br /&gt;
&lt;br /&gt;
= Dependency changes =&lt;br /&gt;
&lt;br /&gt;
* We have changed the '''GTK+''' requirement for compilation to version 2.8. However, it is highly recommended to use at least the version '''2.10.7''' because previous versions contain at least one crash bug which may cause Inkscape to crash after typing in a value into a spinbutton.&lt;br /&gt;
&lt;br /&gt;
= Notable bugfixes =&lt;br /&gt;
&lt;br /&gt;
* When deleting a node, neighboring smooth nodes are converted to cusp.&lt;br /&gt;
&lt;br /&gt;
* Releasing the mouse button while dragging nodes using a tablet will now always release the nodes.  Before this, a race condition could occur where dragging could continue after the mouse button was released.&lt;br /&gt;
&lt;br /&gt;
* An object's mask and clipping path are now preserved after Simplify, Object/Stroke to path, or boolean operations.&lt;br /&gt;
&lt;br /&gt;
* Ungrouping a group containing clipped/masked objects might sometime break the clip/mask (move it away); this is fixed.&lt;br /&gt;
&lt;br /&gt;
* Transforming an object and its clone no longer behaves unexpectedly when they are both within a transformed group. &lt;br /&gt;
&lt;br /&gt;
* User-supplied templates in ~/.inkscape/templates can now be SVGZ files in addition to SVG.&lt;br /&gt;
&lt;br /&gt;
* Previously, Inkscape didn't check if there's enough free memory for its pixel buffers and could crash without warning due to insufficient memory e.g. upon zooming in. This problem became much worse after implementing Gaussian blur, because rendering blurred objects at high zooms may require a pixel buffer much bigger than the visible canvas. Now this situation is handled more gracefully: if a display operation requires more memory than available, or more than 100Mb (which corresponds to a 5000x5000 pixel buffer), it is skipped. This may result in blurred objects &amp;quot;disappearing&amp;quot; at high zooms. This is purely a display issue, however, and it never corrupts data; just zoom out (or reduce blur radius) and the disappeared object will show up OK.&lt;br /&gt;
&lt;br /&gt;
* When resizing objects, scaling numbers in the statusbar are no longer overwritten by other text when pressing the modifier keys (Alt, Shift, Ctrl).&lt;br /&gt;
&lt;br /&gt;
* To work around problems some users had with pressure-sensitive tablets ([http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1281512&amp;amp;group_id=93438&amp;amp;atid=604306 bug 1281512]), the pressure sensitivity can be disabled from the Misc tab of Inkscape Preferences dialog. After that, the tablet can still be used as a regular mouse. &lt;br /&gt;
&lt;br /&gt;
* The layer widget in the statusbar used to lose its current layer after an effect run; this is fixed.&lt;br /&gt;
&lt;br /&gt;
* When using different display resolutions or a dual screen setup, dialogs could be displayed off-screen; this is fixed: now Inkscape checks whether the saved position of the dialog is offscreen, if so it will move the dialog to the center of the screen. Note that this not solve all problems. If the dialog is still not visible, go to the [http://sourceforge.net/tracker/?func=detail&amp;amp;atid=604306&amp;amp;aid=1250236&amp;amp;group_id=93438 bug 1250236] where a procedure is given to make the dialog visible (by editing preferences.xml).&lt;br /&gt;
&lt;br /&gt;
* Grid and guidelines no longer vanish when changing their color.&lt;br /&gt;
&lt;br /&gt;
* Group transformation is now correctly re-applied when ungrouping and then undoing the ungroup operation.&lt;br /&gt;
&lt;br /&gt;
* Text dialog no longer discards the style of the selected text.&lt;br /&gt;
&lt;br /&gt;
* Inkscape no longer crashes when you try to unflow an empty flowed text.&lt;br /&gt;
&lt;br /&gt;
* Thanks to patches submitted by users of our community, Inkscape can now be built on SGI IRIX 6.5.28, gcc 3.4.0 systems and on Tru64 systems.&lt;br /&gt;
&lt;br /&gt;
= Known problems =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problem with &amp;quot;Dialogs on Top&amp;quot; on Windows ====&lt;br /&gt;
&lt;br /&gt;
* Although the &amp;quot;Dialogs on Top&amp;quot; option is now available on Windows (File &amp;gt; Inkscape Preferences &amp;gt; Windows), it does not work exactly as it should (yet!). When the document window is minimized, the dialogs remain visible, i.e. are not minimized together with the document window. Because of this, it is not possible to get the document window back by clicking its taskbar button. A workaround to this problem is to '''right-click the Inkscape taskbar button and select &amp;quot;Restore&amp;quot;.''' We expect that future releases of GTK will solve this problem.&lt;br /&gt;
&lt;br /&gt;
==== Spinbuttons may crash if you have GTK+ older than 2.10.7 ====&lt;br /&gt;
&lt;br /&gt;
* You may experience crashes after typing in a value into a spinbutton if you have a version of GTK+ 2.10.6 or older. Upgrade your GTK+ to fix this. (This does not affect the Windows package as it comes with GTK+ 2.10.9.)&lt;br /&gt;
&lt;br /&gt;
==== Numerical Python required for Perspective effect ====&lt;br /&gt;
&lt;br /&gt;
* This effect will not work until you install a python module called '''numpy''' (Numerical Python). It can be downloaded at [http://numpy.scipy.org/ numpy.scipy.org]. The Windows package already contains this module.&lt;br /&gt;
&lt;br /&gt;
==== Do not use a clone of an object as its clipping path/mask ====&lt;br /&gt;
&lt;br /&gt;
* In this version, you cannot use an object's clone as its clipping path or mask. Either unlink the clone first, or clip one clone of a source object (not the source itself) by another clone of the same. Properly fixing this bug requires some deep changes in the code and therefore was postponed until after 0.45 so as not to delay the release.&lt;br /&gt;
&lt;br /&gt;
==== Non-Unicode symbol fonts on Windows don't work ====&lt;br /&gt;
&lt;br /&gt;
* On Windows, symbol fonts without a Unicode map do not work. This is a limitation of the Pango library that we use.&lt;br /&gt;
&lt;br /&gt;
==== Problems with some Debian libgc-6.7 packages ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape will hang or crash when linked with the first Debian packaged version of the Boehm garbage collection library. This problem was fixed in version 1:6.7-2  of the package.  If you have libgc 6.7 on your Debian-based system, make sure that you are using that version of the package or later.&lt;br /&gt;
&lt;br /&gt;
==== Beware of defective themes on Linux ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape and other Gtk programs can crash on any Linux, when the &amp;lt;b&amp;gt;gtk2-engines-smooth / libsmooth&amp;lt;/b&amp;gt; package is installed. We have filed a bug against libsmooth which is now in gtk-engine and part of gnome. Removing the package resolves the problem. Update: this bug appears to be fixed in newer versions of gtk-engines. If you are affected by this problem please update to a newer version of gtk-engines. If problems persist then please inform the gtk-engines maintainers of the problem. &lt;br /&gt;
&lt;br /&gt;
* A similar crash happens if the &amp;lt;b&amp;gt;KDE Baghira&amp;lt;/b&amp;gt; theme or the package &amp;lt;b&amp;gt;gtk_qt_engine&amp;lt;/b&amp;gt; are installed. If you experience Inkscape crashes on KDE, please try to install a different theme from Baghira, or uninstall the gtk_qt_engine package from your system. Both problems also affect older versions of Inkscape.&lt;br /&gt;
&lt;br /&gt;
= Previous releases =&lt;br /&gt;
&lt;br /&gt;
* [[ReleaseNotes044]]&lt;br /&gt;
* [[ReleaseNotes043]]&lt;br /&gt;
* [[ReleaseNotes042]]&lt;br /&gt;
* [[ReleaseNotes041]]&lt;br /&gt;
* [[ReleaseNotes040]]&lt;br /&gt;
* [[ReleaseNotes039]]&lt;br /&gt;
* [[ReleaseNotes038]]&lt;br /&gt;
* [[ReleaseNotes037]]&lt;br /&gt;
* [[ReleaseNotes036]]&lt;br /&gt;
* [[ReleaseNotes035]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Marketing]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=13776</id>
		<title>Release notes/0.45</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=13776"/>
		<updated>2007-03-03T00:19:53Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* Inkscape 0.45.1 changes with respect to 0.45 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Inkscape 0.45.1 changes with respect to 0.45 =&lt;br /&gt;
'''(not released yet)'''&lt;br /&gt;
&lt;br /&gt;
*Patch [ 1667939 ]: fix crash when tile-tracing with too small clones&lt;br /&gt;
*Patch [ 1666532 ]: Broken link in inkview man page&lt;br /&gt;
*Patch [ 1665447 ]: fix for the blur quantization bug 1617082&lt;br /&gt;
*Patch [ 1664849 ]: fix for 1662589: increase blur margins&lt;br /&gt;
*Patch [ 1664004 ]: embedimage.py with fixed search order&lt;br /&gt;
*Patch [ 1662649 ]: markers.svg with reversed order&lt;br /&gt;
*Crudely improve check-markup for &amp;amp;#123; markup, fix translations with bugs in that area (dz and zh_TW).&lt;br /&gt;
*Patch [ 1659404 ]: Set locale directory from environment variable&lt;br /&gt;
*Patch [ 1657072 ]: fix for bug 1654495&lt;br /&gt;
*Patch [ 1654636 ]: defocus dropper checkboxes&lt;br /&gt;
*Updated slovak translation&lt;br /&gt;
*Adding japanese.nsh and russian.nsh into files that should go into the release tarball&lt;br /&gt;
*Correct russian translation&lt;br /&gt;
*Patch [ 1651797 ]: fix for attributes when saving/save-a-copy&lt;br /&gt;
*Patch [ 1651752 ]: fix dropper tool&lt;br /&gt;
*Pattern along path extension fixed on Windows&lt;br /&gt;
*Include libtiff3.dll in the distribution&lt;br /&gt;
&lt;br /&gt;
= Inkscape 0.45: overview =&lt;br /&gt;
&lt;br /&gt;
This release brings the exciting new features developed by the Google Summer of Code 2006 participants, as well as tons of other improvements across the board. Here are the highlights:&lt;br /&gt;
&lt;br /&gt;
* '''Gaussian blur''' is the first SVG filter supported by Inkscape. You can blur any object to any extent - yet it remains vector and fully editable. This gives a huge boost to Inkscape as a creative art tool.&lt;br /&gt;
&lt;br /&gt;
* '''Display speed and interactivity''': not only does Inkscape render faster, but it can now respond to user input before it finished redrawing the screen, which greatly improves the responsiveness (perceived speed or interactivity) of the program.&lt;br /&gt;
&lt;br /&gt;
* '''History dialog''' makes it easy to to review your editing session and jump to any step of it, undoing and redoing multiple actions with one click.&lt;br /&gt;
&lt;br /&gt;
* Several important tool features are added, notably the new selection mode in '''Node tool''' and the adjustable rounded caps in '''Calligraphic pen'''.&lt;br /&gt;
&lt;br /&gt;
* '''Bitmap tracing''' works better for multi-color traces, sports a redesigned dialog and several new options.&lt;br /&gt;
&lt;br /&gt;
* Many new '''extension effects''' are added, including '''Color effects''' and '''Pattern along path'''. &lt;br /&gt;
&lt;br /&gt;
* The '''Outline mode''' has got many fixes and improvements, including a keyboard shortcut.&lt;br /&gt;
&lt;br /&gt;
* Several new commands in '''Help''' menu open various Inkscape-related pages in your default browser, making Inkscape reference information more accessible as you work. &lt;br /&gt;
&lt;br /&gt;
* Dozens of smaller '''features''' are added throughout the program, and hundreds of '''bugs''' are fixed.&lt;br /&gt;
&lt;br /&gt;
= SVG filters: Gaussian blur =&lt;br /&gt;
&lt;br /&gt;
Thanks to Google's Summer of Code program, Inkscape now has basic support for [http://www.w3.org/TR/SVG11/filters.html SVG filters]. The only filter enabled so far is '''Gaussian blur'''. &lt;br /&gt;
&lt;br /&gt;
With it, you can softly and naturally blur any Inkscape objects: paths, shapes, groups, text, images. Clones inherit blurring from their original, but they can also be blurred independently from the original (you can create blurred clones with Tile Clones, too). Both the fill and stroke of an object are blurred together, creating semitransparent margins that smoothly blend into the background. &lt;br /&gt;
&lt;br /&gt;
Gaussian blur enables a wide range of photorealistic effects: arbitrarily shaped shades and lights, depth of field, drop shadows, glows, etc. Also, blurred objects can be used as masks for other objects to achieve the &amp;quot;feathered mask&amp;quot; effect.&lt;br /&gt;
&lt;br /&gt;
* To blur selected objects, open the Fill and Stroke dialog (Ctrl+Shift+F) and use the '''Blur''' slider. The blur value is a percentage, with 100% corresponding to a blurring radius (standard deviation of Gaussian function) of 1/8 of the object's bounding box' perimeter (that is, for a square, a blur of 100% will have the radius equal to half a side, which turns any shape into an amorphous cloud). &lt;br /&gt;
&lt;br /&gt;
* The '''Tile Clones''' dialog also supports blurring. On the '''Blur &amp;amp; opacity''' tab, you can set the blur percentage per row or per column of your tiling, as well as randomize blurring and make it alternate (all the same options as for Opacity).&lt;br /&gt;
&lt;br /&gt;
* The quality of on-screen blur display is controlled by the '''Blur quality''' option on the new '''Filters''' tab of Inkscape Preferences (Ctrl+Shift+P). The available options range from best quality/slowest display to worst quality/fastest display, the default being in the middle of the range. Any setting except the &amp;quot;best quality&amp;quot; may introduce some rendering artifacts, especially when blurring thin strokes; on the other hand, the &amp;quot;best quality&amp;quot; setting may make Inkscape extremely slow at high zooms. These settings only affect the screen display of blurred objects; bitmap export always uses the best quality (and may therefore become quite slow for images with a lot of blur).&lt;br /&gt;
&lt;br /&gt;
Here are a few tips on using blur:&lt;br /&gt;
&lt;br /&gt;
* '''Masks and clipping''' are applied ''after'' blur. That is, if you clip an object and then blur it (or blur it first and then clip - it makes no difference), the clipped edges will remain crisp. Often, this is what you want. If, however, you want to blur the clipped/masked edges too (possibly with a different radius), you can use grouping: group the clipped object with some other object (which you can then delete from the group) and blur the group.&lt;br /&gt;
&lt;br /&gt;
* A simple '''drop shadow''' is now very easy to do: just copy the object, paint the copy black, blur it, shift away a bit and lower it to the bottom. However, such a shadow does not update when you edit the foreground object. If your object is already black (or, more generally, if you want the shadow to be the same color as the object), you can clone instead of copy to make the shadow auto-updating. But what if your foreground object is not black but you need an auto-updating black shadow? Here's a recipe: unset the object's fill (it becomes black); create ''two'' clones of it; put one clone on top and paint any color you want; put the other clone at bottom, blur it and shift sideways. Now you can edit the unset-fill original (use Alt+click to select it) and everything will update. &lt;br /&gt;
&lt;br /&gt;
* If an object has a fill that you don't want to blur (e.g. pattern, or if it's a bitmap), but you just want to '''feather the edges''', use a blurred transparency mask. For this, copy the object; paint it white; blur it as needed; scale the blurred copy down so its blur margins are entirely within the original object; select both the original and the blurred mask; do Object &amp;gt; Mask &amp;gt; Set.&lt;br /&gt;
&lt;br /&gt;
* '''Transforming''' a blurred object '''transforms its blur''', too. This applies to a non-uniform scaling as well, so by squeezing a blurred object you make its blur squeezed as well. So, the easiest way to blur a path horizontally more than vertically is this: stretch it upwards without blur, then apply blur and squeeze it back into the original shape. (This only works if the stretched path does not already have a Transform attribute.)&lt;br /&gt;
&lt;br /&gt;
* You can combine '''blurring with gradients'''. For example, an ellipse with elliptic opacity gradient will look much softer and more natural when blurred. An object with a horizontal linear opacity gradient, when blurred, will look as if it's more blurred on its transparent side than on its opaque side.&lt;br /&gt;
&lt;br /&gt;
* A '''clone of a blurred object''' inherits the blur of the original. Therefore, such a clone can be blurred ''more'', but you can't &amp;quot;unblur&amp;quot; it to make the clone sharper than its original (unless, of course, you unlink it). The Fill and Stroke dialog shows you the amount of the blur applied to this particular object; however, if the object is a clone of an already blurred original, the dialog does not reflect that.&lt;br /&gt;
&lt;br /&gt;
* Note that '''Firefox 2.0''' does not support SVG filters, so your files will be displayed in Firefox 2.0 without blur. However, filter support has been added  in the current development version and will be included in Firefox 3.0. The Opera web browser, as well as librsvg (used by Wikipedia) and Batik, support filters correctly in their current versions.&lt;br /&gt;
&lt;br /&gt;
= Undo history =&lt;br /&gt;
&lt;br /&gt;
* Inkscape now features a &amp;lt;b&amp;gt;History Dialog&amp;lt;/b&amp;gt; accessible via &amp;lt;b&amp;gt;Ctrl+Shift+H&amp;lt;/b&amp;gt; or Edit &amp;amp;gt; Undo History. All changes made to the document since it was opened are recorded here.&lt;br /&gt;
&lt;br /&gt;
:* In the dialog, changes are listed from the '''oldest (top)''' to the '''newest (bottom)'''. &lt;br /&gt;
&lt;br /&gt;
:* The type of each change is indicated by an '''icon''' and a short '''description'''.&lt;br /&gt;
&lt;br /&gt;
:* For readability, consecutive changes of the same type are placed in a '''collapsible branch''' showing a triangle marker and the number of the hidden actions in the branch.&lt;br /&gt;
&lt;br /&gt;
:* By clicking on an event in the list, you can easily '''move through the undo history''', i.e. undo or redo any number of actions with one click.&lt;br /&gt;
&lt;br /&gt;
* The Undo and Redo commands in the Edit menu display the descriptions of the commands to be undone and redone, correspondingly. (These are the same descriptions that you see in the History dialog.)&lt;br /&gt;
&lt;br /&gt;
= Rendering improvements =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Interruptible display&amp;lt;/b&amp;gt;: Previously, Inkscape could not do anything until it finishes the current screen redraw. Now the redraw is made interruptible, so that Inkscape responds to mouse and keyboard input and can abort the current redraw and start over if you do some screen-changing operation. As a result, Inkscape now feels '''much snappier and more interactive'''. This interruptibility is fine-tuned for some continuous-drag operations (such as node dragging) so that a balance is achieved between responsiveness and completeness of display.&lt;br /&gt;
&lt;br /&gt;
* Screen render is faster by '''2-3%''' overall:&lt;br /&gt;
&lt;br /&gt;
:* Complex drawings with '''transparency''' are faster by up to '''5%'''.&lt;br /&gt;
&lt;br /&gt;
:* '''Radial gradients''' are rendered faster by at least '''10%'''.&lt;br /&gt;
&lt;br /&gt;
* Rendering (compositing) quality has been improved. This is most visible with (partially) transparent gradients: '''banding''' is a lot less pronounced now. Speed has also been improved in some cases.&lt;br /&gt;
&lt;br /&gt;
* Display is more responsive when working at high zoom levels when using a tablet.&lt;br /&gt;
&lt;br /&gt;
= Tools = &lt;br /&gt;
&lt;br /&gt;
== Node tool ==&lt;br /&gt;
&lt;br /&gt;
* You can &amp;lt;b&amp;gt;grow or shrink node selection&amp;lt;/b&amp;gt; by hovering the mouse pointer over a node and using &amp;lt;b&amp;gt;mousewheel&amp;lt;/b&amp;gt; (up = grow, down = shrink) or the keys &amp;lt;b&amp;gt;PageUp&amp;lt;/b&amp;gt; (grow) and &amp;lt;b&amp;gt;PageDown&amp;lt;/b&amp;gt; (shrink). ''Growing'' adds the closest unselected node to the selection; shrinking deselects the farthest selected node. There are two modes that differ by how the closest/farthest nodes are chosen:&lt;br /&gt;
&lt;br /&gt;
:* &amp;lt;b&amp;gt;Spatial selection&amp;lt;/b&amp;gt; (mousewheel, PageUp/PageDown): distances to nodes are measured directly, regardless of which subpath a node belongs to. &lt;br /&gt;
&lt;br /&gt;
:* &amp;lt;b&amp;gt;Linear selection&amp;lt;/b&amp;gt; (Ctrl+mousewheel, Ctrl+PageUp/Ctrl+PageDown): node distances are measured ''along the path'', and only the nodes belonging to the same subpath as the hovered node are considered (i.e. other subpaths are never selected).&lt;br /&gt;
&lt;br /&gt;
:This technique is convenient for quickly selecting an area in a complex path starting from a center - for example, for node sculpting.&lt;br /&gt;
&lt;br /&gt;
== Dropper ==&lt;br /&gt;
&lt;br /&gt;
* Instead of the confusing toggle button, now the Controls bar for the Dropper tool has two checkboxes, '''Pick alpha''' and '''Set alpha''', which work as follows. Suppose you have an object selected and, using Dropper, click on an object which has red (#FF0000) fill and 0.5 opacity (half-transparent).&lt;br /&gt;
&lt;br /&gt;
:* If the &amp;quot;Pick alpha&amp;quot; checkbox is off, the selected object will get the fill color #800000 (i.e. faded-out red) and fill opacity will be at 1.0 (opaque). &lt;br /&gt;
&lt;br /&gt;
:* If the &amp;quot;Pick alpha&amp;quot; checkbox is on but &amp;quot;Set alpha&amp;quot; is off, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 1.0. &lt;br /&gt;
&lt;br /&gt;
:* If both &amp;quot;Pick alpha&amp;quot; and &amp;quot;Set alpha&amp;quot; are on, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 0.5 (half-transparent). &lt;br /&gt;
&lt;br /&gt;
:If you Shift+click instead of click, the same changes will be made to stroke color and stroke opacity, correspondingly. Note that in no situation can Dropper change the ''master opacity'' of the selected object(s) (only the fill/stroke opacity), although it can pick it just as it does any other kind of opacity.&lt;br /&gt;
&lt;br /&gt;
== Calligraphy ==&lt;br /&gt;
&lt;br /&gt;
* A new numeric parameter, &amp;lt;b&amp;gt;Caps&amp;lt;/b&amp;gt;, controls the amount of protruding at the ends of calligraphic strokes. This parameter can range from 0 (flat caps, default behavior in previous versions) through 1 (approximately half-circle caps) and up to 5 (long elliptic caps). Rounded caps much improve the look of low-fixation strokes, simulating a rounded pen.  &lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Drag&amp;quot; parameter has been renamed to &amp;lt;b&amp;gt;Wiggle&amp;lt;/b&amp;gt; with a value inversion (i.e. low drag corresponds to high wiggle, and vice versa). Increase this parameter (default is 0) to make the pen waver and wiggle in curly patterns.&lt;br /&gt;
&lt;br /&gt;
* As a first step towards a redesign of the tools' controls, the '''Controls bar of the Calligraphy pen''' has been upgraded. Now it no longer prevents the Inkscape window from resizing narrower than the bar. The items on the far right end of the bar which didn't fit in a narrow window are still accessible through an '''expansion menu''' which allows you to toggle switches, select commands, and set values of numeric fields. Also, each editable numeric value field has a new '''right-click menu''' with some common values which often allows you to set a desired value much faster than by scrolling the control or typing the value into it.&lt;br /&gt;
&lt;br /&gt;
* With low or zero Fixation parameter, some users of tablet pens experienced &amp;quot;blobs&amp;quot; (brief reversals of a stroke's right/left edges, causing &amp;quot;holes&amp;quot; and &amp;quot;bubbles&amp;quot; in a calligraphic stroke), especially often at the start of a stroke. Hopefully this problem is now fixed without reducing the responsiveness of the tool.&lt;br /&gt;
&lt;br /&gt;
= Outline mode =&lt;br /&gt;
&lt;br /&gt;
* A new menu command (&amp;lt;b&amp;gt;View &amp;gt; Display Mode &amp;gt; Toggle&amp;lt;/b&amp;gt;) and a new keyboard shortcut (&amp;lt;b&amp;gt;Ctrl+&amp;amp;lt;keypad 5&amp;amp;gt;&amp;lt;/b&amp;gt;) switch the display mode from Normal to Outline and back.&lt;br /&gt;
&lt;br /&gt;
* The window title displays &amp;quot;&amp;lt;b&amp;gt;(outline)&amp;lt;/b&amp;gt;&amp;quot; next to the file name when that editing window is in Outline mode. &lt;br /&gt;
&lt;br /&gt;
* An object with &amp;lt;b&amp;gt;mask and/or clipping path&amp;lt;/b&amp;gt;, when viewed in Outline mode, now displays both the object itself and its clipping path and mask as objects, using different outline colors. By default, &amp;lt;b&amp;gt;clippaths use green&amp;lt;/b&amp;gt; outlines, and &amp;lt;b&amp;gt;masks use blue&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Images&amp;lt;/b&amp;gt; in Outline mode are displayed as &amp;lt;b&amp;gt;red&amp;lt;/b&amp;gt; (by default) frames with two diagonals.&lt;br /&gt;
&lt;br /&gt;
* An object with no fill and no stroke, invisible and not selectable by mouse clicking in normal mode, can now be &amp;lt;b&amp;gt;picked by a mouse click&amp;lt;/b&amp;gt; in the Outline mode using its visible outline.&lt;br /&gt;
&lt;br /&gt;
* The bug whereby stroked shapes didn't change stroke width when switching to Outline mode or back is fixed.&lt;br /&gt;
&lt;br /&gt;
* All outline colors are changeable by editing the &amp;quot;wireframecolors&amp;quot; group inside &amp;quot;options&amp;quot; in the preferences file (~/.inkscape/preferences.xml). The &amp;quot;onlight&amp;quot; and &amp;quot;ondark&amp;quot; attributes set the colors of the regular object outlines on light and dark backgrounds (default black and white correspondingly); the &amp;quot;images&amp;quot;, &amp;quot;clips&amp;quot;, and &amp;quot;masks&amp;quot; attributes set the colors of images, clipping paths, and masks (defaults are red, green, and blue correspondingly). Each attribute is a decimal integer corresponding to the hex RRGGBBAA of the color.  &lt;br /&gt;
&lt;br /&gt;
* To cater for specialized uses, such as preparing input for personal media cutters, Inkscape now has an option to start in the Outline mode upon launch. To enable this, add the following line to your preferences.xml file:&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;group id=&amp;quot;startmode&amp;quot; outline=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:placing it after the &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; opening tag.&lt;br /&gt;
&lt;br /&gt;
= Keyboard profiles =&lt;br /&gt;
&lt;br /&gt;
The previous release allowed sets of keybindings (keymaps) to be created for Inkscape in the style of other applications.  Two more keymaps have been added:  &lt;br /&gt;
&lt;br /&gt;
* '''Adobe Illustrator''' &lt;br /&gt;
* '''Macromedia Freehand'''&lt;br /&gt;
&lt;br /&gt;
Of course not every feature in these other programs has a direct match to features in Inkscape; so, if you can, please '''help us out''' by reporting any problems you may have or improvements you would like to request.&lt;br /&gt;
&lt;br /&gt;
Additionally, a keymap that focuses on tablet-based illustration and drawing work has been added:&lt;br /&gt;
&lt;br /&gt;
* '''right-handed-illustration.xml'''&lt;br /&gt;
&lt;br /&gt;
This keymap places all commonly-used commands under the left hand, so that the user's hands rarely leave the keyboard or the tablet/stylus.&lt;br /&gt;
&lt;br /&gt;
(To enable a profile, copy it into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; in the same directory, overwriting the old file. To restore the default Inkscape set, copy &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
More of Inkscape's keys are implemented as actions and are therefore available for remapping via keyboard profiles. New actions include '''EditSelectNext''' and '''EditSelectPrev''' for selecting next/previous object or node (by default, they are bound to Tab/Shift+Tab; as a result of becoming global actions, these keys now work in all tools and not only in Selector and Node tool as before).&lt;br /&gt;
&lt;br /&gt;
= Extension effects =&lt;br /&gt;
&lt;br /&gt;
Inkscape's extension effects, written in Python using the '''inkex''' utility class, are currently a major growth point of the project. They allow new developers to create functionality very quickly, without having to learn Inkscape's huge C/C++ codebase. However, eventually we plan to move many of these effects into the core of Inkscape, which will make them much faster and more interactive. From this viewpoint, effects can be considered a quick way to prototype and test the algorithms and UI controls of the future Inkscape features. However, this does not prevent effects from being genuinely useful in everyday work, and in this version we have several excellent additions. &lt;br /&gt;
&lt;br /&gt;
== New effects ==&lt;br /&gt;
&lt;br /&gt;
* '''Pattern along path''': A new powerful extension in the &amp;quot;Generate from path&amp;quot; submenu allows you to bend, repeat and/or stretch a pattern object (which can be a path or a group) along a &amp;quot;skeleton&amp;quot; path. This makes it easy to create a variety of patterned and shaped strokes. (This obsoletes the old &amp;quot;Kochify&amp;quot; extension which is removed.)&lt;br /&gt;
&lt;br /&gt;
:Effect's parameters include: &lt;br /&gt;
&lt;br /&gt;
:* ''Copies of the pattern'' selects one of the four modes: '''Single stretched''': one copy of the pattern is placed on the skeleton path and stretched/squeezed to match its length;  '''Repeated stretched''': as many copies as would fit are placed along the skeleton path and stretched to fit exactly; '''Single''' and '''Repeated''': same but without stretching.&lt;br /&gt;
&lt;br /&gt;
:* ''Deformation type'' can be one of: '''Snake''' bends the pattern flatly in the plane of the drawing, the width not depending on direction; '''Ribbon''' bends it as a vertical ribbon or like a calligraphic stroke with maximum fixation, so that width depends on direction (minimum for vertical parts of the stroke, maximum for horizontal).&lt;br /&gt;
&lt;br /&gt;
:* Several parameters allow you to adjust spacing between the copies of the pattern (for Multiple modes) and their offset in two directions (along the skeleton path and perpendicular to it).&lt;br /&gt;
&lt;br /&gt;
:* Normally the effect assumes that the pattern object is horizontal and bends its horizontal axis (at mid-height) along the skeleton path. There's a checkbox that allows you to use a '''vertical pattern''' instead. &lt;br /&gt;
&lt;br /&gt;
:Some examples of using this effect are shown on a screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.45-patternalongpath.png].&lt;br /&gt;
&lt;br /&gt;
* '''Color effects''': A new group of extensions in the '''Color''' submenu of the Effects menu allows you to adjust all colors of a selection at once. These commands affect both fill and stroke colors, including gradients (but not bitmaps). The commands include:&lt;br /&gt;
&lt;br /&gt;
:* a full set of '''HSL adjustments''' (increasing/decreasing hue, saturation, or lightness by 5%), &lt;br /&gt;
&lt;br /&gt;
:* '''Brighter''' and '''Darker''' (adjust brightness up or down by 10%), &lt;br /&gt;
&lt;br /&gt;
:* '''Desaturate''', &lt;br /&gt;
&lt;br /&gt;
:* '''Grayscale''', &lt;br /&gt;
&lt;br /&gt;
:* '''Negative''', &lt;br /&gt;
&lt;br /&gt;
:* commands for removing or swapping the '''Red''', '''Green''', '''Blue''' channels, &lt;br /&gt;
&lt;br /&gt;
:* a '''Custom''' command where you can set your own formulas for modifying the color channels. &lt;br /&gt;
&lt;br /&gt;
:Some examples of using this effect are shown on a screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.45-coloreffects.png].&lt;br /&gt;
&lt;br /&gt;
:Note: undoing color changes on gradients exposes a bug where an object seems to &amp;quot;disappear&amp;quot;; this is only a display issue (caused by the order in which gradients and their users are restored on undo) not causing any loss of information. Also, on large documents and large selections with gradients, Python's XPath code may get quite slow. Despite these shortcomings, we decided to add this extension, because it's genuinely useful functionality which was so far missing in Inkscape.&lt;br /&gt;
&lt;br /&gt;
* Recent fixes in the processing of SVG &amp;lt;defs /&amp;gt; have made it possible to implement the often requested '''Color Markers to Match Stroke''' effect. It is no longer necessary to hand-edit XML to recolor arrowheads; just change the stroke color of your path and call this effect to recolor its markers to match.&lt;br /&gt;
&lt;br /&gt;
* '''Lorem ipsum''' (in &amp;quot;Render&amp;quot; submenu) is a new extension that creates the traditional Latin-like random text for design mock-ups. The number of paragraphs, the number of sentences per paragraph and the possible fluctuation of the number of sentences (for uneven paragraphs) can be adjusted. If no flowed text element is selected, a new one in a new layer is created, matching the size of the canvas.&lt;br /&gt;
&lt;br /&gt;
* '''Fractalize''' (in &amp;quot;Modify Path&amp;quot; submenu) replaces each segment of the selected path by a crooked line, subdivided to the given depth, with randomly displaced nodes. &lt;br /&gt;
&lt;br /&gt;
* '''g2png''': The new group-to-PNG Python extension (g2png) is an easy way to export any group or layer to individual PNG files. It was first created for use in the [http://www.le-radar.com/?mm/inkscape Inkscape User Manual] (also available in SVN in the user_manual module) but is also interesting for many other uses. If e.g. you have to draw a set of icons, you can draw them in the same document, thus making copying, duplicating, cloning etc. easier. Then just create a group  for each icon, and with the extension, each group ends up in its own PNG file.&lt;br /&gt;
&lt;br /&gt;
== Improved effects ==&lt;br /&gt;
&lt;br /&gt;
* The '''Function Plotter''' has been extended, providing greater flexibility in x- and y-range definition. &lt;br /&gt;
&lt;br /&gt;
* The '''Measure Path''' extension is improved with several new parameters added (units, scale, precision, distance from path).&lt;br /&gt;
&lt;br /&gt;
* The '''Extract One Image''' extension is fixed to automatically append filename extension to the created bitmap file.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Blur Edge&amp;quot; extension is renamed into '''Inset/Outset Halo''' to avoid confusion with the real Gaussian blur that we now support, as well as to better describe what this extension actually does: From the selected path, it creates a group of inset and outset paths that form a stepped &amp;quot;halo&amp;quot; around the object. &lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
* '''3 new parameter types''' have been added to the extension effect UI: '''tabs''', '''enumerations''' and '''optiongroups''' (radio buttons). Examples are available of how to use these parameters in INX files: the new Function Plotter uses tabs; enumerations are used by the Pattern along path extension; and a small developer example is given to illustrate the use of optiongroups (identical to enumerations).&lt;br /&gt;
&lt;br /&gt;
* In an extension's INX file, you can specify &amp;lt;code&amp;gt;&amp;amp;lt;effects-menu hidden=&amp;quot;yes&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt; to hide that extension from the Effects menu. However, such a &amp;quot;hidden&amp;quot; extension can still be assigned a keyboard shortcut (by using its &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; as an &amp;quot;action&amp;quot; in your &amp;lt;code&amp;gt;~/.inkscape/keys/default.xml&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* In an extension's INX file, you can add &amp;lt;code&amp;gt;needs-document=&amp;quot;no&amp;quot;&amp;lt;/code&amp;gt; attribute to the &amp;lt;code&amp;gt;&amp;amp;lt;effect&amp;amp;gt;&amp;lt;/code&amp;gt; element. This indicates that the extension does not process the current SVG document, and Inkscape will not bother saving and restoring the document from a temporary file which allows this extension to run faster and smoother. (This is used for the new open-in-default-browser Help menu commands which are technically implemented as extensions.)&lt;br /&gt;
&lt;br /&gt;
= Export formats =&lt;br /&gt;
&lt;br /&gt;
== AI import/export ==&lt;br /&gt;
&lt;br /&gt;
* We only support AI import and export for Adobe Illustrator 8.0 and older.  This has been clarified in the Open and Save As lists.&lt;br /&gt;
&lt;br /&gt;
== PDF export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape's PDF exporter has been improved:&lt;br /&gt;
&lt;br /&gt;
* '''New features:''' bitmap images can be embedded; PDF files can be exported from command line using the &amp;lt;code&amp;gt;--export-pdf&amp;lt;/code&amp;gt; parameter. &lt;br /&gt;
&lt;br /&gt;
* '''Changed behavior:''' the pointless text to path question is gone. &lt;br /&gt;
&lt;br /&gt;
* '''Fixed bugs:''' save failure is now detected, miter limits are now &amp;gt;= 1, PDFs with transparent gradient are now embeddable, eccentric elliptic gradients fixed, dash style inheritance fixed, transparency inheritance fixed.&lt;br /&gt;
&lt;br /&gt;
== PS/EPS export ==&lt;br /&gt;
&lt;br /&gt;
There's a new option to &amp;lt;b&amp;gt;embed the fonts&amp;lt;/b&amp;gt; used in the document in the PS or EPS exported file. As of now, this works for &amp;lt;b&amp;gt;Type 1 fonts only&amp;lt;/b&amp;gt;, not TrueType. The option is available when performing the export from the GUI as well as from the command line via the &amp;lt;code&amp;gt;--export-embed-fonts&amp;lt;/code&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
== EMF export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape has a limited support for exporting &amp;lt;b&amp;gt;EMF&amp;lt;/b&amp;gt; (Enhanced Meta File) format. This works &amp;lt;b&amp;gt;only on Windows&amp;lt;/b&amp;gt;, and only exports strokes and fills with constant colors. No text, no images, no gradients, no transparency.&lt;br /&gt;
&lt;br /&gt;
= SVG output =&lt;br /&gt;
&lt;br /&gt;
For specialized uses, several aspects of Inkscape's SVG output can now be customized via editing the preferences.xml file (there's no UI for these options). A &amp;lt;group id=&amp;quot;&amp;lt;b&amp;gt;svgoutput&amp;lt;/b&amp;gt;&amp;quot;&amp;gt; inside &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; can have the following attributes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;usenamedcolors&amp;lt;/b&amp;gt; (default is 0). If nonzero, Inkscape uses symbolic color names (such as &amp;quot;white&amp;quot; or &amp;quot;lime&amp;quot;) and three-digit color designations (such as $dfe) where appropriate; otherwise, it always uses six-digit colors (such as $d0f0e0). Note that in 0.44, the default was to use named colors, which created problems for some extension effects.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;numericprecision&amp;lt;/b&amp;gt; (default is 8). This is the number of significant digits written for each number into SVG. You can lower this number to get slightly more compact SVG at the expense of precision.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;minimumexponent&amp;lt;/b&amp;gt; (default is -8). In transform= attributes, any number whose absolute value is less than 10 to the power of minimumexponent (i.e. less than 10&amp;lt;sup&amp;gt;-8&amp;lt;/sup&amp;gt; by default) is written as 0.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;indent&amp;lt;/b&amp;gt; (default is 2) controls the number of spaces that each level of nesting in SVG is shifted. Set this to 0 to disable indentation.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;inlineattrs&amp;lt;/b&amp;gt; (default is 0). If nonzero, attributes are placed on the same line as their tags; otherwise they are separated by newlines.&lt;br /&gt;
&lt;br /&gt;
= Bitmap tracing =&lt;br /&gt;
&lt;br /&gt;
* A '''new color quantization algorithm''' for multiscan traces works faster (especially for large numbers of colors) and gives more adequate results with less colors used. This improves tracing results both for full-color photographs and for limited-color drawings. &lt;br /&gt;
&lt;br /&gt;
* The Trace Bitmap dialog now provides access to three more tracing parameters:&lt;br /&gt;
&lt;br /&gt;
:* '''Suppress speckles''': If set, spots or speckles larger than the given size (in pixels) are suppressed in the trace.&lt;br /&gt;
&lt;br /&gt;
:* '''Smooth corners''': This parameter controls how much smoothing is applied to corners in the traced path.&lt;br /&gt;
&lt;br /&gt;
:* '''Optimize paths''': If set, trace paths are optimized by joining adjacent Bezier segments with the given tolerance.&lt;br /&gt;
&lt;br /&gt;
* All controls in the Trace Bitmap dialog are reorganized to be easier to find. The dialog is redesigned to use two main tabs: '''Mode''' (where you select the tracing mode, such as brightness cutoff or color multiscan) and '''Options''' (where you set various tracing options, such as corner smoothing). The preview is placed horizontally to the right of the tabs. Most labels and tooltips are rewritten for clarity. The trace preview image is made twice larger.&lt;br /&gt;
&lt;br /&gt;
= Even more improvements =&lt;br /&gt;
&lt;br /&gt;
* The '''opacity''' of objects is now displayed as percentage, '''from 0 to 100''', both in the Fill &amp;amp; Stroke dialog (with one fractional digit) and in the statusbar style indicator (with no fractional digits), instead of from 0 to 1.0 as before. This makes opacity values easier to read, type, and say.&lt;br /&gt;
&lt;br /&gt;
* A '''Save a copy''' command has been added to the file menu, similar to the 'Save a copy' functionality of e.g. Adobe Illustrator. With this command, you can save your document under a new filename, but Inkscape will then &amp;quot;forget&amp;quot; it has done this: later saves will be to the old filename. The default shortcut assigned to this function is '''Shift+Ctrl+Alt+S'''.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Text and flowed text objects&amp;lt;/b&amp;gt; behave more consistently. Now you can put a flowed text on path or (re)flow it into a shape just as you would do with a regular (unflowed) text. Previously, the need to convert a flowed text to text before these operations was a stumble for many users.&lt;br /&gt;
&lt;br /&gt;
* Several commands were added to the '''Help menu''', providing the long-missing access to basic information about Inkscape and SVG right from the program: [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/index.php Inkscape manual], [http://inkscape.org/doc/inkscape-man.html Command line options], [http://wiki.inkscape.org/wiki/index.php/FAQ FAQ], Release notes, [http://inkscape.org/report_bugs.php Bug report page], and the [http://www.w3.org/TR/SVG11/ SVG 1.1 specification]. All these commands open the corresponding web pages in the user's default web browser. &lt;br /&gt;
&lt;br /&gt;
* Exported PNG images have the correct '''resolution''' set in the header.&lt;br /&gt;
&lt;br /&gt;
* The Path -&amp;gt; '''Union''' (Ctrl++) operation now functions when only a '''single object''' is selected. Use this to '''remove self-intersections''' in path objects.&lt;br /&gt;
&lt;br /&gt;
* We removed the &amp;quot;hacked&amp;quot; '''filename entry field''' that we had added to the Open and Save dialogs because starting from version 2.10, GTK+ has finally restored this field in their '''standard file dialog'''. The standard field at the top of the dialog supports type-ahead find and performs the default dialog action (open or save) by pressing Enter, which means you can now do a quick '''Ctrl+O, Ctrl+V, Enter''' sequence to open the file whose path is in your clipboard (this closes a long-standing usability bug). Those who use older versions of GTK are advised either to upgrade to 2.10 or use Ctrl+L to open a pop-up filename box. (Our Windows builds are shipped with GTK+ 2.10.)&lt;br /&gt;
&lt;br /&gt;
* The '''Create Bitmap''' function (Alt+B in the default keymap) is made more useful. Unless you have specific resolution or minimum size set for this command in preferences.xml (&amp;lt;code&amp;gt;&amp;amp;lt;group id=&amp;quot;createbitmap&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt;), it will take the '''resolution hint''' from the object whose bitmap copy you are creating (in other words, it will use the resolution that you specified for that object when exporting it via the Export Bitmap dialog), or the default '''90 dpi''' if that object was not yet exported. Also, a 90 dpi bitmap (with its pixels exactly 1 px in size) will be '''snapped''' to the pixel grid. This makes it easy to use Create Bitmap for quick '''rasterization preview''' of an object or document. (Note: if you have used a previous version of Inkscape, your preferences.xml may contain &amp;lt;code&amp;gt;minsize=&amp;quot;250&amp;quot;&amp;lt;/code&amp;gt;; delete this for objects' resolution hints to work.)&lt;br /&gt;
&lt;br /&gt;
* Using extended input (i.e. tablet pressure and tilt) can now be disabled via Preferences (Misc tab). This is intended to be a last-resort option for those platform/hardware combinations that are not properly supported by GTK. With extended input disabled, you can still use your tablet as a mouse. &lt;br /&gt;
&lt;br /&gt;
* Simplify Path now has two modes when working with a group of paths:  the default mode, which treats all of the paths as one large object to simplify, or the new mode, which acts the same as using Simplify on each path in a group separately.  In preferences.xml, set '''options.simplifyindividualpaths''' to 1 to get the new mode.&lt;br /&gt;
&lt;br /&gt;
* For long Simplify operations (more than 20 paths at a time), Inkscape provides user feedback via the status bar as to how many paths have been simplified.  This change also prevents Inkscape from appearing to have locked up during the operation.&lt;br /&gt;
&lt;br /&gt;
* New '''templates''' added for '''video formats''' (PAL, NTSC and HDTV 1080) as well as DVD cover templates that were not installed in the previous version. This will help video and DVD authoring with Inkscape. The business card 85&amp;amp;times;54 template is now installed as well.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Other&amp;quot; license type was added to the metadata/license dialog so that people know that they are entering a URI to an &amp;quot;other&amp;quot; license.&lt;br /&gt;
&lt;br /&gt;
= Examples = &lt;br /&gt;
&lt;br /&gt;
* With all the recent additions - clipping, masking, and especially blur - Inkscape is now able to produce extremely photorealistic art. In the share/examples folder in Inkscape distribution, you will find two brand new, stunningly realistic images of shiny cars: &amp;lt;b&amp;gt;car.svgz&amp;lt;/b&amp;gt; by Konstantin Rotkevich and &amp;lt;b&amp;gt;gallardo.svgz&amp;lt;/b&amp;gt; by Michael Grosberg.&lt;br /&gt;
&lt;br /&gt;
* Inkscape 0.45 does not yet have gradient meshes. But with the addition of Gaussian Blur, this feature suddenly got within reach. A new example file, &amp;lt;b&amp;gt;gradient-mesh-experimental.svgz&amp;lt;/b&amp;gt;, explains the approach Inkscape will likely take to implement this feature in a fully SVG-compatible way.&lt;br /&gt;
&lt;br /&gt;
* Although Inkscape does not support animation yet, you can add any animation scripts and attributes to your SVG file manually in a text editor - and the file will still be editable in Inkscape. Tavmjong Bah used this technique to create  &amp;lt;b&amp;gt;animated-clock.svg&amp;lt;/b&amp;gt; which, when loaded in an SVG viewer supporting animation (such as Firefox, Opera, or Batik), demonstrates the intricate moving clockwork of a watch - and shows real time to boot! If loaded in Inkscape, the image is static, but instead you can freely edit any of the objects.&lt;br /&gt;
&lt;br /&gt;
= Translations, tutorials, templates =&lt;br /&gt;
&lt;br /&gt;
* Remarkable improvements are in the '''Danish''', '''Finnish''', '''Nepalese''' and the '''Vietnamese''' translations of the user interface. They all jumped from 0 to over 90 percent in a very short timespan.&lt;br /&gt;
&lt;br /&gt;
* All people which are familiar with '''pig latin''' are now able to use Inkscape's user interface in that language. Isthay isway oughtbray otay usway ybay away ewnay anslatortray.&lt;br /&gt;
&lt;br /&gt;
* Updated '''British English''', '''Catalan''', '''Czech''', '''Bulgarian''', '''French''', '''Danish''', '''Finnish''', '''German''', '''Brazilian Portuguese''' and '''Thai''', '''Vietnamese''' and '''Dzongkha''' translations.&lt;br /&gt;
&lt;br /&gt;
* A new Esperanto translation added including default document template.&lt;br /&gt;
&lt;br /&gt;
* Default Lithuanian template was not installed before, which is now fixed.&lt;br /&gt;
&lt;br /&gt;
* New tutorial &amp;quot;Easter Eggs&amp;quot; by Steve Karg.&lt;br /&gt;
&lt;br /&gt;
* Added Catalan default template and elements tutorial.&lt;br /&gt;
&lt;br /&gt;
* Russian header and footer templates for tutorials are added.&lt;br /&gt;
&lt;br /&gt;
* Several tutorial translations were updated, namely '''Catalan''', '''Brazilian Portuguese''', '''Russian''', '''German''', '''Danish''' and '''French'''.&lt;br /&gt;
&lt;br /&gt;
* There are also new Russian and Japanese translations of Windows installer strings.&lt;br /&gt;
&lt;br /&gt;
= Dependency changes =&lt;br /&gt;
&lt;br /&gt;
* We have changed the '''GTK+''' requirement for compilation to version 2.8. However, it is highly recommended to use at least the version '''2.10.7''' because previous versions contain at least one crash bug which may cause Inkscape to crash after typing in a value into a spinbutton.&lt;br /&gt;
&lt;br /&gt;
= Notable bugfixes =&lt;br /&gt;
&lt;br /&gt;
* When deleting a node, neighboring smooth nodes are converted to cusp.&lt;br /&gt;
&lt;br /&gt;
* Releasing the mouse button while dragging nodes using a tablet will now always release the nodes.  Before this, a race condition could occur where dragging could continue after the mouse button was released.&lt;br /&gt;
&lt;br /&gt;
* An object's mask and clipping path are now preserved after Simplify, Object/Stroke to path, or boolean operations.&lt;br /&gt;
&lt;br /&gt;
* Ungrouping a group containing clipped/masked objects might sometime break the clip/mask (move it away); this is fixed.&lt;br /&gt;
&lt;br /&gt;
* Transforming an object and its clone no longer behaves unexpectedly when they are both within a transformed group. &lt;br /&gt;
&lt;br /&gt;
* User-supplied templates in ~/.inkscape/templates can now be SVGZ files in addition to SVG.&lt;br /&gt;
&lt;br /&gt;
* Previously, Inkscape didn't check if there's enough free memory for its pixel buffers and could crash without warning due to insufficient memory e.g. upon zooming in. This problem became much worse after implementing Gaussian blur, because rendering blurred objects at high zooms may require a pixel buffer much bigger than the visible canvas. Now this situation is handled more gracefully: if a display operation requires more memory than available, or more than 100Mb (which corresponds to a 5000x5000 pixel buffer), it is skipped. This may result in blurred objects &amp;quot;disappearing&amp;quot; at high zooms. This is purely a display issue, however, and it never corrupts data; just zoom out (or reduce blur radius) and the disappeared object will show up OK.&lt;br /&gt;
&lt;br /&gt;
* When resizing objects, scaling numbers in the statusbar are no longer overwritten by other text when pressing the modifier keys (Alt, Shift, Ctrl).&lt;br /&gt;
&lt;br /&gt;
* To work around problems some users had with pressure-sensitive tablets ([http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1281512&amp;amp;group_id=93438&amp;amp;atid=604306 bug 1281512]), the pressure sensitivity can be disabled from the Misc tab of Inkscape Preferences dialog. After that, the tablet can still be used as a regular mouse. &lt;br /&gt;
&lt;br /&gt;
* The layer widget in the statusbar used to lose its current layer after an effect run; this is fixed.&lt;br /&gt;
&lt;br /&gt;
* When using different display resolutions or a dual screen setup, dialogs could be displayed off-screen; this is fixed: now Inkscape checks whether the saved position of the dialog is offscreen, if so it will move the dialog to the center of the screen. Note that this not solve all problems. If the dialog is still not visible, go to the [http://sourceforge.net/tracker/?func=detail&amp;amp;atid=604306&amp;amp;aid=1250236&amp;amp;group_id=93438 bug 1250236] where a procedure is given to make the dialog visible (by editing preferences.xml).&lt;br /&gt;
&lt;br /&gt;
* Grid and guidelines no longer vanish when changing their color.&lt;br /&gt;
&lt;br /&gt;
* Group transformation is now correctly re-applied when ungrouping and then undoing the ungroup operation.&lt;br /&gt;
&lt;br /&gt;
* Text dialog no longer discards the style of the selected text.&lt;br /&gt;
&lt;br /&gt;
* Inkscape no longer crashes when you try to unflow an empty flowed text.&lt;br /&gt;
&lt;br /&gt;
* Thanks to patches submitted by users of our community, Inkscape can now be built on SGI IRIX 6.5.28, gcc 3.4.0 systems and on Tru64 systems.&lt;br /&gt;
&lt;br /&gt;
= Known problems =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problem with &amp;quot;Dialogs on Top&amp;quot; on Windows ====&lt;br /&gt;
&lt;br /&gt;
* Although the &amp;quot;Dialogs on Top&amp;quot; option is now available on Windows (File &amp;gt; Inkscape Preferences &amp;gt; Windows), it does not work exactly as it should (yet!). When the document window is minimized, the dialogs remain visible, i.e. are not minimized together with the document window. Because of this, it is not possible to get the document window back by clicking its taskbar button. A workaround to this problem is to '''right-click the Inkscape taskbar button and select &amp;quot;Restore&amp;quot;.''' We expect that future releases of GTK will solve this problem.&lt;br /&gt;
&lt;br /&gt;
==== Spinbuttons may crash if you have GTK+ older than 2.10.7 ====&lt;br /&gt;
&lt;br /&gt;
* You may experience crashes after typing in a value into a spinbutton if you have a version of GTK+ 2.10.6 or older. Upgrade your GTK+ to fix this. (This does not affect the Windows package as it comes with GTK+ 2.10.9.)&lt;br /&gt;
&lt;br /&gt;
==== Numerical Python required for Perspective effect ====&lt;br /&gt;
&lt;br /&gt;
* This effect will not work until you install a python module called '''numpy''' (Numerical Python). It can be downloaded at [http://numpy.scipy.org/ numpy.scipy.org]. The Windows package already contains this module.&lt;br /&gt;
&lt;br /&gt;
==== Do not use a clone of an object as its clipping path/mask ====&lt;br /&gt;
&lt;br /&gt;
* In this version, you cannot use an object's clone as its clipping path or mask. Either unlink the clone first, or clip one clone of a source object (not the source itself) by another clone of the same. Properly fixing this bug requires some deep changes in the code and therefore was postponed until after 0.45 so as not to delay the release.&lt;br /&gt;
&lt;br /&gt;
==== Non-Unicode symbol fonts on Windows don't work ====&lt;br /&gt;
&lt;br /&gt;
* On Windows, symbol fonts without a Unicode map do not work. This is a limitation of the Pango library that we use.&lt;br /&gt;
&lt;br /&gt;
==== Problems with some Debian libgc-6.7 packages ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape will hang or crash when linked with the first Debian packaged version of the Boehm garbage collection library. This problem was fixed in version 1:6.7-2  of the package.  If you have libgc 6.7 on your Debian-based system, make sure that you are using that version of the package or later.&lt;br /&gt;
&lt;br /&gt;
==== Beware of defective themes on Linux ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape and other Gtk programs can crash on any Linux, when the &amp;lt;b&amp;gt;gtk2-engines-smooth / libsmooth&amp;lt;/b&amp;gt; package is installed. We have filed a bug against libsmooth which is now in gtk-engine and part of gnome. Removing the package resolves the problem. Update: this bug appears to be fixed in newer versions of gtk-engines. If you are affected by this problem please update to a newer version of gtk-engines. If problems persist then please inform the gtk-engines maintainers of the problem. &lt;br /&gt;
&lt;br /&gt;
* A similar crash happens if the &amp;lt;b&amp;gt;KDE Baghira&amp;lt;/b&amp;gt; theme or the package &amp;lt;b&amp;gt;gtk_qt_engine&amp;lt;/b&amp;gt; are installed. If you experience Inkscape crashes on KDE, please try to install a different theme from Baghira, or uninstall the gtk_qt_engine package from your system. Both problems also affect older versions of Inkscape.&lt;br /&gt;
&lt;br /&gt;
= Previous releases =&lt;br /&gt;
&lt;br /&gt;
* [[ReleaseNotes044]]&lt;br /&gt;
* [[ReleaseNotes043]]&lt;br /&gt;
* [[ReleaseNotes042]]&lt;br /&gt;
* [[ReleaseNotes041]]&lt;br /&gt;
* [[ReleaseNotes040]]&lt;br /&gt;
* [[ReleaseNotes039]]&lt;br /&gt;
* [[ReleaseNotes038]]&lt;br /&gt;
* [[ReleaseNotes037]]&lt;br /&gt;
* [[ReleaseNotes036]]&lt;br /&gt;
* [[ReleaseNotes035]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Marketing]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=13740</id>
		<title>Release notes/0.45</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=13740"/>
		<updated>2007-03-01T03:11:52Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* Inkscape 0.45.1 changes with respect to 0.45 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Inkscape 0.45.1 changes with respect to 0.45 =&lt;br /&gt;
&lt;br /&gt;
*Patch [ 1667939 ] 0.45.1: fix crash when tile-tracing with too small clones&lt;br /&gt;
*Patch [ 1666532 ] 0.45.1: Broken link in inkview man page&lt;br /&gt;
*Patch [ 1665447 ] 0.45.1: fix for the blur quantization bug 1617082&lt;br /&gt;
*Patch [ 1664849 ] 0.45.1: fix 1662589: increase blur margins&lt;br /&gt;
*Patch [ 1664004 ] 0.45.1: embedimage.py with fixes search order&lt;br /&gt;
*Patch [ 1662649 ] 0.45.1: markers.svg with reversed order&lt;br /&gt;
*Crudely improve check-markup for &amp;amp;#123; markup, fix translations with bugs in that area (dz and zh_TW).&lt;br /&gt;
*Patch [ 1659404 ] 0.45.1: Set locale directory from environment variable&lt;br /&gt;
*Patch [ 1657072 ] 0.45.1: fix for bug 1654495&lt;br /&gt;
*Patch [ 1654636 ] 0.45.1: defocus dropper checkboxes&lt;br /&gt;
*Updated slovak translation&lt;br /&gt;
*Adding japanese.nsh and russian.nsh into files that should go into the release tarball&lt;br /&gt;
*Correct russian translation&lt;br /&gt;
*Patch [ 1651797 ] 0.45.1: fix for attributes when saving/save-a-copy&lt;br /&gt;
*Patch [ 1651752 ] 0.45.1: fix dropper tool&lt;br /&gt;
*Pattern along path extension fixed on Windows&lt;br /&gt;
&lt;br /&gt;
= Inkscape 0.45: overview =&lt;br /&gt;
&lt;br /&gt;
This release brings the exciting new features developed by the Google Summer of Code 2006 participants, as well as tons of other improvements across the board. Here are the highlights:&lt;br /&gt;
&lt;br /&gt;
* '''Gaussian blur''' is the first SVG filter supported by Inkscape. You can blur any object to any extent - yet it remains vector and fully editable. This gives a huge boost to Inkscape as a creative art tool.&lt;br /&gt;
&lt;br /&gt;
* '''Display speed and interactivity''': not only does Inkscape render faster, but it can now respond to user input before it finished redrawing the screen, which greatly improves the responsiveness (perceived speed or interactivity) of the program.&lt;br /&gt;
&lt;br /&gt;
* '''History dialog''' makes it easy to to review your editing session and jump to any step of it, undoing and redoing multiple actions with one click.&lt;br /&gt;
&lt;br /&gt;
* Several important tool features are added, notably the new selection mode in '''Node tool''' and the adjustable rounded caps in '''Calligraphic pen'''.&lt;br /&gt;
&lt;br /&gt;
* '''Bitmap tracing''' works better for multi-color traces, sports a redesigned dialog and several new options.&lt;br /&gt;
&lt;br /&gt;
* Many new '''extension effects''' are added, including '''Color effects''' and '''Pattern along path'''. &lt;br /&gt;
&lt;br /&gt;
* The '''Outline mode''' has got many fixes and improvements, including a keyboard shortcut.&lt;br /&gt;
&lt;br /&gt;
* Several new commands in '''Help''' menu open various Inkscape-related pages in your default browser, making Inkscape reference information more accessible as you work. &lt;br /&gt;
&lt;br /&gt;
* Dozens of smaller '''features''' are added throughout the program, and hundreds of '''bugs''' are fixed.&lt;br /&gt;
&lt;br /&gt;
= SVG filters: Gaussian blur =&lt;br /&gt;
&lt;br /&gt;
Thanks to Google's Summer of Code program, Inkscape now has basic support for [http://www.w3.org/TR/SVG11/filters.html SVG filters]. The only filter enabled so far is '''Gaussian blur'''. &lt;br /&gt;
&lt;br /&gt;
With it, you can softly and naturally blur any Inkscape objects: paths, shapes, groups, text, images. Clones inherit blurring from their original, but they can also be blurred independently from the original (you can create blurred clones with Tile Clones, too). Both the fill and stroke of an object are blurred together, creating semitransparent margins that smoothly blend into the background. &lt;br /&gt;
&lt;br /&gt;
Gaussian blur enables a wide range of photorealistic effects: arbitrarily shaped shades and lights, depth of field, drop shadows, glows, etc. Also, blurred objects can be used as masks for other objects to achieve the &amp;quot;feathered mask&amp;quot; effect.&lt;br /&gt;
&lt;br /&gt;
* To blur selected objects, open the Fill and Stroke dialog (Ctrl+Shift+F) and use the '''Blur''' slider. The blur value is a percentage, with 100% corresponding to a blurring radius (standard deviation of Gaussian function) of 1/8 of the object's bounding box' perimeter (that is, for a square, a blur of 100% will have the radius equal to half a side, which turns any shape into an amorphous cloud). &lt;br /&gt;
&lt;br /&gt;
* The '''Tile Clones''' dialog also supports blurring. On the '''Blur &amp;amp; opacity''' tab, you can set the blur percentage per row or per column of your tiling, as well as randomize blurring and make it alternate (all the same options as for Opacity).&lt;br /&gt;
&lt;br /&gt;
* The quality of on-screen blur display is controlled by the '''Blur quality''' option on the new '''Filters''' tab of Inkscape Preferences (Ctrl+Shift+P). The available options range from best quality/slowest display to worst quality/fastest display, the default being in the middle of the range. Any setting except the &amp;quot;best quality&amp;quot; may introduce some rendering artifacts, especially when blurring thin strokes; on the other hand, the &amp;quot;best quality&amp;quot; setting may make Inkscape extremely slow at high zooms. These settings only affect the screen display of blurred objects; bitmap export always uses the best quality (and may therefore become quite slow for images with a lot of blur).&lt;br /&gt;
&lt;br /&gt;
Here are a few tips on using blur:&lt;br /&gt;
&lt;br /&gt;
* '''Masks and clipping''' are applied ''after'' blur. That is, if you clip an object and then blur it (or blur it first and then clip - it makes no difference), the clipped edges will remain crisp. Often, this is what you want. If, however, you want to blur the clipped/masked edges too (possibly with a different radius), you can use grouping: group the clipped object with some other object (which you can then delete from the group) and blur the group.&lt;br /&gt;
&lt;br /&gt;
* A simple '''drop shadow''' is now very easy to do: just copy the object, paint the copy black, blur it, shift away a bit and lower it to the bottom. However, such a shadow does not update when you edit the foreground object. If your object is already black (or, more generally, if you want the shadow to be the same color as the object), you can clone instead of copy to make the shadow auto-updating. But what if your foreground object is not black but you need an auto-updating black shadow? Here's a recipe: unset the object's fill (it becomes black); create ''two'' clones of it; put one clone on top and paint any color you want; put the other clone at bottom, blur it and shift sideways. Now you can edit the unset-fill original (use Alt+click to select it) and everything will update. &lt;br /&gt;
&lt;br /&gt;
* If an object has a fill that you don't want to blur (e.g. pattern, or if it's a bitmap), but you just want to '''feather the edges''', use a blurred transparency mask. For this, copy the object; paint it white; blur it as needed; scale the blurred copy down so its blur margins are entirely within the original object; select both the original and the blurred mask; do Object &amp;gt; Mask &amp;gt; Set.&lt;br /&gt;
&lt;br /&gt;
* '''Transforming''' a blurred object '''transforms its blur''', too. This applies to a non-uniform scaling as well, so by squeezing a blurred object you make its blur squeezed as well. So, the easiest way to blur a path horizontally more than vertically is this: stretch it upwards without blur, then apply blur and squeeze it back into the original shape. (This only works if the stretched path does not already have a Transform attribute.)&lt;br /&gt;
&lt;br /&gt;
* You can combine '''blurring with gradients'''. For example, an ellipse with elliptic opacity gradient will look much softer and more natural when blurred. An object with a horizontal linear opacity gradient, when blurred, will look as if it's more blurred on its transparent side than on its opaque side.&lt;br /&gt;
&lt;br /&gt;
* A '''clone of a blurred object''' inherits the blur of the original. Therefore, such a clone can be blurred ''more'', but you can't &amp;quot;unblur&amp;quot; it to make the clone sharper than its original (unless, of course, you unlink it). The Fill and Stroke dialog shows you the amount of the blur applied to this particular object; however, if the object is a clone of an already blurred original, the dialog does not reflect that.&lt;br /&gt;
&lt;br /&gt;
* Note that '''Firefox 2.0''' does not support SVG filters, so your files will be displayed in Firefox 2.0 without blur. However, filter support has been added  in the current development version and will be included in Firefox 3.0. The Opera web browser, as well as librsvg (used by Wikipedia) and Batik, support filters correctly in their current versions.&lt;br /&gt;
&lt;br /&gt;
= Undo history =&lt;br /&gt;
&lt;br /&gt;
* Inkscape now features a &amp;lt;b&amp;gt;History Dialog&amp;lt;/b&amp;gt; accessible via &amp;lt;b&amp;gt;Ctrl+Shift+H&amp;lt;/b&amp;gt; or Edit &amp;amp;gt; Undo History. All changes made to the document since it was opened are recorded here.&lt;br /&gt;
&lt;br /&gt;
:* In the dialog, changes are listed from the '''oldest (top)''' to the '''newest (bottom)'''. &lt;br /&gt;
&lt;br /&gt;
:* The type of each change is indicated by an '''icon''' and a short '''description'''.&lt;br /&gt;
&lt;br /&gt;
:* For readability, consecutive changes of the same type are placed in a '''collapsible branch''' showing a triangle marker and the number of the hidden actions in the branch.&lt;br /&gt;
&lt;br /&gt;
:* By clicking on an event in the list, you can easily '''move through the undo history''', i.e. undo or redo any number of actions with one click.&lt;br /&gt;
&lt;br /&gt;
* The Undo and Redo commands in the Edit menu display the descriptions of the commands to be undone and redone, correspondingly. (These are the same descriptions that you see in the History dialog.)&lt;br /&gt;
&lt;br /&gt;
= Rendering improvements =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Interruptible display&amp;lt;/b&amp;gt;: Previously, Inkscape could not do anything until it finishes the current screen redraw. Now the redraw is made interruptible, so that Inkscape responds to mouse and keyboard input and can abort the current redraw and start over if you do some screen-changing operation. As a result, Inkscape now feels '''much snappier and more interactive'''. This interruptibility is fine-tuned for some continuous-drag operations (such as node dragging) so that a balance is achieved between responsiveness and completeness of display.&lt;br /&gt;
&lt;br /&gt;
* Screen render is faster by '''2-3%''' overall:&lt;br /&gt;
&lt;br /&gt;
:* Complex drawings with '''transparency''' are faster by up to '''5%'''.&lt;br /&gt;
&lt;br /&gt;
:* '''Radial gradients''' are rendered faster by at least '''10%'''.&lt;br /&gt;
&lt;br /&gt;
* Rendering (compositing) quality has been improved. This is most visible with (partially) transparent gradients: '''banding''' is a lot less pronounced now. Speed has also been improved in some cases.&lt;br /&gt;
&lt;br /&gt;
* Display is more responsive when working at high zoom levels when using a tablet.&lt;br /&gt;
&lt;br /&gt;
= Tools = &lt;br /&gt;
&lt;br /&gt;
== Node tool ==&lt;br /&gt;
&lt;br /&gt;
* You can &amp;lt;b&amp;gt;grow or shrink node selection&amp;lt;/b&amp;gt; by hovering the mouse pointer over a node and using &amp;lt;b&amp;gt;mousewheel&amp;lt;/b&amp;gt; (up = grow, down = shrink) or the keys &amp;lt;b&amp;gt;PageUp&amp;lt;/b&amp;gt; (grow) and &amp;lt;b&amp;gt;PageDown&amp;lt;/b&amp;gt; (shrink). ''Growing'' adds the closest unselected node to the selection; shrinking deselects the farthest selected node. There are two modes that differ by how the closest/farthest nodes are chosen:&lt;br /&gt;
&lt;br /&gt;
:* &amp;lt;b&amp;gt;Spatial selection&amp;lt;/b&amp;gt; (mousewheel, PageUp/PageDown): distances to nodes are measured directly, regardless of which subpath a node belongs to. &lt;br /&gt;
&lt;br /&gt;
:* &amp;lt;b&amp;gt;Linear selection&amp;lt;/b&amp;gt; (Ctrl+mousewheel, Ctrl+PageUp/Ctrl+PageDown): node distances are measured ''along the path'', and only the nodes belonging to the same subpath as the hovered node are considered (i.e. other subpaths are never selected).&lt;br /&gt;
&lt;br /&gt;
:This technique is convenient for quickly selecting an area in a complex path starting from a center - for example, for node sculpting.&lt;br /&gt;
&lt;br /&gt;
== Dropper ==&lt;br /&gt;
&lt;br /&gt;
* Instead of the confusing toggle button, now the Controls bar for the Dropper tool has two checkboxes, '''Pick alpha''' and '''Set alpha''', which work as follows. Suppose you have an object selected and, using Dropper, click on an object which has red (#FF0000) fill and 0.5 opacity (half-transparent).&lt;br /&gt;
&lt;br /&gt;
:* If the &amp;quot;Pick alpha&amp;quot; checkbox is off, the selected object will get the fill color #800000 (i.e. faded-out red) and fill opacity will be at 1.0 (opaque). &lt;br /&gt;
&lt;br /&gt;
:* If the &amp;quot;Pick alpha&amp;quot; checkbox is on but &amp;quot;Set alpha&amp;quot; is off, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 1.0. &lt;br /&gt;
&lt;br /&gt;
:* If both &amp;quot;Pick alpha&amp;quot; and &amp;quot;Set alpha&amp;quot; are on, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 0.5 (half-transparent). &lt;br /&gt;
&lt;br /&gt;
:If you Shift+click instead of click, the same changes will be made to stroke color and stroke opacity, correspondingly. Note that in no situation can Dropper change the ''master opacity'' of the selected object(s) (only the fill/stroke opacity), although it can pick it just as it does any other kind of opacity.&lt;br /&gt;
&lt;br /&gt;
== Calligraphy ==&lt;br /&gt;
&lt;br /&gt;
* A new numeric parameter, &amp;lt;b&amp;gt;Caps&amp;lt;/b&amp;gt;, controls the amount of protruding at the ends of calligraphic strokes. This parameter can range from 0 (flat caps, default behavior in previous versions) through 1 (approximately half-circle caps) and up to 5 (long elliptic caps). Rounded caps much improve the look of low-fixation strokes, simulating a rounded pen.  &lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Drag&amp;quot; parameter has been renamed to &amp;lt;b&amp;gt;Wiggle&amp;lt;/b&amp;gt; with a value inversion (i.e. low drag corresponds to high wiggle, and vice versa). Increase this parameter (default is 0) to make the pen waver and wiggle in curly patterns.&lt;br /&gt;
&lt;br /&gt;
* As a first step towards a redesign of the tools' controls, the '''Controls bar of the Calligraphy pen''' has been upgraded. Now it no longer prevents the Inkscape window from resizing narrower than the bar. The items on the far right end of the bar which didn't fit in a narrow window are still accessible through an '''expansion menu''' which allows you to toggle switches, select commands, and set values of numeric fields. Also, each editable numeric value field has a new '''right-click menu''' with some common values which often allows you to set a desired value much faster than by scrolling the control or typing the value into it.&lt;br /&gt;
&lt;br /&gt;
* With low or zero Fixation parameter, some users of tablet pens experienced &amp;quot;blobs&amp;quot; (brief reversals of a stroke's right/left edges, causing &amp;quot;holes&amp;quot; and &amp;quot;bubbles&amp;quot; in a calligraphic stroke), especially often at the start of a stroke. Hopefully this problem is now fixed without reducing the responsiveness of the tool.&lt;br /&gt;
&lt;br /&gt;
= Outline mode =&lt;br /&gt;
&lt;br /&gt;
* A new menu command (&amp;lt;b&amp;gt;View &amp;gt; Display Mode &amp;gt; Toggle&amp;lt;/b&amp;gt;) and a new keyboard shortcut (&amp;lt;b&amp;gt;Ctrl+&amp;amp;lt;keypad 5&amp;amp;gt;&amp;lt;/b&amp;gt;) switch the display mode from Normal to Outline and back.&lt;br /&gt;
&lt;br /&gt;
* The window title displays &amp;quot;&amp;lt;b&amp;gt;(outline)&amp;lt;/b&amp;gt;&amp;quot; next to the file name when that editing window is in Outline mode. &lt;br /&gt;
&lt;br /&gt;
* An object with &amp;lt;b&amp;gt;mask and/or clipping path&amp;lt;/b&amp;gt;, when viewed in Outline mode, now displays both the object itself and its clipping path and mask as objects, using different outline colors. By default, &amp;lt;b&amp;gt;clippaths use green&amp;lt;/b&amp;gt; outlines, and &amp;lt;b&amp;gt;masks use blue&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Images&amp;lt;/b&amp;gt; in Outline mode are displayed as &amp;lt;b&amp;gt;red&amp;lt;/b&amp;gt; (by default) frames with two diagonals.&lt;br /&gt;
&lt;br /&gt;
* An object with no fill and no stroke, invisible and not selectable by mouse clicking in normal mode, can now be &amp;lt;b&amp;gt;picked by a mouse click&amp;lt;/b&amp;gt; in the Outline mode using its visible outline.&lt;br /&gt;
&lt;br /&gt;
* The bug whereby stroked shapes didn't change stroke width when switching to Outline mode or back is fixed.&lt;br /&gt;
&lt;br /&gt;
* All outline colors are changeable by editing the &amp;quot;wireframecolors&amp;quot; group inside &amp;quot;options&amp;quot; in the preferences file (~/.inkscape/preferences.xml). The &amp;quot;onlight&amp;quot; and &amp;quot;ondark&amp;quot; attributes set the colors of the regular object outlines on light and dark backgrounds (default black and white correspondingly); the &amp;quot;images&amp;quot;, &amp;quot;clips&amp;quot;, and &amp;quot;masks&amp;quot; attributes set the colors of images, clipping paths, and masks (defaults are red, green, and blue correspondingly). Each attribute is a decimal integer corresponding to the hex RRGGBBAA of the color.  &lt;br /&gt;
&lt;br /&gt;
* To cater for specialized uses, such as preparing input for personal media cutters, Inkscape now has an option to start in the Outline mode upon launch. To enable this, add the following line to your preferences.xml file:&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;group id=&amp;quot;startmode&amp;quot; outline=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:placing it after the &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; opening tag.&lt;br /&gt;
&lt;br /&gt;
= Keyboard profiles =&lt;br /&gt;
&lt;br /&gt;
The previous release allowed sets of keybindings (keymaps) to be created for Inkscape in the style of other applications.  Two more keymaps have been added:  &lt;br /&gt;
&lt;br /&gt;
* '''Adobe Illustrator''' &lt;br /&gt;
* '''Macromedia Freehand'''&lt;br /&gt;
&lt;br /&gt;
Of course not every feature in these other programs has a direct match to features in Inkscape; so, if you can, please '''help us out''' by reporting any problems you may have or improvements you would like to request.&lt;br /&gt;
&lt;br /&gt;
Additionally, a keymap that focuses on tablet-based illustration and drawing work has been added:&lt;br /&gt;
&lt;br /&gt;
* '''right-handed-illustration.xml'''&lt;br /&gt;
&lt;br /&gt;
This keymap places all commonly-used commands under the left hand, so that the user's hands rarely leave the keyboard or the tablet/stylus.&lt;br /&gt;
&lt;br /&gt;
(To enable a profile, copy it into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; in the same directory, overwriting the old file. To restore the default Inkscape set, copy &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
More of Inkscape's keys are implemented as actions and are therefore available for remapping via keyboard profiles. New actions include '''EditSelectNext''' and '''EditSelectPrev''' for selecting next/previous object or node (by default, they are bound to Tab/Shift+Tab; as a result of becoming global actions, these keys now work in all tools and not only in Selector and Node tool as before).&lt;br /&gt;
&lt;br /&gt;
= Extension effects =&lt;br /&gt;
&lt;br /&gt;
Inkscape's extension effects, written in Python using the '''inkex''' utility class, are currently a major growth point of the project. They allow new developers to create functionality very quickly, without having to learn Inkscape's huge C/C++ codebase. However, eventually we plan to move many of these effects into the core of Inkscape, which will make them much faster and more interactive. From this viewpoint, effects can be considered a quick way to prototype and test the algorithms and UI controls of the future Inkscape features. However, this does not prevent effects from being genuinely useful in everyday work, and in this version we have several excellent additions. &lt;br /&gt;
&lt;br /&gt;
== New effects ==&lt;br /&gt;
&lt;br /&gt;
* '''Pattern along path''': A new powerful extension in the &amp;quot;Generate from path&amp;quot; submenu allows you to bend, repeat and/or stretch a pattern object (which can be a path or a group) along a &amp;quot;skeleton&amp;quot; path. This makes it easy to create a variety of patterned and shaped strokes. (This obsoletes the old &amp;quot;Kochify&amp;quot; extension which is removed.)&lt;br /&gt;
&lt;br /&gt;
:Effect's parameters include: &lt;br /&gt;
&lt;br /&gt;
:* ''Copies of the pattern'' selects one of the four modes: '''Single stretched''': one copy of the pattern is placed on the skeleton path and stretched/squeezed to match its length;  '''Repeated stretched''': as many copies as would fit are placed along the skeleton path and stretched to fit exactly; '''Single''' and '''Repeated''': same but without stretching.&lt;br /&gt;
&lt;br /&gt;
:* ''Deformation type'' can be one of: '''Snake''' bends the pattern flatly in the plane of the drawing, the width not depending on direction; '''Ribbon''' bends it as a vertical ribbon or like a calligraphic stroke with maximum fixation, so that width depends on direction (minimum for vertical parts of the stroke, maximum for horizontal).&lt;br /&gt;
&lt;br /&gt;
:* Several parameters allow you to adjust spacing between the copies of the pattern (for Multiple modes) and their offset in two directions (along the skeleton path and perpendicular to it).&lt;br /&gt;
&lt;br /&gt;
:* Normally the effect assumes that the pattern object is horizontal and bends its horizontal axis (at mid-height) along the skeleton path. There's a checkbox that allows you to use a '''vertical pattern''' instead. &lt;br /&gt;
&lt;br /&gt;
:Some examples of using this effect are shown on a screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.45-patternalongpath.png].&lt;br /&gt;
&lt;br /&gt;
* '''Color effects''': A new group of extensions in the '''Color''' submenu of the Effects menu allows you to adjust all colors of a selection at once. These commands affect both fill and stroke colors, including gradients (but not bitmaps). The commands include:&lt;br /&gt;
&lt;br /&gt;
:* a full set of '''HSL adjustments''' (increasing/decreasing hue, saturation, or lightness by 5%), &lt;br /&gt;
&lt;br /&gt;
:* '''Brighter''' and '''Darker''' (adjust brightness up or down by 10%), &lt;br /&gt;
&lt;br /&gt;
:* '''Desaturate''', &lt;br /&gt;
&lt;br /&gt;
:* '''Grayscale''', &lt;br /&gt;
&lt;br /&gt;
:* '''Negative''', &lt;br /&gt;
&lt;br /&gt;
:* commands for removing or swapping the '''Red''', '''Green''', '''Blue''' channels, &lt;br /&gt;
&lt;br /&gt;
:* a '''Custom''' command where you can set your own formulas for modifying the color channels. &lt;br /&gt;
&lt;br /&gt;
:Some examples of using this effect are shown on a screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.45-coloreffects.png].&lt;br /&gt;
&lt;br /&gt;
:Note: undoing color changes on gradients exposes a bug where an object seems to &amp;quot;disappear&amp;quot;; this is only a display issue (caused by the order in which gradients and their users are restored on undo) not causing any loss of information. Also, on large documents and large selections with gradients, Python's XPath code may get quite slow. Despite these shortcomings, we decided to add this extension, because it's genuinely useful functionality which was so far missing in Inkscape.&lt;br /&gt;
&lt;br /&gt;
* Recent fixes in the processing of SVG &amp;lt;defs /&amp;gt; have made it possible to implement the often requested '''Color Markers to Match Stroke''' effect. It is no longer necessary to hand-edit XML to recolor arrowheads; just change the stroke color of your path and call this effect to recolor its markers to match.&lt;br /&gt;
&lt;br /&gt;
* '''Lorem ipsum''' (in &amp;quot;Render&amp;quot; submenu) is a new extension that creates the traditional Latin-like random text for design mock-ups. The number of paragraphs, the number of sentences per paragraph and the possible fluctuation of the number of sentences (for uneven paragraphs) can be adjusted. If no flowed text element is selected, a new one in a new layer is created, matching the size of the canvas.&lt;br /&gt;
&lt;br /&gt;
* '''Fractalize''' (in &amp;quot;Modify Path&amp;quot; submenu) replaces each segment of the selected path by a crooked line, subdivided to the given depth, with randomly displaced nodes. &lt;br /&gt;
&lt;br /&gt;
* '''g2png''': The new group-to-PNG Python extension (g2png) is an easy way to export any group or layer to individual PNG files. It was first created for use in the [http://www.le-radar.com/?mm/inkscape Inkscape User Manual] (also available in SVN in the user_manual module) but is also interesting for many other uses. If e.g. you have to draw a set of icons, you can draw them in the same document, thus making copying, duplicating, cloning etc. easier. Then just create a group  for each icon, and with the extension, each group ends up in its own PNG file.&lt;br /&gt;
&lt;br /&gt;
== Improved effects ==&lt;br /&gt;
&lt;br /&gt;
* The '''Function Plotter''' has been extended, providing greater flexibility in x- and y-range definition. &lt;br /&gt;
&lt;br /&gt;
* The '''Measure Path''' extension is improved with several new parameters added (units, scale, precision, distance from path).&lt;br /&gt;
&lt;br /&gt;
* The '''Extract One Image''' extension is fixed to automatically append filename extension to the created bitmap file.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Blur Edge&amp;quot; extension is renamed into '''Inset/Outset Halo''' to avoid confusion with the real Gaussian blur that we now support, as well as to better describe what this extension actually does: From the selected path, it creates a group of inset and outset paths that form a stepped &amp;quot;halo&amp;quot; around the object. &lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
* '''3 new parameter types''' have been added to the extension effect UI: '''tabs''', '''enumerations''' and '''optiongroups''' (radio buttons). Examples are available of how to use these parameters in INX files: the new Function Plotter uses tabs; enumerations are used by the Pattern along path extension; and a small developer example is given to illustrate the use of optiongroups (identical to enumerations).&lt;br /&gt;
&lt;br /&gt;
* In an extension's INX file, you can specify &amp;lt;code&amp;gt;&amp;amp;lt;effects-menu hidden=&amp;quot;yes&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt; to hide that extension from the Effects menu. However, such a &amp;quot;hidden&amp;quot; extension can still be assigned a keyboard shortcut (by using its &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; as an &amp;quot;action&amp;quot; in your &amp;lt;code&amp;gt;~/.inkscape/keys/default.xml&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* In an extension's INX file, you can add &amp;lt;code&amp;gt;needs-document=&amp;quot;no&amp;quot;&amp;lt;/code&amp;gt; attribute to the &amp;lt;code&amp;gt;&amp;amp;lt;effect&amp;amp;gt;&amp;lt;/code&amp;gt; element. This indicates that the extension does not process the current SVG document, and Inkscape will not bother saving and restoring the document from a temporary file which allows this extension to run faster and smoother. (This is used for the new open-in-default-browser Help menu commands which are technically implemented as extensions.)&lt;br /&gt;
&lt;br /&gt;
= Export formats =&lt;br /&gt;
&lt;br /&gt;
== AI import/export ==&lt;br /&gt;
&lt;br /&gt;
* We only support AI import and export for Adobe Illustrator 8.0 and older.  This has been clarified in the Open and Save As lists.&lt;br /&gt;
&lt;br /&gt;
== PDF export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape's PDF exporter has been improved:&lt;br /&gt;
&lt;br /&gt;
* '''New features:''' bitmap images can be embedded; PDF files can be exported from command line using the &amp;lt;code&amp;gt;--export-pdf&amp;lt;/code&amp;gt; parameter. &lt;br /&gt;
&lt;br /&gt;
* '''Changed behavior:''' the pointless text to path question is gone. &lt;br /&gt;
&lt;br /&gt;
* '''Fixed bugs:''' save failure is now detected, miter limits are now &amp;gt;= 1, PDFs with transparent gradient are now embeddable, eccentric elliptic gradients fixed, dash style inheritance fixed, transparency inheritance fixed.&lt;br /&gt;
&lt;br /&gt;
== PS/EPS export ==&lt;br /&gt;
&lt;br /&gt;
There's a new option to &amp;lt;b&amp;gt;embed the fonts&amp;lt;/b&amp;gt; used in the document in the PS or EPS exported file. As of now, this works for &amp;lt;b&amp;gt;Type 1 fonts only&amp;lt;/b&amp;gt;, not TrueType. The option is available when performing the export from the GUI as well as from the command line via the &amp;lt;code&amp;gt;--export-embed-fonts&amp;lt;/code&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
== EMF export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape has a limited support for exporting &amp;lt;b&amp;gt;EMF&amp;lt;/b&amp;gt; (Enhanced Meta File) format. This works &amp;lt;b&amp;gt;only on Windows&amp;lt;/b&amp;gt;, and only exports strokes and fills with constant colors. No text, no images, no gradients, no transparency.&lt;br /&gt;
&lt;br /&gt;
= SVG output =&lt;br /&gt;
&lt;br /&gt;
For specialized uses, several aspects of Inkscape's SVG output can now be customized via editing the preferences.xml file (there's no UI for these options). A &amp;lt;group id=&amp;quot;&amp;lt;b&amp;gt;svgoutput&amp;lt;/b&amp;gt;&amp;quot;&amp;gt; inside &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; can have the following attributes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;usenamedcolors&amp;lt;/b&amp;gt; (default is 0). If nonzero, Inkscape uses symbolic color names (such as &amp;quot;white&amp;quot; or &amp;quot;lime&amp;quot;) and three-digit color designations (such as $dfe) where appropriate; otherwise, it always uses six-digit colors (such as $d0f0e0). Note that in 0.44, the default was to use named colors, which created problems for some extension effects.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;numericprecision&amp;lt;/b&amp;gt; (default is 8). This is the number of significant digits written for each number into SVG. You can lower this number to get slightly more compact SVG at the expense of precision.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;minimumexponent&amp;lt;/b&amp;gt; (default is -8). In transform= attributes, any number whose absolute value is less than 10 to the power of minimumexponent (i.e. less than 10&amp;lt;sup&amp;gt;-8&amp;lt;/sup&amp;gt; by default) is written as 0.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;indent&amp;lt;/b&amp;gt; (default is 2) controls the number of spaces that each level of nesting in SVG is shifted. Set this to 0 to disable indentation.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;inlineattrs&amp;lt;/b&amp;gt; (default is 0). If nonzero, attributes are placed on the same line as their tags; otherwise they are separated by newlines.&lt;br /&gt;
&lt;br /&gt;
= Bitmap tracing =&lt;br /&gt;
&lt;br /&gt;
* A '''new color quantization algorithm''' for multiscan traces works faster (especially for large numbers of colors) and gives more adequate results with less colors used. This improves tracing results both for full-color photographs and for limited-color drawings. &lt;br /&gt;
&lt;br /&gt;
* The Trace Bitmap dialog now provides access to three more tracing parameters:&lt;br /&gt;
&lt;br /&gt;
:* '''Suppress speckles''': If set, spots or speckles larger than the given size (in pixels) are suppressed in the trace.&lt;br /&gt;
&lt;br /&gt;
:* '''Smooth corners''': This parameter controls how much smoothing is applied to corners in the traced path.&lt;br /&gt;
&lt;br /&gt;
:* '''Optimize paths''': If set, trace paths are optimized by joining adjacent Bezier segments with the given tolerance.&lt;br /&gt;
&lt;br /&gt;
* All controls in the Trace Bitmap dialog are reorganized to be easier to find. The dialog is redesigned to use two main tabs: '''Mode''' (where you select the tracing mode, such as brightness cutoff or color multiscan) and '''Options''' (where you set various tracing options, such as corner smoothing). The preview is placed horizontally to the right of the tabs. Most labels and tooltips are rewritten for clarity. The trace preview image is made twice larger.&lt;br /&gt;
&lt;br /&gt;
= Even more improvements =&lt;br /&gt;
&lt;br /&gt;
* The '''opacity''' of objects is now displayed as percentage, '''from 0 to 100''', both in the Fill &amp;amp; Stroke dialog (with one fractional digit) and in the statusbar style indicator (with no fractional digits), instead of from 0 to 1.0 as before. This makes opacity values easier to read, type, and say.&lt;br /&gt;
&lt;br /&gt;
* A '''Save a copy''' command has been added to the file menu, similar to the 'Save a copy' functionality of e.g. Adobe Illustrator. With this command, you can save your document under a new filename, but Inkscape will then &amp;quot;forget&amp;quot; it has done this: later saves will be to the old filename. The default shortcut assigned to this function is '''Shift+Ctrl+Alt+S'''.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Text and flowed text objects&amp;lt;/b&amp;gt; behave more consistently. Now you can put a flowed text on path or (re)flow it into a shape just as you would do with a regular (unflowed) text. Previously, the need to convert a flowed text to text before these operations was a stumble for many users.&lt;br /&gt;
&lt;br /&gt;
* Several commands were added to the '''Help menu''', providing the long-missing access to basic information about Inkscape and SVG right from the program: [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/index.php Inkscape manual], [http://inkscape.org/doc/inkscape-man.html Command line options], [http://wiki.inkscape.org/wiki/index.php/FAQ FAQ], Release notes, [http://inkscape.org/report_bugs.php Bug report page], and the [http://www.w3.org/TR/SVG11/ SVG 1.1 specification]. All these commands open the corresponding web pages in the user's default web browser. &lt;br /&gt;
&lt;br /&gt;
* Exported PNG images have the correct '''resolution''' set in the header.&lt;br /&gt;
&lt;br /&gt;
* The Path -&amp;gt; '''Union''' (Ctrl++) operation now functions when only a '''single object''' is selected. Use this to '''remove self-intersections''' in path objects.&lt;br /&gt;
&lt;br /&gt;
* We removed the &amp;quot;hacked&amp;quot; '''filename entry field''' that we had added to the Open and Save dialogs because starting from version 2.10, GTK+ has finally restored this field in their '''standard file dialog'''. The standard field at the top of the dialog supports type-ahead find and performs the default dialog action (open or save) by pressing Enter, which means you can now do a quick '''Ctrl+O, Ctrl+V, Enter''' sequence to open the file whose path is in your clipboard (this closes a long-standing usability bug). Those who use older versions of GTK are advised either to upgrade to 2.10 or use Ctrl+L to open a pop-up filename box. (Our Windows builds are shipped with GTK+ 2.10.)&lt;br /&gt;
&lt;br /&gt;
* The '''Create Bitmap''' function (Alt+B in the default keymap) is made more useful. Unless you have specific resolution or minimum size set for this command in preferences.xml (&amp;lt;code&amp;gt;&amp;amp;lt;group id=&amp;quot;createbitmap&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt;), it will take the '''resolution hint''' from the object whose bitmap copy you are creating (in other words, it will use the resolution that you specified for that object when exporting it via the Export Bitmap dialog), or the default '''90 dpi''' if that object was not yet exported. Also, a 90 dpi bitmap (with its pixels exactly 1 px in size) will be '''snapped''' to the pixel grid. This makes it easy to use Create Bitmap for quick '''rasterization preview''' of an object or document. (Note: if you have used a previous version of Inkscape, your preferences.xml may contain &amp;lt;code&amp;gt;minsize=&amp;quot;250&amp;quot;&amp;lt;/code&amp;gt;; delete this for objects' resolution hints to work.)&lt;br /&gt;
&lt;br /&gt;
* Using extended input (i.e. tablet pressure and tilt) can now be disabled via Preferences (Misc tab). This is intended to be a last-resort option for those platform/hardware combinations that are not properly supported by GTK. With extended input disabled, you can still use your tablet as a mouse. &lt;br /&gt;
&lt;br /&gt;
* Simplify Path now has two modes when working with a group of paths:  the default mode, which treats all of the paths as one large object to simplify, or the new mode, which acts the same as using Simplify on each path in a group separately.  In preferences.xml, set '''options.simplifyindividualpaths''' to 1 to get the new mode.&lt;br /&gt;
&lt;br /&gt;
* For long Simplify operations (more than 20 paths at a time), Inkscape provides user feedback via the status bar as to how many paths have been simplified.  This change also prevents Inkscape from appearing to have locked up during the operation.&lt;br /&gt;
&lt;br /&gt;
* New '''templates''' added for '''video formats''' (PAL, NTSC and HDTV 1080) as well as DVD cover templates that were not installed in the previous version. This will help video and DVD authoring with Inkscape. The business card 85&amp;amp;times;54 template is now installed as well.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Other&amp;quot; license type was added to the metadata/license dialog so that people know that they are entering a URI to an &amp;quot;other&amp;quot; license.&lt;br /&gt;
&lt;br /&gt;
= Examples = &lt;br /&gt;
&lt;br /&gt;
* With all the recent additions - clipping, masking, and especially blur - Inkscape is now able to produce extremely photorealistic art. In the share/examples folder in Inkscape distribution, you will find two brand new, stunningly realistic images of shiny cars: &amp;lt;b&amp;gt;car.svgz&amp;lt;/b&amp;gt; by Konstantin Rotkevich and &amp;lt;b&amp;gt;gallardo.svgz&amp;lt;/b&amp;gt; by Michael Grosberg.&lt;br /&gt;
&lt;br /&gt;
* Inkscape 0.45 does not yet have gradient meshes. But with the addition of Gaussian Blur, this feature suddenly got within reach. A new example file, &amp;lt;b&amp;gt;gradient-mesh-experimental.svgz&amp;lt;/b&amp;gt;, explains the approach Inkscape will likely take to implement this feature in a fully SVG-compatible way.&lt;br /&gt;
&lt;br /&gt;
* Although Inkscape does not support animation yet, you can add any animation scripts and attributes to your SVG file manually in a text editor - and the file will still be editable in Inkscape. Tavmjong Bah used this technique to create  &amp;lt;b&amp;gt;animated-clock.svg&amp;lt;/b&amp;gt; which, when loaded in an SVG viewer supporting animation (such as Firefox, Opera, or Batik), demonstrates the intricate moving clockwork of a watch - and shows real time to boot! If loaded in Inkscape, the image is static, but instead you can freely edit any of the objects.&lt;br /&gt;
&lt;br /&gt;
= Translations, tutorials, templates =&lt;br /&gt;
&lt;br /&gt;
* Remarkable improvements are in the '''Danish''', '''Finnish''', '''Nepalese''' and the '''Vietnamese''' translations of the user interface. They all jumped from 0 to over 90 percent in a very short timespan.&lt;br /&gt;
&lt;br /&gt;
* All people which are familiar with '''pig latin''' are now able to use Inkscape's user interface in that language. Isthay isway oughtbray otay usway ybay away ewnay anslatortray.&lt;br /&gt;
&lt;br /&gt;
* Updated '''British English''', '''Catalan''', '''Czech''', '''Bulgarian''', '''French''', '''Danish''', '''Finnish''', '''German''', '''Brazilian Portuguese''' and '''Thai''', '''Vietnamese''' and '''Dzongkha''' translations.&lt;br /&gt;
&lt;br /&gt;
* A new Esperanto translation added including default document template.&lt;br /&gt;
&lt;br /&gt;
* Default Lithuanian template was not installed before, which is now fixed.&lt;br /&gt;
&lt;br /&gt;
* New tutorial &amp;quot;Easter Eggs&amp;quot; by Steve Karg.&lt;br /&gt;
&lt;br /&gt;
* Added Catalan default template and elements tutorial.&lt;br /&gt;
&lt;br /&gt;
* Russian header and footer templates for tutorials are added.&lt;br /&gt;
&lt;br /&gt;
* Several tutorial translations were updated, namely '''Catalan''', '''Brazilian Portuguese''', '''Russian''', '''German''', '''Danish''' and '''French'''.&lt;br /&gt;
&lt;br /&gt;
* There are also new Russian and Japanese translations of Windows installer strings.&lt;br /&gt;
&lt;br /&gt;
= Dependency changes =&lt;br /&gt;
&lt;br /&gt;
* We have changed the '''GTK+''' requirement for compilation to version 2.8. However, it is highly recommended to use at least the version '''2.10.7''' because previous versions contain at least one crash bug which may cause Inkscape to crash after typing in a value into a spinbutton.&lt;br /&gt;
&lt;br /&gt;
= Notable bugfixes =&lt;br /&gt;
&lt;br /&gt;
* When deleting a node, neighboring smooth nodes are converted to cusp.&lt;br /&gt;
&lt;br /&gt;
* Releasing the mouse button while dragging nodes using a tablet will now always release the nodes.  Before this, a race condition could occur where dragging could continue after the mouse button was released.&lt;br /&gt;
&lt;br /&gt;
* An object's mask and clipping path are now preserved after Simplify, Object/Stroke to path, or boolean operations.&lt;br /&gt;
&lt;br /&gt;
* Ungrouping a group containing clipped/masked objects might sometime break the clip/mask (move it away); this is fixed.&lt;br /&gt;
&lt;br /&gt;
* Transforming an object and its clone no longer behaves unexpectedly when they are both within a transformed group. &lt;br /&gt;
&lt;br /&gt;
* User-supplied templates in ~/.inkscape/templates can now be SVGZ files in addition to SVG.&lt;br /&gt;
&lt;br /&gt;
* Previously, Inkscape didn't check if there's enough free memory for its pixel buffers and could crash without warning due to insufficient memory e.g. upon zooming in. This problem became much worse after implementing Gaussian blur, because rendering blurred objects at high zooms may require a pixel buffer much bigger than the visible canvas. Now this situation is handled more gracefully: if a display operation requires more memory than available, or more than 100Mb (which corresponds to a 5000x5000 pixel buffer), it is skipped. This may result in blurred objects &amp;quot;disappearing&amp;quot; at high zooms. This is purely a display issue, however, and it never corrupts data; just zoom out (or reduce blur radius) and the disappeared object will show up OK.&lt;br /&gt;
&lt;br /&gt;
* When resizing objects, scaling numbers in the statusbar are no longer overwritten by other text when pressing the modifier keys (Alt, Shift, Ctrl).&lt;br /&gt;
&lt;br /&gt;
* To work around problems some users had with pressure-sensitive tablets ([http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1281512&amp;amp;group_id=93438&amp;amp;atid=604306 bug 1281512]), the pressure sensitivity can be disabled from the Misc tab of Inkscape Preferences dialog. After that, the tablet can still be used as a regular mouse. &lt;br /&gt;
&lt;br /&gt;
* The layer widget in the statusbar used to lose its current layer after an effect run; this is fixed.&lt;br /&gt;
&lt;br /&gt;
* When using different display resolutions or a dual screen setup, dialogs could be displayed off-screen; this is fixed: now Inkscape checks whether the saved position of the dialog is offscreen, if so it will move the dialog to the center of the screen. Note that this not solve all problems. If the dialog is still not visible, go to the [http://sourceforge.net/tracker/?func=detail&amp;amp;atid=604306&amp;amp;aid=1250236&amp;amp;group_id=93438 bug 1250236] where a procedure is given to make the dialog visible (by editing preferences.xml).&lt;br /&gt;
&lt;br /&gt;
* Grid and guidelines no longer vanish when changing their color.&lt;br /&gt;
&lt;br /&gt;
* Group transformation is now correctly re-applied when ungrouping and then undoing the ungroup operation.&lt;br /&gt;
&lt;br /&gt;
* Text dialog no longer discards the style of the selected text.&lt;br /&gt;
&lt;br /&gt;
* Inkscape no longer crashes when you try to unflow an empty flowed text.&lt;br /&gt;
&lt;br /&gt;
* Thanks to patches submitted by users of our community, Inkscape can now be built on SGI IRIX 6.5.28, gcc 3.4.0 systems and on Tru64 systems.&lt;br /&gt;
&lt;br /&gt;
= Known problems =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problem with &amp;quot;Dialogs on Top&amp;quot; on Windows ====&lt;br /&gt;
&lt;br /&gt;
* Although the &amp;quot;Dialogs on Top&amp;quot; option is now available on Windows (File &amp;gt; Inkscape Preferences &amp;gt; Windows), it does not work exactly as it should (yet!). When the document window is minimized, the dialogs remain visible, i.e. are not minimized together with the document window. Because of this, it is not possible to get the document window back by clicking its taskbar button. A workaround to this problem is to '''right-click the Inkscape taskbar button and select &amp;quot;Restore&amp;quot;.''' We expect that future releases of GTK will solve this problem.&lt;br /&gt;
&lt;br /&gt;
==== Spinbuttons may crash if you have GTK+ older than 2.10.7 ====&lt;br /&gt;
&lt;br /&gt;
* You may experience crashes after typing in a value into a spinbutton if you have a version of GTK+ 2.10.6 or older. Upgrade your GTK+ to fix this. (This does not affect the Windows package as it comes with GTK+ 2.10.9.)&lt;br /&gt;
&lt;br /&gt;
==== Numerical Python required for Perspective effect ====&lt;br /&gt;
&lt;br /&gt;
* This effect will not work until you install a python module called '''numpy''' (Numerical Python). It can be downloaded at [http://numpy.scipy.org/ numpy.scipy.org]. The Windows package already contains this module.&lt;br /&gt;
&lt;br /&gt;
==== Do not use a clone of an object as its clipping path/mask ====&lt;br /&gt;
&lt;br /&gt;
* In this version, you cannot use an object's clone as its clipping path or mask. Either unlink the clone first, or clip one clone of a source object (not the source itself) by another clone of the same. Properly fixing this bug requires some deep changes in the code and therefore was postponed until after 0.45 so as not to delay the release.&lt;br /&gt;
&lt;br /&gt;
==== Non-Unicode symbol fonts on Windows don't work ====&lt;br /&gt;
&lt;br /&gt;
* On Windows, symbol fonts without a Unicode map do not work. This is a limitation of the Pango library that we use.&lt;br /&gt;
&lt;br /&gt;
==== Problems with some Debian libgc-6.7 packages ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape will hang or crash when linked with the first Debian packaged version of the Boehm garbage collection library. This problem was fixed in version 1:6.7-2  of the package.  If you have libgc 6.7 on your Debian-based system, make sure that you are using that version of the package or later.&lt;br /&gt;
&lt;br /&gt;
==== Beware of defective themes on Linux ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape and other Gtk programs can crash on any Linux, when the &amp;lt;b&amp;gt;gtk2-engines-smooth / libsmooth&amp;lt;/b&amp;gt; package is installed. We have filed a bug against libsmooth which is now in gtk-engine and part of gnome. Removing the package resolves the problem. Update: this bug appears to be fixed in newer versions of gtk-engines. If you are affected by this problem please update to a newer version of gtk-engines. If problems persist then please inform the gtk-engines maintainers of the problem. &lt;br /&gt;
&lt;br /&gt;
* A similar crash happens if the &amp;lt;b&amp;gt;KDE Baghira&amp;lt;/b&amp;gt; theme or the package &amp;lt;b&amp;gt;gtk_qt_engine&amp;lt;/b&amp;gt; are installed. If you experience Inkscape crashes on KDE, please try to install a different theme from Baghira, or uninstall the gtk_qt_engine package from your system. Both problems also affect older versions of Inkscape.&lt;br /&gt;
&lt;br /&gt;
= Previous releases =&lt;br /&gt;
&lt;br /&gt;
* [[ReleaseNotes044]]&lt;br /&gt;
* [[ReleaseNotes043]]&lt;br /&gt;
* [[ReleaseNotes042]]&lt;br /&gt;
* [[ReleaseNotes041]]&lt;br /&gt;
* [[ReleaseNotes040]]&lt;br /&gt;
* [[ReleaseNotes039]]&lt;br /&gt;
* [[ReleaseNotes038]]&lt;br /&gt;
* [[ReleaseNotes037]]&lt;br /&gt;
* [[ReleaseNotes036]]&lt;br /&gt;
* [[ReleaseNotes035]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Marketing]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=13738</id>
		<title>Release notes/0.45</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=13738"/>
		<updated>2007-03-01T03:07:19Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* Inkscape 0.45.1 changes with respect to 0.45 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Inkscape 0.45.1 changes with respect to 0.45 =&lt;br /&gt;
&lt;br /&gt;
*[ 1667939 ] 0.45.1: fix crash when tile-tracing with too small clones&lt;br /&gt;
*[ 1666532 ] 0.45.1: Broken link in inkview man page&lt;br /&gt;
*[ 1665447 ] 0.45.1: fix for the blur quantization bug 1617082&lt;br /&gt;
*[ 1664849 ] 0.45.1: fix 1662589: increase blur margins&lt;br /&gt;
*[ 1664004 ] 0.45.1: embedimage.py with fixes search order&lt;br /&gt;
*[ 1662649 ] 0.45.1: markers.svg with reversed order&lt;br /&gt;
*Crudely improve check-markup for &amp;amp;#123; markup, fix translations with bugs in that area (dz and zh_TW).&lt;br /&gt;
*[ 1659404 ] 0.45.1: Set locale directory from environment variable&lt;br /&gt;
*[ 1657072 ] 0.45.1: fix for bug 1654495&lt;br /&gt;
*[ 1654636 ] 0.45.1: defocus dropper checkboxes&lt;br /&gt;
*Updated slovak translation&lt;br /&gt;
*Adding japanese.nsh and russian.nsh into files that should go into the release tarball&lt;br /&gt;
*Correct russian translation&lt;br /&gt;
*patch [ 1651797 ] 0.45.1: fix for attributes when saving/save-a-copy&lt;br /&gt;
*patch [ 1651752 ] 0.45.1: fix dropper tool&lt;br /&gt;
&lt;br /&gt;
= Inkscape 0.45: overview =&lt;br /&gt;
&lt;br /&gt;
This release brings the exciting new features developed by the Google Summer of Code 2006 participants, as well as tons of other improvements across the board. Here are the highlights:&lt;br /&gt;
&lt;br /&gt;
* '''Gaussian blur''' is the first SVG filter supported by Inkscape. You can blur any object to any extent - yet it remains vector and fully editable. This gives a huge boost to Inkscape as a creative art tool.&lt;br /&gt;
&lt;br /&gt;
* '''Display speed and interactivity''': not only does Inkscape render faster, but it can now respond to user input before it finished redrawing the screen, which greatly improves the responsiveness (perceived speed or interactivity) of the program.&lt;br /&gt;
&lt;br /&gt;
* '''History dialog''' makes it easy to to review your editing session and jump to any step of it, undoing and redoing multiple actions with one click.&lt;br /&gt;
&lt;br /&gt;
* Several important tool features are added, notably the new selection mode in '''Node tool''' and the adjustable rounded caps in '''Calligraphic pen'''.&lt;br /&gt;
&lt;br /&gt;
* '''Bitmap tracing''' works better for multi-color traces, sports a redesigned dialog and several new options.&lt;br /&gt;
&lt;br /&gt;
* Many new '''extension effects''' are added, including '''Color effects''' and '''Pattern along path'''. &lt;br /&gt;
&lt;br /&gt;
* The '''Outline mode''' has got many fixes and improvements, including a keyboard shortcut.&lt;br /&gt;
&lt;br /&gt;
* Several new commands in '''Help''' menu open various Inkscape-related pages in your default browser, making Inkscape reference information more accessible as you work. &lt;br /&gt;
&lt;br /&gt;
* Dozens of smaller '''features''' are added throughout the program, and hundreds of '''bugs''' are fixed.&lt;br /&gt;
&lt;br /&gt;
= SVG filters: Gaussian blur =&lt;br /&gt;
&lt;br /&gt;
Thanks to Google's Summer of Code program, Inkscape now has basic support for [http://www.w3.org/TR/SVG11/filters.html SVG filters]. The only filter enabled so far is '''Gaussian blur'''. &lt;br /&gt;
&lt;br /&gt;
With it, you can softly and naturally blur any Inkscape objects: paths, shapes, groups, text, images. Clones inherit blurring from their original, but they can also be blurred independently from the original (you can create blurred clones with Tile Clones, too). Both the fill and stroke of an object are blurred together, creating semitransparent margins that smoothly blend into the background. &lt;br /&gt;
&lt;br /&gt;
Gaussian blur enables a wide range of photorealistic effects: arbitrarily shaped shades and lights, depth of field, drop shadows, glows, etc. Also, blurred objects can be used as masks for other objects to achieve the &amp;quot;feathered mask&amp;quot; effect.&lt;br /&gt;
&lt;br /&gt;
* To blur selected objects, open the Fill and Stroke dialog (Ctrl+Shift+F) and use the '''Blur''' slider. The blur value is a percentage, with 100% corresponding to a blurring radius (standard deviation of Gaussian function) of 1/8 of the object's bounding box' perimeter (that is, for a square, a blur of 100% will have the radius equal to half a side, which turns any shape into an amorphous cloud). &lt;br /&gt;
&lt;br /&gt;
* The '''Tile Clones''' dialog also supports blurring. On the '''Blur &amp;amp; opacity''' tab, you can set the blur percentage per row or per column of your tiling, as well as randomize blurring and make it alternate (all the same options as for Opacity).&lt;br /&gt;
&lt;br /&gt;
* The quality of on-screen blur display is controlled by the '''Blur quality''' option on the new '''Filters''' tab of Inkscape Preferences (Ctrl+Shift+P). The available options range from best quality/slowest display to worst quality/fastest display, the default being in the middle of the range. Any setting except the &amp;quot;best quality&amp;quot; may introduce some rendering artifacts, especially when blurring thin strokes; on the other hand, the &amp;quot;best quality&amp;quot; setting may make Inkscape extremely slow at high zooms. These settings only affect the screen display of blurred objects; bitmap export always uses the best quality (and may therefore become quite slow for images with a lot of blur).&lt;br /&gt;
&lt;br /&gt;
Here are a few tips on using blur:&lt;br /&gt;
&lt;br /&gt;
* '''Masks and clipping''' are applied ''after'' blur. That is, if you clip an object and then blur it (or blur it first and then clip - it makes no difference), the clipped edges will remain crisp. Often, this is what you want. If, however, you want to blur the clipped/masked edges too (possibly with a different radius), you can use grouping: group the clipped object with some other object (which you can then delete from the group) and blur the group.&lt;br /&gt;
&lt;br /&gt;
* A simple '''drop shadow''' is now very easy to do: just copy the object, paint the copy black, blur it, shift away a bit and lower it to the bottom. However, such a shadow does not update when you edit the foreground object. If your object is already black (or, more generally, if you want the shadow to be the same color as the object), you can clone instead of copy to make the shadow auto-updating. But what if your foreground object is not black but you need an auto-updating black shadow? Here's a recipe: unset the object's fill (it becomes black); create ''two'' clones of it; put one clone on top and paint any color you want; put the other clone at bottom, blur it and shift sideways. Now you can edit the unset-fill original (use Alt+click to select it) and everything will update. &lt;br /&gt;
&lt;br /&gt;
* If an object has a fill that you don't want to blur (e.g. pattern, or if it's a bitmap), but you just want to '''feather the edges''', use a blurred transparency mask. For this, copy the object; paint it white; blur it as needed; scale the blurred copy down so its blur margins are entirely within the original object; select both the original and the blurred mask; do Object &amp;gt; Mask &amp;gt; Set.&lt;br /&gt;
&lt;br /&gt;
* '''Transforming''' a blurred object '''transforms its blur''', too. This applies to a non-uniform scaling as well, so by squeezing a blurred object you make its blur squeezed as well. So, the easiest way to blur a path horizontally more than vertically is this: stretch it upwards without blur, then apply blur and squeeze it back into the original shape. (This only works if the stretched path does not already have a Transform attribute.)&lt;br /&gt;
&lt;br /&gt;
* You can combine '''blurring with gradients'''. For example, an ellipse with elliptic opacity gradient will look much softer and more natural when blurred. An object with a horizontal linear opacity gradient, when blurred, will look as if it's more blurred on its transparent side than on its opaque side.&lt;br /&gt;
&lt;br /&gt;
* A '''clone of a blurred object''' inherits the blur of the original. Therefore, such a clone can be blurred ''more'', but you can't &amp;quot;unblur&amp;quot; it to make the clone sharper than its original (unless, of course, you unlink it). The Fill and Stroke dialog shows you the amount of the blur applied to this particular object; however, if the object is a clone of an already blurred original, the dialog does not reflect that.&lt;br /&gt;
&lt;br /&gt;
* Note that '''Firefox 2.0''' does not support SVG filters, so your files will be displayed in Firefox 2.0 without blur. However, filter support has been added  in the current development version and will be included in Firefox 3.0. The Opera web browser, as well as librsvg (used by Wikipedia) and Batik, support filters correctly in their current versions.&lt;br /&gt;
&lt;br /&gt;
= Undo history =&lt;br /&gt;
&lt;br /&gt;
* Inkscape now features a &amp;lt;b&amp;gt;History Dialog&amp;lt;/b&amp;gt; accessible via &amp;lt;b&amp;gt;Ctrl+Shift+H&amp;lt;/b&amp;gt; or Edit &amp;amp;gt; Undo History. All changes made to the document since it was opened are recorded here.&lt;br /&gt;
&lt;br /&gt;
:* In the dialog, changes are listed from the '''oldest (top)''' to the '''newest (bottom)'''. &lt;br /&gt;
&lt;br /&gt;
:* The type of each change is indicated by an '''icon''' and a short '''description'''.&lt;br /&gt;
&lt;br /&gt;
:* For readability, consecutive changes of the same type are placed in a '''collapsible branch''' showing a triangle marker and the number of the hidden actions in the branch.&lt;br /&gt;
&lt;br /&gt;
:* By clicking on an event in the list, you can easily '''move through the undo history''', i.e. undo or redo any number of actions with one click.&lt;br /&gt;
&lt;br /&gt;
* The Undo and Redo commands in the Edit menu display the descriptions of the commands to be undone and redone, correspondingly. (These are the same descriptions that you see in the History dialog.)&lt;br /&gt;
&lt;br /&gt;
= Rendering improvements =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Interruptible display&amp;lt;/b&amp;gt;: Previously, Inkscape could not do anything until it finishes the current screen redraw. Now the redraw is made interruptible, so that Inkscape responds to mouse and keyboard input and can abort the current redraw and start over if you do some screen-changing operation. As a result, Inkscape now feels '''much snappier and more interactive'''. This interruptibility is fine-tuned for some continuous-drag operations (such as node dragging) so that a balance is achieved between responsiveness and completeness of display.&lt;br /&gt;
&lt;br /&gt;
* Screen render is faster by '''2-3%''' overall:&lt;br /&gt;
&lt;br /&gt;
:* Complex drawings with '''transparency''' are faster by up to '''5%'''.&lt;br /&gt;
&lt;br /&gt;
:* '''Radial gradients''' are rendered faster by at least '''10%'''.&lt;br /&gt;
&lt;br /&gt;
* Rendering (compositing) quality has been improved. This is most visible with (partially) transparent gradients: '''banding''' is a lot less pronounced now. Speed has also been improved in some cases.&lt;br /&gt;
&lt;br /&gt;
* Display is more responsive when working at high zoom levels when using a tablet.&lt;br /&gt;
&lt;br /&gt;
= Tools = &lt;br /&gt;
&lt;br /&gt;
== Node tool ==&lt;br /&gt;
&lt;br /&gt;
* You can &amp;lt;b&amp;gt;grow or shrink node selection&amp;lt;/b&amp;gt; by hovering the mouse pointer over a node and using &amp;lt;b&amp;gt;mousewheel&amp;lt;/b&amp;gt; (up = grow, down = shrink) or the keys &amp;lt;b&amp;gt;PageUp&amp;lt;/b&amp;gt; (grow) and &amp;lt;b&amp;gt;PageDown&amp;lt;/b&amp;gt; (shrink). ''Growing'' adds the closest unselected node to the selection; shrinking deselects the farthest selected node. There are two modes that differ by how the closest/farthest nodes are chosen:&lt;br /&gt;
&lt;br /&gt;
:* &amp;lt;b&amp;gt;Spatial selection&amp;lt;/b&amp;gt; (mousewheel, PageUp/PageDown): distances to nodes are measured directly, regardless of which subpath a node belongs to. &lt;br /&gt;
&lt;br /&gt;
:* &amp;lt;b&amp;gt;Linear selection&amp;lt;/b&amp;gt; (Ctrl+mousewheel, Ctrl+PageUp/Ctrl+PageDown): node distances are measured ''along the path'', and only the nodes belonging to the same subpath as the hovered node are considered (i.e. other subpaths are never selected).&lt;br /&gt;
&lt;br /&gt;
:This technique is convenient for quickly selecting an area in a complex path starting from a center - for example, for node sculpting.&lt;br /&gt;
&lt;br /&gt;
== Dropper ==&lt;br /&gt;
&lt;br /&gt;
* Instead of the confusing toggle button, now the Controls bar for the Dropper tool has two checkboxes, '''Pick alpha''' and '''Set alpha''', which work as follows. Suppose you have an object selected and, using Dropper, click on an object which has red (#FF0000) fill and 0.5 opacity (half-transparent).&lt;br /&gt;
&lt;br /&gt;
:* If the &amp;quot;Pick alpha&amp;quot; checkbox is off, the selected object will get the fill color #800000 (i.e. faded-out red) and fill opacity will be at 1.0 (opaque). &lt;br /&gt;
&lt;br /&gt;
:* If the &amp;quot;Pick alpha&amp;quot; checkbox is on but &amp;quot;Set alpha&amp;quot; is off, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 1.0. &lt;br /&gt;
&lt;br /&gt;
:* If both &amp;quot;Pick alpha&amp;quot; and &amp;quot;Set alpha&amp;quot; are on, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 0.5 (half-transparent). &lt;br /&gt;
&lt;br /&gt;
:If you Shift+click instead of click, the same changes will be made to stroke color and stroke opacity, correspondingly. Note that in no situation can Dropper change the ''master opacity'' of the selected object(s) (only the fill/stroke opacity), although it can pick it just as it does any other kind of opacity.&lt;br /&gt;
&lt;br /&gt;
== Calligraphy ==&lt;br /&gt;
&lt;br /&gt;
* A new numeric parameter, &amp;lt;b&amp;gt;Caps&amp;lt;/b&amp;gt;, controls the amount of protruding at the ends of calligraphic strokes. This parameter can range from 0 (flat caps, default behavior in previous versions) through 1 (approximately half-circle caps) and up to 5 (long elliptic caps). Rounded caps much improve the look of low-fixation strokes, simulating a rounded pen.  &lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Drag&amp;quot; parameter has been renamed to &amp;lt;b&amp;gt;Wiggle&amp;lt;/b&amp;gt; with a value inversion (i.e. low drag corresponds to high wiggle, and vice versa). Increase this parameter (default is 0) to make the pen waver and wiggle in curly patterns.&lt;br /&gt;
&lt;br /&gt;
* As a first step towards a redesign of the tools' controls, the '''Controls bar of the Calligraphy pen''' has been upgraded. Now it no longer prevents the Inkscape window from resizing narrower than the bar. The items on the far right end of the bar which didn't fit in a narrow window are still accessible through an '''expansion menu''' which allows you to toggle switches, select commands, and set values of numeric fields. Also, each editable numeric value field has a new '''right-click menu''' with some common values which often allows you to set a desired value much faster than by scrolling the control or typing the value into it.&lt;br /&gt;
&lt;br /&gt;
* With low or zero Fixation parameter, some users of tablet pens experienced &amp;quot;blobs&amp;quot; (brief reversals of a stroke's right/left edges, causing &amp;quot;holes&amp;quot; and &amp;quot;bubbles&amp;quot; in a calligraphic stroke), especially often at the start of a stroke. Hopefully this problem is now fixed without reducing the responsiveness of the tool.&lt;br /&gt;
&lt;br /&gt;
= Outline mode =&lt;br /&gt;
&lt;br /&gt;
* A new menu command (&amp;lt;b&amp;gt;View &amp;gt; Display Mode &amp;gt; Toggle&amp;lt;/b&amp;gt;) and a new keyboard shortcut (&amp;lt;b&amp;gt;Ctrl+&amp;amp;lt;keypad 5&amp;amp;gt;&amp;lt;/b&amp;gt;) switch the display mode from Normal to Outline and back.&lt;br /&gt;
&lt;br /&gt;
* The window title displays &amp;quot;&amp;lt;b&amp;gt;(outline)&amp;lt;/b&amp;gt;&amp;quot; next to the file name when that editing window is in Outline mode. &lt;br /&gt;
&lt;br /&gt;
* An object with &amp;lt;b&amp;gt;mask and/or clipping path&amp;lt;/b&amp;gt;, when viewed in Outline mode, now displays both the object itself and its clipping path and mask as objects, using different outline colors. By default, &amp;lt;b&amp;gt;clippaths use green&amp;lt;/b&amp;gt; outlines, and &amp;lt;b&amp;gt;masks use blue&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Images&amp;lt;/b&amp;gt; in Outline mode are displayed as &amp;lt;b&amp;gt;red&amp;lt;/b&amp;gt; (by default) frames with two diagonals.&lt;br /&gt;
&lt;br /&gt;
* An object with no fill and no stroke, invisible and not selectable by mouse clicking in normal mode, can now be &amp;lt;b&amp;gt;picked by a mouse click&amp;lt;/b&amp;gt; in the Outline mode using its visible outline.&lt;br /&gt;
&lt;br /&gt;
* The bug whereby stroked shapes didn't change stroke width when switching to Outline mode or back is fixed.&lt;br /&gt;
&lt;br /&gt;
* All outline colors are changeable by editing the &amp;quot;wireframecolors&amp;quot; group inside &amp;quot;options&amp;quot; in the preferences file (~/.inkscape/preferences.xml). The &amp;quot;onlight&amp;quot; and &amp;quot;ondark&amp;quot; attributes set the colors of the regular object outlines on light and dark backgrounds (default black and white correspondingly); the &amp;quot;images&amp;quot;, &amp;quot;clips&amp;quot;, and &amp;quot;masks&amp;quot; attributes set the colors of images, clipping paths, and masks (defaults are red, green, and blue correspondingly). Each attribute is a decimal integer corresponding to the hex RRGGBBAA of the color.  &lt;br /&gt;
&lt;br /&gt;
* To cater for specialized uses, such as preparing input for personal media cutters, Inkscape now has an option to start in the Outline mode upon launch. To enable this, add the following line to your preferences.xml file:&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;group id=&amp;quot;startmode&amp;quot; outline=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:placing it after the &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; opening tag.&lt;br /&gt;
&lt;br /&gt;
= Keyboard profiles =&lt;br /&gt;
&lt;br /&gt;
The previous release allowed sets of keybindings (keymaps) to be created for Inkscape in the style of other applications.  Two more keymaps have been added:  &lt;br /&gt;
&lt;br /&gt;
* '''Adobe Illustrator''' &lt;br /&gt;
* '''Macromedia Freehand'''&lt;br /&gt;
&lt;br /&gt;
Of course not every feature in these other programs has a direct match to features in Inkscape; so, if you can, please '''help us out''' by reporting any problems you may have or improvements you would like to request.&lt;br /&gt;
&lt;br /&gt;
Additionally, a keymap that focuses on tablet-based illustration and drawing work has been added:&lt;br /&gt;
&lt;br /&gt;
* '''right-handed-illustration.xml'''&lt;br /&gt;
&lt;br /&gt;
This keymap places all commonly-used commands under the left hand, so that the user's hands rarely leave the keyboard or the tablet/stylus.&lt;br /&gt;
&lt;br /&gt;
(To enable a profile, copy it into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; in the same directory, overwriting the old file. To restore the default Inkscape set, copy &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
More of Inkscape's keys are implemented as actions and are therefore available for remapping via keyboard profiles. New actions include '''EditSelectNext''' and '''EditSelectPrev''' for selecting next/previous object or node (by default, they are bound to Tab/Shift+Tab; as a result of becoming global actions, these keys now work in all tools and not only in Selector and Node tool as before).&lt;br /&gt;
&lt;br /&gt;
= Extension effects =&lt;br /&gt;
&lt;br /&gt;
Inkscape's extension effects, written in Python using the '''inkex''' utility class, are currently a major growth point of the project. They allow new developers to create functionality very quickly, without having to learn Inkscape's huge C/C++ codebase. However, eventually we plan to move many of these effects into the core of Inkscape, which will make them much faster and more interactive. From this viewpoint, effects can be considered a quick way to prototype and test the algorithms and UI controls of the future Inkscape features. However, this does not prevent effects from being genuinely useful in everyday work, and in this version we have several excellent additions. &lt;br /&gt;
&lt;br /&gt;
== New effects ==&lt;br /&gt;
&lt;br /&gt;
* '''Pattern along path''': A new powerful extension in the &amp;quot;Generate from path&amp;quot; submenu allows you to bend, repeat and/or stretch a pattern object (which can be a path or a group) along a &amp;quot;skeleton&amp;quot; path. This makes it easy to create a variety of patterned and shaped strokes. (This obsoletes the old &amp;quot;Kochify&amp;quot; extension which is removed.)&lt;br /&gt;
&lt;br /&gt;
:Effect's parameters include: &lt;br /&gt;
&lt;br /&gt;
:* ''Copies of the pattern'' selects one of the four modes: '''Single stretched''': one copy of the pattern is placed on the skeleton path and stretched/squeezed to match its length;  '''Repeated stretched''': as many copies as would fit are placed along the skeleton path and stretched to fit exactly; '''Single''' and '''Repeated''': same but without stretching.&lt;br /&gt;
&lt;br /&gt;
:* ''Deformation type'' can be one of: '''Snake''' bends the pattern flatly in the plane of the drawing, the width not depending on direction; '''Ribbon''' bends it as a vertical ribbon or like a calligraphic stroke with maximum fixation, so that width depends on direction (minimum for vertical parts of the stroke, maximum for horizontal).&lt;br /&gt;
&lt;br /&gt;
:* Several parameters allow you to adjust spacing between the copies of the pattern (for Multiple modes) and their offset in two directions (along the skeleton path and perpendicular to it).&lt;br /&gt;
&lt;br /&gt;
:* Normally the effect assumes that the pattern object is horizontal and bends its horizontal axis (at mid-height) along the skeleton path. There's a checkbox that allows you to use a '''vertical pattern''' instead. &lt;br /&gt;
&lt;br /&gt;
:Some examples of using this effect are shown on a screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.45-patternalongpath.png].&lt;br /&gt;
&lt;br /&gt;
* '''Color effects''': A new group of extensions in the '''Color''' submenu of the Effects menu allows you to adjust all colors of a selection at once. These commands affect both fill and stroke colors, including gradients (but not bitmaps). The commands include:&lt;br /&gt;
&lt;br /&gt;
:* a full set of '''HSL adjustments''' (increasing/decreasing hue, saturation, or lightness by 5%), &lt;br /&gt;
&lt;br /&gt;
:* '''Brighter''' and '''Darker''' (adjust brightness up or down by 10%), &lt;br /&gt;
&lt;br /&gt;
:* '''Desaturate''', &lt;br /&gt;
&lt;br /&gt;
:* '''Grayscale''', &lt;br /&gt;
&lt;br /&gt;
:* '''Negative''', &lt;br /&gt;
&lt;br /&gt;
:* commands for removing or swapping the '''Red''', '''Green''', '''Blue''' channels, &lt;br /&gt;
&lt;br /&gt;
:* a '''Custom''' command where you can set your own formulas for modifying the color channels. &lt;br /&gt;
&lt;br /&gt;
:Some examples of using this effect are shown on a screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.45-coloreffects.png].&lt;br /&gt;
&lt;br /&gt;
:Note: undoing color changes on gradients exposes a bug where an object seems to &amp;quot;disappear&amp;quot;; this is only a display issue (caused by the order in which gradients and their users are restored on undo) not causing any loss of information. Also, on large documents and large selections with gradients, Python's XPath code may get quite slow. Despite these shortcomings, we decided to add this extension, because it's genuinely useful functionality which was so far missing in Inkscape.&lt;br /&gt;
&lt;br /&gt;
* Recent fixes in the processing of SVG &amp;lt;defs /&amp;gt; have made it possible to implement the often requested '''Color Markers to Match Stroke''' effect. It is no longer necessary to hand-edit XML to recolor arrowheads; just change the stroke color of your path and call this effect to recolor its markers to match.&lt;br /&gt;
&lt;br /&gt;
* '''Lorem ipsum''' (in &amp;quot;Render&amp;quot; submenu) is a new extension that creates the traditional Latin-like random text for design mock-ups. The number of paragraphs, the number of sentences per paragraph and the possible fluctuation of the number of sentences (for uneven paragraphs) can be adjusted. If no flowed text element is selected, a new one in a new layer is created, matching the size of the canvas.&lt;br /&gt;
&lt;br /&gt;
* '''Fractalize''' (in &amp;quot;Modify Path&amp;quot; submenu) replaces each segment of the selected path by a crooked line, subdivided to the given depth, with randomly displaced nodes. &lt;br /&gt;
&lt;br /&gt;
* '''g2png''': The new group-to-PNG Python extension (g2png) is an easy way to export any group or layer to individual PNG files. It was first created for use in the [http://www.le-radar.com/?mm/inkscape Inkscape User Manual] (also available in SVN in the user_manual module) but is also interesting for many other uses. If e.g. you have to draw a set of icons, you can draw them in the same document, thus making copying, duplicating, cloning etc. easier. Then just create a group  for each icon, and with the extension, each group ends up in its own PNG file.&lt;br /&gt;
&lt;br /&gt;
== Improved effects ==&lt;br /&gt;
&lt;br /&gt;
* The '''Function Plotter''' has been extended, providing greater flexibility in x- and y-range definition. &lt;br /&gt;
&lt;br /&gt;
* The '''Measure Path''' extension is improved with several new parameters added (units, scale, precision, distance from path).&lt;br /&gt;
&lt;br /&gt;
* The '''Extract One Image''' extension is fixed to automatically append filename extension to the created bitmap file.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Blur Edge&amp;quot; extension is renamed into '''Inset/Outset Halo''' to avoid confusion with the real Gaussian blur that we now support, as well as to better describe what this extension actually does: From the selected path, it creates a group of inset and outset paths that form a stepped &amp;quot;halo&amp;quot; around the object. &lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
* '''3 new parameter types''' have been added to the extension effect UI: '''tabs''', '''enumerations''' and '''optiongroups''' (radio buttons). Examples are available of how to use these parameters in INX files: the new Function Plotter uses tabs; enumerations are used by the Pattern along path extension; and a small developer example is given to illustrate the use of optiongroups (identical to enumerations).&lt;br /&gt;
&lt;br /&gt;
* In an extension's INX file, you can specify &amp;lt;code&amp;gt;&amp;amp;lt;effects-menu hidden=&amp;quot;yes&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt; to hide that extension from the Effects menu. However, such a &amp;quot;hidden&amp;quot; extension can still be assigned a keyboard shortcut (by using its &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; as an &amp;quot;action&amp;quot; in your &amp;lt;code&amp;gt;~/.inkscape/keys/default.xml&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* In an extension's INX file, you can add &amp;lt;code&amp;gt;needs-document=&amp;quot;no&amp;quot;&amp;lt;/code&amp;gt; attribute to the &amp;lt;code&amp;gt;&amp;amp;lt;effect&amp;amp;gt;&amp;lt;/code&amp;gt; element. This indicates that the extension does not process the current SVG document, and Inkscape will not bother saving and restoring the document from a temporary file which allows this extension to run faster and smoother. (This is used for the new open-in-default-browser Help menu commands which are technically implemented as extensions.)&lt;br /&gt;
&lt;br /&gt;
= Export formats =&lt;br /&gt;
&lt;br /&gt;
== AI import/export ==&lt;br /&gt;
&lt;br /&gt;
* We only support AI import and export for Adobe Illustrator 8.0 and older.  This has been clarified in the Open and Save As lists.&lt;br /&gt;
&lt;br /&gt;
== PDF export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape's PDF exporter has been improved:&lt;br /&gt;
&lt;br /&gt;
* '''New features:''' bitmap images can be embedded; PDF files can be exported from command line using the &amp;lt;code&amp;gt;--export-pdf&amp;lt;/code&amp;gt; parameter. &lt;br /&gt;
&lt;br /&gt;
* '''Changed behavior:''' the pointless text to path question is gone. &lt;br /&gt;
&lt;br /&gt;
* '''Fixed bugs:''' save failure is now detected, miter limits are now &amp;gt;= 1, PDFs with transparent gradient are now embeddable, eccentric elliptic gradients fixed, dash style inheritance fixed, transparency inheritance fixed.&lt;br /&gt;
&lt;br /&gt;
== PS/EPS export ==&lt;br /&gt;
&lt;br /&gt;
There's a new option to &amp;lt;b&amp;gt;embed the fonts&amp;lt;/b&amp;gt; used in the document in the PS or EPS exported file. As of now, this works for &amp;lt;b&amp;gt;Type 1 fonts only&amp;lt;/b&amp;gt;, not TrueType. The option is available when performing the export from the GUI as well as from the command line via the &amp;lt;code&amp;gt;--export-embed-fonts&amp;lt;/code&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
== EMF export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape has a limited support for exporting &amp;lt;b&amp;gt;EMF&amp;lt;/b&amp;gt; (Enhanced Meta File) format. This works &amp;lt;b&amp;gt;only on Windows&amp;lt;/b&amp;gt;, and only exports strokes and fills with constant colors. No text, no images, no gradients, no transparency.&lt;br /&gt;
&lt;br /&gt;
= SVG output =&lt;br /&gt;
&lt;br /&gt;
For specialized uses, several aspects of Inkscape's SVG output can now be customized via editing the preferences.xml file (there's no UI for these options). A &amp;lt;group id=&amp;quot;&amp;lt;b&amp;gt;svgoutput&amp;lt;/b&amp;gt;&amp;quot;&amp;gt; inside &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; can have the following attributes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;usenamedcolors&amp;lt;/b&amp;gt; (default is 0). If nonzero, Inkscape uses symbolic color names (such as &amp;quot;white&amp;quot; or &amp;quot;lime&amp;quot;) and three-digit color designations (such as $dfe) where appropriate; otherwise, it always uses six-digit colors (such as $d0f0e0). Note that in 0.44, the default was to use named colors, which created problems for some extension effects.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;numericprecision&amp;lt;/b&amp;gt; (default is 8). This is the number of significant digits written for each number into SVG. You can lower this number to get slightly more compact SVG at the expense of precision.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;minimumexponent&amp;lt;/b&amp;gt; (default is -8). In transform= attributes, any number whose absolute value is less than 10 to the power of minimumexponent (i.e. less than 10&amp;lt;sup&amp;gt;-8&amp;lt;/sup&amp;gt; by default) is written as 0.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;indent&amp;lt;/b&amp;gt; (default is 2) controls the number of spaces that each level of nesting in SVG is shifted. Set this to 0 to disable indentation.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;inlineattrs&amp;lt;/b&amp;gt; (default is 0). If nonzero, attributes are placed on the same line as their tags; otherwise they are separated by newlines.&lt;br /&gt;
&lt;br /&gt;
= Bitmap tracing =&lt;br /&gt;
&lt;br /&gt;
* A '''new color quantization algorithm''' for multiscan traces works faster (especially for large numbers of colors) and gives more adequate results with less colors used. This improves tracing results both for full-color photographs and for limited-color drawings. &lt;br /&gt;
&lt;br /&gt;
* The Trace Bitmap dialog now provides access to three more tracing parameters:&lt;br /&gt;
&lt;br /&gt;
:* '''Suppress speckles''': If set, spots or speckles larger than the given size (in pixels) are suppressed in the trace.&lt;br /&gt;
&lt;br /&gt;
:* '''Smooth corners''': This parameter controls how much smoothing is applied to corners in the traced path.&lt;br /&gt;
&lt;br /&gt;
:* '''Optimize paths''': If set, trace paths are optimized by joining adjacent Bezier segments with the given tolerance.&lt;br /&gt;
&lt;br /&gt;
* All controls in the Trace Bitmap dialog are reorganized to be easier to find. The dialog is redesigned to use two main tabs: '''Mode''' (where you select the tracing mode, such as brightness cutoff or color multiscan) and '''Options''' (where you set various tracing options, such as corner smoothing). The preview is placed horizontally to the right of the tabs. Most labels and tooltips are rewritten for clarity. The trace preview image is made twice larger.&lt;br /&gt;
&lt;br /&gt;
= Even more improvements =&lt;br /&gt;
&lt;br /&gt;
* The '''opacity''' of objects is now displayed as percentage, '''from 0 to 100''', both in the Fill &amp;amp; Stroke dialog (with one fractional digit) and in the statusbar style indicator (with no fractional digits), instead of from 0 to 1.0 as before. This makes opacity values easier to read, type, and say.&lt;br /&gt;
&lt;br /&gt;
* A '''Save a copy''' command has been added to the file menu, similar to the 'Save a copy' functionality of e.g. Adobe Illustrator. With this command, you can save your document under a new filename, but Inkscape will then &amp;quot;forget&amp;quot; it has done this: later saves will be to the old filename. The default shortcut assigned to this function is '''Shift+Ctrl+Alt+S'''.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Text and flowed text objects&amp;lt;/b&amp;gt; behave more consistently. Now you can put a flowed text on path or (re)flow it into a shape just as you would do with a regular (unflowed) text. Previously, the need to convert a flowed text to text before these operations was a stumble for many users.&lt;br /&gt;
&lt;br /&gt;
* Several commands were added to the '''Help menu''', providing the long-missing access to basic information about Inkscape and SVG right from the program: [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/index.php Inkscape manual], [http://inkscape.org/doc/inkscape-man.html Command line options], [http://wiki.inkscape.org/wiki/index.php/FAQ FAQ], Release notes, [http://inkscape.org/report_bugs.php Bug report page], and the [http://www.w3.org/TR/SVG11/ SVG 1.1 specification]. All these commands open the corresponding web pages in the user's default web browser. &lt;br /&gt;
&lt;br /&gt;
* Exported PNG images have the correct '''resolution''' set in the header.&lt;br /&gt;
&lt;br /&gt;
* The Path -&amp;gt; '''Union''' (Ctrl++) operation now functions when only a '''single object''' is selected. Use this to '''remove self-intersections''' in path objects.&lt;br /&gt;
&lt;br /&gt;
* We removed the &amp;quot;hacked&amp;quot; '''filename entry field''' that we had added to the Open and Save dialogs because starting from version 2.10, GTK+ has finally restored this field in their '''standard file dialog'''. The standard field at the top of the dialog supports type-ahead find and performs the default dialog action (open or save) by pressing Enter, which means you can now do a quick '''Ctrl+O, Ctrl+V, Enter''' sequence to open the file whose path is in your clipboard (this closes a long-standing usability bug). Those who use older versions of GTK are advised either to upgrade to 2.10 or use Ctrl+L to open a pop-up filename box. (Our Windows builds are shipped with GTK+ 2.10.)&lt;br /&gt;
&lt;br /&gt;
* The '''Create Bitmap''' function (Alt+B in the default keymap) is made more useful. Unless you have specific resolution or minimum size set for this command in preferences.xml (&amp;lt;code&amp;gt;&amp;amp;lt;group id=&amp;quot;createbitmap&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt;), it will take the '''resolution hint''' from the object whose bitmap copy you are creating (in other words, it will use the resolution that you specified for that object when exporting it via the Export Bitmap dialog), or the default '''90 dpi''' if that object was not yet exported. Also, a 90 dpi bitmap (with its pixels exactly 1 px in size) will be '''snapped''' to the pixel grid. This makes it easy to use Create Bitmap for quick '''rasterization preview''' of an object or document. (Note: if you have used a previous version of Inkscape, your preferences.xml may contain &amp;lt;code&amp;gt;minsize=&amp;quot;250&amp;quot;&amp;lt;/code&amp;gt;; delete this for objects' resolution hints to work.)&lt;br /&gt;
&lt;br /&gt;
* Using extended input (i.e. tablet pressure and tilt) can now be disabled via Preferences (Misc tab). This is intended to be a last-resort option for those platform/hardware combinations that are not properly supported by GTK. With extended input disabled, you can still use your tablet as a mouse. &lt;br /&gt;
&lt;br /&gt;
* Simplify Path now has two modes when working with a group of paths:  the default mode, which treats all of the paths as one large object to simplify, or the new mode, which acts the same as using Simplify on each path in a group separately.  In preferences.xml, set '''options.simplifyindividualpaths''' to 1 to get the new mode.&lt;br /&gt;
&lt;br /&gt;
* For long Simplify operations (more than 20 paths at a time), Inkscape provides user feedback via the status bar as to how many paths have been simplified.  This change also prevents Inkscape from appearing to have locked up during the operation.&lt;br /&gt;
&lt;br /&gt;
* New '''templates''' added for '''video formats''' (PAL, NTSC and HDTV 1080) as well as DVD cover templates that were not installed in the previous version. This will help video and DVD authoring with Inkscape. The business card 85&amp;amp;times;54 template is now installed as well.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Other&amp;quot; license type was added to the metadata/license dialog so that people know that they are entering a URI to an &amp;quot;other&amp;quot; license.&lt;br /&gt;
&lt;br /&gt;
= Examples = &lt;br /&gt;
&lt;br /&gt;
* With all the recent additions - clipping, masking, and especially blur - Inkscape is now able to produce extremely photorealistic art. In the share/examples folder in Inkscape distribution, you will find two brand new, stunningly realistic images of shiny cars: &amp;lt;b&amp;gt;car.svgz&amp;lt;/b&amp;gt; by Konstantin Rotkevich and &amp;lt;b&amp;gt;gallardo.svgz&amp;lt;/b&amp;gt; by Michael Grosberg.&lt;br /&gt;
&lt;br /&gt;
* Inkscape 0.45 does not yet have gradient meshes. But with the addition of Gaussian Blur, this feature suddenly got within reach. A new example file, &amp;lt;b&amp;gt;gradient-mesh-experimental.svgz&amp;lt;/b&amp;gt;, explains the approach Inkscape will likely take to implement this feature in a fully SVG-compatible way.&lt;br /&gt;
&lt;br /&gt;
* Although Inkscape does not support animation yet, you can add any animation scripts and attributes to your SVG file manually in a text editor - and the file will still be editable in Inkscape. Tavmjong Bah used this technique to create  &amp;lt;b&amp;gt;animated-clock.svg&amp;lt;/b&amp;gt; which, when loaded in an SVG viewer supporting animation (such as Firefox, Opera, or Batik), demonstrates the intricate moving clockwork of a watch - and shows real time to boot! If loaded in Inkscape, the image is static, but instead you can freely edit any of the objects.&lt;br /&gt;
&lt;br /&gt;
= Translations, tutorials, templates =&lt;br /&gt;
&lt;br /&gt;
* Remarkable improvements are in the '''Danish''', '''Finnish''', '''Nepalese''' and the '''Vietnamese''' translations of the user interface. They all jumped from 0 to over 90 percent in a very short timespan.&lt;br /&gt;
&lt;br /&gt;
* All people which are familiar with '''pig latin''' are now able to use Inkscape's user interface in that language. Isthay isway oughtbray otay usway ybay away ewnay anslatortray.&lt;br /&gt;
&lt;br /&gt;
* Updated '''British English''', '''Catalan''', '''Czech''', '''Bulgarian''', '''French''', '''Danish''', '''Finnish''', '''German''', '''Brazilian Portuguese''' and '''Thai''', '''Vietnamese''' and '''Dzongkha''' translations.&lt;br /&gt;
&lt;br /&gt;
* A new Esperanto translation added including default document template.&lt;br /&gt;
&lt;br /&gt;
* Default Lithuanian template was not installed before, which is now fixed.&lt;br /&gt;
&lt;br /&gt;
* New tutorial &amp;quot;Easter Eggs&amp;quot; by Steve Karg.&lt;br /&gt;
&lt;br /&gt;
* Added Catalan default template and elements tutorial.&lt;br /&gt;
&lt;br /&gt;
* Russian header and footer templates for tutorials are added.&lt;br /&gt;
&lt;br /&gt;
* Several tutorial translations were updated, namely '''Catalan''', '''Brazilian Portuguese''', '''Russian''', '''German''', '''Danish''' and '''French'''.&lt;br /&gt;
&lt;br /&gt;
* There are also new Russian and Japanese translations of Windows installer strings.&lt;br /&gt;
&lt;br /&gt;
= Dependency changes =&lt;br /&gt;
&lt;br /&gt;
* We have changed the '''GTK+''' requirement for compilation to version 2.8. However, it is highly recommended to use at least the version '''2.10.7''' because previous versions contain at least one crash bug which may cause Inkscape to crash after typing in a value into a spinbutton.&lt;br /&gt;
&lt;br /&gt;
= Notable bugfixes =&lt;br /&gt;
&lt;br /&gt;
* When deleting a node, neighboring smooth nodes are converted to cusp.&lt;br /&gt;
&lt;br /&gt;
* Releasing the mouse button while dragging nodes using a tablet will now always release the nodes.  Before this, a race condition could occur where dragging could continue after the mouse button was released.&lt;br /&gt;
&lt;br /&gt;
* An object's mask and clipping path are now preserved after Simplify, Object/Stroke to path, or boolean operations.&lt;br /&gt;
&lt;br /&gt;
* Ungrouping a group containing clipped/masked objects might sometime break the clip/mask (move it away); this is fixed.&lt;br /&gt;
&lt;br /&gt;
* Transforming an object and its clone no longer behaves unexpectedly when they are both within a transformed group. &lt;br /&gt;
&lt;br /&gt;
* User-supplied templates in ~/.inkscape/templates can now be SVGZ files in addition to SVG.&lt;br /&gt;
&lt;br /&gt;
* Previously, Inkscape didn't check if there's enough free memory for its pixel buffers and could crash without warning due to insufficient memory e.g. upon zooming in. This problem became much worse after implementing Gaussian blur, because rendering blurred objects at high zooms may require a pixel buffer much bigger than the visible canvas. Now this situation is handled more gracefully: if a display operation requires more memory than available, or more than 100Mb (which corresponds to a 5000x5000 pixel buffer), it is skipped. This may result in blurred objects &amp;quot;disappearing&amp;quot; at high zooms. This is purely a display issue, however, and it never corrupts data; just zoom out (or reduce blur radius) and the disappeared object will show up OK.&lt;br /&gt;
&lt;br /&gt;
* When resizing objects, scaling numbers in the statusbar are no longer overwritten by other text when pressing the modifier keys (Alt, Shift, Ctrl).&lt;br /&gt;
&lt;br /&gt;
* To work around problems some users had with pressure-sensitive tablets ([http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1281512&amp;amp;group_id=93438&amp;amp;atid=604306 bug 1281512]), the pressure sensitivity can be disabled from the Misc tab of Inkscape Preferences dialog. After that, the tablet can still be used as a regular mouse. &lt;br /&gt;
&lt;br /&gt;
* The layer widget in the statusbar used to lose its current layer after an effect run; this is fixed.&lt;br /&gt;
&lt;br /&gt;
* When using different display resolutions or a dual screen setup, dialogs could be displayed off-screen; this is fixed: now Inkscape checks whether the saved position of the dialog is offscreen, if so it will move the dialog to the center of the screen. Note that this not solve all problems. If the dialog is still not visible, go to the [http://sourceforge.net/tracker/?func=detail&amp;amp;atid=604306&amp;amp;aid=1250236&amp;amp;group_id=93438 bug 1250236] where a procedure is given to make the dialog visible (by editing preferences.xml).&lt;br /&gt;
&lt;br /&gt;
* Grid and guidelines no longer vanish when changing their color.&lt;br /&gt;
&lt;br /&gt;
* Group transformation is now correctly re-applied when ungrouping and then undoing the ungroup operation.&lt;br /&gt;
&lt;br /&gt;
* Text dialog no longer discards the style of the selected text.&lt;br /&gt;
&lt;br /&gt;
* Inkscape no longer crashes when you try to unflow an empty flowed text.&lt;br /&gt;
&lt;br /&gt;
* Thanks to patches submitted by users of our community, Inkscape can now be built on SGI IRIX 6.5.28, gcc 3.4.0 systems and on Tru64 systems.&lt;br /&gt;
&lt;br /&gt;
= Known problems =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problem with &amp;quot;Dialogs on Top&amp;quot; on Windows ====&lt;br /&gt;
&lt;br /&gt;
* Although the &amp;quot;Dialogs on Top&amp;quot; option is now available on Windows (File &amp;gt; Inkscape Preferences &amp;gt; Windows), it does not work exactly as it should (yet!). When the document window is minimized, the dialogs remain visible, i.e. are not minimized together with the document window. Because of this, it is not possible to get the document window back by clicking its taskbar button. A workaround to this problem is to '''right-click the Inkscape taskbar button and select &amp;quot;Restore&amp;quot;.''' We expect that future releases of GTK will solve this problem.&lt;br /&gt;
&lt;br /&gt;
==== Spinbuttons may crash if you have GTK+ older than 2.10.7 ====&lt;br /&gt;
&lt;br /&gt;
* You may experience crashes after typing in a value into a spinbutton if you have a version of GTK+ 2.10.6 or older. Upgrade your GTK+ to fix this. (This does not affect the Windows package as it comes with GTK+ 2.10.9.)&lt;br /&gt;
&lt;br /&gt;
==== Numerical Python required for Perspective effect ====&lt;br /&gt;
&lt;br /&gt;
* This effect will not work until you install a python module called '''numpy''' (Numerical Python). It can be downloaded at [http://numpy.scipy.org/ numpy.scipy.org]. The Windows package already contains this module.&lt;br /&gt;
&lt;br /&gt;
==== Do not use a clone of an object as its clipping path/mask ====&lt;br /&gt;
&lt;br /&gt;
* In this version, you cannot use an object's clone as its clipping path or mask. Either unlink the clone first, or clip one clone of a source object (not the source itself) by another clone of the same. Properly fixing this bug requires some deep changes in the code and therefore was postponed until after 0.45 so as not to delay the release.&lt;br /&gt;
&lt;br /&gt;
==== Non-Unicode symbol fonts on Windows don't work ====&lt;br /&gt;
&lt;br /&gt;
* On Windows, symbol fonts without a Unicode map do not work. This is a limitation of the Pango library that we use.&lt;br /&gt;
&lt;br /&gt;
==== Problems with some Debian libgc-6.7 packages ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape will hang or crash when linked with the first Debian packaged version of the Boehm garbage collection library. This problem was fixed in version 1:6.7-2  of the package.  If you have libgc 6.7 on your Debian-based system, make sure that you are using that version of the package or later.&lt;br /&gt;
&lt;br /&gt;
==== Beware of defective themes on Linux ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape and other Gtk programs can crash on any Linux, when the &amp;lt;b&amp;gt;gtk2-engines-smooth / libsmooth&amp;lt;/b&amp;gt; package is installed. We have filed a bug against libsmooth which is now in gtk-engine and part of gnome. Removing the package resolves the problem. Update: this bug appears to be fixed in newer versions of gtk-engines. If you are affected by this problem please update to a newer version of gtk-engines. If problems persist then please inform the gtk-engines maintainers of the problem. &lt;br /&gt;
&lt;br /&gt;
* A similar crash happens if the &amp;lt;b&amp;gt;KDE Baghira&amp;lt;/b&amp;gt; theme or the package &amp;lt;b&amp;gt;gtk_qt_engine&amp;lt;/b&amp;gt; are installed. If you experience Inkscape crashes on KDE, please try to install a different theme from Baghira, or uninstall the gtk_qt_engine package from your system. Both problems also affect older versions of Inkscape.&lt;br /&gt;
&lt;br /&gt;
= Previous releases =&lt;br /&gt;
&lt;br /&gt;
* [[ReleaseNotes044]]&lt;br /&gt;
* [[ReleaseNotes043]]&lt;br /&gt;
* [[ReleaseNotes042]]&lt;br /&gt;
* [[ReleaseNotes041]]&lt;br /&gt;
* [[ReleaseNotes040]]&lt;br /&gt;
* [[ReleaseNotes039]]&lt;br /&gt;
* [[ReleaseNotes038]]&lt;br /&gt;
* [[ReleaseNotes037]]&lt;br /&gt;
* [[ReleaseNotes036]]&lt;br /&gt;
* [[ReleaseNotes035]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Marketing]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=13736</id>
		<title>Release notes/0.45</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=13736"/>
		<updated>2007-03-01T02:56:32Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* Inkscape 0.45.1 changes with respect to 0.45 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Inkscape 0.45.1 changes with respect to 0.45 =&lt;br /&gt;
&lt;br /&gt;
[ 1667939 ] 0.45.1: fix crash when tile-tracing with too small clones&lt;br /&gt;
[ 1666532 ] 0.45.1: Broken link in inkview man page&lt;br /&gt;
[ 1665447 ] 0.45.1: fix for the blur quantization bug 1617082&lt;br /&gt;
[ 1664849 ] 0.45.1: fix 1662589: increase blur margins&lt;br /&gt;
[ 1664004 ] 0.45.1: embedimage.py with fixes search order&lt;br /&gt;
[ 1662649 ] 0.45.1: markers.svg with reversed order&lt;br /&gt;
Crudely improve check-markup for &amp;amp;#123; markup, fix translations with bugs in that area (dz and zh_TW).&lt;br /&gt;
[ 1659404 ] 0.45.1: Set locale directory from environment variable&lt;br /&gt;
[ 1657072 ] 0.45.1: fix for bug 1654495&lt;br /&gt;
[ 1654636 ] 0.45.1: defocus dropper checkboxes&lt;br /&gt;
Updated slovak translation&lt;br /&gt;
Adding japanese.nsh and russian.nsh into files that should go into the release tarball&lt;br /&gt;
Correct russian translation&lt;br /&gt;
patch [ 1651797 ] 0.45.1: fix for attributes when saving/save-a-copy&lt;br /&gt;
patch [ 1651752 ] 0.45.1: fix dropper tool&lt;br /&gt;
&lt;br /&gt;
= Inkscape 0.45: overview =&lt;br /&gt;
&lt;br /&gt;
This release brings the exciting new features developed by the Google Summer of Code 2006 participants, as well as tons of other improvements across the board. Here are the highlights:&lt;br /&gt;
&lt;br /&gt;
* '''Gaussian blur''' is the first SVG filter supported by Inkscape. You can blur any object to any extent - yet it remains vector and fully editable. This gives a huge boost to Inkscape as a creative art tool.&lt;br /&gt;
&lt;br /&gt;
* '''Display speed and interactivity''': not only does Inkscape render faster, but it can now respond to user input before it finished redrawing the screen, which greatly improves the responsiveness (perceived speed or interactivity) of the program.&lt;br /&gt;
&lt;br /&gt;
* '''History dialog''' makes it easy to to review your editing session and jump to any step of it, undoing and redoing multiple actions with one click.&lt;br /&gt;
&lt;br /&gt;
* Several important tool features are added, notably the new selection mode in '''Node tool''' and the adjustable rounded caps in '''Calligraphic pen'''.&lt;br /&gt;
&lt;br /&gt;
* '''Bitmap tracing''' works better for multi-color traces, sports a redesigned dialog and several new options.&lt;br /&gt;
&lt;br /&gt;
* Many new '''extension effects''' are added, including '''Color effects''' and '''Pattern along path'''. &lt;br /&gt;
&lt;br /&gt;
* The '''Outline mode''' has got many fixes and improvements, including a keyboard shortcut.&lt;br /&gt;
&lt;br /&gt;
* Several new commands in '''Help''' menu open various Inkscape-related pages in your default browser, making Inkscape reference information more accessible as you work. &lt;br /&gt;
&lt;br /&gt;
* Dozens of smaller '''features''' are added throughout the program, and hundreds of '''bugs''' are fixed.&lt;br /&gt;
&lt;br /&gt;
= SVG filters: Gaussian blur =&lt;br /&gt;
&lt;br /&gt;
Thanks to Google's Summer of Code program, Inkscape now has basic support for [http://www.w3.org/TR/SVG11/filters.html SVG filters]. The only filter enabled so far is '''Gaussian blur'''. &lt;br /&gt;
&lt;br /&gt;
With it, you can softly and naturally blur any Inkscape objects: paths, shapes, groups, text, images. Clones inherit blurring from their original, but they can also be blurred independently from the original (you can create blurred clones with Tile Clones, too). Both the fill and stroke of an object are blurred together, creating semitransparent margins that smoothly blend into the background. &lt;br /&gt;
&lt;br /&gt;
Gaussian blur enables a wide range of photorealistic effects: arbitrarily shaped shades and lights, depth of field, drop shadows, glows, etc. Also, blurred objects can be used as masks for other objects to achieve the &amp;quot;feathered mask&amp;quot; effect.&lt;br /&gt;
&lt;br /&gt;
* To blur selected objects, open the Fill and Stroke dialog (Ctrl+Shift+F) and use the '''Blur''' slider. The blur value is a percentage, with 100% corresponding to a blurring radius (standard deviation of Gaussian function) of 1/8 of the object's bounding box' perimeter (that is, for a square, a blur of 100% will have the radius equal to half a side, which turns any shape into an amorphous cloud). &lt;br /&gt;
&lt;br /&gt;
* The '''Tile Clones''' dialog also supports blurring. On the '''Blur &amp;amp; opacity''' tab, you can set the blur percentage per row or per column of your tiling, as well as randomize blurring and make it alternate (all the same options as for Opacity).&lt;br /&gt;
&lt;br /&gt;
* The quality of on-screen blur display is controlled by the '''Blur quality''' option on the new '''Filters''' tab of Inkscape Preferences (Ctrl+Shift+P). The available options range from best quality/slowest display to worst quality/fastest display, the default being in the middle of the range. Any setting except the &amp;quot;best quality&amp;quot; may introduce some rendering artifacts, especially when blurring thin strokes; on the other hand, the &amp;quot;best quality&amp;quot; setting may make Inkscape extremely slow at high zooms. These settings only affect the screen display of blurred objects; bitmap export always uses the best quality (and may therefore become quite slow for images with a lot of blur).&lt;br /&gt;
&lt;br /&gt;
Here are a few tips on using blur:&lt;br /&gt;
&lt;br /&gt;
* '''Masks and clipping''' are applied ''after'' blur. That is, if you clip an object and then blur it (or blur it first and then clip - it makes no difference), the clipped edges will remain crisp. Often, this is what you want. If, however, you want to blur the clipped/masked edges too (possibly with a different radius), you can use grouping: group the clipped object with some other object (which you can then delete from the group) and blur the group.&lt;br /&gt;
&lt;br /&gt;
* A simple '''drop shadow''' is now very easy to do: just copy the object, paint the copy black, blur it, shift away a bit and lower it to the bottom. However, such a shadow does not update when you edit the foreground object. If your object is already black (or, more generally, if you want the shadow to be the same color as the object), you can clone instead of copy to make the shadow auto-updating. But what if your foreground object is not black but you need an auto-updating black shadow? Here's a recipe: unset the object's fill (it becomes black); create ''two'' clones of it; put one clone on top and paint any color you want; put the other clone at bottom, blur it and shift sideways. Now you can edit the unset-fill original (use Alt+click to select it) and everything will update. &lt;br /&gt;
&lt;br /&gt;
* If an object has a fill that you don't want to blur (e.g. pattern, or if it's a bitmap), but you just want to '''feather the edges''', use a blurred transparency mask. For this, copy the object; paint it white; blur it as needed; scale the blurred copy down so its blur margins are entirely within the original object; select both the original and the blurred mask; do Object &amp;gt; Mask &amp;gt; Set.&lt;br /&gt;
&lt;br /&gt;
* '''Transforming''' a blurred object '''transforms its blur''', too. This applies to a non-uniform scaling as well, so by squeezing a blurred object you make its blur squeezed as well. So, the easiest way to blur a path horizontally more than vertically is this: stretch it upwards without blur, then apply blur and squeeze it back into the original shape. (This only works if the stretched path does not already have a Transform attribute.)&lt;br /&gt;
&lt;br /&gt;
* You can combine '''blurring with gradients'''. For example, an ellipse with elliptic opacity gradient will look much softer and more natural when blurred. An object with a horizontal linear opacity gradient, when blurred, will look as if it's more blurred on its transparent side than on its opaque side.&lt;br /&gt;
&lt;br /&gt;
* A '''clone of a blurred object''' inherits the blur of the original. Therefore, such a clone can be blurred ''more'', but you can't &amp;quot;unblur&amp;quot; it to make the clone sharper than its original (unless, of course, you unlink it). The Fill and Stroke dialog shows you the amount of the blur applied to this particular object; however, if the object is a clone of an already blurred original, the dialog does not reflect that.&lt;br /&gt;
&lt;br /&gt;
* Note that '''Firefox 2.0''' does not support SVG filters, so your files will be displayed in Firefox 2.0 without blur. However, filter support has been added  in the current development version and will be included in Firefox 3.0. The Opera web browser, as well as librsvg (used by Wikipedia) and Batik, support filters correctly in their current versions.&lt;br /&gt;
&lt;br /&gt;
= Undo history =&lt;br /&gt;
&lt;br /&gt;
* Inkscape now features a &amp;lt;b&amp;gt;History Dialog&amp;lt;/b&amp;gt; accessible via &amp;lt;b&amp;gt;Ctrl+Shift+H&amp;lt;/b&amp;gt; or Edit &amp;amp;gt; Undo History. All changes made to the document since it was opened are recorded here.&lt;br /&gt;
&lt;br /&gt;
:* In the dialog, changes are listed from the '''oldest (top)''' to the '''newest (bottom)'''. &lt;br /&gt;
&lt;br /&gt;
:* The type of each change is indicated by an '''icon''' and a short '''description'''.&lt;br /&gt;
&lt;br /&gt;
:* For readability, consecutive changes of the same type are placed in a '''collapsible branch''' showing a triangle marker and the number of the hidden actions in the branch.&lt;br /&gt;
&lt;br /&gt;
:* By clicking on an event in the list, you can easily '''move through the undo history''', i.e. undo or redo any number of actions with one click.&lt;br /&gt;
&lt;br /&gt;
* The Undo and Redo commands in the Edit menu display the descriptions of the commands to be undone and redone, correspondingly. (These are the same descriptions that you see in the History dialog.)&lt;br /&gt;
&lt;br /&gt;
= Rendering improvements =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Interruptible display&amp;lt;/b&amp;gt;: Previously, Inkscape could not do anything until it finishes the current screen redraw. Now the redraw is made interruptible, so that Inkscape responds to mouse and keyboard input and can abort the current redraw and start over if you do some screen-changing operation. As a result, Inkscape now feels '''much snappier and more interactive'''. This interruptibility is fine-tuned for some continuous-drag operations (such as node dragging) so that a balance is achieved between responsiveness and completeness of display.&lt;br /&gt;
&lt;br /&gt;
* Screen render is faster by '''2-3%''' overall:&lt;br /&gt;
&lt;br /&gt;
:* Complex drawings with '''transparency''' are faster by up to '''5%'''.&lt;br /&gt;
&lt;br /&gt;
:* '''Radial gradients''' are rendered faster by at least '''10%'''.&lt;br /&gt;
&lt;br /&gt;
* Rendering (compositing) quality has been improved. This is most visible with (partially) transparent gradients: '''banding''' is a lot less pronounced now. Speed has also been improved in some cases.&lt;br /&gt;
&lt;br /&gt;
* Display is more responsive when working at high zoom levels when using a tablet.&lt;br /&gt;
&lt;br /&gt;
= Tools = &lt;br /&gt;
&lt;br /&gt;
== Node tool ==&lt;br /&gt;
&lt;br /&gt;
* You can &amp;lt;b&amp;gt;grow or shrink node selection&amp;lt;/b&amp;gt; by hovering the mouse pointer over a node and using &amp;lt;b&amp;gt;mousewheel&amp;lt;/b&amp;gt; (up = grow, down = shrink) or the keys &amp;lt;b&amp;gt;PageUp&amp;lt;/b&amp;gt; (grow) and &amp;lt;b&amp;gt;PageDown&amp;lt;/b&amp;gt; (shrink). ''Growing'' adds the closest unselected node to the selection; shrinking deselects the farthest selected node. There are two modes that differ by how the closest/farthest nodes are chosen:&lt;br /&gt;
&lt;br /&gt;
:* &amp;lt;b&amp;gt;Spatial selection&amp;lt;/b&amp;gt; (mousewheel, PageUp/PageDown): distances to nodes are measured directly, regardless of which subpath a node belongs to. &lt;br /&gt;
&lt;br /&gt;
:* &amp;lt;b&amp;gt;Linear selection&amp;lt;/b&amp;gt; (Ctrl+mousewheel, Ctrl+PageUp/Ctrl+PageDown): node distances are measured ''along the path'', and only the nodes belonging to the same subpath as the hovered node are considered (i.e. other subpaths are never selected).&lt;br /&gt;
&lt;br /&gt;
:This technique is convenient for quickly selecting an area in a complex path starting from a center - for example, for node sculpting.&lt;br /&gt;
&lt;br /&gt;
== Dropper ==&lt;br /&gt;
&lt;br /&gt;
* Instead of the confusing toggle button, now the Controls bar for the Dropper tool has two checkboxes, '''Pick alpha''' and '''Set alpha''', which work as follows. Suppose you have an object selected and, using Dropper, click on an object which has red (#FF0000) fill and 0.5 opacity (half-transparent).&lt;br /&gt;
&lt;br /&gt;
:* If the &amp;quot;Pick alpha&amp;quot; checkbox is off, the selected object will get the fill color #800000 (i.e. faded-out red) and fill opacity will be at 1.0 (opaque). &lt;br /&gt;
&lt;br /&gt;
:* If the &amp;quot;Pick alpha&amp;quot; checkbox is on but &amp;quot;Set alpha&amp;quot; is off, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 1.0. &lt;br /&gt;
&lt;br /&gt;
:* If both &amp;quot;Pick alpha&amp;quot; and &amp;quot;Set alpha&amp;quot; are on, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 0.5 (half-transparent). &lt;br /&gt;
&lt;br /&gt;
:If you Shift+click instead of click, the same changes will be made to stroke color and stroke opacity, correspondingly. Note that in no situation can Dropper change the ''master opacity'' of the selected object(s) (only the fill/stroke opacity), although it can pick it just as it does any other kind of opacity.&lt;br /&gt;
&lt;br /&gt;
== Calligraphy ==&lt;br /&gt;
&lt;br /&gt;
* A new numeric parameter, &amp;lt;b&amp;gt;Caps&amp;lt;/b&amp;gt;, controls the amount of protruding at the ends of calligraphic strokes. This parameter can range from 0 (flat caps, default behavior in previous versions) through 1 (approximately half-circle caps) and up to 5 (long elliptic caps). Rounded caps much improve the look of low-fixation strokes, simulating a rounded pen.  &lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Drag&amp;quot; parameter has been renamed to &amp;lt;b&amp;gt;Wiggle&amp;lt;/b&amp;gt; with a value inversion (i.e. low drag corresponds to high wiggle, and vice versa). Increase this parameter (default is 0) to make the pen waver and wiggle in curly patterns.&lt;br /&gt;
&lt;br /&gt;
* As a first step towards a redesign of the tools' controls, the '''Controls bar of the Calligraphy pen''' has been upgraded. Now it no longer prevents the Inkscape window from resizing narrower than the bar. The items on the far right end of the bar which didn't fit in a narrow window are still accessible through an '''expansion menu''' which allows you to toggle switches, select commands, and set values of numeric fields. Also, each editable numeric value field has a new '''right-click menu''' with some common values which often allows you to set a desired value much faster than by scrolling the control or typing the value into it.&lt;br /&gt;
&lt;br /&gt;
* With low or zero Fixation parameter, some users of tablet pens experienced &amp;quot;blobs&amp;quot; (brief reversals of a stroke's right/left edges, causing &amp;quot;holes&amp;quot; and &amp;quot;bubbles&amp;quot; in a calligraphic stroke), especially often at the start of a stroke. Hopefully this problem is now fixed without reducing the responsiveness of the tool.&lt;br /&gt;
&lt;br /&gt;
= Outline mode =&lt;br /&gt;
&lt;br /&gt;
* A new menu command (&amp;lt;b&amp;gt;View &amp;gt; Display Mode &amp;gt; Toggle&amp;lt;/b&amp;gt;) and a new keyboard shortcut (&amp;lt;b&amp;gt;Ctrl+&amp;amp;lt;keypad 5&amp;amp;gt;&amp;lt;/b&amp;gt;) switch the display mode from Normal to Outline and back.&lt;br /&gt;
&lt;br /&gt;
* The window title displays &amp;quot;&amp;lt;b&amp;gt;(outline)&amp;lt;/b&amp;gt;&amp;quot; next to the file name when that editing window is in Outline mode. &lt;br /&gt;
&lt;br /&gt;
* An object with &amp;lt;b&amp;gt;mask and/or clipping path&amp;lt;/b&amp;gt;, when viewed in Outline mode, now displays both the object itself and its clipping path and mask as objects, using different outline colors. By default, &amp;lt;b&amp;gt;clippaths use green&amp;lt;/b&amp;gt; outlines, and &amp;lt;b&amp;gt;masks use blue&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Images&amp;lt;/b&amp;gt; in Outline mode are displayed as &amp;lt;b&amp;gt;red&amp;lt;/b&amp;gt; (by default) frames with two diagonals.&lt;br /&gt;
&lt;br /&gt;
* An object with no fill and no stroke, invisible and not selectable by mouse clicking in normal mode, can now be &amp;lt;b&amp;gt;picked by a mouse click&amp;lt;/b&amp;gt; in the Outline mode using its visible outline.&lt;br /&gt;
&lt;br /&gt;
* The bug whereby stroked shapes didn't change stroke width when switching to Outline mode or back is fixed.&lt;br /&gt;
&lt;br /&gt;
* All outline colors are changeable by editing the &amp;quot;wireframecolors&amp;quot; group inside &amp;quot;options&amp;quot; in the preferences file (~/.inkscape/preferences.xml). The &amp;quot;onlight&amp;quot; and &amp;quot;ondark&amp;quot; attributes set the colors of the regular object outlines on light and dark backgrounds (default black and white correspondingly); the &amp;quot;images&amp;quot;, &amp;quot;clips&amp;quot;, and &amp;quot;masks&amp;quot; attributes set the colors of images, clipping paths, and masks (defaults are red, green, and blue correspondingly). Each attribute is a decimal integer corresponding to the hex RRGGBBAA of the color.  &lt;br /&gt;
&lt;br /&gt;
* To cater for specialized uses, such as preparing input for personal media cutters, Inkscape now has an option to start in the Outline mode upon launch. To enable this, add the following line to your preferences.xml file:&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;group id=&amp;quot;startmode&amp;quot; outline=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:placing it after the &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; opening tag.&lt;br /&gt;
&lt;br /&gt;
= Keyboard profiles =&lt;br /&gt;
&lt;br /&gt;
The previous release allowed sets of keybindings (keymaps) to be created for Inkscape in the style of other applications.  Two more keymaps have been added:  &lt;br /&gt;
&lt;br /&gt;
* '''Adobe Illustrator''' &lt;br /&gt;
* '''Macromedia Freehand'''&lt;br /&gt;
&lt;br /&gt;
Of course not every feature in these other programs has a direct match to features in Inkscape; so, if you can, please '''help us out''' by reporting any problems you may have or improvements you would like to request.&lt;br /&gt;
&lt;br /&gt;
Additionally, a keymap that focuses on tablet-based illustration and drawing work has been added:&lt;br /&gt;
&lt;br /&gt;
* '''right-handed-illustration.xml'''&lt;br /&gt;
&lt;br /&gt;
This keymap places all commonly-used commands under the left hand, so that the user's hands rarely leave the keyboard or the tablet/stylus.&lt;br /&gt;
&lt;br /&gt;
(To enable a profile, copy it into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; in the same directory, overwriting the old file. To restore the default Inkscape set, copy &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
More of Inkscape's keys are implemented as actions and are therefore available for remapping via keyboard profiles. New actions include '''EditSelectNext''' and '''EditSelectPrev''' for selecting next/previous object or node (by default, they are bound to Tab/Shift+Tab; as a result of becoming global actions, these keys now work in all tools and not only in Selector and Node tool as before).&lt;br /&gt;
&lt;br /&gt;
= Extension effects =&lt;br /&gt;
&lt;br /&gt;
Inkscape's extension effects, written in Python using the '''inkex''' utility class, are currently a major growth point of the project. They allow new developers to create functionality very quickly, without having to learn Inkscape's huge C/C++ codebase. However, eventually we plan to move many of these effects into the core of Inkscape, which will make them much faster and more interactive. From this viewpoint, effects can be considered a quick way to prototype and test the algorithms and UI controls of the future Inkscape features. However, this does not prevent effects from being genuinely useful in everyday work, and in this version we have several excellent additions. &lt;br /&gt;
&lt;br /&gt;
== New effects ==&lt;br /&gt;
&lt;br /&gt;
* '''Pattern along path''': A new powerful extension in the &amp;quot;Generate from path&amp;quot; submenu allows you to bend, repeat and/or stretch a pattern object (which can be a path or a group) along a &amp;quot;skeleton&amp;quot; path. This makes it easy to create a variety of patterned and shaped strokes. (This obsoletes the old &amp;quot;Kochify&amp;quot; extension which is removed.)&lt;br /&gt;
&lt;br /&gt;
:Effect's parameters include: &lt;br /&gt;
&lt;br /&gt;
:* ''Copies of the pattern'' selects one of the four modes: '''Single stretched''': one copy of the pattern is placed on the skeleton path and stretched/squeezed to match its length;  '''Repeated stretched''': as many copies as would fit are placed along the skeleton path and stretched to fit exactly; '''Single''' and '''Repeated''': same but without stretching.&lt;br /&gt;
&lt;br /&gt;
:* ''Deformation type'' can be one of: '''Snake''' bends the pattern flatly in the plane of the drawing, the width not depending on direction; '''Ribbon''' bends it as a vertical ribbon or like a calligraphic stroke with maximum fixation, so that width depends on direction (minimum for vertical parts of the stroke, maximum for horizontal).&lt;br /&gt;
&lt;br /&gt;
:* Several parameters allow you to adjust spacing between the copies of the pattern (for Multiple modes) and their offset in two directions (along the skeleton path and perpendicular to it).&lt;br /&gt;
&lt;br /&gt;
:* Normally the effect assumes that the pattern object is horizontal and bends its horizontal axis (at mid-height) along the skeleton path. There's a checkbox that allows you to use a '''vertical pattern''' instead. &lt;br /&gt;
&lt;br /&gt;
:Some examples of using this effect are shown on a screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.45-patternalongpath.png].&lt;br /&gt;
&lt;br /&gt;
* '''Color effects''': A new group of extensions in the '''Color''' submenu of the Effects menu allows you to adjust all colors of a selection at once. These commands affect both fill and stroke colors, including gradients (but not bitmaps). The commands include:&lt;br /&gt;
&lt;br /&gt;
:* a full set of '''HSL adjustments''' (increasing/decreasing hue, saturation, or lightness by 5%), &lt;br /&gt;
&lt;br /&gt;
:* '''Brighter''' and '''Darker''' (adjust brightness up or down by 10%), &lt;br /&gt;
&lt;br /&gt;
:* '''Desaturate''', &lt;br /&gt;
&lt;br /&gt;
:* '''Grayscale''', &lt;br /&gt;
&lt;br /&gt;
:* '''Negative''', &lt;br /&gt;
&lt;br /&gt;
:* commands for removing or swapping the '''Red''', '''Green''', '''Blue''' channels, &lt;br /&gt;
&lt;br /&gt;
:* a '''Custom''' command where you can set your own formulas for modifying the color channels. &lt;br /&gt;
&lt;br /&gt;
:Some examples of using this effect are shown on a screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.45-coloreffects.png].&lt;br /&gt;
&lt;br /&gt;
:Note: undoing color changes on gradients exposes a bug where an object seems to &amp;quot;disappear&amp;quot;; this is only a display issue (caused by the order in which gradients and their users are restored on undo) not causing any loss of information. Also, on large documents and large selections with gradients, Python's XPath code may get quite slow. Despite these shortcomings, we decided to add this extension, because it's genuinely useful functionality which was so far missing in Inkscape.&lt;br /&gt;
&lt;br /&gt;
* Recent fixes in the processing of SVG &amp;lt;defs /&amp;gt; have made it possible to implement the often requested '''Color Markers to Match Stroke''' effect. It is no longer necessary to hand-edit XML to recolor arrowheads; just change the stroke color of your path and call this effect to recolor its markers to match.&lt;br /&gt;
&lt;br /&gt;
* '''Lorem ipsum''' (in &amp;quot;Render&amp;quot; submenu) is a new extension that creates the traditional Latin-like random text for design mock-ups. The number of paragraphs, the number of sentences per paragraph and the possible fluctuation of the number of sentences (for uneven paragraphs) can be adjusted. If no flowed text element is selected, a new one in a new layer is created, matching the size of the canvas.&lt;br /&gt;
&lt;br /&gt;
* '''Fractalize''' (in &amp;quot;Modify Path&amp;quot; submenu) replaces each segment of the selected path by a crooked line, subdivided to the given depth, with randomly displaced nodes. &lt;br /&gt;
&lt;br /&gt;
* '''g2png''': The new group-to-PNG Python extension (g2png) is an easy way to export any group or layer to individual PNG files. It was first created for use in the [http://www.le-radar.com/?mm/inkscape Inkscape User Manual] (also available in SVN in the user_manual module) but is also interesting for many other uses. If e.g. you have to draw a set of icons, you can draw them in the same document, thus making copying, duplicating, cloning etc. easier. Then just create a group  for each icon, and with the extension, each group ends up in its own PNG file.&lt;br /&gt;
&lt;br /&gt;
== Improved effects ==&lt;br /&gt;
&lt;br /&gt;
* The '''Function Plotter''' has been extended, providing greater flexibility in x- and y-range definition. &lt;br /&gt;
&lt;br /&gt;
* The '''Measure Path''' extension is improved with several new parameters added (units, scale, precision, distance from path).&lt;br /&gt;
&lt;br /&gt;
* The '''Extract One Image''' extension is fixed to automatically append filename extension to the created bitmap file.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Blur Edge&amp;quot; extension is renamed into '''Inset/Outset Halo''' to avoid confusion with the real Gaussian blur that we now support, as well as to better describe what this extension actually does: From the selected path, it creates a group of inset and outset paths that form a stepped &amp;quot;halo&amp;quot; around the object. &lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
* '''3 new parameter types''' have been added to the extension effect UI: '''tabs''', '''enumerations''' and '''optiongroups''' (radio buttons). Examples are available of how to use these parameters in INX files: the new Function Plotter uses tabs; enumerations are used by the Pattern along path extension; and a small developer example is given to illustrate the use of optiongroups (identical to enumerations).&lt;br /&gt;
&lt;br /&gt;
* In an extension's INX file, you can specify &amp;lt;code&amp;gt;&amp;amp;lt;effects-menu hidden=&amp;quot;yes&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt; to hide that extension from the Effects menu. However, such a &amp;quot;hidden&amp;quot; extension can still be assigned a keyboard shortcut (by using its &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; as an &amp;quot;action&amp;quot; in your &amp;lt;code&amp;gt;~/.inkscape/keys/default.xml&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* In an extension's INX file, you can add &amp;lt;code&amp;gt;needs-document=&amp;quot;no&amp;quot;&amp;lt;/code&amp;gt; attribute to the &amp;lt;code&amp;gt;&amp;amp;lt;effect&amp;amp;gt;&amp;lt;/code&amp;gt; element. This indicates that the extension does not process the current SVG document, and Inkscape will not bother saving and restoring the document from a temporary file which allows this extension to run faster and smoother. (This is used for the new open-in-default-browser Help menu commands which are technically implemented as extensions.)&lt;br /&gt;
&lt;br /&gt;
= Export formats =&lt;br /&gt;
&lt;br /&gt;
== AI import/export ==&lt;br /&gt;
&lt;br /&gt;
* We only support AI import and export for Adobe Illustrator 8.0 and older.  This has been clarified in the Open and Save As lists.&lt;br /&gt;
&lt;br /&gt;
== PDF export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape's PDF exporter has been improved:&lt;br /&gt;
&lt;br /&gt;
* '''New features:''' bitmap images can be embedded; PDF files can be exported from command line using the &amp;lt;code&amp;gt;--export-pdf&amp;lt;/code&amp;gt; parameter. &lt;br /&gt;
&lt;br /&gt;
* '''Changed behavior:''' the pointless text to path question is gone. &lt;br /&gt;
&lt;br /&gt;
* '''Fixed bugs:''' save failure is now detected, miter limits are now &amp;gt;= 1, PDFs with transparent gradient are now embeddable, eccentric elliptic gradients fixed, dash style inheritance fixed, transparency inheritance fixed.&lt;br /&gt;
&lt;br /&gt;
== PS/EPS export ==&lt;br /&gt;
&lt;br /&gt;
There's a new option to &amp;lt;b&amp;gt;embed the fonts&amp;lt;/b&amp;gt; used in the document in the PS or EPS exported file. As of now, this works for &amp;lt;b&amp;gt;Type 1 fonts only&amp;lt;/b&amp;gt;, not TrueType. The option is available when performing the export from the GUI as well as from the command line via the &amp;lt;code&amp;gt;--export-embed-fonts&amp;lt;/code&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
== EMF export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape has a limited support for exporting &amp;lt;b&amp;gt;EMF&amp;lt;/b&amp;gt; (Enhanced Meta File) format. This works &amp;lt;b&amp;gt;only on Windows&amp;lt;/b&amp;gt;, and only exports strokes and fills with constant colors. No text, no images, no gradients, no transparency.&lt;br /&gt;
&lt;br /&gt;
= SVG output =&lt;br /&gt;
&lt;br /&gt;
For specialized uses, several aspects of Inkscape's SVG output can now be customized via editing the preferences.xml file (there's no UI for these options). A &amp;lt;group id=&amp;quot;&amp;lt;b&amp;gt;svgoutput&amp;lt;/b&amp;gt;&amp;quot;&amp;gt; inside &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; can have the following attributes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;usenamedcolors&amp;lt;/b&amp;gt; (default is 0). If nonzero, Inkscape uses symbolic color names (such as &amp;quot;white&amp;quot; or &amp;quot;lime&amp;quot;) and three-digit color designations (such as $dfe) where appropriate; otherwise, it always uses six-digit colors (such as $d0f0e0). Note that in 0.44, the default was to use named colors, which created problems for some extension effects.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;numericprecision&amp;lt;/b&amp;gt; (default is 8). This is the number of significant digits written for each number into SVG. You can lower this number to get slightly more compact SVG at the expense of precision.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;minimumexponent&amp;lt;/b&amp;gt; (default is -8). In transform= attributes, any number whose absolute value is less than 10 to the power of minimumexponent (i.e. less than 10&amp;lt;sup&amp;gt;-8&amp;lt;/sup&amp;gt; by default) is written as 0.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;indent&amp;lt;/b&amp;gt; (default is 2) controls the number of spaces that each level of nesting in SVG is shifted. Set this to 0 to disable indentation.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;inlineattrs&amp;lt;/b&amp;gt; (default is 0). If nonzero, attributes are placed on the same line as their tags; otherwise they are separated by newlines.&lt;br /&gt;
&lt;br /&gt;
= Bitmap tracing =&lt;br /&gt;
&lt;br /&gt;
* A '''new color quantization algorithm''' for multiscan traces works faster (especially for large numbers of colors) and gives more adequate results with less colors used. This improves tracing results both for full-color photographs and for limited-color drawings. &lt;br /&gt;
&lt;br /&gt;
* The Trace Bitmap dialog now provides access to three more tracing parameters:&lt;br /&gt;
&lt;br /&gt;
:* '''Suppress speckles''': If set, spots or speckles larger than the given size (in pixels) are suppressed in the trace.&lt;br /&gt;
&lt;br /&gt;
:* '''Smooth corners''': This parameter controls how much smoothing is applied to corners in the traced path.&lt;br /&gt;
&lt;br /&gt;
:* '''Optimize paths''': If set, trace paths are optimized by joining adjacent Bezier segments with the given tolerance.&lt;br /&gt;
&lt;br /&gt;
* All controls in the Trace Bitmap dialog are reorganized to be easier to find. The dialog is redesigned to use two main tabs: '''Mode''' (where you select the tracing mode, such as brightness cutoff or color multiscan) and '''Options''' (where you set various tracing options, such as corner smoothing). The preview is placed horizontally to the right of the tabs. Most labels and tooltips are rewritten for clarity. The trace preview image is made twice larger.&lt;br /&gt;
&lt;br /&gt;
= Even more improvements =&lt;br /&gt;
&lt;br /&gt;
* The '''opacity''' of objects is now displayed as percentage, '''from 0 to 100''', both in the Fill &amp;amp; Stroke dialog (with one fractional digit) and in the statusbar style indicator (with no fractional digits), instead of from 0 to 1.0 as before. This makes opacity values easier to read, type, and say.&lt;br /&gt;
&lt;br /&gt;
* A '''Save a copy''' command has been added to the file menu, similar to the 'Save a copy' functionality of e.g. Adobe Illustrator. With this command, you can save your document under a new filename, but Inkscape will then &amp;quot;forget&amp;quot; it has done this: later saves will be to the old filename. The default shortcut assigned to this function is '''Shift+Ctrl+Alt+S'''.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Text and flowed text objects&amp;lt;/b&amp;gt; behave more consistently. Now you can put a flowed text on path or (re)flow it into a shape just as you would do with a regular (unflowed) text. Previously, the need to convert a flowed text to text before these operations was a stumble for many users.&lt;br /&gt;
&lt;br /&gt;
* Several commands were added to the '''Help menu''', providing the long-missing access to basic information about Inkscape and SVG right from the program: [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/index.php Inkscape manual], [http://inkscape.org/doc/inkscape-man.html Command line options], [http://wiki.inkscape.org/wiki/index.php/FAQ FAQ], Release notes, [http://inkscape.org/report_bugs.php Bug report page], and the [http://www.w3.org/TR/SVG11/ SVG 1.1 specification]. All these commands open the corresponding web pages in the user's default web browser. &lt;br /&gt;
&lt;br /&gt;
* Exported PNG images have the correct '''resolution''' set in the header.&lt;br /&gt;
&lt;br /&gt;
* The Path -&amp;gt; '''Union''' (Ctrl++) operation now functions when only a '''single object''' is selected. Use this to '''remove self-intersections''' in path objects.&lt;br /&gt;
&lt;br /&gt;
* We removed the &amp;quot;hacked&amp;quot; '''filename entry field''' that we had added to the Open and Save dialogs because starting from version 2.10, GTK+ has finally restored this field in their '''standard file dialog'''. The standard field at the top of the dialog supports type-ahead find and performs the default dialog action (open or save) by pressing Enter, which means you can now do a quick '''Ctrl+O, Ctrl+V, Enter''' sequence to open the file whose path is in your clipboard (this closes a long-standing usability bug). Those who use older versions of GTK are advised either to upgrade to 2.10 or use Ctrl+L to open a pop-up filename box. (Our Windows builds are shipped with GTK+ 2.10.)&lt;br /&gt;
&lt;br /&gt;
* The '''Create Bitmap''' function (Alt+B in the default keymap) is made more useful. Unless you have specific resolution or minimum size set for this command in preferences.xml (&amp;lt;code&amp;gt;&amp;amp;lt;group id=&amp;quot;createbitmap&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt;), it will take the '''resolution hint''' from the object whose bitmap copy you are creating (in other words, it will use the resolution that you specified for that object when exporting it via the Export Bitmap dialog), or the default '''90 dpi''' if that object was not yet exported. Also, a 90 dpi bitmap (with its pixels exactly 1 px in size) will be '''snapped''' to the pixel grid. This makes it easy to use Create Bitmap for quick '''rasterization preview''' of an object or document. (Note: if you have used a previous version of Inkscape, your preferences.xml may contain &amp;lt;code&amp;gt;minsize=&amp;quot;250&amp;quot;&amp;lt;/code&amp;gt;; delete this for objects' resolution hints to work.)&lt;br /&gt;
&lt;br /&gt;
* Using extended input (i.e. tablet pressure and tilt) can now be disabled via Preferences (Misc tab). This is intended to be a last-resort option for those platform/hardware combinations that are not properly supported by GTK. With extended input disabled, you can still use your tablet as a mouse. &lt;br /&gt;
&lt;br /&gt;
* Simplify Path now has two modes when working with a group of paths:  the default mode, which treats all of the paths as one large object to simplify, or the new mode, which acts the same as using Simplify on each path in a group separately.  In preferences.xml, set '''options.simplifyindividualpaths''' to 1 to get the new mode.&lt;br /&gt;
&lt;br /&gt;
* For long Simplify operations (more than 20 paths at a time), Inkscape provides user feedback via the status bar as to how many paths have been simplified.  This change also prevents Inkscape from appearing to have locked up during the operation.&lt;br /&gt;
&lt;br /&gt;
* New '''templates''' added for '''video formats''' (PAL, NTSC and HDTV 1080) as well as DVD cover templates that were not installed in the previous version. This will help video and DVD authoring with Inkscape. The business card 85&amp;amp;times;54 template is now installed as well.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Other&amp;quot; license type was added to the metadata/license dialog so that people know that they are entering a URI to an &amp;quot;other&amp;quot; license.&lt;br /&gt;
&lt;br /&gt;
= Examples = &lt;br /&gt;
&lt;br /&gt;
* With all the recent additions - clipping, masking, and especially blur - Inkscape is now able to produce extremely photorealistic art. In the share/examples folder in Inkscape distribution, you will find two brand new, stunningly realistic images of shiny cars: &amp;lt;b&amp;gt;car.svgz&amp;lt;/b&amp;gt; by Konstantin Rotkevich and &amp;lt;b&amp;gt;gallardo.svgz&amp;lt;/b&amp;gt; by Michael Grosberg.&lt;br /&gt;
&lt;br /&gt;
* Inkscape 0.45 does not yet have gradient meshes. But with the addition of Gaussian Blur, this feature suddenly got within reach. A new example file, &amp;lt;b&amp;gt;gradient-mesh-experimental.svgz&amp;lt;/b&amp;gt;, explains the approach Inkscape will likely take to implement this feature in a fully SVG-compatible way.&lt;br /&gt;
&lt;br /&gt;
* Although Inkscape does not support animation yet, you can add any animation scripts and attributes to your SVG file manually in a text editor - and the file will still be editable in Inkscape. Tavmjong Bah used this technique to create  &amp;lt;b&amp;gt;animated-clock.svg&amp;lt;/b&amp;gt; which, when loaded in an SVG viewer supporting animation (such as Firefox, Opera, or Batik), demonstrates the intricate moving clockwork of a watch - and shows real time to boot! If loaded in Inkscape, the image is static, but instead you can freely edit any of the objects.&lt;br /&gt;
&lt;br /&gt;
= Translations, tutorials, templates =&lt;br /&gt;
&lt;br /&gt;
* Remarkable improvements are in the '''Danish''', '''Finnish''', '''Nepalese''' and the '''Vietnamese''' translations of the user interface. They all jumped from 0 to over 90 percent in a very short timespan.&lt;br /&gt;
&lt;br /&gt;
* All people which are familiar with '''pig latin''' are now able to use Inkscape's user interface in that language. Isthay isway oughtbray otay usway ybay away ewnay anslatortray.&lt;br /&gt;
&lt;br /&gt;
* Updated '''British English''', '''Catalan''', '''Czech''', '''Bulgarian''', '''French''', '''Danish''', '''Finnish''', '''German''', '''Brazilian Portuguese''' and '''Thai''', '''Vietnamese''' and '''Dzongkha''' translations.&lt;br /&gt;
&lt;br /&gt;
* A new Esperanto translation added including default document template.&lt;br /&gt;
&lt;br /&gt;
* Default Lithuanian template was not installed before, which is now fixed.&lt;br /&gt;
&lt;br /&gt;
* New tutorial &amp;quot;Easter Eggs&amp;quot; by Steve Karg.&lt;br /&gt;
&lt;br /&gt;
* Added Catalan default template and elements tutorial.&lt;br /&gt;
&lt;br /&gt;
* Russian header and footer templates for tutorials are added.&lt;br /&gt;
&lt;br /&gt;
* Several tutorial translations were updated, namely '''Catalan''', '''Brazilian Portuguese''', '''Russian''', '''German''', '''Danish''' and '''French'''.&lt;br /&gt;
&lt;br /&gt;
* There are also new Russian and Japanese translations of Windows installer strings.&lt;br /&gt;
&lt;br /&gt;
= Dependency changes =&lt;br /&gt;
&lt;br /&gt;
* We have changed the '''GTK+''' requirement for compilation to version 2.8. However, it is highly recommended to use at least the version '''2.10.7''' because previous versions contain at least one crash bug which may cause Inkscape to crash after typing in a value into a spinbutton.&lt;br /&gt;
&lt;br /&gt;
= Notable bugfixes =&lt;br /&gt;
&lt;br /&gt;
* When deleting a node, neighboring smooth nodes are converted to cusp.&lt;br /&gt;
&lt;br /&gt;
* Releasing the mouse button while dragging nodes using a tablet will now always release the nodes.  Before this, a race condition could occur where dragging could continue after the mouse button was released.&lt;br /&gt;
&lt;br /&gt;
* An object's mask and clipping path are now preserved after Simplify, Object/Stroke to path, or boolean operations.&lt;br /&gt;
&lt;br /&gt;
* Ungrouping a group containing clipped/masked objects might sometime break the clip/mask (move it away); this is fixed.&lt;br /&gt;
&lt;br /&gt;
* Transforming an object and its clone no longer behaves unexpectedly when they are both within a transformed group. &lt;br /&gt;
&lt;br /&gt;
* User-supplied templates in ~/.inkscape/templates can now be SVGZ files in addition to SVG.&lt;br /&gt;
&lt;br /&gt;
* Previously, Inkscape didn't check if there's enough free memory for its pixel buffers and could crash without warning due to insufficient memory e.g. upon zooming in. This problem became much worse after implementing Gaussian blur, because rendering blurred objects at high zooms may require a pixel buffer much bigger than the visible canvas. Now this situation is handled more gracefully: if a display operation requires more memory than available, or more than 100Mb (which corresponds to a 5000x5000 pixel buffer), it is skipped. This may result in blurred objects &amp;quot;disappearing&amp;quot; at high zooms. This is purely a display issue, however, and it never corrupts data; just zoom out (or reduce blur radius) and the disappeared object will show up OK.&lt;br /&gt;
&lt;br /&gt;
* When resizing objects, scaling numbers in the statusbar are no longer overwritten by other text when pressing the modifier keys (Alt, Shift, Ctrl).&lt;br /&gt;
&lt;br /&gt;
* To work around problems some users had with pressure-sensitive tablets ([http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1281512&amp;amp;group_id=93438&amp;amp;atid=604306 bug 1281512]), the pressure sensitivity can be disabled from the Misc tab of Inkscape Preferences dialog. After that, the tablet can still be used as a regular mouse. &lt;br /&gt;
&lt;br /&gt;
* The layer widget in the statusbar used to lose its current layer after an effect run; this is fixed.&lt;br /&gt;
&lt;br /&gt;
* When using different display resolutions or a dual screen setup, dialogs could be displayed off-screen; this is fixed: now Inkscape checks whether the saved position of the dialog is offscreen, if so it will move the dialog to the center of the screen. Note that this not solve all problems. If the dialog is still not visible, go to the [http://sourceforge.net/tracker/?func=detail&amp;amp;atid=604306&amp;amp;aid=1250236&amp;amp;group_id=93438 bug 1250236] where a procedure is given to make the dialog visible (by editing preferences.xml).&lt;br /&gt;
&lt;br /&gt;
* Grid and guidelines no longer vanish when changing their color.&lt;br /&gt;
&lt;br /&gt;
* Group transformation is now correctly re-applied when ungrouping and then undoing the ungroup operation.&lt;br /&gt;
&lt;br /&gt;
* Text dialog no longer discards the style of the selected text.&lt;br /&gt;
&lt;br /&gt;
* Inkscape no longer crashes when you try to unflow an empty flowed text.&lt;br /&gt;
&lt;br /&gt;
* Thanks to patches submitted by users of our community, Inkscape can now be built on SGI IRIX 6.5.28, gcc 3.4.0 systems and on Tru64 systems.&lt;br /&gt;
&lt;br /&gt;
= Known problems =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problem with &amp;quot;Dialogs on Top&amp;quot; on Windows ====&lt;br /&gt;
&lt;br /&gt;
* Although the &amp;quot;Dialogs on Top&amp;quot; option is now available on Windows (File &amp;gt; Inkscape Preferences &amp;gt; Windows), it does not work exactly as it should (yet!). When the document window is minimized, the dialogs remain visible, i.e. are not minimized together with the document window. Because of this, it is not possible to get the document window back by clicking its taskbar button. A workaround to this problem is to '''right-click the Inkscape taskbar button and select &amp;quot;Restore&amp;quot;.''' We expect that future releases of GTK will solve this problem.&lt;br /&gt;
&lt;br /&gt;
==== Spinbuttons may crash if you have GTK+ older than 2.10.7 ====&lt;br /&gt;
&lt;br /&gt;
* You may experience crashes after typing in a value into a spinbutton if you have a version of GTK+ 2.10.6 or older. Upgrade your GTK+ to fix this. (This does not affect the Windows package as it comes with GTK+ 2.10.9.)&lt;br /&gt;
&lt;br /&gt;
==== Numerical Python required for Perspective effect ====&lt;br /&gt;
&lt;br /&gt;
* This effect will not work until you install a python module called '''numpy''' (Numerical Python). It can be downloaded at [http://numpy.scipy.org/ numpy.scipy.org]. The Windows package already contains this module.&lt;br /&gt;
&lt;br /&gt;
==== Do not use a clone of an object as its clipping path/mask ====&lt;br /&gt;
&lt;br /&gt;
* In this version, you cannot use an object's clone as its clipping path or mask. Either unlink the clone first, or clip one clone of a source object (not the source itself) by another clone of the same. Properly fixing this bug requires some deep changes in the code and therefore was postponed until after 0.45 so as not to delay the release.&lt;br /&gt;
&lt;br /&gt;
==== Non-Unicode symbol fonts on Windows don't work ====&lt;br /&gt;
&lt;br /&gt;
* On Windows, symbol fonts without a Unicode map do not work. This is a limitation of the Pango library that we use.&lt;br /&gt;
&lt;br /&gt;
==== Problems with some Debian libgc-6.7 packages ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape will hang or crash when linked with the first Debian packaged version of the Boehm garbage collection library. This problem was fixed in version 1:6.7-2  of the package.  If you have libgc 6.7 on your Debian-based system, make sure that you are using that version of the package or later.&lt;br /&gt;
&lt;br /&gt;
==== Beware of defective themes on Linux ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape and other Gtk programs can crash on any Linux, when the &amp;lt;b&amp;gt;gtk2-engines-smooth / libsmooth&amp;lt;/b&amp;gt; package is installed. We have filed a bug against libsmooth which is now in gtk-engine and part of gnome. Removing the package resolves the problem. Update: this bug appears to be fixed in newer versions of gtk-engines. If you are affected by this problem please update to a newer version of gtk-engines. If problems persist then please inform the gtk-engines maintainers of the problem. &lt;br /&gt;
&lt;br /&gt;
* A similar crash happens if the &amp;lt;b&amp;gt;KDE Baghira&amp;lt;/b&amp;gt; theme or the package &amp;lt;b&amp;gt;gtk_qt_engine&amp;lt;/b&amp;gt; are installed. If you experience Inkscape crashes on KDE, please try to install a different theme from Baghira, or uninstall the gtk_qt_engine package from your system. Both problems also affect older versions of Inkscape.&lt;br /&gt;
&lt;br /&gt;
= Previous releases =&lt;br /&gt;
&lt;br /&gt;
* [[ReleaseNotes044]]&lt;br /&gt;
* [[ReleaseNotes043]]&lt;br /&gt;
* [[ReleaseNotes042]]&lt;br /&gt;
* [[ReleaseNotes041]]&lt;br /&gt;
* [[ReleaseNotes040]]&lt;br /&gt;
* [[ReleaseNotes039]]&lt;br /&gt;
* [[ReleaseNotes038]]&lt;br /&gt;
* [[ReleaseNotes037]]&lt;br /&gt;
* [[ReleaseNotes036]]&lt;br /&gt;
* [[ReleaseNotes035]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Marketing]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=13734</id>
		<title>Release notes/0.45</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=13734"/>
		<updated>2007-03-01T02:50:45Z</updated>

		<summary type="html">&lt;p&gt;Acspike: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Inkscape 0.45.1 changes with respect to 0.45 =&lt;br /&gt;
&lt;br /&gt;
= Inkscape 0.45: overview =&lt;br /&gt;
&lt;br /&gt;
This release brings the exciting new features developed by the Google Summer of Code 2006 participants, as well as tons of other improvements across the board. Here are the highlights:&lt;br /&gt;
&lt;br /&gt;
* '''Gaussian blur''' is the first SVG filter supported by Inkscape. You can blur any object to any extent - yet it remains vector and fully editable. This gives a huge boost to Inkscape as a creative art tool.&lt;br /&gt;
&lt;br /&gt;
* '''Display speed and interactivity''': not only does Inkscape render faster, but it can now respond to user input before it finished redrawing the screen, which greatly improves the responsiveness (perceived speed or interactivity) of the program.&lt;br /&gt;
&lt;br /&gt;
* '''History dialog''' makes it easy to to review your editing session and jump to any step of it, undoing and redoing multiple actions with one click.&lt;br /&gt;
&lt;br /&gt;
* Several important tool features are added, notably the new selection mode in '''Node tool''' and the adjustable rounded caps in '''Calligraphic pen'''.&lt;br /&gt;
&lt;br /&gt;
* '''Bitmap tracing''' works better for multi-color traces, sports a redesigned dialog and several new options.&lt;br /&gt;
&lt;br /&gt;
* Many new '''extension effects''' are added, including '''Color effects''' and '''Pattern along path'''. &lt;br /&gt;
&lt;br /&gt;
* The '''Outline mode''' has got many fixes and improvements, including a keyboard shortcut.&lt;br /&gt;
&lt;br /&gt;
* Several new commands in '''Help''' menu open various Inkscape-related pages in your default browser, making Inkscape reference information more accessible as you work. &lt;br /&gt;
&lt;br /&gt;
* Dozens of smaller '''features''' are added throughout the program, and hundreds of '''bugs''' are fixed.&lt;br /&gt;
&lt;br /&gt;
= SVG filters: Gaussian blur =&lt;br /&gt;
&lt;br /&gt;
Thanks to Google's Summer of Code program, Inkscape now has basic support for [http://www.w3.org/TR/SVG11/filters.html SVG filters]. The only filter enabled so far is '''Gaussian blur'''. &lt;br /&gt;
&lt;br /&gt;
With it, you can softly and naturally blur any Inkscape objects: paths, shapes, groups, text, images. Clones inherit blurring from their original, but they can also be blurred independently from the original (you can create blurred clones with Tile Clones, too). Both the fill and stroke of an object are blurred together, creating semitransparent margins that smoothly blend into the background. &lt;br /&gt;
&lt;br /&gt;
Gaussian blur enables a wide range of photorealistic effects: arbitrarily shaped shades and lights, depth of field, drop shadows, glows, etc. Also, blurred objects can be used as masks for other objects to achieve the &amp;quot;feathered mask&amp;quot; effect.&lt;br /&gt;
&lt;br /&gt;
* To blur selected objects, open the Fill and Stroke dialog (Ctrl+Shift+F) and use the '''Blur''' slider. The blur value is a percentage, with 100% corresponding to a blurring radius (standard deviation of Gaussian function) of 1/8 of the object's bounding box' perimeter (that is, for a square, a blur of 100% will have the radius equal to half a side, which turns any shape into an amorphous cloud). &lt;br /&gt;
&lt;br /&gt;
* The '''Tile Clones''' dialog also supports blurring. On the '''Blur &amp;amp; opacity''' tab, you can set the blur percentage per row or per column of your tiling, as well as randomize blurring and make it alternate (all the same options as for Opacity).&lt;br /&gt;
&lt;br /&gt;
* The quality of on-screen blur display is controlled by the '''Blur quality''' option on the new '''Filters''' tab of Inkscape Preferences (Ctrl+Shift+P). The available options range from best quality/slowest display to worst quality/fastest display, the default being in the middle of the range. Any setting except the &amp;quot;best quality&amp;quot; may introduce some rendering artifacts, especially when blurring thin strokes; on the other hand, the &amp;quot;best quality&amp;quot; setting may make Inkscape extremely slow at high zooms. These settings only affect the screen display of blurred objects; bitmap export always uses the best quality (and may therefore become quite slow for images with a lot of blur).&lt;br /&gt;
&lt;br /&gt;
Here are a few tips on using blur:&lt;br /&gt;
&lt;br /&gt;
* '''Masks and clipping''' are applied ''after'' blur. That is, if you clip an object and then blur it (or blur it first and then clip - it makes no difference), the clipped edges will remain crisp. Often, this is what you want. If, however, you want to blur the clipped/masked edges too (possibly with a different radius), you can use grouping: group the clipped object with some other object (which you can then delete from the group) and blur the group.&lt;br /&gt;
&lt;br /&gt;
* A simple '''drop shadow''' is now very easy to do: just copy the object, paint the copy black, blur it, shift away a bit and lower it to the bottom. However, such a shadow does not update when you edit the foreground object. If your object is already black (or, more generally, if you want the shadow to be the same color as the object), you can clone instead of copy to make the shadow auto-updating. But what if your foreground object is not black but you need an auto-updating black shadow? Here's a recipe: unset the object's fill (it becomes black); create ''two'' clones of it; put one clone on top and paint any color you want; put the other clone at bottom, blur it and shift sideways. Now you can edit the unset-fill original (use Alt+click to select it) and everything will update. &lt;br /&gt;
&lt;br /&gt;
* If an object has a fill that you don't want to blur (e.g. pattern, or if it's a bitmap), but you just want to '''feather the edges''', use a blurred transparency mask. For this, copy the object; paint it white; blur it as needed; scale the blurred copy down so its blur margins are entirely within the original object; select both the original and the blurred mask; do Object &amp;gt; Mask &amp;gt; Set.&lt;br /&gt;
&lt;br /&gt;
* '''Transforming''' a blurred object '''transforms its blur''', too. This applies to a non-uniform scaling as well, so by squeezing a blurred object you make its blur squeezed as well. So, the easiest way to blur a path horizontally more than vertically is this: stretch it upwards without blur, then apply blur and squeeze it back into the original shape. (This only works if the stretched path does not already have a Transform attribute.)&lt;br /&gt;
&lt;br /&gt;
* You can combine '''blurring with gradients'''. For example, an ellipse with elliptic opacity gradient will look much softer and more natural when blurred. An object with a horizontal linear opacity gradient, when blurred, will look as if it's more blurred on its transparent side than on its opaque side.&lt;br /&gt;
&lt;br /&gt;
* A '''clone of a blurred object''' inherits the blur of the original. Therefore, such a clone can be blurred ''more'', but you can't &amp;quot;unblur&amp;quot; it to make the clone sharper than its original (unless, of course, you unlink it). The Fill and Stroke dialog shows you the amount of the blur applied to this particular object; however, if the object is a clone of an already blurred original, the dialog does not reflect that.&lt;br /&gt;
&lt;br /&gt;
* Note that '''Firefox 2.0''' does not support SVG filters, so your files will be displayed in Firefox 2.0 without blur. However, filter support has been added  in the current development version and will be included in Firefox 3.0. The Opera web browser, as well as librsvg (used by Wikipedia) and Batik, support filters correctly in their current versions.&lt;br /&gt;
&lt;br /&gt;
= Undo history =&lt;br /&gt;
&lt;br /&gt;
* Inkscape now features a &amp;lt;b&amp;gt;History Dialog&amp;lt;/b&amp;gt; accessible via &amp;lt;b&amp;gt;Ctrl+Shift+H&amp;lt;/b&amp;gt; or Edit &amp;amp;gt; Undo History. All changes made to the document since it was opened are recorded here.&lt;br /&gt;
&lt;br /&gt;
:* In the dialog, changes are listed from the '''oldest (top)''' to the '''newest (bottom)'''. &lt;br /&gt;
&lt;br /&gt;
:* The type of each change is indicated by an '''icon''' and a short '''description'''.&lt;br /&gt;
&lt;br /&gt;
:* For readability, consecutive changes of the same type are placed in a '''collapsible branch''' showing a triangle marker and the number of the hidden actions in the branch.&lt;br /&gt;
&lt;br /&gt;
:* By clicking on an event in the list, you can easily '''move through the undo history''', i.e. undo or redo any number of actions with one click.&lt;br /&gt;
&lt;br /&gt;
* The Undo and Redo commands in the Edit menu display the descriptions of the commands to be undone and redone, correspondingly. (These are the same descriptions that you see in the History dialog.)&lt;br /&gt;
&lt;br /&gt;
= Rendering improvements =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Interruptible display&amp;lt;/b&amp;gt;: Previously, Inkscape could not do anything until it finishes the current screen redraw. Now the redraw is made interruptible, so that Inkscape responds to mouse and keyboard input and can abort the current redraw and start over if you do some screen-changing operation. As a result, Inkscape now feels '''much snappier and more interactive'''. This interruptibility is fine-tuned for some continuous-drag operations (such as node dragging) so that a balance is achieved between responsiveness and completeness of display.&lt;br /&gt;
&lt;br /&gt;
* Screen render is faster by '''2-3%''' overall:&lt;br /&gt;
&lt;br /&gt;
:* Complex drawings with '''transparency''' are faster by up to '''5%'''.&lt;br /&gt;
&lt;br /&gt;
:* '''Radial gradients''' are rendered faster by at least '''10%'''.&lt;br /&gt;
&lt;br /&gt;
* Rendering (compositing) quality has been improved. This is most visible with (partially) transparent gradients: '''banding''' is a lot less pronounced now. Speed has also been improved in some cases.&lt;br /&gt;
&lt;br /&gt;
* Display is more responsive when working at high zoom levels when using a tablet.&lt;br /&gt;
&lt;br /&gt;
= Tools = &lt;br /&gt;
&lt;br /&gt;
== Node tool ==&lt;br /&gt;
&lt;br /&gt;
* You can &amp;lt;b&amp;gt;grow or shrink node selection&amp;lt;/b&amp;gt; by hovering the mouse pointer over a node and using &amp;lt;b&amp;gt;mousewheel&amp;lt;/b&amp;gt; (up = grow, down = shrink) or the keys &amp;lt;b&amp;gt;PageUp&amp;lt;/b&amp;gt; (grow) and &amp;lt;b&amp;gt;PageDown&amp;lt;/b&amp;gt; (shrink). ''Growing'' adds the closest unselected node to the selection; shrinking deselects the farthest selected node. There are two modes that differ by how the closest/farthest nodes are chosen:&lt;br /&gt;
&lt;br /&gt;
:* &amp;lt;b&amp;gt;Spatial selection&amp;lt;/b&amp;gt; (mousewheel, PageUp/PageDown): distances to nodes are measured directly, regardless of which subpath a node belongs to. &lt;br /&gt;
&lt;br /&gt;
:* &amp;lt;b&amp;gt;Linear selection&amp;lt;/b&amp;gt; (Ctrl+mousewheel, Ctrl+PageUp/Ctrl+PageDown): node distances are measured ''along the path'', and only the nodes belonging to the same subpath as the hovered node are considered (i.e. other subpaths are never selected).&lt;br /&gt;
&lt;br /&gt;
:This technique is convenient for quickly selecting an area in a complex path starting from a center - for example, for node sculpting.&lt;br /&gt;
&lt;br /&gt;
== Dropper ==&lt;br /&gt;
&lt;br /&gt;
* Instead of the confusing toggle button, now the Controls bar for the Dropper tool has two checkboxes, '''Pick alpha''' and '''Set alpha''', which work as follows. Suppose you have an object selected and, using Dropper, click on an object which has red (#FF0000) fill and 0.5 opacity (half-transparent).&lt;br /&gt;
&lt;br /&gt;
:* If the &amp;quot;Pick alpha&amp;quot; checkbox is off, the selected object will get the fill color #800000 (i.e. faded-out red) and fill opacity will be at 1.0 (opaque). &lt;br /&gt;
&lt;br /&gt;
:* If the &amp;quot;Pick alpha&amp;quot; checkbox is on but &amp;quot;Set alpha&amp;quot; is off, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 1.0. &lt;br /&gt;
&lt;br /&gt;
:* If both &amp;quot;Pick alpha&amp;quot; and &amp;quot;Set alpha&amp;quot; are on, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 0.5 (half-transparent). &lt;br /&gt;
&lt;br /&gt;
:If you Shift+click instead of click, the same changes will be made to stroke color and stroke opacity, correspondingly. Note that in no situation can Dropper change the ''master opacity'' of the selected object(s) (only the fill/stroke opacity), although it can pick it just as it does any other kind of opacity.&lt;br /&gt;
&lt;br /&gt;
== Calligraphy ==&lt;br /&gt;
&lt;br /&gt;
* A new numeric parameter, &amp;lt;b&amp;gt;Caps&amp;lt;/b&amp;gt;, controls the amount of protruding at the ends of calligraphic strokes. This parameter can range from 0 (flat caps, default behavior in previous versions) through 1 (approximately half-circle caps) and up to 5 (long elliptic caps). Rounded caps much improve the look of low-fixation strokes, simulating a rounded pen.  &lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Drag&amp;quot; parameter has been renamed to &amp;lt;b&amp;gt;Wiggle&amp;lt;/b&amp;gt; with a value inversion (i.e. low drag corresponds to high wiggle, and vice versa). Increase this parameter (default is 0) to make the pen waver and wiggle in curly patterns.&lt;br /&gt;
&lt;br /&gt;
* As a first step towards a redesign of the tools' controls, the '''Controls bar of the Calligraphy pen''' has been upgraded. Now it no longer prevents the Inkscape window from resizing narrower than the bar. The items on the far right end of the bar which didn't fit in a narrow window are still accessible through an '''expansion menu''' which allows you to toggle switches, select commands, and set values of numeric fields. Also, each editable numeric value field has a new '''right-click menu''' with some common values which often allows you to set a desired value much faster than by scrolling the control or typing the value into it.&lt;br /&gt;
&lt;br /&gt;
* With low or zero Fixation parameter, some users of tablet pens experienced &amp;quot;blobs&amp;quot; (brief reversals of a stroke's right/left edges, causing &amp;quot;holes&amp;quot; and &amp;quot;bubbles&amp;quot; in a calligraphic stroke), especially often at the start of a stroke. Hopefully this problem is now fixed without reducing the responsiveness of the tool.&lt;br /&gt;
&lt;br /&gt;
= Outline mode =&lt;br /&gt;
&lt;br /&gt;
* A new menu command (&amp;lt;b&amp;gt;View &amp;gt; Display Mode &amp;gt; Toggle&amp;lt;/b&amp;gt;) and a new keyboard shortcut (&amp;lt;b&amp;gt;Ctrl+&amp;amp;lt;keypad 5&amp;amp;gt;&amp;lt;/b&amp;gt;) switch the display mode from Normal to Outline and back.&lt;br /&gt;
&lt;br /&gt;
* The window title displays &amp;quot;&amp;lt;b&amp;gt;(outline)&amp;lt;/b&amp;gt;&amp;quot; next to the file name when that editing window is in Outline mode. &lt;br /&gt;
&lt;br /&gt;
* An object with &amp;lt;b&amp;gt;mask and/or clipping path&amp;lt;/b&amp;gt;, when viewed in Outline mode, now displays both the object itself and its clipping path and mask as objects, using different outline colors. By default, &amp;lt;b&amp;gt;clippaths use green&amp;lt;/b&amp;gt; outlines, and &amp;lt;b&amp;gt;masks use blue&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Images&amp;lt;/b&amp;gt; in Outline mode are displayed as &amp;lt;b&amp;gt;red&amp;lt;/b&amp;gt; (by default) frames with two diagonals.&lt;br /&gt;
&lt;br /&gt;
* An object with no fill and no stroke, invisible and not selectable by mouse clicking in normal mode, can now be &amp;lt;b&amp;gt;picked by a mouse click&amp;lt;/b&amp;gt; in the Outline mode using its visible outline.&lt;br /&gt;
&lt;br /&gt;
* The bug whereby stroked shapes didn't change stroke width when switching to Outline mode or back is fixed.&lt;br /&gt;
&lt;br /&gt;
* All outline colors are changeable by editing the &amp;quot;wireframecolors&amp;quot; group inside &amp;quot;options&amp;quot; in the preferences file (~/.inkscape/preferences.xml). The &amp;quot;onlight&amp;quot; and &amp;quot;ondark&amp;quot; attributes set the colors of the regular object outlines on light and dark backgrounds (default black and white correspondingly); the &amp;quot;images&amp;quot;, &amp;quot;clips&amp;quot;, and &amp;quot;masks&amp;quot; attributes set the colors of images, clipping paths, and masks (defaults are red, green, and blue correspondingly). Each attribute is a decimal integer corresponding to the hex RRGGBBAA of the color.  &lt;br /&gt;
&lt;br /&gt;
* To cater for specialized uses, such as preparing input for personal media cutters, Inkscape now has an option to start in the Outline mode upon launch. To enable this, add the following line to your preferences.xml file:&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;group id=&amp;quot;startmode&amp;quot; outline=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:placing it after the &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; opening tag.&lt;br /&gt;
&lt;br /&gt;
= Keyboard profiles =&lt;br /&gt;
&lt;br /&gt;
The previous release allowed sets of keybindings (keymaps) to be created for Inkscape in the style of other applications.  Two more keymaps have been added:  &lt;br /&gt;
&lt;br /&gt;
* '''Adobe Illustrator''' &lt;br /&gt;
* '''Macromedia Freehand'''&lt;br /&gt;
&lt;br /&gt;
Of course not every feature in these other programs has a direct match to features in Inkscape; so, if you can, please '''help us out''' by reporting any problems you may have or improvements you would like to request.&lt;br /&gt;
&lt;br /&gt;
Additionally, a keymap that focuses on tablet-based illustration and drawing work has been added:&lt;br /&gt;
&lt;br /&gt;
* '''right-handed-illustration.xml'''&lt;br /&gt;
&lt;br /&gt;
This keymap places all commonly-used commands under the left hand, so that the user's hands rarely leave the keyboard or the tablet/stylus.&lt;br /&gt;
&lt;br /&gt;
(To enable a profile, copy it into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; in the same directory, overwriting the old file. To restore the default Inkscape set, copy &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
More of Inkscape's keys are implemented as actions and are therefore available for remapping via keyboard profiles. New actions include '''EditSelectNext''' and '''EditSelectPrev''' for selecting next/previous object or node (by default, they are bound to Tab/Shift+Tab; as a result of becoming global actions, these keys now work in all tools and not only in Selector and Node tool as before).&lt;br /&gt;
&lt;br /&gt;
= Extension effects =&lt;br /&gt;
&lt;br /&gt;
Inkscape's extension effects, written in Python using the '''inkex''' utility class, are currently a major growth point of the project. They allow new developers to create functionality very quickly, without having to learn Inkscape's huge C/C++ codebase. However, eventually we plan to move many of these effects into the core of Inkscape, which will make them much faster and more interactive. From this viewpoint, effects can be considered a quick way to prototype and test the algorithms and UI controls of the future Inkscape features. However, this does not prevent effects from being genuinely useful in everyday work, and in this version we have several excellent additions. &lt;br /&gt;
&lt;br /&gt;
== New effects ==&lt;br /&gt;
&lt;br /&gt;
* '''Pattern along path''': A new powerful extension in the &amp;quot;Generate from path&amp;quot; submenu allows you to bend, repeat and/or stretch a pattern object (which can be a path or a group) along a &amp;quot;skeleton&amp;quot; path. This makes it easy to create a variety of patterned and shaped strokes. (This obsoletes the old &amp;quot;Kochify&amp;quot; extension which is removed.)&lt;br /&gt;
&lt;br /&gt;
:Effect's parameters include: &lt;br /&gt;
&lt;br /&gt;
:* ''Copies of the pattern'' selects one of the four modes: '''Single stretched''': one copy of the pattern is placed on the skeleton path and stretched/squeezed to match its length;  '''Repeated stretched''': as many copies as would fit are placed along the skeleton path and stretched to fit exactly; '''Single''' and '''Repeated''': same but without stretching.&lt;br /&gt;
&lt;br /&gt;
:* ''Deformation type'' can be one of: '''Snake''' bends the pattern flatly in the plane of the drawing, the width not depending on direction; '''Ribbon''' bends it as a vertical ribbon or like a calligraphic stroke with maximum fixation, so that width depends on direction (minimum for vertical parts of the stroke, maximum for horizontal).&lt;br /&gt;
&lt;br /&gt;
:* Several parameters allow you to adjust spacing between the copies of the pattern (for Multiple modes) and their offset in two directions (along the skeleton path and perpendicular to it).&lt;br /&gt;
&lt;br /&gt;
:* Normally the effect assumes that the pattern object is horizontal and bends its horizontal axis (at mid-height) along the skeleton path. There's a checkbox that allows you to use a '''vertical pattern''' instead. &lt;br /&gt;
&lt;br /&gt;
:Some examples of using this effect are shown on a screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.45-patternalongpath.png].&lt;br /&gt;
&lt;br /&gt;
* '''Color effects''': A new group of extensions in the '''Color''' submenu of the Effects menu allows you to adjust all colors of a selection at once. These commands affect both fill and stroke colors, including gradients (but not bitmaps). The commands include:&lt;br /&gt;
&lt;br /&gt;
:* a full set of '''HSL adjustments''' (increasing/decreasing hue, saturation, or lightness by 5%), &lt;br /&gt;
&lt;br /&gt;
:* '''Brighter''' and '''Darker''' (adjust brightness up or down by 10%), &lt;br /&gt;
&lt;br /&gt;
:* '''Desaturate''', &lt;br /&gt;
&lt;br /&gt;
:* '''Grayscale''', &lt;br /&gt;
&lt;br /&gt;
:* '''Negative''', &lt;br /&gt;
&lt;br /&gt;
:* commands for removing or swapping the '''Red''', '''Green''', '''Blue''' channels, &lt;br /&gt;
&lt;br /&gt;
:* a '''Custom''' command where you can set your own formulas for modifying the color channels. &lt;br /&gt;
&lt;br /&gt;
:Some examples of using this effect are shown on a screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.45-coloreffects.png].&lt;br /&gt;
&lt;br /&gt;
:Note: undoing color changes on gradients exposes a bug where an object seems to &amp;quot;disappear&amp;quot;; this is only a display issue (caused by the order in which gradients and their users are restored on undo) not causing any loss of information. Also, on large documents and large selections with gradients, Python's XPath code may get quite slow. Despite these shortcomings, we decided to add this extension, because it's genuinely useful functionality which was so far missing in Inkscape.&lt;br /&gt;
&lt;br /&gt;
* Recent fixes in the processing of SVG &amp;lt;defs /&amp;gt; have made it possible to implement the often requested '''Color Markers to Match Stroke''' effect. It is no longer necessary to hand-edit XML to recolor arrowheads; just change the stroke color of your path and call this effect to recolor its markers to match.&lt;br /&gt;
&lt;br /&gt;
* '''Lorem ipsum''' (in &amp;quot;Render&amp;quot; submenu) is a new extension that creates the traditional Latin-like random text for design mock-ups. The number of paragraphs, the number of sentences per paragraph and the possible fluctuation of the number of sentences (for uneven paragraphs) can be adjusted. If no flowed text element is selected, a new one in a new layer is created, matching the size of the canvas.&lt;br /&gt;
&lt;br /&gt;
* '''Fractalize''' (in &amp;quot;Modify Path&amp;quot; submenu) replaces each segment of the selected path by a crooked line, subdivided to the given depth, with randomly displaced nodes. &lt;br /&gt;
&lt;br /&gt;
* '''g2png''': The new group-to-PNG Python extension (g2png) is an easy way to export any group or layer to individual PNG files. It was first created for use in the [http://www.le-radar.com/?mm/inkscape Inkscape User Manual] (also available in SVN in the user_manual module) but is also interesting for many other uses. If e.g. you have to draw a set of icons, you can draw them in the same document, thus making copying, duplicating, cloning etc. easier. Then just create a group  for each icon, and with the extension, each group ends up in its own PNG file.&lt;br /&gt;
&lt;br /&gt;
== Improved effects ==&lt;br /&gt;
&lt;br /&gt;
* The '''Function Plotter''' has been extended, providing greater flexibility in x- and y-range definition. &lt;br /&gt;
&lt;br /&gt;
* The '''Measure Path''' extension is improved with several new parameters added (units, scale, precision, distance from path).&lt;br /&gt;
&lt;br /&gt;
* The '''Extract One Image''' extension is fixed to automatically append filename extension to the created bitmap file.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Blur Edge&amp;quot; extension is renamed into '''Inset/Outset Halo''' to avoid confusion with the real Gaussian blur that we now support, as well as to better describe what this extension actually does: From the selected path, it creates a group of inset and outset paths that form a stepped &amp;quot;halo&amp;quot; around the object. &lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
* '''3 new parameter types''' have been added to the extension effect UI: '''tabs''', '''enumerations''' and '''optiongroups''' (radio buttons). Examples are available of how to use these parameters in INX files: the new Function Plotter uses tabs; enumerations are used by the Pattern along path extension; and a small developer example is given to illustrate the use of optiongroups (identical to enumerations).&lt;br /&gt;
&lt;br /&gt;
* In an extension's INX file, you can specify &amp;lt;code&amp;gt;&amp;amp;lt;effects-menu hidden=&amp;quot;yes&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt; to hide that extension from the Effects menu. However, such a &amp;quot;hidden&amp;quot; extension can still be assigned a keyboard shortcut (by using its &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; as an &amp;quot;action&amp;quot; in your &amp;lt;code&amp;gt;~/.inkscape/keys/default.xml&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* In an extension's INX file, you can add &amp;lt;code&amp;gt;needs-document=&amp;quot;no&amp;quot;&amp;lt;/code&amp;gt; attribute to the &amp;lt;code&amp;gt;&amp;amp;lt;effect&amp;amp;gt;&amp;lt;/code&amp;gt; element. This indicates that the extension does not process the current SVG document, and Inkscape will not bother saving and restoring the document from a temporary file which allows this extension to run faster and smoother. (This is used for the new open-in-default-browser Help menu commands which are technically implemented as extensions.)&lt;br /&gt;
&lt;br /&gt;
= Export formats =&lt;br /&gt;
&lt;br /&gt;
== AI import/export ==&lt;br /&gt;
&lt;br /&gt;
* We only support AI import and export for Adobe Illustrator 8.0 and older.  This has been clarified in the Open and Save As lists.&lt;br /&gt;
&lt;br /&gt;
== PDF export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape's PDF exporter has been improved:&lt;br /&gt;
&lt;br /&gt;
* '''New features:''' bitmap images can be embedded; PDF files can be exported from command line using the &amp;lt;code&amp;gt;--export-pdf&amp;lt;/code&amp;gt; parameter. &lt;br /&gt;
&lt;br /&gt;
* '''Changed behavior:''' the pointless text to path question is gone. &lt;br /&gt;
&lt;br /&gt;
* '''Fixed bugs:''' save failure is now detected, miter limits are now &amp;gt;= 1, PDFs with transparent gradient are now embeddable, eccentric elliptic gradients fixed, dash style inheritance fixed, transparency inheritance fixed.&lt;br /&gt;
&lt;br /&gt;
== PS/EPS export ==&lt;br /&gt;
&lt;br /&gt;
There's a new option to &amp;lt;b&amp;gt;embed the fonts&amp;lt;/b&amp;gt; used in the document in the PS or EPS exported file. As of now, this works for &amp;lt;b&amp;gt;Type 1 fonts only&amp;lt;/b&amp;gt;, not TrueType. The option is available when performing the export from the GUI as well as from the command line via the &amp;lt;code&amp;gt;--export-embed-fonts&amp;lt;/code&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
== EMF export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape has a limited support for exporting &amp;lt;b&amp;gt;EMF&amp;lt;/b&amp;gt; (Enhanced Meta File) format. This works &amp;lt;b&amp;gt;only on Windows&amp;lt;/b&amp;gt;, and only exports strokes and fills with constant colors. No text, no images, no gradients, no transparency.&lt;br /&gt;
&lt;br /&gt;
= SVG output =&lt;br /&gt;
&lt;br /&gt;
For specialized uses, several aspects of Inkscape's SVG output can now be customized via editing the preferences.xml file (there's no UI for these options). A &amp;lt;group id=&amp;quot;&amp;lt;b&amp;gt;svgoutput&amp;lt;/b&amp;gt;&amp;quot;&amp;gt; inside &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; can have the following attributes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;usenamedcolors&amp;lt;/b&amp;gt; (default is 0). If nonzero, Inkscape uses symbolic color names (such as &amp;quot;white&amp;quot; or &amp;quot;lime&amp;quot;) and three-digit color designations (such as $dfe) where appropriate; otherwise, it always uses six-digit colors (such as $d0f0e0). Note that in 0.44, the default was to use named colors, which created problems for some extension effects.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;numericprecision&amp;lt;/b&amp;gt; (default is 8). This is the number of significant digits written for each number into SVG. You can lower this number to get slightly more compact SVG at the expense of precision.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;minimumexponent&amp;lt;/b&amp;gt; (default is -8). In transform= attributes, any number whose absolute value is less than 10 to the power of minimumexponent (i.e. less than 10&amp;lt;sup&amp;gt;-8&amp;lt;/sup&amp;gt; by default) is written as 0.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;indent&amp;lt;/b&amp;gt; (default is 2) controls the number of spaces that each level of nesting in SVG is shifted. Set this to 0 to disable indentation.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;inlineattrs&amp;lt;/b&amp;gt; (default is 0). If nonzero, attributes are placed on the same line as their tags; otherwise they are separated by newlines.&lt;br /&gt;
&lt;br /&gt;
= Bitmap tracing =&lt;br /&gt;
&lt;br /&gt;
* A '''new color quantization algorithm''' for multiscan traces works faster (especially for large numbers of colors) and gives more adequate results with less colors used. This improves tracing results both for full-color photographs and for limited-color drawings. &lt;br /&gt;
&lt;br /&gt;
* The Trace Bitmap dialog now provides access to three more tracing parameters:&lt;br /&gt;
&lt;br /&gt;
:* '''Suppress speckles''': If set, spots or speckles larger than the given size (in pixels) are suppressed in the trace.&lt;br /&gt;
&lt;br /&gt;
:* '''Smooth corners''': This parameter controls how much smoothing is applied to corners in the traced path.&lt;br /&gt;
&lt;br /&gt;
:* '''Optimize paths''': If set, trace paths are optimized by joining adjacent Bezier segments with the given tolerance.&lt;br /&gt;
&lt;br /&gt;
* All controls in the Trace Bitmap dialog are reorganized to be easier to find. The dialog is redesigned to use two main tabs: '''Mode''' (where you select the tracing mode, such as brightness cutoff or color multiscan) and '''Options''' (where you set various tracing options, such as corner smoothing). The preview is placed horizontally to the right of the tabs. Most labels and tooltips are rewritten for clarity. The trace preview image is made twice larger.&lt;br /&gt;
&lt;br /&gt;
= Even more improvements =&lt;br /&gt;
&lt;br /&gt;
* The '''opacity''' of objects is now displayed as percentage, '''from 0 to 100''', both in the Fill &amp;amp; Stroke dialog (with one fractional digit) and in the statusbar style indicator (with no fractional digits), instead of from 0 to 1.0 as before. This makes opacity values easier to read, type, and say.&lt;br /&gt;
&lt;br /&gt;
* A '''Save a copy''' command has been added to the file menu, similar to the 'Save a copy' functionality of e.g. Adobe Illustrator. With this command, you can save your document under a new filename, but Inkscape will then &amp;quot;forget&amp;quot; it has done this: later saves will be to the old filename. The default shortcut assigned to this function is '''Shift+Ctrl+Alt+S'''.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Text and flowed text objects&amp;lt;/b&amp;gt; behave more consistently. Now you can put a flowed text on path or (re)flow it into a shape just as you would do with a regular (unflowed) text. Previously, the need to convert a flowed text to text before these operations was a stumble for many users.&lt;br /&gt;
&lt;br /&gt;
* Several commands were added to the '''Help menu''', providing the long-missing access to basic information about Inkscape and SVG right from the program: [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/index.php Inkscape manual], [http://inkscape.org/doc/inkscape-man.html Command line options], [http://wiki.inkscape.org/wiki/index.php/FAQ FAQ], Release notes, [http://inkscape.org/report_bugs.php Bug report page], and the [http://www.w3.org/TR/SVG11/ SVG 1.1 specification]. All these commands open the corresponding web pages in the user's default web browser. &lt;br /&gt;
&lt;br /&gt;
* Exported PNG images have the correct '''resolution''' set in the header.&lt;br /&gt;
&lt;br /&gt;
* The Path -&amp;gt; '''Union''' (Ctrl++) operation now functions when only a '''single object''' is selected. Use this to '''remove self-intersections''' in path objects.&lt;br /&gt;
&lt;br /&gt;
* We removed the &amp;quot;hacked&amp;quot; '''filename entry field''' that we had added to the Open and Save dialogs because starting from version 2.10, GTK+ has finally restored this field in their '''standard file dialog'''. The standard field at the top of the dialog supports type-ahead find and performs the default dialog action (open or save) by pressing Enter, which means you can now do a quick '''Ctrl+O, Ctrl+V, Enter''' sequence to open the file whose path is in your clipboard (this closes a long-standing usability bug). Those who use older versions of GTK are advised either to upgrade to 2.10 or use Ctrl+L to open a pop-up filename box. (Our Windows builds are shipped with GTK+ 2.10.)&lt;br /&gt;
&lt;br /&gt;
* The '''Create Bitmap''' function (Alt+B in the default keymap) is made more useful. Unless you have specific resolution or minimum size set for this command in preferences.xml (&amp;lt;code&amp;gt;&amp;amp;lt;group id=&amp;quot;createbitmap&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt;), it will take the '''resolution hint''' from the object whose bitmap copy you are creating (in other words, it will use the resolution that you specified for that object when exporting it via the Export Bitmap dialog), or the default '''90 dpi''' if that object was not yet exported. Also, a 90 dpi bitmap (with its pixels exactly 1 px in size) will be '''snapped''' to the pixel grid. This makes it easy to use Create Bitmap for quick '''rasterization preview''' of an object or document. (Note: if you have used a previous version of Inkscape, your preferences.xml may contain &amp;lt;code&amp;gt;minsize=&amp;quot;250&amp;quot;&amp;lt;/code&amp;gt;; delete this for objects' resolution hints to work.)&lt;br /&gt;
&lt;br /&gt;
* Using extended input (i.e. tablet pressure and tilt) can now be disabled via Preferences (Misc tab). This is intended to be a last-resort option for those platform/hardware combinations that are not properly supported by GTK. With extended input disabled, you can still use your tablet as a mouse. &lt;br /&gt;
&lt;br /&gt;
* Simplify Path now has two modes when working with a group of paths:  the default mode, which treats all of the paths as one large object to simplify, or the new mode, which acts the same as using Simplify on each path in a group separately.  In preferences.xml, set '''options.simplifyindividualpaths''' to 1 to get the new mode.&lt;br /&gt;
&lt;br /&gt;
* For long Simplify operations (more than 20 paths at a time), Inkscape provides user feedback via the status bar as to how many paths have been simplified.  This change also prevents Inkscape from appearing to have locked up during the operation.&lt;br /&gt;
&lt;br /&gt;
* New '''templates''' added for '''video formats''' (PAL, NTSC and HDTV 1080) as well as DVD cover templates that were not installed in the previous version. This will help video and DVD authoring with Inkscape. The business card 85&amp;amp;times;54 template is now installed as well.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Other&amp;quot; license type was added to the metadata/license dialog so that people know that they are entering a URI to an &amp;quot;other&amp;quot; license.&lt;br /&gt;
&lt;br /&gt;
= Examples = &lt;br /&gt;
&lt;br /&gt;
* With all the recent additions - clipping, masking, and especially blur - Inkscape is now able to produce extremely photorealistic art. In the share/examples folder in Inkscape distribution, you will find two brand new, stunningly realistic images of shiny cars: &amp;lt;b&amp;gt;car.svgz&amp;lt;/b&amp;gt; by Konstantin Rotkevich and &amp;lt;b&amp;gt;gallardo.svgz&amp;lt;/b&amp;gt; by Michael Grosberg.&lt;br /&gt;
&lt;br /&gt;
* Inkscape 0.45 does not yet have gradient meshes. But with the addition of Gaussian Blur, this feature suddenly got within reach. A new example file, &amp;lt;b&amp;gt;gradient-mesh-experimental.svgz&amp;lt;/b&amp;gt;, explains the approach Inkscape will likely take to implement this feature in a fully SVG-compatible way.&lt;br /&gt;
&lt;br /&gt;
* Although Inkscape does not support animation yet, you can add any animation scripts and attributes to your SVG file manually in a text editor - and the file will still be editable in Inkscape. Tavmjong Bah used this technique to create  &amp;lt;b&amp;gt;animated-clock.svg&amp;lt;/b&amp;gt; which, when loaded in an SVG viewer supporting animation (such as Firefox, Opera, or Batik), demonstrates the intricate moving clockwork of a watch - and shows real time to boot! If loaded in Inkscape, the image is static, but instead you can freely edit any of the objects.&lt;br /&gt;
&lt;br /&gt;
= Translations, tutorials, templates =&lt;br /&gt;
&lt;br /&gt;
* Remarkable improvements are in the '''Danish''', '''Finnish''', '''Nepalese''' and the '''Vietnamese''' translations of the user interface. They all jumped from 0 to over 90 percent in a very short timespan.&lt;br /&gt;
&lt;br /&gt;
* All people which are familiar with '''pig latin''' are now able to use Inkscape's user interface in that language. Isthay isway oughtbray otay usway ybay away ewnay anslatortray.&lt;br /&gt;
&lt;br /&gt;
* Updated '''British English''', '''Catalan''', '''Czech''', '''Bulgarian''', '''French''', '''Danish''', '''Finnish''', '''German''', '''Brazilian Portuguese''' and '''Thai''', '''Vietnamese''' and '''Dzongkha''' translations.&lt;br /&gt;
&lt;br /&gt;
* A new Esperanto translation added including default document template.&lt;br /&gt;
&lt;br /&gt;
* Default Lithuanian template was not installed before, which is now fixed.&lt;br /&gt;
&lt;br /&gt;
* New tutorial &amp;quot;Easter Eggs&amp;quot; by Steve Karg.&lt;br /&gt;
&lt;br /&gt;
* Added Catalan default template and elements tutorial.&lt;br /&gt;
&lt;br /&gt;
* Russian header and footer templates for tutorials are added.&lt;br /&gt;
&lt;br /&gt;
* Several tutorial translations were updated, namely '''Catalan''', '''Brazilian Portuguese''', '''Russian''', '''German''', '''Danish''' and '''French'''.&lt;br /&gt;
&lt;br /&gt;
* There are also new Russian and Japanese translations of Windows installer strings.&lt;br /&gt;
&lt;br /&gt;
= Dependency changes =&lt;br /&gt;
&lt;br /&gt;
* We have changed the '''GTK+''' requirement for compilation to version 2.8. However, it is highly recommended to use at least the version '''2.10.7''' because previous versions contain at least one crash bug which may cause Inkscape to crash after typing in a value into a spinbutton.&lt;br /&gt;
&lt;br /&gt;
= Notable bugfixes =&lt;br /&gt;
&lt;br /&gt;
* When deleting a node, neighboring smooth nodes are converted to cusp.&lt;br /&gt;
&lt;br /&gt;
* Releasing the mouse button while dragging nodes using a tablet will now always release the nodes.  Before this, a race condition could occur where dragging could continue after the mouse button was released.&lt;br /&gt;
&lt;br /&gt;
* An object's mask and clipping path are now preserved after Simplify, Object/Stroke to path, or boolean operations.&lt;br /&gt;
&lt;br /&gt;
* Ungrouping a group containing clipped/masked objects might sometime break the clip/mask (move it away); this is fixed.&lt;br /&gt;
&lt;br /&gt;
* Transforming an object and its clone no longer behaves unexpectedly when they are both within a transformed group. &lt;br /&gt;
&lt;br /&gt;
* User-supplied templates in ~/.inkscape/templates can now be SVGZ files in addition to SVG.&lt;br /&gt;
&lt;br /&gt;
* Previously, Inkscape didn't check if there's enough free memory for its pixel buffers and could crash without warning due to insufficient memory e.g. upon zooming in. This problem became much worse after implementing Gaussian blur, because rendering blurred objects at high zooms may require a pixel buffer much bigger than the visible canvas. Now this situation is handled more gracefully: if a display operation requires more memory than available, or more than 100Mb (which corresponds to a 5000x5000 pixel buffer), it is skipped. This may result in blurred objects &amp;quot;disappearing&amp;quot; at high zooms. This is purely a display issue, however, and it never corrupts data; just zoom out (or reduce blur radius) and the disappeared object will show up OK.&lt;br /&gt;
&lt;br /&gt;
* When resizing objects, scaling numbers in the statusbar are no longer overwritten by other text when pressing the modifier keys (Alt, Shift, Ctrl).&lt;br /&gt;
&lt;br /&gt;
* To work around problems some users had with pressure-sensitive tablets ([http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1281512&amp;amp;group_id=93438&amp;amp;atid=604306 bug 1281512]), the pressure sensitivity can be disabled from the Misc tab of Inkscape Preferences dialog. After that, the tablet can still be used as a regular mouse. &lt;br /&gt;
&lt;br /&gt;
* The layer widget in the statusbar used to lose its current layer after an effect run; this is fixed.&lt;br /&gt;
&lt;br /&gt;
* When using different display resolutions or a dual screen setup, dialogs could be displayed off-screen; this is fixed: now Inkscape checks whether the saved position of the dialog is offscreen, if so it will move the dialog to the center of the screen. Note that this not solve all problems. If the dialog is still not visible, go to the [http://sourceforge.net/tracker/?func=detail&amp;amp;atid=604306&amp;amp;aid=1250236&amp;amp;group_id=93438 bug 1250236] where a procedure is given to make the dialog visible (by editing preferences.xml).&lt;br /&gt;
&lt;br /&gt;
* Grid and guidelines no longer vanish when changing their color.&lt;br /&gt;
&lt;br /&gt;
* Group transformation is now correctly re-applied when ungrouping and then undoing the ungroup operation.&lt;br /&gt;
&lt;br /&gt;
* Text dialog no longer discards the style of the selected text.&lt;br /&gt;
&lt;br /&gt;
* Inkscape no longer crashes when you try to unflow an empty flowed text.&lt;br /&gt;
&lt;br /&gt;
* Thanks to patches submitted by users of our community, Inkscape can now be built on SGI IRIX 6.5.28, gcc 3.4.0 systems and on Tru64 systems.&lt;br /&gt;
&lt;br /&gt;
= Known problems =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problem with &amp;quot;Dialogs on Top&amp;quot; on Windows ====&lt;br /&gt;
&lt;br /&gt;
* Although the &amp;quot;Dialogs on Top&amp;quot; option is now available on Windows (File &amp;gt; Inkscape Preferences &amp;gt; Windows), it does not work exactly as it should (yet!). When the document window is minimized, the dialogs remain visible, i.e. are not minimized together with the document window. Because of this, it is not possible to get the document window back by clicking its taskbar button. A workaround to this problem is to '''right-click the Inkscape taskbar button and select &amp;quot;Restore&amp;quot;.''' We expect that future releases of GTK will solve this problem.&lt;br /&gt;
&lt;br /&gt;
==== Spinbuttons may crash if you have GTK+ older than 2.10.7 ====&lt;br /&gt;
&lt;br /&gt;
* You may experience crashes after typing in a value into a spinbutton if you have a version of GTK+ 2.10.6 or older. Upgrade your GTK+ to fix this. (This does not affect the Windows package as it comes with GTK+ 2.10.9.)&lt;br /&gt;
&lt;br /&gt;
==== Numerical Python required for Perspective effect ====&lt;br /&gt;
&lt;br /&gt;
* This effect will not work until you install a python module called '''numpy''' (Numerical Python). It can be downloaded at [http://numpy.scipy.org/ numpy.scipy.org]. The Windows package already contains this module.&lt;br /&gt;
&lt;br /&gt;
==== Do not use a clone of an object as its clipping path/mask ====&lt;br /&gt;
&lt;br /&gt;
* In this version, you cannot use an object's clone as its clipping path or mask. Either unlink the clone first, or clip one clone of a source object (not the source itself) by another clone of the same. Properly fixing this bug requires some deep changes in the code and therefore was postponed until after 0.45 so as not to delay the release.&lt;br /&gt;
&lt;br /&gt;
==== Non-Unicode symbol fonts on Windows don't work ====&lt;br /&gt;
&lt;br /&gt;
* On Windows, symbol fonts without a Unicode map do not work. This is a limitation of the Pango library that we use.&lt;br /&gt;
&lt;br /&gt;
==== Problems with some Debian libgc-6.7 packages ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape will hang or crash when linked with the first Debian packaged version of the Boehm garbage collection library. This problem was fixed in version 1:6.7-2  of the package.  If you have libgc 6.7 on your Debian-based system, make sure that you are using that version of the package or later.&lt;br /&gt;
&lt;br /&gt;
==== Beware of defective themes on Linux ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape and other Gtk programs can crash on any Linux, when the &amp;lt;b&amp;gt;gtk2-engines-smooth / libsmooth&amp;lt;/b&amp;gt; package is installed. We have filed a bug against libsmooth which is now in gtk-engine and part of gnome. Removing the package resolves the problem. Update: this bug appears to be fixed in newer versions of gtk-engines. If you are affected by this problem please update to a newer version of gtk-engines. If problems persist then please inform the gtk-engines maintainers of the problem. &lt;br /&gt;
&lt;br /&gt;
* A similar crash happens if the &amp;lt;b&amp;gt;KDE Baghira&amp;lt;/b&amp;gt; theme or the package &amp;lt;b&amp;gt;gtk_qt_engine&amp;lt;/b&amp;gt; are installed. If you experience Inkscape crashes on KDE, please try to install a different theme from Baghira, or uninstall the gtk_qt_engine package from your system. Both problems also affect older versions of Inkscape.&lt;br /&gt;
&lt;br /&gt;
= Previous releases =&lt;br /&gt;
&lt;br /&gt;
* [[ReleaseNotes044]]&lt;br /&gt;
* [[ReleaseNotes043]]&lt;br /&gt;
* [[ReleaseNotes042]]&lt;br /&gt;
* [[ReleaseNotes041]]&lt;br /&gt;
* [[ReleaseNotes040]]&lt;br /&gt;
* [[ReleaseNotes039]]&lt;br /&gt;
* [[ReleaseNotes038]]&lt;br /&gt;
* [[ReleaseNotes037]]&lt;br /&gt;
* [[ReleaseNotes036]]&lt;br /&gt;
* [[ReleaseNotes035]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Marketing]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Creating_Inkscape_distributions&amp;diff=13062</id>
		<title>Creating Inkscape distributions</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Creating_Inkscape_distributions&amp;diff=13062"/>
		<updated>2007-02-02T15:40:08Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* Creating a distribution source tarball package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Creating Dists of Inkscape ==&lt;br /&gt;
&lt;br /&gt;
Those who wish to produce packaged releases of inkscape are welcome to do so.&lt;br /&gt;
If it is packages changes that you've made to the official release, please select a&lt;br /&gt;
version name that distinguishes it from the official version, to avoid confusion.  For&lt;br /&gt;
example, “inkscape-0.35-johndoe.tar.gz”.  Please consider distributing your changes&lt;br /&gt;
as a patch rather than as a full distribution, as patches tend to be easier to &lt;br /&gt;
maintain.&lt;br /&gt;
&lt;br /&gt;
Inkscape's release process works like this:&lt;br /&gt;
&lt;br /&gt;
# Start of release process - Finish up work on features.&lt;br /&gt;
# Feature Freeze Mode - Shift focus from feature implementation to bug fixing&lt;br /&gt;
# Hard Freeze - Two freeze wardens are named.  All development must be done as patches submitted to the freeze wardens for review and integration.&lt;br /&gt;
# Branch - The codebase is tagged and branched.  Final release tarball is posted.  The codebase is returned to regular open development.&lt;br /&gt;
# Packaging - Three days are allowed for creating release dists (rpm's, deb's, exe's, and autopackages).&lt;br /&gt;
# Release Announcement - A Release Announcement and a Press Release are written and circulated to relevant online news sites.  Our Freshmeat record is updated.  &lt;br /&gt;
&lt;br /&gt;
=== Feature Freeze Mode ===&lt;br /&gt;
&lt;br /&gt;
In the run-up to [[CreatingDists]], for a short time preceding the tagging of the release it's a good idea to hold off on adding new features or doing other major changes like architectural changes to the code that might decrease its stability.  Whether a change is minor enough to be “ok” is left to the developer's judgement, and they're trusted to be conservative and careful.&lt;br /&gt;
&lt;br /&gt;
The most useful activity to do during a feature freeze is to locate and/or fix bugs that produce crashes, and to do so with the smallest amount of change to the codebase possible.  If a “proper” fix requires architectural changes or redesign of the code, consider writing that up as a post-release task.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
It might be useful to branch off a release branch a week before making the release.  Hopefully most people using CVS would switch to this branch at this time.  Then only bug fixes can go into that branch.  --[[Ted]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Branching the release candidate ===&lt;br /&gt;
&lt;br /&gt;
Before release, a branch should have been be created for that release in the form RELEASE_&amp;lt;major&amp;gt;_&amp;lt;minor&amp;gt;_BRANCH.  For example, 0.38 should have a branch called RELEASE_0_38_BRANCH.&lt;br /&gt;
&lt;br /&gt;
Minor fixes and code review can then be performed on that branch before the final release; it also permits making future point releases easily (if necessary).&lt;br /&gt;
&lt;br /&gt;
To create the release branch, do the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;svn copy https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/branches/RELEASE_0_38_BRANCH&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To check out this branch:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;svn checkout https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/branches/RELEASE_0_38_BRANCH inkscape-0.38-branch&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the release is deemed ready a distribution tarball should be created as below.&lt;br /&gt;
&lt;br /&gt;
=== Creating a distribution source tarball package ===&lt;br /&gt;
&lt;br /&gt;
On the release branch (NOT ON HEAD):&lt;br /&gt;
&lt;br /&gt;
* Set the version name via the file configure.ac in the AC_INIT() macro, Makefile.mingw.common, packaging/win32/inkscape.nsi, src/inkscape_version.h.mingw, debian/changelog, build.xml, and in build28.xml&lt;br /&gt;
* Run `packaging/mkNEWS &amp;gt; NEWS` to add the release notes into the NEWS file in the release branch&lt;br /&gt;
* Run ./autogen.sh &amp;amp;&amp;amp; ./configure (with any flags, e.g. CXXFLAGS=).&lt;br /&gt;
* Run “cd src &amp;amp;&amp;amp; make helper/sp-marshal.h helper/sp-marshal.cpp inkscape_version.h &amp;amp;&amp;amp; perl mkfiles.pl &amp;amp;&amp;amp; perl mkdep.pl”, then do “cvs -q diff -du make.*|less” to check for anything strange (e.g. source files accidentally added or removed), and finally “cvs commit -m '' make.*”.&lt;br /&gt;
* Run &amp;quot;cd po &amp;amp;&amp;amp; make update-po&amp;quot; to update the translation files.  This especially must be done after string freeze.&lt;br /&gt;
* Make sure the code passes a “make distcheck”&lt;br /&gt;
* This should produce inkscape-VERSION.tar.gz&lt;br /&gt;
* Commit the changed configure.ac and other files to the branch&lt;br /&gt;
* Tag the release in CVS&lt;br /&gt;
&lt;br /&gt;
Release tags should be in the form RELEASE_&amp;lt;major&amp;gt;_&amp;lt;minor&amp;gt;_&amp;lt;point&amp;gt;. A non-point-release like 0.38 would get the tag RELEASE_0_38_0, 0.38.1 would get the tag RELEASE_0_38_1, and so on.&lt;br /&gt;
&lt;br /&gt;
On HEAD:&lt;br /&gt;
&lt;br /&gt;
* Add the release notes into the NEWS file in the release branch &lt;br /&gt;
* Change configure.ac and inkscape_version.h.mingw to reflect the new future version&lt;br /&gt;
&lt;br /&gt;
=== GPG signing Tarballs === &lt;br /&gt;
&lt;br /&gt;
Downstream packagers are asking for and may soon demand gpg signed tarballs. For Fedora, this is not a requirement, but does ease acceptance of packages. It also shows we are doing “The Right Thing”. md5sums are not foolproof.&lt;br /&gt;
 &lt;br /&gt;
* To create a gpg signed tarball:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$gpg -u packager@foo.net --armor --output tarball.sig --detach-sig tarball.tar.gz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To verify :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$gpg --verify ./tarball.asc ./tarball.tar.gz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course, this step doesn't mean much in practice unless people have a trust path to your key.  Packagers are encouraged to attend key signing parties and take other measures to establish important trust paths to their keys (particularly with downstream packagers).&lt;br /&gt;
&lt;br /&gt;
:Where are the public keys matching these sig's posted?&lt;br /&gt;
&lt;br /&gt;
=== Creating a Windows Distro ===&lt;br /&gt;
Inkscape/sodipodi has always been&lt;br /&gt;
buildable on Win32.  The problem with the sodipodi and original inkscape build, though,&lt;br /&gt;
was that the Win32 builder had to download and configure&lt;br /&gt;
a lot of things to make it to work.    Mingw, MSYS, automake,&lt;br /&gt;
autoconf, pkg-config, the codepages, etc.  He would spend more&lt;br /&gt;
time on THAT than the actual code.&lt;br /&gt;
&lt;br /&gt;
What a pain for the average developer/user who merely wants&lt;br /&gt;
to make Inkscape do what he wants it to do.  Why waste&lt;br /&gt;
days and days getting it to compile, when the developer&lt;br /&gt;
would rather be working on the program itself?&lt;br /&gt;
&lt;br /&gt;
So we spent several weeks collecting libraries, building others,&lt;br /&gt;
installing the codepages into the source (which we can delete soon&lt;br /&gt;
because of Pango) and creating a set of clean makefiles&lt;br /&gt;
that work on Win9x, NT, XP, and the cross-compiler.&lt;br /&gt;
It is a bit more work for people like me, but hopefully it&lt;br /&gt;
attains its goal of saving a lot of work for other people.&lt;br /&gt;
&lt;br /&gt;
Also, remember that on Unix/Linux,  $PREFIX is commonly&lt;br /&gt;
/usr/local  or  /usr  or something like that.   On M$, all of&lt;br /&gt;
a program's files are typically located in their own directory.  So all&lt;br /&gt;
of the files are located relative to “.”.  Actually, relative to&lt;br /&gt;
the .exe that is currently running.&lt;br /&gt;
&lt;br /&gt;
.....anyway, just wanted to explain that there is a reason&lt;br /&gt;
for the Win32 build to be constructed in such a manner,&lt;br /&gt;
and that we haven't just been arbitrary.&lt;br /&gt;
&lt;br /&gt;
Once the tree is built (“make -f Makefile.mingw” and “make -f Makefile.mingw dist-strip”) into the “inkscape” directory, the [http://nsis.sourceforge.net/ NSIS] installer script “inkscape.nsi” can be run to create the self-extracting win32 installer.&lt;br /&gt;
&lt;br /&gt;
The Windows download package should be named according to the following scheme:&lt;br /&gt;
&lt;br /&gt;
    inkscape-$RELEASE-$PKG.$WINVER.exe&lt;br /&gt;
&lt;br /&gt;
Where $WINVER is the required Windows version, e.g. “win32”.  For example:&lt;br /&gt;
&lt;br /&gt;
    inkscape-0.37-1.win32.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Creating a Debian .deb ===&lt;br /&gt;
&lt;br /&gt;
The article [[CompilingDebian]] provides a makefile to download a tarball and build a debian package therefrom.&lt;br /&gt;
&lt;br /&gt;
=== Creating a distribution RPM ===&lt;br /&gt;
&lt;br /&gt;
Method A:&lt;br /&gt;
# do as above for tarball, or download the release tarball&lt;br /&gt;
# login as root&lt;br /&gt;
# rpmbuild -tb inkscape-x.x.tar.gz&lt;br /&gt;
# Your RPMs will be in /usr/src/rpm[[/RPMS]] (/usr/src/redhat on RH systems)&lt;br /&gt;
# RPMs should be GPG signed&lt;br /&gt;
&lt;br /&gt;
Method B:&lt;br /&gt;
# do as above for tarball, or download the release tarball&lt;br /&gt;
# mkdir ~/rpm&lt;br /&gt;
# Copy the tarball to ~/rpm/SOURCES/&lt;br /&gt;
# Copy the inkscape.spec from the tarball to ~/rpm/SPECS/inkscape.spec&lt;br /&gt;
# rpmbuild -ba ~/rpm/SPECS/inkscape.spec&lt;br /&gt;
# Your RPMs will be in ~/rpm/RPMS and ~/rpm/SRPMS&lt;br /&gt;
# RPMs should be GPG signed&lt;br /&gt;
&lt;br /&gt;
The rpm should be named according to the following pattern:&lt;br /&gt;
&lt;br /&gt;
   inkscape-$RELEASE-$PKG.$DISTRO.$ARCH.rpm&lt;br /&gt;
&lt;br /&gt;
Where:&lt;br /&gt;
&lt;br /&gt;
$RELEASE: the Inkscape release number, such as “0.37”, “0.36.2”, etc.  &lt;br /&gt;
The third number should be omitted if it is 0.  (I.e., 0.37 instead of 0.37.0)&lt;br /&gt;
&lt;br /&gt;
$PKG:  A version number for your package.  Use a value of 1 for your package, and increment it if you&lt;br /&gt;
need to update the released package for some reason.&lt;br /&gt;
&lt;br /&gt;
$DISTRO:  The name and an indicator of the version number for the distro.  E.g.,&lt;br /&gt;
rh71, rh90, mdk91, suse90, fc1, etc.  No need to be too exhaustive with the distro versions;&lt;br /&gt;
for a given brand of distro it's probably enough to have a reasonably “modern” release&lt;br /&gt;
and an older one for legacy support.  For instance, rh71 and rh90.&lt;br /&gt;
&lt;br /&gt;
$ARCH:  The architecture that the package was built on.  E.g., i686, i386, athlon, ppc, etc.&lt;br /&gt;
Don't bother with i586 - either i386 or i686 is preferred.  The i386 packages will run on Cyrix &lt;br /&gt;
and K-6.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
   inkscape-0.37-1.mdk80.i386.rpm&lt;br /&gt;
   inkscape-0.37-1.mdk80.i686.rpm&lt;br /&gt;
   inkscape-0.37-1.mdk91.i386.rpm&lt;br /&gt;
   inkscape-0.37-1.mdk91.i686.rpm&lt;br /&gt;
&lt;br /&gt;
   inkscape-0.37-1.fc1.i386.rpm&lt;br /&gt;
   inkscape-0.37-1.fc1.i686.rpm&lt;br /&gt;
   inkscape-0.37-1.fc1.athlon.rpm&lt;br /&gt;
   inkscape-0.37-1.fc1.ppc.rpm&lt;br /&gt;
&lt;br /&gt;
For creating spec files, feel free to list yourself as the packager, but please use &lt;br /&gt;
inkscape-devel@lists.sourceforge.net as the contact email address, to ensure that&lt;br /&gt;
questions/complaints about the RPM go to the official support channel.&lt;br /&gt;
&lt;br /&gt;
==== Patching RPMs ====&lt;br /&gt;
&lt;br /&gt;
Occasionally, the RPM will not build without some modifications.  If the problem is serious enough that it affects every packaging format, this could signal a need to do a point release, but usually you can just add a patch specifically for the RPM.  This is what RPM is for, after all.  :-)&lt;br /&gt;
&lt;br /&gt;
Here's how to do it:&lt;br /&gt;
&lt;br /&gt;
1.  Create a copy of the source tree, with the modifications needed to correct the issue.&lt;br /&gt;
2.  Generate a patch like this:&lt;br /&gt;
&lt;br /&gt;
   $ diff -uNr package-1.0/ package-1.0p/ &amp;gt; ../SOURCES/package-1.0-my.patch&lt;br /&gt;
&lt;br /&gt;
3.  Next add the patch to the RPM.  In the specfile at %_topdir/SPECS/package.spec, add a line like this at the top of the file:&lt;br /&gt;
&lt;br /&gt;
   Patch0: package-1.0-my.patch&lt;br /&gt;
&lt;br /&gt;
Then further down add a line after the %setup section, like this:&lt;br /&gt;
&lt;br /&gt;
   %prep&lt;br /&gt;
   %setup ...&lt;br /&gt;
   %patch0 -p1&lt;br /&gt;
&lt;br /&gt;
It's a very good idea to split up changes into discrete patches, giving each a different number (they don't have to be consecutively numbered).  Also, be sure to upload the patch(es) to the patch tracker so they'll get into the codebase for the next release.&lt;br /&gt;
&lt;br /&gt;
Then rebuild the package like this:&lt;br /&gt;
&lt;br /&gt;
   rpmbuild -ba SPECS/package.spec&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Signing your package ===&lt;br /&gt;
&lt;br /&gt;
First, you need to have a public/private keypair. This can be generated with gpg using 'gpg --gen-key'.&lt;br /&gt;
&lt;br /&gt;
To add a signature to an extisting package, use the command rpm --addsign /path/to/package.rpm To sign in the process of building a package, use rpmbuild -bb --sign&lt;br /&gt;
&lt;br /&gt;
To check the signature on a package, use rpm --checksig.&lt;br /&gt;
&lt;br /&gt;
=== Releasing Dists on the [[SourceForge]] File Release Tool ===&lt;br /&gt;
&lt;br /&gt;
To release a file:  (You need Release Tech permission for your Inkscape account)&lt;br /&gt;
&lt;br /&gt;
* ftp upload.sf.net  (anonymous/anonymous)&lt;br /&gt;
* cd incoming&lt;br /&gt;
* mput filename&lt;br /&gt;
* go to Admin -&amp;gt; File Releases&lt;br /&gt;
* scroll to the bottom and click [Add Release] to the inkscape item&lt;br /&gt;
* Enter 0.35 in the box &amp;amp; click “Create this Release”&lt;br /&gt;
* Fill in the form, checkbox the file you uploaded in (c)&lt;br /&gt;
* It won't give you a clear “success” message, but you can check it got in right by going to the Files list.  You can then edit any of the info you entered, to make it more correct.&lt;br /&gt;
&lt;br /&gt;
Also see [[CVSNamingConventions]] if you are making a release. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Announcing Releases ===&lt;br /&gt;
&lt;br /&gt;
When you cut a release, send a copy of the release notes as an announcement to inkscape-announce@lists.sourceforge.net.&lt;br /&gt;
If you find other mailing lists or websites that should receive the announcements, add their email address to the inkscape-announce list.  This is done by a list admin such as Bryce Harrington.&lt;br /&gt;
&lt;br /&gt;
'''[[AnnouncingReleases]]''' - Keep an eye out for other places we could announce such as distros or graphics-related sites (not only Linux-centric!).&lt;br /&gt;
&lt;br /&gt;
=== Updating Website Collateral ===&lt;br /&gt;
&lt;br /&gt;
When a new release is cut, there are several pieces of info that need to be added to the website:&lt;br /&gt;
&lt;br /&gt;
* Add a news item on front page&lt;br /&gt;
* Review/revise FAQ&lt;br /&gt;
* Review/revise Roadmap&lt;br /&gt;
* Add or revise Screenshots (if appropriate)&lt;br /&gt;
* doc directory: Add the manpage for the release, update doc/keys.html file, and change the corresponding version number(s) in doc/index.php.&lt;br /&gt;
** From shell.sf.net, cd to the inkscape_web directory and run the command “(cd ../inkscape; cvs update;chmod g+w -R * 2&amp;gt;/dev/null); pod2html --cachedir=/tmp --infile=../inkscape/inkscape.pod --outfile=doc/inkscape-man.html”.&lt;br /&gt;
&lt;br /&gt;
[[Category:Help Wanted]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Animation-(Timeline)&amp;diff=12980</id>
		<title>Animation-(Timeline)</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Animation-(Timeline)&amp;diff=12980"/>
		<updated>2007-01-28T15:02:18Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* Existing animation programs (Free &amp;amp;amp; non-Free) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Animation|Back to main page for animation]]&lt;br /&gt;
&lt;br /&gt;
=== User interface for timeline-based animation ===&lt;br /&gt;
&lt;br /&gt;
==== Existing animation programs (Free &amp;amp;amp; non-Free) ====&lt;br /&gt;
&lt;br /&gt;
* [[MacromediaFlash]] is a good non-Free example. &lt;br /&gt;
* Ikivo Animator is a good non-Free example producing SVG Tiny animations (http://www.ikivo.com/animator/index.html)&lt;br /&gt;
* Macromedia Director prior to version MX had a different interface (http://www.rice.edu/fondren/erc/howto/director.html) which I prefer(ed) over Flash&lt;br /&gt;
* QFlash is a FUNCTIONAL free-software mock-up of the Flash 4 interface, which can import SVG files but not edit them. (http://qflash.sourceforge.net)&lt;br /&gt;
* F4l is a non-functional free-software mock-up of the Flash 4 interface.(http://f4l.sf.net/)&lt;br /&gt;
* Anime Studio, formerly known as [[Moho]] (http://www.e-frontier.com/article/articleview/1913/1/793?sbss=793) a non-free example. (Written in Java.) Features skeletal animation and automatic tweening of vector operations, [http://img.osnews.com/img/2547/moho4-rh.png view screenshot].&lt;br /&gt;
* [[LimSee2]] (http://wam.inrialpes.fr/software/limsee2/) is an excellent almost-free basis. (visible-source limited-use license)&lt;br /&gt;
* Spalah Flash (http://spalah.sourceforge.net/?p=10) (not to be confused with Spalah CMS) &amp;quot;is a GTK2[[/GNOME2]] based application for generating Macromedia SWF and [[W3C]] SVG animations.&amp;quot;  The GUI is today minimalist but the author is trying to integrate it with inkscape. See http://spalah.sourceforge.net/?p=19&lt;br /&gt;
* SMIL 2.1 player: http://www.cwi.nl/projects/Ambulant/distPlayer.html (GPL)&lt;br /&gt;
* Bob Sabiston's proprietary animation software http://www.flatblackfilms.com&lt;br /&gt;
* [[Synfig]] &amp;lt;span style=&amp;quot;font-size:smaller&amp;quot;&amp;gt;([http://www.synfig.com/ link])&amp;lt;/span&amp;gt; is a film-quality 2D vector animation editor and renderer. (GPL)&lt;br /&gt;
* Ktoon (http://ktoon.toonka.com/) is a 2D Animation Toolkit designed by animators for animators, focused to the Cartoon Industry. (GPL)&lt;br /&gt;
* Jahshaka (http://www.jahshaka.org/) multiplatform QT animation program powered mostly by OpenGL (GPL)&lt;br /&gt;
* Powerpoint (http://office.microsoft.com) has an easy but basic interface. No flash killer, but some nice ideas.&lt;br /&gt;
* Synfig (http://www.synfig.com/)(I think it is GPL) Features image morphing between drawings and output animation that is resolution independent both visually and temporally. &lt;br /&gt;
* The Tab (http://www.the-tab.com/) Another non-free example that features elegant systems for parent-child animation and a very interesting feature that is designed for pseudo-3D camera moves.&lt;br /&gt;
* Pencil (http://www.les-stooges.org/pascal/pencil/index.php?id=Home)&lt;br /&gt;
&lt;br /&gt;
==== Fantavision example ====&lt;br /&gt;
Back in the '80's there was a program on Apple IIE (Amiga and MS-DOS too) called &amp;quot;Fantavision&amp;quot;. It allowed one to create vector artwork (although I didn't understand at the time that that was what it was called) and animations. It allowed one to create frames of animation where you manually repositioned, recolored, scaled, rotated etc. the objects from one frame to the next. However, it then automatically interpolated frames between the 2 frames (the number of interpolated frames was configurable) such that it create a smooth transition of the object moving from one frame to the other. The effect was very similiar to the &amp;quot;Morphing&amp;quot; effect for raster graphics (popularized in a Michael Jackson video, I believe). That is, the system calculated the trajectory of &amp;quot;Key Points&amp;quot; of the objects from one frame to the next.  This process is often called &amp;quot;Tweening&amp;quot; (a term used by Macromedia Flash).  [[Sketch|Skencil]] (formerly known as [[Sketch]]) supports this functionality and describes it as &amp;quot;Blending&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
I guess what I'm saying is that I think a nice interface to create animations would be similiar. So to animate you would do the following:&lt;br /&gt;
&lt;br /&gt;
* Draw the initial SVG Image &lt;br /&gt;
&lt;br /&gt;
* Increment Frame (from say 1 to 20)&lt;br /&gt;
&lt;br /&gt;
* Reposition the elements in frame 20 (including scaling, color changes, adding removing objects, etc, etc, etc)&lt;br /&gt;
&lt;br /&gt;
* System would then calculate a trajectory for each key point from frame 1 to frame 20. Trajectories would be calculated for things like:&lt;br /&gt;
** Each &amp;quot;node&amp;quot; of an object&lt;br /&gt;
** Color &lt;br /&gt;
** Transformation Matrix&lt;br /&gt;
** etc&lt;br /&gt;
&lt;br /&gt;
* You could display/manipulate the trajectories (using the trajectory editor shown above by the original creator of this topic)&lt;br /&gt;
&lt;br /&gt;
* The system would then store the animations using SVG trajectories and the &amp;quot;Key Points&amp;quot; would be the frames you manually created&lt;br /&gt;
&lt;br /&gt;
:So, to create say a 100 frame animation, one might only need to manually create/modify 10 frames and the system would interpolate the additional frames as necessary.&lt;br /&gt;
&lt;br /&gt;
* Also, once the system interpolated frames it would allow you to manually modify the interpolated frames creating further &amp;quot;Key Points&amp;quot; and allow further refinement and interpolation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: 3D apps such as blender also use a technique like this, which I think is most widely known as &amp;quot;keyframe animation&amp;quot; or simply &amp;quot;keyframing&amp;quot;.  However, many such systems tie the keys too closely to actual animation frames, and this creates problems when the frames-per-second rate changes.  Particularly in the case of vector apps which are not so low-level as bitmaps and animation frames, I would suggest that frames should be as abstract as possible.&lt;br /&gt;
&lt;br /&gt;
Having key positions in simple percentages of the total animation time might be a better solution.  This would also need to be a global/local system, of course: animated objects would have their own animation time specified when inserted into a larger document.  A character's walkcycle would end at 100%, but in the larger animation, it would perhaps only be 5% of the total time, yet repeating as the object moves across the screen.&lt;br /&gt;
&lt;br /&gt;
One issue with this abstraction of frames might be that important animation effects do not occur exactly within frames: small things could be mistimed, or simply missed altogether.  If you set the frame rate too low, this would be an obvious side effect, so it's not necessarily a problem&lt;br /&gt;
that Inkscape should try to fix.  On the other hand, a few things could be done to ease this.  For instance, &amp;quot;snapping&amp;quot; animation events to frames when exporting (thereby slightly altering the timing), or perhaps just warning that certain animation events are not visible at such a low frame rate.&lt;br /&gt;
&lt;br /&gt;
Of course, on the web, with SVG and DHTML, where most Inkscape animations will hopefully be used one day, frames are not an issue at all, and we just worry about keys in time :)&lt;br /&gt;
&lt;br /&gt;
ANOTHER NOTE: Interpolation does not necessarily occur along straight lines and linearly in time. Paths are already part of Inkscape, so points could move along paths; also he time-length graph can be something like a path, instead of a straight line.&lt;br /&gt;
&lt;br /&gt;
==== Jahshaka example ====&lt;br /&gt;
&lt;br /&gt;
I have used jahshaka for a small animation. This was my first real experience with animation. Thought rough, jahshaka is all about key frames and setting properties for those key frames.&lt;br /&gt;
&lt;br /&gt;
Things I liked&lt;br /&gt;
&lt;br /&gt;
* Key frames are on a per object basis&lt;br /&gt;
* When an object is selected you can quickly move from one key frame to another&lt;br /&gt;
* properties values for rotation can span beyond 0 and 360, permetting to set three or more complete rotation with too key frame. I think this kind of feature could be used for all bounded values (like color, transparency and so on). Is this compatible with SVG or should it be an artifact ?&lt;br /&gt;
* representation of properties values on a time line graph. This functionnality was still not very usable, but being to interact through that kind of object could be very useful (see below)&lt;br /&gt;
&lt;br /&gt;
Things that lacks (and Inkscape shall have)&lt;br /&gt;
&lt;br /&gt;
* possibility to copy animation properties from one object to another (say copy color animation, or whole animation)&lt;br /&gt;
* possibility to modify a property value for all key frames at once (eg. translation of object for all key frames or a selcted group). I think this could happen through the value = f(time) graph metioned above. You could select points (representing keyframes) and move them up (more), down (less), right (sooner). This graph could be organised by properties set (color, position). I think this kind of graph would be very close to SVG animations tag.&lt;br /&gt;
* macro that helps sets common effects (like blinking for example, or crossing the screen....)&lt;br /&gt;
&lt;br /&gt;
==== Bob Sabiston Example ====&lt;br /&gt;
Bob Sabiston's animation software is an amazing vector-based package that stores line width within the points that make up a line -- derived from a tablet pen. usually in a simple stroke there could be a hundred data points storing width information. Then in the next keyframe, a line from a previous key is selected and re-drawn restricted to the same number of points. The software allow sthe points to be &amp;quot;repositioned&amp;quot; as you watch their previous locations be re-positioned. When you run out, the line ends automatically. This information is interpolated in tweening frames to change shape, width, position, but retains the same number of data-points. See the film &amp;quot;Waking Life&amp;quot; for the making-of video for a demonstration. Also visit his website for examples of it's capabilities converted to flash. http://www.flatblackfilms.com&lt;br /&gt;
&lt;br /&gt;
==== Other thoughts ====&lt;br /&gt;
&lt;br /&gt;
Suggestion from someone else: working like [[CinePaint]] (compared with Gimp), with each frame independently from each svg document (working like this or providing this feature) - providing vectorial edition quality we can't get on apps like Macromedia Flash or any other (maybe [[ToonBoom]] or Moho) - allowing us to make our work fast publish without further lack of quality.&lt;br /&gt;
(One more suggestion about it: being able to convert .swf to .svg sequence (or animated .sgv) and vice versa.)&lt;br /&gt;
&lt;br /&gt;
It is suggested that there be basically two modes: Local (Object) mode and Global mode. Below is a picture showing a very rough design of the local mode:&lt;br /&gt;
&lt;br /&gt;
http://www.inkscape.org/wiki_uploads/anim_gui1.png&lt;br /&gt;
&lt;br /&gt;
In local modes, all properties of the object editing will be shown on a timeline, and one can create and edit frame within the timeline. Then one may assign different value of that properties on different timeline, or make it change linearly, or nonlinearly :)&lt;br /&gt;
&lt;br /&gt;
==== Powerpoint Example ====&lt;br /&gt;
You select an object and add types of animation. These are listed in the custom animation pane. They can be set to occur all at once, one at a time, onclick, with previous or after previous. A number appears next to each object in the editing window when the object has animation applied to it, representing the sequence of the animations. When an object has an Entrance type animation added to it as the first animation, it will not appear on screen until the timeline reaches this point. animations can be linked together to create quite complicated sequences.&lt;br /&gt;
&lt;br /&gt;
==== Onion Skinning ====&lt;br /&gt;
As an animator, one of the features I find most useful is the ability to view a series of frames layered on top of each other (called &amp;quot;onion skinning&amp;quot;). They don't need to be key frames, or even tied to a particular frame rate, just be representative of the state at regular time intervals. It's much more intuitive than looking at a graph of position vs. time or whatever you are animating. After all this is a tool to be creative with, and graphs are more suited to thinking like an engineer.&lt;br /&gt;
&lt;br /&gt;
==== Interactive ====&lt;br /&gt;
I have started using svg to develop interactive displays.  Having used several other svg tools currently on the market, I am interested in a more generic implementation that doesn't have animation effects get in the way of interactive controls.  &lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Discussion]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Inkscape/liveeffectsgoodness&amp;diff=12788</id>
		<title>Inkscape/liveeffectsgoodness</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Inkscape/liveeffectsgoodness&amp;diff=12788"/>
		<updated>2007-01-23T00:45:19Z</updated>

		<summary type="html">&lt;p&gt;Acspike: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BByak's email detailing pathe effects stage II&lt;br /&gt;
&lt;br /&gt;
Overall, our Stage II goals are:&lt;br /&gt;
&lt;br /&gt;
1. make the system capable of handling several different effects,&lt;br /&gt;
with new ones easy to add&lt;br /&gt;
&lt;br /&gt;
2. make sure effects are correctly read in SPPath and in all&lt;br /&gt;
shapes&lt;br /&gt;
&lt;br /&gt;
3. make sure objects with effects are correctly transformed&lt;br /&gt;
&lt;br /&gt;
4. make sure paths with effects are correctly node-edited&lt;br /&gt;
&lt;br /&gt;
5. make sure shapes with effects are correctly handle-edited&lt;br /&gt;
&lt;br /&gt;
6. make sure objects with effects are correctly written and&lt;br /&gt;
rendered the same in Batik&lt;br /&gt;
&lt;br /&gt;
Most of these goals are surprisingly easy to achieve  :)  So don't&lt;br /&gt;
be frightened by the length of this email - it's just wordy&lt;br /&gt;
explanations.&lt;br /&gt;
&lt;br /&gt;
After all this works, we can move on to implementing the Path&lt;br /&gt;
Effects tool and handle-dragging UI for editing effects on&lt;br /&gt;
canvas... that will be Stage III.&lt;br /&gt;
&lt;br /&gt;
Now, the goals in detail:&lt;br /&gt;
&lt;br /&gt;
1. Rename inkscape:distorted into inkscape:path-effect. This&lt;br /&gt;
attribute would store a string identifier of the effect to apply,&lt;br /&gt;
or &amp;quot;none&amp;quot;. If there's no such attribute, it's the same as&lt;br /&gt;
&amp;quot;none&amp;quot;. In addition, register several attributes for distortion&lt;br /&gt;
parameters:&lt;br /&gt;
&lt;br /&gt;
inkscape:path-effect-param1&lt;br /&gt;
inkscape:path-effect-param2&lt;br /&gt;
inkscape:path-effect-param3&lt;br /&gt;
&lt;br /&gt;
etc. The interpretation of these will of course depend on the&lt;br /&gt;
value of inkscape:path-effect.&lt;br /&gt;
&lt;br /&gt;
Then, move the reading of these attributes into SPShape, as they&lt;br /&gt;
will be used by all its subclasses (not only SPPath but also&lt;br /&gt;
shapes) in the same way. (That is, sp_object_read_attr(object,&lt;br /&gt;
&amp;quot;inkscape:path-effect&amp;quot;) etc must also be in sp_shape_build.)&lt;br /&gt;
Store the values in appropriate new members of SPShape. Write a&lt;br /&gt;
generic function that takes SPCurve and a SPShape pointers and&lt;br /&gt;
distorts the SPCurve according to the values of the members of&lt;br /&gt;
SPShape. Store that function in sp-shape.cpp and declare in&lt;br /&gt;
sp-shape.h so that it can be used from outside.&lt;br /&gt;
&lt;br /&gt;
You can even code a couple useful effects at this stage  :) &lt;br /&gt;
&lt;br /&gt;
2. For SPPath, it's all ready: it reads original-d, distorts it&lt;br /&gt;
and sets the curve from that. In shapes, it's even simpler. Take&lt;br /&gt;
SPStar for an example. In sp-star.cpp, find the line&lt;br /&gt;
&lt;br /&gt;
	sp_shape_set_curve_insync (SP_SHAPE (star), c, TRUE);&lt;br /&gt;
&lt;br /&gt;
and just insert the call to the distortion function in sp-shape&lt;br /&gt;
before that, passing it the curve and SP_SHAPE (star). That is&lt;br /&gt;
all! Shapes have no need for original-d because their path is&lt;br /&gt;
generated from the shape parameters anyway.&lt;br /&gt;
&lt;br /&gt;
3. Transforming objects works like this. In &amp;quot;preserve&amp;quot; mode (see&lt;br /&gt;
Inkscape Prefs), a transform= attribute is added or edited on all&lt;br /&gt;
transformed objects. In the &amp;quot;optimize&amp;quot; mode (which is the&lt;br /&gt;
default), various types of objects variously try to embed the&lt;br /&gt;
transform, or a component thereof. If this is not possible, again,&lt;br /&gt;
transform= attribute is added. For example, for paths,&lt;br /&gt;
sp_path_transform can completely embed all of the transform into&lt;br /&gt;
its curve (i.e. into d=), by transforming each path point by that&lt;br /&gt;
matrix, so it returns identity and transform= is not set. For&lt;br /&gt;
rects, sp_rect_set_transform embeds only translation and scaling&lt;br /&gt;
components of the matrix; the remainder, if any, is written as&lt;br /&gt;
transform=. For stars and ellipses, no embedding is attempted at&lt;br /&gt;
all, so the whole transform is always written as transform=.&lt;br /&gt;
&lt;br /&gt;
Now, for paths, sp_path_transform currently transforms the&lt;br /&gt;
(SPShape*)path-&amp;gt;curve, i.e. the distorted curve stored in base&lt;br /&gt;
SPShape instance. But we also need to transform the original path&lt;br /&gt;
by the same matrix too, so that it stays in sync. The easiest way&lt;br /&gt;
to do this, which will also have other benefits, is to store the&lt;br /&gt;
original path in SPPath as another SPCurve. That is,&lt;br /&gt;
(SPShape*)path-&amp;gt;curve will be the distorted path, while&lt;br /&gt;
(SPPath*)path-&amp;gt;original_curve will store the original path.&lt;br /&gt;
&lt;br /&gt;
You will thus need to add this member in sp-path.h and to add to&lt;br /&gt;
store the original SPCurve before distortion in that member in&lt;br /&gt;
sp_path_set, case SP_ATTR_ORIGINAL_D. (You may need to figure out&lt;br /&gt;
how to copy SPCurves and/or bpaths. Also don't forget to free the&lt;br /&gt;
SPCurve when destroying the path in sp_path_release.) Then look at&lt;br /&gt;
sp_path_transform:&lt;br /&gt;
&lt;br /&gt;
    /* Transform the path */&lt;br /&gt;
    NRBPath dpath, spath;&lt;br /&gt;
    spath.path = shape-&amp;gt;curve-&amp;gt;bpath;&lt;br /&gt;
    nr_path_duplicate_transform(&amp;amp;dpath, &amp;amp;spath, xform);&lt;br /&gt;
    SPCurve *curve = sp_curve_new_from_bpath(dpath.path);&lt;br /&gt;
    if (curve) {&lt;br /&gt;
        sp_shape_set_curve(shape, curve, TRUE);&lt;br /&gt;
        sp_curve_unref(curve);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
And just do the same also for your original SPCurve stored in&lt;br /&gt;
SPPath. That is all.&lt;br /&gt;
&lt;br /&gt;
For shapes, you normally don't need to do anything at all. Those&lt;br /&gt;
that don't attempt any embedding and always use transform=&lt;br /&gt;
attribute are not affected at all. Those that do embed do it just&lt;br /&gt;
by adjusting their internal shape parameters and regenerating the&lt;br /&gt;
curve - for example sp_rect_set_transform calls&lt;br /&gt;
sp_rect_set_shape(rect). Provided you inserted a distortion call&lt;br /&gt;
into *_set_shape, you are all set.&lt;br /&gt;
&lt;br /&gt;
CAVEAT: rects are the only shape which currently uses &amp;lt;rect&amp;gt;, not&lt;br /&gt;
&amp;lt;path&amp;gt;. So you cannot apply shape effects to rects at all, until&lt;br /&gt;
this is changed. It's on my TODO for a long time, hope I will get&lt;br /&gt;
a round tuit soon.&lt;br /&gt;
&lt;br /&gt;
4. The Inkscape::NodePath::Path reads the path from SPCurve, but&lt;br /&gt;
after modifying it, it writes directly to the d= attribute. This&lt;br /&gt;
needs to be changed thus: (a) if the path is distorted, read the&lt;br /&gt;
SPCurve from SPPath, not from SPShape (i.e. the original, not the&lt;br /&gt;
distorted one), and (b) if the path is distorted, write the edited&lt;br /&gt;
path to inkscape:original-d= instead of d= (in&lt;br /&gt;
update_repr_internal). Setting inkscape:original-d will trigger&lt;br /&gt;
reading it and setting both original and distorted curves, the&lt;br /&gt;
latter in turn triggering a redisplay of the distorted path. So I&lt;br /&gt;
think this will be enough for nodepath to edit the source path,&lt;br /&gt;
with the nodes generally not lying on the visible distorted&lt;br /&gt;
path. Adding a helper display of the original path between&lt;br /&gt;
nodepath nodes can be left for later.&lt;br /&gt;
&lt;br /&gt;
5. I think here nothing at all is needed. The knotholder thing&lt;br /&gt;
reads and writes from the shape's internal parameters, and thus is&lt;br /&gt;
totally unaffected by the visible distorted path.&lt;br /&gt;
&lt;br /&gt;
6. Look at sp_path_write: it writes the d= attribute from&lt;br /&gt;
(SPShape*)path-&amp;gt;curve, that is, from the distorted path. So the&lt;br /&gt;
&amp;quot;same display in Batik&amp;quot; part is already taken care of. We only&lt;br /&gt;
need to write the original-d so it stays in sync. Just repeat this&lt;br /&gt;
block:&lt;br /&gt;
&lt;br /&gt;
    if ( shape-&amp;gt;curve != NULL ) {&lt;br /&gt;
        NArtBpath *abp = sp_curve_first_bpath(shape-&amp;gt;curve);&lt;br /&gt;
        if (abp) {&lt;br /&gt;
            gchar *str = sp_svg_write_path(abp);&lt;br /&gt;
            sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, str);&lt;br /&gt;
            g_free(str);&lt;br /&gt;
        } else {&lt;br /&gt;
            sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        sp_repr_set_attr(repr, &amp;quot;d&amp;quot;, NULL);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
but for path-&amp;gt;original_curve and the inkscape:original-d&lt;br /&gt;
attribute, and you are all set.&lt;br /&gt;
&lt;br /&gt;
For shapes, again, nothing needs to be done. Except for rects,&lt;br /&gt;
shapes' _write methods (e.g. sp_star_write) create &amp;lt;path&amp;gt; element&lt;br /&gt;
and set its d= from the SPShape curve. This is just what we need.&lt;br /&gt;
&lt;br /&gt;
That is all - as you see, it's all quite simple, logical and fits&lt;br /&gt;
neatly. There will be gotchas of course, but overall the system&lt;br /&gt;
looks quite straightforward and robust. I'm really excited by&lt;br /&gt;
this.&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=12442</id>
		<title>Release notes/0.45</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=12442"/>
		<updated>2007-01-11T03:32:49Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* Extension effects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Inkscape 0.45: overview =&lt;br /&gt;
&lt;br /&gt;
This release brings the exciting new features developed by the Google Summer of Code 2006 participants, as well as tons of other improvements across the board.&lt;br /&gt;
&lt;br /&gt;
= SVG filters: Gaussian blur =&lt;br /&gt;
&lt;br /&gt;
Thanks to Google's Summer of Code program, Inkscape now has basic support for [http://www.w3.org/TR/SVG11/filters.html SVG filters]. The only filter enabled so far is '''Gaussian blur'''. &lt;br /&gt;
&lt;br /&gt;
With it, you can softly and naturally blur any Inkscape objects: paths, shapes, groups, text], images. Clones inherit blurring from their original, but they can also be blurred independently from the original (you can create blurred clones with Tile Clones, too). Both the fill and stroke of an object are blurred together, creating semitransparent margins that smoothly blend into the background. &lt;br /&gt;
&lt;br /&gt;
Gaussian blur enables a wide range of photorealistic effects: arbitrarily shaped shades and lights, depth of field, drop shadows, glows, etc. Also, blurred objects can be used as masks for other objects to achieve the &amp;quot;feathered mask&amp;quot; effect.&lt;br /&gt;
&lt;br /&gt;
* To blur selected objects, open the Fill and Stroke dialog (Ctrl+Shift+F) and use the '''Blur''' slider. The blur value is a percentage, with 100% corresponding to a blurring radius of 1/8 of the object's bounding box' perimeter (that is, for a square, a blur of 100% will have the radius equal to half a side). &lt;br /&gt;
&lt;br /&gt;
* The Tile Clones dialog also supports blurring. On the '''Blur &amp;amp; opacity''' tab, you can set the blur percentage per row or per column of your tiling, as well as randomize blurring and make it alternate (all the same options as for Opacity).&lt;br /&gt;
&lt;br /&gt;
* The quality of on-screen blur display is controlled by the '''Blur quality''' option on the new '''Filters''' tab of Inkscape Preferences (Ctrl+Shift+P). The available options range from best quality/slowest display to worst quality/fastest display, the default being in the middle of the range. Any setting except the &amp;quot;best quality&amp;quot; may introduce some rendering artifacts, especially when blurring thin strokes; on the other hand, the &amp;quot;best quality&amp;quot; setting may make Inkscape extremely slow at high zooms. These settings only affect the screen display of blurred objects; bitmap export always uses the best quality.&lt;br /&gt;
&lt;br /&gt;
Here are a few tips on using blur:&lt;br /&gt;
&lt;br /&gt;
* '''Masks and clipping''' are applied ''after'' blur. That is, if you clip an object and then blur it (or blur it first and then clip - it makes no difference), the clipped edges will remain crisp. Often, this is what you want. If, however, you want to blur the clipped/masked edges too (possibly with a different radius), you can use grouping: group the clipped object with some other object (which you can then delete from the group) and blur the group.&lt;br /&gt;
&lt;br /&gt;
* A simple '''drop shadow''' is now very easy to do: just copy the object, paint the copy black, blur it, shift away a bit and lower it to the bottom. However, such a shadow does not update when you edit the foreground object. If your object is already black (or, more generally, if you want the shadow to be the same color as the object), you can clone instead of copy to make the shadow auto-updating. But what if your foreground object is not black but you need a black shadow? Here's a recipe: unset the object's fill (it becomes black); create ''two'' clones of it; put one clone on top and paint any color you want; put the other clone at bottom, blur it and shift sideways. Now you can edit the unset-fill original (use Alt+click to select it) and everything will update. &lt;br /&gt;
&lt;br /&gt;
* If an object has a fill that you don't want to blur (e.g. pattern, or if it's a bitmap), but you just want to '''feather its edges''', use a blurred transparency mask. For this, copy the object; paint it white; blur it as needed; scale the blurred copy down so its blur margins are entirely within the original object; select both the original and the blurred mask; do Object &amp;gt; Mask &amp;gt; Set.&lt;br /&gt;
&lt;br /&gt;
* Transforming a blurred object transforms its blur, too. This applies to a non-uniform scaling as well, so by squeezing a blurred object you make its blur squeezed as well. So, the easiest way to blur a path horizontally more than vertically is this: stretch it upwards without blur, then apply blur and squeeze it back into the original shape. &lt;br /&gt;
&lt;br /&gt;
* You can combine '''blurring with gradients'''. For example, an ellipse with elliptic opacity gradient will look much softer and more natural when blurred. An object with a horizontal linear opacity gradient, when blurred, will look like it is more blurred on its transparent side than on its opaque side.&lt;br /&gt;
&lt;br /&gt;
* A '''clone of a blurred object''' inherits the blur of the original. Therefore, such a clone can be blurred ''more'', but you can't &amp;quot;unblur&amp;quot; it to make the clone sharper than its original (unless, of course, you unlink it). The Fill and Stroke dialog shows you the amount of the blur applied to this particular object; however, if the object is a clone of an already blurred original, the dialog does not reflect that.&lt;br /&gt;
&lt;br /&gt;
* Note that '''Firefox 2.0''' does not support SVG filters, so your files will be displayed in Firefox 2.0 without blur. However, support has been added  in the current development version (&amp;quot;trunk&amp;quot;) and will be included in Firefox 3.0. The Opera web browser, as well as librsvg (used by Wikipedia) and Batik, support filters correctly.&lt;br /&gt;
&lt;br /&gt;
= Undo history =&lt;br /&gt;
&lt;br /&gt;
* Inkscape now features a &amp;lt;b&amp;gt;History Dialog&amp;lt;/b&amp;gt; accessible through &amp;lt;b&amp;gt;Ctrl+Shift+H&amp;lt;/b&amp;gt; or Edit→Undo History. All changes to the document since it was opened are recorded here.&lt;br /&gt;
** In the dialog, changes are listed from the oldest (top) to the newest (bottom). &lt;br /&gt;
** The type of each change is indicated by an icon and a short description.&lt;br /&gt;
** For readability, consecutive changes of the same type are placed in a collapsable branch showing a triangle marker and the number of the hidden actions in the branch.&lt;br /&gt;
** By clicking on an event event in the list, you can easily move through the undo history, i.e. undo or redo any number of actions with one click.&lt;br /&gt;
&lt;br /&gt;
* The Undo and Redo commands in the Edit menu display the descriptions of the commands to be undone and redone, correspondingly. (These are the same descriptions that you see in the History dialog.)&lt;br /&gt;
&lt;br /&gt;
= Rendering improvements =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Interruptible display&amp;lt;/b&amp;gt;: Previously, Inkscape could not do anything until it finishes the current screen redraw. Now the redraw is made interruptible, so that Inkscape responds to mouse and keyboard input and can abort the current redraw and start over if you do some screen-changing operation. As a result, Inkscape now feels much snappier and more interactive. This interruptibility is fine-tuned for some interactive operations (such as node dragging) so that a balance is achieved between responsiveness and completeness of display.&lt;br /&gt;
&lt;br /&gt;
* Radial gradients are rendered faster by at least 10%.&lt;br /&gt;
&lt;br /&gt;
* Screen render is faster by 2-3%, up to 5% for complex drawings with transparency.&lt;br /&gt;
&lt;br /&gt;
* Display is more responsive when working at high zoom levels when using a tablet.&lt;br /&gt;
&lt;br /&gt;
* Rendering (compositing) quality has been improved. This is most visible with (partially) transparent gradients, banding is a lot less pronounced now. Speed has also been improved in some cases.&lt;br /&gt;
&lt;br /&gt;
= Tools = &lt;br /&gt;
&lt;br /&gt;
== Node tool ==&lt;br /&gt;
&lt;br /&gt;
* You can &amp;lt;b&amp;gt;grow or shrink node selection&amp;lt;/b&amp;gt; by hovering the mouse pointer over a node and using &amp;lt;b&amp;gt;mousewheel&amp;lt;/b&amp;gt; (up = grow, down = shrink) or the keys &amp;lt;b&amp;gt;PageUp&amp;lt;/b&amp;gt; (grow) and &amp;lt;b&amp;gt;PageDown&amp;lt;/b&amp;gt; (shrink). ''Growing'' adds the closest unselected node to the selection; shrinking deselects the farthest selected node. There are two modes that differ by how the closest/farthest nodes are chosen:&lt;br /&gt;
&lt;br /&gt;
** &amp;lt;b&amp;gt;Spatial selection&amp;lt;/b&amp;gt; (Mousewheel, PageUp/PageDown): distances to nodes are measured directly, regardless of which subpath a node belongs to. &lt;br /&gt;
&lt;br /&gt;
** &amp;lt;b&amp;gt;Linear selection&amp;lt;/b&amp;gt; (Ctrl+Mousewheel, Ctrl+PageUp/Ctrl+PageDown): node distances are measured ''along the path'', and only the nodes belonging to the same subpath as the hovered node are considered (i.e. other subpaths are never selected).&lt;br /&gt;
&lt;br /&gt;
:This technique is convenient for quickly selecting an area in a complex path starting from a center - for example, for node sculpting.&lt;br /&gt;
&lt;br /&gt;
== Dropper ==&lt;br /&gt;
&lt;br /&gt;
* Instead of the confusing toggle button, now the Controls bar for the Dropper tool has two checkboxes, &amp;quot;Pick alpha&amp;quot; and &amp;quot;Set alpha&amp;quot;, which work as follows. Suppose you have an object selected and, using Dropper, click on an object which has red (#FF0000) fill and 0.5 opacity (half-transparent).&lt;br /&gt;
** If the &amp;quot;Pick alpha&amp;quot; checkbox is off, the selected object will get the fill color #800000 (i.e. faded-out red) and fill opacity will be at 1.0 (opaque). &lt;br /&gt;
** If the &amp;quot;Pick alpha&amp;quot; checkbox is on but &amp;quot;Set alpha&amp;quot; is off, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 1.0. &lt;br /&gt;
** If both &amp;quot;Pick alpha&amp;quot; and &amp;quot;Set alpha&amp;quot; are on, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 0.5 (half-transparent). &lt;br /&gt;
:If you Shift+click instead of click, the same changes will be made to stroke color and stroke opacity, correspondingly. Note that in no situation can Dropper change the master opacity of the selected object(s), although it can pick it just as it does any other kind of opacity.&lt;br /&gt;
&lt;br /&gt;
== Calligraphy ==&lt;br /&gt;
&lt;br /&gt;
* A new numeric parameter, &amp;lt;b&amp;gt;Caps&amp;lt;/b&amp;gt;, controls the amount of protruding at the ends of calligraphic strokes. This parameter can range from 0 (flat caps, default behavior in previous versions) through 1 (approximately half-circle caps) and up to 5 (long elliptic caps). Rounded caps much improve the look of low-fixation strokes, simulating a rounded pen.  &lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Drag&amp;quot; parameter has been renamed to &amp;lt;b&amp;gt;Wiggle&amp;lt;/b&amp;gt; with a value inversion (i.e. low drag corresponds to high wiggle, and vice versa). Increase this parameter (default is 0) to make the pen waver and wiggle in curly patterns.&lt;br /&gt;
&lt;br /&gt;
= Outline mode =&lt;br /&gt;
&lt;br /&gt;
* A new menu command (&amp;lt;b&amp;gt;View &amp;gt; Display Mode &amp;gt; Toggle&amp;lt;/b&amp;gt;) and a new keyboard shortcut (&amp;lt;b&amp;gt;Ctrl+&amp;amp;lt;keypad 5&amp;amp;gt;&amp;lt;/b&amp;gt;) switch the display mode from Normal to Outline and back.&lt;br /&gt;
&lt;br /&gt;
* The window title displays &amp;quot;&amp;lt;b&amp;gt;(outline)&amp;lt;/b&amp;gt;&amp;quot; next to the file name when that editing window is in Outline mode. &lt;br /&gt;
&lt;br /&gt;
* An object with &amp;lt;b&amp;gt;mask and/or clipping path&amp;lt;/b&amp;gt;, when viewed in Outline mode, now displays both the object itself and its clipping path and mask as objects, using different outline colors. By default, &amp;lt;b&amp;gt;clippaths use green&amp;lt;/b&amp;gt; outlines, and &amp;lt;b&amp;gt;masks use blue&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Images&amp;lt;/b&amp;gt; in Outline mode are displayed as &amp;lt;b&amp;gt;red&amp;lt;/b&amp;gt; (by default) frames with two diagonals.&lt;br /&gt;
&lt;br /&gt;
* An object with no fill and no stroke, invisible and not selectable by mouse clicking in normal mode, can now be &amp;lt;b&amp;gt;picked by a mouse click&amp;lt;/b&amp;gt; in the Outline mode using its visible outline.&lt;br /&gt;
&lt;br /&gt;
* The bug whereby stroked shapes didn't change stroke width when switching to Outline mode or back is fixed.&lt;br /&gt;
&lt;br /&gt;
* All outline colors are changeable by editing the &amp;quot;wireframecolors&amp;quot; group inside &amp;quot;options&amp;quot; in the preferences file (~/.inkscape/preferences.xml). The &amp;quot;onlight&amp;quot; and &amp;quot;ondark&amp;quot; attributes set the colors of the regular object outlines on light and dark backgrounds (default black and white correspondingly); the &amp;quot;images&amp;quot;, &amp;quot;clips&amp;quot;, and &amp;quot;masks&amp;quot; attributes set the colors of images, clipping paths, and masks (defaults are red, green, and blue correspondingly). Each attribute is a decimal integer corresponding to the hex RRGGBBAA of the color.  &lt;br /&gt;
&lt;br /&gt;
* To cater for specialized uses, such as preparing input for personal media cutters, Inkscape now has an option to start in the Outline mode upon launch. To enable this, add the following line to your preferences.xml file:&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;group id=&amp;quot;startmode&amp;quot; outline=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:placing it after the &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; opening tag.&lt;br /&gt;
&lt;br /&gt;
= PDF export = &lt;br /&gt;
&lt;br /&gt;
* A new Cairo-based PDF exporter has been added to Inkscape. Inkscape 0.45 can export shapes, strokes, transparency, gradients, patterns, text, and images correctly to Cairo. While clipping paths and masks are known to be faulty or missing. Cairo will write a PDF with vector graphics when possible and fall back to raster graphics when needed. What can be exported as vectors and how much of the image will be rasterized when the fallback kicks in depends on your version of Cairo. Cairo version 1.2 with the pdf backend compiled in is the minimum requirement for any Cairo-based PDF exports.&lt;br /&gt;
&lt;br /&gt;
* [removed? - mental] The native PDF exporter introduced in Inkscape 0.44 is improved along with the new Cairo-based PDF exporter. Changes since Inkscape 0.44 include: New features: bitmap images can be embedded, pdf files can be exported from commandline. Changed behaviour: the pointless text to path question is gone. Fixed bugs: save failure is now detected, miter limits are now &amp;gt;= 1, pdfs with transparent gradient are now embeddable, eccentric elliptic gradients fixed, dash style inheritance fixed, transparency inheritance fixed.&lt;br /&gt;
&lt;br /&gt;
= PS/EPS export =&lt;br /&gt;
&lt;br /&gt;
* There's a new option to &amp;lt;b&amp;gt;embed the fonts&amp;lt;/b&amp;gt; used in the document in the PS or EPS exported file. As of now, this works for &amp;lt;b&amp;gt;Type 1 fonts only&amp;lt;/b&amp;gt;, not TrueType. The option is available when performing the export from the GUI as well as from the command line via the &amp;lt;code&amp;gt;--export-embed-fonts&amp;lt;/code&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
= EMF export =&lt;br /&gt;
&lt;br /&gt;
* Inkscape has a limited support for exporting &amp;lt;b&amp;gt;EMF&amp;lt;/b&amp;gt; (Enhanced Meta File) format. This works &amp;lt;b&amp;gt;only on Windows&amp;lt;/b&amp;gt;, and only exports strokes and fills with constant colours. No text, no images, no gradients, no transparency.&lt;br /&gt;
&lt;br /&gt;
= Command line =&lt;br /&gt;
&lt;br /&gt;
* The new &amp;lt;code&amp;gt;--export-pdf&amp;lt;/code&amp;gt; command line parameter allows exporting an SVG image to PDF from command line.&lt;br /&gt;
&lt;br /&gt;
= Keyboard profiles =&lt;br /&gt;
&lt;br /&gt;
The previous release allowed sets of keybinding to be created for Inkscape in the style of other applications.  Two more sets of keybindings have been added.  &lt;br /&gt;
&lt;br /&gt;
* Adobe Illustrator &lt;br /&gt;
* Macromedia Freehand&lt;br /&gt;
&lt;br /&gt;
Of course not every feature in these other programs has a direct match to features in Inkscape so if you can please do help us out by reporting any problems you may have or improvements you would like to request.&lt;br /&gt;
&lt;br /&gt;
Additionally, a keybinding that focuses on tablet-based illustration and drawing work has been added:&lt;br /&gt;
&lt;br /&gt;
* right-handed-illustration.xml&lt;br /&gt;
&lt;br /&gt;
This keybinding places all commonly-used commands under the left hand, so that the user's hands rarely leave the keyboard or the tablet/stylus.&lt;br /&gt;
&lt;br /&gt;
(To enable a profile, copy it into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; in the same directory, overwriting the old file. To restore the default Inkscape set, copy &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
More of Inkscape's keys are implemented as actions and are therefore available for remapping via keyboard profiles. New actions include '''EditSelectNext''' and '''EditSelectPrev''' for selecting next/previous object or node (by default, they are bound to Tab/Shift+Tab; as a result of becoming global actions, these keys now work in all tools and not only in Selector and Node tool as before).&lt;br /&gt;
&lt;br /&gt;
= Extension effects =&lt;br /&gt;
&lt;br /&gt;
* 3 '''new parameter types''' have been added to the extension effect UI: tabs, enumerations and optiongroups (radiobuttons). Examples are available of how to use these parameters in the definition of extensions: the new function plotter uses tabs; enumerations are used by the 'Pattern along path' extension; and a small developer example is given to illustrate the use of optiongroups (identical to enumerations).&lt;br /&gt;
&lt;br /&gt;
* A new extension, '''Render &amp;gt; Lorem ipsum''' creates the traditional Latin-like random text for design mock-ups. The number of paragraphs, the number of sentences per paragraph and the possible fluctuation of the number of sentences (for uneven paragraphs) can be adjusted. If no flowed text element is selected, a new one in a new layer is created, matching the size of the canvas.&lt;br /&gt;
&lt;br /&gt;
* '''Pattern along path''': A new powerful extension (in &amp;quot;Generate from path&amp;quot; submenu) allows you to bend, repeat and/or stretch a pattern object (which can be a path or a group) along a &amp;quot;skeleton&amp;quot; path. This makes it easy to create a variety of patterned and shaped strokes. This obsoletes the old &amp;quot;Kochify&amp;quot; extension which is removed.&lt;br /&gt;
&lt;br /&gt;
* '''Color effects''': A new group of extensions in the '''Color''' submenu of the Effects menu allows you to adjust all colors of a selection at once. These commands affect both fill and stroke colors, including gradients (but not bitmaps). The commands include a full set of '''HSL adjustments''' (increasing/decreasing hue, saturation, or lightness by 5%), '''Brighter''' and '''Darker''' (adjust brightness by up or down by 10%), '''Desaturate''', '''Grayscale''', '''Negative''', commands for removing or swapping the Red, Green, Blue channels, as well as a '''Custom''' command where you can set your own formulas for modifying the color channels. These extensions are a temporary solution; in a future version, similar functionality will be added to Inkscape core.&lt;br /&gt;
&lt;br /&gt;
:Note: undoing color changes on gradients exposes a bug where an object seems to &amp;quot;disappear&amp;quot;; this is however only a display issue (caused by the order in which gradients and their users are restored on undo) not causing any loss of information. Also, on large documents and large selections with gradients, Python's XPath code may get quite slow. Despite these shortcomings, we decided to add this extension, because it's genuinely useful functionality which was so far missing in Inkscape.&lt;br /&gt;
&lt;br /&gt;
* The '''Function Plotter''' has been extended, providing greater flexibility in x- and y-range definition. &lt;br /&gt;
&lt;br /&gt;
* g2png: The new group-to-PNG Python extension (g2png) is an easy way to export any group or layer to individual PNG files. It was first created for use in the [http://www.le-radar.com/?mm/inkscape Inkscape User Manual] (also available in SVN's user_manual module) but is also interesting for many other uses. If e.g. you have to draw a set of icons, you can draw them in the same document, thus making copying, duplicating, cloning etc. easier. Then just create a group  for each icon, and with the extension, each group ends up in its own PNG file.&lt;br /&gt;
&lt;br /&gt;
* Recent fixes in the processing of SVG &amp;lt;defs /&amp;gt; have made it possible to implment the often requested '''Color Markers to Match Stroke''' effect. It is no longer necessary to spend long stretches if time hand editing XML to recolor arrow heads and other marker.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Blur Edge&amp;quot; extension is renamed into '''Inset/Outset Halo''' to avoid confusion with the real Gaussian blur that we now support, as well as to better describe what this extension actually does: From the selected path, it creates a group of inset and outset paths that form a stepped &amp;quot;halo&amp;quot; around the object. &lt;br /&gt;
&lt;br /&gt;
* The '''Extract One Image''' extension automatically appends filename extension to the created bitmap file.&lt;br /&gt;
&lt;br /&gt;
* In an extension's INX file, you can specify &amp;lt;code&amp;gt;&amp;amp;lt;effects-menu hidden=&amp;quot;yes&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt; to hide that extension from the Effects menu. However, such a &amp;quot;hidden&amp;quot; extension can still be assigned a keyboard shortcut (by using its &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; as an &amp;quot;action&amp;quot; in your &amp;lt;code&amp;gt;~/.inkscape/keys/default.xml&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
= SVG output =&lt;br /&gt;
&lt;br /&gt;
For specialized uses, several aspects of Inkscape's SVG output can now be customized via editing the preferences.xml file (there's no UI for these options). A &amp;lt;group id=&amp;quot;&amp;lt;b&amp;gt;svgoutput&amp;lt;/b&amp;gt;&amp;quot;&amp;gt; inside &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; can have the following attributes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;usenamedcolors&amp;lt;/b&amp;gt; (default is 0). If nonzero, Inkscape uses symbolic color names (such as &amp;quot;white&amp;quot; or &amp;quot;lime&amp;quot;) and three-digit color designations (such as $dfe) where appropriate; otherwise, it always uses six-digit colors (such as $d0f0e0). Note that in 0.44, the default was to use named colors, which created problems for some extension effects.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;numericprecision&amp;lt;/b&amp;gt; (default is 8). This is the number of significant digits written for each number into SVG. You can lower this number to get slightly more compact SVG at the expense of precision.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;minimumexponent&amp;lt;/b&amp;gt; (default is -8). In transform= attributes, any number whose absolute value is less than 10 to the power of minimumexponent (i.e. less than 10&amp;lt;sup&amp;gt;-8&amp;lt;/sup&amp;gt; by default) is written as 0.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;indent&amp;lt;/b&amp;gt; (default is 2) controls the number of spaces that each level of nesting in SVG is shifted. Set this to 0 to disable indentation.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;inlineattrs&amp;lt;/b&amp;gt; (default is 0). If nonzero, attributes are placed on the same line as their tags; otherwise they are separated by newlines.&lt;br /&gt;
&lt;br /&gt;
= Bitmap tracing =&lt;br /&gt;
&lt;br /&gt;
* A '''new color quantization algorithm''' for multiscan traces works faster (especially for large numbers of colors) and gives more adequate results with less colors used. This improves tracing results both for full-color photographs and for limited-color drawings. &lt;br /&gt;
* The Trace Bitmap dialog now provides access to three more tracing parameters:&lt;br /&gt;
** '''Suppress speckles''': If set, spots or speckles larger than the given size are suppressed in the trace.&lt;br /&gt;
** '''Smooth corners''': This parameter controls how much smoothing is applied to corners in the traced path.&lt;br /&gt;
** '''Optimize paths''': If set, trace paths are optimized by joining adjacent Bezier segments with the given tolerance.&lt;br /&gt;
* All controls in the Trace Bitmap dialog are reorganized to be easier to find. The dialog is redesigned to use two main tabs: '''Mode''' (where you select the tracing mode, such as brightness cutoff or color multiscan) and '''Options''' (where you set various tracing options, such as corner smoothing). The preview is placed horizontally to the right of the tabs. Most labels and tooltips are rewritten for clarity. The trace preview image is made twice larger.&lt;br /&gt;
&lt;br /&gt;
= Even more improvements =&lt;br /&gt;
&lt;br /&gt;
* A 'Save a copy'-function has been added to the file menu, similar to the 'Save a copy' functionality of e.g. Adobe Illustrator. With this function, you can save your document under a new filename, but Inkscape will 'forget' it has done this: later saves will be to the old filename. The default shortcut assigned to this function is: '''Shift+Ctrl+Alt+S'''.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Text and flowed text objects&amp;lt;/b&amp;gt; behave more consistently. Now you can put a flowed text on path or (re)flow it into a shape just as you would do with a regular (unflowed) text. Previously, the need to convert a flowed text to text before these operations was a stumble for many users.&lt;br /&gt;
&lt;br /&gt;
* [new Help commands]&lt;br /&gt;
&lt;br /&gt;
* Exported PNG images have the correct resolution set in the headers.&lt;br /&gt;
&lt;br /&gt;
* [sculpt profiles - bbyak]&lt;br /&gt;
&lt;br /&gt;
* [new toolbar: squeezable, expansion menu, right-click menus - joncruz]&lt;br /&gt;
&lt;br /&gt;
* The Path -&amp;gt; Union (Ctrl++) operation now functions when only a single object is selected. Use this to remove self-intersections from objects.&lt;br /&gt;
&lt;br /&gt;
* We removed the ''&amp;quot;hacked&amp;quot;'' '''filename entry field''' that we had added to the Open and Save dialogs because starting from version 2.10, GTK+ has finally restored this field in their '''standard file dialog'''. The standard field at the top of the dialog supports type-ahead find and performs the default dialog action (open or save) by pressing Enter, which means you can now do a quick '''Ctrl+O, Ctrl+V, Enter''' sequence to open the file whose path is in your clipboard (this closes a long-standing usability bug). Those who use older versions of GTK are advised either to upgrade to 2.10 or use Ctrl+L to open a pop-up filename box. (Our Windows builds are shipped with GTK+ 2.10.)&lt;br /&gt;
&lt;br /&gt;
* The '''Create Bitmap''' function (Alt+B in the default keymap) is made more useful. Unless you have specific resolution or minimum size set for this command in preferences.xml (&amp;lt;code&amp;gt;&amp;amp;lt;group id=&amp;quot;createbitmap&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt;), it will take the '''resolution hint''' from the object whose bitmap copy you are creating (in other words, it will use the resolution that you specified for that object when exporting it via the Export Bitmap dialog), or the default '''90 dpi''' if that object was not yet exported. Also, a 90 dpi bitmap (with its pixels exactly 1 px in size) will be '''snapped''' to the pixel grid. This makes it easy to use Create Bitmap for quick '''rasterization preview''' of an object or document. (Note: if you have used a previous version of Inkscape, your preferences.xml may contain &amp;lt;code&amp;gt;minsize=&amp;quot;250&amp;quot;&amp;lt;/code&amp;gt;; delete this for objects' resolution hints to work.)&lt;br /&gt;
&lt;br /&gt;
* Using extended input (i.e. tablet pressure and tilt) can now be disabled via Preferences (Misc tab). This is intended to be a last-resort option for those platform/hardware combinations that are not properly supported by GTK. With extended input disabled, you can still use your tablet as a mouse. &lt;br /&gt;
&lt;br /&gt;
* Simplify Path now had two modes when working with a group of paths:  the default mode, which treats all of the paths as one large object to simplify, or the new mode, which acts the same as using Simplify on each path in a group separately.  In preferences.xml, set '''options.simplifyindividualpaths''' to 1 to get the new mode.&lt;br /&gt;
&lt;br /&gt;
* For long Simplify operations (more than 20 paths at a time), Inkscape provides user feedback via the status bar as to how many paths have been simplified.  This change also prevents Inkscape from appearing to have locked up during the operation.&lt;br /&gt;
&lt;br /&gt;
* New '''templates''' added for '''video formats''' (PAL, NTSC and HDTV 1080) as well as DVD cover templates that were not installed in the previous version. This will help video and DVD authoring with Inkscape. The business card 85&amp;amp;times;54 template is now installed as well.&lt;br /&gt;
&lt;br /&gt;
* The '''opacity''' of objects is now displayed as percentage, '''from 0 to 100''', both in the Fill &amp;amp; Stroke dialog (with one fractional digit) and in the statusbar style indicator (with no fractional digits), instead of from 0 to 1.0 as before. This makes opacity values easier to read, type, and say.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Other&amp;quot; license type was added to the metadata/license dialog so that people know that they are entering a URI to an &amp;quot;other&amp;quot; license.&lt;br /&gt;
&lt;br /&gt;
* Doxygen DoxyFile is updated.&lt;br /&gt;
&lt;br /&gt;
* Thanks to patches submitted by users of our community, Inkscape can now be built on SGI IRIX 6.5.28, gcc 3.4.0 systems and on Tru64 systems.&lt;br /&gt;
&lt;br /&gt;
= Examples = &lt;br /&gt;
&lt;br /&gt;
* With all the recent additions - clipping, masking, and especially blur - Inkscape is now able to produce extremely photorealistic art. In the share/examples folder in Inkscape distribution, you will find two brand new, stunningly realistic images of shiny cars: &amp;lt;b&amp;gt;car.svgz&amp;lt;/b&amp;gt; by Konstantin Rotkevich and &amp;lt;b&amp;gt;gallardo.svgz&amp;lt;/b&amp;gt; by Michael Grosberg.&lt;br /&gt;
&lt;br /&gt;
* Inkscape 0.45 does not yet have gradient meshes. But with the addition of Gaussian Blur, this feature suddenly got within reach. A new example file, &amp;lt;b&amp;gt;gradient-mesh-experimental.svgz&amp;lt;/b&amp;gt;, explains the approach Inkscape will likely take to implement this feature in a fully SVG-compatible way.&lt;br /&gt;
&lt;br /&gt;
* Although Inkscape does not support animation yet, you can add any animation scripts and attributes to your SVG file manually in a text editor - and the file will still be editable in Inkscape. Tavmjong Bah used this technique to create  &amp;lt;b&amp;gt;animated-clock.svg&amp;lt;/b&amp;gt; which, when loaded in an SVG viewer supporting animation (such as Firefox, Opera, or Batik), demonstrates the intricate moving clockwork of a watch - and shows real time to boot! If loaded in Inkscape, the image is static, but instead you can freely edit any of the objects.&lt;br /&gt;
&lt;br /&gt;
= Translations =&lt;br /&gt;
&lt;br /&gt;
* Remarkable improvements are in the '''Danish''', '''Finnish''', '''Nepalese''' and the '''Vietnamese''' translations of the user interface. They all jumped from 0 to over 90 percent in a very short timespan.&lt;br /&gt;
&lt;br /&gt;
* All people which are familiar with '''pig latin''' are now able to use Inkscape's user interface in that language. Isthay isway oughtbray otay usway ybay away ewnay anslatortray.&lt;br /&gt;
&lt;br /&gt;
* default lituanian template was not installed before, which is now fixed.&lt;br /&gt;
&lt;br /&gt;
* Updated '''British English''', '''Catalan''', '''Bulgarian''' and '''Thai''' translations.&lt;br /&gt;
&lt;br /&gt;
= Tutorials and Templates =&lt;br /&gt;
&lt;br /&gt;
* New tutorial &amp;quot;Easter Eggs&amp;quot; by Steve Karg.&lt;br /&gt;
&lt;br /&gt;
* Added Catalan default template and elements tutorial.&lt;br /&gt;
&lt;br /&gt;
* Russian header and footer templates are added.&lt;br /&gt;
&lt;br /&gt;
= Bugfixes =&lt;br /&gt;
&lt;br /&gt;
* When deleting a node, neighboring smooth nodes are converted to cusp.&lt;br /&gt;
&lt;br /&gt;
* Releasing the mouse button while dragging nodes using a tablet will now always release the nodes.  Before this, a race condition could occur where dragging could continue after the mouse button was released.&lt;br /&gt;
&lt;br /&gt;
* An object's mask and clipping path are now preserved after Simplify, Object/Stroke to path, or boolean operations.&lt;br /&gt;
&lt;br /&gt;
* Ungrouping a group containing clipped/masked objects might sometime break the clip/mask (move it away); fixed.&lt;br /&gt;
&lt;br /&gt;
* User-supplied templates in ~/.inkscape/templates can now be SVGZ files in addition to SVG.&lt;br /&gt;
&lt;br /&gt;
* Previously, Inkscape didn't check if there's enough free memory for its pixel buffers and could crash without warning due to insufficient memory e.g. upon zooming in. This problem became much worse after implementing Gaussian blur, because rendering blurred objects at high zooms may require a pixel buffer much bigger than the visible canvas. Now this situation is handled more gracefully: if a display operation requires more memory than available, or more than 100Mb (which corresponds to a 5000x5000 pixel buffer), it is skipped. This may result in blurred objects &amp;quot;disappearing&amp;quot; at high zooms. This is purely a display issue, however, it never corrupts data; just zoom out (or reduce blur radius) and the disappeared object will show up OK.&lt;br /&gt;
&lt;br /&gt;
* When resizing objects, scaling numbers in the statusbar are no longer overwritten by other text when pressing special keys (alt, shift, ctrl).&lt;br /&gt;
&lt;br /&gt;
* To work around problems some users have had with pressure sensitive tablets ([http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1281512&amp;amp;group_id=93438&amp;amp;atid=604306 bug]), the pressure sensitivity can be disabled from the misc tab of Inkscape preferences dialogue. The tablet can then be used, though with reduced functionality. &lt;br /&gt;
&lt;br /&gt;
* The layer widget in the statusbar used to lose its current layer after an effect run; this is fixed.&lt;br /&gt;
&lt;br /&gt;
* When using different display resolutions or a dual screen setup, dialogs could be displayed off-screen; this is fixed: now Inkscape checks whether the saved position of the dialog is offscreen, if so it will move the dialog to the center of the screen. Note that this not solve all problems. If the dialog is still not visible, go to the [http://sourceforge.net/tracker/?func=detail&amp;amp;atid=604306&amp;amp;aid=1250236&amp;amp;group_id=93438 bugreport]   where a procedure is given to make the dialog visible (editting preferences.xml).&lt;br /&gt;
&lt;br /&gt;
* Performing a boolean union without selecting an object no longer crashes Inkscape.&lt;br /&gt;
&lt;br /&gt;
* Grid and guidelines no longer vanish when changing their color.&lt;br /&gt;
&lt;br /&gt;
* Group transformation is now correctly applied when ungrouping and undo'ing the ungroup.&lt;br /&gt;
&lt;br /&gt;
* Text dialog no longer discards the style of the selected text.&lt;br /&gt;
&lt;br /&gt;
= Known problems =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problem with Dialogs on Top on Microsoft Windows (win32) ====&lt;br /&gt;
&lt;br /&gt;
[Describe minimizing of document window problem, and solution: right-click taskbar button and press &amp;quot;Restore&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==== OSX 10.3.9: cannot open files ====&lt;br /&gt;
&lt;br /&gt;
This bug is due to a missing symbol (_statvfs) in the system library /usr/lib/libSystem.B.dylib on 10.3.9. The dependency is introduced by one of the gnome-vf2 modules.  It is not something we can easily fix other than by not linking with gnome-vfs2, which we will do for or upcoming 0.45 release if no other solution becomes apparent. [mjwybrow]&lt;br /&gt;
&lt;br /&gt;
==== Problems with some Debian libgc-6.7 packages ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape will hang or crash when linked with the first Debian packaged version of the Boehm garbage collection library. This problem was fixed in version 1:6.7-2  of the package.  If you have libgc 6.7 on your Debian-based system, make sure that you are using that version of the package or later.&lt;br /&gt;
&lt;br /&gt;
==== Beware of defective themes on Linux ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape and other Gtk programs can crash on any Linux, when the &amp;lt;b&amp;gt;gtk2-engines-smooth / libsmooth&amp;lt;/b&amp;gt; package is installed. We have filed a bug against libsmooth which is now in gtk-engine and part of gnome. Removing the package resolves the problem. Update: this bug appears to be fixed in newer versions of gtk-engines. If you are affected by this problem please update to a newer version of gtk-engines. If problems persist then please inform the gtk-engines maintainers of the problem. &lt;br /&gt;
&lt;br /&gt;
* A similar crash happens if the &amp;lt;b&amp;gt;KDE Baghira&amp;lt;/b&amp;gt; theme or the package &amp;lt;b&amp;gt;gtk_qt_engine&amp;lt;/b&amp;gt; are installed. If you experience Inkscape crashes on KDE, please try to install a different theme from Baghira, or uninstall the gtk_qt_engine package from your system. Both problems also affect older versions of Inkscape.&lt;br /&gt;
&lt;br /&gt;
=== Previous releases ===&lt;br /&gt;
&lt;br /&gt;
* [[ReleaseNotes044]]&lt;br /&gt;
* [[ReleaseNotes043]]&lt;br /&gt;
* [[ReleaseNotes042]]&lt;br /&gt;
* [[ReleaseNotes041]]&lt;br /&gt;
* [[ReleaseNotes040]]&lt;br /&gt;
* [[ReleaseNotes039]]&lt;br /&gt;
* [[ReleaseNotes038]]&lt;br /&gt;
* [[ReleaseNotes037]]&lt;br /&gt;
* [[ReleaseNotes036]]&lt;br /&gt;
* [[ReleaseNotes035]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Marketing]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=12440</id>
		<title>Release notes/0.45</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=12440"/>
		<updated>2007-01-11T03:27:17Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* Even more improvements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Inkscape 0.45: overview =&lt;br /&gt;
&lt;br /&gt;
This release brings the exciting new features developed by the Google Summer of Code 2006 participants, as well as tons of other improvements across the board.&lt;br /&gt;
&lt;br /&gt;
= SVG filters: Gaussian blur =&lt;br /&gt;
&lt;br /&gt;
Thanks to Google's Summer of Code program, Inkscape now has basic support for [http://www.w3.org/TR/SVG11/filters.html SVG filters]. The only filter enabled so far is '''Gaussian blur'''. &lt;br /&gt;
&lt;br /&gt;
With it, you can softly and naturally blur any Inkscape objects: paths, shapes, groups, text], images. Clones inherit blurring from their original, but they can also be blurred independently from the original (you can create blurred clones with Tile Clones, too). Both the fill and stroke of an object are blurred together, creating semitransparent margins that smoothly blend into the background. &lt;br /&gt;
&lt;br /&gt;
Gaussian blur enables a wide range of photorealistic effects: arbitrarily shaped shades and lights, depth of field, drop shadows, glows, etc. Also, blurred objects can be used as masks for other objects to achieve the &amp;quot;feathered mask&amp;quot; effect.&lt;br /&gt;
&lt;br /&gt;
* To blur selected objects, open the Fill and Stroke dialog (Ctrl+Shift+F) and use the '''Blur''' slider. The blur value is a percentage, with 100% corresponding to a blurring radius of 1/8 of the object's bounding box' perimeter (that is, for a square, a blur of 100% will have the radius equal to half a side). &lt;br /&gt;
&lt;br /&gt;
* The Tile Clones dialog also supports blurring. On the '''Blur &amp;amp; opacity''' tab, you can set the blur percentage per row or per column of your tiling, as well as randomize blurring and make it alternate (all the same options as for Opacity).&lt;br /&gt;
&lt;br /&gt;
* The quality of on-screen blur display is controlled by the '''Blur quality''' option on the new '''Filters''' tab of Inkscape Preferences (Ctrl+Shift+P). The available options range from best quality/slowest display to worst quality/fastest display, the default being in the middle of the range. Any setting except the &amp;quot;best quality&amp;quot; may introduce some rendering artifacts, especially when blurring thin strokes; on the other hand, the &amp;quot;best quality&amp;quot; setting may make Inkscape extremely slow at high zooms. These settings only affect the screen display of blurred objects; bitmap export always uses the best quality.&lt;br /&gt;
&lt;br /&gt;
Here are a few tips on using blur:&lt;br /&gt;
&lt;br /&gt;
* '''Masks and clipping''' are applied ''after'' blur. That is, if you clip an object and then blur it (or blur it first and then clip - it makes no difference), the clipped edges will remain crisp. Often, this is what you want. If, however, you want to blur the clipped/masked edges too (possibly with a different radius), you can use grouping: group the clipped object with some other object (which you can then delete from the group) and blur the group.&lt;br /&gt;
&lt;br /&gt;
* A simple '''drop shadow''' is now very easy to do: just copy the object, paint the copy black, blur it, shift away a bit and lower it to the bottom. However, such a shadow does not update when you edit the foreground object. If your object is already black (or, more generally, if you want the shadow to be the same color as the object), you can clone instead of copy to make the shadow auto-updating. But what if your foreground object is not black but you need a black shadow? Here's a recipe: unset the object's fill (it becomes black); create ''two'' clones of it; put one clone on top and paint any color you want; put the other clone at bottom, blur it and shift sideways. Now you can edit the unset-fill original (use Alt+click to select it) and everything will update. &lt;br /&gt;
&lt;br /&gt;
* If an object has a fill that you don't want to blur (e.g. pattern, or if it's a bitmap), but you just want to '''feather its edges''', use a blurred transparency mask. For this, copy the object; paint it white; blur it as needed; scale the blurred copy down so its blur margins are entirely within the original object; select both the original and the blurred mask; do Object &amp;gt; Mask &amp;gt; Set.&lt;br /&gt;
&lt;br /&gt;
* Transforming a blurred object transforms its blur, too. This applies to a non-uniform scaling as well, so by squeezing a blurred object you make its blur squeezed as well. So, the easiest way to blur a path horizontally more than vertically is this: stretch it upwards without blur, then apply blur and squeeze it back into the original shape. &lt;br /&gt;
&lt;br /&gt;
* You can combine '''blurring with gradients'''. For example, an ellipse with elliptic opacity gradient will look much softer and more natural when blurred. An object with a horizontal linear opacity gradient, when blurred, will look like it is more blurred on its transparent side than on its opaque side.&lt;br /&gt;
&lt;br /&gt;
* A '''clone of a blurred object''' inherits the blur of the original. Therefore, such a clone can be blurred ''more'', but you can't &amp;quot;unblur&amp;quot; it to make the clone sharper than its original (unless, of course, you unlink it). The Fill and Stroke dialog shows you the amount of the blur applied to this particular object; however, if the object is a clone of an already blurred original, the dialog does not reflect that.&lt;br /&gt;
&lt;br /&gt;
* Note that '''Firefox 2.0''' does not support SVG filters, so your files will be displayed in Firefox 2.0 without blur. However, support has been added  in the current development version (&amp;quot;trunk&amp;quot;) and will be included in Firefox 3.0. The Opera web browser, as well as librsvg (used by Wikipedia) and Batik, support filters correctly.&lt;br /&gt;
&lt;br /&gt;
= Undo history =&lt;br /&gt;
&lt;br /&gt;
* Inkscape now features a &amp;lt;b&amp;gt;History Dialog&amp;lt;/b&amp;gt; accessible through &amp;lt;b&amp;gt;Ctrl+Shift+H&amp;lt;/b&amp;gt; or Edit→Undo History. All changes to the document since it was opened are recorded here.&lt;br /&gt;
** In the dialog, changes are listed from the oldest (top) to the newest (bottom). &lt;br /&gt;
** The type of each change is indicated by an icon and a short description.&lt;br /&gt;
** For readability, consecutive changes of the same type are placed in a collapsable branch showing a triangle marker and the number of the hidden actions in the branch.&lt;br /&gt;
** By clicking on an event event in the list, you can easily move through the undo history, i.e. undo or redo any number of actions with one click.&lt;br /&gt;
&lt;br /&gt;
* The Undo and Redo commands in the Edit menu display the descriptions of the commands to be undone and redone, correspondingly. (These are the same descriptions that you see in the History dialog.)&lt;br /&gt;
&lt;br /&gt;
= Rendering improvements =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Interruptible display&amp;lt;/b&amp;gt;: Previously, Inkscape could not do anything until it finishes the current screen redraw. Now the redraw is made interruptible, so that Inkscape responds to mouse and keyboard input and can abort the current redraw and start over if you do some screen-changing operation. As a result, Inkscape now feels much snappier and more interactive. This interruptibility is fine-tuned for some interactive operations (such as node dragging) so that a balance is achieved between responsiveness and completeness of display.&lt;br /&gt;
&lt;br /&gt;
* Radial gradients are rendered faster by at least 10%.&lt;br /&gt;
&lt;br /&gt;
* Screen render is faster by 2-3%, up to 5% for complex drawings with transparency.&lt;br /&gt;
&lt;br /&gt;
* Display is more responsive when working at high zoom levels when using a tablet.&lt;br /&gt;
&lt;br /&gt;
* Rendering (compositing) quality has been improved. This is most visible with (partially) transparent gradients, banding is a lot less pronounced now. Speed has also been improved in some cases.&lt;br /&gt;
&lt;br /&gt;
= Tools = &lt;br /&gt;
&lt;br /&gt;
== Node tool ==&lt;br /&gt;
&lt;br /&gt;
* You can &amp;lt;b&amp;gt;grow or shrink node selection&amp;lt;/b&amp;gt; by hovering the mouse pointer over a node and using &amp;lt;b&amp;gt;mousewheel&amp;lt;/b&amp;gt; (up = grow, down = shrink) or the keys &amp;lt;b&amp;gt;PageUp&amp;lt;/b&amp;gt; (grow) and &amp;lt;b&amp;gt;PageDown&amp;lt;/b&amp;gt; (shrink). ''Growing'' adds the closest unselected node to the selection; shrinking deselects the farthest selected node. There are two modes that differ by how the closest/farthest nodes are chosen:&lt;br /&gt;
&lt;br /&gt;
** &amp;lt;b&amp;gt;Spatial selection&amp;lt;/b&amp;gt; (Mousewheel, PageUp/PageDown): distances to nodes are measured directly, regardless of which subpath a node belongs to. &lt;br /&gt;
&lt;br /&gt;
** &amp;lt;b&amp;gt;Linear selection&amp;lt;/b&amp;gt; (Ctrl+Mousewheel, Ctrl+PageUp/Ctrl+PageDown): node distances are measured ''along the path'', and only the nodes belonging to the same subpath as the hovered node are considered (i.e. other subpaths are never selected).&lt;br /&gt;
&lt;br /&gt;
:This technique is convenient for quickly selecting an area in a complex path starting from a center - for example, for node sculpting.&lt;br /&gt;
&lt;br /&gt;
== Dropper ==&lt;br /&gt;
&lt;br /&gt;
* Instead of the confusing toggle button, now the Controls bar for the Dropper tool has two checkboxes, &amp;quot;Pick alpha&amp;quot; and &amp;quot;Set alpha&amp;quot;, which work as follows. Suppose you have an object selected and, using Dropper, click on an object which has red (#FF0000) fill and 0.5 opacity (half-transparent).&lt;br /&gt;
** If the &amp;quot;Pick alpha&amp;quot; checkbox is off, the selected object will get the fill color #800000 (i.e. faded-out red) and fill opacity will be at 1.0 (opaque). &lt;br /&gt;
** If the &amp;quot;Pick alpha&amp;quot; checkbox is on but &amp;quot;Set alpha&amp;quot; is off, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 1.0. &lt;br /&gt;
** If both &amp;quot;Pick alpha&amp;quot; and &amp;quot;Set alpha&amp;quot; are on, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 0.5 (half-transparent). &lt;br /&gt;
:If you Shift+click instead of click, the same changes will be made to stroke color and stroke opacity, correspondingly. Note that in no situation can Dropper change the master opacity of the selected object(s), although it can pick it just as it does any other kind of opacity.&lt;br /&gt;
&lt;br /&gt;
== Calligraphy ==&lt;br /&gt;
&lt;br /&gt;
* A new numeric parameter, &amp;lt;b&amp;gt;Caps&amp;lt;/b&amp;gt;, controls the amount of protruding at the ends of calligraphic strokes. This parameter can range from 0 (flat caps, default behavior in previous versions) through 1 (approximately half-circle caps) and up to 5 (long elliptic caps). Rounded caps much improve the look of low-fixation strokes, simulating a rounded pen.  &lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Drag&amp;quot; parameter has been renamed to &amp;lt;b&amp;gt;Wiggle&amp;lt;/b&amp;gt; with a value inversion (i.e. low drag corresponds to high wiggle, and vice versa). Increase this parameter (default is 0) to make the pen waver and wiggle in curly patterns.&lt;br /&gt;
&lt;br /&gt;
= Outline mode =&lt;br /&gt;
&lt;br /&gt;
* A new menu command (&amp;lt;b&amp;gt;View &amp;gt; Display Mode &amp;gt; Toggle&amp;lt;/b&amp;gt;) and a new keyboard shortcut (&amp;lt;b&amp;gt;Ctrl+&amp;amp;lt;keypad 5&amp;amp;gt;&amp;lt;/b&amp;gt;) switch the display mode from Normal to Outline and back.&lt;br /&gt;
&lt;br /&gt;
* The window title displays &amp;quot;&amp;lt;b&amp;gt;(outline)&amp;lt;/b&amp;gt;&amp;quot; next to the file name when that editing window is in Outline mode. &lt;br /&gt;
&lt;br /&gt;
* An object with &amp;lt;b&amp;gt;mask and/or clipping path&amp;lt;/b&amp;gt;, when viewed in Outline mode, now displays both the object itself and its clipping path and mask as objects, using different outline colors. By default, &amp;lt;b&amp;gt;clippaths use green&amp;lt;/b&amp;gt; outlines, and &amp;lt;b&amp;gt;masks use blue&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Images&amp;lt;/b&amp;gt; in Outline mode are displayed as &amp;lt;b&amp;gt;red&amp;lt;/b&amp;gt; (by default) frames with two diagonals.&lt;br /&gt;
&lt;br /&gt;
* An object with no fill and no stroke, invisible and not selectable by mouse clicking in normal mode, can now be &amp;lt;b&amp;gt;picked by a mouse click&amp;lt;/b&amp;gt; in the Outline mode using its visible outline.&lt;br /&gt;
&lt;br /&gt;
* The bug whereby stroked shapes didn't change stroke width when switching to Outline mode or back is fixed.&lt;br /&gt;
&lt;br /&gt;
* All outline colors are changeable by editing the &amp;quot;wireframecolors&amp;quot; group inside &amp;quot;options&amp;quot; in the preferences file (~/.inkscape/preferences.xml). The &amp;quot;onlight&amp;quot; and &amp;quot;ondark&amp;quot; attributes set the colors of the regular object outlines on light and dark backgrounds (default black and white correspondingly); the &amp;quot;images&amp;quot;, &amp;quot;clips&amp;quot;, and &amp;quot;masks&amp;quot; attributes set the colors of images, clipping paths, and masks (defaults are red, green, and blue correspondingly). Each attribute is a decimal integer corresponding to the hex RRGGBBAA of the color.  &lt;br /&gt;
&lt;br /&gt;
* To cater for specialized uses, such as preparing input for personal media cutters, Inkscape now has an option to start in the Outline mode upon launch. To enable this, add the following line to your preferences.xml file:&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;group id=&amp;quot;startmode&amp;quot; outline=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:placing it after the &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; opening tag.&lt;br /&gt;
&lt;br /&gt;
= PDF export = &lt;br /&gt;
&lt;br /&gt;
* A new Cairo-based PDF exporter has been added to Inkscape. Inkscape 0.45 can export shapes, strokes, transparency, gradients, patterns, text, and images correctly to Cairo. While clipping paths and masks are known to be faulty or missing. Cairo will write a PDF with vector graphics when possible and fall back to raster graphics when needed. What can be exported as vectors and how much of the image will be rasterized when the fallback kicks in depends on your version of Cairo. Cairo version 1.2 with the pdf backend compiled in is the minimum requirement for any Cairo-based PDF exports.&lt;br /&gt;
&lt;br /&gt;
* [removed? - mental] The native PDF exporter introduced in Inkscape 0.44 is improved along with the new Cairo-based PDF exporter. Changes since Inkscape 0.44 include: New features: bitmap images can be embedded, pdf files can be exported from commandline. Changed behaviour: the pointless text to path question is gone. Fixed bugs: save failure is now detected, miter limits are now &amp;gt;= 1, pdfs with transparent gradient are now embeddable, eccentric elliptic gradients fixed, dash style inheritance fixed, transparency inheritance fixed.&lt;br /&gt;
&lt;br /&gt;
= PS/EPS export =&lt;br /&gt;
&lt;br /&gt;
* There's a new option to &amp;lt;b&amp;gt;embed the fonts&amp;lt;/b&amp;gt; used in the document in the PS or EPS exported file. As of now, this works for &amp;lt;b&amp;gt;Type 1 fonts only&amp;lt;/b&amp;gt;, not TrueType. The option is available when performing the export from the GUI as well as from the command line via the &amp;lt;code&amp;gt;--export-embed-fonts&amp;lt;/code&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
= EMF export =&lt;br /&gt;
&lt;br /&gt;
* Inkscape has a limited support for exporting &amp;lt;b&amp;gt;EMF&amp;lt;/b&amp;gt; (Enhanced Meta File) format. This works &amp;lt;b&amp;gt;only on Windows&amp;lt;/b&amp;gt;, and only exports strokes and fills with constant colours. No text, no images, no gradients, no transparency.&lt;br /&gt;
&lt;br /&gt;
= Command line =&lt;br /&gt;
&lt;br /&gt;
* The new &amp;lt;code&amp;gt;--export-pdf&amp;lt;/code&amp;gt; command line parameter allows exporting an SVG image to PDF from command line.&lt;br /&gt;
&lt;br /&gt;
= Keyboard profiles =&lt;br /&gt;
&lt;br /&gt;
The previous release allowed sets of keybinding to be created for Inkscape in the style of other applications.  Two more sets of keybindings have been added.  &lt;br /&gt;
&lt;br /&gt;
* Adobe Illustrator &lt;br /&gt;
* Macromedia Freehand&lt;br /&gt;
&lt;br /&gt;
Of course not every feature in these other programs has a direct match to features in Inkscape so if you can please do help us out by reporting any problems you may have or improvements you would like to request.&lt;br /&gt;
&lt;br /&gt;
Additionally, a keybinding that focuses on tablet-based illustration and drawing work has been added:&lt;br /&gt;
&lt;br /&gt;
* right-handed-illustration.xml&lt;br /&gt;
&lt;br /&gt;
This keybinding places all commonly-used commands under the left hand, so that the user's hands rarely leave the keyboard or the tablet/stylus.&lt;br /&gt;
&lt;br /&gt;
(To enable a profile, copy it into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; in the same directory, overwriting the old file. To restore the default Inkscape set, copy &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
More of Inkscape's keys are implemented as actions and are therefore available for remapping via keyboard profiles. New actions include '''EditSelectNext''' and '''EditSelectPrev''' for selecting next/previous object or node (by default, they are bound to Tab/Shift+Tab; as a result of becoming global actions, these keys now work in all tools and not only in Selector and Node tool as before).&lt;br /&gt;
&lt;br /&gt;
= Extension effects =&lt;br /&gt;
&lt;br /&gt;
* 3 '''new parameter types''' have been added to the extension effect UI: tabs, enumerations and optiongroups (radiobuttons). Examples are available of how to use these parameters in the definition of extensions: the new function plotter uses tabs; enumerations are used by the 'Pattern along path' extension; and a small developer example is given to illustrate the use of optiongroups (identical to enumerations).&lt;br /&gt;
&lt;br /&gt;
* A new extension, '''Render &amp;gt; Lorem ipsum''' creates the traditional Latin-like random text for design mock-ups. The number of paragraphs, the number of sentences per paragraph and the possible fluctuation of the number of sentences (for uneven paragraphs) can be adjusted. If no flowed text element is selected, a new one in a new layer is created, matching the size of the canvas.&lt;br /&gt;
&lt;br /&gt;
* '''Pattern along path''': A new powerful extension (in &amp;quot;Generate from path&amp;quot; submenu) allows you to bend, repeat and/or stretch a pattern object (which can be a path or a group) along a &amp;quot;skeleton&amp;quot; path. This makes it easy to create a variety of patterned and shaped strokes. This obsoletes the old &amp;quot;Kochify&amp;quot; extension which is removed.&lt;br /&gt;
&lt;br /&gt;
* '''Color effects''': A new group of extensions in the '''Color''' submenu of the Effects menu allows you to adjust all colors of a selection at once. These commands affect both fill and stroke colors, including gradients (but not bitmaps). The commands include a full set of '''HSL adjustments''' (increasing/decreasing hue, saturation, or lightness by 5%), '''Brighter''' and '''Darker''' (adjust brightness by up or down by 10%), '''Desaturate''', '''Grayscale''', '''Negative''', commands for removing or swapping the Red, Green, Blue channels, as well as a '''Custom''' command where you can set your own formulas for modifying the color channels. These extensions are a temporary solution; in a future version, similar functionality will be added to Inkscape core.&lt;br /&gt;
&lt;br /&gt;
:Note: undoing color changes on gradients exposes a bug where an object seems to &amp;quot;disappear&amp;quot;; this is however only a display issue (caused by the order in which gradients and their users are restored on undo) not causing any loss of information. Also, on large documents and large selections with gradients, Python's XPath code may get quite slow. Despite these shortcomings, we decided to add this extension, because it's genuinely useful functionality which was so far missing in Inkscape.&lt;br /&gt;
&lt;br /&gt;
* The '''Function Plotter''' has been extended, providing greater flexibility in x- and y-range definition. &lt;br /&gt;
&lt;br /&gt;
* g2png: The new group-to-PNG Python extension (g2png) is an easy way to export any group or layer to individual PNG files. It was first created for use in the [http://www.le-radar.com/?mm/inkscape Inkscape User Manual] (also available in SVN's user_manual module) but is also interesting for many other uses. If e.g. you have to draw a set of icons, you can draw them in the same document, thus making copying, duplicating, cloning etc. easier. Then just create a group  for each icon, and with the extension, each group ends up in its own PNG file.&lt;br /&gt;
&lt;br /&gt;
* [color markers to match stroke - acspike]&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Blur Edge&amp;quot; extension is renamed into '''Inset/Outset Halo''' to avoid confusion with the real Gaussian blur that we now support, as well as to better describe what this extension actually does: From the selected path, it creates a group of inset and outset paths that form a stepped &amp;quot;halo&amp;quot; around the object. &lt;br /&gt;
&lt;br /&gt;
* The '''Extract One Image''' extension automatically appends filename extension to the created bitmap file.&lt;br /&gt;
&lt;br /&gt;
* In an extension's INX file, you can specify &amp;lt;code&amp;gt;&amp;amp;lt;effects-menu hidden=&amp;quot;yes&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt; to hide that extension from the Effects menu. However, such a &amp;quot;hidden&amp;quot; extension can still be assigned a keyboard shortcut (by using its &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; as an &amp;quot;action&amp;quot; in your &amp;lt;code&amp;gt;~/.inkscape/keys/default.xml&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
= SVG output =&lt;br /&gt;
&lt;br /&gt;
For specialized uses, several aspects of Inkscape's SVG output can now be customized via editing the preferences.xml file (there's no UI for these options). A &amp;lt;group id=&amp;quot;&amp;lt;b&amp;gt;svgoutput&amp;lt;/b&amp;gt;&amp;quot;&amp;gt; inside &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; can have the following attributes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;usenamedcolors&amp;lt;/b&amp;gt; (default is 0). If nonzero, Inkscape uses symbolic color names (such as &amp;quot;white&amp;quot; or &amp;quot;lime&amp;quot;) and three-digit color designations (such as $dfe) where appropriate; otherwise, it always uses six-digit colors (such as $d0f0e0). Note that in 0.44, the default was to use named colors, which created problems for some extension effects.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;numericprecision&amp;lt;/b&amp;gt; (default is 8). This is the number of significant digits written for each number into SVG. You can lower this number to get slightly more compact SVG at the expense of precision.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;minimumexponent&amp;lt;/b&amp;gt; (default is -8). In transform= attributes, any number whose absolute value is less than 10 to the power of minimumexponent (i.e. less than 10&amp;lt;sup&amp;gt;-8&amp;lt;/sup&amp;gt; by default) is written as 0.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;indent&amp;lt;/b&amp;gt; (default is 2) controls the number of spaces that each level of nesting in SVG is shifted. Set this to 0 to disable indentation.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;inlineattrs&amp;lt;/b&amp;gt; (default is 0). If nonzero, attributes are placed on the same line as their tags; otherwise they are separated by newlines.&lt;br /&gt;
&lt;br /&gt;
= Bitmap tracing =&lt;br /&gt;
&lt;br /&gt;
* A '''new color quantization algorithm''' for multiscan traces works faster (especially for large numbers of colors) and gives more adequate results with less colors used. This improves tracing results both for full-color photographs and for limited-color drawings. &lt;br /&gt;
* The Trace Bitmap dialog now provides access to three more tracing parameters:&lt;br /&gt;
** '''Suppress speckles''': If set, spots or speckles larger than the given size are suppressed in the trace.&lt;br /&gt;
** '''Smooth corners''': This parameter controls how much smoothing is applied to corners in the traced path.&lt;br /&gt;
** '''Optimize paths''': If set, trace paths are optimized by joining adjacent Bezier segments with the given tolerance.&lt;br /&gt;
* All controls in the Trace Bitmap dialog are reorganized to be easier to find. The dialog is redesigned to use two main tabs: '''Mode''' (where you select the tracing mode, such as brightness cutoff or color multiscan) and '''Options''' (where you set various tracing options, such as corner smoothing). The preview is placed horizontally to the right of the tabs. Most labels and tooltips are rewritten for clarity. The trace preview image is made twice larger.&lt;br /&gt;
&lt;br /&gt;
= Even more improvements =&lt;br /&gt;
&lt;br /&gt;
* A 'Save a copy'-function has been added to the file menu, similar to the 'Save a copy' functionality of e.g. Adobe Illustrator. With this function, you can save your document under a new filename, but Inkscape will 'forget' it has done this: later saves will be to the old filename. The default shortcut assigned to this function is: '''Shift+Ctrl+Alt+S'''.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Text and flowed text objects&amp;lt;/b&amp;gt; behave more consistently. Now you can put a flowed text on path or (re)flow it into a shape just as you would do with a regular (unflowed) text. Previously, the need to convert a flowed text to text before these operations was a stumble for many users.&lt;br /&gt;
&lt;br /&gt;
* [new Help commands]&lt;br /&gt;
&lt;br /&gt;
* Exported PNG images have the correct resolution set in the headers.&lt;br /&gt;
&lt;br /&gt;
* [sculpt profiles - bbyak]&lt;br /&gt;
&lt;br /&gt;
* [new toolbar: squeezable, expansion menu, right-click menus - joncruz]&lt;br /&gt;
&lt;br /&gt;
* The Path -&amp;gt; Union (Ctrl++) operation now functions when only a single object is selected. Use this to remove self-intersections from objects.&lt;br /&gt;
&lt;br /&gt;
* We removed the ''&amp;quot;hacked&amp;quot;'' '''filename entry field''' that we had added to the Open and Save dialogs because starting from version 2.10, GTK+ has finally restored this field in their '''standard file dialog'''. The standard field at the top of the dialog supports type-ahead find and performs the default dialog action (open or save) by pressing Enter, which means you can now do a quick '''Ctrl+O, Ctrl+V, Enter''' sequence to open the file whose path is in your clipboard (this closes a long-standing usability bug). Those who use older versions of GTK are advised either to upgrade to 2.10 or use Ctrl+L to open a pop-up filename box. (Our Windows builds are shipped with GTK+ 2.10.)&lt;br /&gt;
&lt;br /&gt;
* The '''Create Bitmap''' function (Alt+B in the default keymap) is made more useful. Unless you have specific resolution or minimum size set for this command in preferences.xml (&amp;lt;code&amp;gt;&amp;amp;lt;group id=&amp;quot;createbitmap&amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt;), it will take the '''resolution hint''' from the object whose bitmap copy you are creating (in other words, it will use the resolution that you specified for that object when exporting it via the Export Bitmap dialog), or the default '''90 dpi''' if that object was not yet exported. Also, a 90 dpi bitmap (with its pixels exactly 1 px in size) will be '''snapped''' to the pixel grid. This makes it easy to use Create Bitmap for quick '''rasterization preview''' of an object or document. (Note: if you have used a previous version of Inkscape, your preferences.xml may contain &amp;lt;code&amp;gt;minsize=&amp;quot;250&amp;quot;&amp;lt;/code&amp;gt;; delete this for objects' resolution hints to work.)&lt;br /&gt;
&lt;br /&gt;
* Using extended input (i.e. tablet pressure and tilt) can now be disabled via Preferences (Misc tab). This is intended to be a last-resort option for those platform/hardware combinations that are not properly supported by GTK. With extended input disabled, you can still use your tablet as a mouse. &lt;br /&gt;
&lt;br /&gt;
* Simplify Path now had two modes when working with a group of paths:  the default mode, which treats all of the paths as one large object to simplify, or the new mode, which acts the same as using Simplify on each path in a group separately.  In preferences.xml, set '''options.simplifyindividualpaths''' to 1 to get the new mode.&lt;br /&gt;
&lt;br /&gt;
* For long Simplify operations (more than 20 paths at a time), Inkscape provides user feedback via the status bar as to how many paths have been simplified.  This change also prevents Inkscape from appearing to have locked up during the operation.&lt;br /&gt;
&lt;br /&gt;
* New '''templates''' added for '''video formats''' (PAL, NTSC and HDTV 1080) as well as DVD cover templates that were not installed in the previous version. This will help video and DVD authoring with Inkscape. The business card 85&amp;amp;times;54 template is now installed as well.&lt;br /&gt;
&lt;br /&gt;
* The '''opacity''' of objects is now displayed as percentage, '''from 0 to 100''', both in the Fill &amp;amp; Stroke dialog (with one fractional digit) and in the statusbar style indicator (with no fractional digits), instead of from 0 to 1.0 as before. This makes opacity values easier to read, type, and say.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Other&amp;quot; license type was added to the metadata/license dialog so that people know that they are entering a URI to an &amp;quot;other&amp;quot; license.&lt;br /&gt;
&lt;br /&gt;
* Doxygen DoxyFile is updated.&lt;br /&gt;
&lt;br /&gt;
* Thanks to patches submitted by users of our community, Inkscape can now be built on SGI IRIX 6.5.28, gcc 3.4.0 systems and on Tru64 systems.&lt;br /&gt;
&lt;br /&gt;
= Examples = &lt;br /&gt;
&lt;br /&gt;
* With all the recent additions - clipping, masking, and especially blur - Inkscape is now able to produce extremely photorealistic art. In the share/examples folder in Inkscape distribution, you will find two brand new, stunningly realistic images of shiny cars: &amp;lt;b&amp;gt;car.svgz&amp;lt;/b&amp;gt; by Konstantin Rotkevich and &amp;lt;b&amp;gt;gallardo.svgz&amp;lt;/b&amp;gt; by Michael Grosberg.&lt;br /&gt;
&lt;br /&gt;
* Inkscape 0.45 does not yet have gradient meshes. But with the addition of Gaussian Blur, this feature suddenly got within reach. A new example file, &amp;lt;b&amp;gt;gradient-mesh-experimental.svgz&amp;lt;/b&amp;gt;, explains the approach Inkscape will likely take to implement this feature in a fully SVG-compatible way.&lt;br /&gt;
&lt;br /&gt;
* Although Inkscape does not support animation yet, you can add any animation scripts and attributes to your SVG file manually in a text editor - and the file will still be editable in Inkscape. Tavmjong Bah used this technique to create  &amp;lt;b&amp;gt;animated-clock.svg&amp;lt;/b&amp;gt; which, when loaded in an SVG viewer supporting animation (such as Firefox, Opera, or Batik), demonstrates the intricate moving clockwork of a watch - and shows real time to boot! If loaded in Inkscape, the image is static, but instead you can freely edit any of the objects.&lt;br /&gt;
&lt;br /&gt;
= Translations =&lt;br /&gt;
&lt;br /&gt;
* Remarkable improvements are in the '''Danish''', '''Finnish''', '''Nepalese''' and the '''Vietnamese''' translations of the user interface. They all jumped from 0 to over 90 percent in a very short timespan.&lt;br /&gt;
&lt;br /&gt;
* All people which are familiar with '''pig latin''' are now able to use Inkscape's user interface in that language. Isthay isway oughtbray otay usway ybay away ewnay anslatortray.&lt;br /&gt;
&lt;br /&gt;
* default lituanian template was not installed before, which is now fixed.&lt;br /&gt;
&lt;br /&gt;
* Updated '''British English''', '''Catalan''', '''Bulgarian''' and '''Thai''' translations.&lt;br /&gt;
&lt;br /&gt;
= Tutorials and Templates =&lt;br /&gt;
&lt;br /&gt;
* New tutorial &amp;quot;Easter Eggs&amp;quot; by Steve Karg.&lt;br /&gt;
&lt;br /&gt;
* Added Catalan default template and elements tutorial.&lt;br /&gt;
&lt;br /&gt;
* Russian header and footer templates are added.&lt;br /&gt;
&lt;br /&gt;
= Bugfixes =&lt;br /&gt;
&lt;br /&gt;
* When deleting a node, neighboring smooth nodes are converted to cusp.&lt;br /&gt;
&lt;br /&gt;
* Releasing the mouse button while dragging nodes using a tablet will now always release the nodes.  Before this, a race condition could occur where dragging could continue after the mouse button was released.&lt;br /&gt;
&lt;br /&gt;
* An object's mask and clipping path are now preserved after Simplify, Object/Stroke to path, or boolean operations.&lt;br /&gt;
&lt;br /&gt;
* Ungrouping a group containing clipped/masked objects might sometime break the clip/mask (move it away); fixed.&lt;br /&gt;
&lt;br /&gt;
* User-supplied templates in ~/.inkscape/templates can now be SVGZ files in addition to SVG.&lt;br /&gt;
&lt;br /&gt;
* Previously, Inkscape didn't check if there's enough free memory for its pixel buffers and could crash without warning due to insufficient memory e.g. upon zooming in. This problem became much worse after implementing Gaussian blur, because rendering blurred objects at high zooms may require a pixel buffer much bigger than the visible canvas. Now this situation is handled more gracefully: if a display operation requires more memory than available, or more than 100Mb (which corresponds to a 5000x5000 pixel buffer), it is skipped. This may result in blurred objects &amp;quot;disappearing&amp;quot; at high zooms. This is purely a display issue, however, it never corrupts data; just zoom out (or reduce blur radius) and the disappeared object will show up OK.&lt;br /&gt;
&lt;br /&gt;
* When resizing objects, scaling numbers in the statusbar are no longer overwritten by other text when pressing special keys (alt, shift, ctrl).&lt;br /&gt;
&lt;br /&gt;
* To work around problems some users have had with pressure sensitive tablets ([http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1281512&amp;amp;group_id=93438&amp;amp;atid=604306 bug]), the pressure sensitivity can be disabled from the misc tab of Inkscape preferences dialogue. The tablet can then be used, though with reduced functionality. &lt;br /&gt;
&lt;br /&gt;
* The layer widget in the statusbar used to lose its current layer after an effect run; this is fixed.&lt;br /&gt;
&lt;br /&gt;
* When using different display resolutions or a dual screen setup, dialogs could be displayed off-screen; this is fixed: now Inkscape checks whether the saved position of the dialog is offscreen, if so it will move the dialog to the center of the screen. Note that this not solve all problems. If the dialog is still not visible, go to the [http://sourceforge.net/tracker/?func=detail&amp;amp;atid=604306&amp;amp;aid=1250236&amp;amp;group_id=93438 bugreport]   where a procedure is given to make the dialog visible (editting preferences.xml).&lt;br /&gt;
&lt;br /&gt;
* Performing a boolean union without selecting an object no longer crashes Inkscape.&lt;br /&gt;
&lt;br /&gt;
* Grid and guidelines no longer vanish when changing their color.&lt;br /&gt;
&lt;br /&gt;
* Group transformation is now correctly applied when ungrouping and undo'ing the ungroup.&lt;br /&gt;
&lt;br /&gt;
* Text dialog no longer discards the style of the selected text.&lt;br /&gt;
&lt;br /&gt;
= Known problems =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problem with Dialogs on Top on Microsoft Windows (win32) ====&lt;br /&gt;
&lt;br /&gt;
[Describe minimizing of document window problem, and solution: right-click taskbar button and press &amp;quot;Restore&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==== OSX 10.3.9: cannot open files ====&lt;br /&gt;
&lt;br /&gt;
This bug is due to a missing symbol (_statvfs) in the system library /usr/lib/libSystem.B.dylib on 10.3.9. The dependency is introduced by one of the gnome-vf2 modules.  It is not something we can easily fix other than by not linking with gnome-vfs2, which we will do for or upcoming 0.45 release if no other solution becomes apparent. [mjwybrow]&lt;br /&gt;
&lt;br /&gt;
==== Problems with some Debian libgc-6.7 packages ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape will hang or crash when linked with the first Debian packaged version of the Boehm garbage collection library. This problem was fixed in version 1:6.7-2  of the package.  If you have libgc 6.7 on your Debian-based system, make sure that you are using that version of the package or later.&lt;br /&gt;
&lt;br /&gt;
==== Beware of defective themes on Linux ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape and other Gtk programs can crash on any Linux, when the &amp;lt;b&amp;gt;gtk2-engines-smooth / libsmooth&amp;lt;/b&amp;gt; package is installed. We have filed a bug against libsmooth which is now in gtk-engine and part of gnome. Removing the package resolves the problem. Update: this bug appears to be fixed in newer versions of gtk-engines. If you are affected by this problem please update to a newer version of gtk-engines. If problems persist then please inform the gtk-engines maintainers of the problem. &lt;br /&gt;
&lt;br /&gt;
* A similar crash happens if the &amp;lt;b&amp;gt;KDE Baghira&amp;lt;/b&amp;gt; theme or the package &amp;lt;b&amp;gt;gtk_qt_engine&amp;lt;/b&amp;gt; are installed. If you experience Inkscape crashes on KDE, please try to install a different theme from Baghira, or uninstall the gtk_qt_engine package from your system. Both problems also affect older versions of Inkscape.&lt;br /&gt;
&lt;br /&gt;
=== Previous releases ===&lt;br /&gt;
&lt;br /&gt;
* [[ReleaseNotes044]]&lt;br /&gt;
* [[ReleaseNotes043]]&lt;br /&gt;
* [[ReleaseNotes042]]&lt;br /&gt;
* [[ReleaseNotes041]]&lt;br /&gt;
* [[ReleaseNotes040]]&lt;br /&gt;
* [[ReleaseNotes039]]&lt;br /&gt;
* [[ReleaseNotes038]]&lt;br /&gt;
* [[ReleaseNotes037]]&lt;br /&gt;
* [[ReleaseNotes036]]&lt;br /&gt;
* [[ReleaseNotes035]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Marketing]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Lib2geom&amp;diff=12204</id>
		<title>Lib2geom</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Lib2geom&amp;diff=12204"/>
		<updated>2006-11-30T23:59:07Z</updated>

		<summary type="html">&lt;p&gt;Acspike: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I've started this page on the Inkscape Wiki to help the lib2geom team with some developer documentation. As this material matures it can be moved to the &amp;quot;Developer Documentation&amp;quot; section of the wiki instead of where it currently resides. (2006-09-01 Scott Huey)&lt;br /&gt;
&lt;br /&gt;
[[lib2geom FAQ]]&lt;br /&gt;
&lt;br /&gt;
[[lib2geom SVN Repository Guide]]&lt;br /&gt;
&lt;br /&gt;
[[lib2geom Goals]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Python_modules_for_extensions&amp;diff=12100</id>
		<title>Python modules for extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Python_modules_for_extensions&amp;diff=12100"/>
		<updated>2006-11-18T21:57:03Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* cspsubdiv.py */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Extensions]]&lt;br /&gt;
&lt;br /&gt;
== inkex.py ==&lt;br /&gt;
&lt;br /&gt;
This module encapsulates the basic behavior of a script extension, allowing the author to concentrate on manipulating the SVG data. The module provides an '''class Effect()'''. inkex.py was originally designed to provide the Effect (filter) extension type, but has been used for Input/Output extensions simply by overriding additional class methods.&lt;br /&gt;
&lt;br /&gt;
=== Methods ===&lt;br /&gt;
*effect(): override with document processing code.&lt;br /&gt;
*affect(): actuate the script.&lt;br /&gt;
*xpathSingle(path): an xpath wrapper to return a single node.&lt;br /&gt;
*uniqueId(old_id, make_new_id = True): return an id that is unique in the document given a proposed id.&lt;br /&gt;
&lt;br /&gt;
=== Properties ===&lt;br /&gt;
&lt;br /&gt;
*document: DOM document &lt;br /&gt;
*selected: a list of nodes that were selected in inkscape&lt;br /&gt;
*doc_ids: all of the ids used in the document&lt;br /&gt;
*options: options passed to the script&lt;br /&gt;
&lt;br /&gt;
== simplestyle.py ==&lt;br /&gt;
Provides methods for dealing with css data embeded in SVG's style=&amp;quot;&amp;quot; atribute&lt;br /&gt;
&lt;br /&gt;
*parseStyle(string): Create a dictionary from the value of an inline style attribute&lt;br /&gt;
*formatStyle(dict): Format an inline style attribute from a dictionary&lt;br /&gt;
*isColor(c): Determine if its a color we can use. If not, leave it unchanged.&lt;br /&gt;
*parseColor(c): Creates a rgb int array&lt;br /&gt;
*formatColoria(a): int array to #rrggbb&lt;br /&gt;
*formatColorfa(a): float array to #rrggbb&lt;br /&gt;
*formatColor3i(r,g,b): 3 ints to #rrggbb&lt;br /&gt;
*formatColor3f(r,g,b): 3 floats to #rrggbb&lt;br /&gt;
&lt;br /&gt;
*svgcolors: a dictionary defining legal color names and corresponding color values&lt;br /&gt;
&lt;br /&gt;
== simplepath.py ==&lt;br /&gt;
Provides functions to round trip svg path d=&amp;quot;&amp;quot; attribute data and a simple path format mimicing that datastructure. additional functions for scaling translating and rotating path data.&lt;br /&gt;
&lt;br /&gt;
== cubicsuperpath.py ==&lt;br /&gt;
an alternative path representation. access both handles of a node at once. looses a paths open/closed identity.&lt;br /&gt;
&lt;br /&gt;
== pturtle.py ==&lt;br /&gt;
&lt;br /&gt;
provides turtle graphics primitives with svg path data output&lt;br /&gt;
&lt;br /&gt;
== beziermisc.py ==&lt;br /&gt;
utility functions for working with bezier curves&lt;br /&gt;
&lt;br /&gt;
== cspsubdiv.py ==&lt;br /&gt;
decompose a path into polylines&lt;br /&gt;
&lt;br /&gt;
== ff*.py ==&lt;br /&gt;
&lt;br /&gt;
an obscure set of tools for dealing with musical scales.&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Python_modules_for_extensions&amp;diff=12098</id>
		<title>Python modules for extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Python_modules_for_extensions&amp;diff=12098"/>
		<updated>2006-11-18T21:56:46Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* beziermisc.py */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Extensions]]&lt;br /&gt;
&lt;br /&gt;
== inkex.py ==&lt;br /&gt;
&lt;br /&gt;
This module encapsulates the basic behavior of a script extension, allowing the author to concentrate on manipulating the SVG data. The module provides an '''class Effect()'''. inkex.py was originally designed to provide the Effect (filter) extension type, but has been used for Input/Output extensions simply by overriding additional class methods.&lt;br /&gt;
&lt;br /&gt;
=== Methods ===&lt;br /&gt;
*effect(): override with document processing code.&lt;br /&gt;
*affect(): actuate the script.&lt;br /&gt;
*xpathSingle(path): an xpath wrapper to return a single node.&lt;br /&gt;
*uniqueId(old_id, make_new_id = True): return an id that is unique in the document given a proposed id.&lt;br /&gt;
&lt;br /&gt;
=== Properties ===&lt;br /&gt;
&lt;br /&gt;
*document: DOM document &lt;br /&gt;
*selected: a list of nodes that were selected in inkscape&lt;br /&gt;
*doc_ids: all of the ids used in the document&lt;br /&gt;
*options: options passed to the script&lt;br /&gt;
&lt;br /&gt;
== simplestyle.py ==&lt;br /&gt;
Provides methods for dealing with css data embeded in SVG's style=&amp;quot;&amp;quot; atribute&lt;br /&gt;
&lt;br /&gt;
*parseStyle(string): Create a dictionary from the value of an inline style attribute&lt;br /&gt;
*formatStyle(dict): Format an inline style attribute from a dictionary&lt;br /&gt;
*isColor(c): Determine if its a color we can use. If not, leave it unchanged.&lt;br /&gt;
*parseColor(c): Creates a rgb int array&lt;br /&gt;
*formatColoria(a): int array to #rrggbb&lt;br /&gt;
*formatColorfa(a): float array to #rrggbb&lt;br /&gt;
*formatColor3i(r,g,b): 3 ints to #rrggbb&lt;br /&gt;
*formatColor3f(r,g,b): 3 floats to #rrggbb&lt;br /&gt;
&lt;br /&gt;
*svgcolors: a dictionary defining legal color names and corresponding color values&lt;br /&gt;
&lt;br /&gt;
== simplepath.py ==&lt;br /&gt;
Provides functions to round trip svg path d=&amp;quot;&amp;quot; attribute data and a simple path format mimicing that datastructure. additional functions for scaling translating and rotating path data.&lt;br /&gt;
&lt;br /&gt;
== cubicsuperpath.py ==&lt;br /&gt;
an alternative path representation. access both handles of a node at once. looses a paths open/closed identity.&lt;br /&gt;
&lt;br /&gt;
== pturtle.py ==&lt;br /&gt;
&lt;br /&gt;
provides turtle graphics primitives with svg path data output&lt;br /&gt;
&lt;br /&gt;
== beziermisc.py ==&lt;br /&gt;
utility functions for working with bezier curves&lt;br /&gt;
&lt;br /&gt;
== cspsubdiv.py ==&lt;br /&gt;
&lt;br /&gt;
== ff*.py ==&lt;br /&gt;
&lt;br /&gt;
an obscure set of tools for dealing with musical scales.&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Python_modules_for_extensions&amp;diff=12096</id>
		<title>Python modules for extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Python_modules_for_extensions&amp;diff=12096"/>
		<updated>2006-11-18T21:56:27Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* cubicsuperpath.py */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Extensions]]&lt;br /&gt;
&lt;br /&gt;
== inkex.py ==&lt;br /&gt;
&lt;br /&gt;
This module encapsulates the basic behavior of a script extension, allowing the author to concentrate on manipulating the SVG data. The module provides an '''class Effect()'''. inkex.py was originally designed to provide the Effect (filter) extension type, but has been used for Input/Output extensions simply by overriding additional class methods.&lt;br /&gt;
&lt;br /&gt;
=== Methods ===&lt;br /&gt;
*effect(): override with document processing code.&lt;br /&gt;
*affect(): actuate the script.&lt;br /&gt;
*xpathSingle(path): an xpath wrapper to return a single node.&lt;br /&gt;
*uniqueId(old_id, make_new_id = True): return an id that is unique in the document given a proposed id.&lt;br /&gt;
&lt;br /&gt;
=== Properties ===&lt;br /&gt;
&lt;br /&gt;
*document: DOM document &lt;br /&gt;
*selected: a list of nodes that were selected in inkscape&lt;br /&gt;
*doc_ids: all of the ids used in the document&lt;br /&gt;
*options: options passed to the script&lt;br /&gt;
&lt;br /&gt;
== simplestyle.py ==&lt;br /&gt;
Provides methods for dealing with css data embeded in SVG's style=&amp;quot;&amp;quot; atribute&lt;br /&gt;
&lt;br /&gt;
*parseStyle(string): Create a dictionary from the value of an inline style attribute&lt;br /&gt;
*formatStyle(dict): Format an inline style attribute from a dictionary&lt;br /&gt;
*isColor(c): Determine if its a color we can use. If not, leave it unchanged.&lt;br /&gt;
*parseColor(c): Creates a rgb int array&lt;br /&gt;
*formatColoria(a): int array to #rrggbb&lt;br /&gt;
*formatColorfa(a): float array to #rrggbb&lt;br /&gt;
*formatColor3i(r,g,b): 3 ints to #rrggbb&lt;br /&gt;
*formatColor3f(r,g,b): 3 floats to #rrggbb&lt;br /&gt;
&lt;br /&gt;
*svgcolors: a dictionary defining legal color names and corresponding color values&lt;br /&gt;
&lt;br /&gt;
== simplepath.py ==&lt;br /&gt;
Provides functions to round trip svg path d=&amp;quot;&amp;quot; attribute data and a simple path format mimicing that datastructure. additional functions for scaling translating and rotating path data.&lt;br /&gt;
&lt;br /&gt;
== cubicsuperpath.py ==&lt;br /&gt;
an alternative path representation. access both handles of a node at once. looses a paths open/closed identity.&lt;br /&gt;
&lt;br /&gt;
== pturtle.py ==&lt;br /&gt;
&lt;br /&gt;
provides turtle graphics primitives with svg path data output&lt;br /&gt;
&lt;br /&gt;
== beziermisc.py ==&lt;br /&gt;
&lt;br /&gt;
== cspsubdiv.py ==&lt;br /&gt;
&lt;br /&gt;
== ff*.py ==&lt;br /&gt;
&lt;br /&gt;
an obscure set of tools for dealing with musical scales.&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Python_modules_for_extensions&amp;diff=12094</id>
		<title>Python modules for extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Python_modules_for_extensions&amp;diff=12094"/>
		<updated>2006-11-18T21:55:03Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* pturtle.py */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Extensions]]&lt;br /&gt;
&lt;br /&gt;
== inkex.py ==&lt;br /&gt;
&lt;br /&gt;
This module encapsulates the basic behavior of a script extension, allowing the author to concentrate on manipulating the SVG data. The module provides an '''class Effect()'''. inkex.py was originally designed to provide the Effect (filter) extension type, but has been used for Input/Output extensions simply by overriding additional class methods.&lt;br /&gt;
&lt;br /&gt;
=== Methods ===&lt;br /&gt;
*effect(): override with document processing code.&lt;br /&gt;
*affect(): actuate the script.&lt;br /&gt;
*xpathSingle(path): an xpath wrapper to return a single node.&lt;br /&gt;
*uniqueId(old_id, make_new_id = True): return an id that is unique in the document given a proposed id.&lt;br /&gt;
&lt;br /&gt;
=== Properties ===&lt;br /&gt;
&lt;br /&gt;
*document: DOM document &lt;br /&gt;
*selected: a list of nodes that were selected in inkscape&lt;br /&gt;
*doc_ids: all of the ids used in the document&lt;br /&gt;
*options: options passed to the script&lt;br /&gt;
&lt;br /&gt;
== simplestyle.py ==&lt;br /&gt;
Provides methods for dealing with css data embeded in SVG's style=&amp;quot;&amp;quot; atribute&lt;br /&gt;
&lt;br /&gt;
*parseStyle(string): Create a dictionary from the value of an inline style attribute&lt;br /&gt;
*formatStyle(dict): Format an inline style attribute from a dictionary&lt;br /&gt;
*isColor(c): Determine if its a color we can use. If not, leave it unchanged.&lt;br /&gt;
*parseColor(c): Creates a rgb int array&lt;br /&gt;
*formatColoria(a): int array to #rrggbb&lt;br /&gt;
*formatColorfa(a): float array to #rrggbb&lt;br /&gt;
*formatColor3i(r,g,b): 3 ints to #rrggbb&lt;br /&gt;
*formatColor3f(r,g,b): 3 floats to #rrggbb&lt;br /&gt;
&lt;br /&gt;
*svgcolors: a dictionary defining legal color names and corresponding color values&lt;br /&gt;
&lt;br /&gt;
== simplepath.py ==&lt;br /&gt;
Provides functions to round trip svg path d=&amp;quot;&amp;quot; attribute data and a simple path format mimicing that datastructure. additional functions for scaling translating and rotating path data.&lt;br /&gt;
&lt;br /&gt;
== cubicsuperpath.py ==&lt;br /&gt;
&lt;br /&gt;
== pturtle.py ==&lt;br /&gt;
&lt;br /&gt;
provides turtle graphics primitives with svg path data output&lt;br /&gt;
&lt;br /&gt;
== beziermisc.py ==&lt;br /&gt;
&lt;br /&gt;
== cspsubdiv.py ==&lt;br /&gt;
&lt;br /&gt;
== ff*.py ==&lt;br /&gt;
&lt;br /&gt;
an obscure set of tools for dealing with musical scales.&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Python_modules_for_extensions&amp;diff=12092</id>
		<title>Python modules for extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Python_modules_for_extensions&amp;diff=12092"/>
		<updated>2006-11-18T21:54:19Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* simplepath.py */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Extensions]]&lt;br /&gt;
&lt;br /&gt;
== inkex.py ==&lt;br /&gt;
&lt;br /&gt;
This module encapsulates the basic behavior of a script extension, allowing the author to concentrate on manipulating the SVG data. The module provides an '''class Effect()'''. inkex.py was originally designed to provide the Effect (filter) extension type, but has been used for Input/Output extensions simply by overriding additional class methods.&lt;br /&gt;
&lt;br /&gt;
=== Methods ===&lt;br /&gt;
*effect(): override with document processing code.&lt;br /&gt;
*affect(): actuate the script.&lt;br /&gt;
*xpathSingle(path): an xpath wrapper to return a single node.&lt;br /&gt;
*uniqueId(old_id, make_new_id = True): return an id that is unique in the document given a proposed id.&lt;br /&gt;
&lt;br /&gt;
=== Properties ===&lt;br /&gt;
&lt;br /&gt;
*document: DOM document &lt;br /&gt;
*selected: a list of nodes that were selected in inkscape&lt;br /&gt;
*doc_ids: all of the ids used in the document&lt;br /&gt;
*options: options passed to the script&lt;br /&gt;
&lt;br /&gt;
== simplestyle.py ==&lt;br /&gt;
Provides methods for dealing with css data embeded in SVG's style=&amp;quot;&amp;quot; atribute&lt;br /&gt;
&lt;br /&gt;
*parseStyle(string): Create a dictionary from the value of an inline style attribute&lt;br /&gt;
*formatStyle(dict): Format an inline style attribute from a dictionary&lt;br /&gt;
*isColor(c): Determine if its a color we can use. If not, leave it unchanged.&lt;br /&gt;
*parseColor(c): Creates a rgb int array&lt;br /&gt;
*formatColoria(a): int array to #rrggbb&lt;br /&gt;
*formatColorfa(a): float array to #rrggbb&lt;br /&gt;
*formatColor3i(r,g,b): 3 ints to #rrggbb&lt;br /&gt;
*formatColor3f(r,g,b): 3 floats to #rrggbb&lt;br /&gt;
&lt;br /&gt;
*svgcolors: a dictionary defining legal color names and corresponding color values&lt;br /&gt;
&lt;br /&gt;
== simplepath.py ==&lt;br /&gt;
Provides functions to round trip svg path d=&amp;quot;&amp;quot; attribute data and a simple path format mimicing that datastructure. additional functions for scaling translating and rotating path data.&lt;br /&gt;
&lt;br /&gt;
== cubicsuperpath.py ==&lt;br /&gt;
&lt;br /&gt;
== pturtle.py ==&lt;br /&gt;
&lt;br /&gt;
== beziermisc.py ==&lt;br /&gt;
&lt;br /&gt;
== cspsubdiv.py ==&lt;br /&gt;
&lt;br /&gt;
== ff*.py ==&lt;br /&gt;
&lt;br /&gt;
an obscure set of tools for dealing with musical scales.&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Python_modules_for_extensions&amp;diff=12090</id>
		<title>Python modules for extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Python_modules_for_extensions&amp;diff=12090"/>
		<updated>2006-11-18T21:51:58Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* simplestyle.py */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Extensions]]&lt;br /&gt;
&lt;br /&gt;
== inkex.py ==&lt;br /&gt;
&lt;br /&gt;
This module encapsulates the basic behavior of a script extension, allowing the author to concentrate on manipulating the SVG data. The module provides an '''class Effect()'''. inkex.py was originally designed to provide the Effect (filter) extension type, but has been used for Input/Output extensions simply by overriding additional class methods.&lt;br /&gt;
&lt;br /&gt;
=== Methods ===&lt;br /&gt;
*effect(): override with document processing code.&lt;br /&gt;
*affect(): actuate the script.&lt;br /&gt;
*xpathSingle(path): an xpath wrapper to return a single node.&lt;br /&gt;
*uniqueId(old_id, make_new_id = True): return an id that is unique in the document given a proposed id.&lt;br /&gt;
&lt;br /&gt;
=== Properties ===&lt;br /&gt;
&lt;br /&gt;
*document: DOM document &lt;br /&gt;
*selected: a list of nodes that were selected in inkscape&lt;br /&gt;
*doc_ids: all of the ids used in the document&lt;br /&gt;
*options: options passed to the script&lt;br /&gt;
&lt;br /&gt;
== simplestyle.py ==&lt;br /&gt;
Provides methods for dealing with css data embeded in SVG's style=&amp;quot;&amp;quot; atribute&lt;br /&gt;
&lt;br /&gt;
*parseStyle(string): Create a dictionary from the value of an inline style attribute&lt;br /&gt;
*formatStyle(dict): Format an inline style attribute from a dictionary&lt;br /&gt;
*isColor(c): Determine if its a color we can use. If not, leave it unchanged.&lt;br /&gt;
*parseColor(c): Creates a rgb int array&lt;br /&gt;
*formatColoria(a): int array to #rrggbb&lt;br /&gt;
*formatColorfa(a): float array to #rrggbb&lt;br /&gt;
*formatColor3i(r,g,b): 3 ints to #rrggbb&lt;br /&gt;
*formatColor3f(r,g,b): 3 floats to #rrggbb&lt;br /&gt;
&lt;br /&gt;
*svgcolors: a dictionary defining legal color names and corresponding color values&lt;br /&gt;
&lt;br /&gt;
== simplepath.py ==&lt;br /&gt;
&lt;br /&gt;
== cubicsuperpath.py ==&lt;br /&gt;
&lt;br /&gt;
== pturtle.py ==&lt;br /&gt;
&lt;br /&gt;
== beziermisc.py ==&lt;br /&gt;
&lt;br /&gt;
== cspsubdiv.py ==&lt;br /&gt;
&lt;br /&gt;
== ff*.py ==&lt;br /&gt;
&lt;br /&gt;
an obscure set of tools for dealing with musical scales.&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Python_modules_for_extensions&amp;diff=12088</id>
		<title>Python modules for extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Python_modules_for_extensions&amp;diff=12088"/>
		<updated>2006-11-18T21:44:17Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* inkex.py */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Extensions]]&lt;br /&gt;
&lt;br /&gt;
== inkex.py ==&lt;br /&gt;
&lt;br /&gt;
This module encapsulates the basic behavior of a script extension, allowing the author to concentrate on manipulating the SVG data. The module provides an '''class Effect()'''. inkex.py was originally designed to provide the Effect (filter) extension type, but has been used for Input/Output extensions simply by overriding additional class methods.&lt;br /&gt;
&lt;br /&gt;
=== Methods ===&lt;br /&gt;
*effect(): override with document processing code.&lt;br /&gt;
*affect(): actuate the script.&lt;br /&gt;
*xpathSingle(path): an xpath wrapper to return a single node.&lt;br /&gt;
*uniqueId(old_id, make_new_id = True): return an id that is unique in the document given a proposed id.&lt;br /&gt;
&lt;br /&gt;
=== Properties ===&lt;br /&gt;
&lt;br /&gt;
*document: DOM document &lt;br /&gt;
*selected: a list of nodes that were selected in inkscape&lt;br /&gt;
*doc_ids: all of the ids used in the document&lt;br /&gt;
*options: options passed to the script&lt;br /&gt;
&lt;br /&gt;
== simplestyle.py ==&lt;br /&gt;
&lt;br /&gt;
== simplepath.py ==&lt;br /&gt;
&lt;br /&gt;
== cubicsuperpath.py ==&lt;br /&gt;
&lt;br /&gt;
== pturtle.py ==&lt;br /&gt;
&lt;br /&gt;
== beziermisc.py ==&lt;br /&gt;
&lt;br /&gt;
== cspsubdiv.py ==&lt;br /&gt;
&lt;br /&gt;
== ff*.py ==&lt;br /&gt;
&lt;br /&gt;
an obscure set of tools for dealing with musical scales.&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Script_extensions&amp;diff=12056</id>
		<title>Script extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Script_extensions&amp;diff=12056"/>
		<updated>2006-11-17T13:28:37Z</updated>

		<summary type="html">&lt;p&gt;Acspike: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
Inkscape provides the ability for its functionality to be extended using traditional unix scripts.  By this, we mean a program that takes in a stream of data through standard in, and then outputs that data on standard out.  This is a very easy way to expand Inkscape, and provide custom functionality, without learning the internals of Inkscape.  Plus, there are SVG read and writing libraries out there for almost any language, and the rest of them all have XML support (which is really what you probably want to use anyway).  This HOWTO discusses the ends and outs of writing one of these scripts and getting it to work with the Inkscape core functionality. &lt;br /&gt;
&lt;br /&gt;
=== Types of scripts ===&lt;br /&gt;
&lt;br /&gt;
There are three functions that added with a script:&lt;br /&gt;
&lt;br /&gt;
* Input, providing translation from a file format to SVG&lt;br /&gt;
* Output, providing translation from SVG to a format&lt;br /&gt;
* Effect, taking in SVG, changing it, and then outputing SVG&lt;br /&gt;
&lt;br /&gt;
While all of these are very similar in the scripting interface, there are slight differences between them.&lt;br /&gt;
&lt;br /&gt;
=== Interaction ===&lt;br /&gt;
&lt;br /&gt;
It is important for a script author to understand how Inkscape and scripts communicate.&lt;br /&gt;
&lt;br /&gt;
(interpreter)? your_script (--param=value)* /path/to/input[[/SVGfile]] | inkscape&lt;br /&gt;
&lt;br /&gt;
Inkscape runs your script (optionally with an interpreter) passing it any number of parameters in long gnu style. The final argument is the name of the temporary svg file your script should read. After processing, the script should return the modified svg file to inkscape on STDOUT.&lt;br /&gt;
&lt;br /&gt;
=== Important Tips ===&lt;br /&gt;
&lt;br /&gt;
* Receive the inkscape arguments.&lt;br /&gt;
* Clear temp files if it creates one.&lt;br /&gt;
* Write full changed SVG to the default output.&lt;br /&gt;
* Don't break an xml:space=&amp;quot;preserve&amp;quot; area.&lt;br /&gt;
* Send error text to the error output and help the user.&lt;br /&gt;
&lt;br /&gt;
=== Description ===&lt;br /&gt;
&lt;br /&gt;
In order for Inkscape to make use of an external script or program, you must describe that script to inkscape using an INX file. See the inkscape share directory for examples. The INX file allows the author to:&lt;br /&gt;
* label strings for translation &lt;br /&gt;
* define parameters&lt;br /&gt;
* chain extensions&lt;br /&gt;
Please see [[MakingAnINX]] for help creating an INX file for your script.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
The INX file describes which parameters the extension needs. Inkscape will prompt the user with a UI to fill out these parameters before the extension is called. Each parameter will be passed through the commandline as &amp;quot;--paramname=paramvalue&amp;quot;. Eg. if you have described a string parameter with name 'string1' in the INX file, Inkscape will present a textbox to the user. When the user fills in &amp;quot;text&amp;quot; and presses OK, it will pass '--string1=&amp;quot;text&amp;quot;' to the program specified by the &amp;lt;command&amp;gt; tag.&lt;br /&gt;
&lt;br /&gt;
There are several types of parameters that can be requested by the INX description:&lt;br /&gt;
&lt;br /&gt;
* Boolean&lt;br /&gt;
* Int&lt;br /&gt;
* Float&lt;br /&gt;
* String&lt;br /&gt;
* Description&lt;br /&gt;
* Enum&lt;br /&gt;
* Notebook&lt;br /&gt;
&lt;br /&gt;
=== Installing ===&lt;br /&gt;
&lt;br /&gt;
Installing is as simple as copying the script (unless it resides in your path) and its INX file to the inkscape/share/extensions (home/.inkscape/extensions) directory. (If you install a script in your home directory be sure to copy the dependencies.)&lt;br /&gt;
&lt;br /&gt;
If you are looking to use scripts that have already been written, the most difficult part will likely be the installation. Since scripts are  seperate programs they may have any number of dependencies that are not included with inkscape. Currently, the best way to find missing dependencies is by reading the error messages produced by running the script from the command line.&lt;br /&gt;
&lt;br /&gt;
=== See Also ===&lt;br /&gt;
&lt;br /&gt;
*[http://www.ekips.org/comp/inkscape/extending.php#ignorance| Aarons website] describing his path to learning how scripting extensions work. '''VERY OUT-OF-DATE'''&lt;br /&gt;
&lt;br /&gt;
*[[MakingAnINX]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Extensions]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Script_extensions&amp;diff=12054</id>
		<title>Script extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Script_extensions&amp;diff=12054"/>
		<updated>2006-11-17T13:28:09Z</updated>

		<summary type="html">&lt;p&gt;Acspike: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
Inkscape provides the ability for its functionality to be extended using traditional unix scripts.  By this, we mean a program that takes in a stream of data through standard in, and then outputs that data on standard out.  This is a very easy way to expand Inkscape, and provide custom functionality, without learning the internals of Inkscape.  Plus, there are SVG read and writing libraries out there for almost any language, and the rest of them all have XML support (which is really what you probably want to use anyway).  This HOWTO discusses the ends and outs of writing one of these scripts and getting it to work with the Inkscape core functionality. &lt;br /&gt;
&lt;br /&gt;
=== Types of scripts ===&lt;br /&gt;
&lt;br /&gt;
There are three functions that added with a script:&lt;br /&gt;
&lt;br /&gt;
* Input, providing translation from a file format to SVG&lt;br /&gt;
* Output, providing translation from SVG to a format&lt;br /&gt;
* Effect, taking in SVG, changing it, and then outputing SVG&lt;br /&gt;
&lt;br /&gt;
While all of these are very similar in the scripting interface, there are slight differences between them.&lt;br /&gt;
&lt;br /&gt;
=== Interaction ===&lt;br /&gt;
&lt;br /&gt;
It is important for a script author to understand how Inkscape and scripts communicate.&lt;br /&gt;
&lt;br /&gt;
(interpreter)? your_script (--param=value)* /path/to/input[[/SVGfile]] | inkscape&lt;br /&gt;
&lt;br /&gt;
Inkscape runs your script (optionally with an interpreter) passing it any number of parameters in long gnu style. The final argument is the name of the temporary svg file your script should read. After processing, the script should return the modified svg file to inkscape on STDOUT.&lt;br /&gt;
&lt;br /&gt;
=== Important Tips ===&lt;br /&gt;
&lt;br /&gt;
* Receive the inkscape arguments.&lt;br /&gt;
* Clear temp files if it creates one.&lt;br /&gt;
* Write full changed SVG to the default output.&lt;br /&gt;
* Don't break an xml:space=&amp;quot;preserve&amp;quot; area.&lt;br /&gt;
* Send error text to the error output and help the user.&lt;br /&gt;
&lt;br /&gt;
=== Description ===&lt;br /&gt;
&lt;br /&gt;
In order for Inkscape to make use of an external script or program, you must describe that script to inkscape using an INX file. See the inkscape share directory for examples. The INX file allows the author to:&lt;br /&gt;
* label strings for translation &lt;br /&gt;
* define parameters&lt;br /&gt;
* chain extensions&lt;br /&gt;
Please see [[MakingAnINX]] for help creating an INX file for your script.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
The INX file describes which parameters the extension needs. Inkscape will prompt the user with a UI to fill out these parameters before the extension is called. Each parameter will be passed through the commandline as &amp;quot;--paramname=paramvalue&amp;quot;. Eg. if you have described a string parameter with name 'string1' in the INX file, Inkscape will present a textbox to the user. When the user fills in &amp;quot;text&amp;quot; and presses OK, it will pass '--string1=&amp;quot;text&amp;quot;' to the program specified by the &amp;lt;command&amp;gt; tag.&lt;br /&gt;
&lt;br /&gt;
There are several types of parameters that can be requested by the INX description:&lt;br /&gt;
&lt;br /&gt;
* Boolean&lt;br /&gt;
* Int&lt;br /&gt;
* Float&lt;br /&gt;
* String&lt;br /&gt;
* Description&lt;br /&gt;
* Enum&lt;br /&gt;
* Notebook&lt;br /&gt;
&lt;br /&gt;
=== Installing ===&lt;br /&gt;
&lt;br /&gt;
Installing is as simple as copying the script (unless it resides in your path) and its INX file to the inkscape/share/extensions (home/.inkscape/extensions) directory. (If you install a script in your home directory be sure to copy the dependencies.)&lt;br /&gt;
&lt;br /&gt;
If you are looking to use scripts that have already been written, the most difficult part will likely be the installation. Since scripts are  seperate programs they may have any number of dependencies that are not included with inkscape. Currently, the best way to find missing dependencies is by reading the error messages produced by running the script from the command line.&lt;br /&gt;
&lt;br /&gt;
=== See Also ===&lt;br /&gt;
&lt;br /&gt;
*[http://www.ekips.org/comp/inkscape/extending.php#ignorance |Aarons website] describing his path to learning how scripting extensions work. '''VERY OUT-OF-DATE'''&lt;br /&gt;
&lt;br /&gt;
*[[MakingAnINX]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Extensions]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Script_extensions&amp;diff=12052</id>
		<title>Script extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Script_extensions&amp;diff=12052"/>
		<updated>2006-11-17T13:27:47Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* See Also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
Inkscape provides the ability for its functionality to be extended using traditional unix scripts.  By this, we mean a program that takes in a stream of data through standard in, and then outputs that data on standard out.  This is a very easy way to expand Inkscape, and provide custom functionality, without learning the internals of Inkscape.  Plus, there are SVG read and writing libraries out there for almost any language, and the rest of them all have XML support (which is really what you probably want to use anyway).  This HOWTO discusses the ends and outs of writing one of these scripts and getting it to work with the Inkscape core functionality. &lt;br /&gt;
&lt;br /&gt;
=== Types of scripts ===&lt;br /&gt;
&lt;br /&gt;
There are three functions that added with a script:&lt;br /&gt;
&lt;br /&gt;
* Input, providing translation from a file format to SVG&lt;br /&gt;
* Output, providing translation from SVG to a format&lt;br /&gt;
* Effect, taking in SVG, changing it, and then outputing SVG&lt;br /&gt;
&lt;br /&gt;
While all of these are very similar in the scripting interface, there are slight differences between them.&lt;br /&gt;
&lt;br /&gt;
=== Interaction ===&lt;br /&gt;
&lt;br /&gt;
It is important for a script author to understand how Inkscape and scripts communicate.&lt;br /&gt;
&lt;br /&gt;
(interpreter)? your_script (--param=value)* /path/to/input[[/SVGfile]] | inkscape&lt;br /&gt;
&lt;br /&gt;
Inkscape runs your script (optionally with an interpreter) passing it any number of parameters in long gnu style. The final argument is the name of the temporary svg file your script should read. After processing, the script should return the modified svg file to inkscape on STDOUT.&lt;br /&gt;
&lt;br /&gt;
=== Important Tips ===&lt;br /&gt;
&lt;br /&gt;
* Receive the inkscape arguments.&lt;br /&gt;
* Clear temp files if it creates one.&lt;br /&gt;
* Write full changed SVG to the default output.&lt;br /&gt;
* Don't break an xml:space=&amp;quot;preserve&amp;quot; area.&lt;br /&gt;
* Send error text to the error output and help the user.&lt;br /&gt;
&lt;br /&gt;
=== Description ===&lt;br /&gt;
&lt;br /&gt;
In order for Inkscape to make use of an external script or program, you must describe that script to inkscape using an INX file. See the inkscape share directory for examples. The INX file allows the author to:&lt;br /&gt;
* label strings for translation &lt;br /&gt;
* define parameters&lt;br /&gt;
* chain extensions&lt;br /&gt;
Please see [[MakingAnINX]] for help creating an INX file for your script.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
The INX file describes which parameters the extension needs. Inkscape will prompt the user with a UI to fill out these parameters before the extension is called. Each parameter will be passed through the commandline as &amp;quot;--paramname=paramvalue&amp;quot;. Eg. if you have described a string parameter with name 'string1' in the INX file, Inkscape will present a textbox to the user. When the user fills in &amp;quot;text&amp;quot; and presses OK, it will pass '--string1=&amp;quot;text&amp;quot;' to the program specified by the &amp;lt;command&amp;gt; tag.&lt;br /&gt;
&lt;br /&gt;
There are several types of parameters that can be requested by the INX description:&lt;br /&gt;
&lt;br /&gt;
* Boolean&lt;br /&gt;
* Int&lt;br /&gt;
* Float&lt;br /&gt;
* String&lt;br /&gt;
* Description&lt;br /&gt;
* Enum&lt;br /&gt;
* Notebook&lt;br /&gt;
&lt;br /&gt;
=== Installing ===&lt;br /&gt;
&lt;br /&gt;
Installing is as simple as copying the script (unless it resides in your path) and its INX file to the inkscape/share/extensions (home/.inkscape/extensions) directory. (If you install a script in your home directory be sure to copy the dependencies.)&lt;br /&gt;
&lt;br /&gt;
If you are looking to use scripts that have already been written, the most difficult part will likely be the installation. Since scripts are  seperate programs they may have any number of dependencies that are not included with inkscape. Currently, the best way to find missing dependencies is by reading the error messages produced by running the script from the command line.&lt;br /&gt;
&lt;br /&gt;
=== See Also ===&lt;br /&gt;
&lt;br /&gt;
*[http://www.ekips.org/comp/inkscape/extending.php#ignorance|Aarons website] describing his path to learning how scripting extensions work. '''VERY OUT-OF-DATE'''&lt;br /&gt;
&lt;br /&gt;
*[[MakingAnINX]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Extensions]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Script_extensions&amp;diff=12050</id>
		<title>Script extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Script_extensions&amp;diff=12050"/>
		<updated>2006-11-17T13:26:19Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* See Also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
Inkscape provides the ability for its functionality to be extended using traditional unix scripts.  By this, we mean a program that takes in a stream of data through standard in, and then outputs that data on standard out.  This is a very easy way to expand Inkscape, and provide custom functionality, without learning the internals of Inkscape.  Plus, there are SVG read and writing libraries out there for almost any language, and the rest of them all have XML support (which is really what you probably want to use anyway).  This HOWTO discusses the ends and outs of writing one of these scripts and getting it to work with the Inkscape core functionality. &lt;br /&gt;
&lt;br /&gt;
=== Types of scripts ===&lt;br /&gt;
&lt;br /&gt;
There are three functions that added with a script:&lt;br /&gt;
&lt;br /&gt;
* Input, providing translation from a file format to SVG&lt;br /&gt;
* Output, providing translation from SVG to a format&lt;br /&gt;
* Effect, taking in SVG, changing it, and then outputing SVG&lt;br /&gt;
&lt;br /&gt;
While all of these are very similar in the scripting interface, there are slight differences between them.&lt;br /&gt;
&lt;br /&gt;
=== Interaction ===&lt;br /&gt;
&lt;br /&gt;
It is important for a script author to understand how Inkscape and scripts communicate.&lt;br /&gt;
&lt;br /&gt;
(interpreter)? your_script (--param=value)* /path/to/input[[/SVGfile]] | inkscape&lt;br /&gt;
&lt;br /&gt;
Inkscape runs your script (optionally with an interpreter) passing it any number of parameters in long gnu style. The final argument is the name of the temporary svg file your script should read. After processing, the script should return the modified svg file to inkscape on STDOUT.&lt;br /&gt;
&lt;br /&gt;
=== Important Tips ===&lt;br /&gt;
&lt;br /&gt;
* Receive the inkscape arguments.&lt;br /&gt;
* Clear temp files if it creates one.&lt;br /&gt;
* Write full changed SVG to the default output.&lt;br /&gt;
* Don't break an xml:space=&amp;quot;preserve&amp;quot; area.&lt;br /&gt;
* Send error text to the error output and help the user.&lt;br /&gt;
&lt;br /&gt;
=== Description ===&lt;br /&gt;
&lt;br /&gt;
In order for Inkscape to make use of an external script or program, you must describe that script to inkscape using an INX file. See the inkscape share directory for examples. The INX file allows the author to:&lt;br /&gt;
* label strings for translation &lt;br /&gt;
* define parameters&lt;br /&gt;
* chain extensions&lt;br /&gt;
Please see [[MakingAnINX]] for help creating an INX file for your script.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
The INX file describes which parameters the extension needs. Inkscape will prompt the user with a UI to fill out these parameters before the extension is called. Each parameter will be passed through the commandline as &amp;quot;--paramname=paramvalue&amp;quot;. Eg. if you have described a string parameter with name 'string1' in the INX file, Inkscape will present a textbox to the user. When the user fills in &amp;quot;text&amp;quot; and presses OK, it will pass '--string1=&amp;quot;text&amp;quot;' to the program specified by the &amp;lt;command&amp;gt; tag.&lt;br /&gt;
&lt;br /&gt;
There are several types of parameters that can be requested by the INX description:&lt;br /&gt;
&lt;br /&gt;
* Boolean&lt;br /&gt;
* Int&lt;br /&gt;
* Float&lt;br /&gt;
* String&lt;br /&gt;
* Description&lt;br /&gt;
* Enum&lt;br /&gt;
* Notebook&lt;br /&gt;
&lt;br /&gt;
=== Installing ===&lt;br /&gt;
&lt;br /&gt;
Installing is as simple as copying the script (unless it resides in your path) and its INX file to the inkscape/share/extensions (home/.inkscape/extensions) directory. (If you install a script in your home directory be sure to copy the dependencies.)&lt;br /&gt;
&lt;br /&gt;
If you are looking to use scripts that have already been written, the most difficult part will likely be the installation. Since scripts are  seperate programs they may have any number of dependencies that are not included with inkscape. Currently, the best way to find missing dependencies is by reading the error messages produced by running the script from the command line.&lt;br /&gt;
&lt;br /&gt;
=== See Also ===&lt;br /&gt;
&lt;br /&gt;
*[http://www.ekips.org/comp/inkscape/extending.php#ignorance|Aaron's website] describing his path to learning how scripting extensions work. '''VERY OUT-OF-DATE'''&lt;br /&gt;
&lt;br /&gt;
*[[MakingAnINX]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Extensions]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=INX_extension_descriptor_format&amp;diff=12048</id>
		<title>INX extension descriptor format</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=INX_extension_descriptor_format&amp;diff=12048"/>
		<updated>2006-11-17T13:16:34Z</updated>

		<summary type="html">&lt;p&gt;Acspike: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction == &lt;br /&gt;
&lt;br /&gt;
In order for Inkscape to make use of an external script or program, you must describe that script to inkscape using an INX file. See the inkscape share directory for examples. The INX file allows the author to:&lt;br /&gt;
* label strings for translation &lt;br /&gt;
* define parameters&lt;br /&gt;
* chain extensions&lt;br /&gt;
* etc&lt;br /&gt;
Be sure to read through the INX files that come with Inkscape. Nothing beats a working example.&lt;br /&gt;
&lt;br /&gt;
== Localisation of extensions ==&lt;br /&gt;
&lt;br /&gt;
To allow localisation of strings in extension for Inkscape, some xml tags have to be adapted to variant readable by intltool. It means that tags or parametres has to have &amp;quot;_&amp;quot; prepended to their name, e.g. &amp;lt;_name&amp;gt;name of extension&amp;lt;/_name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also the path to the extension has to be included in POTFILES.in file to tell intltool where to look for translatable content.&lt;br /&gt;
&lt;br /&gt;
Usefull information, before this section gets fully updated, can be found at [http://gould.cx/ted/blog/Translating_Custom_XML Ted's blog].&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
More example INX files are available in the Inkscape distribution or in the Inkscape [http://inkscape.svn.sourceforge.net/viewvc/inkscape/inkscape/trunk/share/extensions/|SVN repository].&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;inkscape-extension&amp;gt;&lt;br /&gt;
    &amp;lt;_name&amp;gt;{Friendly Extension Name}&amp;lt;/_name&amp;gt;&lt;br /&gt;
    &amp;lt;id&amp;gt;{org.domain.sub-domain.extension-name}&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;dependency type=&amp;quot;executable&amp;quot;&lt;br /&gt;
                  location=&amp;quot;[extensions|{location}]&amp;quot;&amp;gt;program.ext&amp;lt;/dependency&amp;gt;&lt;br /&gt;
      &amp;lt;param name=&amp;quot;{argumentName}&amp;quot; type=&amp;quot;[int|float|string]&amp;quot;&lt;br /&gt;
             min=&amp;quot;{number}&amp;quot; max=&amp;quot;{number}&amp;quot;&lt;br /&gt;
             _gui-text=&amp;quot;{Friendly Argument Name}&amp;quot;&amp;gt;{default value}&amp;lt;/param&amp;gt;&lt;br /&gt;
    &amp;lt;effect&amp;gt;&lt;br /&gt;
      &amp;lt;object-type&amp;gt;[all|{element type}]&amp;lt;/object-type&amp;gt;&lt;br /&gt;
        &amp;lt;effects-menu&amp;gt;&lt;br /&gt;
          &amp;lt;submenu _name=&amp;quot;{Extension Group Name}&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/effects-menu&amp;gt;&lt;br /&gt;
    &amp;lt;/effect&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
      &amp;lt;command reldir=&amp;quot;extensions&amp;quot;&lt;br /&gt;
               interpreter=&amp;quot;[python|perl|bash|{some other}]&amp;quot;&amp;gt;program.ext&amp;lt;/command&amp;gt;&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/inkscape-extension&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DTD ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!ELEMENT inkscape-extension (name, id, dependency*, param*,(input|output|effect),(script|plugin))&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT input (extension, mimetype, filetype, filetypetooltip, output_extension?)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT output (extension, mimetype, filetype, filetypetooltip, dataloss?)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT effect (object-type)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT script (command, helper_extension*, check*)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT plugin (name)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT name (#PCDATA)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT id (#PCDATA)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT dependency (#PCDATA)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT param (#PCDATA)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT extension (#PCDATA)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT mimetype (#PCDATA)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT filetype (#PCDATA)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT filetooltip (#PCDATA)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT object-type (#PCDATA)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT command (#PCDATA)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT check (#PCDATA)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT dataloss (#PCDATA)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT helper_extension (#PCDATA)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT output_extension (#PCDATA)&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;!ATTLIST check reldir (absolute|path|extensions|plugins) #REQUIRED&amp;gt;&lt;br /&gt;
 &amp;lt;!ATTLIST command reldir (absolute|path|extensions|plugins) #REQUIRED&amp;gt;&lt;br /&gt;
 &amp;lt;!ATTLIST dependency type (executable|extension) #REQUIRED&amp;gt;&lt;br /&gt;
 &amp;lt;!ATTLIST dependency location (absolute|path|extensions|plugins) #IMPLIED&amp;gt;&lt;br /&gt;
 &amp;lt;!ATTLIST dependency description CDATA #IMPLIED&amp;gt;&lt;br /&gt;
 &amp;lt;!ATTLIST param name CDATA #REQUIRED&amp;gt;&lt;br /&gt;
 &amp;lt;!ATTLIST param type (float|int) #REQUIRED&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
*[[ScriptingHOWTO]]&lt;br /&gt;
*[http://sourceforge.net/mailarchive/message.php?msg_id=11420660|Aaron's message] from the developer list with an initial DTD.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;br /&gt;
[[Category:Help Wanted]]&lt;br /&gt;
[[Category:Extensions]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Python_modules_for_extensions&amp;diff=12044</id>
		<title>Python modules for extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Python_modules_for_extensions&amp;diff=12044"/>
		<updated>2006-11-17T02:16:26Z</updated>

		<summary type="html">&lt;p&gt;Acspike: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Extensions]]&lt;br /&gt;
&lt;br /&gt;
== inkex.py ==&lt;br /&gt;
&lt;br /&gt;
== simplestyle.py ==&lt;br /&gt;
&lt;br /&gt;
== simplepath.py ==&lt;br /&gt;
&lt;br /&gt;
== cubicsuperpath.py ==&lt;br /&gt;
&lt;br /&gt;
== pturtle.py ==&lt;br /&gt;
&lt;br /&gt;
== beziermisc.py ==&lt;br /&gt;
&lt;br /&gt;
== cspsubdiv.py ==&lt;br /&gt;
&lt;br /&gt;
== ff*.py ==&lt;br /&gt;
&lt;br /&gt;
an obscure set of tools for dealing with musical scales.&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Inkscape&amp;diff=12042</id>
		<title>Inkscape</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Inkscape&amp;diff=12042"/>
		<updated>2006-11-17T02:01:40Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* General */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a freeform area for Inkscape development and discussion.  &lt;br /&gt;
Curious about [[WikiSyntax]]?&lt;br /&gt;
&lt;br /&gt;
Other languages: [[Inkscape en español|Wiki en español]], [[L'Inkscape en Català|Wiki en Català]], [[Inkscape em Português|Wiki em Português]], [[Startseite|Wiki auf Deutsch]]...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;11&amp;quot; width=&amp;quot;100%&amp;quot;&amp;gt;&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width:33%;background-color: #EFFBFF; padding:.5em; border: 1px solid #BFEEFF&amp;quot;&amp;gt;&lt;br /&gt;
=== About Inkscape ===&lt;br /&gt;
* [http://www.inkscape.org/ Inkscape Homepage]&lt;br /&gt;
* [[About Inkscape]]&lt;br /&gt;
* [[InkscapeFeatures]]&lt;br /&gt;
* [[FAQ]] - Frequently Asked Questions&lt;br /&gt;
* [[ProjectInfo]]&lt;br /&gt;
* [[SupportedOperatingSystems]]&lt;br /&gt;
* [[Tools]] - Supporting Tools and Applications&lt;br /&gt;
* [[Galleries]]&lt;br /&gt;
* [[ArticlesAndPresentations]]&lt;br /&gt;
* [[TestimonialComments]]&lt;br /&gt;
* [[InkscapePopularity]]&lt;br /&gt;
* [[ContactInfo]] our heroes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width:33%;;background-color: #FFF1EF; padding:.5em; border: 1px solid #FFC7BF;margin:.5em&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== User Documentation ===&lt;br /&gt;
* [[InstallHelp]]&lt;br /&gt;
* [[InkscapeTerminology]]&lt;br /&gt;
* [[UserManual]]&lt;br /&gt;
* [http://inkscape.org/doc/ Tutorials]&lt;br /&gt;
* [[InkscapeSVG|Inkscape SVG vs. Plain SVG]]&lt;br /&gt;
* [[GettingExtensionsWorking]]&lt;br /&gt;
* [[GettingEffectsWorking]]&lt;br /&gt;
* [[WhatEffectsDo]]&lt;br /&gt;
* [[UsingTheConnectorTool]]&lt;br /&gt;
* [[Installing Fonts as a User]]&lt;br /&gt;
* [[EmergencySave]]&lt;br /&gt;
* [[ReleaseNotes045|Release Notes]] for 0.45 (unstable)&lt;br /&gt;
* [[ReleaseNotes044|Release Notes]] for 0.44 and past&lt;br /&gt;
* [[Announcing Releases]] for 0.44 and past&lt;br /&gt;
* [[ArticleIntroducingInkscape0_40|Introducing Inkscape 0.40]]&lt;br /&gt;
* [[TricksAndTips]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width:33%;background-color: #FFFAE5; padding:.5em; border: 1px solid #FFFF66; margin:.5em&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Help Inkscape Without Coding === &lt;br /&gt;
&lt;br /&gt;
* [[HelpWanted]]&lt;br /&gt;
* [[CreatingDists]]: how to build packages&lt;br /&gt;
* [[WebsiteEditing]]&lt;br /&gt;
* [[UpdatingTrackerItems]]&lt;br /&gt;
* [[TutorialIdeas]]&lt;br /&gt;
* [[How_To_Start_A_Page]] how to use the wiki&lt;br /&gt;
* [[TestingInkscape]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&amp;lt;table cellspacing=&amp;quot;0&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;background-color: #FFFAE5; border-width:0em .5em; border-style:solid; border-color:white&amp;quot;&amp;gt;&amp;lt;tr valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:11px 0em 0em 11px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th colspan=&amp;quot;2&amp;quot; align=&amp;quot;left&amp;quot; style=&amp;quot;padding:.5em 0em 0em .5em&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Developer Documentation ===&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;width:50%;padding:.5em&amp;quot;&amp;gt;&lt;br /&gt;
==== General ====&lt;br /&gt;
* [[DeveloperManual]]&lt;br /&gt;
* [[CompilingInkscape]]&lt;br /&gt;
* [[WorkingWithSVN]]&lt;br /&gt;
* [[HandlingPreferences]]:  creating and using preference values&lt;br /&gt;
* [[AddSPObject]]: how to add a new SPObject type&lt;br /&gt;
* [[ReprListeners]]: responding to XML doc changes&lt;br /&gt;
* [[ErrorsAndWarnings]]: how to deal with reporting errors, warnings, and other messages&lt;br /&gt;
* [[DebuggingTips]]: random tips to help debug problems&lt;br /&gt;
&lt;br /&gt;
* [[DeveloperTitles]]: terms for various roles in Inkscape&lt;br /&gt;
* [[InkscapeJanitors]]: small tasks that need doing&lt;br /&gt;
* [[ExtensionAttributes]]: currently defined attributes in Inkscape's XML namespace and what they do&lt;br /&gt;
&lt;br /&gt;
* [[ExtensionsRepository]]: an Internet central for Inkscape Extensions&lt;br /&gt;
* [[OtherProjects]] (outside links)&lt;br /&gt;
* [[:Category:Extensions|Extensions]]&lt;br /&gt;
** [[ExtensionArchitecture]]: an overview of the functionality provided by extensions and the possible implementations&lt;br /&gt;
** [[MakingAnINX]]: A description of the INX file format&lt;br /&gt;
** [[ScriptingHOWTO]]: Guidelines for writing External Script Extensions&lt;br /&gt;
** [[PythonModules]]: Helper modules for extensions crafted with python&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width:50%;padding:.5em&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Development Discussion ====&lt;br /&gt;
* [[Roadmap]]: the main todo list&lt;br /&gt;
* [[NewFeatureProposals]]&lt;br /&gt;
* [[ExtensionArchitectureProposals]]&lt;br /&gt;
* [[Coding Style|Coding Style Discussion]]&lt;br /&gt;
* [[FileTypes]]&lt;br /&gt;
* [[ApplicationIcons]] ( Application + Interface )&lt;br /&gt;
* [[InkscapeColor]]&lt;br /&gt;
* [[PrintingSubsystem]]&lt;br /&gt;
* [[SVG Competitors Plan]] - MS WVG vs SVG, etc&lt;br /&gt;
* [[SVG Tiny Compliance]]&lt;br /&gt;
* [[SVG Test Suite Compliance]] - [[W3C]] full test suite&lt;br /&gt;
* [[CSS Support]]&lt;br /&gt;
* [[OpenDocument proposal]]&lt;br /&gt;
* [[Googles Summer Of Code]]&lt;br /&gt;
* [[UI MockupScreenshots]]&lt;br /&gt;
* [[lib2geom]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;width:50%;padding:.5em&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== User Interface Discussion ====&lt;br /&gt;
* [[Translation_information]]&lt;br /&gt;
* [[AddingInterfaceVerbs]]&lt;br /&gt;
* [[AccessibleGraphics]]&lt;br /&gt;
* [[ObjectManager]]&lt;br /&gt;
* [[DialogsReorganization]]&lt;br /&gt;
* [[ModalInterfaces]]&lt;br /&gt;
* [[TextUsability]]: text tool /dialog dialog&lt;br /&gt;
* [[KeyboardShortcutsToDo]]&lt;br /&gt;
** [[KeyboardProfiles]]: how you can help &lt;br /&gt;
* [[StatusbarAPI]]&lt;br /&gt;
* [[Animation-(Timeline)]]&lt;br /&gt;
* [[Free Desktop Graphic Suite]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width:50%;padding:.5em&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Rearchitecture Discussion ====&lt;br /&gt;
* [[SubsystemRearchitecture]]&lt;br /&gt;
* [[GtkMMification]]: replace C boilerplate with gtkmm objects&lt;br /&gt;
* [[PathRepresentation]]&lt;br /&gt;
* [[Cairoification]]&lt;br /&gt;
* [[ScribusInteroperability]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
* [[WikiAttic]]: pages that are no longer relevant but kept for historical value&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:About Inkscape]]&lt;br /&gt;
[[Category:User Documentation]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=INX_extension_descriptor_format&amp;diff=12028</id>
		<title>INX extension descriptor format</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=INX_extension_descriptor_format&amp;diff=12028"/>
		<updated>2006-11-16T17:21:39Z</updated>

		<summary type="html">&lt;p&gt;Acspike: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction == &lt;br /&gt;
&lt;br /&gt;
In order for Inkscape to make use of an external script or program, you must describe that script to inkscape using an INX file. See the inkscape share directory for examples. The INX file allows the author to:&lt;br /&gt;
* label strings for translation &lt;br /&gt;
* define parameters&lt;br /&gt;
* chain extensions&lt;br /&gt;
* etc&lt;br /&gt;
Be sure to read through the INX files that come with Inkscape. Nothing beats a working example.&lt;br /&gt;
&lt;br /&gt;
== Localisation of extensions ==&lt;br /&gt;
&lt;br /&gt;
To allow localisation of strings in extension for Inkscape, some xml tags have to be adapted to variant readable by intltool. It means that tags or parametres has to have &amp;quot;_&amp;quot; prepended to their name, e.g. &amp;lt;_name&amp;gt;name of extension&amp;lt;/_name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also the path to the extension has to be included in POTFILES.in file to tell intltool where to look for translatable content.&lt;br /&gt;
&lt;br /&gt;
Usefull information, before this section gets fully updated, can be found at [http://gould.cx/ted/blog/Translating_Custom_XML Ted's blog].&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
More example INX files are available in the Inkscape distribution or in the Inkscape [http://inkscape.svn.sourceforge.net/viewvc/inkscape/inkscape/trunk/share/extensions/|SVN repository].&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;inkscape-extension&amp;gt;&lt;br /&gt;
    &amp;lt;_name&amp;gt;{Friendly Extension Name}&amp;lt;/_name&amp;gt;&lt;br /&gt;
    &amp;lt;id&amp;gt;{org.domain.sub-domain.extension-name}&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;dependency type=&amp;quot;executable&amp;quot;&lt;br /&gt;
                  location=&amp;quot;[extensions|{location}]&amp;quot;&amp;gt;program.ext&amp;lt;/dependency&amp;gt;&lt;br /&gt;
      &amp;lt;param name=&amp;quot;{argumentName}&amp;quot; type=&amp;quot;[int|float|string]&amp;quot;&lt;br /&gt;
             min=&amp;quot;{number}&amp;quot; max=&amp;quot;{number}&amp;quot;&lt;br /&gt;
             _gui-text=&amp;quot;{Friendly Argument Name}&amp;quot;&amp;gt;{default value}&amp;lt;/param&amp;gt;&lt;br /&gt;
    &amp;lt;effect&amp;gt;&lt;br /&gt;
      &amp;lt;object-type&amp;gt;[all|{element type}]&amp;lt;/object-type&amp;gt;&lt;br /&gt;
        &amp;lt;effects-menu&amp;gt;&lt;br /&gt;
          &amp;lt;submenu _name=&amp;quot;{Extension Group Name}&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/effects-menu&amp;gt;&lt;br /&gt;
    &amp;lt;/effect&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
      &amp;lt;command reldir=&amp;quot;extensions&amp;quot;&lt;br /&gt;
               interpreter=&amp;quot;[python|perl|bash|{some other}]&amp;quot;&amp;gt;program.ext&amp;lt;/command&amp;gt;&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/inkscape-extension&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
[[ScriptingHOWTO]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;br /&gt;
[[Category:Help Wanted]]&lt;br /&gt;
[[Category:Extensions]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=INX_extension_descriptor_format&amp;diff=12026</id>
		<title>INX extension descriptor format</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=INX_extension_descriptor_format&amp;diff=12026"/>
		<updated>2006-11-16T17:19:35Z</updated>

		<summary type="html">&lt;p&gt;Acspike: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction == &lt;br /&gt;
&lt;br /&gt;
In order for Inkscape to make use of an external script or program, you must describe that script to inkscape using an INX file. See the inkscape share directory for examples. The INX file allows the author to:&lt;br /&gt;
* label strings for translation &lt;br /&gt;
* define parameters&lt;br /&gt;
* chain extensions&lt;br /&gt;
* etc&lt;br /&gt;
&lt;br /&gt;
== Localisation of extensions ==&lt;br /&gt;
&lt;br /&gt;
To allow localisation of strings in extension for Inkscape, some xml tags have to be adapted to variant readable by intltool. It means that tags or parametres has to have &amp;quot;_&amp;quot; prepended to their name, e.g. &amp;lt;_name&amp;gt;name of extension&amp;lt;/_name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also the path to the extension has to be included in POTFILES.in file to tell intltool where to look for translatable content.&lt;br /&gt;
&lt;br /&gt;
Usefull information, before this section gets fully updated, can be found at [http://gould.cx/ted/blog/Translating_Custom_XML Ted's blog].&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
More example INX files are available in the Inkscape distribution or in the Inkscape [http://inkscape.svn.sourceforge.net/viewvc/inkscape/inkscape/trunk/share/extensions/|SVN repository].&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;inkscape-extension&amp;gt;&lt;br /&gt;
    &amp;lt;_name&amp;gt;{Friendly Extension Name}&amp;lt;/_name&amp;gt;&lt;br /&gt;
    &amp;lt;id&amp;gt;{org.domain.sub-domain.extension-name}&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;dependency type=&amp;quot;executable&amp;quot;&lt;br /&gt;
                  location=&amp;quot;[extensions|{location}]&amp;quot;&amp;gt;program.ext&amp;lt;/dependency&amp;gt;&lt;br /&gt;
      &amp;lt;param name=&amp;quot;{argumentName}&amp;quot; type=&amp;quot;[int|float|string]&amp;quot;&lt;br /&gt;
             min=&amp;quot;{number}&amp;quot; max=&amp;quot;{number}&amp;quot;&lt;br /&gt;
             _gui-text=&amp;quot;{Friendly Argument Name}&amp;quot;&amp;gt;{default value}&amp;lt;/param&amp;gt;&lt;br /&gt;
    &amp;lt;effect&amp;gt;&lt;br /&gt;
      &amp;lt;object-type&amp;gt;[all|{element type}]&amp;lt;/object-type&amp;gt;&lt;br /&gt;
        &amp;lt;effects-menu&amp;gt;&lt;br /&gt;
          &amp;lt;submenu _name=&amp;quot;{Extension Group Name}&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/effects-menu&amp;gt;&lt;br /&gt;
    &amp;lt;/effect&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
      &amp;lt;command reldir=&amp;quot;extensions&amp;quot;&lt;br /&gt;
               interpreter=&amp;quot;[python|perl|bash|{some other}]&amp;quot;&amp;gt;program.ext&amp;lt;/command&amp;gt;&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/inkscape-extension&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
[[ScriptingHOWTO]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;br /&gt;
[[Category:Help Wanted]]&lt;br /&gt;
[[Category:Extensions]]&lt;/div&gt;</summary>
		<author><name>Acspike</name></author>
	</entry>
</feed>