<?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=Joelholdsworth</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=Joelholdsworth"/>
	<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/Special:Contributions/Joelholdsworth"/>
	<updated>2026-05-01T11:20:35Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&amp;diff=25464</id>
		<title>Release notes/0.47</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&amp;diff=25464"/>
		<updated>2008-03-18T22:58:45Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* New and improved effects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Inkscape 0.47=&lt;br /&gt;
'''(not released yet)'''&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
&lt;br /&gt;
==Node tool==&lt;br /&gt;
&lt;br /&gt;
* [helper path display, flashing - johan]&lt;br /&gt;
* The Node tool can now edit '''clipping paths''' and '''masks''' of objects on canvas, without releasing them. If the selected object has a clipping path and mask, the corresponding buttons on the controls bar of the tool will be enabled; pressing these buttons will display the editable paths or handles of the clippath or mask. A clipping path is stroked green, a mask is stroked blue (the same colors as those used for them in Outline mode).&lt;br /&gt;
* snapping has been improved (more details in Snapping below)&lt;br /&gt;
&lt;br /&gt;
==Calligraphy tool ==&lt;br /&gt;
Added 4 preset buttons for dip, pen, brush and reed in the toolbox. Clicking one button sets the calligraphic tool with the matching presets.&lt;br /&gt;
&lt;br /&gt;
=Live path effects=&lt;br /&gt;
&lt;br /&gt;
[sketch, von koch, knot]&lt;br /&gt;
&lt;br /&gt;
=Import/Export=&lt;br /&gt;
==Corel DRAW files import==&lt;br /&gt;
&lt;br /&gt;
Now Inkscape can import more Corel DRAW files of following types:&lt;br /&gt;
&lt;br /&gt;
* Corel DRAW Compressed Exchange files (CCX)&lt;br /&gt;
* Corel DRAW 7-X4 Template files (CDT)&lt;br /&gt;
* Corel DRAW Presentation Exchange files (CMX)&lt;br /&gt;
&lt;br /&gt;
Text objects are not supported as of UniConvertor 1.1.1.&lt;br /&gt;
&lt;br /&gt;
==sK1 files import==&lt;br /&gt;
&lt;br /&gt;
Inkscape uses UniConvertor to import sK1 files. Text objects are not supported as of UniConvertor 1.1.1.&lt;br /&gt;
&lt;br /&gt;
==CGM import==&lt;br /&gt;
&lt;br /&gt;
Inkscape uses UniConvertor to import Computer Graphics Metafile (CGM) files. Text objects are not supported as of UniConvertor 1.1.1.&lt;br /&gt;
&lt;br /&gt;
==PDF export==&lt;br /&gt;
&lt;br /&gt;
With PDF export, it is now possible to make the PDF page the size of the entire drawing, instead of the same as SVG page as before by the &amp;quot;Export drawing, not page&amp;quot; checkbox in PDF export options. Also, you can export a single object from a complex document to PDF if you specify the ID of that object in the &amp;quot;Limit export to the object with ID&amp;quot; field; the page of such PDF will be the same size as the bounding box of that object and will show only that object (all others will be hidden).&lt;br /&gt;
&lt;br /&gt;
The same capabilities are available from the command line by using &amp;lt;code&amp;gt;--export-area-drawing&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--export-id=ID&amp;lt;/code&amp;gt; parameters with &amp;lt;code&amp;gt;--export-pdf&amp;lt;/code&amp;gt; (previously, they only worked for PNG export).&lt;br /&gt;
&lt;br /&gt;
=Extension effects=&lt;br /&gt;
==New and improved effects==&lt;br /&gt;
&lt;br /&gt;
* The new '''Text &amp;gt; Convert to Braille''' extension recodes English (or just Latin letters) text to [http://en.wikipedia.org/wiki/Braille Braille] code created for visually impaired people.&lt;br /&gt;
* The new '''Render &amp;gt; Alphabet Soup''' extension is a vector rework of Matt Chrisholm's GPLed script [http://www.theory.org/artprojects/alphabetsoup/main.html]. Alphabet Soup randomly mashes glyph-elements together to make exotic looking text.&lt;br /&gt;
&lt;br /&gt;
=SVG output=&lt;br /&gt;
&lt;br /&gt;
==Optimized CSS properties==&lt;br /&gt;
&lt;br /&gt;
As a file size optimization, Inkscape does not write into SVG some of the stroke properties if the object has stroke:none and some of the fill properties when it has fill:none. The only situation where this might affect you is if you remove stroke from an object and then turn it back on - the object will get the default stroke instead of the same it had before. &lt;br /&gt;
&lt;br /&gt;
Also, in manually-edited SVG where a parent group has no stroke but sets some stroke properties to be inherited by its descendants, you will need to set stroke property to other than none on the group, and suppress inheritance with stroke:none on those children that don't need it.&lt;br /&gt;
&lt;br /&gt;
Specifically, if stroke:none, the following properties do not get written to SVG:&lt;br /&gt;
&lt;br /&gt;
 stroke-width&lt;br /&gt;
 stroke-linecap&lt;br /&gt;
 stroke-linejoin&lt;br /&gt;
 stroke-miterlimit&lt;br /&gt;
 stroke-opacity&lt;br /&gt;
 stroke-dasharray&lt;br /&gt;
 stroke-dashoffset&lt;br /&gt;
&lt;br /&gt;
Note that this does not include marker properties, which means you can still have markers on a path without visible stroke.&lt;br /&gt;
&lt;br /&gt;
If fill:none, the following properties do not get written to SVG:&lt;br /&gt;
&lt;br /&gt;
 fill-opacity&lt;br /&gt;
 fill-rule&lt;br /&gt;
&lt;br /&gt;
==Optimized path data==&lt;br /&gt;
&lt;br /&gt;
In this version, the size of the path data written in the &amp;lt;code&amp;gt;d=&amp;lt;/code&amp;gt; attribute of &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt; elements is reduced by about 10%. Inkscape generates the shortest possible path strings by avoiding repeated operators and using relative coordinates (when it helps).&lt;br /&gt;
&lt;br /&gt;
This is controlled by the following attributes in &amp;lt;code&amp;gt;group id=&amp;quot;svgoutput&amp;quot;&amp;lt;/code&amp;gt; in your preferences.xml file:&lt;br /&gt;
&lt;br /&gt;
* allowrelativecoordinates (default 1)&lt;br /&gt;
* allowshorthands (default 1)&lt;br /&gt;
* forcerepeatcommands (default 0)&lt;br /&gt;
&lt;br /&gt;
=User interface=&lt;br /&gt;
==Native File Dialogs for Windows==&lt;br /&gt;
The windows builds of inkscape now have Windows-native file dialogs to keep consistency with other windows applications.&lt;br /&gt;
&lt;br /&gt;
==Masks and clipping paths==&lt;br /&gt;
&lt;br /&gt;
[johan]&lt;br /&gt;
&lt;br /&gt;
==Dropper tool==&lt;br /&gt;
&lt;br /&gt;
The confusing icons on buttons in the controls bar of the Dropper tool (pick/assign opacity) are replaced by text labels.&lt;br /&gt;
&lt;br /&gt;
=Grids, guides, snapping=&lt;br /&gt;
==Snapping==&lt;br /&gt;
Snapping has been implemented or improved in these areas:&lt;br /&gt;
* The '''node tool''' now snaps to any unselected node (cusp or smooth) within the path that's being edited, and to cusp nodes of other paths. It also snaps to the path itself, but only to the stationary segments in between two unselected nodes.&lt;br /&gt;
* The object snapper now also allows to snap to the '''page border'''&lt;br /&gt;
&lt;br /&gt;
=Notable bug fixes=&lt;br /&gt;
&lt;br /&gt;
* Live path effects can now be assigned to the sides of a 3D box (use Ctrl+click to select individual sides).&lt;br /&gt;
&lt;br /&gt;
= Previous releases =&lt;br /&gt;
&lt;br /&gt;
* [[ReleaseNotes046]]&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>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&amp;diff=21364</id>
		<title>Release notes/0.47</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&amp;diff=21364"/>
		<updated>2008-02-23T23:49:49Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Inkscape 0.47 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Inkscape 0.47=&lt;br /&gt;
'''(not released yet)'''&lt;br /&gt;
=User Interface=&lt;br /&gt;
==Native File Dialogs for Windows==&lt;br /&gt;
The windows builds of inkscape now have Windows-native file dialogs to keep consistency with other windows applications.&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&amp;diff=20014</id>
		<title>Release notes/0.47</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&amp;diff=20014"/>
		<updated>2008-02-12T09:41:20Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Inkscape 0.47 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Inkscape 0.47=&lt;br /&gt;
'''(not released yet)'''&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&amp;diff=20004</id>
		<title>Release notes/0.47</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&amp;diff=20004"/>
		<updated>2008-02-12T09:40:55Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: New page: =Inkscape 0.47=&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Inkscape 0.47=&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19764</id>
		<title>SpecFilletChamfer</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19764"/>
		<updated>2008-02-06T23:23:26Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Launchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/fillet-tool&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
The filleting tool will allow the user to replace the cusp of a corner on a path, with a rounding arc of specified radius. This is rather simple to the way we can round off the corners rectangles, but for arbitrary geometry.&lt;br /&gt;
&lt;br /&gt;
Note that this proposed tool will only work on corners in individual paths - not on the intersections of the strokes of separate objects.&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
A fillet/chamfer tool is useful for technical drawings where fillets and chamfers are needed often, and smoothing corners in artwork.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== User Interface ===&lt;br /&gt;
In terms of implementation, the filleting tool must be implemented as a sub-feature within the node edit tool. With the node tool selected, the user will select a series of points in a path that they would like to fillet. The user will then click the fillet button in the node context toolbar.&lt;br /&gt;
&lt;br /&gt;
With this fillet-tool-button clicked, and the an interactive fillet mode is activated. The node edit context toolbar will change to a fillet context toolbar. The fillet-tool-button will remain present on this new toolbar, but will be shown depressed to indicate that the filleting mode is activated. An edit box with spinner will be placed in the bar so that the user can choose the radius  numerically. At the same time handles will be shown on the canvas to allow the user to edit the radius interactively. Helper circles will give a preview of the end result.&lt;br /&gt;
&lt;br /&gt;
Once the user is happy with the fillet, the result can be committed by selecting a different tool or clicking the fillet-tool-button on toolbar (so as to un-depress it). To cancel, the user can press Esc, or can apply the change then Undo.&lt;br /&gt;
&lt;br /&gt;
It might be helpful to give the choice between placing a full circle object into the corner, a tangential arc object of the fillet, or actually filleting the corner with an arc which will modify the parent path to replace the cusp.&lt;br /&gt;
&lt;br /&gt;
This tool will give the option to chamfer the corner - where instead smoothing the corner with an arc, the corner is smoothed with a straight line - simply snipping the tip off.&lt;br /&gt;
&lt;br /&gt;
=== Back End ===&lt;br /&gt;
The illustration below shows the steps involved in filleting the corner of a path:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fillet.png]]&lt;br /&gt;
&lt;br /&gt;
Filleting a corner is a 3-step process. First, the centre point for the arc must be calculated (X and Y in fig 1 and fig 2a). Second, the arc's sweep must be calculated so that it merges with the parent path at the tagents (fig 2b). Third, the point of the corner must be snipped off, and the arc welded on (fig 2c).&lt;br /&gt;
&lt;br /&gt;
All shapes must be converted to paths before filleting can occur.&lt;br /&gt;
&lt;br /&gt;
Finding point X is mathematically trivial. Finding Y is very much harder, and will require a numerical solution to a set of simultaneous equations. Note that there could potentially be more than one possible solution (as shown in fig 2a), so the closest solution to the cusp along the the length of bezier should be selected.&lt;br /&gt;
&lt;br /&gt;
=== More ideas ===&lt;br /&gt;
See [http://www.oberonplace.com/products/curveworks/index.htm]&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
===Existing Code?===&lt;br /&gt;
* Q: Does anyone know of any existing code in the codebase that makes these sorts of calculations? So as to avoid reinventing the wheel and duplicating code?&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19754</id>
		<title>SpecFilletChamfer</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19754"/>
		<updated>2008-02-06T23:19:37Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Launchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/fillet-tool&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
The filleting tool will allow the user to replace the cusp of a corner on a path, with a rounding arc of specified radius. This is rather simple to the way we can round off the corners rectangles, but for arbitrary geometry.&lt;br /&gt;
&lt;br /&gt;
Note that this proposed tool will only work on corners in individual paths - not on the intersections of the strokes of separate objects.&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
A fillet/chamfer tool is useful for technical drawings where fillets and chamfers are needed often, and smoothing corners in artwork.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== User Interface ===&lt;br /&gt;
In terms of implementation, the filleting tool must be implemented as a sub-feature within the node edit tool. With the node tool selected, the user will select a series of points in a path that they would like to fillet. The user will then click the fillet button in the node context toolbar.&lt;br /&gt;
&lt;br /&gt;
With this fillet-tool-button clicked, and the an interactive fillet mode is activated. The node edit context toolbar will change to a fillet context toolbar. The fillet-tool-button will remain present on this new toolbar, but will be shown depressed to indicate that the filleting mode is activated. An edit box with spinner will be placed in the bar so that the user can choose the radius  numerically. At the same time handles will be shown on the canvas to allow the user to edit the radius interactively.&lt;br /&gt;
&lt;br /&gt;
Once the user is happy with the fillet, the result can be committed by selecting a different tool or clicking fillet-tool-button on toolbar (so as to un-depress it). To cancel, the user can press Esc, or can apply the change then Undo.&lt;br /&gt;
&lt;br /&gt;
It might be helpful to give the choice between placing a full circle object into the corner, a tangential arc object of the fillet, or actually filleting the corner with an arc which will modify the parent path to replace the cusp.&lt;br /&gt;
&lt;br /&gt;
This tool will give the option to chamfer the corner - where instead smoothing the corner with an arc, the corner is smoothed with a straight line - simply snipping the tip off.&lt;br /&gt;
&lt;br /&gt;
=== Back End ===&lt;br /&gt;
The illustration below shows the steps involved in filleting the corner of a path:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fillet.png]]&lt;br /&gt;
&lt;br /&gt;
Filleting a corner is a 3-step process. First, the centre point for the arc must be calculated (X and Y in fig 1 and fig 2a). Second, the arc's sweep must be calculated so that it merges with the parent path at the tagents (fig 2b). Third, the point of the corner must be snipped off, and the arc welded on (fig 2c).&lt;br /&gt;
&lt;br /&gt;
All shapes must be converted to paths before filleting can occur.&lt;br /&gt;
&lt;br /&gt;
Finding point X is mathematically trivial. Finding Y is very much harder, and will require a numerical solution to a set of simultaneous equations. Note that there could potentially be more than one possible solution (as shown in fig 2a), so the closest solution to the cusp along the the length of bezier should be selected.&lt;br /&gt;
&lt;br /&gt;
=== More ideas ===&lt;br /&gt;
See [http://www.oberonplace.com/products/curveworks/index.htm]&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
===Existing Code?===&lt;br /&gt;
* Q: Does anyone know of any existing code in the codebase that makes these sorts of calculations? So as to avoid reinventing the wheel and duplicating code?&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19744</id>
		<title>SpecFilletChamfer</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19744"/>
		<updated>2008-02-06T23:17:00Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* User Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Launchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/fillet-tool&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
The filleting tool will allow the user to replace the cusp of a corner on a path, with a rounding arc of specified radius. This is rather simple to the way we can round off the corners rectangles, but for arbitrary geometry.&lt;br /&gt;
&lt;br /&gt;
Note that this proposed tool will only work on corners in individual paths - not on the intersections of the strokes of separate objects.&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
A fillet/chamfer tool is useful for technical drawings where fillets and chamfers are needed often, and smoothing corners in artwork.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== User Interface ===&lt;br /&gt;
In terms of implementation, the filleting tool must be implemented as a sub-feature within the node edit tool. With the node tool selected, the user will select a series of points that they would like to fillet. The user will the click the fillet button in the node context toolbar.&lt;br /&gt;
&lt;br /&gt;
With this fillet-tool-button clicked, and the an interractive fillet mode activated. The node edit context toolbar will change to a fillet toolbar. The fillet-tool-button will remain present on the toolbar, but will be shown depressed while in the filleting in mode. An edit box with spinner will be placed in the tool commands bar so that the user can choose the radius for the numerically. At the same time a handles will be shown on the canvas to allow the user to edit the radius interactively.&lt;br /&gt;
&lt;br /&gt;
Once the user is happy with the fillet the result can be committed by selecting a different tool or clicking fillet-tool-button on toolbar so as to un-depress it. To cancel the user can press Esc, or can apply the change then Undo.&lt;br /&gt;
&lt;br /&gt;
It might be helpful to give the choice between placing a full circle object into the corner, a tangential arc object of the fillet, or actually filleting the corner with an arc which will modify the parent path to replace the cusp.&lt;br /&gt;
&lt;br /&gt;
This tool will give the option to chamfer the corner - where instead smoothing the corner with an arc, the corner is smoothed with a straight line - simply snipping the tip off.&lt;br /&gt;
&lt;br /&gt;
=== Back End ===&lt;br /&gt;
The illustration below shows the steps involved in filleting the corner of a path:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fillet.png]]&lt;br /&gt;
&lt;br /&gt;
Filleting a corner is a 3-step process. First, the centre point for the arc must be calculated (X and Y in fig 1 and fig 2a). Second, the arc's sweep must be calculated so that it merges with the parent path at the tagents (fig 2b). Third, the point of the corner must be snipped off, and the arc welded on (fig 2c).&lt;br /&gt;
&lt;br /&gt;
All shapes must be converted to paths before filleting can occur.&lt;br /&gt;
&lt;br /&gt;
Finding point X is mathematically trivial. Finding Y is very much harder, and will require a numerical solution to a set of simultaneous equations. Note that there could potentially be more than one possible solution (as shown in fig 2a), so the closest solution to the cusp along the the length of bezier should be selected.&lt;br /&gt;
&lt;br /&gt;
=== More ideas ===&lt;br /&gt;
See [http://www.oberonplace.com/products/curveworks/index.htm]&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
===Existing Code?===&lt;br /&gt;
* Q: Does anyone know of any existing code in the codebase that makes these sorts of calculations? So as to avoid reinventing the wheel and duplicating code?&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19734</id>
		<title>SpecFilletChamfer</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19734"/>
		<updated>2008-02-06T23:08:51Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Launchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/fillet-tool&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
The filleting tool will allow the user to replace the cusp of a corner on a path, with a rounding arc of specified radius. This is rather simple to the way we can round off the corners rectangles, but for arbitrary geometry.&lt;br /&gt;
&lt;br /&gt;
Note that this proposed tool will only work on corners in individual paths - not on the intersections of the strokes of separate objects.&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
A fillet/chamfer tool is useful for technical drawings where fillets and chamfers are needed often, and smoothing corners in artwork.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== User Interface ===&lt;br /&gt;
In terms of implementation, the filleting tool must be implemented as a first class citizen along with the rest of the toolbox - having a tool commands toolbar, a cursor, status messages etc., just like other tools. In terms of the UI for activating the tool - this could be added as another icon in the toolbox, but it might be better to hide the tool away in a well chosen location (discuss), so as not to clutter the toolbox with a new tool that is really very specialist.&lt;br /&gt;
&lt;br /&gt;
To fillet a corner, the user will first select the object to modify, then activate the fillet tool, then click on the cusp point with the mouse. It might be possible to show a preview of the fillet as the user hovers over the point with the mouse. It might also be possible to add a button in the tool commands bar that fillets all the corners in a shape.&lt;br /&gt;
&lt;br /&gt;
An edit box with spinner will be placed in the tool commands bar so that the user can choose the radius for the fillet.&lt;br /&gt;
&lt;br /&gt;
It might be helpful (discuss) to give the choice between placing a full circle object into the corner, a tangential arc object of the fillet, or actually filleting the corner with an arc which will modify the parent path to replace the cusp.&lt;br /&gt;
&lt;br /&gt;
This tool could give the option to chamfer the corner - where instead smoothing the corner with an arc, the corner is smoothed with a straight line - simply snipping the tip off.&lt;br /&gt;
&lt;br /&gt;
A good starting point for this tool would be the code from the node editor tool, because it already has UI code for selecting of nodes in a path. Code from this tool can be used, to fillet when the user clicks on a point.&lt;br /&gt;
&lt;br /&gt;
=== Back End ===&lt;br /&gt;
The illustration below shows the steps involved in filleting the corner of a path:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fillet.png]]&lt;br /&gt;
&lt;br /&gt;
Filleting a corner is a 3-step process. First, the centre point for the arc must be calculated (X and Y in fig 1 and fig 2a). Second, the arc's sweep must be calculated so that it merges with the parent path at the tagents (fig 2b). Third, the point of the corner must be snipped off, and the arc welded on (fig 2c).&lt;br /&gt;
&lt;br /&gt;
All shapes must be converted to paths before filleting can occur.&lt;br /&gt;
&lt;br /&gt;
Finding point X is mathematically trivial. Finding Y is very much harder, and will require a numerical solution to a set of simultaneous equations. Note that there could potentially be more than one possible solution (as shown in fig 2a), so the closest solution to the cusp along the the length of bezier should be selected.&lt;br /&gt;
&lt;br /&gt;
=== More ideas ===&lt;br /&gt;
See [http://www.oberonplace.com/products/curveworks/index.htm]&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
===Existing Code?===&lt;br /&gt;
* Q: Does anyone know of any existing code in the codebase that makes these sorts of calculations? So as to avoid reinventing the wheel and duplicating code?&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19634</id>
		<title>SpecFilletChamfer</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19634"/>
		<updated>2008-02-05T23:46:57Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Back End */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Launchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/fillet-tool&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
The filleting tool will allow the user to replace the cusp of a corner on a path, with a rounding arc of specified radius. This is rather simple to the way we can round off the corners rectangles, but for arbitrary geometry.&lt;br /&gt;
&lt;br /&gt;
Note that this proposed tool will only work on corners in individual paths - not on the intersections of the strokes of separate objects.&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
A fillet/chamfer tool is useful for technical drawings where fillets and chamfers are needed often, and smoothing corners in artwork.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== User Interface ===&lt;br /&gt;
In terms of implementation, the filleting tool must be implemented as a first class citizen along with the rest of the toolbox - having a tool commands toolbar, a cursor, status messages etc., just like other tools. In terms of the UI for activating the tool - this could be added as another icon in the toolbox, but it might be better to hide the tool away in a well chosen location (discuss), so as not to clutter the toolbox with a new tool that is really very specialist.&lt;br /&gt;
&lt;br /&gt;
To fillet a corner, the user will first select the object to modify, then activate the fillet tool, then click on the cusp point with the mouse. It might be possible to show a preview of the fillet as the user hovers over the point with the mouse. It might also be possible to add a button in the tool commands bar that fillets all the corners in a shape.&lt;br /&gt;
&lt;br /&gt;
An edit box with spinner will be placed in the tool commands bar so that the user can choose the radius for the fillet.&lt;br /&gt;
&lt;br /&gt;
It might be helpful (discuss) to give the choice between placing a full circle object into the corner, a tangential arc object of the fillet, or actually filleting the corner with an arc which will modify the parent path to replace the cusp.&lt;br /&gt;
&lt;br /&gt;
This tool could give the option to chamfer the corner - where instead smoothing the corner with an arc, the corner is smoothed with a straight line - simply snipping the tip off.&lt;br /&gt;
&lt;br /&gt;
A good starting point for this tool would be the code from the node editor tool, because it already has UI code for selecting of nodes in a path. Code from this tool can be used, to fillet when the user clicks on a point.&lt;br /&gt;
&lt;br /&gt;
=== Back End ===&lt;br /&gt;
The illustration below shows the steps involved in filleting the corner of a path:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fillet.png]]&lt;br /&gt;
&lt;br /&gt;
Filleting a corner is a 3-step process. First, the centre point for the arc must be calculated (X and Y in fig 1 and fig 2a). Second, the arc's sweep must be calculated so that it merges with the parent path at the tagents (fig 2b). Third, the point of the corner must be snipped off, and the arc welded on (fig 2c).&lt;br /&gt;
&lt;br /&gt;
All shapes must be converted to paths before filleting can occur.&lt;br /&gt;
&lt;br /&gt;
Finding point X is mathematically trivial. Finding Y is very much harder, and will require a numerical solution to a set of simultaneous equations. Note that there could potentially be more than one possible solution (as shown in fig 2a), so the closest solution to the cusp along the the length of bezier should be selected.&lt;br /&gt;
&lt;br /&gt;
=== More ideas ===&lt;br /&gt;
See [http://www.oberonplace.com/products/curveworks/index.htm]&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
===Existing Code?===&lt;br /&gt;
* Q: Does anyone know of any existing code in the codebase that makes these sorts of calculations? So as to avoid reinventing the wheel and duplicating code?&lt;br /&gt;
===A good place in the UI for this tool?===&lt;br /&gt;
* Q: Does anyone have any thoughts about a good place to put this rather specialist tool in the UI? I worry that this tool while useful would only be useful occasionally, and would clutter the toolbox unhelpfully. Does anyone have any thoughts on this?&lt;br /&gt;
===Good way to make radius interactive?===&lt;br /&gt;
* This may be more of a fillet-version-2.0 feature, but I'm trying to think of the best way of allowing the user to select a filleting radius interactively. Perhaps some way of allowing them to interactively select the radius before the fillet actually applied - at which time I suppose the path's geometry will be changed permanently. Any thoughts?&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19504</id>
		<title>SpecFilletChamfer</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19504"/>
		<updated>2008-02-05T18:35:50Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Good way of make radius interactive? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Launchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/fillet-tool&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
The filleting tool will allow the user to replace the cusp of a corner on a path, with a rounding arc of specified radius. This is rather simple to the way we can round off the corners rectangles, but for arbitrary geometry.&lt;br /&gt;
&lt;br /&gt;
Note that this proposed tool will only work on corners in individual paths - not on the intersections of the strokes of separate objects.&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
A fillet/chamfer tool is useful for technical drawings where fillets and chamfers are needed often, and smoothing corners in artwork.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== User Interface ===&lt;br /&gt;
In terms of implementation, the filleting tool must be implemented as a first class citizen along with the rest of the toolbox - having a tool commands toolbar, a cursor, status messages etc., just like other tools. In terms of the UI for activating the tool - this could be added as another icon in the toolbox, but it might be better to hide the tool away in a well chosen location (discuss), so as not to clutter the toolbox with a new tool that is really very specialist.&lt;br /&gt;
&lt;br /&gt;
To fillet a corner, the user will first select the object to modify, then activate the fillet tool, then click on the cusp point with the mouse. It might be possible to show a preview of the fillet as the user hovers over the point with the mouse. It might also be possible to add a button in the tool commands bar that fillets all the corners in a shape.&lt;br /&gt;
&lt;br /&gt;
An edit box with spinner will be placed in the tool commands bar so that the user can choose the radius for the fillet.&lt;br /&gt;
&lt;br /&gt;
It might be helpful (discuss) to give the choice between placing a full circle object into the corner, a tangential arc object of the fillet, or actually filleting the corner with an arc which will modify the parent path to replace the cusp.&lt;br /&gt;
&lt;br /&gt;
This tool could give the option to chamfer the corner - where instead smoothing the corner with an arc, the corner is smoothed with a straight line - simply snipping the tip off.&lt;br /&gt;
&lt;br /&gt;
A good starting point for this tool would be the code from the node editor tool, because it already has UI code for selecting of nodes in a path. Code from this tool can be used, to fillet when the user clicks on a point.&lt;br /&gt;
&lt;br /&gt;
=== Back End ===&lt;br /&gt;
The illustration below shows the steps involved in filleting the corner of a path:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fillet.png]]&lt;br /&gt;
&lt;br /&gt;
Filleting a corner is a 3-step process. First, the centre point for the arc must be calculated (X and Y in fig 1 and fig 2a). Second, the arc's sweep must be calculated so that it merges with the parent path at the tagents (fig 2b). Third, the point of the corner must be snipped off, and the arc welded on (fig 2c).&lt;br /&gt;
&lt;br /&gt;
All shapes must be converted to paths before filleting can occur.&lt;br /&gt;
&lt;br /&gt;
Finding point X is mathematically trivial. Finding Y is very much harder, and will require a numerical solution to a set of simultaneous equations. Note that there could potentially be more than one possible solution (as shown in fig 2a), so the closest solution to the cusp along the the length of bezier should be selected.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
===Existing Code?===&lt;br /&gt;
* Q: Does anyone know of any existing code in the codebase that makes these sorts of calculations? So as to avoid reinventing the wheel and duplicating code?&lt;br /&gt;
===A good place in the UI for this tool?===&lt;br /&gt;
* Q: Does anyone have any thoughts about a good place to put this rather specialist tool in the UI? I worry that this tool while useful would only be useful occasionally, and would clutter the toolbox unhelpfully. Does anyone have any thoughts on this?&lt;br /&gt;
===Good way to make radius interactive?===&lt;br /&gt;
* This may be more of a fillet-version-2.0 feature, but I'm trying to think of the best way of allowing the user to select a filleting radius interactively. Perhaps some way of allowing them to interactively select the radius before the fillet actually applied - at which time I suppose the path's geometry will be changed permanently. Any thoughts?&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19494</id>
		<title>SpecFilletChamfer</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19494"/>
		<updated>2008-02-05T18:32:58Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Launchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/fillet-tool&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
The filleting tool will allow the user to replace the cusp of a corner on a path, with a rounding arc of specified radius. This is rather simple to the way we can round off the corners rectangles, but for arbitrary geometry.&lt;br /&gt;
&lt;br /&gt;
Note that this proposed tool will only work on corners in individual paths - not on the intersections of the strokes of separate objects.&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
A fillet/chamfer tool is useful for technical drawings where fillets and chamfers are needed often, and smoothing corners in artwork.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== User Interface ===&lt;br /&gt;
In terms of implementation, the filleting tool must be implemented as a first class citizen along with the rest of the toolbox - having a tool commands toolbar, a cursor, status messages etc., just like other tools. In terms of the UI for activating the tool - this could be added as another icon in the toolbox, but it might be better to hide the tool away in a well chosen location (discuss), so as not to clutter the toolbox with a new tool that is really very specialist.&lt;br /&gt;
&lt;br /&gt;
To fillet a corner, the user will first select the object to modify, then activate the fillet tool, then click on the cusp point with the mouse. It might be possible to show a preview of the fillet as the user hovers over the point with the mouse. It might also be possible to add a button in the tool commands bar that fillets all the corners in a shape.&lt;br /&gt;
&lt;br /&gt;
An edit box with spinner will be placed in the tool commands bar so that the user can choose the radius for the fillet.&lt;br /&gt;
&lt;br /&gt;
It might be helpful (discuss) to give the choice between placing a full circle object into the corner, a tangential arc object of the fillet, or actually filleting the corner with an arc which will modify the parent path to replace the cusp.&lt;br /&gt;
&lt;br /&gt;
This tool could give the option to chamfer the corner - where instead smoothing the corner with an arc, the corner is smoothed with a straight line - simply snipping the tip off.&lt;br /&gt;
&lt;br /&gt;
A good starting point for this tool would be the code from the node editor tool, because it already has UI code for selecting of nodes in a path. Code from this tool can be used, to fillet when the user clicks on a point.&lt;br /&gt;
&lt;br /&gt;
=== Back End ===&lt;br /&gt;
The illustration below shows the steps involved in filleting the corner of a path:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fillet.png]]&lt;br /&gt;
&lt;br /&gt;
Filleting a corner is a 3-step process. First, the centre point for the arc must be calculated (X and Y in fig 1 and fig 2a). Second, the arc's sweep must be calculated so that it merges with the parent path at the tagents (fig 2b). Third, the point of the corner must be snipped off, and the arc welded on (fig 2c).&lt;br /&gt;
&lt;br /&gt;
All shapes must be converted to paths before filleting can occur.&lt;br /&gt;
&lt;br /&gt;
Finding point X is mathematically trivial. Finding Y is very much harder, and will require a numerical solution to a set of simultaneous equations. Note that there could potentially be more than one possible solution (as shown in fig 2a), so the closest solution to the cusp along the the length of bezier should be selected.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
===Existing Code?===&lt;br /&gt;
* Q: Does anyone know of any existing code in the codebase that makes these sorts of calculations? So as to avoid reinventing the wheel and duplicating code?&lt;br /&gt;
===A good place in the UI for this tool?===&lt;br /&gt;
* Q: Does anyone have any thoughts about a good place to put this rather specialist tool in the UI? I worry that this tool while useful would only be useful occasionally, and would clutter the toolbox unhelpfully. Does anyone have any thoughts on this?&lt;br /&gt;
===Good way of make radius interactive?===&lt;br /&gt;
* This may be more of a fillet-version-2.0 feature, but I'm trying to think of the best way of allowing the user to select a filleting radius interactively. Perhaps some way of allowing them to interactively select the radius before the fillet actually applied - at which time I suppose the path's geometry will be changed permanently. Any thoughts?&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19484</id>
		<title>SpecFilletChamfer</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19484"/>
		<updated>2008-02-05T18:24:13Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Launchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/fillet-tool&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
The filleting tool will allow the user to replace the cusp of a corner on a path, with a rounding arc of specified radius. This is rather simple to the way we can round off the corners rectangles, but for arbitrary geometry.&lt;br /&gt;
&lt;br /&gt;
Note that this proposed tool will only work on corners in individual paths - not on the intersections of the strokes of separate objects.&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
A fillet/chamfer tool is useful for technical drawings where fillets and chamfers are needed often, and smoothing corners in artwork.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== User Interface ===&lt;br /&gt;
In terms of implementation, the filleting tool must be implemented as a first class citizen along with the rest of the toolbox - having a tool commands toolbar, a cursor, status messages etc., just like other tools. In terms of the UI for activating the tool - this could be added as another icon in the toolbox, but it might be better to hide the tool away in a well chosen location (discuss), so as not to clutter the toolbox with a new tool that is really very specialist.&lt;br /&gt;
&lt;br /&gt;
To fillet a corner, the user will first select the object to modify, then activate the fillet tool, then click on the cusp point with the mouse. It might be possible to show a preview of the fillet as the user hovers over the point with the mouse. It might also be possible to add a button in the tool commands bar that fillets all the corners in a shape.&lt;br /&gt;
&lt;br /&gt;
An edit box with spinner will be placed in the tool commands bar so that the user can choose the radius for the fillet.&lt;br /&gt;
&lt;br /&gt;
It might be helpful (discuss) to give the choice between placing a full circle object into the corner, a tangential arc object of the fillet, or actually filleting the corner with an arc which will modify the parent path to replace the cusp.&lt;br /&gt;
&lt;br /&gt;
This tool could give the option to chamfer the corner - where instead smoothing the corner with an arc, the corner is smoothed with a straight line - simply snipping the tip off.&lt;br /&gt;
&lt;br /&gt;
A good starting point for this tool would be the code from the node editor tool, because it already has UI code for selecting of nodes in a path. Code from this tool can be used, to fillet when the user clicks on a point.&lt;br /&gt;
&lt;br /&gt;
=== Back End ===&lt;br /&gt;
The illustration below shows the steps involved in filleting the corner of a path:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fillet.png]]&lt;br /&gt;
&lt;br /&gt;
Filleting a corner is a 3-step process. First, the centre point for the arc must be calculated (X and Y in fig 1 and fig 2a). Second, the arc's sweep must be calculated so that it merges with the parent path at the tagents (fig 2b). Third, the point of the corner must be snipped off, and the arc welded on (fig 2c).&lt;br /&gt;
&lt;br /&gt;
All shapes must be converted to paths before filleting can occur.&lt;br /&gt;
&lt;br /&gt;
Finding point X is mathematically trivial. Finding Y is very much harder, and will require a numerical solution to a set of simultaneous equations. Note that there could potentially be more than one possible solution (as shown in fig 2a), so the closest solution to the cusp along the the length of bezier should be selected.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
===Existing Code?===&lt;br /&gt;
* Q: Does anyone know of any existing code in the codebase that makes these sorts of calculations? So as to avoid reinventing the wheel and duplicating code?&lt;br /&gt;
===A good place in the UI for this tool?===&lt;br /&gt;
* Q: Does anyone have any thoughts about a good place to put this rather specialist tool in the UI? I worry that this tool while useful would only be useful occasionally, and would clutter the toolbox unhelpfully. Does anyone have any thoughts on this?&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19474</id>
		<title>SpecFilletChamfer</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19474"/>
		<updated>2008-02-05T18:21:12Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Launchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/fillet-tool&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
The filleting tool will allow the user to replace the cusp of a corner on a path, with a rounding arc of specified radius. This is rather simple to the way we can round off the corners rectangles, but for arbitrary geometry.&lt;br /&gt;
&lt;br /&gt;
Note that this proposed tool will only work on corners in individual paths - not on the intersections of the strokes of separate objects.&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
A fillet/chamfer tool is useful for technical drawings where fillets and chamfers are needed often, and smoothing corners in artwork.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== User Interface ===&lt;br /&gt;
In terms of implementation, the filleting tool must be implemented as a first class citizen along with the rest of the toolbox - having a tool commands toolbar, a cursor, status messages etc., just like other tools. In terms of the UI for activating the tool - this could be added as another icon in the toolbox, but it might be better to hide the tool away in a well chosen location (discuss), so as not to clutter the toolbox with a new tool that is really very specialist.&lt;br /&gt;
&lt;br /&gt;
To fillet a corner, the user will first select the object to modify, then activate the fillet tool, then click on the cusp point with the mouse. It might be possible to show a preview of the fillet as the user hovers over the point with the mouse. It might also be possible to add a button in the tool commands bar that fillets all the corners in a shape.&lt;br /&gt;
&lt;br /&gt;
An edit box with spinner will be placed in the tool commands bar so that the user can choose the radius for the fillet.&lt;br /&gt;
&lt;br /&gt;
It might be helpful (discuss) to give the choice between placing a full circle object into the corner, a tangential arc object of the fillet, or actually filleting the corner with an arc which will modify the parent path to replace the cusp.&lt;br /&gt;
&lt;br /&gt;
This tool could give the option to chamfer the corner - where instead smoothing the corner with an arc, the corner is smoothed with a straight line - simply snipping the tip off.&lt;br /&gt;
&lt;br /&gt;
A good starting point for this tool would be the code from the node editor tool, because it already has UI code for selecting of nodes in a path. Code from this tool can be used, to fillet when the user clicks on a point.&lt;br /&gt;
&lt;br /&gt;
=== Back End ===&lt;br /&gt;
The illustration below shows the steps involved in filleting the corner of a path:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fillet.png]]&lt;br /&gt;
&lt;br /&gt;
Filleting a corner is a 3-step process. First, the centre point for the arc must be calculated (X and Y in fig 1 and fig 2a). Second, the arc's sweep must be calculated so that it merges with the parent path at the tagents (fig 2b). Third, the point of the corner must be snipped off, and the arc welded on (fig 2c).&lt;br /&gt;
&lt;br /&gt;
All shapes must be converted to paths before filleting can occur.&lt;br /&gt;
&lt;br /&gt;
Finding point X is mathematically trivial. Finding Y is very much harder, and will require a numerical solution to a set of simultaneous equations. Note that there could potentially be more than one possible solution (as shown in fig 2a), so the closest solution to the cusp along the the length of bezier should be selected.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
===Existing Code?===&lt;br /&gt;
* Q: Does anyone know of any existing code in the codebase that makes these sorts of calculations? So as to avoid reinventing the wheel and duplicating code?&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19464</id>
		<title>SpecFilletChamfer</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19464"/>
		<updated>2008-02-05T18:19:13Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* User Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Launchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/fillet-tool&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
The filleting tool will allow the user to replace the cusp of a corner on a path, with a rounding arc of specified radius. This is rather simple to the way we can round off the corners rectangles, but for arbitrary geometry.&lt;br /&gt;
&lt;br /&gt;
Note that this proposed tool will only work on corners in individual paths - not on the intersections of the strokes of separate objects.&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
A fillet/chamfer tool is useful for technical drawings where fillets and chamfers are needed often, and smoothing corners in artwork.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== User Interface ===&lt;br /&gt;
In terms of implementation, the filleting tool must be implemented as a first class citizen along with the rest of the toolbox - having a tool commands toolbar, a cursor, status messages etc., just like other tools. In terms of the UI for activating the tool - this could be added as another icon in the toolbox, but it might be better to hide the tool away in a well chosen location (discuss), so as not to clutter the toolbox with a new tool that is really very specialist.&lt;br /&gt;
&lt;br /&gt;
To fillet a corner, the user will first select the object to modify, then activate the fillet tool, then click on the cusp point with the mouse. It might be possible to show a preview of the fillet as the user hovers over the point with the mouse. It might also be possible to add a button in the tool commands bar that fillets all the corners in a shape.&lt;br /&gt;
&lt;br /&gt;
An edit box with spinner will be placed in the tool commands bar so that the user can choose the radius for the fillet.&lt;br /&gt;
&lt;br /&gt;
It might be helpful (discuss) to give the choice between placing a full circle object into the corner, a tangential arc object of the fillet, or actually filleting the corner with an arc which will modify the parent path to replace the cusp.&lt;br /&gt;
&lt;br /&gt;
This tool could give the option to chamfer the corner - where instead smoothing the corner with an arc, the corner is smoothed with a straight line - simply snipping the tip off.&lt;br /&gt;
&lt;br /&gt;
A good starting point for this tool would be the code from the node editor tool, because it already has UI code for selecting of nodes in a path. Code from this tool can be used, to fillet when the user clicks on a point.&lt;br /&gt;
&lt;br /&gt;
=== Back End ===&lt;br /&gt;
The illustration below shows the steps involved in filleting the corner of a path:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fillet.png]]&lt;br /&gt;
&lt;br /&gt;
Filleting a corner is a 3-step process. First, the centre point for the arc must be calculated (X and Y in fig 1 and fig 2a). Second, the arc's sweep must be calculated so that it merges with the parent path at the tagents (fig 2b). Third, the point of the corner must be snipped off, and the arc welded on (fig 2c).&lt;br /&gt;
&lt;br /&gt;
All shapes must be converted to paths before filleting can occur.&lt;br /&gt;
&lt;br /&gt;
Finding point X is mathematically trivial. Finding Y is very much harder, and will require a numerical solution to a set of simultaneous equations. Note that there could potentially be more than one possible solution (as shown in fig 2a), so the closest solution to the cusp along the the length of bezier should be selected.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19454</id>
		<title>SpecFilletChamfer</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19454"/>
		<updated>2008-02-05T18:15:00Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* TODO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Launchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/fillet-tool&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
The filleting tool will allow the user to replace the cusp of a corner on a path, with a rounding arc of specified radius. This is rather simple to the way we can round off the corners rectangles, but for arbitrary geometry.&lt;br /&gt;
&lt;br /&gt;
Note that this proposed tool will only work on corners in individual paths - not on the intersections of the strokes of separate objects.&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
A fillet/chamfer tool is useful for technical drawings where fillets and chamfers are needed often, and smoothing corners in artwork.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== User Interface ===&lt;br /&gt;
In terms of implementation, the filleting tool must be implemented as a first class citizen along with the rest of the toolbox - having a tool commands toolbar, a cursor, status messages etc., just like other tools. In terms of the UI for activating the tool - this could be added as another icon in the toolbox, but it might be better to hide the tool away in a well chosen location (discuss), so as not to clutter the toolbox with a new tool that is really very specialist.&lt;br /&gt;
&lt;br /&gt;
To fillet a corner, the user will activate the tool, then click on the cusp point with the mouse. It might be possible to add a button in the tool commands bar that fillets all the corners in a shape.&lt;br /&gt;
&lt;br /&gt;
An edit box with spinner will be placed in the tool commands bar so that the user can choose the radius for the fillet.&lt;br /&gt;
&lt;br /&gt;
It might be helpful (discuss) to give the choice between placing a full circle object into the corner, a tangential arc object of the fillet, or actually filleting the corner with an arc which will modify the parent path to replace the cusp.&lt;br /&gt;
&lt;br /&gt;
This tool could give the option to chamfer the corner - where instead smoothing the corner with an arc, the corner is smoothed with a straight line - simply snipping the tip off.&lt;br /&gt;
&lt;br /&gt;
A good starting point for this tool would be the code from the node editor tool, because it already has UI code for selecting of nodes in a path. Code from this tool can be used, to fillet when the user clicks on a point.&lt;br /&gt;
&lt;br /&gt;
=== Back End ===&lt;br /&gt;
The illustration below shows the steps involved in filleting the corner of a path:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fillet.png]]&lt;br /&gt;
&lt;br /&gt;
Filleting a corner is a 3-step process. First, the centre point for the arc must be calculated (X and Y in fig 1 and fig 2a). Second, the arc's sweep must be calculated so that it merges with the parent path at the tagents (fig 2b). Third, the point of the corner must be snipped off, and the arc welded on (fig 2c).&lt;br /&gt;
&lt;br /&gt;
All shapes must be converted to paths before filleting can occur.&lt;br /&gt;
&lt;br /&gt;
Finding point X is mathematically trivial. Finding Y is very much harder, and will require a numerical solution to a set of simultaneous equations. Note that there could potentially be more than one possible solution (as shown in fig 2a), so the closest solution to the cusp along the the length of bezier should be selected.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19444</id>
		<title>SpecFilletChamfer</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19444"/>
		<updated>2008-02-05T18:14:43Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Launchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/fillet-tool&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
The filleting tool will allow the user to replace the cusp of a corner on a path, with a rounding arc of specified radius. This is rather simple to the way we can round off the corners rectangles, but for arbitrary geometry.&lt;br /&gt;
&lt;br /&gt;
Note that this proposed tool will only work on corners in individual paths - not on the intersections of the strokes of separate objects.&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
A fillet/chamfer tool is useful for technical drawings where fillets and chamfers are needed often, and smoothing corners in artwork.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== User Interface ===&lt;br /&gt;
In terms of implementation, the filleting tool must be implemented as a first class citizen along with the rest of the toolbox - having a tool commands toolbar, a cursor, status messages etc., just like other tools. In terms of the UI for activating the tool - this could be added as another icon in the toolbox, but it might be better to hide the tool away in a well chosen location (discuss), so as not to clutter the toolbox with a new tool that is really very specialist.&lt;br /&gt;
&lt;br /&gt;
To fillet a corner, the user will activate the tool, then click on the cusp point with the mouse. It might be possible to add a button in the tool commands bar that fillets all the corners in a shape.&lt;br /&gt;
&lt;br /&gt;
An edit box with spinner will be placed in the tool commands bar so that the user can choose the radius for the fillet.&lt;br /&gt;
&lt;br /&gt;
It might be helpful (discuss) to give the choice between placing a full circle object into the corner, a tangential arc object of the fillet, or actually filleting the corner with an arc which will modify the parent path to replace the cusp.&lt;br /&gt;
&lt;br /&gt;
This tool could give the option to chamfer the corner - where instead smoothing the corner with an arc, the corner is smoothed with a straight line - simply snipping the tip off.&lt;br /&gt;
&lt;br /&gt;
A good starting point for this tool would be the code from the node editor tool, because it already has UI code for selecting of nodes in a path. Code from this tool can be used, to fillet when the user clicks on a point.&lt;br /&gt;
&lt;br /&gt;
=== Back End ===&lt;br /&gt;
The illustration below shows the steps involved in filleting the corner of a path:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fillet.png]]&lt;br /&gt;
&lt;br /&gt;
Filleting a corner is a 3-step process. First, the centre point for the arc must be calculated (X and Y in fig 1 and fig 2a). Second, the arc's sweep must be calculated so that it merges with the parent path at the tagents (fig 2b). Third, the point of the corner must be snipped off, and the arc welded on (fig 2c).&lt;br /&gt;
&lt;br /&gt;
All shapes must be converted to paths before filleting can occur.&lt;br /&gt;
&lt;br /&gt;
Finding point X is mathematically trivial. Finding Y is very much harder, and will require a numerical solution to a set of simultaneous equations. Note that there could potentially be more than one possible solution (as shown in fig 2a), so the closest solution to the cusp along the the length of bezier should be selected.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
 * Flesh this specification out in more detail&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19094</id>
		<title>SpecFilletChamfer</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19094"/>
		<updated>2008-02-02T20:05:31Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Rationale */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Launchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/fillet-tool&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
The filleting tool will allow the user to replace the cusp of a corner on a path, with a rounding arc of specified radius. This is rather simple to the way we can round off the corners rectangles, but for arbitrary geometry.&lt;br /&gt;
&lt;br /&gt;
Note that this proposed tool will only work on corners in individual paths - not on the intersections of the strokes of separate objects.&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
A fillet/chamfer tool is useful for technical drawings where fillets and chamfers are needed often, and smoothing corners in artwork.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
In terms of implementation, the filleting tool must be implemented as a first class citizen along with the rest of the toolbox - having a tool commands toolbar, a cursor, status messages etc., just like other tools. In terms of the UI for activating the tool - this could be added as another icon in the toolbox, but it might be better to hide the tool away in a well chosen location (discuss), so as not to clutter the toolbox with a new tool that is really very specialist.&lt;br /&gt;
&lt;br /&gt;
To fillet a corner, the user will activate the tool, then click on the cusp point with the mouse. It might be possible to add a button in the tool commands bar that fillets all the corners in a shape.&lt;br /&gt;
&lt;br /&gt;
An edit box with spinner will be placed in the tool commands bar so that the user can choose the radius for the fillet.&lt;br /&gt;
&lt;br /&gt;
It might be helpful (discuss) to give the choice between placing a full circle object into the corner, a tangential arc object of the fillet, or actually filleting the corner with an arc which will modify the parent path to replace the cusp.&lt;br /&gt;
&lt;br /&gt;
This tool could give the option to chamfer the corner - where instead smoothing the corner with an arc, the corner is smoothed with a straight line - simply snipping the tip off.&lt;br /&gt;
&lt;br /&gt;
The illustration below shows the steps involved in filleting the corner of a path:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fillet.png]]&lt;br /&gt;
&lt;br /&gt;
Filleting a corner is a 3-step process. First, the centre point for the arc must be calculated (X and Y in fig 1 and fig 2a). Second, the arc's sweep must be calculated so that it merges with the parent path at the tagents (fig 2b). Third, the point of the corner must be snipped off, and the arc welded on (fig 2c).&lt;br /&gt;
&lt;br /&gt;
All shapes must be converted to paths before filleting can occur.&lt;br /&gt;
&lt;br /&gt;
Finding point X is mathematically trivial. Finding Y is very much harder, and will require a numerical solution to a set of simultaneous equations. Note that there could potentially be more than one possible solution (as shown in fig 2a), so the closest solution to the cusp along the the length of bezier should be selected.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
 * Flesh this specification out in more detail&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19084</id>
		<title>SpecFilletChamfer</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19084"/>
		<updated>2008-02-02T20:04:09Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Launchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/fillet-tool&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
The filleting tool will allow the user to replace the cusp of a corner on a path, with a rounding arc of specified radius. This is rather simple to the way we can round off the corners rectangles, but for arbitrary geometry.&lt;br /&gt;
&lt;br /&gt;
Note that this proposed tool will only work on corners in individual paths - not on the intersections of the strokes of separate objects.&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
In terms of implementation, the filleting tool must be implemented as a first class citizen along with the rest of the toolbox - having a tool commands toolbar, a cursor, status messages etc., just like other tools. In terms of the UI for activating the tool - this could be added as another icon in the toolbox, but it might be better to hide the tool away in a well chosen location (discuss), so as not to clutter the toolbox with a new tool that is really very specialist.&lt;br /&gt;
&lt;br /&gt;
To fillet a corner, the user will activate the tool, then click on the cusp point with the mouse. It might be possible to add a button in the tool commands bar that fillets all the corners in a shape.&lt;br /&gt;
&lt;br /&gt;
An edit box with spinner will be placed in the tool commands bar so that the user can choose the radius for the fillet.&lt;br /&gt;
&lt;br /&gt;
It might be helpful (discuss) to give the choice between placing a full circle object into the corner, a tangential arc object of the fillet, or actually filleting the corner with an arc which will modify the parent path to replace the cusp.&lt;br /&gt;
&lt;br /&gt;
This tool could give the option to chamfer the corner - where instead smoothing the corner with an arc, the corner is smoothed with a straight line - simply snipping the tip off.&lt;br /&gt;
&lt;br /&gt;
The illustration below shows the steps involved in filleting the corner of a path:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fillet.png]]&lt;br /&gt;
&lt;br /&gt;
Filleting a corner is a 3-step process. First, the centre point for the arc must be calculated (X and Y in fig 1 and fig 2a). Second, the arc's sweep must be calculated so that it merges with the parent path at the tagents (fig 2b). Third, the point of the corner must be snipped off, and the arc welded on (fig 2c).&lt;br /&gt;
&lt;br /&gt;
All shapes must be converted to paths before filleting can occur.&lt;br /&gt;
&lt;br /&gt;
Finding point X is mathematically trivial. Finding Y is very much harder, and will require a numerical solution to a set of simultaneous equations. Note that there could potentially be more than one possible solution (as shown in fig 2a), so the closest solution to the cusp along the the length of bezier should be selected.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
 * Flesh this specification out in more detail&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19074</id>
		<title>SpecFilletChamfer</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19074"/>
		<updated>2008-02-02T20:01:28Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Launchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/fillet-tool&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
The filleting tool will allow the user to replace the cusp of a corner on a path, with a rounding arc of specified radius. This is rather simple to the way we can round off the corners rectangles, but for arbitrary geometry.&lt;br /&gt;
&lt;br /&gt;
Note that this proposed tool will only work on corners in individual paths - not on the intersections of the strokes of separate objects.&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
In terms of implementation, the filleting tool must be implemented as a first class citizen along with the rest of the toolbox - having a tool commands toolbar, a cursor, status messages etc., just like other tools. In terms of the UI for activating the tool - this could be added as another icon in the toolbox, but it might be better to hide the tool away in a well chosen location (discuss), so as not to clutter the toolbox with a new tool that is really very specialist.&lt;br /&gt;
&lt;br /&gt;
To fillet a corner, the user will activate the tool, then click on the cusp point with the mouse. It might be possible to add a button in the tool commands bar that fillets all the corners in a shape.&lt;br /&gt;
&lt;br /&gt;
An edit box with spinner will be placed in the tool commands bar so that the user can choose the radius for the fillet. It might be helpful (discuss) to give the choice between placing a full circle object into the corner, a tangential arc object of the fillet, or actually filleting the corner with an arc which will modify the parent path to replace the cusp.&lt;br /&gt;
&lt;br /&gt;
The illustration below shows the steps involved in filleting the corner of a path:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fillet.png]]&lt;br /&gt;
&lt;br /&gt;
Filleting a corner is a 3-step process. First, the centre point for the arc must be calculated (X and Y in fig 1 and fig 2a). Second, the arc's sweep must be calculated so that it merges with the parent path at the tagents (fig 2b). Third, the point of the corner must be snipped off, and the arc welded on (fig 2c).&lt;br /&gt;
&lt;br /&gt;
All shapes must be converted to paths before filleting can occur.&lt;br /&gt;
&lt;br /&gt;
Finding point X is mathematically trivial. Finding Y is very much harder, and will require a numerical solution to a set of simultaneous equations. Note that there could potentially be more than one possible solution (as shown in fig 2a), so the closest solution to the cusp along the the length of bezier should be selected.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
 * Flesh this specification out in more detail&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19054</id>
		<title>SpecFilletChamfer</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19054"/>
		<updated>2008-02-02T12:03:38Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Launchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/fillet-tool&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
The filleting tool will allow the user to replace the cusp of a corner on a path, with a rounding arc of specified radius. This is rather simple to the way we can round off the corners rectangles, but for arbitrary geometry.&lt;br /&gt;
&lt;br /&gt;
Note that this proposed tool will only work on corners in individual paths - not on the intersections of the strokes of separate objects.&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
The illustration below shows the steps involved in filleting the corner of a path:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fillet.png]]&lt;br /&gt;
&lt;br /&gt;
Filleting a corner is a 3-step process. First, the centre point for the arc must be calculated (X and Y in fig 1 and fig 2a). Second, the arc's sweep must be calculated so that it merges with the parent path at the tagents (fig 2b). Third, the point of the corner must be snipped off, and the arc welded on (fig 2c).&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
 * Flesh this specification out in more detail&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19044</id>
		<title>SpecFilletChamfer</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19044"/>
		<updated>2008-02-02T11:52:49Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Launchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/fillet-tool&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
The illustration below shows the steps involved in filleting the corner of a path:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fillet.png]]&lt;br /&gt;
&lt;br /&gt;
Filleting a corner is a 3-step process. First, the centre point for the arc must be calculated (X and Y in fig 1 and fig 2a). Second, the arc's sweep must be calculated so that it merges with the parent path at the tagents (fig 2b). Third, the point of the corner must be snipped off, and the arc welded on (fig 2c).&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
 * Flesh this specification out in more detail&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19034</id>
		<title>SpecFilletChamfer</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19034"/>
		<updated>2008-02-02T11:51:38Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Launchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/fillet-tool&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
The illustration below shows the steps involved in filleting the corner of a path:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fillet.png]]&lt;br /&gt;
&lt;br /&gt;
Filleting a corner is a 3-step process. First, the centre point for the arc must be calculated (fig 1 and fig 2a). Second, the arc's sweep must be calculated so that it merges with the parent path at the tagents (fig 2b). Third, the point of the corner must be snipped off, and the arc welded on (fig 2c)&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
 * Flesh this specification out in more detail&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19024</id>
		<title>SpecFilletChamfer</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19024"/>
		<updated>2008-02-02T11:51:00Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Launchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/fillet-tool&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
The illustration below shows the steps involved in filleting the corner of a path:&lt;br /&gt;
[[Image:Fillet.png]]&lt;br /&gt;
Filleting a corner is a 3-step process. First, the centre point for the arc must be calculated (fig 1 and fig 2a). Second, the arc's sweep must be calculated so that it merges with the parent path at the tagents (fig 2b). Third, the point of the corner must be snipped off, and the arc welded on (fig 2c)&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
 * Flesh this specification out in more detail&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19014</id>
		<title>SpecFilletChamfer</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecFilletChamfer&amp;diff=19014"/>
		<updated>2008-02-02T11:46:55Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Launchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/fillet-tool&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
[[Image:Fillet.png]]&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
 * Flesh this specification out in more detail&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Fillet.png&amp;diff=19004</id>
		<title>File:Fillet.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Fillet.png&amp;diff=19004"/>
		<updated>2008-02-02T11:46:08Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: An illustration of the process required for filleting a corner along a path.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An illustration of the process required for filleting a corner along a path.&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecParametricFunctionPlotter&amp;diff=18924</id>
		<title>SpecParametricFunctionPlotter</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecParametricFunctionPlotter&amp;diff=18924"/>
		<updated>2008-02-01T00:08:28Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lanchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/parametric-function-plotter&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
Create a new extension similar to the function plotter which plots parametric formulae:&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
*x = cos(t)&lt;br /&gt;
*y = sin(2t)&lt;br /&gt;
*-pi &amp;lt; t &amp;lt; pi&lt;br /&gt;
&lt;br /&gt;
allowing Inkscape to render arbitrary shapes from equations.&lt;br /&gt;
&lt;br /&gt;
Wikipedia, gives a definition of parametric formulae [http://en.wikipedia.org/wiki/Parametric_equation].&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
Take existing funcplot.py and funcplot.inx and adapt to create a version for parametric function.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecParametricFunctionPlotter&amp;diff=18914</id>
		<title>SpecParametricFunctionPlotter</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecParametricFunctionPlotter&amp;diff=18914"/>
		<updated>2008-02-01T00:08:06Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lanchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/parametric-function-plotter&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
Create a new extension similar to the function plotter which plots parametric formulae:&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
x = cos(t)&lt;br /&gt;
y = sin(2t)&lt;br /&gt;
-pi &amp;lt; t &amp;lt; pi&lt;br /&gt;
&lt;br /&gt;
allowing Inkscape to render arbitrary shapes from equations.&lt;br /&gt;
&lt;br /&gt;
Wikipedia, gives a definition of parametric formulae [http://en.wikipedia.org/wiki/Parametric_equation].&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
Take existing funcplot.py and funcplot.inx and adapt to create a version for parametric function.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecParametricFunctionPlotter&amp;diff=18909</id>
		<title>SpecParametricFunctionPlotter</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecParametricFunctionPlotter&amp;diff=18909"/>
		<updated>2008-02-01T00:06:48Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lanchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/parametric-function-plotter&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
Create a new extension similar to the function plotter which plots parametric formulae: x = f(t), y = g(t) allowing Inkscape to render arbitrary shapes from equations.&lt;br /&gt;
&lt;br /&gt;
Wikipedia, gives a definition of parametric formulae [http://en.wikipedia.org/wiki/Parametric_equation].&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
Take existing funcplot.py and funcplot.inx and adapt to create a version for parametric function.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecParametricFunctionPlotter&amp;diff=18879</id>
		<title>SpecParametricFunctionPlotter</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecParametricFunctionPlotter&amp;diff=18879"/>
		<updated>2008-01-31T19:32:13Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lanchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/parametric-function-plotter&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
Create a new extension similar to the function plotter which plots parametric formulae: (x, y) = f(t)&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
Take existing funcplot.py and funcplot.inx and adapt to create a version for parametric function.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecParametricFunctionPlotter&amp;diff=18874</id>
		<title>SpecParametricFunctionPlotter</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecParametricFunctionPlotter&amp;diff=18874"/>
		<updated>2008-01-31T19:30:25Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: New page: Lanchpad Entry: https://blueprints.launchpad.net/inkscape/+spec/parametric-function-plotter  == Summary == Create a new extension similar to the function plotter which plots parametric for...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lanchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/parametric-function-plotter&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
Create a new extension similar to the function plotter which plots parametric formulae: (x, y) = f(t)&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=INX_extension_descriptor_format&amp;diff=18869</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=18869"/>
		<updated>2008-01-31T18:49:33Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* See Also */&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;pre&amp;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; location=&amp;quot;[extensions|path|plugins|{location}]&amp;quot;&amp;gt;program.ext&amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;param name=&amp;quot;tab&amp;quot; type=&amp;quot;notebook&amp;quot;&amp;gt;  &lt;br /&gt;
    &amp;lt;page name=&amp;quot;controls&amp;quot; _gui-text=&amp;quot;Controls&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;param name=&amp;quot;{argumentName}&amp;quot; type=&amp;quot;[int|float|string|boolean|description]&amp;quot; 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;/page&amp;gt;&lt;br /&gt;
    &amp;lt;page name=&amp;quot;help&amp;quot; _gui-text=&amp;quot;Help&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;param name=&amp;quot;help_text&amp;quot; type=&amp;quot;description&amp;quot;&amp;gt;{Friendly Extension Help}&amp;lt;/param&amp;gt;&lt;br /&gt;
    &amp;lt;/page&amp;gt;&lt;br /&gt;
  &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; interpreter=&amp;quot;[python|perl|ruby|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;
&amp;lt;/pre&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 item (#PCDATA)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT dependency (#PCDATA)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT param (#PCDATA, page*, item*)&amp;gt;&lt;br /&gt;
 &amp;lt;!ELEMENT page (#PCDATA, param*)&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 command interpreter CDATA #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 page name CDATA #REQUIRED&amp;gt;&lt;br /&gt;
 &amp;lt;!ATTLIST page gui-text CDATA #IMPLIED&amp;gt;&lt;br /&gt;
 &amp;lt;!ATTLIST param name CDATA #REQUIRED&amp;gt;&lt;br /&gt;
 &amp;lt;!ATTLIST param type (int|float|string|boolean|enum|notebook|description) #REQUIRED&amp;gt;&lt;br /&gt;
 &amp;lt;!ATTLIST param min CDATA #IMPLIED&amp;gt;&lt;br /&gt;
 &amp;lt;!ATTLIST param max CDATA #IMPLIED&amp;gt;&lt;br /&gt;
 &amp;lt;!ATTLIST param precision CDATA #IMPLIED&amp;gt;&lt;br /&gt;
 &amp;lt;!ATTLIST param gui-text CDATA #IMPLIED&amp;gt;&lt;br /&gt;
 &amp;lt;!ATTLIST submenu name CDATA #REQUIRED&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>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecRicherExtensionParameters&amp;diff=18804</id>
		<title>SpecRicherExtensionParameters</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecRicherExtensionParameters&amp;diff=18804"/>
		<updated>2008-01-25T10:41:18Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lanchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/richer-extension-parameters&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
Suggestions include:&lt;br /&gt;
#Colour Selector&lt;br /&gt;
#Angle Selector&lt;br /&gt;
#On-Canvas Selection of X/Y Points&lt;br /&gt;
#On-Canvas Selection of Objects (a la Live Path Effects)&lt;br /&gt;
#Random Seed Selector (a la Live Path Effects)&lt;br /&gt;
#File Selector Dialog&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
Suggestions include:&lt;br /&gt;
=== Colour Selector ===&lt;br /&gt;
Could we use the same control as in Document Properties dialog? with the choice for alpha, or no alpha?&lt;br /&gt;
&lt;br /&gt;
=== Angle Selector ===&lt;br /&gt;
An option for the angle selector would be the one proposed for GIMP [http://gimp-brainstorm.blogspot.com/2007/12/angle-widget-for-motion-blur.html here] (circle with a radial arrow that can be dragged around).&lt;br /&gt;
=== On-Canvas Selection of X/Y Points ===&lt;br /&gt;
=== On-Canvas Selection of Objects (a. la Live Path Effects) ===&lt;br /&gt;
=== Random Seed Selector (a la Live Path Effects) ===&lt;br /&gt;
=== File Selector Dialog ===&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
 * Flesh this specification out in more detail&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecRicherExtensionParameters&amp;diff=18799</id>
		<title>SpecRicherExtensionParameters</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecRicherExtensionParameters&amp;diff=18799"/>
		<updated>2008-01-25T10:40:56Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lanchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/richer-extension-parameters&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
Suggestions include:&lt;br /&gt;
#Colour Selector&lt;br /&gt;
#Angle Selector&lt;br /&gt;
#On-Canvas Selection of X/Y Points&lt;br /&gt;
#On-Canvas Selection of Objects (a la Live Path Effects)&lt;br /&gt;
#Random Seed Selector (a la Live Path Effects)&lt;br /&gt;
#File Selector Dialog&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
Suggestions include:&lt;br /&gt;
=== Colour Selector ===&lt;br /&gt;
Could we use the same control as in Document Properties dialog? with the choice for alpha, or no alpha?&lt;br /&gt;
&lt;br /&gt;
=== Angle Selector ===&lt;br /&gt;
An option for the angle selector would be the one proposed for GIMP [http://gimp-brainstorm.blogspot.com/2007/12/angle-widget-for-motion-blur.html here] (circle with a radial arrow that can be dragged around).&lt;br /&gt;
=== On-Canvas Selection of X/Y Points ===&lt;br /&gt;
=== On-Canvas Selection of Objects (a. la Live Path Effects) ===&lt;br /&gt;
=== File Selector Dialog ===&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
 * Flesh this specification out in more detail&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecRicherExtensionParameters&amp;diff=18644</id>
		<title>SpecRicherExtensionParameters</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecRicherExtensionParameters&amp;diff=18644"/>
		<updated>2008-01-16T21:24:58Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Colour Selector */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lanchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/richer-extension-parameters&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
Suggestions include:&lt;br /&gt;
#Colour Selector&lt;br /&gt;
#Angle Selector&lt;br /&gt;
#On-Canvas Selection of X/Y Points&lt;br /&gt;
#On-Canvas Selection of Objects (a. la Live Path Effects)&lt;br /&gt;
#File Selector Dialog&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
Suggestions include:&lt;br /&gt;
=== Colour Selector ===&lt;br /&gt;
Could we use the same control as in Document Properties dialog? with the choice for alpha, or no alpha?&lt;br /&gt;
&lt;br /&gt;
=== Angle Selector ===&lt;br /&gt;
An option for the angle selector would be the one proposed for GIMP [http://gimp-brainstorm.blogspot.com/2007/12/angle-widget-for-motion-blur.html here] (circle with a radial arrow that can be dragged around).&lt;br /&gt;
=== On-Canvas Selection of X/Y Points ===&lt;br /&gt;
=== On-Canvas Selection of Objects (a. la Live Path Effects) ===&lt;br /&gt;
=== File Selector Dialog ===&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
 * Flesh this specification out in more detail&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecRicherExtensionParameters&amp;diff=18619</id>
		<title>SpecRicherExtensionParameters</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecRicherExtensionParameters&amp;diff=18619"/>
		<updated>2008-01-16T19:27:30Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lanchpad Entry:&lt;br /&gt;
https://blueprints.launchpad.net/inkscape/+spec/richer-extension-parameters&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
Suggestions include:&lt;br /&gt;
#Colour Selector&lt;br /&gt;
#Angle Selector&lt;br /&gt;
#On-Canvas Selection of X/Y Points&lt;br /&gt;
#On-Canvas Selection of Objects (a. la Live Path Effects)&lt;br /&gt;
#File Selector Dialog&lt;br /&gt;
&lt;br /&gt;
== Release Note ==&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
 * Flesh this specification out in more detail&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.46&amp;diff=15998</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=15998"/>
		<updated>2007-08-08T22:40:25Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* 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;
Major things in this release:&lt;br /&gt;
&lt;br /&gt;
* Paintbucket tool&lt;br /&gt;
&lt;br /&gt;
* Tweak tool&lt;br /&gt;
&lt;br /&gt;
* 3D box tool&lt;br /&gt;
&lt;br /&gt;
* LPEs&lt;br /&gt;
&lt;br /&gt;
* native PDF and AI import&lt;br /&gt;
&lt;br /&gt;
* new SVG filters and UI&lt;br /&gt;
&lt;br /&gt;
* full on-canvas gradient editing&lt;br /&gt;
&lt;br /&gt;
* engraver's toolbox&lt;br /&gt;
&lt;br /&gt;
* touch selection&lt;br /&gt;
&lt;br /&gt;
* command line access to verbs&lt;br /&gt;
&lt;br /&gt;
* snapping made usable&lt;br /&gt;
&lt;br /&gt;
=Speed and interactivity=&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%'''. More impressive are memory savings: thanks to cairo, in outline mode Inkscape now takes only about '''50% of the memory''' used by 0.45 for the same file. &lt;br /&gt;
&lt;br /&gt;
* '''Smart redraw directionality:''' 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''' for exporting and high quality on-screen rendering: Inkscape now uses an IIR (Infinite Impulse Response) filter for blurring with large radius. This greatly improves the speed of blur redraw at high zooms or in high-resolution export (or simply with very large blur radius). On the other hand, the results are an approximation to a true Gaussian blur, so a drawing may look slightly different from the mathematically precise blur (usually the differences are far from visible, though). This code is mainly based on: ''Recursive Gaussian Derivative Filters'' by L.J. van Vliet, I.T. Young and P.W. Verbeek (see the source code for more detailed references). &lt;br /&gt;
&lt;br /&gt;
* '''Moving the cursor around''' in a file with large and complex paths has become much snappier and more responsive. Previously, in extreme cases Inkscape could freeze for seconds while catching up with the mouse cursor; such delays are now eliminated.&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;
&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 boundaries in imported bitmaps, but will ignore any paths or other objects that are fully (or almost) transparent or for any other reason 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 '''current 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). &lt;br /&gt;
&lt;br /&gt;
In the tool's '''Controls bar''':&lt;br /&gt;
&lt;br /&gt;
* '''Tolerance''' (set in per cent units) controls how large must be color difference at a point (compared to the initial click point) to stop the fill. Zero tolerance means only the area of strictly the same color will be filled; the larger the tolerance, the easier it will be for the fill to leak into adjacent different-color areas. The default value is 10%.&lt;br /&gt;
&lt;br /&gt;
* You can control the amount of '''inset/outset''' to be applied to the created fill path.  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 commands.&lt;br /&gt;
&lt;br /&gt;
* Paint Bucket's perceptual fill can use either all visible colors or specific color '''channels'''.  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;
* An '''auto gap''' setting.  When enabled, Paint Bucket will try to close any gaps in the area boundaries that would normally cause the fill to spill out of the desired area.  There are four settings to auto gap:&lt;br /&gt;
** None&lt;br /&gt;
** Small (fill gaps up to 2 pixels in size)&lt;br /&gt;
** Medium (4 pixels)&lt;br /&gt;
** Large (6 pixels)&lt;br /&gt;
&lt;br /&gt;
* A '''style swatch''' on the far right of the bar shows the style that will be used for the next fill object you create. &lt;br /&gt;
&lt;br /&gt;
The tool's '''shortcuts''' are:&lt;br /&gt;
&lt;br /&gt;
* '''Single click''' performs filling from the click point.&lt;br /&gt;
&lt;br /&gt;
* '''Shift+click''' performs filling from the click point and then unions the resulting path with the selected path. This way, if your first attempt did not fill in all of the desired area, you can Shift+click the remaining corner to fill it in separately and combine the result with the result of the previous fill.&lt;br /&gt;
&lt;br /&gt;
* '''Ctrl+click''' on an object simply changes that object's fill to the current fill color of the tool, and '''Shift+Ctrl+click''' changes the stroke to the current stroke color.&lt;br /&gt;
&lt;br /&gt;
* '''Click and drag''' performs filling from '''all of the points''' that you pass while dragging (you will see your path visualized by a red line). From each point, the fill spreads to the neighbors with the colors similar to that point - in other words, it's like clicking with this tool at each point of the drag path and unioning the results. This lets you easily fill an area occupied by a gradient or blur - just drag from the darkest to the lightest points in the area you want to fill.&lt;br /&gt;
&lt;br /&gt;
* '''Alt+click and drag''' works similarly to simple drag, except from each point of the drag path, the fill spreads to the neighbors (if any) with the colors similar to the ''initial point'' (the point where you started the drag).  This lets you fill a series of similarly-colored yet separated areas (for example, multiple cells in a cartoon) by starting the drag in one of those areas, and alt+dragging the tool through all the other areas.&lt;br /&gt;
&lt;br /&gt;
==Tweak tool==&lt;br /&gt;
&lt;br /&gt;
The Tweak tool is an exciting new way to edit paths. Unlike the Node tool, you don't need to worry about where the nodes of a path are and how to manipulate them to obtain the shape you want. Instead, you just act on any part of a path using the tool's &amp;quot;brush&amp;quot; in order to bend, twist, or stretch that part, and the path will respond smoothly and naturally regardless of where its nodes lie. While not very useful for technical applications such as schemes or diagrams, this tool will be indispensable for artistic uses of Inkscape - cartoons, drawings, sketches, anime, etc. This new functionality is somewhat similar to the &amp;quot;Pucker&amp;quot;, &amp;quot;Bloat&amp;quot;, and other similar tools in the latest versions of Adobe Illustrator, except that in Inkscape it works softer and is easier to&lt;br /&gt;
control.&lt;br /&gt;
&lt;br /&gt;
The area of the tool's action (its &amp;quot;brush&amp;quot;) is visualized as an orange-colored circular&lt;br /&gt;
outline centered at your mouse pointer. However, that area actually has no sharp&lt;br /&gt;
boundaries; the power of the tool's action falls off gradually, following a smooth&lt;br /&gt;
bell-shaped profile. This makes the tool act softly and smoothly, and the paths respond&lt;br /&gt;
as if they are made of soft jelly.&lt;br /&gt;
&lt;br /&gt;
The tool will work on any number of selected objects; for example, you can select all&lt;br /&gt;
(Ctrl+A) and &amp;quot;smear&amp;quot; your entire drawing by Push. If applied to a shape or text, the&lt;br /&gt;
tool converts them to paths automatically. You can also apply it to groups of&lt;br /&gt;
objects. If you're trying to use it without anything selected, it will remind you to&lt;br /&gt;
select some objects by a statusbar message.&lt;br /&gt;
&lt;br /&gt;
===Width===&lt;br /&gt;
&lt;br /&gt;
The width of the tool's brush can be changed by the '''Width''' control in the tool's&lt;br /&gt;
controls bar above the canvas (in the range from 1 to 100). You can also change width by&lt;br /&gt;
'''Left''' and '''Right''' arrow keys (same as in the Calligraphy tool) at any time (including&lt;br /&gt;
during action). Also like in Calligraphy tool, the visible width of the brush is&lt;br /&gt;
independent of zoom; simply zooming in or out is often easier than adjusting the width&lt;br /&gt;
if you want to cover a smaller or larger area of the drawing.&lt;br /&gt;
&lt;br /&gt;
===Force===&lt;br /&gt;
&lt;br /&gt;
The next control is '''Force''' which adjusts the power of the action (in the range from&lt;br /&gt;
1 to 100). You can also change width by '''Up''' and '''Down''' arrow keys at any time&lt;br /&gt;
(including during action).&lt;br /&gt;
&lt;br /&gt;
Think of it as the force of pressure you apply to the paths you tweak. If you have a&lt;br /&gt;
pressure-sensitive tablet and your &amp;quot;Use pressure&amp;quot; button on the right-hand end of the&lt;br /&gt;
controls bar is on, then the force will also depend on how hard you actually press your&lt;br /&gt;
pen into your tablet, changing in the range from zero to whatever you set in the Force&lt;br /&gt;
control. If all you have is a mouse, then the force will be constant but still settable&lt;br /&gt;
by the Force control. The force of the effect also depends on zoom (or in other words,&lt;br /&gt;
it stays the same when measured by screen pixels, same as when you move and object by&lt;br /&gt;
Alt+arrow keys).&lt;br /&gt;
&lt;br /&gt;
===Fidelity===&lt;br /&gt;
&lt;br /&gt;
Any tweaking of a path slightly distorts the entire path, including even those parts&lt;br /&gt;
that you didn't touch. These distortions are similar to those that a Simplify command&lt;br /&gt;
produces. The '''Fidelity''' value (also in the range from 1 to 100, default is 50)&lt;br /&gt;
allows you to control the amount of these distortions. With a higher fidelity, the&lt;br /&gt;
distortions are less noticeable, but the path may end up having a lot of nodes which&lt;br /&gt;
blows up the SVG size and slows down Inkscape.&lt;br /&gt;
&lt;br /&gt;
The best value of Fidelity depends on the nature of your artwork. If you're sculpting an&lt;br /&gt;
amorphous blob, you can do with low fidelity of about 20. If, however, you are pushing&lt;br /&gt;
or blowing a text string (as a single path) and want the letters outside the distorted&lt;br /&gt;
area to remain crisp and clean, you will need to raise fidelity to 80 or more. &lt;br /&gt;
&lt;br /&gt;
===Modes===&lt;br /&gt;
&lt;br /&gt;
There are currently four modes in the Tweak tool: '''Push''', '''Melt''', '''Blow''',&lt;br /&gt;
and '''Roughen'''.&lt;br /&gt;
&lt;br /&gt;
* This default mode of the tool, '''Push''', simply displaces the part of the path under the cursor in the direction of the drag. The path behaves like soft jelly, bending and bulging smoothly and naturally. It's an easy way to produce various irregular, lifelike, handmade-looking shapes starting from something as simple as an ellipse or a calligraphic stroke. For parallel-stroke hatching (engraving) done in the Calligraphy tool, pushing is an easy way to bend, pinch, or curve the entire hatching uniformly.&lt;br /&gt;
&lt;br /&gt;
* The '''Melt and Blow''' are two opposite modes that move each point of a path in a direction perpendicular to the path's surface at the point, either inwards (Melt) or outwards (Blow). This is similar to the Inset and Outset commands, except that the Tweak tool can act on a part of a path instead of the whole path.&lt;br /&gt;
&lt;br /&gt;
:For example, the visible lightness/darkness of an engraving hatching may not exactly correspond to your artistic intention. Also, the ends of strokes are often far from ideal - they may be too blunt or have unsightly bends or blobs. This is where the Tweak tool may help. Select all the strokes in a hatching pattern and apply a light Melt action where you want the lines to become thinner (and the hatching to become lighter), up until total disappearance. If you press hard, melting works as an eraser, so you can easily clean the strokes' ends in a hatching to making them thin, sharp, and uniform. Conversely, applying Blow makes strokes wider (i.e. the hatching becomes darker).&lt;br /&gt;
&lt;br /&gt;
:Of course, melting and blowing are useful not only for calligraphic strokes. Same as with Push, with Melt and Blow you can '''sculpt''' any path, spawning smooth treacle-like appendages with Blowing and carving holes with Melting. Unlike the &amp;quot;node sculpting&amp;quot; mode in the Node tool, however, this does not require adding new nodes to the shape or selecting any nodes.&lt;br /&gt;
&lt;br /&gt;
* The '''Roughen''' mode does exactly this: roughens the edge of the path without  changing its overall shape. Slight roughening simply makes the edge crooked and uneven;  strong roughening tears and explodes the edge into random blobs and splotches. Note  that this operation, especially with high Fidelity, adds a lot of nodes which increases  the size of your SVG document and may slow down Inkscape considerably. In particular,  pushing/melting/blowing of a roughened path becomes much slower and more difficult, so  it's recommended to finalize the overall shape of a path first and roughen it, if  necessary, only as the final step.&lt;br /&gt;
&lt;br /&gt;
===Keyboard shortcuts===&lt;br /&gt;
&lt;br /&gt;
* '''W''', '''Alt+F2''': switch to the Tweak tool&lt;br /&gt;
&lt;br /&gt;
* '''Shift+P''': switch to the Push mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+M''': switch to the Melt mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+B''': switch to the Blow mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+R''': switch to the Roughen mode&lt;br /&gt;
&lt;br /&gt;
* '''Left, Right, Home, End''': change width&lt;br /&gt;
&lt;br /&gt;
* '''Up, Down''': change force&lt;br /&gt;
&lt;br /&gt;
* '''mouse drag''': act on selected path in the current mode&lt;br /&gt;
&lt;br /&gt;
* '''Ctrl+mouse drag''': temporarily switch to Melt (while Ctrl is down)&lt;br /&gt;
&lt;br /&gt;
* '''Shift+Ctrl+mouse drag''': temporarily switch to Blow (while Shift+Ctrl is down)&lt;br /&gt;
&lt;br /&gt;
===Known problems===&lt;br /&gt;
&lt;br /&gt;
Known problems with the Tweak tool:&lt;br /&gt;
&lt;br /&gt;
# it is rather slow; &lt;br /&gt;
# it quickly eats memory; and &lt;br /&gt;
# it is sometimes buggy - thin calligraphic strokes may suddenly disappear or change their shape drastically as you're melting or blowing them.&lt;br /&gt;
&lt;br /&gt;
For (3), it helps to increase Fidelity. Also, you can undo the bad change and try again with less pressure on the pen - if you do your thinning in several light touches instead of one heavy press, usually you will be able to get the desired result without the buggy behavior. &lt;br /&gt;
&lt;br /&gt;
Also, sometimes after roughening, further tweaking of a path becomes impossible with this diagnostic:&lt;br /&gt;
&lt;br /&gt;
  WARNING **: Shape error in ConvertToShape: directedEulerian(a) == false&lt;br /&gt;
&lt;br /&gt;
All these problems stem from the livarot library that we use for geometric manipulation of paths. Fortunately, livarot is scheduled for replacement by lib2geom, a new library now in development, so hopefully these issues will be addressed then.&lt;br /&gt;
&lt;br /&gt;
==3D Box tool==&lt;br /&gt;
&lt;br /&gt;
Inkscape is a two-dimensional drawing tool. However, very often it is used to draw three-dimensional objects. The new '''3D box tool''' helps you create such 3D drawings by automating the most common operation: creating a three-dimensional box in a given perspective. The tool automatically ensures that all sides of the box lie on the corresponding perspective lines. We're not going to compete with Blender - but even simple things can go a long way.&lt;br /&gt;
&lt;br /&gt;
Currently in the 3D box tool you can:&lt;br /&gt;
&lt;br /&gt;
* draw a 3D box by dragging on canvas (use Shift+dragging without releasing the mouse button to extrude in z direction)&lt;br /&gt;
&lt;br /&gt;
* adjust any of its 3 dimensions by handles&lt;br /&gt;
&lt;br /&gt;
* adjust the vanishing points of a perspective by dragging them across the canvas (see below) or toggling their states; all boxes sharing this perspective are transformed accordingly&lt;br /&gt;
&lt;br /&gt;
In SVG, a 3D box is represented as a '''group''' (svg:g) with a special extension attribute (in inkscape namespace); this group contains the 6 quadrilateral '''paths''' representing the sides of the box. Only the 3D box tool treats this object as a box; for all other tools it is just a group, so you can select any of the paths by Ctrl+click, apply any style to it, delete it, etc. You can of course transform the entire box or any face in it using Selector or Node tools.&lt;br /&gt;
&lt;br /&gt;
When several boxes are selected, all vanishing points of their associated perspectives are shown on the canvas. If vanishing points of different perspectives coincide, they are combined in a single &amp;quot;dragger&amp;quot;. Moving this dragger moves all the vanishing points simultaneously and transforms the associated boxes accordingly. Note that some non-selected boxes may also be reshaped if their perspectives share the same vanishing point. Pressing Shift while moving the dragger can be used to only transform the selected boxes, separating their perspectives from the non-selected ones'. On the other hand, when a vanishing point being dragged comes close enough to another one, both snap together and are combined in a single dragger.&lt;br /&gt;
&lt;br /&gt;
===Keyboard shortcuts===&lt;br /&gt;
&lt;br /&gt;
* '''X''', '''Alt+F4''': switch to the 3D box tool&lt;br /&gt;
&lt;br /&gt;
* '''L''': toggle visibility of perspective lines&lt;br /&gt;
&lt;br /&gt;
* '''A''': when perspective lines are visible, toggle between &amp;quot;all lines&amp;quot; and &amp;quot;only lines connected to front corners&amp;quot; (this can help to avoid visual clutter)&lt;br /&gt;
&lt;br /&gt;
[max]&lt;br /&gt;
&lt;br /&gt;
==Gradient Tool==&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''' or by '''Ctrl+Alt+Click''' on the gradient line.&lt;br /&gt;
*Stops can be deleted by '''Ctrl+Alt+Click''' on a stop or by the '''Del''' key for all the selected stop(s).&lt;br /&gt;
:*When you delete an end stop, the nearest intermediate stop becomes the new end stop of the gradient (without moving - i.e., the gradient span becomes shorter).&lt;br /&gt;
:*When you delete an end stop and there are no intermediate stops, the object will be painted with a solid fill taken from the color &amp;amp; opacity of the remaining stop.&lt;br /&gt;
*More than one stop can be selected at a time by '''Shift+click'''.&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;
* When copy/pasting or duplicating an object with gradient, it now automatically gets a '''copy''' of the original gradient, so modifying it does not affect the source object's gradient anymore (before, you had to press the Duplicate button on the Gradient controls bar for this).&lt;br /&gt;
&lt;br /&gt;
==Calligraphy tool: Engraver's Toolbox ==&lt;br /&gt;
&lt;br /&gt;
Several new features were added to the Calligraphic pen to make&lt;br /&gt;
Inkscape capable of the ancient art of '''line&lt;br /&gt;
engraving'''. Traditional engraving is a very labour-intensive&lt;br /&gt;
process, and while for a long time it was the only practical way&lt;br /&gt;
of reproducing lifelike images in black-and-white print, about a&lt;br /&gt;
century ago it was almost completely displaced by automatic&lt;br /&gt;
halftone screens. However, line engravings have their&lt;br /&gt;
characteristic charm, and there's no reason not to try to&lt;br /&gt;
resurrect this art form with the help of Inkscape.&lt;br /&gt;
&lt;br /&gt;
A brief visual guide to the new functionality can be seen on&lt;br /&gt;
these screenshots:&lt;br /&gt;
&lt;br /&gt;
http://inkscape.org/screenshots/gallery/inkscape-0.46-engraving1.png&lt;br /&gt;
&lt;br /&gt;
http://inkscape.org/screenshots/gallery/inkscape-0.46-engraving2.png&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Tracking a guide path with Ctrl===&lt;br /&gt;
&lt;br /&gt;
One of the most common operations in line engraving is&lt;br /&gt;
'''hatching''' (or sometimes ''cross-hatching'' when several&lt;br /&gt;
hatching grids cross): filling a space with many parallel&lt;br /&gt;
straight or variously curved lines (usually of varying width to&lt;br /&gt;
represent a gradual shading). You could try to achieve a similar&lt;br /&gt;
effect with e.g. path interpolation (blending), but it is rather&lt;br /&gt;
cumbersome and limited; manual drawing of hatch lines, on the&lt;br /&gt;
other hand, is tedious and nearly impossible to do&lt;br /&gt;
uniformly. Now Inkscape provides &amp;quot;assisted hatching&amp;quot; by&lt;br /&gt;
'''tracking a guide path''', allowing you to hatch quickly and&lt;br /&gt;
uniformly and at the same time giving you sufficient manual&lt;br /&gt;
control over the process.&lt;br /&gt;
&lt;br /&gt;
Here's how to do this. First, select the '''guide path''' that&lt;br /&gt;
you will track. It may be another calligraphic stroke, any path&lt;br /&gt;
or shape, or even a letter of a text object. Then switch to&lt;br /&gt;
Calligraphic pen, select the desired parameters (line width,&lt;br /&gt;
angle, fixation etc.) and, before starting to draw, press&lt;br /&gt;
Ctrl. You will see a gray '''track circle''' centered at your&lt;br /&gt;
mouse pointer and touching the closest point on the selected&lt;br /&gt;
guide path. (If you have no guide path selected, a statusbar&lt;br /&gt;
message will tell you to select it.)&lt;br /&gt;
&lt;br /&gt;
Now move your mouse close to the guide path, so that the track&lt;br /&gt;
circle radius is equal to the desired spacing of your hatch&lt;br /&gt;
pattern, and start drawing along the guide path. At that moment,&lt;br /&gt;
the radius of the circle gets locked; now the circle slides&lt;br /&gt;
along the guide path - and the actual stroke is drawn by the&lt;br /&gt;
center of the tracking circle, ''not'' by your mouse point. As&lt;br /&gt;
a result, you are getting a smooth stroke going parallel to the&lt;br /&gt;
guide path and always at the same distance from it.&lt;br /&gt;
&lt;br /&gt;
When the stroke is ready, release your mouse button (or lift&lt;br /&gt;
your tablet pen) but '''do not let go of the Ctrl key''' because&lt;br /&gt;
as long as you have it pressed, the tool remembers the hatch&lt;br /&gt;
spacing you set when you started drawing. Now, you have just&lt;br /&gt;
created a new stroke and, as usual with Inkscape tools, it gets&lt;br /&gt;
selected instead of what was selected before. In our case, this&lt;br /&gt;
means that the newly drawn stroke itself becomes the new guide&lt;br /&gt;
path. Next, you can draw a second stroke along the first one,&lt;br /&gt;
then a third one along the second, etc. Eventually you can fill&lt;br /&gt;
any desired space with uniform hatching.&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you uncheck &amp;quot;Select new path&amp;quot; in the Calligraphy tool preferences, newly created strokes will not be selected, so your original guide path will be kept selected. In this mode, Inkscape will increase the tracking distance after each created stroke so that you can create uniformly spaced hatching by tracking a single guide path. &lt;br /&gt;
&lt;br /&gt;
The attachment to the guide path is not absolute. If you stray&lt;br /&gt;
your mouse pointer far enough from the guide path, you will be&lt;br /&gt;
able to tear it off (the track circle turns from green to red)&lt;br /&gt;
and move freely. This is intentional; this feature allows you,&lt;br /&gt;
for example, to continue drawing a stroke past the end of a&lt;br /&gt;
guide stroke, thus making your hatching cover a wider area than&lt;br /&gt;
the initial guide path. Special care is taken to make such&lt;br /&gt;
tearing off as smooth as possible and to suppress violent jerks,&lt;br /&gt;
but this is not always possible; the general advice is to not&lt;br /&gt;
try to hatch too fast. If jerking and unintended tearoffs still&lt;br /&gt;
bother you, try increasing the Mass parameter.&lt;br /&gt;
&lt;br /&gt;
Also, special code is in place to prevent flipovers - accidental&lt;br /&gt;
jumps to the other side of the guide path. Brief flipovers are&lt;br /&gt;
suppressed, but if you intentionally go over to the other side&lt;br /&gt;
and stay there, eventually Inkscape will obey and your tracking&lt;br /&gt;
stroke will also flip over to follow you.&lt;br /&gt;
&lt;br /&gt;
Tracking a guide also allows some slight feedback by gradually&lt;br /&gt;
changing the tracking distance in response to your drawing&lt;br /&gt;
behavior. Thus, if you're consistently trying to draw closer or&lt;br /&gt;
farther from the guide than the current tracking distance, the&lt;br /&gt;
distance will correspondingly decrease or increase, so you will&lt;br /&gt;
get a hatching that is slightly spacing in or out. (The effect&lt;br /&gt;
is very slight, however, so as not to become a nuisance.)  Also,&lt;br /&gt;
note that since tracking follows the edge of the stroke, strokes&lt;br /&gt;
of varying width (such as those tracing background, see below)&lt;br /&gt;
will result in gradual bending of the hatching pattern as you&lt;br /&gt;
proceed.&lt;br /&gt;
&lt;br /&gt;
===Tracing background by stroke width===&lt;br /&gt;
&lt;br /&gt;
There is a new toggle button on the Calligraphy tool's controls&lt;br /&gt;
bar, '''Trace background'''. When on, the width of your pen&lt;br /&gt;
depends on the lightness of the background under the stroke in&lt;br /&gt;
each point, so that white translates into the minimum stoke&lt;br /&gt;
width (1) and black translates to the maximum (which is set by the&lt;br /&gt;
Width parameter). This can work alone or in combination with&lt;br /&gt;
pressure sensitivity, depending on whether the &amp;quot;Use pressure&amp;quot; button&lt;br /&gt;
is also toggled.&lt;br /&gt;
&lt;br /&gt;
This feature allows you to not only hatch over an imported&lt;br /&gt;
bitmap image or any drawing, but to do so automatically&lt;br /&gt;
reproducing the highlights and shades of the background with&lt;br /&gt;
your strokes becoming lighter and heavier as needed.&lt;br /&gt;
&lt;br /&gt;
===Misc features===&lt;br /&gt;
&lt;br /&gt;
* For consistency with other drawing tools, drawing with '''Shift''' in Calligraphy tool automatically '''unions''' the newly created stroke with whatever paths were selected (and selects the result).  Thus, you can do a series of overlapping Shift+strokes to create one unioned path object instead of separate objects as before. &lt;br /&gt;
&lt;br /&gt;
* To facilitate changing the Width parameter, the Home/End keys in Calligraphy tool switch you to the minimum (1) and maximum (100) width, correspondingly. (This is in addition to the Left/Right arrow keys that change Width by 1; remember also that you can press Alt+X, type any width, and press Enter.)&lt;br /&gt;
&lt;br /&gt;
==Selector==&lt;br /&gt;
&lt;br /&gt;
* A new selection mode is available: '''selecting by touch'''. In this mode, you draw a freehand path across the objects; when you release mouse button, all objects that are touched by this path get selected. This mode is very convenient  in situations where you need to select objects so intermingled that selecting them by the rectangular rubberband is too difficult and so numerous that click-selecting them one by one is too tedious. &lt;br /&gt;
&lt;br /&gt;
:To activate selecting by touch, whenever you are drawing a rubberband rectangle, just press '''Alt''' to switch it to the touch mode. The rectangle will disappear and a red ''touch path'' will be shown instead. When dragging from an empty space, you can press '''Alt''' first and then start to drag to get the touch mode (note that your selection must be empty, otherwise Alt+dragging will move the selected objects instead). To start a touch selection from a point over an object, or to add to existing selection by touching, press '''Shift+Alt''' and then start to drag.&lt;br /&gt;
&lt;br /&gt;
* Previously, the only way to switch selection from scale mode to rotate mode or back was to click on it, which was rather inconvenient when the selected object is in a group or under other objects. Now you can switch modes with keyboard as well by pressing '''Shift+S''' in Selector tool.&lt;br /&gt;
&lt;br /&gt;
* Draging the '''scale handles with Alt''' now scales selection by an integer factor, i.e. up to '''2''', '''3''', '''4''', etc. times the original size or down to '''1/2'''. '''1/3''', '''1/4''', etc. of the original size (in any of the two dimensions independently). This replaces the old and rarely used &amp;quot;slow&amp;quot; scaling mode with Alt.&lt;br /&gt;
&lt;br /&gt;
* '''Horizontal/vertical flipping''': So far, flipping a selection made it flip within its bounding box, so that the latter remained fixed. In the move/scale mode of the selector tool, this behaviour remains unchanged. However, in rotate/shear mode flipping now happens about an (imaginary) vertical/horizontal axis through the rotation center. This is very handy, since the latter can be freely dragged around and snaps to all kinds of objects if desired.&lt;br /&gt;
&lt;br /&gt;
==Node tool==&lt;br /&gt;
[sculpt profiles - bbyak]&lt;br /&gt;
&lt;br /&gt;
* If any of the nodes in the currently selected path is mouseovered, then horizontal/vertical flipping ('H' and 'V' keys), stepwise rotation ('[' and ']' keys) and scaling ('&amp;lt;' and '&amp;gt;' keys) now all use this specific node as center/axis. If there is no mouseovered node, the center of the bounding box is used instead (as is currently the case unconditionally). Nodes that are covered by one of their handles are also detected as mouseovered.&lt;br /&gt;
&lt;br /&gt;
* [helper path display - johan]&lt;br /&gt;
&lt;br /&gt;
==Text tool==&lt;br /&gt;
* [text toolbar - deadchip?]&lt;br /&gt;
* If text contains a tref element, the text tool's behavior may not be as expected.  Please see [[#The tref Element]]&lt;br /&gt;
&lt;br /&gt;
=SVG=&lt;br /&gt;
&lt;br /&gt;
==The tref Element==&lt;br /&gt;
&lt;br /&gt;
Inkscape can now correctly open files with '''tref''' elements, and new tref elements can be created manually in the XML editor.&lt;br /&gt;
&lt;br /&gt;
The actual character data contained in a text element can either be embedded directly, or it can be the character content of an element referenced by a '''tref'''.&lt;br /&gt;
&lt;br /&gt;
While the textual content from the referenced element will be stripped of any markup before being used by the '''tref''', the '''tref''' element can itself have the same attributes as a '''tspan'''.  In fact, when rendered, it is as though the '''tref''' element is replaced by a '''tspan''' with the same attributes, and the referenced character data is embedded in that '''tspan'''.&lt;br /&gt;
&lt;br /&gt;
The property '''xlink:href''' is used to refer to another element whose character data will be used.  Any element can be referred to except an ancestor of the '''tref'''.  When any of the text contained in the referred element changes, the '''tref''' will immediately be updated to display the new data.&lt;br /&gt;
&lt;br /&gt;
Existing tref elements can be converted into tspan elements with '''Edit &amp;gt; Clone &amp;gt; Unlink Clone'''.  If more than one '''tref''' is contained within a selection, all '''trefs''' will be converted into '''tspans'''.  All attributes applied to the '''tref''' will be retained in the new '''tspan'''.&lt;br /&gt;
&lt;br /&gt;
A '''tref''' element can be mixed with any other elements allowed to be contained by a text element.&lt;br /&gt;
&lt;br /&gt;
The cloned character data rendered by the '''tref''' may not be edited, but any characters surrounding it can be changed.  Styles cannot be applied to a subset of the cloned characters, but if all are selected, a style can be applied to the '''tref'''.&lt;br /&gt;
&lt;br /&gt;
=Filters=&lt;br /&gt;
&lt;br /&gt;
==New filters supported==&lt;br /&gt;
&lt;br /&gt;
* The '''feBlend''' filter primitive gives us image blending modes, like in many image manipulation programs. These modes are screen, multiply, darken and lighten. There's a caveat, though: when blending an object against an semi-transparent background, the background will be accumulated twice, resulting in thicker objects under the bounding box of blended object. This is a limitation of current version of SVG format, not a bug in Inkscape.&lt;br /&gt;
&lt;br /&gt;
* The '''feOffset''' filter primitive offsets the image by an user-defined amount. For example, this is useful for drop shadows, as the shadow has to be in a slightly different position than the actual object.&lt;br /&gt;
&lt;br /&gt;
[[Filter Effects]]&lt;br /&gt;
&lt;br /&gt;
==Filters UI==&lt;br /&gt;
&lt;br /&gt;
* New dialog for creating and modifying filter effects ('''Object&amp;gt;Filter Effects...''')&lt;br /&gt;
* The list at the left of the dialog displays all filters currently in the document.&lt;br /&gt;
** New filters can be added with the '''Add''' button beneath the list&lt;br /&gt;
** Right-clicking a filter for the pop-up menu allows duplicating or removing a filter.&lt;br /&gt;
** Double-clicking a filter will apply it to all selected objects&lt;br /&gt;
** A black dot is placed next to whatever filter is applied to the selected objects. If more than one filter is in use by selected objects, an unfilled dot is used instead.&lt;br /&gt;
* The second list, at the left of the dialog, displays the '''filter primitives''' that are contained within the currently-selected filter.&lt;br /&gt;
** New primitives can be added by selecting the primitive type from the combo box beneath the list, and then pressing the '''Add''' button.&lt;br /&gt;
** Right-clicking a primitive for the pop-up menu allows duplicating or removing a primitive.&lt;br /&gt;
** Primitives can be rearranged by clicking and dragging any filter in the list.&lt;br /&gt;
** When a filter is selected, the '''Settings''' group at the bottom of the dialog will change to display the attributes available for that primitive. Changing a setting results in an immediate update to the document.&lt;br /&gt;
** The &amp;quot;in&amp;quot; and &amp;quot;in2&amp;quot; attributes for filters that support them are not shown in the '''Settings''' group. These input connections are displayed graphically in the list, under the '''Connections''' column.&lt;br /&gt;
*** Inputs for a particular filter are displayed as triangles. Depending on the primitive type, there may be one or two inputs (or more for Merge primitives.) Connections can be created by clicking on a triangle and dragging.&lt;br /&gt;
*** There are six standard input types that can be used for any primitive input; Source Graphic, Source Alpha, Background Image, Background Alpha, Fill Paint, and Stroke Paint. These are displayed vertically on the far right of the list. Click and drag from an input triangle to one of the standard inputs to connect them.&lt;br /&gt;
*** Primitives can also be connected to other primitives by clicking an input triangle and dragging upwards to another primitive. A primitive can only be connected to one higher up the list.&lt;br /&gt;
*** Single-clicking on an input triangle will unset it, returning it to the default. If it is on a Merge primitive, the input will be deleted.&lt;br /&gt;
*** Merge inputs have an empty input at the end. Dragging a connection from this input will add a new input to the primitive.&lt;br /&gt;
&lt;br /&gt;
=Live path effects=&lt;br /&gt;
&lt;br /&gt;
'''Live path effects''' (not to be confused with extension effects or SVG filters) are a new way to non-destructively modify path and shape objects. LPEs only affect the path of an object and not its style. The original path is preserved and can be edited directly, and the LPEs applied to it will be updated. &lt;br /&gt;
&lt;br /&gt;
Live path effects were developed as part of the GSoC 2007.&lt;br /&gt;
&lt;br /&gt;
[johan]&lt;br /&gt;
&lt;br /&gt;
=Extension effects=&lt;br /&gt;
&lt;br /&gt;
== Live preview ==&lt;br /&gt;
&lt;br /&gt;
* '''Live preview of effects''': Using the async behavior (see below), as soon as the parameters dialog for an effect is shown, the script is executed in the background and the screen updates as soon as it's finished.  This can result is seemingly faster execution if no parameters are changed.  If some parameters are adjusted, the script is restarted. This allows you to see immediately the effects of any  parameter change without pressing the OK button on the effect's dialog.&lt;br /&gt;
&lt;br /&gt;
* '''Spawn Glib API''': Scripting extension have been moved to the Glib spawn API to ensure that parameters and variables aren't interpreted by a shell.  This also means that scripting extensions are executed in a separate process asynchronously allowing the GTK main loop to continue to execute.&lt;br /&gt;
&lt;br /&gt;
* '''Progress dialog''': While an extension is working on a document, a small dialog is shown allowing the user to cancel the execution.&lt;br /&gt;
&lt;br /&gt;
== New and improved effects ==&lt;br /&gt;
&lt;br /&gt;
* The new '''Render &amp;gt; Barcode''' extension creates a [http://en.wikipedia.org/wiki/Barcode barcode]. Supported types include EAN13, EAN8, UPC-A, UPC-E, UPC-5, Code39, Code39Ext, Code93, Code128, and RM4SCC. &lt;br /&gt;
&lt;br /&gt;
* The new '''Render &amp;gt; Gear''' extension creates a [http://en.wikipedia.org/wiki/Gear mechanical gear] given the number of teeth, the circular pitch (in px units), and the pressure angle.&lt;br /&gt;
&lt;br /&gt;
* The new '''Render &amp;gt; [[Spirograph]]''' extension creates intricate mathematical curves akin to the classic [http://en.wikipedia.org/wiki/Spirograph mechanical Spirograph toy] (see [http://wiki.inkscape.org/wiki/images/Spirograph_Samples.svg samples]).&lt;br /&gt;
&lt;br /&gt;
* A group of new effects in the '''Text''' submenu performs various case conversions on selected text objects: converting to UPPERCASE, lowercase, Sentence case, Title Case, as well as flipping case (switching uppercase to lowercase and vice versa) and rANdoMiZInG cAse. If no texts are selected, the effect works on all texts in the document.&lt;br /&gt;
&lt;br /&gt;
* Another effect in the Text submenu, '''Replace text''', performs search-and-replace on the selected text objects or (if nothing is selected) on all texts in the document. Searching is case sensitive. You can use this effect to globally delete all occurrences of some text fragment by replacing it with empty string. Conversely, if you search for an empty string and replace it with some string, this string will be inserted after every character of your text; for example, you can space out a text by replacing in it an empty string with a single space. &lt;br /&gt;
&lt;br /&gt;
* A new effect, '''Replace color''' in the Color submenu, simply replaces one RRGGBB-specified color to another within selection or, if there's no selection, in the entire document. As with other effects in that submenu, the replacement affects fill, stroke, and gradient colors, but not colors of bitmaps. &lt;br /&gt;
&lt;br /&gt;
*The '''Whirl''' extension uses the center of view as the center of whirl, so you don't have to enter the center coordinates numerically.&lt;br /&gt;
&lt;br /&gt;
*The '''Render &amp;gt; Grid''' extension has got an extended range of grid spacings, from 0.1 to 1000 px.&lt;br /&gt;
&lt;br /&gt;
*The '''Render &amp;gt; Function Plotter''' extension can now plot using polar coordinates.&lt;br /&gt;
&lt;br /&gt;
== New Python XML library ==&lt;br /&gt;
&lt;br /&gt;
* All Python effects are switched from the old and unmaintained PyXML library to the new powerful [http://codespeak.net/lxml/ lxml] library.&lt;br /&gt;
&lt;br /&gt;
=Snapping=&lt;br /&gt;
&lt;br /&gt;
* In addition to all other snapping modes and techniques, snapping has been implemented or improved in many tools and contexts:&lt;br /&gt;
&lt;br /&gt;
:* Drawing of new '''shapes''' (such as rectangles or ellipses) snaps to grid/guides/objects.&lt;br /&gt;
&lt;br /&gt;
:* '''Handles''' of existing objects and gradient handles snap.&lt;br /&gt;
&lt;br /&gt;
:* '''Skewing''' objects in Selector snaps.&lt;br /&gt;
&lt;br /&gt;
:* Snapping to objects works for '''images''' and '''clones''' (not only paths/shapes as before).&lt;br /&gt;
&lt;br /&gt;
:* Snapping of '''text baselines''' works again.&lt;br /&gt;
&lt;br /&gt;
:* When moved in Selector, an object optionally snaps with its '''rotation axis''' (which is by default in the geometric center of its bounding box, but can be arbitrarily moved and its position is remembered for every object).&lt;br /&gt;
&lt;br /&gt;
:Other snapping fixes and improvements include:&lt;br /&gt;
&lt;br /&gt;
:* The snapping preferences dialog has been restyled to make it more intuitive&lt;br /&gt;
&lt;br /&gt;
:* Snapping distance is now set in screen pixels and is therefore independent of zoom. &lt;br /&gt;
&lt;br /&gt;
:* Snapping to bounding boxes has been added&lt;br /&gt;
&lt;br /&gt;
:* Snapping of objects has been made more clean, by only snapping bounding box corners to bounding boxes, and nodes to other nodes and paths.&lt;br /&gt;
&lt;br /&gt;
:* The bug where &amp;quot;node-to-node&amp;quot; snapping caused jerky movement of nodes is fixed.&lt;br /&gt;
&lt;br /&gt;
:* The aspect ratio is correctly preserved while scaling objects with snapping turned on.&lt;br /&gt;
&lt;br /&gt;
:* All four bounding box corners now snap instead of only the lower-left and upper-right as before.&lt;br /&gt;
&lt;br /&gt;
:* Snapping while uniformly scaling has been improved. &lt;br /&gt;
&lt;br /&gt;
* The confusing &amp;quot;Default transformations origin&amp;quot; option is removed. Now Inkscape always uses the opposite edge of the object's bounding box as the transformation origin (though the bounding box itself can now be different, see next item).&lt;br /&gt;
&lt;br /&gt;
* A new preference option has been added to specify the kind of '''bounding box''' to be used for transforming objects (see Inkscape Preferences, Tools, Selector). You can choose between the '''visual bounding box''' (which takes into account the stroke width, markers, and blur margins; this is the default behavior) or '''geometric bounding box''' (which encloses only the path itself, disregarding stroke width).&lt;br /&gt;
&lt;br /&gt;
=Grids=&lt;br /&gt;
&lt;br /&gt;
* a new tab in the document properties dialog, solely meant for grids; the former grid/guide tab is now solely for guides. I envision a list of guides there in the future, for easier deletion of guides etc.&lt;br /&gt;
* more than one grid can be active at the same time, although i am having trouble in finding a usefull case for this&lt;br /&gt;
* multiple views on the same document share the same grids, but the grid can be turned off for each view separately. For example: one could have an overview view without grid enabled. Duplicate that window and zoom in on some detail; then grids can be shown only for that view, and snapping will only happen in those views for which grids are enabled. (sorry i am not able to explain more clearly)&lt;br /&gt;
* grid information is now stored in SVG as a child of sodipodi:namedview. Can someone please make an extension that converts an old grid definition to the new format?&lt;br /&gt;
* axonometric grid (not yet snapping)&lt;br /&gt;
* dots instead of lines&lt;br /&gt;
&lt;br /&gt;
From developer perspective:&lt;br /&gt;
&lt;br /&gt;
* implementation of new grids is much easier now; subclassing CanvasGrid and adding an entry in the is enough. Have a peek at how the rectangular grid is implemented (CanvasXYGrid).&lt;br /&gt;
* note that there is no longer &amp;quot;the grid&amp;quot;, there might be several grids active now!&lt;br /&gt;
&lt;br /&gt;
[Future plans (i will not be working on this soon, due to GSoC Live effects!):&lt;br /&gt;
** possibility of enabling not all but a selection of grids for a view. Eg. when there are 4 grids defined in the document, only enable grid2 for a certain view.&lt;br /&gt;
** new grids!&lt;br /&gt;
** better snapping mechanism to enable snapping to intersections of guides&amp;amp;grids and grids&amp;amp;grids.&lt;br /&gt;
&lt;br /&gt;
A side effect of removal of old gridcode: apparantly the origin of the desktop rules used to be set to the origin of the grid. I find this strange: specifying a grid origin of (2,2) would have me think the origin would be at ruler location (2,2) instead of (0,0) as it is in 0.45.1.&lt;br /&gt;
I have commented the grid-origin correction to the ruler range, because now there is not a single grid anymore to correct it for. Isn't there a control somewhere to define the documents origin? Now the ruler origin is set to (0,0) -- johan]&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;
* The Export dialog automatically appends the '''.png''' extension to the export filename you specify. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Import/Export=&lt;br /&gt;
&lt;br /&gt;
* [libpoppler PDF/AI import - miklos]&lt;br /&gt;
&lt;br /&gt;
:* '''Implemented features''': The libpoppler based import extension can import shapes, text, clippaths and non-masked/masked images from PDF documents. It supports tiling patterns (XStep and YStep attributes are ignored), axial and radial gradients (only those made up of sampled functions). Currently it will only import the first page of the opened document.&lt;br /&gt;
&lt;br /&gt;
:* '''Text editing tips''': Any text imported from PDF or AI has each letter's precise place on the page ''fixed''. While this preserves the exact appearance (e.g. justification of text blocks) of the imported document, it makes editing such text difficult: deleting text fails to contract the text line and inserting text fails to expand it, i.e. typed letters overlay the existing letters. (However, you still can replace a letter with another letter of about the same width, although you may need to kern it into place with Alt+arrows.)&lt;br /&gt;
&lt;br /&gt;
::To work around this, select the text object you want to edit and use '''Text &amp;gt; Remove manual kerns''' command. This will remove the exact positioning information, so if the text block was justified it will lose justification, but instead you will be able to edit it as usual. &lt;br /&gt;
&lt;br /&gt;
::Note that there is a way to select even a single line in a text block. For this, open the XML editor, expand the &amp;lt;svg:text&amp;gt; tree branch corresponding to your text, and select any of the &amp;lt;svg:tspan&amp;gt; objects under it. Now you can remove manual kerns from this line only. After you finish editing the line, you can manually justify it back, for example by adding spaces, manual kerns (Alt+arrows), or by adjusting letterspacing (select the whole line and use Alt+&amp;gt; or Alt+&amp;lt;).&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;
* [cairo ps export - adib]&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 extension effects, or any other verb, then FileSave and&lt;br /&gt;
FileClose to automate all kinds of operations on your drawings.&lt;br /&gt;
&lt;br /&gt;
=UI=&lt;br /&gt;
&lt;br /&gt;
== [toolbars - [[JonCruz]]] ==&lt;br /&gt;
&lt;br /&gt;
[calligraphy: menus, tooltips; star; ...]&lt;br /&gt;
&lt;br /&gt;
Switched to stock GTK+ toolbars.&lt;br /&gt;
&lt;br /&gt;
Extra magic secret sauce added.&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;
== Saving window geometry globally ==&lt;br /&gt;
&lt;br /&gt;
Previously, window geometry (size and position of document windows) could only be saved into the document (so that each document stored its own window geometry). Now, a new option is added to save the geometry of the last used window to the preferences and apply this geometry to all new windows.  Thus, with the &amp;quot;Save geometry to preferences&amp;quot; option enabled, new windows will open with the shape of the most recent previous window.  This mode also remembers and restores the maximized/fullscreen state (unlike geometry saved to documents).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== New ways to scroll and zoom ==&lt;br /&gt;
&lt;br /&gt;
* You can now enable Space+mouse drag to pan canvas, as it does in Adobe Illustrator. This mode is enabled by the '''Left mouse button pans when Space is pressed''' checkbox in the Scrolling tab of the Inksape Preferences dialog. By default it is off and pressing the spacebar key switches you to Selector and back, as it always did in Inkscape.&lt;br /&gt;
&lt;br /&gt;
* By default, rotating the mouse wheel scrolls the canvas vertically and Ctrl+wheel zooms in and out. Now, if you turn on the '''Mouse wheel zooms by default''' checkbox in the Scrolling tab of the Inksape Preferences dialog, this behavior is reversed: mouse wheel zooms without Ctrl and scrolls with Ctrl. This new mode should be familiar for users of AutoCAD and CorelDraw.&lt;br /&gt;
&lt;br /&gt;
* In the Zoom tool, right mouse button always zooms out instead of calling the context menu (which is rather useless in this tool anyway).&lt;br /&gt;
&lt;br /&gt;
=Even more improvements=&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, or apply more than one clippath/mask to an object). Now this limitation is removed; just select any single object and group it to get a single-object group. &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;
* The '''Tile Clones''' dialog now uses the object's defined '''rotation axis''' (which can be freely moved by Selector tool and which is saved separately for each object) for all rotations (including both symmetry rotations and the Rotation tab rotations), scales, and flips. This renders unnecessary the previous workarounds where you had to group an object with another transparent object to affect how it's rotated by the clone tiler. &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, Ctrl+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 all locked objects''' or '''unhide all 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;
* Several more '''rotation snapping increments''' are available in the Steps tab of the Inkscape Preferences dialog: 36, 22.5, 18, 12, and 0.5 degrees. &lt;br /&gt;
&lt;br /&gt;
* The list of folder shortcuts in the '''Open''' dialog includes the folder with Inkscape's SVG '''examples''' for easy access. Similarly, the '''Save''' dialog has a shortcut for the user's own '''templates''' dialog making it easy to save the current document as a template (if saved as &amp;lt;code&amp;gt;default.svg&amp;lt;/code&amp;gt;, it will be loaded every time you run Inkscape or create new document with Ctrl+N; with any other name, it will be added to the File &amp;gt; New submenu).&lt;br /&gt;
&lt;br /&gt;
* The file dialogs now have the inkscape desktop window set correctly as their parent window.&lt;br /&gt;
&lt;br /&gt;
* For time-intensive operations such as Paint Bucket and Simplify, the system's busy wait cursor is displayed to indicate to the user that Inkscape is actively working, and not frozen.&lt;br /&gt;
&lt;br /&gt;
* [statusbar updates: save, ...]&lt;br /&gt;
&lt;br /&gt;
* Several improvements in '''inkview''': busy cursor is shown while loading file, the button window stays on top and responds to keyboard shortcuts; several memleaks stopped and bugs fixed. The &amp;quot;slideshow mode&amp;quot; of the main inkscape application (-s or --slideshow command line option) is removed; use inkview instead.&lt;br /&gt;
&lt;br /&gt;
* In Document Metadata dialog, updated Creative Commons Licenses to version 3.0.&lt;br /&gt;
&lt;br /&gt;
* In addition to Shift+click, right clicking on a colour swatch now also sets the stroke colour.&lt;br /&gt;
&lt;br /&gt;
=Notable bugfixes=&lt;br /&gt;
&lt;br /&gt;
These are bugfixes compared to 0.45.1; for a list of fixes in 0.45.1 compared to 0.45, see [[ReleaseNotes045|0.45.1 release notes]]&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;
* Inkscape now properly quotes &amp;lt;code&amp;gt;font-family&amp;lt;/code&amp;gt; values and therefore can use fonts with various nonalphanumeric characters in their names, which previously failed. &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;
* A large family of bugs was exterminated where an object's style could only refer other objects (such as gradients, patterns, and filters) that come after it in the document. Now any objects can be referenced from a style regardless of their place in the document. This fixed the disappearance of gradients/patterns/filters after you undo an effect, as well as lots of assorted crashes and misrenderings (mostly on non-Inkscape SVG files).&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;
* A regression in 0.45 caused crashes when undo or redo was attempted before the previous action could complete (e.g. pressing ctrl+z while you are still drawing a rectangle). This is now fixed.&lt;br /&gt;
&lt;br /&gt;
* Previously, if there was a single invalid property in a &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; attribute, the entire attribute was discarded, i.e. the object lost all styling. Now Inkscape's behavior is more compliant to the CSS specification: it ignores only the invalid property but reads in all the rest.&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;
* Master opacity did not apply to stroke markers as it should; fixed.&lt;br /&gt;
&lt;br /&gt;
* Creative Commons Public Domain Declaration URI points to right location now.&lt;br /&gt;
&lt;br /&gt;
* Text objects didn't display the pattern editing handles; fixed.&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>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Using_Eclipse&amp;diff=15395</id>
		<title>Using Eclipse</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Using_Eclipse&amp;diff=15395"/>
		<updated>2007-07-01T20:16:46Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* TortoiseSVN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Eclipse is a popular development tool used primarily with Java; however, with the CDT plugin, C/C++ development can also be done.  This page will help you set up Eclipse for coding, building, and debugging Inkscape.&lt;br /&gt;
&lt;br /&gt;
= Eclipse on Windows =&lt;br /&gt;
&lt;br /&gt;
Running Eclipse provides a relatively easy and familiar way to work with Inkscape code on Windows.  This section will explain how to make it happen.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Some of these instructions may be applicable to development on Mac or Linux.  Feel free to refactor them if you are adding information for those platforms.&lt;br /&gt;
&lt;br /&gt;
== Initial Setup ==&lt;br /&gt;
&lt;br /&gt;
First, if you don't have Eclipse, [http://www.eclipse.org/downloads/ get it].  Check out the [http://help.eclipse.org/help32/index.jsp online help] if needed.&lt;br /&gt;
&lt;br /&gt;
Next, you need to set up the necessary add-ons.  Most important is the [http://www.eclipse.org/cdt/downloads.php CDT plug-in] which facilitates C/C++ development.  You may also wish to add [http://subclipse.tigris.org/install.html Subclipse] for SVN access within Eclipse.  Alternatively, many Windows users prefer to use [http://tortoisesvn.net/downloads TortoiseSVN], which works with Windows Explorer.&lt;br /&gt;
&lt;br /&gt;
Finally, follow the instructions on the [[Win32Port]] page under the heading '''Inkscape under Windows'''.&lt;br /&gt;
&lt;br /&gt;
== Creating a Project ==&lt;br /&gt;
&lt;br /&gt;
=== Subclipse ===&lt;br /&gt;
&lt;br /&gt;
The next step is to get the source code ready for use in Eclipse.  Check [[WorkingWithSVN | here]] for general instructions for working with SVN; in this section, the aim is to show how to check out the code using Subclipse.&lt;br /&gt;
&lt;br /&gt;
In Eclipse, we want the SVN perspective to be open.  Click '''Window &amp;gt; Open Perspective &amp;gt; Other'''.  Choose '''SVN Repository Exploring''' and click ok.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the '''SVN Repository''' tab, right click and choose '''New &amp;gt; Repository Location...'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the '''Location Url:''' box, paste the link https://svn.sourceforge.net/svnroot/inkscape/inkscape/trunk and click finish.  This location will now show in the '''SVN Repository''' tab.  You can expand the tree to see what is on the server.&lt;br /&gt;
&lt;br /&gt;
Now right click the location name (which is really just the link given above), and click '''Checkout...'''.  Choose '''Check out as a project configured using the New Project Wizard''' and the revision you want (probably Head), and click '''Finish'''.&lt;br /&gt;
&lt;br /&gt;
In the New Project window that appears, choose '''C++ Project''' in Eclipse Europa (or in Callisto '''Standard Make C++ Project''') and click '''Next'''.&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-Europa-ProjectType.png]]&lt;br /&gt;
&lt;br /&gt;
Give your project a name such as InkscapeSVN.  Uncheck the '''Use default location''' box so you can provide a better project location outside of your workspace, such as C:\InkscapeSVN. Select '''Executable (XL C/C++)''' as the project type, and '''XL C/C++ Tool Chain''' as the the Toolchain (this will not be necessary in Callisto (or before?) as this has been already been specified by selecting '''Standard Make C++ Project'''). Click '''Finish'''.&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-Europa-CppProjectType.png]]&lt;br /&gt;
&lt;br /&gt;
The source code will now be checked out - this may take a while. You will also now have a project in the '''C/C++ Perspective''' with whatever name you provided earlier.&lt;br /&gt;
&lt;br /&gt;
=== TortoiseSVN ===&lt;br /&gt;
&lt;br /&gt;
To use TortoiseSVN instead of Subclipse to check out your project, open a Windows Explorer instance.  Right click anywhere outside of an existing SVN tree and choose '''SVN Checkout...'''.  Specify the link given above and the destination directory.&lt;br /&gt;
&lt;br /&gt;
To get a project in Eclipse, go to the '''C/C++ Perspective'''.&lt;br /&gt;
&lt;br /&gt;
In Eclipse Europa select '''File &amp;gt; New &amp;gt; C++ Project'''. Choose a project type of '''Executable (XL C/C++)'''.&lt;br /&gt;
&lt;br /&gt;
In Eclipse Calisto right click in the '''C/C++ Projects''' tab, and choose '''New &amp;gt; Project...''' and in the window choose '''Standard Make C++ Project.'''&lt;br /&gt;
&lt;br /&gt;
Give the project a name, and uncheck the '''Use default location''' box.  You must give the location that you checked the code out into here.&lt;br /&gt;
&lt;br /&gt;
At this point, you will be able to use TortoiseSVN or Subclipse within Eclipse to control the source.&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Be sure you have the btool built and ready to go, as outlined on the [[Win32Port]] page.  You can build Inkscape from the command line or initiate it from within Eclipse, which will capture the output for you.&lt;br /&gt;
&lt;br /&gt;
To set up Eclipse to do this, make sure you are in the '''C/C++ Perspective''' and that your project is open.  Right click on the project name and click '''Properties'''.  Click on '''Builders'''.  Uncheck any builders that are there since we will be using the custom btool.  Click '''New...''' and select '''Program'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-04.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the '''Main''' tab, browse the workspace for the location of the btool.exe file.  Browse the workspace again to set the working directory to the main project directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now go to the '''Environment Tab''' and add a new variable called path.  Add the same thing that appears in your mingenv.bat file here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-06.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-07.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Click on '''C/C++ Project Paths''' and then the tab '''Path Containers'''.  Click '''Add...''', choose '''Discovered scanner configuration container''', '''Next''', '''Discovered Paths''', and '''Finish'''.&lt;br /&gt;
&lt;br /&gt;
Now go to '''C/C++ Include Paths and Symbols'''.  Click '''Add Contributed''' and choose the '''Discovered scanner configuration container''', then '''Discovered Paths'''.  Then click '''Add External Include Path''' and add the path to your GTK folder (probably something like c:\gtk210).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-08.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You should now be able to use the '''Project &amp;gt; Build All''' command, capturing the output onto Eclipse's console.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
&lt;br /&gt;
You need to make a couple of changes to the build.xml file and do a clean rebuild.  First, add -g to the flags section:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;flags&amp;gt;&lt;br /&gt;
      -Wall -O3&lt;br /&gt;
      -mms-bitfields&lt;br /&gt;
      '''-g'''&lt;br /&gt;
  &amp;lt;/flags&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then avoid stripping symbol information from the exe by changing this line&lt;br /&gt;
      strip=&amp;quot;'''true'''&amp;quot; symfile=&amp;quot;${build}/inkscape.dbg&amp;quot;&lt;br /&gt;
with this one&lt;br /&gt;
      strip=&amp;quot;'''false'''&amp;quot; symfile=&amp;quot;${build}/inkscape.dbg&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now you need to create a debugging instance in Eclipse.  Click '''Run &amp;gt; Debug...'''.  Click on '''C/C++ Local Application''' and then click the new button.  Give the launch configuration a logical name such as Inkscape Debug.&lt;br /&gt;
&lt;br /&gt;
These screenshots show you the values you have to change in each tab.  Nothing else needs to change.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-09.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-10.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you can launch this new configuration and debug away!&lt;br /&gt;
&lt;br /&gt;
(Don't worry about funny warnings about files or folders not existing - it doesn't seem to affect the use of the debugger.  However, if you know how to fix it, please replace this comment with instructions.)&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Using_Eclipse&amp;diff=15393</id>
		<title>Using Eclipse</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Using_Eclipse&amp;diff=15393"/>
		<updated>2007-07-01T20:10:41Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Creating a Project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Eclipse is a popular development tool used primarily with Java; however, with the CDT plugin, C/C++ development can also be done.  This page will help you set up Eclipse for coding, building, and debugging Inkscape.&lt;br /&gt;
&lt;br /&gt;
= Eclipse on Windows =&lt;br /&gt;
&lt;br /&gt;
Running Eclipse provides a relatively easy and familiar way to work with Inkscape code on Windows.  This section will explain how to make it happen.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Some of these instructions may be applicable to development on Mac or Linux.  Feel free to refactor them if you are adding information for those platforms.&lt;br /&gt;
&lt;br /&gt;
== Initial Setup ==&lt;br /&gt;
&lt;br /&gt;
First, if you don't have Eclipse, [http://www.eclipse.org/downloads/ get it].  Check out the [http://help.eclipse.org/help32/index.jsp online help] if needed.&lt;br /&gt;
&lt;br /&gt;
Next, you need to set up the necessary add-ons.  Most important is the [http://www.eclipse.org/cdt/downloads.php CDT plug-in] which facilitates C/C++ development.  You may also wish to add [http://subclipse.tigris.org/install.html Subclipse] for SVN access within Eclipse.  Alternatively, many Windows users prefer to use [http://tortoisesvn.net/downloads TortoiseSVN], which works with Windows Explorer.&lt;br /&gt;
&lt;br /&gt;
Finally, follow the instructions on the [[Win32Port]] page under the heading '''Inkscape under Windows'''.&lt;br /&gt;
&lt;br /&gt;
== Creating a Project ==&lt;br /&gt;
&lt;br /&gt;
=== Subclipse ===&lt;br /&gt;
&lt;br /&gt;
The next step is to get the source code ready for use in Eclipse.  Check [[WorkingWithSVN | here]] for general instructions for working with SVN; in this section, the aim is to show how to check out the code using Subclipse.&lt;br /&gt;
&lt;br /&gt;
In Eclipse, we want the SVN perspective to be open.  Click '''Window &amp;gt; Open Perspective &amp;gt; Other'''.  Choose '''SVN Repository Exploring''' and click ok.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the '''SVN Repository''' tab, right click and choose '''New &amp;gt; Repository Location...'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the '''Location Url:''' box, paste the link https://svn.sourceforge.net/svnroot/inkscape/inkscape/trunk and click finish.  This location will now show in the '''SVN Repository''' tab.  You can expand the tree to see what is on the server.&lt;br /&gt;
&lt;br /&gt;
Now right click the location name (which is really just the link given above), and click '''Checkout...'''.  Choose '''Check out as a project configured using the New Project Wizard''' and the revision you want (probably Head), and click '''Finish'''.&lt;br /&gt;
&lt;br /&gt;
In the New Project window that appears, choose '''C++ Project''' in Eclipse Europa (or in Callisto '''Standard Make C++ Project''') and click '''Next'''.&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-Europa-ProjectType.png]]&lt;br /&gt;
&lt;br /&gt;
Give your project a name such as InkscapeSVN.  Uncheck the '''Use default location''' box so you can provide a better project location outside of your workspace, such as C:\InkscapeSVN. Select '''Executable (XL C/C++)''' as the project type, and '''XL C/C++ Tool Chain''' as the the Toolchain (this will not be necessary in Callisto (or before?) as this has been already been specified by selecting '''Standard Make C++ Project'''). Click '''Finish'''.&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-Europa-CppProjectType.png]]&lt;br /&gt;
&lt;br /&gt;
The source code will now be checked out - this may take a while. You will also now have a project in the '''C/C++ Perspective''' with whatever name you provided earlier.&lt;br /&gt;
&lt;br /&gt;
=== TortoiseSVN ===&lt;br /&gt;
&lt;br /&gt;
To use TortoiseSVN instead of Subclipse to check out your project, open a Windows Explorer instance.  Right click anywhere outside of an existing SVN tree and choose '''SVN Checkout...'''.  Specify the link given above and the destination directory.&lt;br /&gt;
&lt;br /&gt;
To get a project in Eclipse, go to the '''C/C++ Perspective'''.  Right click in the '''C/C++ Projects''' tab, and choose '''New &amp;gt; Project...''' and in the window choose '''Standard Make C++ Project.''' Give the project a name, and uncheck the '''Use default location''' box.  You must give the location that you checked the code out into here.&lt;br /&gt;
&lt;br /&gt;
At this point, you will be able to use TortoiseSVN or Subclipse within Eclipse to control the source.&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Be sure you have the btool built and ready to go, as outlined on the [[Win32Port]] page.  You can build Inkscape from the command line or initiate it from within Eclipse, which will capture the output for you.&lt;br /&gt;
&lt;br /&gt;
To set up Eclipse to do this, make sure you are in the '''C/C++ Perspective''' and that your project is open.  Right click on the project name and click '''Properties'''.  Click on '''Builders'''.  Uncheck any builders that are there since we will be using the custom btool.  Click '''New...''' and select '''Program'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-04.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the '''Main''' tab, browse the workspace for the location of the btool.exe file.  Browse the workspace again to set the working directory to the main project directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now go to the '''Environment Tab''' and add a new variable called path.  Add the same thing that appears in your mingenv.bat file here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-06.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-07.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Click on '''C/C++ Project Paths''' and then the tab '''Path Containers'''.  Click '''Add...''', choose '''Discovered scanner configuration container''', '''Next''', '''Discovered Paths''', and '''Finish'''.&lt;br /&gt;
&lt;br /&gt;
Now go to '''C/C++ Include Paths and Symbols'''.  Click '''Add Contributed''' and choose the '''Discovered scanner configuration container''', then '''Discovered Paths'''.  Then click '''Add External Include Path''' and add the path to your GTK folder (probably something like c:\gtk210).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-08.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You should now be able to use the '''Project &amp;gt; Build All''' command, capturing the output onto Eclipse's console.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
&lt;br /&gt;
You need to make a couple of changes to the build.xml file and do a clean rebuild.  First, add -g to the flags section:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;flags&amp;gt;&lt;br /&gt;
      -Wall -O3&lt;br /&gt;
      -mms-bitfields&lt;br /&gt;
      '''-g'''&lt;br /&gt;
  &amp;lt;/flags&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then avoid stripping symbol information from the exe by changing this line&lt;br /&gt;
      strip=&amp;quot;'''true'''&amp;quot; symfile=&amp;quot;${build}/inkscape.dbg&amp;quot;&lt;br /&gt;
with this one&lt;br /&gt;
      strip=&amp;quot;'''false'''&amp;quot; symfile=&amp;quot;${build}/inkscape.dbg&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now you need to create a debugging instance in Eclipse.  Click '''Run &amp;gt; Debug...'''.  Click on '''C/C++ Local Application''' and then click the new button.  Give the launch configuration a logical name such as Inkscape Debug.&lt;br /&gt;
&lt;br /&gt;
These screenshots show you the values you have to change in each tab.  Nothing else needs to change.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-09.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-10.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you can launch this new configuration and debug away!&lt;br /&gt;
&lt;br /&gt;
(Don't worry about funny warnings about files or folders not existing - it doesn't seem to affect the use of the debugger.  However, if you know how to fix it, please replace this comment with instructions.)&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Using_Eclipse&amp;diff=15389</id>
		<title>Using Eclipse</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Using_Eclipse&amp;diff=15389"/>
		<updated>2007-07-01T18:19:02Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Subclipse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Eclipse is a popular development tool used primarily with Java; however, with the CDT plugin, C/C++ development can also be done.  This page will help you set up Eclipse for coding, building, and debugging Inkscape.&lt;br /&gt;
&lt;br /&gt;
= Eclipse on Windows =&lt;br /&gt;
&lt;br /&gt;
Running Eclipse provides a relatively easy and familiar way to work with Inkscape code on Windows.  This section will explain how to make it happen.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Some of these instructions may be applicable to development on Mac or Linux.  Feel free to refactor them if you are adding information for those platforms.&lt;br /&gt;
&lt;br /&gt;
== Initial Setup ==&lt;br /&gt;
&lt;br /&gt;
First, if you don't have Eclipse, [http://www.eclipse.org/downloads/ get it].  Check out the [http://help.eclipse.org/help32/index.jsp online help] if needed.&lt;br /&gt;
&lt;br /&gt;
Next, you need to set up the necessary add-ons.  Most important is the [http://www.eclipse.org/cdt/downloads.php CDT plug-in] which facilitates C/C++ development.  You may also wish to add [http://subclipse.tigris.org/install.html Subclipse] for SVN access within Eclipse.  Alternatively, many Windows users prefer to use [http://tortoisesvn.net/downloads TortoiseSVN], which works with Windows Explorer.&lt;br /&gt;
&lt;br /&gt;
Finally, follow the instructions on the [[Win32Port]] page under the heading '''Inkscape under Windows'''.&lt;br /&gt;
&lt;br /&gt;
== Creating a Project ==&lt;br /&gt;
&lt;br /&gt;
=== Subclipse ===&lt;br /&gt;
&lt;br /&gt;
The next step is to get the source code ready for use in Eclipse.  Check [[WorkingWithSVN | here]] for general instructions for working with SVN; in this section, the aim is to show how to check out the code using Subclipse.&lt;br /&gt;
&lt;br /&gt;
In Eclipse, we want the SVN perspective to be open.  Click '''Window &amp;gt; Open Perspective &amp;gt; Other'''.  Choose '''SVN Repository Exploring''' and click ok.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the '''SVN Repository''' tab, right click and choose '''New &amp;gt; Repository Location...'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the '''Location Url:''' box, paste the link https://svn.sourceforge.net/svnroot/inkscape/inkscape/trunk and click finish.  This location will now show in the '''SVN Repository''' tab.  You can expand the tree to see what is on the server.&lt;br /&gt;
&lt;br /&gt;
Now right click the location name (which is really just the link given above), and click '''Checkout...'''.  Choose '''Check out as a project configured using the New Project Wizard''' and the revision you want (probably Head), and click '''Finish'''.&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-Europa-ProjectType.png]]&lt;br /&gt;
&lt;br /&gt;
In the New Project window that appears, choose '''C++ Project''' in Eclipse Europa (or in Callisto '''Standard Make C++ Project''') and click '''Next'''.&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-Europa-CppProjectType.png]]&lt;br /&gt;
&lt;br /&gt;
Give your project a name such as InkscapeSVN.  Uncheck the '''Use default location''' box so you can provide a better project location outside of your workspace, such as C:\InkscapeSVN. Select '''Executable (XL C/C++)''' as the project type, and '''XL C/C++ Tool Chain''' as the the Toolchain (this will not be necessary in Callisto (or before?) as this has been already been specified by selecting '''Standard Make C++ Project'''). Click '''Finish'''.  The source code will now be checked out - this may take a while. You will also now have a project in the '''C/C++ Perspective''' with whatever name you provided earlier.&lt;br /&gt;
&lt;br /&gt;
=== TortoiseSVN ===&lt;br /&gt;
&lt;br /&gt;
To use TortoiseSVN instead of Subclipse to check out your project, open a Windows Explorer instance.  Right click anywhere outside of an existing SVN tree and choose '''SVN Checkout...'''.  Specify the link given above and the destination directory.&lt;br /&gt;
&lt;br /&gt;
To get a project in Eclipse, go to the '''C/C++ Perspective'''.  Right click in the '''C/C++ Projects''' tab, and choose '''New &amp;gt; Project...''' and in the window choose '''Standard Make C++ Project.''' Give the project a name, and uncheck the '''Use default location''' box.  You must give the location that you checked the code out into here.&lt;br /&gt;
&lt;br /&gt;
At this point, you will be able to use TortoiseSVN or Subclipse within Eclipse to control the source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Be sure you have the btool built and ready to go, as outlined on the [[Win32Port]] page.  You can build Inkscape from the command line or initiate it from within Eclipse, which will capture the output for you.&lt;br /&gt;
&lt;br /&gt;
To set up Eclipse to do this, make sure you are in the '''C/C++ Perspective''' and that your project is open.  Right click on the project name and click '''Properties'''.  Click on '''Builders'''.  Uncheck any builders that are there since we will be using the custom btool.  Click '''New...''' and select '''Program'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-04.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the '''Main''' tab, browse the workspace for the location of the btool.exe file.  Browse the workspace again to set the working directory to the main project directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-05.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now go to the '''Environment Tab''' and add a new variable called path.  Add the same thing that appears in your mingenv.bat file here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-06.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-07.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Click on '''C/C++ Project Paths''' and then the tab '''Path Containers'''.  Click '''Add...''', choose '''Discovered scanner configuration container''', '''Next''', '''Discovered Paths''', and '''Finish'''.&lt;br /&gt;
&lt;br /&gt;
Now go to '''C/C++ Include Paths and Symbols'''.  Click '''Add Contributed''' and choose the '''Discovered scanner configuration container''', then '''Discovered Paths'''.  Then click '''Add External Include Path''' and add the path to your GTK folder (probably something like c:\gtk210).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-08.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You should now be able to use the '''Project &amp;gt; Build All''' command, capturing the output onto Eclipse's console.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
&lt;br /&gt;
You need to make a couple of changes to the build.xml file and do a clean rebuild.  First, add -g to the flags section:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;flags&amp;gt;&lt;br /&gt;
      -Wall -O3&lt;br /&gt;
      -mms-bitfields&lt;br /&gt;
      '''-g'''&lt;br /&gt;
  &amp;lt;/flags&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then avoid stripping symbol information from the exe by changing this line&lt;br /&gt;
      strip=&amp;quot;'''true'''&amp;quot; symfile=&amp;quot;${build}/inkscape.dbg&amp;quot;&lt;br /&gt;
with this one&lt;br /&gt;
      strip=&amp;quot;'''false'''&amp;quot; symfile=&amp;quot;${build}/inkscape.dbg&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now you need to create a debugging instance in Eclipse.  Click '''Run &amp;gt; Debug...'''.  Click on '''C/C++ Local Application''' and then click the new button.  Give the launch configuration a logical name such as Inkscape Debug.&lt;br /&gt;
&lt;br /&gt;
These screenshots show you the values you have to change in each tab.  Nothing else needs to change.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-09.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipse-10.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you can launch this new configuration and debug away!&lt;br /&gt;
&lt;br /&gt;
(Don't worry about funny warnings about files or folders not existing - it doesn't seem to affect the use of the debugger.  However, if you know how to fix it, please replace this comment with instructions.)&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Eclipse-Europa-CppProjectType.png&amp;diff=15387</id>
		<title>File:Eclipse-Europa-CppProjectType.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Eclipse-Europa-CppProjectType.png&amp;diff=15387"/>
		<updated>2007-07-01T18:18:37Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Eclipse-Europa-ProjectType.png&amp;diff=15385</id>
		<title>File:Eclipse-Europa-ProjectType.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Eclipse-Europa-ProjectType.png&amp;diff=15385"/>
		<updated>2007-07-01T18:08:50Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Spirograph&amp;diff=15189</id>
		<title>Spirograph</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Spirograph&amp;diff=15189"/>
		<updated>2007-06-24T23:18:25Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Spirograph Extension==&lt;br /&gt;
The spirograph extension is a script which will generate Epitrochoids and Hypotrochoids in the same way as the Spirograph toy does.&lt;br /&gt;
[[Image:Spirograph_Samples.svg|Samples of the output of the spirograph extension]]&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.46&amp;diff=15183</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=15183"/>
		<updated>2007-06-24T12:56:19Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Notable bugfixes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Inkscape 0.46=&lt;br /&gt;
'''(not released yet)'''&lt;br /&gt;
&lt;br /&gt;
=Speed and interactivity=&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%'''. More impressive are memory savings: thanks to cairo, in outline mode Inkscape now takes only about '''50% of the memory''' used by 0.45 for the same file. &lt;br /&gt;
&lt;br /&gt;
* '''Smart redraw directionality:''' 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''' for exporting and high quality on-screen rendering: Inkscape now uses an IIR (Infinite Impulse Response) filter for blurring with large radius. This greatly improves the speed of blur redraw at high zooms or in high-resolution export (or simply with very large blur radius). On the other hand, the results are an approximation to a true Gaussian blur, so a drawing may look slightly different from the mathematically precise blur (usually the differences are far from visible, though). This code is mainly based on: ''Recursive Gaussian Derivative Filters'' by L.J. van Vliet, I.T. Young and P.W. Verbeek (see the source code for more detailed references). &lt;br /&gt;
&lt;br /&gt;
* '''Moving the cursor around''' in a file with large and complex paths has become much snappier and more responsive. Previously, in extreme cases Inkscape could freeze for seconds while catching up with the mouse cursor; such delays are now eliminated.&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;
&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 boundaries in imported bitmaps, but will ignore any paths or other objects that are fully (or almost) transparent or for any other reason 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 '''current 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). &lt;br /&gt;
&lt;br /&gt;
In the tool's '''Controls bar''':&lt;br /&gt;
&lt;br /&gt;
* '''Tolerance''' (set in per cent units) controls how large must be color difference at a point (compared to the initial click point) to stop the fill. Zero tolerance means only the area of strictly the same color will be filled; the larger the tolerance, the easier it will be for the fill to leak into adjacent different-color areas. The default value is 10%.&lt;br /&gt;
&lt;br /&gt;
* You can control the amount of '''inset/outset''' to be applied to the created fill path.  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 commands.&lt;br /&gt;
&lt;br /&gt;
* Paint Bucket's perceptual fill can use either all visible colors or specific color '''channels'''.  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;
* An '''auto gap''' setting.  When enabled, Paint Bucket will try to close any gaps in the area boundaries that would normally cause the fill to spill out of the desired area.  There are four settings to auto gap:&lt;br /&gt;
** None&lt;br /&gt;
** Small (fill gaps up to 2 pixels in size)&lt;br /&gt;
** Medium (4 pixels)&lt;br /&gt;
** Large (6 pixels)&lt;br /&gt;
&lt;br /&gt;
* A '''style swatch''' on the far right of the bar shows the style that will be used for the next fill object you create. &lt;br /&gt;
&lt;br /&gt;
The tool's '''shortcuts''' are:&lt;br /&gt;
&lt;br /&gt;
* '''Single click''' performs filling from the click point.&lt;br /&gt;
&lt;br /&gt;
* '''Shift+click''' performs filling from the click point and then unions the resulting path with the selected path. This way, if your first attempt did not fill in all of the desired area, you can Shift+click the remaining corner to fill it in separately and combine the result with the result of the previous fill.&lt;br /&gt;
&lt;br /&gt;
* '''Ctrl+click''' on an object simply changes that object's fill to the current fill color of the tool, and '''Shift+Ctrl+click''' changes the stroke to the current stroke color.&lt;br /&gt;
&lt;br /&gt;
* '''Click and drag''' performs filling from '''all of the points''' that you pass while dragging (you will see your path visualized by a red line). From each point, the fill spreads to the neighbors with the colors similar to that point - in other words, it's like clicking with this tool at each point of the drag path and unioning the results. This lets you easily fill an area occupied by a gradient or blur - just drag from the darkest to the lightest points in the area you want to fill.&lt;br /&gt;
&lt;br /&gt;
* '''Alt+click and drag''' works similarly to simple drag, except from each point of the drag path, the fill spreads to the neighbors (if any) with the colors similar to the ''initial point'' (the point where you started the drag).  This lets you fill a series of similarly-colored yet separated areas (for example, multiple cells in a cartoon) by starting the drag in one of those areas, and alt+dragging the tool through all the other areas.&lt;br /&gt;
&lt;br /&gt;
==Gradient Tool==&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''' or by '''Ctrl+Alt+Click''' on the gradient line.&lt;br /&gt;
*Stops can be deleted by '''Ctrl+Alt+Click''' on a stop or by the '''Del''' key for all the selected stop(s).&lt;br /&gt;
:*When you delete an end stop, the nearest intermediate stop becomes the new end stop of the gradient (without moving - i.e., the gradient span becomes shorter).&lt;br /&gt;
:*When you delete an end stop and there are no intermediate stops, the object will be painted with a solid fill taken from the color &amp;amp; opacity of the remaining stop.&lt;br /&gt;
*More than one stop can be selected at a time by '''Shift+click'''.&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;
==Calligraphy tool: Engraver's Toolbox ==&lt;br /&gt;
&lt;br /&gt;
Several new features were added to the Calligraphic pen to make&lt;br /&gt;
Inkscape capable of the ancient art of '''line&lt;br /&gt;
engraving'''. Traditional engraving is a very labour-intensive&lt;br /&gt;
process, and while for a long time it was the only practical way&lt;br /&gt;
of reproducing lifelike images in black-and-white print, about a&lt;br /&gt;
century ago it was almost completely displaced by automatic&lt;br /&gt;
halftone screens. However, line engravings have their&lt;br /&gt;
characteristic charm, and there's no reason not to try to&lt;br /&gt;
resurrect this art form with the help of Inkscape.&lt;br /&gt;
&lt;br /&gt;
A brief visual guide to the new functionality can be seen on&lt;br /&gt;
these screenshots:&lt;br /&gt;
&lt;br /&gt;
http://inkscape.org/screenshots/gallery/inkscape-0.46-engraving1.png&lt;br /&gt;
&lt;br /&gt;
http://inkscape.org/screenshots/gallery/inkscape-0.46-engraving2.png&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Tracking a guide path with Ctrl===&lt;br /&gt;
&lt;br /&gt;
One of the most common operations in line engraving is&lt;br /&gt;
'''hatching''' (or sometimes ''cross-hatching'' when several&lt;br /&gt;
hatching grids cross): filling a space with many parallel&lt;br /&gt;
straight or variously curved lines (usually of varying width to&lt;br /&gt;
represent a gradual shading). You could try to achieve a similar&lt;br /&gt;
effect with e.g. path interpolation (blending), but it is rather&lt;br /&gt;
cumbersome and limited; manual drawing of hatch lines, on the&lt;br /&gt;
other hand, is tedious and nearly impossible to do&lt;br /&gt;
uniformly. Now Inkscape provides &amp;quot;assisted hatching&amp;quot; by&lt;br /&gt;
'''tracking a guide path''', allowing you to hatch quickly and&lt;br /&gt;
uniformly and at the same time giving you sufficient manual&lt;br /&gt;
control over the process.&lt;br /&gt;
&lt;br /&gt;
Here's how to do this. First, select the '''guide path''' that&lt;br /&gt;
you will track. It may be another calligraphic stroke, any path&lt;br /&gt;
or shape, or even a letter of a text object. Then switch to&lt;br /&gt;
Calligraphic pen, select the desired parameters (line width,&lt;br /&gt;
angle, fixation etc.) and, before starting to draw, press&lt;br /&gt;
Ctrl. You will see a gray '''track circle''' centered at your&lt;br /&gt;
mouse pointer and touching the closest point on the selected&lt;br /&gt;
guide path. (If you have no guide path selected, a statusbar&lt;br /&gt;
message will tell you to select it.)&lt;br /&gt;
&lt;br /&gt;
Now move your mouse close to the guide path, so that the track&lt;br /&gt;
circle radius is equal to the desired spacing of your hatch&lt;br /&gt;
pattern, and start drawing along the guide path. At that moment,&lt;br /&gt;
the radius of the circle gets locked; now the circle slides&lt;br /&gt;
along the guide path - and the actual stroke is drawn by the&lt;br /&gt;
center of the tracking circle, ''not'' by your mouse point. As&lt;br /&gt;
a result, you are getting a smooth stroke going parallel to the&lt;br /&gt;
guide path and always at the same distance from it.&lt;br /&gt;
&lt;br /&gt;
When the stroke is ready, release your mouse button (or lift&lt;br /&gt;
your tablet pen) but '''do not let go of the Ctrl key''' because&lt;br /&gt;
as long as you have it pressed, the tool remembers the hatch&lt;br /&gt;
spacing you set when you started drawing. Now, you have just&lt;br /&gt;
created a new stroke and, as usual with Inkscape tools, it gets&lt;br /&gt;
selected instead of what was selected before. In our case, this&lt;br /&gt;
means that the newly drawn stroke itself becomes the new guide&lt;br /&gt;
path. Next, you can draw a second stroke along the first one,&lt;br /&gt;
then a third one along the second, etc. Eventually you can fill&lt;br /&gt;
any desired space with uniform hatching.&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you uncheck &amp;quot;Select new path&amp;quot; in the Calligraphy tool preferences, newly created strokes will not be selected, so your original guide path will be kept selected. In this mode, Inkscape will increase the tracking distance after each created stroke so that you can create uniformly spaced hatching by tracking a single guide path. &lt;br /&gt;
&lt;br /&gt;
The attachment to the guide path is not absolute. If you stray&lt;br /&gt;
your mouse pointer far enough from the guide path, you will be&lt;br /&gt;
able to tear it off (the track circle turns from green to red)&lt;br /&gt;
and move freely. This is intentional; this feature allows you,&lt;br /&gt;
for example, to continue drawing a stroke past the end of a&lt;br /&gt;
guide stroke, thus making your hatching cover a wider area than&lt;br /&gt;
the initial guide path. Special care is taken to make such&lt;br /&gt;
tearing off as smooth as possible and to suppress violent jerks,&lt;br /&gt;
but this is not always possible; the general advice is to not&lt;br /&gt;
try to hatch too fast. If jerking and unintended tearoffs still&lt;br /&gt;
bother you, try increasing the Mass parameter.&lt;br /&gt;
&lt;br /&gt;
Also, special code is in place to prevent flipovers - accidental&lt;br /&gt;
jumps to the other side of the guide path. Brief flipovers are&lt;br /&gt;
suppressed, but if you intentionally go over to the other side&lt;br /&gt;
and stay there, eventually Inkscape will obey and your tracking&lt;br /&gt;
stroke will also flip over to follow you.&lt;br /&gt;
&lt;br /&gt;
Tracking a guide also allows some slight feedback by gradually&lt;br /&gt;
changing the tracking distance in response to your drawing&lt;br /&gt;
behavior. Thus, if you're consistently trying to draw closer or&lt;br /&gt;
farther from the guide than the current tracking distance, the&lt;br /&gt;
distance will correspondingly decrease or increase, so you will&lt;br /&gt;
get a hatching that is slightly spacing in or out. (The effect&lt;br /&gt;
is very slight, however, so as not to become a nuisance.)  Also,&lt;br /&gt;
note that since tracking follows the edge of the stroke, strokes&lt;br /&gt;
of varying width (such as those tracing background, see below)&lt;br /&gt;
will result in gradual bending of the hatching pattern as you&lt;br /&gt;
proceed.&lt;br /&gt;
&lt;br /&gt;
===Tracing background by stroke width===&lt;br /&gt;
&lt;br /&gt;
There is a new toggle button on the Calligraphy tool's controls&lt;br /&gt;
bar, '''Trace background'''. When on, the width of your pen&lt;br /&gt;
depends on the lightness of the background under the stroke in&lt;br /&gt;
each point, so that white translates into the minimum stoke&lt;br /&gt;
width (1) and black translates to the maximum (which is set by the&lt;br /&gt;
Width parameter). This can work alone or in combination with&lt;br /&gt;
pressure sensitivity, depending on whether the &amp;quot;Use pressure&amp;quot; button&lt;br /&gt;
is also toggled.&lt;br /&gt;
&lt;br /&gt;
This feature allows you to not only hatch over an imported&lt;br /&gt;
bitmap image or any drawing, but to do so automatically&lt;br /&gt;
reproducing the highlights and shades of the background with&lt;br /&gt;
your strokes becoming lighter and heavier as needed.&lt;br /&gt;
&lt;br /&gt;
===Thinning/thickening of paths with Alt===&lt;br /&gt;
&lt;br /&gt;
Even with background tracing, the visible lightness/darkness of&lt;br /&gt;
a hatching may not correspond too well to your artistic&lt;br /&gt;
intention. Also, with guide tracking, the ends of strokes are&lt;br /&gt;
often far from ideal - they may be too blunt or have unsightly&lt;br /&gt;
bends or blobs. This is where the new thinning/thickening&lt;br /&gt;
function is indispensable.&lt;br /&gt;
&lt;br /&gt;
While in the Calligraphy tool, press Alt. You will see a&lt;br /&gt;
orange-colored circle indicating the area that will be affected;&lt;br /&gt;
this area is 10 times the size of the pen when you draw (so you&lt;br /&gt;
can change it by changing the Width parameter on the&lt;br /&gt;
toolbar). &lt;br /&gt;
&lt;br /&gt;
Now select some or all of the paths or groups containing paths (as with most&lt;br /&gt;
tools in Inkscape, only selected objects are changed), for&lt;br /&gt;
example by pressing Ctrl+A, and start '''Alt+dragging''' over&lt;br /&gt;
them. Where you touch them, paths become thinner, as if&lt;br /&gt;
melting away, up until total disappearance. Conversely,&lt;br /&gt;
'''Shift+Alt+dragging''' makes selected paths thicker in places&lt;br /&gt;
where you touch them.&lt;br /&gt;
&lt;br /&gt;
As with the Calligraphy pen itself, the '''size''' of the&lt;br /&gt;
thinning/thickening area by default depends on zoom; simply&lt;br /&gt;
zooming in or out is often easier than adjusting the width if&lt;br /&gt;
you want to cover a smaller or larger area. &lt;br /&gt;
&lt;br /&gt;
The '''force''' of&lt;br /&gt;
the effect also depends on zoom (or in other words, it stays the&lt;br /&gt;
same when measured by screen pixels, same as when you move and&lt;br /&gt;
object by Alt+arrow keys). Between the center and the edge of the circle, the force decreases along a '''bell-like curve''', so that the action of the tool on paths is always smooth. Also, if you have a pressure-sensitive tablet, the force of thinning/thickening also&lt;br /&gt;
depends on '''pen pressure'''; tapping slightly produces gradual&lt;br /&gt;
lightening or darkening of your drawing, while pressing heavily&lt;br /&gt;
will work as a kind of quick &amp;quot;erasing&amp;quot; (with Alt) or&lt;br /&gt;
&amp;quot;blackening&amp;quot; (with Alt+Shift).&lt;br /&gt;
&lt;br /&gt;
Of course, thinning/thickening is useful '''not only for calligraphic strokes'''. You can select any simple path (such as&lt;br /&gt;
an ellipse converted to path) and start '''sculpting''' it,&lt;br /&gt;
spawning smooth treacle-like appendages with Alt+Shift and&lt;br /&gt;
melting them away with Alt. Unlike the &amp;quot;node sculpting&amp;quot; mode in&lt;br /&gt;
the Node tool, however, this does not require adding new nodes&lt;br /&gt;
to the shape or selecting any nodes. This new functionality is&lt;br /&gt;
somewhat similar to the &amp;quot;Pucker&amp;quot; and &amp;quot;Bloat&amp;quot; tools in the latest&lt;br /&gt;
versions of Adobe Illustrator, except that in Inkscape it works&lt;br /&gt;
softer and is easier to control.&lt;br /&gt;
&lt;br /&gt;
'''Known problems with thinning/thickening:''' (1) it is rather&lt;br /&gt;
slow; (2) it quickly eats memory; and (3) it is sometimes buggy&lt;br /&gt;
- thin calligraphic strokes may suddenly disappear or change&lt;br /&gt;
their shape drastically as you're Alt+stroking them. For (3), it&lt;br /&gt;
helps to undo the bad change and try again with less pressure on&lt;br /&gt;
the pen - if you do your thinning in several light touches&lt;br /&gt;
instead of one heavy press, usually you will be able to get the&lt;br /&gt;
desired result without the buggy behavior. In general, however,&lt;br /&gt;
all these problems stem from the livarot library that we use for&lt;br /&gt;
geometric manipulation of paths. Fortunately, livarot is&lt;br /&gt;
scheduled for replacement by lib2geom, a new library now in&lt;br /&gt;
development, so hopefully these issues will be addressed then.&lt;br /&gt;
&lt;br /&gt;
===Misc features===&lt;br /&gt;
&lt;br /&gt;
* For consistency with other drawing tools, drawing with '''Shift''' in Calligraphy tool automatically '''unions''' the newly created stroke with whatever paths were selected (and selects the result).  Thus, you can do a series of overlapping Shift+strokes to create one unioned path object instead of separate objects as before. &lt;br /&gt;
&lt;br /&gt;
* To facilitate changing the Width parameter, the Home/End keys in Calligraphy tool switch you to the minimum (1) and maximum (100) width, correspondingly. (This is in addition to the Left/Right arrow keys that change Width by 1; remember also that you can press Alt+X, type any width, and press Enter.)&lt;br /&gt;
&lt;br /&gt;
==Selector==&lt;br /&gt;
&lt;br /&gt;
* A new selection mode is available: '''selecting by touch'''. In this mode, you draw a freehand path across the objects; when you release mouse button, all objects that are touched by this path get selected. This mode is very convenient  in situations where you need to select objects so intermingled that selecting them by the rectangular rubberband is too difficult and so numerous that click-selecting them one by one is too tedious. &lt;br /&gt;
&lt;br /&gt;
:To activate selecting by touch, whenever you are drawing a rubberband rectangle, just press '''Alt''' to switch it to the touch mode. The rectangle will disappear and a red ''touch path'' will be shown instead. When dragging from an empty space, you can press '''Alt''' first and then start to drag to get the touch mode (note that your selection must be empty, otherwise Alt+dragging will move the selected objects instead). To start a touch selection from a point over an object, or to add to existing selection by touching, press '''Shift+Alt''' and then start to drag.&lt;br /&gt;
&lt;br /&gt;
* Horizontal/vertical flipping: So far, flipping a selection made it flip within its bounding box, so that the latter remained fixed. In the move/scale mode of the selector tool, this behaviour remains unchanged. However, in rotate/shear mode flipping now happens about an (imaginary) vertical/horizontal axis through the rotation center. This is very handy, since the latter can be freely dragged around and snaps to all kinds of objects if desired.&lt;br /&gt;
&lt;br /&gt;
==Node Tool:==&lt;br /&gt;
[sculpt profiles - bbyak]&lt;br /&gt;
&lt;br /&gt;
* If any of the nodes in the currently selected path is mouseovered, then horizontal/vertical flipping ('H' and 'V' keys), stepwise rotation ('[' and ']' keys) and scaling ('&amp;lt;' and '&amp;gt;' keys) now all use this specific node as center/axis. If there is no mouseovered node, the center of the bounding box is used instead (as is currently the case unconditionally). Nodes that are covered by one of their handles are also detected as mouseovered.&lt;br /&gt;
&lt;br /&gt;
==Text Tool:==&lt;br /&gt;
* [text toolbar - deadchip]&lt;br /&gt;
&lt;br /&gt;
=Snapping and grids=&lt;br /&gt;
&lt;br /&gt;
* '''Snapping behavior''' has been implemented or improved for drawing of new shapes, for dragging the nodes of existing shapes, for gradient handles, and for clones. Snapping of text baselines works again. Snapping distance is now set in screen pixels and is therefore independent of zoom. Furthermore, the bug where &amp;quot;node-to-node&amp;quot; snapping caused jerky movement of nodes is fixed; snapping while skewing has been implemented; any object snaps with its rotation axis (which can be arbitrarily moved and whose position is remembered for every object); the aspect ratio is correctly preserved while scaling with snapping turned on; all four boundingbox corners now snap instead of only the lower-left and upper-right; snapping while uniformly scaling has been improved. &lt;br /&gt;
&lt;br /&gt;
* The confusing &amp;quot;Default transformations origin&amp;quot; option is removed. Now Inkscape always uses the opposide edge of the object's bounding box as the transformation origin (though the bounding box itself can now be different, see next item).&lt;br /&gt;
&lt;br /&gt;
* A new preference option has been added to specify the kind of bounding box to be used (see Inkscape Preferences, Tools, Selector). You can choose between the visual bounding box (which takes into account the stroke width, markers, and blur margins; this is the default behavior) or geometric bounding box (which encloses only the path itself, disregarding stroke width). &lt;br /&gt;
&lt;br /&gt;
Grids:&lt;br /&gt;
&lt;br /&gt;
* a new tab in the document properties dialog, solely meant for grids; the former grid/guide tab is now solely for guides. I envision a list of guides there in the future, for easier deletion of guides etc.&lt;br /&gt;
* more than one grid can be active at the same time, although i am having trouble in finding a usefull case for this&lt;br /&gt;
* multiple views on the same document share the same grids, but the grid can be turned off for each view separately. For example: one could have an overview view without grid enabled. Duplicate that window and zoom in on some detail; then grids can be shown only for that view, and snapping will only happen in those views for which grids are enabled. (sorry i am not able to explain more clearly)&lt;br /&gt;
* grid information is now stored in SVG as a child of sodipodi:namedview. Can someone please make an extension that converts an old grid definition to the new format?&lt;br /&gt;
* axonometric grid (not yet snapping)&lt;br /&gt;
* dots instead of lines&lt;br /&gt;
&lt;br /&gt;
From developer perspective:&lt;br /&gt;
&lt;br /&gt;
* implementation of new grids is much easier now; subclassing CanvasGrid and adding an entry in the is enough. Have a peek at how the rectangular grid is implemented (CanvasXYGrid).&lt;br /&gt;
* note that there is no longer &amp;quot;the grid&amp;quot;, there might be several grids active now!&lt;br /&gt;
&lt;br /&gt;
[Future plans (i will not be working on this soon, due to GSoC Live effects!):&lt;br /&gt;
** possibility of enabling not all but a selection of grids for a view. Eg. when there are 4 grids defined in the document, only enable grid2 for a certain view.&lt;br /&gt;
** new grids!&lt;br /&gt;
** better snapping mechanism to enable snapping to intersections of guides&amp;amp;grids and grids&amp;amp;grids.&lt;br /&gt;
&lt;br /&gt;
A side effect of removal of old gridcode: apparantly the origin of the desktop rules used to be set to the origin of the grid. I find this strange: specifying a grid origin of (2,2) would have me think the origin would be at ruler location (2,2) instead of (0,0) as it is in 0.45.1.&lt;br /&gt;
I have commented the grid-origin correction to the ruler range, because now there is not a single grid anymore to correct it for. Isn't there a control somewhere to define the documents origin? Now the ruler origin is set to (0,0) -- johan]&lt;br /&gt;
&lt;br /&gt;
=Filters=&lt;br /&gt;
&lt;br /&gt;
==Blend modes==&lt;br /&gt;
  [kiirala]&lt;br /&gt;
&lt;br /&gt;
=Effects=&lt;br /&gt;
&lt;br /&gt;
* The new '''Render &amp;gt; Gear''' extension creates a [http://en.wikipedia.org/wiki/Gear mechanical gear] given the number of teeth, the circular pitch (in px units), and the pressure angle.&lt;br /&gt;
&lt;br /&gt;
* The new '''Render &amp;gt; [[Spirograph]]''' extension creates intricate mathematical curves akin to the classic [http://en.wikipedia.org/wiki/Spirograph mechanical Spirograph toy].&lt;br /&gt;
&lt;br /&gt;
*[barcode]&lt;br /&gt;
&lt;br /&gt;
*The '''Whirl''' extension uses the center of view as the center of whirl, so you don't have to enter the center coordinates numerically.&lt;br /&gt;
&lt;br /&gt;
*The '''Render &amp;gt; Grid''' extension has got an extended range of grid spacings, from 0.1 to 1000 px.&lt;br /&gt;
&lt;br /&gt;
*The '''Render &amp;gt; Function Plotter''' extension can now plot using polar coordinates.&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;
* The Export dialog automatically appends the '''.png''' extension to the export filename you specify. &lt;br /&gt;
&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;
[calligraphy: menus, tooltips; star; ...]&lt;br /&gt;
&lt;br /&gt;
Switched to stock GTK+ toolbars.&lt;br /&gt;
&lt;br /&gt;
Extra magic secret sauce added.&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;
== Saving window geometry globally ==&lt;br /&gt;
&lt;br /&gt;
Previously, window geometry (size and position of document windows) could only be saved into the document (so that each document stored its own window geometry). Now, a new option is added to save the geometry of the last used window to the preferences and apply this geometry to all new windows.  Thus, with the &amp;quot;Save geometry to preferences&amp;quot; option enabled, new windows will open with the shape of the most recent previous window.  This mode also remembers and restores the maximized/fullscreen state (unlike geometry saved to documents).&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, or apply more than one clippath/mask to an object). Now this limitation is removed; just select any single object and group it to get a single-object group. &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;
* The '''Tile Clones''' dialog now uses the object's defined '''rotation axis''' (which can be freely moved by Selector tool and which is saved separately for each object) for all rotations (including both symmetry rotations and the Rotation tab rotations), scales, and flips. This renders unnecessary the previous workarounds where you had to group an object with another transparent object to affect how it's rotated by the clone tiler. &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, Ctrl+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 all locked objects''' or '''unhide all 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;
* The list of folder shortcuts in the '''Open''' dialog includes the folder with Inkscape's SVG '''examples''' for easy access. Similarly, the '''Save''' dialog has a shortcut for the user's own '''templates''' dialog making it easy to save the current document as a template (if saved as &amp;lt;code&amp;gt;default.svg&amp;lt;/code&amp;gt;, it will be loaded every time you run Inkscape or create new document with Ctrl+N; with any other name, it will be added to the File &amp;gt; New submenu).&lt;br /&gt;
&lt;br /&gt;
* For time-intensive operations such as Paint Bucket and Simplify, the system's busy wait cursor is displayed to indicate to the user that Inkscape is actively working, and not frozen.&lt;br /&gt;
&lt;br /&gt;
* [statusbar updates: save, ...]&lt;br /&gt;
&lt;br /&gt;
* Several improvements in '''inkview''': busy cursor is shown while loading file, the button window stays on top and responds to keyboard shortcuts; several memleaks stopped and bugs fixed. The &amp;quot;slideshow mode&amp;quot; of the main inkscape application (-s or --slideshow command line option) is removed; use inkview instead.&lt;br /&gt;
&lt;br /&gt;
* In Document Metadata dialog, updated Creative Commons Licenses to version 3.0.&lt;br /&gt;
&lt;br /&gt;
=Notable bugfixes=&lt;br /&gt;
&lt;br /&gt;
These are bugfixes compared to 0.45.1; for a list of fixes in 0.45.1 compared to 0.45, see [[ReleaseNotes045|0.45.1 release notes]]&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;
* Inkscape now properly quotes &amp;lt;code&amp;gt;font-family&amp;lt;/code&amp;gt; values and therefore can use fonts with various nonalphanumeric characters in their names, which previously failed. &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;
* A regression in 0.45 caused crashes when undo or redo was attempted before the previous action could complete (e.g. pressing ctrl+z while you are still drawing a rectangle). This is now fixed.&lt;br /&gt;
&lt;br /&gt;
* Previously, if there was a single invalid property in a &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; attribute, the entire attribute was discarded, i.e. the object lost all styling. Now Inkscape's behavior is more compliant to the CSS specification: it ignores only the invalid property but reads in all the rest.&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;
* Master opacity did not apply to stroke markers as it should; fixed.&lt;br /&gt;
&lt;br /&gt;
* Creative Commons Public Domain Declaration URI points to right location now.&lt;br /&gt;
&lt;br /&gt;
* Right clicking on a colour swatch now correctly sets the stroke colour.&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>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Creating_Inkscape_distributions&amp;diff=15181</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=15181"/>
		<updated>2007-06-24T10:30:05Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Creating a Windows Distro */&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 before declaring 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. In windows, 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;
The version numbers in the FILEVERSION and PRODUCTVERSION fields within inkscape.rc and inkview.rc need to be updated to reflect the current version number of the release.&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;
=== 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>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.46&amp;diff=15179</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=15179"/>
		<updated>2007-06-23T19:02:06Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: /* Effects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Inkscape 0.46=&lt;br /&gt;
'''(not released yet)'''&lt;br /&gt;
&lt;br /&gt;
=Speed and interactivity=&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%'''. More impressive are memory savings: thanks to cairo, in outline mode Inkscape now takes only about '''50% of the memory''' used by 0.45 for the same file. &lt;br /&gt;
&lt;br /&gt;
* '''Smart redraw directionality:''' 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''' for exporting and high quality on-screen rendering: Inkscape now uses an IIR (Infinite Impulse Response) filter for blurring with large radius. This greatly improves the speed of blur redraw at high zooms or in high-resolution export (or simply with very large blur radius). On the other hand, the results are an approximation to a true Gaussian blur, so a drawing may look slightly different from the mathematically precise blur (usually the differences are far from visible, though). This code is mainly based on: ''Recursive Gaussian Derivative Filters'' by L.J. van Vliet, I.T. Young and P.W. Verbeek (see the source code for more detailed references). &lt;br /&gt;
&lt;br /&gt;
* '''Moving the cursor around''' in a file with large and complex paths has become much snappier and more responsive. Previously, in extreme cases Inkscape could freeze for seconds while catching up with the mouse cursor; such delays are now eliminated.&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;
&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 boundaries in imported bitmaps, but will ignore any paths or other objects that are fully (or almost) transparent or for any other reason 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 '''current 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). &lt;br /&gt;
&lt;br /&gt;
In the tool's '''Controls bar''':&lt;br /&gt;
&lt;br /&gt;
* '''Tolerance''' (set in per cent units) controls how large must be color difference at a point (compared to the initial click point) to stop the fill. Zero tolerance means only the area of strictly the same color will be filled; the larger the tolerance, the easier it will be for the fill to leak into adjacent different-color areas. The default value is 10%.&lt;br /&gt;
&lt;br /&gt;
* You can control the amount of '''inset/outset''' to be applied to the created fill path.  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 commands.&lt;br /&gt;
&lt;br /&gt;
* Paint Bucket's perceptual fill can use either all visible colors or specific color '''channels'''.  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;
* An '''auto gap''' setting.  When enabled, Paint Bucket will try to close any gaps in the area boundaries that would normally cause the fill to spill out of the desired area.  There are four settings to auto gap:&lt;br /&gt;
** None&lt;br /&gt;
** Small (fill gaps up to 2 pixels in size)&lt;br /&gt;
** Medium (4 pixels)&lt;br /&gt;
** Large (6 pixels)&lt;br /&gt;
&lt;br /&gt;
* A '''style swatch''' on the far right of the bar shows the style that will be used for the next fill object you create. &lt;br /&gt;
&lt;br /&gt;
The tool's '''shortcuts''' are:&lt;br /&gt;
&lt;br /&gt;
* '''Single click''' performs filling from the click point.&lt;br /&gt;
&lt;br /&gt;
* '''Shift+click''' performs filling from the click point and then unions the resulting path with the selected path. This way, if your first attempt did not fill in all of the desired area, you can Shift+click the remaining corner to fill it in separately and combine the result with the result of the previous fill.&lt;br /&gt;
&lt;br /&gt;
* '''Ctrl+click''' on an object simply changes that object's fill to the current fill color of the tool, and '''Shift+Ctrl+click''' changes the stroke to the current stroke color.&lt;br /&gt;
&lt;br /&gt;
* '''Click and drag''' performs filling from '''all of the points''' that you pass while dragging (you will see your path visualized by a red line). From each point, the fill spreads to the neighbors with the colors similar to that point - in other words, it's like clicking with this tool at each point of the drag path and unioning the results. This lets you easily fill an area occupied by a gradient or blur - just drag from the darkest to the lightest points in the area you want to fill.&lt;br /&gt;
&lt;br /&gt;
* '''Alt+click and drag''' works similarly to simple drag, except from each point of the drag path, the fill spreads to the neighbors (if any) with the colors similar to the ''initial point'' (the point where you started the drag).  This lets you fill a series of similarly-colored yet separated areas (for example, multiple cells in a cartoon) by starting the drag in one of those areas, and alt+dragging the tool through all the other areas.&lt;br /&gt;
&lt;br /&gt;
==Gradient Tool==&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''' or by '''Ctrl+Alt+Click''' on the gradient line.&lt;br /&gt;
*Stops can be deleted by '''Ctrl+Alt+Click''' on a stop or by the '''Del''' key for all the selected stop(s).&lt;br /&gt;
:*When you delete an end stop, the nearest intermediate stop becomes the new end stop of the gradient (without moving - i.e., the gradient span becomes shorter).&lt;br /&gt;
:*When you delete an end stop and there are no intermediate stops, the object will be painted with a solid fill taken from the color &amp;amp; opacity of the remaining stop.&lt;br /&gt;
*More than one stop can be selected at a time by '''Shift+click'''.&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;
==Calligraphy tool: Engraver's Toolbox ==&lt;br /&gt;
&lt;br /&gt;
Several new features were added to the Calligraphic pen to make&lt;br /&gt;
Inkscape capable of the ancient art of '''line&lt;br /&gt;
engraving'''. Traditional engraving is a very labour-intensive&lt;br /&gt;
process, and while for a long time it was the only practical way&lt;br /&gt;
of reproducing lifelike images in black-and-white print, about a&lt;br /&gt;
century ago it was almost completely displaced by automatic&lt;br /&gt;
halftone screens. However, line engravings have their&lt;br /&gt;
characteristic charm, and there's no reason not to try to&lt;br /&gt;
resurrect this art form with the help of Inkscape.&lt;br /&gt;
&lt;br /&gt;
A brief visual guide to the new functionality can be seen on&lt;br /&gt;
these screenshots:&lt;br /&gt;
&lt;br /&gt;
http://inkscape.org/screenshots/gallery/inkscape-0.46-engraving1.png&lt;br /&gt;
&lt;br /&gt;
http://inkscape.org/screenshots/gallery/inkscape-0.46-engraving2.png&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Tracking a guide path with Ctrl===&lt;br /&gt;
&lt;br /&gt;
One of the most common operations in line engraving is&lt;br /&gt;
'''hatching''' (or sometimes ''cross-hatching'' when several&lt;br /&gt;
hatching grids cross): filling a space with many parallel&lt;br /&gt;
straight or variously curved lines (usually of varying width to&lt;br /&gt;
represent a gradual shading). You could try to achieve a similar&lt;br /&gt;
effect with e.g. path interpolation (blending), but it is rather&lt;br /&gt;
cumbersome and limited; manual drawing of hatch lines, on the&lt;br /&gt;
other hand, is tedious and nearly impossible to do&lt;br /&gt;
uniformly. Now Inkscape provides &amp;quot;assisted hatching&amp;quot; by&lt;br /&gt;
'''tracking a guide path''', allowing you to hatch quickly and&lt;br /&gt;
uniformly and at the same time giving you sufficient manual&lt;br /&gt;
control over the process.&lt;br /&gt;
&lt;br /&gt;
Here's how to do this. First, select the '''guide path''' that&lt;br /&gt;
you will track. It may be another calligraphic stroke, any path&lt;br /&gt;
or shape, or even a letter of a text object. Then switch to&lt;br /&gt;
Calligraphic pen, select the desired parameters (line width,&lt;br /&gt;
angle, fixation etc.) and, before starting to draw, press&lt;br /&gt;
Ctrl. You will see a gray '''track circle''' centered at your&lt;br /&gt;
mouse pointer and touching the closest point on the selected&lt;br /&gt;
guide path. (If you have no guide path selected, a statusbar&lt;br /&gt;
message will tell you to select it.)&lt;br /&gt;
&lt;br /&gt;
Now move your mouse close to the guide path, so that the track&lt;br /&gt;
circle radius is equal to the desired spacing of your hatch&lt;br /&gt;
pattern, and start drawing along the guide path. At that moment,&lt;br /&gt;
the radius of the circle gets locked; now the circle slides&lt;br /&gt;
along the guide path - and the actual stroke is drawn by the&lt;br /&gt;
center of the tracking circle, ''not'' by your mouse point. As&lt;br /&gt;
a result, you are getting a smooth stroke going parallel to the&lt;br /&gt;
guide path and always at the same distance from it.&lt;br /&gt;
&lt;br /&gt;
When the stroke is ready, release your mouse button (or lift&lt;br /&gt;
your tablet pen) but '''do not let go of the Ctrl key''' because&lt;br /&gt;
as long as you have it pressed, the tool remembers the hatch&lt;br /&gt;
spacing you set when you started drawing. Now, you have just&lt;br /&gt;
created a new stroke and, as usual with Inkscape tools, it gets&lt;br /&gt;
selected instead of what was selected before. In our case, this&lt;br /&gt;
means that the newly drawn stroke itself becomes the new guide&lt;br /&gt;
path. Next, you can draw a second stroke along the first one,&lt;br /&gt;
then a third one along the second, etc. Eventually you can fill&lt;br /&gt;
any desired space with uniform hatching.&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you uncheck &amp;quot;Select new path&amp;quot; in the Calligraphy tool preferences, newly created strokes will not be selected, so your original guide path will be kept selected. In this mode, Inkscape will increase the tracking distance after each created stroke so that you can create uniformly spaced hatching by tracking a single guide path. &lt;br /&gt;
&lt;br /&gt;
The attachment to the guide path is not absolute. If you stray&lt;br /&gt;
your mouse pointer far enough from the guide path, you will be&lt;br /&gt;
able to tear it off (the track circle turns from green to red)&lt;br /&gt;
and move freely. This is intentional; this feature allows you,&lt;br /&gt;
for example, to continue drawing a stroke past the end of a&lt;br /&gt;
guide stroke, thus making your hatching cover a wider area than&lt;br /&gt;
the initial guide path. Special care is taken to make such&lt;br /&gt;
tearing off as smooth as possible and to suppress violent jerks,&lt;br /&gt;
but this is not always possible; the general advice is to not&lt;br /&gt;
try to hatch too fast. If jerking and unintended tearoffs still&lt;br /&gt;
bother you, try increasing the Mass parameter.&lt;br /&gt;
&lt;br /&gt;
Also, special code is in place to prevent flipovers - accidental&lt;br /&gt;
jumps to the other side of the guide path. Brief flipovers are&lt;br /&gt;
suppressed, but if you intentionally go over to the other side&lt;br /&gt;
and stay there, eventually Inkscape will obey and your tracking&lt;br /&gt;
stroke will also flip over to follow you.&lt;br /&gt;
&lt;br /&gt;
Tracking a guide also allows some slight feedback by gradually&lt;br /&gt;
changing the tracking distance in response to your drawing&lt;br /&gt;
behavior. Thus, if you're consistently trying to draw closer or&lt;br /&gt;
farther from the guide than the current tracking distance, the&lt;br /&gt;
distance will correspondingly decrease or increase, so you will&lt;br /&gt;
get a hatching that is slightly spacing in or out. (The effect&lt;br /&gt;
is very slight, however, so as not to become a nuisance.)  Also,&lt;br /&gt;
note that since tracking follows the edge of the stroke, strokes&lt;br /&gt;
of varying width (such as those tracing background, see below)&lt;br /&gt;
will result in gradual bending of the hatching pattern as you&lt;br /&gt;
proceed.&lt;br /&gt;
&lt;br /&gt;
===Tracing background by stroke width===&lt;br /&gt;
&lt;br /&gt;
There is a new toggle button on the Calligraphy tool's controls&lt;br /&gt;
bar, '''Trace background'''. When on, the width of your pen&lt;br /&gt;
depends on the lightness of the background under the stroke in&lt;br /&gt;
each point, so that white translates into the minimum stoke&lt;br /&gt;
width (1) and black translates to the maximum (which is set by the&lt;br /&gt;
Width parameter). This can work alone or in combination with&lt;br /&gt;
pressure sensitivity, depending on whether the &amp;quot;Use pressure&amp;quot; button&lt;br /&gt;
is also toggled.&lt;br /&gt;
&lt;br /&gt;
This feature allows you to not only hatch over an imported&lt;br /&gt;
bitmap image or any drawing, but to do so automatically&lt;br /&gt;
reproducing the highlights and shades of the background with&lt;br /&gt;
your strokes becoming lighter and heavier as needed.&lt;br /&gt;
&lt;br /&gt;
===Thinning/thickening of paths with Alt===&lt;br /&gt;
&lt;br /&gt;
Even with background tracing, the visible lightness/darkness of&lt;br /&gt;
a hatching may not correspond too well to your artistic&lt;br /&gt;
intention. Also, with guide tracking, the ends of strokes are&lt;br /&gt;
often far from ideal - they may be too blunt or have unsightly&lt;br /&gt;
bends or blobs. This is where the new thinning/thickening&lt;br /&gt;
function is indispensable.&lt;br /&gt;
&lt;br /&gt;
While in the Calligraphy tool, press Alt. You will see a&lt;br /&gt;
orange-colored circle indicating the area that will be affected;&lt;br /&gt;
this area is 10 times the size of the pen when you draw (so you&lt;br /&gt;
can change it by changing the Width parameter on the&lt;br /&gt;
toolbar). &lt;br /&gt;
&lt;br /&gt;
Now select some or all of the paths or groups containing paths (as with most&lt;br /&gt;
tools in Inkscape, only selected objects are changed), for&lt;br /&gt;
example by pressing Ctrl+A, and start '''Alt+dragging''' over&lt;br /&gt;
them. Where you touch them, paths become thinner, as if&lt;br /&gt;
melting away, up until total disappearance. Conversely,&lt;br /&gt;
'''Shift+Alt+dragging''' makes selected paths thicker in places&lt;br /&gt;
where you touch them.&lt;br /&gt;
&lt;br /&gt;
As with the Calligraphy pen itself, the '''size''' of the&lt;br /&gt;
thinning/thickening area by default depends on zoom; simply&lt;br /&gt;
zooming in or out is often easier than adjusting the width if&lt;br /&gt;
you want to cover a smaller or larger area. &lt;br /&gt;
&lt;br /&gt;
The '''force''' of&lt;br /&gt;
the effect also depends on zoom (or in other words, it stays the&lt;br /&gt;
same when measured by screen pixels, same as when you move and&lt;br /&gt;
object by Alt+arrow keys). Between the center and the edge of the circle, the force decreases along a '''bell-like curve''', so that the action of the tool on paths is always smooth. Also, if you have a pressure-sensitive tablet, the force of thinning/thickening also&lt;br /&gt;
depends on '''pen pressure'''; tapping slightly produces gradual&lt;br /&gt;
lightening or darkening of your drawing, while pressing heavily&lt;br /&gt;
will work as a kind of quick &amp;quot;erasing&amp;quot; (with Alt) or&lt;br /&gt;
&amp;quot;blackening&amp;quot; (with Alt+Shift).&lt;br /&gt;
&lt;br /&gt;
Of course, thinning/thickening is useful '''not only for calligraphic strokes'''. You can select any simple path (such as&lt;br /&gt;
an ellipse converted to path) and start '''sculpting''' it,&lt;br /&gt;
spawning smooth treacle-like appendages with Alt+Shift and&lt;br /&gt;
melting them away with Alt. Unlike the &amp;quot;node sculpting&amp;quot; mode in&lt;br /&gt;
the Node tool, however, this does not require adding new nodes&lt;br /&gt;
to the shape or selecting any nodes. This new functionality is&lt;br /&gt;
somewhat similar to the &amp;quot;Pucker&amp;quot; and &amp;quot;Bloat&amp;quot; tools in the latest&lt;br /&gt;
versions of Adobe Illustrator, except that in Inkscape it works&lt;br /&gt;
softer and is easier to control.&lt;br /&gt;
&lt;br /&gt;
'''Known problems with thinning/thickening:''' (1) it is rather&lt;br /&gt;
slow; (2) it quickly eats memory; and (3) it is sometimes buggy&lt;br /&gt;
- thin calligraphic strokes may suddenly disappear or change&lt;br /&gt;
their shape drastically as you're Alt+stroking them. For (3), it&lt;br /&gt;
helps to undo the bad change and try again with less pressure on&lt;br /&gt;
the pen - if you do your thinning in several light touches&lt;br /&gt;
instead of one heavy press, usually you will be able to get the&lt;br /&gt;
desired result without the buggy behavior. In general, however,&lt;br /&gt;
all these problems stem from the livarot library that we use for&lt;br /&gt;
geometric manipulation of paths. Fortunately, livarot is&lt;br /&gt;
scheduled for replacement by lib2geom, a new library now in&lt;br /&gt;
development, so hopefully these issues will be addressed then.&lt;br /&gt;
&lt;br /&gt;
===Misc features===&lt;br /&gt;
&lt;br /&gt;
* For consistency with other drawing tools, drawing with '''Shift''' in Calligraphy tool automatically '''unions''' the newly created stroke with whatever paths were selected (and selects the result).  Thus, you can do a series of overlapping Shift+strokes to create one unioned path object instead of separate objects as before. &lt;br /&gt;
&lt;br /&gt;
* To facilitate changing the Width parameter, the Home/End keys in Calligraphy tool switch you to the minimum (1) and maximum (100) width, correspondingly. (This is in addition to the Left/Right arrow keys that change Width by 1; remember also that you can press Alt+X, type any width, and press Enter.)&lt;br /&gt;
&lt;br /&gt;
==Selector==&lt;br /&gt;
&lt;br /&gt;
* A new selection mode is available: '''selecting by touch'''. In this mode, you draw a freehand path across the objects; when you release mouse button, all objects that are touched by this path get selected. This mode is very convenient  in situations where you need to select objects so intermingled that selecting them by the rectangular rubberband is too difficult and so numerous that click-selecting them one by one is too tedious. &lt;br /&gt;
&lt;br /&gt;
:To activate selecting by touch, whenever you are drawing a rubberband rectangle, just press '''Alt''' to switch it to the touch mode. The rectangle will disappear and a red ''touch path'' will be shown instead. When dragging from an empty space, you can press '''Alt''' first and then start to drag to get the touch mode (note that your selection must be empty, otherwise Alt+dragging will move the selected objects instead). To start a touch selection from a point over an object, or to add to existing selection by touching, press '''Shift+Alt''' and then start to drag.&lt;br /&gt;
&lt;br /&gt;
* Horizontal/vertical flipping: So far, flipping a selection made it flip within its bounding box, so that the latter remained fixed. In the move/scale mode of the selector tool, this behaviour remains unchanged. However, in rotate/shear mode flipping now happens about an (imaginary) vertical/horizontal axis through the rotation center. This is very handy, since the latter can be freely dragged around and snaps to all kinds of objects if desired.&lt;br /&gt;
&lt;br /&gt;
==Node Tool:==&lt;br /&gt;
[sculpt profiles - bbyak]&lt;br /&gt;
&lt;br /&gt;
* If any of the nodes in the currently selected path is mouseovered, then horizontal/vertical flipping ('H' and 'V' keys), stepwise rotation ('[' and ']' keys) and scaling ('&amp;lt;' and '&amp;gt;' keys) now all use this specific node as center/axis. If there is no mouseovered node, the center of the bounding box is used instead (as is currently the case unconditionally). Nodes that are covered by one of their handles are also detected as mouseovered.&lt;br /&gt;
&lt;br /&gt;
==Text Tool:==&lt;br /&gt;
* [text toolbar - deadchip]&lt;br /&gt;
&lt;br /&gt;
=Snapping and grids=&lt;br /&gt;
&lt;br /&gt;
* '''Snapping behavior''' has been implemented or improved for drawing of new shapes, for dragging the nodes of existing shapes, for gradient handles, and for clones. Snapping of text baselines works again. Snapping distance is now set in screen pixels and is therefore independent of zoom. Furthermore, the bug where &amp;quot;node-to-node&amp;quot; snapping caused jerky movement of nodes is fixed; snapping while skewing has been implemented; any object snaps with its rotation axis (which can be arbitrarily moved and whose position is remembered for every object); the aspect ratio is correctly preserved while scaling with snapping turned on; all four boundingbox corners now snap instead of only the lower-left and upper-right; snapping while uniformly scaling has been improved. &lt;br /&gt;
&lt;br /&gt;
* The confusing &amp;quot;Default transformations origin&amp;quot; option is removed. Now Inkscape always uses the opposide edge of the object's bounding box as the transformation origin (though the bounding box itself can now be different, see next item).&lt;br /&gt;
&lt;br /&gt;
* A new preference option has been added to specify the kind of bounding box to be used (see Inkscape Preferences, Tools, Selector). You can choose between the visual bounding box (which takes into account the stroke width, markers, and blur margins; this is the default behavior) or geometric bounding box (which encloses only the path itself, disregarding stroke width). &lt;br /&gt;
&lt;br /&gt;
Grids:&lt;br /&gt;
&lt;br /&gt;
* a new tab in the document properties dialog, solely meant for grids; the former grid/guide tab is now solely for guides. I envision a list of guides there in the future, for easier deletion of guides etc.&lt;br /&gt;
* more than one grid can be active at the same time, although i am having trouble in finding a usefull case for this&lt;br /&gt;
* multiple views on the same document share the same grids, but the grid can be turned off for each view separately. For example: one could have an overview view without grid enabled. Duplicate that window and zoom in on some detail; then grids can be shown only for that view, and snapping will only happen in those views for which grids are enabled. (sorry i am not able to explain more clearly)&lt;br /&gt;
* grid information is now stored in SVG as a child of sodipodi:namedview. Can someone please make an extension that converts an old grid definition to the new format?&lt;br /&gt;
* axonometric grid (not yet snapping)&lt;br /&gt;
* dots instead of lines&lt;br /&gt;
&lt;br /&gt;
From developer perspective:&lt;br /&gt;
&lt;br /&gt;
* implementation of new grids is much easier now; subclassing CanvasGrid and adding an entry in the is enough. Have a peek at how the rectangular grid is implemented (CanvasXYGrid).&lt;br /&gt;
* note that there is no longer &amp;quot;the grid&amp;quot;, there might be several grids active now!&lt;br /&gt;
&lt;br /&gt;
[Future plans (i will not be working on this soon, due to GSoC Live effects!):&lt;br /&gt;
** possibility of enabling not all but a selection of grids for a view. Eg. when there are 4 grids defined in the document, only enable grid2 for a certain view.&lt;br /&gt;
** new grids!&lt;br /&gt;
** better snapping mechanism to enable snapping to intersections of guides&amp;amp;grids and grids&amp;amp;grids.&lt;br /&gt;
&lt;br /&gt;
A side effect of removal of old gridcode: apparantly the origin of the desktop rules used to be set to the origin of the grid. I find this strange: specifying a grid origin of (2,2) would have me think the origin would be at ruler location (2,2) instead of (0,0) as it is in 0.45.1.&lt;br /&gt;
I have commented the grid-origin correction to the ruler range, because now there is not a single grid anymore to correct it for. Isn't there a control somewhere to define the documents origin? Now the ruler origin is set to (0,0) -- johan]&lt;br /&gt;
&lt;br /&gt;
=Filters=&lt;br /&gt;
&lt;br /&gt;
==Blend modes==&lt;br /&gt;
  [kiirala]&lt;br /&gt;
&lt;br /&gt;
=Effects=&lt;br /&gt;
&lt;br /&gt;
* The new '''Render &amp;gt; Gear''' extension creates a [http://en.wikipedia.org/wiki/Gear mechanical gear] given the number of teeth, the circular pitch (in px units), and the pressure angle.&lt;br /&gt;
&lt;br /&gt;
* The new '''Render &amp;gt; [[Spirograph]]''' extension creates intricate mathematical curves akin to the classic [http://en.wikipedia.org/wiki/Spirograph mechanical Spirograph toy].&lt;br /&gt;
&lt;br /&gt;
*[barcode]&lt;br /&gt;
&lt;br /&gt;
*The '''Whirl''' extension uses the center of view as the center of whirl, so you don't have to enter the center coordinates numerically.&lt;br /&gt;
&lt;br /&gt;
*The '''Render &amp;gt; Grid''' extension has got an extended range of grid spacings, from 0.1 to 1000 px.&lt;br /&gt;
&lt;br /&gt;
*The '''Render &amp;gt; Function Plotter''' extension can now plot using polar coordinates.&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;
* The Export dialog automatically appends the '''.png''' extension to the export filename you specify. &lt;br /&gt;
&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;
[calligraphy: menus, tooltips; star; ...]&lt;br /&gt;
&lt;br /&gt;
Switched to stock GTK+ toolbars.&lt;br /&gt;
&lt;br /&gt;
Extra magic secret sauce added.&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;
== Saving window geometry globally ==&lt;br /&gt;
&lt;br /&gt;
Previously, window geometry (size and position of document windows) could only be saved into the document (so that each document stored its own window geometry). Now, a new option is added to save the geometry of the last used window to the preferences and apply this geometry to all new windows.  Thus, with the &amp;quot;Save geometry to preferences&amp;quot; option enabled, new windows will open with the shape of the most recent previous window.  This mode also remembers and restores the maximized/fullscreen state (unlike geometry saved to documents).&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, or apply more than one clippath/mask to an object). Now this limitation is removed; just select any single object and group it to get a single-object group. &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;
* The '''Tile Clones''' dialog now uses the object's defined '''rotation axis''' (which can be freely moved by Selector tool and which is saved separately for each object) for all rotations (including both symmetry rotations and the Rotation tab rotations), scales, and flips. This renders unnecessary the previous workarounds where you had to group an object with another transparent object to affect how it's rotated by the clone tiler. &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, Ctrl+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 all locked objects''' or '''unhide all 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;
* The list of folder shortcuts in the '''Open''' dialog includes the folder with Inkscape's SVG '''examples''' for easy access. Similarly, the '''Save''' dialog has a shortcut for the user's own '''templates''' dialog making it easy to save the current document as a template (if saved as &amp;lt;code&amp;gt;default.svg&amp;lt;/code&amp;gt;, it will be loaded every time you run Inkscape or create new document with Ctrl+N; with any other name, it will be added to the File &amp;gt; New submenu).&lt;br /&gt;
&lt;br /&gt;
* For time-intensive operations such as Paint Bucket and Simplify, the system's busy wait cursor is displayed to indicate to the user that Inkscape is actively working, and not frozen.&lt;br /&gt;
&lt;br /&gt;
* [statusbar updates: save, ...]&lt;br /&gt;
&lt;br /&gt;
* Several improvements in '''inkview''': busy cursor is shown while loading file, the button window stays on top and responds to keyboard shortcuts; several memleaks stopped and bugs fixed. The &amp;quot;slideshow mode&amp;quot; of the main inkscape application (-s or --slideshow command line option) is removed; use inkview instead.&lt;br /&gt;
&lt;br /&gt;
* In Document Metadata dialog, updated Creative Commons Licenses to version 3.0.&lt;br /&gt;
&lt;br /&gt;
=Notable bugfixes=&lt;br /&gt;
&lt;br /&gt;
These are bugfixes compared to 0.45.1; for a list of fixes in 0.45.1 compared to 0.45, see [[ReleaseNotes045|0.45.1 release notes]]&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;
* Inkscape now properly quotes &amp;lt;code&amp;gt;font-family&amp;lt;/code&amp;gt; values and therefore can use fonts with various nonalphanumeric characters in their names, which previously failed. &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;
* A regression in 0.45 caused crashes when undo or redo was attempted before the previous action could complete (e.g. pressing ctrl+z while you are still drawing a rectangle). This is now fixed.&lt;br /&gt;
&lt;br /&gt;
* Previously, if there was a single invalid property in a &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; attribute, the entire attribute was discarded, i.e. the object lost all styling. Now Inkscape's behavior is more compliant to the CSS specification: it ignores only the invalid property but reads in all the rest.&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;
* Master opacity did not apply to stroke markers as it should; fixed.&lt;br /&gt;
&lt;br /&gt;
* Creative Commons Public Domain Declaration URI points to right location now.&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>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Spirograph&amp;diff=15177</id>
		<title>Spirograph</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Spirograph&amp;diff=15177"/>
		<updated>2007-06-23T17:48:11Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The spirograph extension is a script which will generate Epitrochoid and Hypotrochoid in the same way as the Spirograph toy does.&lt;br /&gt;
[[Image:Spirograph_Samples.svg|Samples of the output of the spirograph extension]]&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Spirograph_Samples.svg&amp;diff=15175</id>
		<title>File:Spirograph Samples.svg</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Spirograph_Samples.svg&amp;diff=15175"/>
		<updated>2007-06-23T17:39:54Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: Samples of the output of the spirograph extension&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Samples of the output of the spirograph extension&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Spirograph&amp;diff=15173</id>
		<title>Spirograph</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Spirograph&amp;diff=15173"/>
		<updated>2007-06-23T17:38:18Z</updated>

		<summary type="html">&lt;p&gt;Joelholdsworth: Created&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The spirograph extension is a script which will generate Epitrochoid and Hypotrochoid in the same way as the Spirograph toy does.&lt;/div&gt;</summary>
		<author><name>Joelholdsworth</name></author>
	</entry>
</feed>