<?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=Mjwybrow</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=Mjwybrow"/>
	<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/Special:Contributions/Mjwybrow"/>
	<updated>2026-04-29T19:51:32Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.48&amp;diff=63781</id>
		<title>Release notes/0.48</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.48&amp;diff=63781"/>
		<updated>2010-08-09T02:17:31Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Connector Tool */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Inkscape 0.48==&lt;br /&gt;
'''(not released yet - [[AnnouncePlanning048]])'''&lt;br /&gt;
&lt;br /&gt;
==Release highlights==&lt;br /&gt;
&lt;br /&gt;
The release marks returning to shorter release cycles to speed up availability of new technologies often developed as part of Google Summer of Code projects.&lt;br /&gt;
&lt;br /&gt;
The highlights of this release are:&lt;br /&gt;
&lt;br /&gt;
* '''multipath''' editing&lt;br /&gt;
* improved text tool: subscript, superscript, numerical input for text kerning, tracking and more&lt;br /&gt;
* new '''Airbrush''' tool&lt;br /&gt;
* '''LaTeX export''' with PDF/PS/EPS&lt;br /&gt;
* '''JessyInk''' extension to create presentations&lt;br /&gt;
* numerous bugfixes&lt;br /&gt;
&lt;br /&gt;
==Tools==&lt;br /&gt;
&lt;br /&gt;
===Node Tool===&lt;br /&gt;
&lt;br /&gt;
During Google Summer of Code 2009, the node tool underwent an extensive rewrite. Along with more maintainable code, it brings several new features.&lt;br /&gt;
&lt;br /&gt;
; '''Multi-path editing'''&lt;br /&gt;
: Any number of paths can be selected for node editing at once.&lt;br /&gt;
; '''Improved clippath / mask editing'''&lt;br /&gt;
: The clipping path or mask of an object can be edited at the same time as the object. The clip / mask editing buttons in the node tool are now toggle buttons, rather than mode switch buttons. If the object is transformed after applying a clipping path, the clipping path is no longer offset when editing it in the node tool. If the clipping path is a group, all paths in the group can be edited simultaneously.&lt;br /&gt;
; '''Improved node join'''&lt;br /&gt;
: It is now possible to join nodes from different paths. More than two endnodes can be joined at once—the distances between nodes will be used to determine which nodes to join, with the closest pairs being joined first. When nothing can be joined (less than 2 endnodes in selecion), each selected stretch of nodes will be joined into one node.&lt;br /&gt;
; '''Improved segment join'''&lt;br /&gt;
: It is now possible to create a segment between endnodes from different paths. More than one segment can be created at once—the distances between nodes will be used to determine which nodes to join with a segment, with the closest pairs being joined first. When nothing can be joined (less than 2 endnodes in selection), each selected stretch of nodes will have its middle nodes removed, leaving only one segment.&lt;br /&gt;
; '''Node transforms'''&lt;br /&gt;
: It is now possible to transform the nodes using the mouse and transformation handles similar to those in the selector tool. They can be turned on and off using the button in the node toolbar. When the handles are visible, clicking on a selected node will switch between scaling and rotation mode, instead of selecting only that node. You can also use Shift+H to switch the mode. All other operations work normally when transform handles are shown.&lt;br /&gt;
; '''Path direction tools'''&lt;br /&gt;
: Little harpoons are optionally shown in the middle of each segment, visualizing the direction of the path. This is useful when preparing a guide path for text, setting markers, and debugging extensions and Inkscape itself. The &amp;quot;Reverse&amp;quot; command (Shift+R) reverses the direction of subpaths that have some selected nodes, or all subpaths if the node selection is empty.&lt;br /&gt;
; '''Customizable path update'''&lt;br /&gt;
: Two new preferences allow you to specify when the path and its outline should be updated. Turning off live update of paths will improve performance for complex drawings.&lt;br /&gt;
; '''Improved tips'''&lt;br /&gt;
: The tips displayed for nodes and handles are more concise and affected by what modifier keys are pressed.&lt;br /&gt;
&lt;br /&gt;
For a detailed feature comparison between the old and new tool, see [[GSoC2009 Node Tool Rewrite]].&lt;br /&gt;
&lt;br /&gt;
===Text Tool===&lt;br /&gt;
&lt;br /&gt;
The text toolbar has been overhauled with many bug fixes and improvements. One can now directly access a number of text layout parameters:&lt;br /&gt;
&lt;br /&gt;
*&amp;quot;Line Spacing:&amp;quot; Distance between baselines of adjacent lines.&lt;br /&gt;
*&amp;quot;Letter Spacing:&amp;quot; Spacing between letters.&lt;br /&gt;
*&amp;quot;Word Spacing:&amp;quot; Spacing between words.&lt;br /&gt;
*&amp;quot;Horizontal kerning&amp;quot;&lt;br /&gt;
*&amp;quot;Vertical shift&amp;quot;&lt;br /&gt;
*&amp;quot;Character rotation&amp;quot; &lt;br /&gt;
&lt;br /&gt;
In addition, support has been added for superscripts and subscripts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This work was sponsored in part by Inkscape users through LinuxFund.org.&lt;br /&gt;
&lt;br /&gt;
===Spray Tool===&lt;br /&gt;
You first need to select one or several items, then select the Spray Tool. To spray, click on the canvas, then move the mouse or scroll the mouse wheel.&lt;br /&gt;
&lt;br /&gt;
Three modes are available.&lt;br /&gt;
&lt;br /&gt;
*''Spray Copy mode :'' each sprayed item is independent from the others.&lt;br /&gt;
*''Spray Clone mode :'' each sprayed item is a clone of the selected item. Changing the properties of the original item will affect the clones.&lt;br /&gt;
*''Spray Single Path Mode :'' everything you spray is in a single path. You may need to convert your item into a path to make it work properly.&lt;br /&gt;
&lt;br /&gt;
'''Spray options'''&lt;br /&gt;
&lt;br /&gt;
*Amount : spray more or less items.&lt;br /&gt;
&lt;br /&gt;
*Rotation : randomly rotates items around the original rotation value. &lt;br /&gt;
*Scale : randomly scales items around the original scale value. &lt;br /&gt;
&lt;br /&gt;
*Scatter : low values to spray items under the cursor, high values for a more uniform repartition over the spray zone.&lt;br /&gt;
*Focus : items are sprayed following a ring. This parameters modifies the radius of the circle. Default at 0 to spray a spot. &lt;br /&gt;
&lt;br /&gt;
Use keys ↑ and ↓ to control the size of of sprayed items. Use ← and → to set the width of the cursor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Spray tool is a perfect match for the transforming, duplicating, and deleting modes of the Tweak tool.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Live Path Effects (LPE)==&lt;br /&gt;
&lt;br /&gt;
===Node tool changes===&lt;br /&gt;
The new node tool means slightly different LPE editing too. Such as ...&lt;br /&gt;
&lt;br /&gt;
===New effects===&lt;br /&gt;
&lt;br /&gt;
* '''Extrude''' Similar to the Python extension &lt;br /&gt;
--&amp;gt;&lt;br /&gt;
===Connector Tool===&lt;br /&gt;
&lt;br /&gt;
The connector tool can now produce orthogonal connectors (those made up from vertical and horizontal line segments, e.g. as seen in circuit diagrams).  There is an additional button on the connector toolbar that can toggle selected connector types between &amp;quot;polyline&amp;quot; and &amp;quot;orthogonal&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Also included are several bug and crash fixes to the connector routing code.&lt;br /&gt;
&lt;br /&gt;
==Import/Export==&lt;br /&gt;
===Improved bitmap image import===&lt;br /&gt;
&lt;br /&gt;
Bitmaps are now always embedded when pixel data is pasted or dragged into Inkscape's window (for example when copying parts of an image from GIMP). Files with automatically generated names like &amp;quot;inkscape_pasted_image_...&amp;quot; are no longer created in the document directory. When importing or opening bitmap images, a dialog is displayed that asks whether you want to link the image or embed it.&lt;br /&gt;
&lt;br /&gt;
===New LaTeX export for PDF/EPS/PS===&lt;br /&gt;
&lt;br /&gt;
Similar to GNUPlot's `epslatex' output terminal and Xfig's combined PDF/LaTeX output, Inkscape can now export graphics to PDF with an accompanying LaTeX file that overlays the text over the PDF when inputted in LaTeX. The image's text is typeset by LaTeX, so for example mathematical expressions are rendered correctly, and all text will be in the font and style of the LaTeX document (even when changing the document's font afterwards).&lt;br /&gt;
&lt;br /&gt;
''(the following description assumes export to PDF, but will work the same for EPS and PS)''&lt;br /&gt;
Two files will be created: a PDF file containing all graphics, without text; and a LaTeX file with the same name (with extension &amp;quot;.pdf_tex&amp;quot;), containing all text, and code to include the PDF and overlay the text. To include the exported image in LaTeX, one writes&lt;br /&gt;
&lt;br /&gt;
  \begin{figure} &lt;br /&gt;
    \centering&lt;br /&gt;
    \def\svgwidth{\columnwidth} % sets the image width, this is optional&lt;br /&gt;
    \input{image.pdf_tex}&lt;br /&gt;
  \end{figure}&lt;br /&gt;
&lt;br /&gt;
A more thorough description of how to use the new feature (and automate the exporting/inclusion of the image in LaTeX) is given in this document: [http://tug.ctan.org/tex-archive/info/svg-inkscape/ svg-inkscape on CTAN].&lt;br /&gt;
&lt;br /&gt;
====From the GUI====&lt;br /&gt;
When exporting to PDF/EPS/PS from Inkscape's GUI, the usual dialog pops up after selecting to which PDF/EPS/PS file to export to. In this dialog, you can find the PDF/EPS/PS+LaTeX option.&lt;br /&gt;
&lt;br /&gt;
====Command line option====&lt;br /&gt;
When exporting to PDF/EPS/PS from the command line, adding --export-latex will turn the LaTeX export on. For example&lt;br /&gt;
&lt;br /&gt;
  inkscape image.svg -z -D --export-pdf=image.pdf --export-latex&lt;br /&gt;
&lt;br /&gt;
===Fixed PDF/EPS/PS export of non-integer sized documents===&lt;br /&gt;
The long standing [https://bugs.launchpad.net/inkscape/+bug/168275 bug 168275] has now been fixed. Documents with a non-integer height or width are now correctly exported to PDF, EPS and PS.&lt;br /&gt;
&lt;br /&gt;
==Extensions==&lt;br /&gt;
===New and improved extensions===&lt;br /&gt;
&lt;br /&gt;
* The new '''Generate from Path &amp;gt; Voronoi Pattern''' extension creates a random pattern of Voronoi cells. The pattern will be accessible from the Fill and Stroke dialog. The pattern can be made to be smooth at the edges by choosing a positive border, or sparse at the edges by using a negative border.&lt;br /&gt;
* The new '''Render &amp;gt; Wireframe Sphere''' extension draws the globe as a collection of ellipses representing a sphere's latitude and longitude lines. The number of lines is adjustable, as well as the tilt and rotation. There is an option to hide the lines at the back of the sphere.&lt;br /&gt;
* The new '''Render &amp;gt; Barcode - Datamatrix''' extension renders a DataMatrix 2D barcode, as specified in BS ISO/IEC 16022:2006. The number of rows and columns of the DataMatrix is adjustable. If more data is given than can be contained in one DataMatrix, more than one DataMatrix will be produced.&lt;br /&gt;
* The new '''Modify Path &amp;gt; Pixelsnap''' extension aligns rectangles and paths to pixel boundaries, to create sharp web and digital graphics.&lt;br /&gt;
* The new '''Color &amp;gt; Black and White''' extension turns the selection colors into black and white.&lt;br /&gt;
* The new '''Text &amp;gt; Split Text''' extension splits texts into different lines, words or letters.&lt;br /&gt;
* The new '''JessyInk''' extension for creating presentations viewable in browsers, See https://launchpad.net/jessyink.&lt;br /&gt;
* The new '''Web &amp;gt; Slicer''' extensions to slice web layouts into multiple images and help the HTML+CSS creation.&lt;br /&gt;
* '''Images &amp;gt; Extract Image''': all relative paths (or filenames without path) are now relative to the user's home directory.&lt;br /&gt;
* '''Visualize Path &amp;gt; Measure Path''': new option to calculate area.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ==Filters== --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SVG Support==&lt;br /&gt;
&lt;br /&gt;
The baseline-shift attribute is supported! The Text toolbar uses the &amp;quot;super&amp;quot; and &amp;quot;sub&amp;quot; values for implementing superscripts and subscripts. At the moment there is no other GUI access to the attribute.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ==Editing Aids== --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Other features==&lt;br /&gt;
&lt;br /&gt;
* Arch paper sizes are added in the Document Properties dialog&lt;br /&gt;
* Displaying the '''font samples''' in the drop-down list of the Text tool is now optional. In Inkscape Preferences, go to Tools, Text, and uncheck &amp;quot;Show font samples in the drop-down list&amp;quot; if you don't want to see the samples. This will speed up displaying the list the first time you open it&lt;br /&gt;
* Items in the File &amp;gt; Open Recent menu, when mouseovered, show tooltips with the full URI of each file in the list. Also, files that are in the list but are missing or unaccessible are automatically hidden&lt;br /&gt;
* When a flowed text is truncated (i.e. the frame is too small for the entire text), the frame is shown red, and the statusbar hint includes '''[truncated]'''. You need to resize the frame to see the truncated end of the text. Analogously, if the path of a text-on-path object is too short to display the entire text, the statusbar will report it as '''[truncated]'''&lt;br /&gt;
* Clicking the text alignment buttons (Left, Center, Right) on the Text tool's controls bar now does not let the text jump: it stays within the same bounding box as before, only changing the alignment&lt;br /&gt;
* The position of text's baseline anchor (the small square) is now dependent of the alignment: for left-aligned text it is, as before, at the left end, for centered text in the middle, and for the right-aligned text it is at the right end of the text's first line (this is for horizontal text; for vertical, it is correspondingly at top, middle, or bottom of the first column). This allows snapping, aligning and distributing of text relative the side to which it's aligned&lt;br /&gt;
* Snapping of gradient handles has been improved and now behaves similar to the snapping of all other handles and objects&lt;br /&gt;
* When snapping to a bounding box, that bounding box will be shown for a moment (tied to the snap indicator)&lt;br /&gt;
* If a new object is being created on the canvas with snapping enabled, then a snap indicator will also be shown for the first point&lt;br /&gt;
* There are now options for Margins when resizing a document to a selection or the drawing in Document Properties&lt;br /&gt;
* Preferences have been added to allow automatic grouping when setting a Clippath or Mask&lt;br /&gt;
* Bitmap copies created using the Make a Bitmap Copy command (Alt+B) are now embedded. Previously they were saved in an automatically generated file and linked&lt;br /&gt;
* The file preview size limit (in the File &amp;gt; Open and File &amp;gt; Import dialog box) is now 10 MB (1.3 MB in 0.47)&lt;br /&gt;
* Blur, transformation, and layer visibility and opacity support in XAML export&lt;br /&gt;
&lt;br /&gt;
===Extended input device configuration===&lt;br /&gt;
&lt;br /&gt;
The stock Input Devices dialog has been replaced with a completely redone version that provides a more useful representation of settings. It also contains a simple area for testing different inputs of different devices.&lt;br /&gt;
&lt;br /&gt;
Additionally hardware setup itself has been separated from general settings to allow for easier dynamic switching of settings appropriate to the task at hand.&lt;br /&gt;
&lt;br /&gt;
==User interface==&lt;br /&gt;
&lt;br /&gt;
===Adaptive UI===&lt;br /&gt;
(In progress [[User:JonCruz|JonCruz]])&lt;br /&gt;
&lt;br /&gt;
===Custom Swatches===&lt;br /&gt;
&lt;br /&gt;
Custom swatches can be created and used on a per-document basis. An &amp;quot;Auto&amp;quot; color palette will track swatches in the current document and allow them to be set and used. The use is &amp;quot;live&amp;quot; with changes to the swatch being applied automatically to all objects set to it. The swatches can also be gradients and not just simple colors.&lt;br /&gt;
&lt;br /&gt;
===New cursors in Selector===&lt;br /&gt;
&lt;br /&gt;
Selector tool has a new mouse cursor (arrow with an open hand) for when your mouse is over a selectable object, and another (arrow with clinched hand) for when you're dragging an object. This improves precision of selection and UI consistency (previously, the mouse cursor over a selectable object was different across platforms, e.g. hand icon on Linux or four-way arrow on Windows).&lt;br /&gt;
&lt;br /&gt;
===Translations===&lt;br /&gt;
&lt;br /&gt;
New Farsi (fa) and Telugu (te_IN) translations (in progress).&lt;br /&gt;
&lt;br /&gt;
===Known Issues===&lt;br /&gt;
&lt;br /&gt;
====Floating Toolbars====&lt;br /&gt;
&lt;br /&gt;
Floating toolbars had been found to present problems on a few window managers. By default floating has been turned off in response on MS Windows and the default KDE window manager. To re-enable, the &amp;lt;code&amp;gt;preferences.xml&amp;lt;/code&amp;gt; file has an &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; group called &amp;lt;code&amp;gt;workarounds&amp;lt;/code&amp;gt; with a setting called &amp;lt;code&amp;gt;floatallowed&amp;lt;/code&amp;gt;. Setting this to &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; will re-enable floating on these problematic systems. Valid values are &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Tutorials==&lt;br /&gt;
&lt;br /&gt;
* SVG files are now optimized with Scour (filesize reduced by 40%).&lt;br /&gt;
* Bitstream Vera fonts replaced with generic sans and serif fonts (solves many font substitution issues).&lt;br /&gt;
* New Interpolate tutorial (Help &amp;gt; Tutorials &amp;gt; Inkscape: Interpolate).&lt;br /&gt;
* New translations in Belarussian, Dutch, Farsi and Indonesian.&lt;br /&gt;
&lt;br /&gt;
==Windows port improvements==&lt;br /&gt;
&lt;br /&gt;
The quality of the Windows port was improved substantially.&lt;br /&gt;
&lt;br /&gt;
===Command line interface===&lt;br /&gt;
&lt;br /&gt;
Command line functionality on Windows is now on par with Unix.&lt;br /&gt;
&lt;br /&gt;
'''Single executable'''&lt;br /&gt;
:It's no longer needed to compile Inkscape with special flags or use third-party wrapper executables to see the command line output. Just type &amp;quot;inkscape&amp;quot; (without any extension) in the command prompt. This is made possible by a command-line wrapper named &amp;lt;tt&amp;gt;inkscape.com&amp;lt;/tt&amp;gt;.&lt;br /&gt;
'''Relative paths'''&lt;br /&gt;
:You can now specify relative paths to files in options like &amp;lt;tt&amp;gt;--export-png&amp;lt;/tt&amp;gt;. Commands like this will now execute correctly:&lt;br /&gt;
 C:\svg&amp;gt; inkscape tiger.svgz --export-png=tiger.png&lt;br /&gt;
&lt;br /&gt;
===Stability improvements===&lt;br /&gt;
&lt;br /&gt;
Thanks to library updates, Inkscape should no longer randomly crash when editing documents. Most of them were caused by a GDI resource leak in Pango. It will also no longer crash when trying to import a corrupted image.&lt;br /&gt;
&lt;br /&gt;
===Unicode compatibility===&lt;br /&gt;
&lt;br /&gt;
Inkscape will now work correctly regardless of installation path. Previously, it was unusable when installed into a directory that contains characters not representable in the system codepage (icons were not shown in the UI, and no language files were found).&lt;br /&gt;
&lt;br /&gt;
==Notable bug fixes==&lt;br /&gt;
&lt;br /&gt;
* The 3D tool no longer inserts an inkscape:perspective element into SVG when it is not needed (i.e. when the document has no 3D box objects).&lt;br /&gt;
* Wrong clippaths and masks with cyclic recursion (i.e. clippaths or masks that refer to themselves via other clippaths or masks) no longer crash Inkscape.&lt;br /&gt;
* Default unit setting for the XY grid is now respected when creating a new grid.&lt;br /&gt;
* Pasting Live Path Effect stacks now works. It adds the stack of the copied object to the end of the LPE stack (if present) of the object it is pasted to.&lt;br /&gt;
* The accuracy of the bounding box calculation has been significantly improved when converting objects to patterns or markers. This should make it much easier to create patterns where the tiles should 'connect' to each other, e.g. a tile with a plus sign to create a hatched pattern.&lt;br /&gt;
* The default font has been changed to ''Sans'', eliminating problems when the former default font, ''Bitstream Vera Sans'', is not available. (''Sans'' is a Pango pseudo-font.)&lt;br /&gt;
* The Text toolbar bold and italic/oblique buttons are more likely to work as expected.&lt;br /&gt;
* Bitmaps with transparency are now shown (and exported) correctly.&lt;br /&gt;
* The emergency save function no longer mangles the file names (which used to make it fail quite often).&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
==Previous releases==&lt;br /&gt;
&lt;br /&gt;
* [[ReleaseNotes047]]&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>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.48&amp;diff=63775</id>
		<title>Release notes/0.48</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.48&amp;diff=63775"/>
		<updated>2010-08-09T02:16:53Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: Connector tool details&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Inkscape 0.48==&lt;br /&gt;
'''(not released yet - [[AnnouncePlanning048]])'''&lt;br /&gt;
&lt;br /&gt;
==Release highlights==&lt;br /&gt;
&lt;br /&gt;
The release marks returning to shorter release cycles to speed up availability of new technologies often developed as part of Google Summer of Code projects.&lt;br /&gt;
&lt;br /&gt;
The highlights of this release are:&lt;br /&gt;
&lt;br /&gt;
* '''multipath''' editing&lt;br /&gt;
* improved text tool: subscript, superscript, numerical input for text kerning, tracking and more&lt;br /&gt;
* new '''Airbrush''' tool&lt;br /&gt;
* '''LaTeX export''' with PDF/PS/EPS&lt;br /&gt;
* '''JessyInk''' extension to create presentations&lt;br /&gt;
* numerous bugfixes&lt;br /&gt;
&lt;br /&gt;
==Tools==&lt;br /&gt;
&lt;br /&gt;
===Node Tool===&lt;br /&gt;
&lt;br /&gt;
During Google Summer of Code 2009, the node tool underwent an extensive rewrite. Along with more maintainable code, it brings several new features.&lt;br /&gt;
&lt;br /&gt;
; '''Multi-path editing'''&lt;br /&gt;
: Any number of paths can be selected for node editing at once.&lt;br /&gt;
; '''Improved clippath / mask editing'''&lt;br /&gt;
: The clipping path or mask of an object can be edited at the same time as the object. The clip / mask editing buttons in the node tool are now toggle buttons, rather than mode switch buttons. If the object is transformed after applying a clipping path, the clipping path is no longer offset when editing it in the node tool. If the clipping path is a group, all paths in the group can be edited simultaneously.&lt;br /&gt;
; '''Improved node join'''&lt;br /&gt;
: It is now possible to join nodes from different paths. More than two endnodes can be joined at once—the distances between nodes will be used to determine which nodes to join, with the closest pairs being joined first. When nothing can be joined (less than 2 endnodes in selecion), each selected stretch of nodes will be joined into one node.&lt;br /&gt;
; '''Improved segment join'''&lt;br /&gt;
: It is now possible to create a segment between endnodes from different paths. More than one segment can be created at once—the distances between nodes will be used to determine which nodes to join with a segment, with the closest pairs being joined first. When nothing can be joined (less than 2 endnodes in selection), each selected stretch of nodes will have its middle nodes removed, leaving only one segment.&lt;br /&gt;
; '''Node transforms'''&lt;br /&gt;
: It is now possible to transform the nodes using the mouse and transformation handles similar to those in the selector tool. They can be turned on and off using the button in the node toolbar. When the handles are visible, clicking on a selected node will switch between scaling and rotation mode, instead of selecting only that node. You can also use Shift+H to switch the mode. All other operations work normally when transform handles are shown.&lt;br /&gt;
; '''Path direction tools'''&lt;br /&gt;
: Little harpoons are optionally shown in the middle of each segment, visualizing the direction of the path. This is useful when preparing a guide path for text, setting markers, and debugging extensions and Inkscape itself. The &amp;quot;Reverse&amp;quot; command (Shift+R) reverses the direction of subpaths that have some selected nodes, or all subpaths if the node selection is empty.&lt;br /&gt;
; '''Customizable path update'''&lt;br /&gt;
: Two new preferences allow you to specify when the path and its outline should be updated. Turning off live update of paths will improve performance for complex drawings.&lt;br /&gt;
; '''Improved tips'''&lt;br /&gt;
: The tips displayed for nodes and handles are more concise and affected by what modifier keys are pressed.&lt;br /&gt;
&lt;br /&gt;
For a detailed feature comparison between the old and new tool, see [[GSoC2009 Node Tool Rewrite]].&lt;br /&gt;
&lt;br /&gt;
===Text Tool===&lt;br /&gt;
&lt;br /&gt;
The text toolbar has been overhauled with many bug fixes and improvements. One can now directly access a number of text layout parameters:&lt;br /&gt;
&lt;br /&gt;
*&amp;quot;Line Spacing:&amp;quot; Distance between baselines of adjacent lines.&lt;br /&gt;
*&amp;quot;Letter Spacing:&amp;quot; Spacing between letters.&lt;br /&gt;
*&amp;quot;Word Spacing:&amp;quot; Spacing between words.&lt;br /&gt;
*&amp;quot;Horizontal kerning&amp;quot;&lt;br /&gt;
*&amp;quot;Vertical shift&amp;quot;&lt;br /&gt;
*&amp;quot;Character rotation&amp;quot; &lt;br /&gt;
&lt;br /&gt;
In addition, support has been added for superscripts and subscripts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This work was sponsored in part by Inkscape users through LinuxFund.org.&lt;br /&gt;
&lt;br /&gt;
===Spray Tool===&lt;br /&gt;
You first need to select one or several items, then select the Spray Tool. To spray, click on the canvas, then move the mouse or scroll the mouse wheel.&lt;br /&gt;
&lt;br /&gt;
Three modes are available.&lt;br /&gt;
&lt;br /&gt;
*''Spray Copy mode :'' each sprayed item is independent from the others.&lt;br /&gt;
*''Spray Clone mode :'' each sprayed item is a clone of the selected item. Changing the properties of the original item will affect the clones.&lt;br /&gt;
*''Spray Single Path Mode :'' everything you spray is in a single path. You may need to convert your item into a path to make it work properly.&lt;br /&gt;
&lt;br /&gt;
'''Spray options'''&lt;br /&gt;
&lt;br /&gt;
*Amount : spray more or less items.&lt;br /&gt;
&lt;br /&gt;
*Rotation : randomly rotates items around the original rotation value. &lt;br /&gt;
*Scale : randomly scales items around the original scale value. &lt;br /&gt;
&lt;br /&gt;
*Scatter : low values to spray items under the cursor, high values for a more uniform repartition over the spray zone.&lt;br /&gt;
*Focus : items are sprayed following a ring. This parameters modifies the radius of the circle. Default at 0 to spray a spot. &lt;br /&gt;
&lt;br /&gt;
Use keys ↑ and ↓ to control the size of of sprayed items. Use ← and → to set the width of the cursor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Spray tool is a perfect match for the transforming, duplicating, and deleting modes of the Tweak tool.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Live Path Effects (LPE)==&lt;br /&gt;
&lt;br /&gt;
===Node tool changes===&lt;br /&gt;
The new node tool means slightly different LPE editing too. Such as ...&lt;br /&gt;
&lt;br /&gt;
===New effects===&lt;br /&gt;
&lt;br /&gt;
* '''Extrude''' Similar to the Python extension &lt;br /&gt;
--&amp;gt;&lt;br /&gt;
===Connector Tool===&lt;br /&gt;
&lt;br /&gt;
The connector tool can now route orthogonal connectors (those made up from vertical and horizontal line segments, e.g. as seen in circuit diagrams).  There is an additional button on the connector toolbar that can toggle selected connector types between &amp;quot;polyline&amp;quot; and &amp;quot;orthogonal&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Also included are several bug and crash fixes to the connector routing code.&lt;br /&gt;
&lt;br /&gt;
==Import/Export==&lt;br /&gt;
===Improved bitmap image import===&lt;br /&gt;
&lt;br /&gt;
Bitmaps are now always embedded when pixel data is pasted or dragged into Inkscape's window (for example when copying parts of an image from GIMP). Files with automatically generated names like &amp;quot;inkscape_pasted_image_...&amp;quot; are no longer created in the document directory. When importing or opening bitmap images, a dialog is displayed that asks whether you want to link the image or embed it.&lt;br /&gt;
&lt;br /&gt;
===New LaTeX export for PDF/EPS/PS===&lt;br /&gt;
&lt;br /&gt;
Similar to GNUPlot's `epslatex' output terminal and Xfig's combined PDF/LaTeX output, Inkscape can now export graphics to PDF with an accompanying LaTeX file that overlays the text over the PDF when inputted in LaTeX. The image's text is typeset by LaTeX, so for example mathematical expressions are rendered correctly, and all text will be in the font and style of the LaTeX document (even when changing the document's font afterwards).&lt;br /&gt;
&lt;br /&gt;
''(the following description assumes export to PDF, but will work the same for EPS and PS)''&lt;br /&gt;
Two files will be created: a PDF file containing all graphics, without text; and a LaTeX file with the same name (with extension &amp;quot;.pdf_tex&amp;quot;), containing all text, and code to include the PDF and overlay the text. To include the exported image in LaTeX, one writes&lt;br /&gt;
&lt;br /&gt;
  \begin{figure} &lt;br /&gt;
    \centering&lt;br /&gt;
    \def\svgwidth{\columnwidth} % sets the image width, this is optional&lt;br /&gt;
    \input{image.pdf_tex}&lt;br /&gt;
  \end{figure}&lt;br /&gt;
&lt;br /&gt;
A more thorough description of how to use the new feature (and automate the exporting/inclusion of the image in LaTeX) is given in this document: [http://tug.ctan.org/tex-archive/info/svg-inkscape/ svg-inkscape on CTAN].&lt;br /&gt;
&lt;br /&gt;
====From the GUI====&lt;br /&gt;
When exporting to PDF/EPS/PS from Inkscape's GUI, the usual dialog pops up after selecting to which PDF/EPS/PS file to export to. In this dialog, you can find the PDF/EPS/PS+LaTeX option.&lt;br /&gt;
&lt;br /&gt;
====Command line option====&lt;br /&gt;
When exporting to PDF/EPS/PS from the command line, adding --export-latex will turn the LaTeX export on. For example&lt;br /&gt;
&lt;br /&gt;
  inkscape image.svg -z -D --export-pdf=image.pdf --export-latex&lt;br /&gt;
&lt;br /&gt;
===Fixed PDF/EPS/PS export of non-integer sized documents===&lt;br /&gt;
The long standing [https://bugs.launchpad.net/inkscape/+bug/168275 bug 168275] has now been fixed. Documents with a non-integer height or width are now correctly exported to PDF, EPS and PS.&lt;br /&gt;
&lt;br /&gt;
==Extensions==&lt;br /&gt;
===New and improved extensions===&lt;br /&gt;
&lt;br /&gt;
* The new '''Generate from Path &amp;gt; Voronoi Pattern''' extension creates a random pattern of Voronoi cells. The pattern will be accessible from the Fill and Stroke dialog. The pattern can be made to be smooth at the edges by choosing a positive border, or sparse at the edges by using a negative border.&lt;br /&gt;
* The new '''Render &amp;gt; Wireframe Sphere''' extension draws the globe as a collection of ellipses representing a sphere's latitude and longitude lines. The number of lines is adjustable, as well as the tilt and rotation. There is an option to hide the lines at the back of the sphere.&lt;br /&gt;
* The new '''Render &amp;gt; Barcode - Datamatrix''' extension renders a DataMatrix 2D barcode, as specified in BS ISO/IEC 16022:2006. The number of rows and columns of the DataMatrix is adjustable. If more data is given than can be contained in one DataMatrix, more than one DataMatrix will be produced.&lt;br /&gt;
* The new '''Modify Path &amp;gt; Pixelsnap''' extension aligns rectangles and paths to pixel boundaries, to create sharp web and digital graphics.&lt;br /&gt;
* The new '''Color &amp;gt; Black and White''' extension turns the selection colors into black and white.&lt;br /&gt;
* The new '''Text &amp;gt; Split Text''' extension splits texts into different lines, words or letters.&lt;br /&gt;
* The new '''JessyInk''' extension for creating presentations viewable in browsers, See https://launchpad.net/jessyink.&lt;br /&gt;
* The new '''Web &amp;gt; Slicer''' extensions to slice web layouts into multiple images and help the HTML+CSS creation.&lt;br /&gt;
* '''Images &amp;gt; Extract Image''': all relative paths (or filenames without path) are now relative to the user's home directory.&lt;br /&gt;
* '''Visualize Path &amp;gt; Measure Path''': new option to calculate area.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ==Filters== --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SVG Support==&lt;br /&gt;
&lt;br /&gt;
The baseline-shift attribute is supported! The Text toolbar uses the &amp;quot;super&amp;quot; and &amp;quot;sub&amp;quot; values for implementing superscripts and subscripts. At the moment there is no other GUI access to the attribute.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ==Editing Aids== --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Other features==&lt;br /&gt;
&lt;br /&gt;
* Arch paper sizes are added in the Document Properties dialog&lt;br /&gt;
* Displaying the '''font samples''' in the drop-down list of the Text tool is now optional. In Inkscape Preferences, go to Tools, Text, and uncheck &amp;quot;Show font samples in the drop-down list&amp;quot; if you don't want to see the samples. This will speed up displaying the list the first time you open it&lt;br /&gt;
* Items in the File &amp;gt; Open Recent menu, when mouseovered, show tooltips with the full URI of each file in the list. Also, files that are in the list but are missing or unaccessible are automatically hidden&lt;br /&gt;
* When a flowed text is truncated (i.e. the frame is too small for the entire text), the frame is shown red, and the statusbar hint includes '''[truncated]'''. You need to resize the frame to see the truncated end of the text. Analogously, if the path of a text-on-path object is too short to display the entire text, the statusbar will report it as '''[truncated]'''&lt;br /&gt;
* Clicking the text alignment buttons (Left, Center, Right) on the Text tool's controls bar now does not let the text jump: it stays within the same bounding box as before, only changing the alignment&lt;br /&gt;
* The position of text's baseline anchor (the small square) is now dependent of the alignment: for left-aligned text it is, as before, at the left end, for centered text in the middle, and for the right-aligned text it is at the right end of the text's first line (this is for horizontal text; for vertical, it is correspondingly at top, middle, or bottom of the first column). This allows snapping, aligning and distributing of text relative the side to which it's aligned&lt;br /&gt;
* Snapping of gradient handles has been improved and now behaves similar to the snapping of all other handles and objects&lt;br /&gt;
* When snapping to a bounding box, that bounding box will be shown for a moment (tied to the snap indicator)&lt;br /&gt;
* If a new object is being created on the canvas with snapping enabled, then a snap indicator will also be shown for the first point&lt;br /&gt;
* There are now options for Margins when resizing a document to a selection or the drawing in Document Properties&lt;br /&gt;
* Preferences have been added to allow automatic grouping when setting a Clippath or Mask&lt;br /&gt;
* Bitmap copies created using the Make a Bitmap Copy command (Alt+B) are now embedded. Previously they were saved in an automatically generated file and linked&lt;br /&gt;
* The file preview size limit (in the File &amp;gt; Open and File &amp;gt; Import dialog box) is now 10 MB (1.3 MB in 0.47)&lt;br /&gt;
* Blur, transformation, and layer visibility and opacity support in XAML export&lt;br /&gt;
&lt;br /&gt;
===Extended input device configuration===&lt;br /&gt;
&lt;br /&gt;
The stock Input Devices dialog has been replaced with a completely redone version that provides a more useful representation of settings. It also contains a simple area for testing different inputs of different devices.&lt;br /&gt;
&lt;br /&gt;
Additionally hardware setup itself has been separated from general settings to allow for easier dynamic switching of settings appropriate to the task at hand.&lt;br /&gt;
&lt;br /&gt;
==User interface==&lt;br /&gt;
&lt;br /&gt;
===Adaptive UI===&lt;br /&gt;
(In progress [[User:JonCruz|JonCruz]])&lt;br /&gt;
&lt;br /&gt;
===Custom Swatches===&lt;br /&gt;
&lt;br /&gt;
Custom swatches can be created and used on a per-document basis. An &amp;quot;Auto&amp;quot; color palette will track swatches in the current document and allow them to be set and used. The use is &amp;quot;live&amp;quot; with changes to the swatch being applied automatically to all objects set to it. The swatches can also be gradients and not just simple colors.&lt;br /&gt;
&lt;br /&gt;
===New cursors in Selector===&lt;br /&gt;
&lt;br /&gt;
Selector tool has a new mouse cursor (arrow with an open hand) for when your mouse is over a selectable object, and another (arrow with clinched hand) for when you're dragging an object. This improves precision of selection and UI consistency (previously, the mouse cursor over a selectable object was different across platforms, e.g. hand icon on Linux or four-way arrow on Windows).&lt;br /&gt;
&lt;br /&gt;
===Translations===&lt;br /&gt;
&lt;br /&gt;
New Farsi (fa) and Telugu (te_IN) translations (in progress).&lt;br /&gt;
&lt;br /&gt;
===Known Issues===&lt;br /&gt;
&lt;br /&gt;
====Floating Toolbars====&lt;br /&gt;
&lt;br /&gt;
Floating toolbars had been found to present problems on a few window managers. By default floating has been turned off in response on MS Windows and the default KDE window manager. To re-enable, the &amp;lt;code&amp;gt;preferences.xml&amp;lt;/code&amp;gt; file has an &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; group called &amp;lt;code&amp;gt;workarounds&amp;lt;/code&amp;gt; with a setting called &amp;lt;code&amp;gt;floatallowed&amp;lt;/code&amp;gt;. Setting this to &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; will re-enable floating on these problematic systems. Valid values are &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Tutorials==&lt;br /&gt;
&lt;br /&gt;
* SVG files are now optimized with Scour (filesize reduced by 40%).&lt;br /&gt;
* Bitstream Vera fonts replaced with generic sans and serif fonts (solves many font substitution issues).&lt;br /&gt;
* New Interpolate tutorial (Help &amp;gt; Tutorials &amp;gt; Inkscape: Interpolate).&lt;br /&gt;
* New translations in Belarussian, Dutch, Farsi and Indonesian.&lt;br /&gt;
&lt;br /&gt;
==Windows port improvements==&lt;br /&gt;
&lt;br /&gt;
The quality of the Windows port was improved substantially.&lt;br /&gt;
&lt;br /&gt;
===Command line interface===&lt;br /&gt;
&lt;br /&gt;
Command line functionality on Windows is now on par with Unix.&lt;br /&gt;
&lt;br /&gt;
'''Single executable'''&lt;br /&gt;
:It's no longer needed to compile Inkscape with special flags or use third-party wrapper executables to see the command line output. Just type &amp;quot;inkscape&amp;quot; (without any extension) in the command prompt. This is made possible by a command-line wrapper named &amp;lt;tt&amp;gt;inkscape.com&amp;lt;/tt&amp;gt;.&lt;br /&gt;
'''Relative paths'''&lt;br /&gt;
:You can now specify relative paths to files in options like &amp;lt;tt&amp;gt;--export-png&amp;lt;/tt&amp;gt;. Commands like this will now execute correctly:&lt;br /&gt;
 C:\svg&amp;gt; inkscape tiger.svgz --export-png=tiger.png&lt;br /&gt;
&lt;br /&gt;
===Stability improvements===&lt;br /&gt;
&lt;br /&gt;
Thanks to library updates, Inkscape should no longer randomly crash when editing documents. Most of them were caused by a GDI resource leak in Pango. It will also no longer crash when trying to import a corrupted image.&lt;br /&gt;
&lt;br /&gt;
===Unicode compatibility===&lt;br /&gt;
&lt;br /&gt;
Inkscape will now work correctly regardless of installation path. Previously, it was unusable when installed into a directory that contains characters not representable in the system codepage (icons were not shown in the UI, and no language files were found).&lt;br /&gt;
&lt;br /&gt;
==Notable bug fixes==&lt;br /&gt;
&lt;br /&gt;
* The 3D tool no longer inserts an inkscape:perspective element into SVG when it is not needed (i.e. when the document has no 3D box objects).&lt;br /&gt;
* Wrong clippaths and masks with cyclic recursion (i.e. clippaths or masks that refer to themselves via other clippaths or masks) no longer crash Inkscape.&lt;br /&gt;
* Default unit setting for the XY grid is now respected when creating a new grid.&lt;br /&gt;
* Pasting Live Path Effect stacks now works. It adds the stack of the copied object to the end of the LPE stack (if present) of the object it is pasted to.&lt;br /&gt;
* The accuracy of the bounding box calculation has been significantly improved when converting objects to patterns or markers. This should make it much easier to create patterns where the tiles should 'connect' to each other, e.g. a tile with a plus sign to create a hatched pattern.&lt;br /&gt;
* The default font has been changed to ''Sans'', eliminating problems when the former default font, ''Bitstream Vera Sans'', is not available. (''Sans'' is a Pango pseudo-font.)&lt;br /&gt;
* The Text toolbar bold and italic/oblique buttons are more likely to work as expected.&lt;br /&gt;
* Bitmaps with transparency are now shown (and exported) correctly.&lt;br /&gt;
* The emergency save function no longer mangles the file names (which used to make it fail quite often).&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
==Previous releases==&lt;br /&gt;
&lt;br /&gt;
* [[ReleaseNotes047]]&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>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=60127</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=60127"/>
		<updated>2010-03-18T04:57:56Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Building Aqua February 2010 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ Xcode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port selfupdate&lt;br /&gt;
sudo port install cairo boehmgc gtkmm gtk-engines2 intltool libxslt lcms popt poppler boost \ &lt;br /&gt;
 gsl gnome-vfs libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: subversion is pre-installed on Leopard, so you may be fine leaving subversion out of the port install command chain.&lt;br /&gt;
&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*Xcode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, Xcode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
* Working version of the &amp;lt;tt&amp;gt;&amp;amp;lt;tr1/unordered_set&amp;amp;gt;&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;&amp;amp;lt;tr1/unordered_map&amp;amp;gt;&amp;lt;/tt&amp;gt; headers. &lt;br /&gt;
&lt;br /&gt;
Configure or build can fail on OS X Tiger and Leopard due to broken &amp;lt;tr1/unordered_set&amp;gt; header files because Apple's default compiler ([http://gcc.gnu.org/gcc-4.0/ GNU Compiler Collection 4.0.1]) and libstdc++ library ([http://gcc.gnu.org/libstdc++/ GNU Standard C++ Library v3]) installed by Xcode have never been fully updated to the last released version of the [http://gcc.gnu.org/gcc-4.0/changes.html#4.0.1 GCC 4_0 release series].&lt;br /&gt;
&lt;br /&gt;
If Inkscape 0.47+devel fails to configure with &amp;quot;error: You have a broken version of the &amp;lt;tr1/unordered_set&amp;gt; header. …&amp;quot; or fails to build with an [[build failure in tr1/hashtable|error]] in &amp;lt;tt&amp;gt;/usr/include/c++/4.0.0/tr1/hashtable&amp;lt;/tt&amp;gt; it is necessary to either &lt;br /&gt;
&lt;br /&gt;
a) install a [http://trac.macports.org/wiki/UsingTheRightCompiler newer version of GCC] via MacPorts and make it the default compiler with MacPorts 'gcc_select' or&lt;br /&gt;
&lt;br /&gt;
b) patch the installed &amp;lt;tt&amp;gt;tr1/hashtable&amp;lt;/tt&amp;gt; header file of libstdc++-v3 as described in [[HashtableFixOSX]]&lt;br /&gt;
&lt;br /&gt;
; gcc/g++ versions by Apple known to fail to compile Inkscape 0.47+devel bzr revno &amp;gt;= 8976 are&lt;br /&gt;
: powerpc-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5370)&lt;br /&gt;
: i686-apple-darwin9-g++-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5493)&lt;br /&gt;
: i686-apple-darwin9-g++-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5577)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm gtk-engines2 intltool libxslt lcms popt boost gsl&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X, though at least it should install fine]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo&amp;lt;/code&amp;gt; : ps and pdf export&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above. &lt;br /&gt;
If you're unsure about MacPorts commands, you can find a guide that is easy to skim here: [http://guide.macports.org/ MacPorts Guide]&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More recent (Sep 2008) pre-packaged nightly builds for Mac OS X also feature additional dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install librsvg libwpd libwpg libcroco&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: At the time of editing (2008-12-01) there was a problem fetching &amp;quot;lzmautils&amp;quot; as the URL MacPorts tried to use as download source dies in a timeout. &lt;br /&gt;
As this package is needed as a dependency for one or more packages noted above you need to download the source tarball of lzmautils from somewhere else (for example, from [ftp://sunfreeware.mirrors.tds.net/pub/sunfreeware/SOURCES/lzma-4.32.7.tar.gz here]) and put that into the local MacPorts repository at &amp;quot;/opt/local/var/macports/distfiles/lzmautils&amp;quot;. You should now be able to run the commands above.&lt;br /&gt;
&lt;br /&gt;
Also make sure that you have &amp;quot;libxml2&amp;quot; and &amp;quot;libxslt&amp;quot; installed with MacPorts. This should have been installed previously, either directly or as a dependency.&lt;br /&gt;
You will need those later to compile the &amp;quot;lxml&amp;quot; Python module if you want to use Python effects. First check what's installed and if they are missing from your MacPorts repository install them by doing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;port installed&lt;br /&gt;
sudo port install libxml2 libxslt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pre-compiling the Python modules  ==&lt;br /&gt;
&lt;br /&gt;
If you cannot use the pre-built Python modules from [http://inkscape.modevia.com/macosx-snap/?C=M;O=D Modevia], say, because you're using an unsupported Python version or you just want to install from source you need to pre-compile both modules.&lt;br /&gt;
&lt;br /&gt;
In case you are using a Python version installed through MacPorts do a search for both modules and install the ones suitable for the Python version activated within MacPorts.&lt;br /&gt;
&amp;lt;pre&amp;gt;port search lxml numpy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are using Leopard's default Python 2.5.1 installation or a more recent one (e.g. MacPython 2.6) you will need to compile both modules outside of MacPorts. Download both modules from [http://pypi.python.org PyPI] if they are available there for your Python version. At the time of editing (2008-12-01) both modules were only available through SVN for Python 2.6.&lt;br /&gt;
&lt;br /&gt;
There are lots of tutorials for building and installing the &amp;quot;numpy&amp;quot; module. One good place to start looking is the [[GettingEffectsWorking#on_Mac_OS_X|Getting Effects Working]] entry referenced at the end of this guide. &lt;br /&gt;
&lt;br /&gt;
Building the &amp;quot;lxml&amp;quot; module deviates a little from the standard way, so if you cannot install it try the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /path/to/lxml/source&lt;br /&gt;
sudo python setup.py install \&lt;br /&gt;
--with-xslt-config=/opt/local/bin/xslt-config \&lt;br /&gt;
--with-xml2-config=/opt/local/bin/xml2-config&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This tells it to use the libxml2 and libxslt packages we installed earlier with MacPorts instead of Mac OS X' default versions, which have been known to cause problems when trying to build &amp;quot;lxml&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If you are compiling the Python modules outside of MacPorts you will need to make a mental note for after running the .app-bundle building script (detailed [[CompilingMacOsX#Creating_an_.app_bundle|later]] in this guide) to copy the &amp;quot;lxml&amp;quot; and &amp;quot;numpy&amp;quot; dirs from the standard installation destination (by default &amp;quot;/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages&amp;quot; for MacPython 2.6 and &amp;quot;/Library/Python/2.5/site-packages/&amp;quot; for Leopard's default Python 2.5.1 installation) to either&lt;br /&gt;
* the &amp;quot;extensions&amp;quot; folder inside the Inkscape.app bundle (&amp;quot;Inkscape.app/Contents/Resources/extensions&amp;quot;) if all you care about is getting the Inkscape build to work with your Python version. This method is more foolproof but supports only one Python version.&lt;br /&gt;
* the &amp;quot;site-packages&amp;quot; folder inside the Inkspace.app bundle. The &amp;quot;site-packages&amp;quot; folder is the right place for putting your pre-compiled Python modules if you want to redistribute your build. Make a subfolder within &amp;quot;site-packages&amp;quot; with the name of your arch (&amp;quot;i386&amp;quot; for Intel, &amp;quot;PPC&amp;quot; for PowerPC or type &amp;lt;code&amp;gt;arch&amp;lt;/code&amp;gt; into a Terminal window) and another subfolder within the arch folder with the name of your Python version (e.g. &amp;quot;2.5&amp;quot; or &amp;quot;2.6&amp;quot; etc.). This allows you to include support for multiple Python versions with your Inkscape build. Note, however, that if someone has multiple Python versions installed they may run into problems with the PATH order exported by the internal script (&amp;quot;Inkspace.app/Contents/Resources/bin/inkscape&amp;quot;) responsible for preparing the Inkscape launch environment. &lt;br /&gt;
&lt;br /&gt;
Armed with this knowledge you should be able to take care of the &amp;quot;...needs the fantastic libxml2 wrapper...&amp;quot; message when executing Python effects. Normally the &amp;lt;code&amp;gt;osx-app.sh&amp;lt;/code&amp;gt; script (detailed [[CompilingMacOsX#Creating_an_.app_bundle|later]])  should take care of this for you, but if for whatever reason it didn't you know how to copy the modules manually.&lt;br /&gt;
&lt;br /&gt;
For further info refer to the [[GettingEffectsWorking#on_Mac_OS_X|Getting Effects Working]] section of this wiki.&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's an example which covers most options that can be set:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/ --with-xft \&lt;br /&gt;
--with-gnome-vfs --with-python=/path/to/python/modules --enable-osxapp --enable-lcms \&lt;br /&gt;
--enable-poppler-cairo --enable-inkboard&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All essential steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to know how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: Excluded steps involve Pre-compiliation of the Python modules and installing the additional nightly build features.&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
The easiest way to do this is to create a new MacPorts installation. It is recommended that you install macports from source into a long prefix (of 50 character) such as &amp;quot;/opt/local-macports-with-a-really-long-directory-name/&amp;quot; -- this will allow enough space to later perform path rewriting on all the bundled libraries.  &lt;br /&gt;
&lt;br /&gt;
Once you have installed MacPorts, edit the $PREFIX/etc/macports/variants.conf file to have the following line: &lt;br /&gt;
&amp;lt;pre&amp;gt;+universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will cause MacPorts to install the Universal variant of each package you later ask it to install.&lt;br /&gt;
&lt;br /&gt;
If you already have non-universal versions of some ports installed, for each of these you may need to deactivate the port and rebuild it, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -f uninstall cairo&lt;br /&gt;
sudo port clean cairo&lt;br /&gt;
sudo port -v install cairo +universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal Inkscape ==&lt;br /&gt;
&lt;br /&gt;
First, Set your SDK, 10.5 for Leopard, 10.4u for TIger:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.5.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; (For Leopard)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.4u.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp;  (For Tiger)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, set up your environment to point to the MacPorts libraries:&lt;br /&gt;
&amp;lt;pre&amp;gt;export MACPORTS=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
export PATH=$MACPORTS/bin:$MACPORTS/sbin:/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$MACPORTS/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$MACPORTS/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$MACPORTS/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall -isysroot $SDK -arch ppc -arch i386&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The final step is to configure and compile Inkscape.  Inkscape must be configured with the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;   Sets the correct path for Inkscape to be used from an .app bundle&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;--disable-dependency-tracking&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; Dependency tracking can't be used when compiling universal binaries.&lt;br /&gt;
&lt;br /&gt;
Inkscape can then be built (with make), installed, and packaged into a Universal .app bundle using the standard .app bundle building instruction above.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
addition in Nov-2009 by Wolf:&lt;br /&gt;
Meanwhile building a native inkscape aqua version is quite easy - dont be afraid! I do ask every Mac OS X user to try it and to file or to support bug reports. The more bug report come in, the quicker we'll have a really working inkscape aqua.  I'll try to provide binaries, but making them seem to be a bit more tricky. Here is a set of instructions - should be quite comprehensive: [[#Building Aqua November 2009]]&lt;br /&gt;
&lt;br /&gt;
++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+no_x11 cairomm pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing a second MacPorts tree (recommended approach) ==&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let's say I want to install a new tree for native versions in /opt/local-native. I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can set this second tree up to always build packages with specific variants.  For example, you can edit the /opt/local-native/etc/macports/variants.conf file to have the following line:&lt;br /&gt;
&amp;lt;pre&amp;gt;+universal +no_x11 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
You can omit the +universal if you only want to build inkscape for your host architecture.&lt;br /&gt;
You should also set alternate applications_dir and frameworks_dir variables in the /opt/local-native/etc/macports/macports.conf file so that applications and frameworks installed by this MacPorts (for example by python) don't clash with your standard MacPorts tree.&lt;br /&gt;
&lt;br /&gt;
Then you need to have only one version of the port command in the PATH at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the native version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathnative=&amp;quot;export PATH=/opt/local-native/bin:/opt/local-native/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here. Omit them when editing your shell configuration file and put everything on one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
== Building Aqua February 2010 ==&lt;br /&gt;
As I had a nicely working X11 version, I didnt care about compiling for X11, so this is an aqua-only procedure, which fairly started from scratch.&lt;br /&gt;
&lt;br /&gt;
Here is what was to do on a G4 (PPC) with Mac OS X 10.4.11:&lt;br /&gt;
&lt;br /&gt;
Install [http://developer.apple.com/tools/xcode/ Xcode tools] from your OS X installation DVD.&lt;br /&gt;
&lt;br /&gt;
Install [http://www.macports.org macports], retrieve the inkscape sources. &lt;br /&gt;
&lt;br /&gt;
In order to install gtk2 on a PowerPC, you may have to apply this workaround: [http://trac.macports.org/ticket/20372]. (Maybe this is obsolete by Feb, 2010).&lt;br /&gt;
&lt;br /&gt;
Then copy into the terminal: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&lt;br /&gt;
&lt;br /&gt;
sudo port install librsvg libwpd libwpg libcroco&lt;br /&gt;
&lt;br /&gt;
# ++++++++++++++++++++++++++++++++++++++++++++++++++++ &lt;br /&gt;
&lt;br /&gt;
# At the moment (11-Feb-2010) gtk2 needs to be patched, according to &lt;br /&gt;
# http://trac.macports.org/ticket/22451&lt;br /&gt;
&lt;br /&gt;
# 1. Create a folder in your home directory e.g. /Users/&amp;lt;Username&amp;gt;/ports to act as the local&lt;br /&gt;
#  repository&lt;br /&gt;
&lt;br /&gt;
# 2. download &lt;br /&gt;
# http://trac.macports.org/attachment/ticket/22451/modified-gtk2-port.tar.bz&lt;br /&gt;
# unpack it and put the occuring folder called &amp;quot;x11&amp;quot; into the &amp;quot;ports&amp;quot; folder you created&lt;br /&gt;
&lt;br /&gt;
# 3. Edit the file /opt/local/etc/macports/sources.conf and add a line&lt;br /&gt;
# file:///Users/mark/ports before the  rsync://... line (this means Macports will use locally modified&lt;br /&gt;
# ports in preference to ports of the same name in the global repository, in our case port 'gtk2')&lt;br /&gt;
&lt;br /&gt;
# 4. cd to /Users/&amp;lt;Username&amp;gt;mark/ports and type &lt;br /&gt;
&lt;br /&gt;
portindex&lt;br /&gt;
&lt;br /&gt;
# to get Macports to index this local version of gtk2&lt;br /&gt;
&lt;br /&gt;
# 5. If necessary, uninstall a former version of gtk2 with &lt;br /&gt;
&lt;br /&gt;
sudo port -f uninstall gtk2 , &lt;br /&gt;
&lt;br /&gt;
cd ~/ports/x11/gtk2/ and&lt;br /&gt;
&lt;br /&gt;
# (re)install (from the local repository) using &lt;br /&gt;
&lt;br /&gt;
sudo port install -f gtk2 +quartz+no_x11&lt;br /&gt;
&lt;br /&gt;
# ++++++++++++++++++++++++++++++++++++++++++++++++++++ &lt;br /&gt;
&lt;br /&gt;
sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&lt;br /&gt;
&lt;br /&gt;
sudo port install cairo +quartz+no_x11 cairomm pango +quartz+no_x11 poppler +quartz gtk-engines2&lt;br /&gt;
&lt;br /&gt;
sudo port install gsl&lt;br /&gt;
&lt;br /&gt;
sudo port install hicolor-icon-theme&lt;br /&gt;
&lt;br /&gt;
sudo port install subversion&lt;br /&gt;
&lt;br /&gt;
sudo port install libxml2 libxslt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# optional to speed up the compiling process:&lt;br /&gt;
sudo port install ccache&lt;br /&gt;
export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&lt;br /&gt;
# ++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
cd path-to-inkscape-sources/packaging/macosx&lt;br /&gt;
&lt;br /&gt;
# Edit the file osx-build.sh to uncomment (enable) the configure option --enable-osxapp&lt;br /&gt;
# (line 24), if neccessary. I used TextWrangler for this, pico or another command line editor will do the same.&lt;br /&gt;
&lt;br /&gt;
# Back to the terminal:&lt;br /&gt;
&lt;br /&gt;
# configure it:&lt;br /&gt;
sudo ./osx-build.sh c&lt;br /&gt;
&lt;br /&gt;
# build it: &lt;br /&gt;
sudo ./osx-build.sh b&lt;br /&gt;
&lt;br /&gt;
# install it: &lt;br /&gt;
sudo ./osx-build.sh i&lt;br /&gt;
&lt;br /&gt;
# test it:&lt;br /&gt;
cd ../../Build/bin/./inkscape&lt;br /&gt;
&lt;br /&gt;
# or double click the inkscape image in path-to-inkscape-sources/Build/bin&lt;br /&gt;
&lt;br /&gt;
# (This may not work - not reason to fall into despair so far, just go ahead an pack it…)&lt;br /&gt;
&lt;br /&gt;
# Build a Mac OS X package:&lt;br /&gt;
&lt;br /&gt;
# download python packages at http://inkscape.modevia.com/macosx-snap/Python-packages.dmg&lt;br /&gt;
# put the contents in a folder named &amp;quot;python&amp;quot; and put it somewhere - the following command&lt;br /&gt;
# expects it in the folder in which the inkscape sources folder lives&lt;br /&gt;
&lt;br /&gt;
# edit &amp;lt;path-to-inkscape-sources&amp;gt;/packaging/macosx/Resources/bin/inkscape and &lt;br /&gt;
# uncomment line 33: &lt;br /&gt;
&lt;br /&gt;
# export DYLD_LIBRARY_PATH=&amp;quot;$TOP/lib&amp;quot;&lt;br /&gt;
&lt;br /&gt;
cd &amp;lt;path-to-inkscape-sources&amp;gt;/packaging/macosx&lt;br /&gt;
&lt;br /&gt;
# and pack:&lt;br /&gt;
&lt;br /&gt;
./osx-build.sh p -py ../../../python/ &lt;br /&gt;
&lt;br /&gt;
# To avoid X11 from launching simultaneously), edit&lt;br /&gt;
inkscape.app/Contents/Resources/script and add at line 45&lt;br /&gt;
&lt;br /&gt;
killall X11&lt;br /&gt;
&lt;br /&gt;
# Hopefully more skilled people than me will find a nicer solution than this very brutal hack.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In the end this procedure works pretty straightforward, delivering a native inkscape which works fairly well - it still has the disadvantage not to be portable to another machine, because some libraries are not compiled into the app bundle. Work is in progress…&lt;br /&gt;
&lt;br /&gt;
As the author of this lines knows very little about compiling etc., I do recommend to send requests for support to the devel mailing list (mailto: inkscape-devel@lists.sourceforge.net). I'm reading there and may occasionally have the chance to answer some questions.&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=53761</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=53761"/>
		<updated>2009-09-10T03:52:42Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: Add some more instructions.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo boehmgc gtkmm gtk-engines2 intltool libxslt lcms popt poppler boost \ &lt;br /&gt;
 gnome-vfs libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: subversion is pre-installed on Leopard, so you may be fine leaving subversion out of the port install command chain.&lt;br /&gt;
&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm gtk-engines2 intltool libxslt lcms popt boost gsl&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X, though at least it should install fine]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above. &lt;br /&gt;
If you're unsure about MacPorts commands, you can find a guide that is easy to skim here: [http://guide.macports.org/ MacPorts Guide]&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More recent (Sep 2008) pre-packaged nightly builds for Mac OS X also feature additional dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install librsvg libwpd libwpg libcroco&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: At the time of editing (2008-12-01) there was a problem fetching &amp;quot;lzmautils&amp;quot; as the URL MacPorts tried to use as download source dies in a timeout. &lt;br /&gt;
As this package is needed as a dependency for one or more packages noted above you need to download the source tarball of lzmautils from somewhere else (for example, from [ftp://sunfreeware.mirrors.tds.net/pub/sunfreeware/SOURCES/lzma-4.32.7.tar.gz here]) and put that into the local MacPorts repository at &amp;quot;/opt/local/var/macports/distfiles/lzmautils&amp;quot;. You should now be able to run the commands above.&lt;br /&gt;
&lt;br /&gt;
Also make sure that you have &amp;quot;libxml2&amp;quot; and &amp;quot;libxslt&amp;quot; installed with MacPorts. This should have been installed previously, either directly or as a dependency.&lt;br /&gt;
You will need those later to compile the &amp;quot;lxml&amp;quot; Python module if you want to use Python effects. First check what's installed and if they are missing from your MacPorts repository install them by doing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;port installed&lt;br /&gt;
sudo port install libxml2 libxslt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pre-compiling the Python modules  ==&lt;br /&gt;
&lt;br /&gt;
If you cannot use the pre-built Python modules from [http://inkscape.modevia.com/macosx-snap/?C=M;O=D Modevia], say, because you're using an unsupported Python version or you just want to install from source you need to pre-compile both modules.&lt;br /&gt;
&lt;br /&gt;
In case you are using a Python version installed through MacPorts do a search for both modules and install the ones suitable for the Python version activated within MacPorts.&lt;br /&gt;
&amp;lt;pre&amp;gt;port search lxml numpy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are using Leopard's default Python 2.5.1 installation or a more recent one (e.g. MacPython 2.6) you will need to compile both modules outside of MacPorts. Download both modules from [http://pypi.python.org PyPI] if they are available there for your Python version. At the time of editing (2008-12-01) both modules were only available through SVN for Python 2.6.&lt;br /&gt;
&lt;br /&gt;
There are lots of tutorials for building and installing the &amp;quot;numpy&amp;quot; module. One good place to start looking is the [[GettingEffectsWorking#on_Mac_OS_X|Getting Effects Working]] entry referenced at the end of this guide. &lt;br /&gt;
&lt;br /&gt;
Building the &amp;quot;lxml&amp;quot; module deviates a little from the standard way, so if you cannot install it try the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /path/to/lxml/source&lt;br /&gt;
sudo python setup.py install \&lt;br /&gt;
--with-xslt-config=/opt/local/bin/xslt-config \&lt;br /&gt;
--with-xml2-config=/opt/local/bin/xml2-config&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This tells it to use the libxml2 and libxslt packages we installed earlier with MacPorts instead of Mac OS X' default versions, which have been known to cause problems when trying to build &amp;quot;lxml&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If you are compiling the Python modules outside of MacPorts you will need to make a mental note for after running the .app-bundle building script (detailed [[CompilingMacOsX#Creating_an_.app_bundle|later]] in this guide) to copy the &amp;quot;lxml&amp;quot; and &amp;quot;numpy&amp;quot; dirs from the standard installation destination (by default &amp;quot;/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages&amp;quot; for MacPython 2.6 and &amp;quot;/Library/Python/2.5/site-packages/&amp;quot; for Leopard's default Python 2.5.1 installation) to either&lt;br /&gt;
* the &amp;quot;extensions&amp;quot; folder inside the Inkscape.app bundle (&amp;quot;Inkscape.app/Contents/Resources/extensions&amp;quot;) if all you care about is getting the Inkscape build to work with your Python version. This method is more foolproof but supports only one Python version.&lt;br /&gt;
* the &amp;quot;site-packages&amp;quot; folder inside the Inkspace.app bundle. The &amp;quot;site-packages&amp;quot; folder is the right place for putting your pre-compiled Python modules if you want to redistribute your build. Make a subfolder within &amp;quot;site-packages&amp;quot; with the name of your arch (&amp;quot;i386&amp;quot; for Intel, &amp;quot;PPC&amp;quot; for PowerPC or type &amp;lt;code&amp;gt;arch&amp;lt;/code&amp;gt; into a Terminal window) and another subfolder within the arch folder with the name of your Python version (e.g. &amp;quot;2.5&amp;quot; or &amp;quot;2.6&amp;quot; etc.). This allows you to include support for multiple Python versions with your Inkscape build. Note, however, that if someone has multiple Python versions installed they may run into problems with the PATH order exported by the internal script (&amp;quot;Inkspace.app/Contents/Resources/bin/inkscape&amp;quot;) responsible for preparing the Inkscape launch environment. &lt;br /&gt;
&lt;br /&gt;
Armed with this knowledge you should be able to take care of the &amp;quot;...needs the fantastic libxml2 wrapper...&amp;quot; message when executing Python effects. Normally the &amp;lt;code&amp;gt;osx-app.sh&amp;lt;/code&amp;gt; script (detailed [[CompilingMacOsX#Creating_an_.app_bundle|later]])  should take care of this for you, but if for whatever reason it didn't you know how to copy the modules manually.&lt;br /&gt;
&lt;br /&gt;
For further info refer to the [[GettingEffectsWorking#on_Mac_OS_X|Getting Effects Working]] section of this wiki.&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's an example which covers most options that can be set:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/ --with-xft \&lt;br /&gt;
--with-gnome-vfs --with-python=/path/to/python/modules --enable-osxapp --enable-lcms \&lt;br /&gt;
--enable-poppler-cairo --enable-inkboard&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All essential steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to know how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: Excluded steps involve Pre-compiliation of the Python modules and installing the additional nightly build features.&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
The easiest way to do this is to create a new Macports installation. It is recommended that you install macports from source into a long prefix (of 50 character) such as &amp;quot;/opt/local-macports-with-a-really-long-directory-name/&amp;quot; -- this will allow enough space to later perform path rewriting on all the bundled libraries.  &lt;br /&gt;
&lt;br /&gt;
Once you have installed Macports, edit the $PREFIX/etc/macports/variants.conf file to have the following line: &lt;br /&gt;
&amp;lt;pre&amp;gt;+universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will cause Macports to install the Universal variant of each package you later ask it to install.&lt;br /&gt;
&lt;br /&gt;
If you already have non-universal versions of some ports installed, for each of these you may need to deactivate the port and rebuild it, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -f uninstall cairo&lt;br /&gt;
sudo port clean cairo&lt;br /&gt;
sudo port -v install cairo +universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal Inkscape ==&lt;br /&gt;
&lt;br /&gt;
First, Set your SDK, 10.5 for Leopard, 10.4u for TIger:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.5.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; (For Leopard)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.4u.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp;  (For Tiger)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, set up your environment to point to the Macports libraries:&lt;br /&gt;
&amp;lt;pre&amp;gt;export MACPORTS=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
export PATH=$MACPORTS/bin:$MACPORTS/sbin:/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$MACPORTS/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$MACPORTS/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$MACPORTS/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall -isysroot $SDK -arch ppc -arch i386&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The final step is to configure and compile Inkscape.  Inkscape must be configured with the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;   Sets the correct path for Inkscape to be used from an .app bundle&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;--disable-dependency-tracking&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; Dependency tracking can't be used when compiling universal binaries.&lt;br /&gt;
&lt;br /&gt;
Inkscape can then be built (with make), installed, and packaged into a Universal .app bundle using the standard .app bundle building instruction above.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+no_x11 cairomm pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing a second Macports tree (recommended approach) ==&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can set this second tree up to always build packages with specific variants.  For example, you can edit the /opt/local-native/etc/macports/variants.conf file to have the following line:&lt;br /&gt;
&amp;lt;pre&amp;gt;+universal +no_x11 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
You can remove the +universal if you only want to build inkscape for your host architecture.&lt;br /&gt;
You may also need to set alternate applications_dir and  frameworks_dir variables in the /opt/local-native/etc/macports/macports.conf file so that applications and frameworks install by this macports (for example by python) don't clash with your standard  macports tree.&lt;br /&gt;
&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathnative=&amp;quot;export PATH=/opt/local-native/bin:/opt/local-native/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=53759</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=53759"/>
		<updated>2009-09-10T03:47:07Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: Fix a typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo boehmgc gtkmm gtk-engines2 intltool libxslt lcms popt poppler boost \ &lt;br /&gt;
 gnome-vfs libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: subversion is pre-installed on Leopard, so you may be fine leaving subversion out of the port install command chain.&lt;br /&gt;
&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm gtk-engines2 intltool libxslt lcms popt boost gsl&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X, though at least it should install fine]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above. &lt;br /&gt;
If you're unsure about MacPorts commands, you can find a guide that is easy to skim here: [http://guide.macports.org/ MacPorts Guide]&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More recent (Sep 2008) pre-packaged nightly builds for Mac OS X also feature additional dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install librsvg libwpd libwpg libcroco&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: At the time of editing (2008-12-01) there was a problem fetching &amp;quot;lzmautils&amp;quot; as the URL MacPorts tried to use as download source dies in a timeout. &lt;br /&gt;
As this package is needed as a dependency for one or more packages noted above you need to download the source tarball of lzmautils from somewhere else (for example, from [ftp://sunfreeware.mirrors.tds.net/pub/sunfreeware/SOURCES/lzma-4.32.7.tar.gz here]) and put that into the local MacPorts repository at &amp;quot;/opt/local/var/macports/distfiles/lzmautils&amp;quot;. You should now be able to run the commands above.&lt;br /&gt;
&lt;br /&gt;
Also make sure that you have &amp;quot;libxml2&amp;quot; and &amp;quot;libxslt&amp;quot; installed with MacPorts. This should have been installed previously, either directly or as a dependency.&lt;br /&gt;
You will need those later to compile the &amp;quot;lxml&amp;quot; Python module if you want to use Python effects. First check what's installed and if they are missing from your MacPorts repository install them by doing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;port installed&lt;br /&gt;
sudo port install libxml2 libxslt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pre-compiling the Python modules  ==&lt;br /&gt;
&lt;br /&gt;
If you cannot use the pre-built Python modules from [http://inkscape.modevia.com/macosx-snap/?C=M;O=D Modevia], say, because you're using an unsupported Python version or you just want to install from source you need to pre-compile both modules.&lt;br /&gt;
&lt;br /&gt;
In case you are using a Python version installed through MacPorts do a search for both modules and install the ones suitable for the Python version activated within MacPorts.&lt;br /&gt;
&amp;lt;pre&amp;gt;port search lxml numpy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are using Leopard's default Python 2.5.1 installation or a more recent one (e.g. MacPython 2.6) you will need to compile both modules outside of MacPorts. Download both modules from [http://pypi.python.org PyPI] if they are available there for your Python version. At the time of editing (2008-12-01) both modules were only available through SVN for Python 2.6.&lt;br /&gt;
&lt;br /&gt;
There are lots of tutorials for building and installing the &amp;quot;numpy&amp;quot; module. One good place to start looking is the [[GettingEffectsWorking#on_Mac_OS_X|Getting Effects Working]] entry referenced at the end of this guide. &lt;br /&gt;
&lt;br /&gt;
Building the &amp;quot;lxml&amp;quot; module deviates a little from the standard way, so if you cannot install it try the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /path/to/lxml/source&lt;br /&gt;
sudo python setup.py install \&lt;br /&gt;
--with-xslt-config=/opt/local/bin/xslt-config \&lt;br /&gt;
--with-xml2-config=/opt/local/bin/xml2-config&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This tells it to use the libxml2 and libxslt packages we installed earlier with MacPorts instead of Mac OS X' default versions, which have been known to cause problems when trying to build &amp;quot;lxml&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If you are compiling the Python modules outside of MacPorts you will need to make a mental note for after running the .app-bundle building script (detailed [[CompilingMacOsX#Creating_an_.app_bundle|later]] in this guide) to copy the &amp;quot;lxml&amp;quot; and &amp;quot;numpy&amp;quot; dirs from the standard installation destination (by default &amp;quot;/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages&amp;quot; for MacPython 2.6 and &amp;quot;/Library/Python/2.5/site-packages/&amp;quot; for Leopard's default Python 2.5.1 installation) to either&lt;br /&gt;
* the &amp;quot;extensions&amp;quot; folder inside the Inkscape.app bundle (&amp;quot;Inkscape.app/Contents/Resources/extensions&amp;quot;) if all you care about is getting the Inkscape build to work with your Python version. This method is more foolproof but supports only one Python version.&lt;br /&gt;
* the &amp;quot;site-packages&amp;quot; folder inside the Inkspace.app bundle. The &amp;quot;site-packages&amp;quot; folder is the right place for putting your pre-compiled Python modules if you want to redistribute your build. Make a subfolder within &amp;quot;site-packages&amp;quot; with the name of your arch (&amp;quot;i386&amp;quot; for Intel, &amp;quot;PPC&amp;quot; for PowerPC or type &amp;lt;code&amp;gt;arch&amp;lt;/code&amp;gt; into a Terminal window) and another subfolder within the arch folder with the name of your Python version (e.g. &amp;quot;2.5&amp;quot; or &amp;quot;2.6&amp;quot; etc.). This allows you to include support for multiple Python versions with your Inkscape build. Note, however, that if someone has multiple Python versions installed they may run into problems with the PATH order exported by the internal script (&amp;quot;Inkspace.app/Contents/Resources/bin/inkscape&amp;quot;) responsible for preparing the Inkscape launch environment. &lt;br /&gt;
&lt;br /&gt;
Armed with this knowledge you should be able to take care of the &amp;quot;...needs the fantastic libxml2 wrapper...&amp;quot; message when executing Python effects. Normally the &amp;lt;code&amp;gt;osx-app.sh&amp;lt;/code&amp;gt; script (detailed [[CompilingMacOsX#Creating_an_.app_bundle|later]])  should take care of this for you, but if for whatever reason it didn't you know how to copy the modules manually.&lt;br /&gt;
&lt;br /&gt;
For further info refer to the [[GettingEffectsWorking#on_Mac_OS_X|Getting Effects Working]] section of this wiki.&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's an example which covers most options that can be set:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/ --with-xft \&lt;br /&gt;
--with-gnome-vfs --with-python=/path/to/python/modules --enable-osxapp --enable-lcms \&lt;br /&gt;
--enable-poppler-cairo --enable-inkboard&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All essential steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to know how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: Excluded steps involve Pre-compiliation of the Python modules and installing the additional nightly build features.&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
The easiest way to do this is to create a new Macports installation, and to edit the $PREFIX/etc/macports/variants.conf file to have the following line: &lt;br /&gt;
&amp;lt;pre&amp;gt;+universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will cause Macports to install the Universal variant of each package you later ask it to install.&lt;br /&gt;
&lt;br /&gt;
If you already have non-universal versions of some ports installed, for each of these you may need to deactivate the port and rebuild it, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -f uninstall cairo&lt;br /&gt;
sudo port clean cairo&lt;br /&gt;
sudo port -v install cairo +universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal Inkscape ==&lt;br /&gt;
&lt;br /&gt;
First, Set your SDK, 10.5 for Leopard, 10.4u for TIger:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.5.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; (For Leopard)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.4u.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp;  (For Tiger)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, set up your environment to point to the Macports libraries:&lt;br /&gt;
&amp;lt;pre&amp;gt;export MACPORTS=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
export PATH=$MACPORTS/bin:$MACPORTS/sbin:/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$MACPORTS/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$MACPORTS/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$MACPORTS/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall -isysroot $SDK -arch ppc -arch i386&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The final step is to configure and compile Inkscape.  Inkscape must be configured with the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;   Sets the correct path for Inkscape to be used from an .app bundle&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;--disable-dependency-tracking&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; Dependency tracking can't be used when compiling universal binaries.&lt;br /&gt;
&lt;br /&gt;
Inkscape can then be built (with make), installed, and packaged into a Universal .app bundle using the standard .app bundle building instruction above.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+no_x11 cairomm pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing a second Macports tree (recommended approach) ==&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can set this second tree up to always build packages with specific variants.  For example, you can edit the /opt/local-native/etc/macports/variants.conf file to have the following line:&lt;br /&gt;
&amp;lt;pre&amp;gt;+universal +no_x11 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
You can remove the +universal if you only want to build inkscape for your host architecture.&lt;br /&gt;
You may also need to set alternate applications_dir and  frameworks_dir variables in the /opt/local-native/etc/macports/macports.conf file so that applications and frameworks install by this macports (for example by python) don't clash with your standard  macports tree.&lt;br /&gt;
&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathnative=&amp;quot;export PATH=/opt/local-native/bin:/opt/local-native/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=53757</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=53757"/>
		<updated>2009-09-10T03:43:58Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: Update some build instructions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo boehmgc gtkmm gtk-engines2 intltool libxslt lcms popt poppler boost \ &lt;br /&gt;
 gnome-vfs libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: subversion is pre-installed on Leopard, so you may be fine leaving subversion out of the port install command chain.&lt;br /&gt;
&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm gtk-engines2 intltool libxslt lcms popt boost gsl&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X, though at least it should install fine]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above. &lt;br /&gt;
If you're unsure about MacPorts commands, you can find a guide that is easy to skim here: [http://guide.macports.org/ MacPorts Guide]&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More recent (Sep 2008) pre-packaged nightly builds for Mac OS X also feature additional dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install librsvg libwpd libwpg libcroco&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: At the time of editing (2008-12-01) there was a problem fetching &amp;quot;lzmautils&amp;quot; as the URL MacPorts tried to use as download source dies in a timeout. &lt;br /&gt;
As this package is needed as a dependency for one or more packages noted above you need to download the source tarball of lzmautils from somewhere else (for example, from [ftp://sunfreeware.mirrors.tds.net/pub/sunfreeware/SOURCES/lzma-4.32.7.tar.gz here]) and put that into the local MacPorts repository at &amp;quot;/opt/local/var/macports/distfiles/lzmautils&amp;quot;. You should now be able to run the commands above.&lt;br /&gt;
&lt;br /&gt;
Also make sure that you have &amp;quot;libxml2&amp;quot; and &amp;quot;libxslt&amp;quot; installed with MacPorts. This should have been installed previously, either directly or as a dependency.&lt;br /&gt;
You will need those later to compile the &amp;quot;lxml&amp;quot; Python module if you want to use Python effects. First check what's installed and if they are missing from your MacPorts repository install them by doing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;port installed&lt;br /&gt;
sudo port install libxml2 libxslt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pre-compiling the Python modules  ==&lt;br /&gt;
&lt;br /&gt;
If you cannot use the pre-built Python modules from [http://inkscape.modevia.com/macosx-snap/?C=M;O=D Modevia], say, because you're using an unsupported Python version or you just want to install from source you need to pre-compile both modules.&lt;br /&gt;
&lt;br /&gt;
In case you are using a Python version installed through MacPorts do a search for both modules and install the ones suitable for the Python version activated within MacPorts.&lt;br /&gt;
&amp;lt;pre&amp;gt;port search lxml numpy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are using Leopard's default Python 2.5.1 installation or a more recent one (e.g. MacPython 2.6) you will need to compile both modules outside of MacPorts. Download both modules from [http://pypi.python.org PyPI] if they are available there for your Python version. At the time of editing (2008-12-01) both modules were only available through SVN for Python 2.6.&lt;br /&gt;
&lt;br /&gt;
There are lots of tutorials for building and installing the &amp;quot;numpy&amp;quot; module. One good place to start looking is the [[GettingEffectsWorking#on_Mac_OS_X|Getting Effects Working]] entry referenced at the end of this guide. &lt;br /&gt;
&lt;br /&gt;
Building the &amp;quot;lxml&amp;quot; module deviates a little from the standard way, so if you cannot install it try the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /path/to/lxml/source&lt;br /&gt;
sudo python setup.py install \&lt;br /&gt;
--with-xslt-config=/opt/local/bin/xslt-config \&lt;br /&gt;
--with-xml2-config=/opt/local/bin/xml2-config&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This tells it to use the libxml2 and libxslt packages we installed earlier with MacPorts instead of Mac OS X' default versions, which have been known to cause problems when trying to build &amp;quot;lxml&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If you are compiling the Python modules outside of MacPorts you will need to make a mental note for after running the .app-bundle building script (detailed [[CompilingMacOsX#Creating_an_.app_bundle|later]] in this guide) to copy the &amp;quot;lxml&amp;quot; and &amp;quot;numpy&amp;quot; dirs from the standard installation destination (by default &amp;quot;/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages&amp;quot; for MacPython 2.6 and &amp;quot;/Library/Python/2.5/site-packages/&amp;quot; for Leopard's default Python 2.5.1 installation) to either&lt;br /&gt;
* the &amp;quot;extensions&amp;quot; folder inside the Inkscape.app bundle (&amp;quot;Inkscape.app/Contents/Resources/extensions&amp;quot;) if all you care about is getting the Inkscape build to work with your Python version. This method is more foolproof but supports only one Python version.&lt;br /&gt;
* the &amp;quot;site-packages&amp;quot; folder inside the Inkspace.app bundle. The &amp;quot;site-packages&amp;quot; folder is the right place for putting your pre-compiled Python modules if you want to redistribute your build. Make a subfolder within &amp;quot;site-packages&amp;quot; with the name of your arch (&amp;quot;i386&amp;quot; for Intel, &amp;quot;PPC&amp;quot; for PowerPC or type &amp;lt;code&amp;gt;arch&amp;lt;/code&amp;gt; into a Terminal window) and another subfolder within the arch folder with the name of your Python version (e.g. &amp;quot;2.5&amp;quot; or &amp;quot;2.6&amp;quot; etc.). This allows you to include support for multiple Python versions with your Inkscape build. Note, however, that if someone has multiple Python versions installed they may run into problems with the PATH order exported by the internal script (&amp;quot;Inkspace.app/Contents/Resources/bin/inkscape&amp;quot;) responsible for preparing the Inkscape launch environment. &lt;br /&gt;
&lt;br /&gt;
Armed with this knowledge you should be able to take care of the &amp;quot;...needs the fantastic libxml2 wrapper...&amp;quot; message when executing Python effects. Normally the &amp;lt;code&amp;gt;osx-app.sh&amp;lt;/code&amp;gt; script (detailed [[CompilingMacOsX#Creating_an_.app_bundle|later]])  should take care of this for you, but if for whatever reason it didn't you know how to copy the modules manually.&lt;br /&gt;
&lt;br /&gt;
For further info refer to the [[GettingEffectsWorking#on_Mac_OS_X|Getting Effects Working]] section of this wiki.&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's an example which covers most options that can be set:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/ --with-xft \&lt;br /&gt;
--with-gnome-vfs --with-python=/path/to/python/modules --enable-osxapp --enable-lcms \&lt;br /&gt;
--enable-poppler-cairo --enable-inkboard&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All essential steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to know how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: Excluded steps involve Pre-compiliation of the Python modules and installing the additional nightly build features.&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
The easiest way to do this is to create a new Macports installation, and to edit the $PREFIX/etc/macports/variants.conf file to have the following line: &lt;br /&gt;
&amp;lt;pre&amp;gt;+universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will cause Macports to install the Universal variant of each package you later ask it to install.&lt;br /&gt;
&lt;br /&gt;
If you already have non-universal versions of some ports installed, for each of these you may need to deactivate the port and rebuild it, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -f uninstall cairo&lt;br /&gt;
sudo port clean cairo&lt;br /&gt;
sudo port -v install cairo +universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal Inkscape ==&lt;br /&gt;
&lt;br /&gt;
First, Set your SDK, 10.5 for Leopard, 10.4u for TIger:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.5.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; (For Leopard)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.4u.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp;  (For Tiger)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, set up your environment to point to the Macports libraries:&lt;br /&gt;
&amp;lt;pre&amp;gt;export MACPORTS=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
export PATH=$MACPORTS/bin:$MACPORTS/sbin:/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$MACPORTS/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$MACPORTS/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$MACPORTS/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall -isysroot $SDK -arch ppc -arch i386&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The final step is to configure and compile Inkscape.  Inkscape must be configured with the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;   Sets the correct path for Inkscape to be used from an .app bundle&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;--disable-dependency-tracking&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; Dependency tracking can't be user when compiling universal binaries.&lt;br /&gt;
&lt;br /&gt;
Inkscape can then be built (with make), installed, and packaged into a Universal .app bundle using the standard .app bundle building instruction above.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+no_x11 cairomm pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing a second Macports tree (recommended approach) ==&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can set this second tree up to always build packages with specific variants.  For example, you can edit the /opt/local-native/etc/macports/variants.conf file to have the following line:&lt;br /&gt;
&amp;lt;pre&amp;gt;+universal +no_x11 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
You can remove the +universal if you only want to build inkscape for your host architecture.&lt;br /&gt;
You may also need to set alternate applications_dir and  frameworks_dir variables in the /opt/local-native/etc/macports/macports.conf file so that applications and frameworks install by this macports (for example by python) don't clash with your standard  macports tree.&lt;br /&gt;
&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathnative=&amp;quot;export PATH=/opt/local-native/bin:/opt/local-native/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&amp;diff=53735</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=53735"/>
		<updated>2009-08-29T09:07:44Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: Add the connector tool release notes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Inkscape 0.47==&lt;br /&gt;
'''(not released yet - [[AnnouncePlanning047]])'''&lt;br /&gt;
&lt;br /&gt;
==Refactoring effort==&lt;br /&gt;
&lt;br /&gt;
The focus of the 0.47 release was to clean up legacy code and push forward the migration to clean object-oriented C++. The goal of this effort was to increase reliability and maintainability of Inkscape. In the long run, it will mean fewer bugs and more new features, because it will be easier to develop and find bugs in Inkscape.&lt;br /&gt;
&lt;br /&gt;
===Migration to lib2geom===&lt;br /&gt;
Many parts of the code have been changed to use the 2Geom library for geometrical calculations instead of the old libnr and Livarot libraries.&lt;br /&gt;
&lt;br /&gt;
===Preferences===&lt;br /&gt;
Instead of global functions directly manipulating an XML document, the preferences API is now exposed through the &amp;lt;code&amp;gt;Inkscape::Preferences&amp;lt;/code&amp;gt; singleton. It abstracts away the way the preferences are stored in memory. In the future it may allow for different user settings storage backends (like GConf or the upcoming dconf on GNOME desktops or .plist files on OS X). Previously, Inkscape directly manipulated an internal XML document.&lt;br /&gt;
&lt;br /&gt;
==Tools==&lt;br /&gt;
&lt;br /&gt;
===Node tool===&lt;br /&gt;
&lt;br /&gt;
* When hovering over a path in the Node tool, the path's outline will be displayed for a short time. This effect, its duration and the color of the outline is configurable.&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;
* When dragging a node handle with Ctrl pressed, it now snaps not only to the 15 degree increments starting from 0 and to the original handle direction, but also to the direction of the opposite handle (if it exists) or of the opposite line segment (if it is a straight line).&lt;br /&gt;
* The behavior of the buttons/shortcuts that make a node smooth or cusp has been improved:&lt;br /&gt;
** If a node is already a cusp (diamond shaped), pressing Shift+C again on it will retract both its handles. As this works for any number of selected nodes, you can always retract all handles in all nodes by selecting all nodes and pressing Shift+C twice.&lt;br /&gt;
** If a non-smooth node is next to a straight line segment, pressing Shift+S once makes it ''half-smooth'': it now has one handle aligned with that line segment. Another press of Shift+S will expand the second handle as well turning it into a full smooth node. If a node is between two curve segments, Shift+S will expand both handles as before.&lt;br /&gt;
*'''Auto smooth nodes''': a new &amp;quot;auto&amp;quot; node type was added, similar to the one  Xara Xtreme has. An auto node is a smooth node which automatically adjusts (rotates and stretches) its handles when this node or its neighbors are moved. This adjustment (same as what you get when you convert node type to Smooth, but continuous) keeps the curve at this node as smooth as possible. It feels a bit like Spiro paths (see below); although not as smooth as a Spiro, auto nodes may often be preferable as they work without applying any Path Effect. Whenever you manually adjust the handles of an auto node or drag the adjacent curve, it loses its auto state and becomes simply smooth; for this reason, it is recommended to edit smooth nodes with the node handles hidden via a toggle button on the controls bar. Auto nodes are represented by little circles, as opposed to smooth/symmetric nodes (squares) and cusp nodes (diamonds). To convert selected node(s) to auto, press '''Shift+A''' or use the corresponding node type button on the controls bar.&lt;br /&gt;
&lt;br /&gt;
===Tweak tool===&lt;br /&gt;
&lt;br /&gt;
Several new modes are added to the Tweak tool for transforming, duplicating, and deleting selected objects using the same &amp;quot;soft brush&amp;quot; metaphor that the path editing and coloring modes use. Using these new modes, it is easy to &amp;quot;sculpt&amp;quot; scatterings of small objects, such as clone tilings, into complex and naturalistic textures.&lt;br /&gt;
&lt;br /&gt;
* '''Push mode''' moves those selected objects that are under the brush in the direction in which you move the brush. This is similar to the Push path mode, except that the Move mode affects entire objects and not parts of the paths under the brush.&lt;br /&gt;
&lt;br /&gt;
* '''Attract/Repel Objects mode'''  moves those selected objects that are under the brush towards the cursor (default) or away from cursor (with '''Shift''' pressed). This is similar to the Attract/repel path mode, except that the Move in/out mode affects entire objects and not parts of the paths under cursor.&lt;br /&gt;
&lt;br /&gt;
* '''Jitter mode''' moves those selected objects that are under the brush in random directions and by random amounts, but the overall amount of movement depends on Force, pen pressure (if you're using a tablet pen), on the closeness of the object to the center of brush, and on how long you apply the brush.&lt;br /&gt;
&lt;br /&gt;
* '''Scale mode''' scales those selected objects that are under the brush down (by default) or up (with '''Shift''' pressed). The speed of scaling depends on Force, pen pressure (if you're using a tablet pen), on the closeness of the object to the center of brush, and on how long you apply the brush.&lt;br /&gt;
&lt;br /&gt;
* '''Rotate mode''' rotates those selected objects that are under the brush clockwise (by default) or counterclockwise (with '''Shift''' pressed). The speed of rotation depends on Force, pen pressure (if you're using a tablet pen), on the closeness of the object to the center of brush, and on how long you apply the brush. &lt;br /&gt;
&lt;br /&gt;
* '''Duplicate/delete mode''' randomly duplicates those selected objects that are under the brush (by default) or deletes them (with '''Shift''' pressed). The chance of an object to be duplicated and deleted depends on Force, pen pressure (if you're using a tablet pen), on the closeness of the object to the center of brush, and on how long you apply the brush. Like with the regular Duplicate command, duplicating with Tweak tool places the copies right over the originals, and you may need to use the Jitter mode to ruffle them apart.  The duplicates created by the tool are automatically added to selection if the originals objects were in selection (e.g. if you're tweaking a group of objects, they are duplicated within that group and are not by themselves selected). &lt;br /&gt;
&lt;br /&gt;
*'''Blur mode''' blurs the selected objects under the brush more (by default) or less (with Shift pressed). The amount of blur added or removed depends on Force, pen pressure (if you're using a tablet pen), on the closeness of the object to the center of brush, and on how long you apply the brush. &lt;br /&gt;
&lt;br /&gt;
Also, the existing path editing modes of the tool have been rearranged: now Shrink and Grow are one mode (shrinks by default, grows with Shift), and Attract and Repel are one mode (attracts by default, repels with Shift). Here is a complete list of modes and shortcuts of the Tweak tool:&lt;br /&gt;
&lt;br /&gt;
 Shift+m, Shift+0	        move mode&lt;br /&gt;
 Shift+i, Shift+1	attract/repel objects mode&lt;br /&gt;
 Shift+z, Shift+2	jitter mode&lt;br /&gt;
 Shift+&amp;lt;, Shift+&amp;gt;, Shift+3	scale mode&lt;br /&gt;
 Shift+[, Shift+], Shift+4	rotate mode&lt;br /&gt;
 Shift+d, Shift+5	duplicate/delete mode&lt;br /&gt;
 Shift+p, Shift+6	push path mode&lt;br /&gt;
 Shift+s, Shift+7	shrink/grow path mode&lt;br /&gt;
 Shift+a, Shift+8	attract/repel path mode&lt;br /&gt;
 Shift+r, Shift+9	roughen mode&lt;br /&gt;
 Shift+c	        paint mode&lt;br /&gt;
 Shift+j	        color jitter mode&lt;br /&gt;
 Shift+b	        blur mode&lt;br /&gt;
&lt;br /&gt;
In Paint mode, painting with Shift inverts the color you're applying (e.g. when painting with yellow, Shift will switch the applied color to blue).&lt;br /&gt;
&lt;br /&gt;
===Calligraphy tool===&lt;br /&gt;
&lt;br /&gt;
* The tool's settings can now be saved and restored as presets.&lt;br /&gt;
&lt;br /&gt;
* When drawing with Alt pressed, Inkscape subtracts the path you have created from the selected path. With Shift, it unions with the selected path. This allows you to quickly patch or fix problems in a stroke you have drawn without leaving the tool.&lt;br /&gt;
&lt;br /&gt;
* The behavior of the tool when tracking a guide (drawing with Ctrl) has been improved:&lt;br /&gt;
&lt;br /&gt;
** The initial &amp;quot;jerk&amp;quot; when you start drawing is suppressed.&lt;br /&gt;
&lt;br /&gt;
** The undesired flipping of the stroke to the other side of the guide path, when drawing along closed paths, is fixed. &lt;br /&gt;
&lt;br /&gt;
** If you lose connection with your guide path, the tool tries to continue moving in the same direction as if by inertia, so as to minimize the tearoff jerk.&lt;br /&gt;
&lt;br /&gt;
===Paint Bucket tool===&lt;br /&gt;
* Paint Bucket is now more tightly integrated with potrace.  As a result, memory and CPU usage on each fill operation have been reduced significantly.&lt;br /&gt;
&lt;br /&gt;
===Eraser Tool===&lt;br /&gt;
A new eraser tool has been added. Its shortcut is Shift+E. It has two main modes:&lt;br /&gt;
&lt;br /&gt;
* Delete Objects mode where any shape touched by the tool is deleted completely. This operation is in line with &amp;quot;vector&amp;quot; editing.&lt;br /&gt;
* Cut mode where erasing acts similar to erasing in a standard bitmap editor. It acts on all objects in the current layer.&lt;br /&gt;
&lt;br /&gt;
===Pen and Pencil===&lt;br /&gt;
&lt;br /&gt;
Apart from the regular Bezier mode, the pen tool now provides several new modes:&lt;br /&gt;
&lt;br /&gt;
* '''Spiro mode''': This mode automatically applies the new Spiro Splines LPE (see the section on new effects) to any newly drawn path. As mentioned below, it is not yet possible to preview Spiros before the path is finished.&lt;br /&gt;
&lt;br /&gt;
* '''Polyline mode''': This mode makes it easy to draw many straight line segments in quick succession by disallowing curves (even when you drag with the mouse).&lt;br /&gt;
&lt;br /&gt;
* '''Paraxial polyline mode''': In this mode, you can create straight line segments that are parallel to one of the coordinate axes. Normally, each line segment is drawn perpendicular to the previous one. The direction of the line segment being drawn can be toggled with Shift. When clicking on the start anchor, the path is closed with an L-shaped segment (the direction of which can also be flipped with Shift).&lt;br /&gt;
&lt;br /&gt;
Furthermore, it is now possible to automatically apply predefined vector brushes to path strokes in pen and pencil tools. This is a first step towards [http://wiki.inkscape.org/wiki/index.php/Vector-brushes this blueprint].&lt;br /&gt;
&lt;br /&gt;
In Pencil tool, the controls bar now provides the '''Smoothing''' parameter, changeable in the range from 1 to 100, which controls how much smoothing is applied to the freehand line. Small Smoothing values produce rough lines with many nodes; large values give smooth lines with few nodes. Previously, this control was only available in Inkscape Preferences.&lt;br /&gt;
&lt;br /&gt;
====Pencil sketch mode====&lt;br /&gt;
[johan]&lt;br /&gt;
Press alt and sketch away, release alt to finalize result.&lt;br /&gt;
&lt;br /&gt;
===Text tool===&lt;br /&gt;
&lt;br /&gt;
* When editing multiline or flowed text, the '''PgUp''' and '''PgDn''' keys now work to move the cursor by one screen (i.e. by as many lines as fit into the screen at current zoom).&lt;br /&gt;
&lt;br /&gt;
* The usability of the font family drop-down list in the Text tool controls bar has been improved: it no longer steals focus, all keyboard shortcuts work as designed ('''Alt+X''' to access the family control, '''Alt+down''' to open the drop-down list with font previews, '''arrows''' to move in the list, '''Enter''' to set chosen font) and the completion feature works (start typing a family name and a pop-up list with possible completions appears). &lt;br /&gt;
&lt;br /&gt;
:A remaining problem that may be fixed in a future version is that the first opening of the drop-down list of family names may be slow (several seconds) if you have many fonts installed (the delay is Inkscape generating the previews for all fonts). Subsequent openings of the list are much faster.&lt;br /&gt;
&lt;br /&gt;
===Connector tool===&lt;br /&gt;
&lt;br /&gt;
* Connectors are now drawn to the edges of shapes, rather than to the bounding box of shapes.&lt;br /&gt;
* The routing buffer around shapes is now altered in the correct direction when the user changes this via the spacing control fon the connector toolbar.&lt;br /&gt;
* A bug has been fixed where the spinboxes on the connector toolbar did not properly respond to single clicks of their up and down arrows.&lt;br /&gt;
&lt;br /&gt;
==Path effects==&lt;br /&gt;
===Notable bug fixes and effect changes===&lt;br /&gt;
We try to refrain from changing the behavior of LPE's, because it will change appearance in old files when opened in new version of Inkscape (but not in any other SVG viewer or editor).  However, when an effect is really broken, we have to fix it:&lt;br /&gt;
&lt;br /&gt;
* The Pattern Along Path effect:&lt;br /&gt;
**The pattern used to be stretched across discontinuities. This has been fixed; now it treats a discontinuous path as a group of continuous paths and applies the effect separately to each. &lt;br /&gt;
** Successive copies of the pattern can now be fused into continuous paths (using the new &amp;quot;fuse nearby ends&amp;quot; feature) so that &amp;quot;filling&amp;quot; the result works as expected.&lt;br /&gt;
&lt;br /&gt;
===New effects===&lt;br /&gt;
&lt;br /&gt;
* '''Sketch''': Simulates hand-drawn lines. A set of parameters lets you tune the effect. They are all summarized in this [[:Image:SketchParameters.png|picture]].&lt;br /&gt;
&lt;br /&gt;
:[[Image:SketchExemple.png|300px]]&lt;br /&gt;
&lt;br /&gt;
* '''Hatches''' Fills the given shape with rough, configurable and randomized hatches, simulating a quick hand drawing.&lt;br /&gt;
:[[Image:hatches-lpe.png|300px]].&lt;br /&gt;
&lt;br /&gt;
* '''von Koch''': This effect creates fractal pictures. A collection of transformations (rotations, rescalings, etc...) is recursively applied to the input path. The transforms are derived from a &amp;quot;reference&amp;quot; path (a line segment) and a &amp;quot;generating&amp;quot; path (basically a collection of segments): the thransforms are the one needed to move the reference onto each segment of the generating path (components in the generating path having more than one segment might be used to define shearing/mirroring transforms). A famous example is the [http://en.wikipedia.org/wiki/Koch_snowflake von Koch's snowflake].&lt;br /&gt;
:[[Image:VonKochExample.png|300px]]&lt;br /&gt;
&lt;br /&gt;
:''Warning'': the complexity of the output path grows exponentially fast with the number of generations. As a guardrail, an (editable) complexity bound is provided, above which the effect is disabled.&lt;br /&gt;
&lt;br /&gt;
* '''Knot''': Creates a knot from a flat self intersecting curve. At each crossing, one string is interrupted to make it look like going under the other. The &amp;quot;sign&amp;quot; of each crossing can be set independantly. &lt;br /&gt;
:[[Image:KnotExample.png|300px]]&lt;br /&gt;
&lt;br /&gt;
:''Warning'': Should not be applied to groups yet, unless you don't want to edit the crossing signs.&lt;br /&gt;
&lt;br /&gt;
* '''Perspective paths''': Draw an arbitrary path as if viewed in perspective. This is work in progress. Known limitations (among others): It can only use the first perspective that exists in the document defs, and the perspective cannot be adapted interactively yet (the effect must be removed and reapplied after modifying the perspective). [max]&lt;br /&gt;
&lt;br /&gt;
* '''Spiro splines''' are a novel way of defining curvilinear paths [http://www.levien.com/spiro/ developed by Raph Levien]. It takes some getting used to, but for certain tasks (such as lettershape design) Spiros have a clear advantage over Bezier curves. Recently, Spiro support was added to the FontForge font editor; now it is available in Inkscape too, which means you can use all the convenient Inkscape path tools (moving and transforming groups of nodes, node sculpting, etc.) on Spiro paths.&lt;br /&gt;
&lt;br /&gt;
:A Spiro path is defined by a sequence of points, but unlike a regular path with Bezier curves, all Spiro points lie on the path and there are no off-path handles. The curvature of the path is defined entirely by the positions of the points and their types. The path behaves very similar to a springy rod which is forced to pass through the given points and which uses the minimum possible curvature to satisfy the requirement. As such, it feels quite natural and the resulting path is very smooth - not just superficially smooth (i.e. having no cusps), but smooth at a deeper level, which you can achieve with Beziers only after a lot of laborious tweaking. &lt;br /&gt;
&lt;br /&gt;
:To create a Spiro path, select any path and assign the &amp;quot;Spiro spline&amp;quot; path effect to it. There are no parameters. Each node of your path becomes a point of a Spiro path, depending on the type of node:&lt;br /&gt;
&lt;br /&gt;
:* Smooth nodes (those with two collinear Bezier handles; use Shift+S to make a node smooth) become smooth curve points of the Spiro path. Note that the length or direction of the Bezier handles of the source path is ignored; the only thing that matters is their collinearity.&lt;br /&gt;
&lt;br /&gt;
:* Cusp nodes of the source path become corner points of the Spiro path, like free hinges on the springy rod. Between two corner points, the path is always a straight line. To make a node cusp, retract its Bezier handles by Ctrl+click, or press Shift+C and move one of the handles so they are no longer collinear.&lt;br /&gt;
&lt;br /&gt;
:* Half-smooth nodes - those with one Bezier handle collinear with a straight line segment on the other hand - become &amp;quot;left&amp;quot; or &amp;quot;right&amp;quot; points on the Spiro path which behave exactly the same: they sit between a straight line and a curve and enforce that these two segments join smoothly without a cusp. To create such a node, make sure one of the segments is a line (select its ends and press Shift+L), then Ctrl+drag the remaining handle to make it snap to the direction of the straight line segment on the other side, or press Shift+S to lock it to that direction.&lt;br /&gt;
&lt;br /&gt;
:Note that what matters is the actual collinearity of a node's handles, regardless of the node type that the node has in the Node tool; for example, if a node designated as cusp (diamond-shaped) has collinear handles, it will become a smooth curve point of the Spiro path. &lt;br /&gt;
&lt;br /&gt;
:Some configurations of points do not converge and produce wild loops and spirals instead of a smooth curve. According to Raph, &amp;quot;The spline solver in this release is _not_ numerically robust. When you start drawing random points, you'll quickly run into divergence. However, &amp;quot;sensible&amp;quot; plates based on real fonts usually converge.&amp;quot; Avoid too sharp changes in direction between points to prevent divergence. Hopefully, the robustness of the algorithm will be improved in future releases.&lt;br /&gt;
&lt;br /&gt;
:For now, to edit Spiro paths viewing the result in real time, you have to use the Node tool; it is recommended to turn off the red highlight of the source path. The Pen tool does not yet allow you to preview a Spiro as you draw, although you can paste the Spiro effect on the path and see the result as soon as the path is finalized. &lt;br /&gt;
&lt;br /&gt;
:You can always use the Node tool to continue a Spiro path by duplicating and dragging away its end nodes. Also, when you have a Spiro path selected, you can add a new subpath to it with Pen or Pencil if you start drawing with Shift.&lt;br /&gt;
&lt;br /&gt;
* '''Construct Grid'''  [johan] Draws a grid using the first three nodes of a path. The center node defines the origin. The other two nodes define the direction and length of the two adjacent sides of the first cell. If a path has more than three nodes, the other nodes are ignored. One can select the number of cells in the two orthogonal directions.&lt;br /&gt;
&lt;br /&gt;
* '''Envelope Deformation''' allows you to deform an object (or a group of object) by deforming its sides. Modifications are done by deforming the four path parameters: Top, Bottom, Left and Right.&lt;br /&gt;
&lt;br /&gt;
* '''Ruler''': [max]&lt;br /&gt;
&lt;br /&gt;
* '''Interpolate Subpaths''': [Johan]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- These effects are still hidden or under developpement. unhide them when they are added...&lt;br /&gt;
&lt;br /&gt;
* '''Lattice Deformation''' allows you to deform an object (or a group of objects) by moving 16 control points.&lt;br /&gt;
&lt;br /&gt;
* '''Perpendicular bisector''' [max]&lt;br /&gt;
&lt;br /&gt;
* '''Angle bisector''' [max]&lt;br /&gt;
&lt;br /&gt;
* '''Tangent to a curve''' [max]&lt;br /&gt;
&lt;br /&gt;
* '''Circle through 3 points''' [max]&lt;br /&gt;
&lt;br /&gt;
* '''Circle with radius''' [max]&lt;br /&gt;
&lt;br /&gt;
* '''Freehand Shape''': [max]&lt;br /&gt;
&lt;br /&gt;
* '''Path Length''': [max]&lt;br /&gt;
&lt;br /&gt;
* '''Text Label''': [max]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* The '''Paste Path Effect''' command is enabled to assign the path effect of the clipboard to any number of paths, going recursively into groups if necessary.&lt;br /&gt;
&lt;br /&gt;
* A new command, '''Remove Path effect''' removes any path effects from all selected objects, going recursively into groups if necessary. &lt;br /&gt;
&lt;br /&gt;
* Along with the commands to open the path effects dialog and to paste path effects, the three commands were collected in a submenu under Path menu.&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;
* The Pen and Pencil tools now correctly work with paths with LPEs: you can continue such a path or add a new subpath to it by drawing with Shift, all preserving the effect applied to it.&lt;br /&gt;
&lt;br /&gt;
* Path type parameters can now link to existing shapes &amp;lt;b&amp;gt;and text&amp;lt;/b&amp;gt;, like clones do. Now it is possible to use text as input for the Pattern Along Path effect for example!&lt;br /&gt;
&lt;br /&gt;
* Lib2geom now has an implementation for EllipticalArc. For Inkscape, this means that it is now possible to directly copy-paste ellipse shapes on path parameters (e.g. 'pattern' in Pattern along Path), without the need to convert the ellipse object to path first. [needs coding and checking]&lt;br /&gt;
&lt;br /&gt;
===Live Path Effects for groups===&lt;br /&gt;
&lt;br /&gt;
LPE can now be assigned to a group. For most LPEs, the effect is applied recursively but for Bend Path or Deformations the result is more powerful : the distortion applies on the whole group. &lt;br /&gt;
&lt;br /&gt;
*You can as usual enter the group by double-clicking on it. &lt;br /&gt;
*It applies recursively, this means that a LPE can be assigned to groups of groups &lt;br /&gt;
*The Effect can be applied definitively with &amp;quot;Convert Object to path&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Live Path Effects stacking===&lt;br /&gt;
&lt;br /&gt;
With Live Path Effects stacking, more than one Live Path Effect can be assigned to an item. A new UI was created to control the stack.&lt;br /&gt;
&lt;br /&gt;
==Import/Export==&lt;br /&gt;
===PostScript and EPS import===&lt;br /&gt;
&lt;br /&gt;
Inkscape's capability to open or import PS and EPS files now uses Ghostscript instead of pstoedit. If you need to open files of these types, install Ghostscript and make sure the directory with the &amp;lt;code&amp;gt;ps2pdf&amp;lt;/code&amp;gt; utility from Ghostscript installation is in your PATH. On opening, you will see a preferences dialog similar to PDF import, which, for multipage PS files, allows you to select the page to open.&lt;br /&gt;
&lt;br /&gt;
===PDF import===&lt;br /&gt;
&lt;br /&gt;
* A new checkbox on the PDF import dialog, '''Replace PDF fonts with closest-named installed fonts''' (on by default) attempts to replace all font names in the imported PDF with the most similar names of those fonts installed on your system. For example, if the PDF uses the font &amp;quot;TimesNewRomanPSMT&amp;quot; and you have &amp;quot;Times New Roman&amp;quot; installed, that font will be used, which will likely give you a more correct appearance than the unknown font &amp;quot;TimesNewRomanPSMT&amp;quot; that will be displayed as the default sans serif font. This is a temporary fix necessary because Inkscape cannot yet extract the fonts from the PDF files it imports nor can it embed them into SVG; when it gets these capabilities, such font name conversion will become unnecessary because all fonts will be preserved. &lt;br /&gt;
&lt;br /&gt;
* Importing PDF files now works '''from the command line'''. For example,&lt;br /&gt;
&lt;br /&gt;
 inkscape file.pdf --export-plain-svg=file.svg&lt;br /&gt;
&lt;br /&gt;
:It will take the first page of the PDF and all the default import options, and save the result to SVG. If you try to import PDF without an &amp;lt;code&amp;gt;--export&amp;lt;/code&amp;gt; command, it will show the import options dialog as before and open the file in the UI.&lt;br /&gt;
&lt;br /&gt;
===PDF, PostScript, and EPS export===&lt;br /&gt;
&lt;br /&gt;
The new Cairo-based PS and EPS exporter provides much better support for various vector features, including clipping paths, patterns, and non-ASCII characters. Those features that are not supported by the targeted format are exported via embedded bitmaps that preserve the appearance. In particular:&lt;br /&gt;
&lt;br /&gt;
* '''transparency''' is always rasterized in PS or EPS but not PDF, as PDF supports vector transparency;&lt;br /&gt;
&lt;br /&gt;
* '''filters''', such as blur, are by default rasterized in all three formats (PS, EPS, PDF). This can be turned off by unchecking the &amp;quot;Rasterize filter effects&amp;quot; option in the UI or adding the '''--export-ignore-filters''' option via the command line. In this case, filtered objects are rendered as vectors without filters and without rasterization.&lt;br /&gt;
&lt;br /&gt;
* The '''resolution''' for rasterizing the filters can be set in the UI in the &amp;quot;Resolution for rasterization (dpi)&amp;quot; parameter or on the command line by '''--export-dpi''' parameter (same as used for exporting SVG documents to bitmaps). The default is 90 dpi. The '''rendering quality''' of filters for rasterization, as well as for bitmap export, is always the best possible regardless of what you have set in the Filters tab of Preferences (which only affects on-screen rendering). For example,&lt;br /&gt;
&lt;br /&gt;
 inkscape --export-pdf=out.pdf --export-dpi=300 file.svg&lt;br /&gt;
&lt;br /&gt;
:will export file.svg to out.pdf, rasterizing any filtered objects in it at 300 dpi. (If there are no filtered objects, the --export-dpi has no effect.)&lt;br /&gt;
&lt;br /&gt;
All of PS, EPS, and PDF export formats uniformly support the export area options (page or drawing) and the new export-id option: &lt;br /&gt;
&lt;br /&gt;
* You can now export a single object from a complex document (for example, a single layer) if you specify the ID of that object in the &amp;quot;Limit export to the object with ID&amp;quot; field in the GUI or via the '''--export-id=ID''' option on the command line. The export will show only that object (all others will not be exported). The BoundingBox (page size) of the exported PS/EPS/PDF file will correspond to the bounding box of that object. You can override this with &amp;quot;Export area is page&amp;quot; (GUI) or '''--export-area-page''' (command line) option which forces the output to have the size of the SVG document's page (this may not be possible with EPS, see below).&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Export area is page&amp;quot; (GUI) or '''--export-area-page''' (command line) option forces the output to have the size of the SVG document's page. This is the default for PS and PDF but not for EPS. &lt;br /&gt;
&lt;br /&gt;
**Note, the specification of the EPS format does not allow a bounding box to extend beyond the content. This is enforced by the Cairo graphics library which means that when --export-area-page is used with EPS export, the page bounding box will be trimmed inwards (but never outwards) to the bounding box of the content if it is smaller. If you want a file which has a %BoundingBox different from the bounding box of its content, you can use PS or PDF export formats instead of EPS, or add a white background rectangle with the required size to source document before exporting to EPS.&lt;br /&gt;
&lt;br /&gt;
** The '''--export-bbox-page''' command line parameter has been removed; use '''--export-area-page''' instead. &lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Export area is drawing&amp;quot; (GUI) or '''--export-area-drawing''' (command line) option forces the output to have the size of the exported objects' bounding box, regardless of page size. If no --export-id is specified, this means the bounding box of the entire drawing; with --export-id, this means the bounding box of the exported object only. This is the default for EPS. Note that checking &amp;quot;Export area is page&amp;quot; or using '''--export-area-page''' overrides this setting for PS and PDF output.&lt;br /&gt;
&lt;br /&gt;
* The '''--export-embed-fonts''' option is removed. Inkscape now always embeds and subsets all fonts used in the document when exporting PS, EPS, or PDF.&lt;br /&gt;
&lt;br /&gt;
===UniConvertor-based import and export===&lt;br /&gt;
&lt;br /&gt;
Inkscape can now use UniConvertor to import files of the following types:&lt;br /&gt;
&lt;br /&gt;
* Corel DRAW Compressed Exchange files (CCX)&lt;br /&gt;
* Corel DRAW 7-X4 document files (CDR)&lt;br /&gt;
* Corel DRAW 7-X4 Template files (CDT)&lt;br /&gt;
* Corel DRAW Presentation Exchange files (CMX)&lt;br /&gt;
* sK1 files (SK1)&lt;br /&gt;
* Computer Graphics Metafiles (CGM)&lt;br /&gt;
* Windows Metafiles (WMF)&lt;br /&gt;
* HPGL (AutoCAD) Plot files (PLT) Requires UniConvertor 1.1.4.&lt;br /&gt;
&lt;br /&gt;
Inkscape can now use UniConvertor to export files of the following types:&lt;br /&gt;
&lt;br /&gt;
* Windows Metafiles (WMF)&lt;br /&gt;
* sK1 files (SK1)&lt;br /&gt;
* HPGL (AutoCAD) Plot files (PLT) Requires UniConvertor 1.1.4.&lt;br /&gt;
&lt;br /&gt;
Text objects are not supported as of UniConvertor 1.1.4.&lt;br /&gt;
&lt;br /&gt;
On Windows, UniConvertor is included with Inkscape distribution and does not require separate installation.&lt;br /&gt;
&lt;br /&gt;
===HPGL export===&lt;br /&gt;
&lt;br /&gt;
In addition to the HPGL export via UniConvertor listed above, Inkscape can now export to HPGL (Hewlett-Packard Graphics Language) via an internal routine that is geared towards various cutters/plotters.&lt;br /&gt;
&lt;br /&gt;
===JavaFX export===&lt;br /&gt;
&lt;br /&gt;
[]&lt;br /&gt;
&lt;br /&gt;
===DXF import and export===&lt;br /&gt;
&lt;br /&gt;
* DXF export for Desktop Cutting Plotters is much faster than in previous versions. A new option was added to provide support for RoboMaster desktop cutting software. Also added support for polylines and polysplines.&lt;br /&gt;
&lt;br /&gt;
* DXF import is new. It supports a number of the simpler DXF shapes: line, Bezier spline, ellipse, circular arc, text.&lt;br /&gt;
&lt;br /&gt;
===PNG export===&lt;br /&gt;
&lt;br /&gt;
* PNG export has been updated to include metadata if present in the source SVG. This includes the Author, Copyright, Creation Time, Description, and Title fields. PNG metadata can be viewed using the ImageMagick &amp;lt;code&amp;gt;identify&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
* Export filenames that are relative (e.g. &amp;lt;code&amp;gt;../file.png&amp;lt;/code&amp;gt; or simply &amp;lt;code&amp;gt;file.png&amp;lt;/code&amp;gt;) are now resolved relative to the document's location. &lt;br /&gt;
This applies to the filenames you type in the Export dialog as well as those stored in export hints in the document itself (and used by the &amp;quot;Batch export&amp;quot; checkbutton as well as in command line export with &amp;lt;code&amp;gt;--export-use-hints&amp;lt;/code&amp;gt;). However, export filenames specified directly on the command line are not resolved, which in effect means they work, as before, from the current working directory from which you run the export command.&lt;br /&gt;
&lt;br /&gt;
==Autosave==&lt;br /&gt;
&lt;br /&gt;
Autosave has now been added to allow for automatic timed backups as work goes on. Saved versions are put in a designated directory and do not overwrite the original SVG file and each other. Go to Inkscape Preferences, Autosave tab, to enable this feature and specify the backup time interval, the directory, and the maximum number of saved backups (if this number is exceeded, old backups will start to be deleted).&lt;br /&gt;
&lt;br /&gt;
==Extensions==&lt;br /&gt;
&lt;br /&gt;
* The former Effects menu is renamed to '''Extensions'''. This is less confusing and better reflects the content of the menu: a collection of extensions, written mostly in Python, which perform various tasks with or without selection. &lt;br /&gt;
&lt;br /&gt;
===New and improved extensions===&lt;br /&gt;
&lt;br /&gt;
* The new '''Arrange &amp;gt; Restack''' extension restacks the Z-order of selected objects, from left to right, top to bottom (or vice versa), with radial outward or inward or by an arbitrary angle, specifying the base point for comparison (top, left, middle, etc.).&lt;br /&gt;
* The new '''Generate from Path &amp;gt; Extrude''' extension [ishmal]. The old Extrude effect has been renamed Motion. The new effect...?&lt;br /&gt;
* The new '''Generate from Path &amp;gt; Scatter''' extension [jfbarrud].&lt;br /&gt;
* The improved '''Modify Path &amp;gt; Add Nodes''' extension now also allows segments to be divided into a given number of subsegments.&lt;br /&gt;
* The new '''Modify Path &amp;gt; Convert to Dashes''' extension takes the dash pattern of the stroke and explicitly cuts the curve to duplicate this pattern. This is to allow desktop cutting plotters to cut dashed curves.&lt;br /&gt;
* The new '''Render &amp;gt; Add printing marks''' extension add useful printing marks and color bars required by printing bureaus. You can either manually define margins by which cut marks are created.&lt;br /&gt;
* The new '''Render &amp;gt; 3D Polyhedron''' extension allows drawing polyhedrons from scratch and render them from OBJ files.&lt;br /&gt;
* The new '''Render &amp;gt; Alphabet Soup''' extension is a vector rework of Matt Chrisholm's [http://www.theory.org/artprojects/alphabetsoup/main.html GPLed script]. Alphabet Soup randomly mashes glyph-elements together to make exotic looking text.&lt;br /&gt;
* The new '''Render &amp;gt; Cartesian Grid''' extension plots Cartesian (square) grids that do not fill the page, but offer three levels of division, logarithmic scales (with clutter-reduction and arbitrary base) and customisable line width. All like elements (eg x-axis subminor divisions) are put into subgroups together. A proper border is also drawn, with an independent line thickness.&lt;br /&gt;
* The new '''Render &amp;gt; Draw from Triangle''' extension takes a triangle drawn as a path (only the first three nodes of a path are counted) and allows to draw many triangle-related geometrical objects such as circumcircles, excentral triangles, etc. It also allows entry of custom trilinear coordinated and triangle centre functions, as well as computation of basic triangle properties such as area and semiperimeter.&lt;br /&gt;
* The new '''Render &amp;gt; Guides Creator''' extension allows creating easily horizontal and vertical guides for dividing equally the canvas. You can choose the divisions from None, 1/2, 1/3 ... to 1/10.&lt;br /&gt;
* The new '''Render &amp;gt; Polar Grid''' extension plots a polar co-ordinate grid, with options for arbitrary-base logarithmic subdivisions, clutter-reduction around the origin, circumferential labels and custom line widths.&lt;br /&gt;
* The new '''Render &amp;gt; Calendar''' extension draws a calendar for a given year with localizable month/weekday names, colors, and other options.&lt;br /&gt;
* The new '''Render &amp;gt; Foldable Box''' extension helps to design and construct paper boxes.&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. This is obviously just an aesthetical feature. It is not intended to create real braille text for visually impaired people but instead it is meant to enable an accurate graphical representation of braille text to be used in illustrations.&lt;br /&gt;
* The new '''Modify Path &amp;gt; Interpolate Attribute in a Group''' extension [Aurelio A Heckert]&lt;br /&gt;
* The new '''Web &amp;gt; JavaScript''' extensions [Aurelio A. Heckert]&lt;br /&gt;
&lt;br /&gt;
===API changes===&lt;br /&gt;
&lt;br /&gt;
While the &amp;quot;Live preview&amp;quot; checkbox is useful for most effects, for some it just does not make sense. Now, you can add the attribute &amp;lt;code&amp;gt;needs-live-preview=&amp;quot;false&amp;quot;&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;effect&amp;lt;/code&amp;gt; element in the .inx file of the effect to suppress this checkbox for your effect.&lt;br /&gt;
&lt;br /&gt;
Parameters passed to extensions (via the &amp;lt;param&amp;gt; element) now have a new boolean attribute - &amp;lt;code&amp;gt;gui-hidden&amp;lt;/code&amp;gt; to indicate that the parameter should not be represented in the GUI. If all parameters are marked as hidden no GUI is presented for such extension.&lt;br /&gt;
&lt;br /&gt;
All '''.inx''' files are now properly formatted XML files with its own namespace of: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://www.inkscape.org/namespace/inkscape/extension&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and a Relax NG schema to define it. More information can be found in the [[Extensions]] Article.&lt;br /&gt;
&lt;br /&gt;
==Filters==&lt;br /&gt;
&lt;br /&gt;
The Filter Editor (former Filter Effects) and Remove Filters commands are moved from the Object menu to the new '''Filters''' top-level menu, which also contains a collection of preset filters.&lt;br /&gt;
&lt;br /&gt;
===Preset filters===&lt;br /&gt;
&lt;br /&gt;
The Filter Editor is powerful, but can be quite cumbersome. You can now add complex preset filters to the selected objects with a single command by choosing it from the new '''Filters''' top-level menu. Submenus categorize the filters by function or appearance. Most filters apply immediately after selecting the command; some present a dialog where you can adjust some of the parameters before applying the filter (such filters have &amp;quot;...&amp;quot; at the end of the command in the menu). By default if the selected object already has some filter applied, the chosen filter will be merged with the existing filter for combined effect. However you can also apply several overlaid filters to an object while keeping them separated : simply press Ctrl+G after applying any filter and then apply another one ; the filters will then display separately into the Filters Editor.&lt;br /&gt;
&lt;br /&gt;
You can easily add your own filters to these menus. Simply place any SVG file with the filters to the &amp;lt;code&amp;gt;filters&amp;lt;/code&amp;gt; subdirectory of your config directory (&amp;lt;code&amp;gt;~/.config/Inkscape/&amp;lt;/code&amp;gt; on Linux) and the filters will be picked up. By default, they will be placed in the Personal submenu under Effects &amp;gt; Filters. If you want to control this, add the following attributes to the &amp;lt;code&amp;gt;filter&amp;lt;/code&amp;gt; element:&lt;br /&gt;
&lt;br /&gt;
 inkscape:label         is the command label&lt;br /&gt;
 inkscape:menu          is the submenu to place the command into&lt;br /&gt;
 inkscape:menu-tooltip  is the tooltip (displayed in the statusbar &lt;br /&gt;
                        as you select the command)&lt;br /&gt;
&lt;br /&gt;
===''No Filters'' rendering mode===&lt;br /&gt;
In order to facilitate editing documents that use lots of SVG filter effects, filter effects can now be disabled for a particular document window by selecting '''View|Display mode|No Filters''' from its menu.  This provides an intermediate step between &amp;quot;normal&amp;quot; and &amp;quot;outline&amp;quot; view modes.&lt;br /&gt;
&lt;br /&gt;
The Toggle view command in the Display mode submenu (Ctrl+keypad 5) toggles between the outline view and either regular or no-filters view, depending on which was used most recent.&lt;br /&gt;
&lt;br /&gt;
===Filter quality setting===&lt;br /&gt;
&lt;br /&gt;
Instead of the 'blur quality' setting, Inkscape now has a general 'filter effects quality' setting. It affects all filters and gives you an opportunity to find optimum balance between speed and accuracy when rendering filters.&lt;br /&gt;
&lt;br /&gt;
==SVG support==&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 &amp;lt;code&amp;gt;stroke:none&amp;lt;/code&amp;gt; and some of the fill properties when it has &amp;lt;code&amp;gt;fill:none&amp;lt;/code&amp;gt;. 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;
*The &amp;lt;code&amp;gt;opacity&amp;lt;/code&amp;gt; property is not written if it has the default value of 1 (this property is not inherited, so the change should have no side effects).&lt;br /&gt;
&lt;br /&gt;
*The &amp;lt;code&amp;gt;marker-start&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;marker-mid&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;marker-end&amp;lt;/code&amp;gt; properties are not written if the &amp;lt;code&amp;gt;marker&amp;lt;/code&amp;gt; property is already present with the same value.&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 '''SVG output''' page of Inkscape Preferences dialog, as well as 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) to switch relative coordinates on (1) or off (0)&lt;br /&gt;
* forcerepeatcommands (default 0) to force repeating operators (1) or allow use of the more compact representation without repeated operators (0)&lt;br /&gt;
&lt;br /&gt;
===No more explicit closing line segment===&lt;br /&gt;
Inkscape used to always explicitly write the closing line segment to SVG for closed paths. For example: &amp;quot;M 0,0 L 1,0 L 1,1 L 0,1 L 0,0 z&amp;quot;. With the improved SVG path data writing, Inkscape no longer generates this closing line segment, resulting in &amp;quot;M 0,0 L 1,0 L 1,1 L 0,1 z&amp;quot;.&lt;br /&gt;
When SVG path data input contains this explicit closing segment, it is maintained throughout transformations, but is removed after using the node edit tool.&lt;br /&gt;
[this seems no longer to be true, fix it!!! -johan]&lt;br /&gt;
&lt;br /&gt;
===Horizontal and vertical path segments===&lt;br /&gt;
&lt;br /&gt;
If an SVG contains paths with shorthands for horizontal and vertical path segments ('H' or 'V'), then Inkscape will try to maintain those shorthands if possible, so the saved file will also contain them.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;script&amp;gt; tag preserved===&lt;br /&gt;
&lt;br /&gt;
While Inkscape does not yet support SVG scripting via the &amp;lt;script&amp;gt; element, this element is now preserved after editing the file in Inkscape.&lt;br /&gt;
&lt;br /&gt;
===Initial SVG Fonts support===&lt;br /&gt;
&lt;br /&gt;
As a SoC 2008 project, JucaBlues implemented initial parsing and rendering of [http://www.w3.org/TR/SVG11/fonts.html SVG Fonts].&lt;br /&gt;
You can design fonts within Inkscape, but using them to render text on the canvas is not yet supported. We are waiting libpango to implement proper support for the user-fonts feature. &lt;br /&gt;
&lt;br /&gt;
Currently the main benefit of this feature is to improve the font design workflow when working with FontForge: You can save SVG files with fonts embedded and import them into Fontforge, and you only need one file per font instead of one file per glyph.&lt;br /&gt;
&lt;br /&gt;
You can open the SVG Font dialog through Text-&amp;gt;SVG Fonts menu option.&lt;br /&gt;
&lt;br /&gt;
There is a concept that has to be understood while using the SVG Font Editor. An SVG font is a mapping of chunks of SVG drawing to characters. When a certain character is used in a string, its respective glyph is rendered. If no glyph is declared for a certain character, then there is a default &amp;quot;missing glyph&amp;quot; that is rendered. You can set the drawing that defines this missing glyph also. This is done by clicking on the '''Missing Glyph: From Selection...''' button at the top of the dialog.&lt;br /&gt;
&lt;br /&gt;
So, an example of workflow would be:&lt;br /&gt;
&lt;br /&gt;
1. Click '''New font'''. Select it. You can rename it if you wish. You will see a set of black squares in the text preview area. This is the preview text being rendered. It only uses the default missing glyph (which is initially defined as a black square) because no specific glyph was defined yet.&lt;br /&gt;
&lt;br /&gt;
2. Draw something for your desired missing glyph&lt;br /&gt;
&lt;br /&gt;
3. Click '''Missing Glyph: From selection...'''&lt;br /&gt;
&lt;br /&gt;
4. Draw a glyph for the &amp;quot;a&amp;quot; character (character matching is case sensitive)&lt;br /&gt;
&lt;br /&gt;
5. On the '''Glyphs''' tab, click '''Add glyph'''&lt;br /&gt;
&lt;br /&gt;
6. Type &amp;quot;a&amp;quot; in the '''Matching String''' column (at the moment, handling of the glyph-name attribute is not implemented)&lt;br /&gt;
&lt;br /&gt;
7. With the row selected, click '''Get curves from selection...'''&lt;br /&gt;
&lt;br /&gt;
8. Now you will probably see the &amp;quot;a&amp;quot; glyph in the preview rendering, if the preview text contains it. You can freely edit the preview text as needed to view different characters.&lt;br /&gt;
&lt;br /&gt;
Repeat steps 4 through 7 for every other glyph you wish to add to your font.&lt;br /&gt;
&lt;br /&gt;
===SVG Test Suite Compliance===&lt;br /&gt;
&lt;br /&gt;
[describe what has been improved over 0.46 and point to recent test result website]&lt;br /&gt;
As a result of last year's GSoC, there is now a rendering test framework along with a number of tests (found in the SVN repository [http://inkscape.svn.sourceforge.net/svnroot/inkscape/gsoc-testsuite/tester/ here]. These tests can be run reasonably easily on any system (you don't need to be able to compile Inkscape) and include a large part of the [http://www.w3.org/Graphics/SVG/Test/ [[W3C]] SVG Test Suite]. See [http://home.hccnet.nl/th.v.d.gronde/inkscape/ResultViewer.html this list] for up-to-date rendering results. Also see [[TestingInkscape]] for information on running and creating rendering tests.&lt;br /&gt;
&lt;br /&gt;
List of render test changes with respect to 0.46:&lt;br /&gt;
...[files which failed on 0.46 and now pass, and vice versa]&lt;br /&gt;
&lt;br /&gt;
==Editing Aids==&lt;br /&gt;
&lt;br /&gt;
===Grids===&lt;br /&gt;
* The dotted rectangular grid now shows small crosses at the intersection points of emphasis lines.&lt;br /&gt;
&lt;br /&gt;
===Guides===&lt;br /&gt;
&lt;br /&gt;
* Guides can now be rotated using the mouse. Each guide has an anchor (visible as a little circle) around which it can rotate.&lt;br /&gt;
:*'''Drag''' a guide anywhere to move it.&lt;br /&gt;
:*'''Shift+drag''' to rotate a guide about its anchor (additionally press '''Ctrl''' to constrain the rotation angle to multiples of 15 degrees).&lt;br /&gt;
:*'''Ctrl+drag''' to move the anchor along the guide.&lt;br /&gt;
:*Press '''Del''' while hovering the mouse over the guide to delete it.&lt;br /&gt;
 &lt;br /&gt;
* There is now an option in the Preferences dialog ('''Tools''' page) to treat groups as single objects during conversion to guides (as opposed to converting each object inside the group separately).&lt;br /&gt;
&lt;br /&gt;
===Snapping===&lt;br /&gt;
&lt;br /&gt;
The code relating to the snapping mechanisms has undergone major changes to make it more reliable and easier to use from a developer's perspective. Snapping to objects now invokes routines from the 2geom library, which is actively maintained and less error prone than the old Livarot library. This fixes at least two known snapping bugs.&lt;br /&gt;
&lt;br /&gt;
There is a new toolbar to control the snapping options and modes. Use View &amp;gt; Show/Hide &amp;gt; Snap controls bar to show or hide this toolbar. To control some other new snapping features, a dedicated tab has been created in the preferences dialog. The new features found on this tab are:&lt;br /&gt;
* '''Snap indicator''': When snapping has occurred, an indicator is displayed at that specific position. For now that indicator is just a cross that disappears after a second. In the future the shape of the indicator will be related to the type of target that has been snapped to&lt;br /&gt;
* '''Snap delay''': Inkscape now optionally waits some time after the mouse pointer has stopped moving before it tries to snap. This makes Inkscape much more responsive on complex documents and allows moving objects in a straight line over a grid, amongst others. &lt;br /&gt;
* Inkscape can be forced to only try snapping the (source) node that is '''closest to the mouse pointer''', à la Corel DRAW. When this mode is enabled, a snap indicator will shortly be shown at that node. This will give you maximum control of the snapping which is useful for complex drawings with many nodes.&lt;br /&gt;
* When multiple snap solutions are found, Inkscape can either prefer the closest transformation (when the weight-slider is set to 0; this is the old mode), or prefer the moved object's node that was initially the closest to the pointer (when the slider is set to 1). The way Inkscape calculates the preferred snap has been improved too, which should lead to more predictable snapping.&lt;br /&gt;
&lt;br /&gt;
Other improvements are:&lt;br /&gt;
* The '''Node tool''' now snaps to any unselected node (both cusp and smooth) within the path that's being edited, and nodes of other paths. It also snaps to the path itself, but only to the stationary segments in between two unselected nodes. It is now also possible to snap while moving nodes along a vertical or horizontal constraint.&lt;br /&gt;
* In the document properties dialog, the checkbox for &amp;quot;always snap&amp;quot; has been replaced by two radiobuttons; this should eliminate most of the confusion surrounding this option.&lt;br /&gt;
* Holding the Shift key now also disables snapping while dragging node handles, and while creating single dots&lt;br /&gt;
* During constrained drawing (using Ctrl), Inkscape will now only snap to the points on the constrained line.&lt;br /&gt;
* In the selector tool, snapping while skewing or moving with a constraint (with Ctrl) has been improved.&lt;br /&gt;
* Also in the selector tool, while translating, Inkscape will now snap the bounding box of each selected item individually instead of the selection as a whole&lt;br /&gt;
&lt;br /&gt;
Inkscape now also considers the following objects for snapping:&lt;br /&gt;
* Clipping paths and masks&lt;br /&gt;
* Midpoints of line segments&lt;br /&gt;
* Midpoints of bounding box edges&lt;br /&gt;
* Page border&lt;br /&gt;
* Intersections of any kind of paths&lt;br /&gt;
* Smooth nodes&lt;br /&gt;
* Cusp nodes&lt;br /&gt;
* Each of the handle points when creating new shapes&lt;br /&gt;
* Radius handles of rectangles&lt;br /&gt;
* Single dots&lt;br /&gt;
&lt;br /&gt;
==Other features==&lt;br /&gt;
&lt;br /&gt;
===Spell checker===&lt;br /&gt;
&lt;br /&gt;
There's now a built-in spell checker. Press '''Ctrl+Alt+K''' or choose ''Text &amp;gt; Check spelling'' to check all visible text objects in your document (they need not be selected) in turn, going top-to-bottom and left-to-right. Once a misspelled word is found, a red frame around it is displayed, and the object with the misspelling is selected; if you are in Text tool, it also places the text cursor at the beginning of the misspelled word. &lt;br /&gt;
&lt;br /&gt;
In the dialog, you can choose one of the listed suggestions and '''Accept''' it (this button is disabled unless you choose something in the list); '''Ignore''' the word for the rest of this session; or '''Add''' the word to the local dictionary.&lt;br /&gt;
&lt;br /&gt;
Also, since the dialog does not lock Inkscape's window, you can simply edit the word with Text tool. Once you edit it to something acceptable to the speller, it will automatically turn off the red frame and continue checking the&lt;br /&gt;
document. &lt;br /&gt;
&lt;br /&gt;
On Linux, you need to install Aspell and its dictionaries for the languages you want to check. On Windows, for now, only the English dictionary is included with Inkscape builds. &lt;br /&gt;
&lt;br /&gt;
===Desktop integration improvements===&lt;br /&gt;
&lt;br /&gt;
* '''Clipboard is system-wide''' - you can now copy/paste objects between different Inkscape instances as well as between Inkscape and other applications (which must be able to handle SVG on the clipboard to use this).&lt;br /&gt;
&lt;br /&gt;
* '''Open Recent menu''' now integrates with Windows recent documents management as well as freedesktop.org recent document lists (used by Gnome, KDE and Xfce). The list can be cleared from the Preferences dialog (the Interface tab).&lt;br /&gt;
&lt;br /&gt;
* '''Themable Icons''' - all icons used in Inkscape are now themable using the standard freedesktop.org theming mechanism. The list of names used is available [[themable icons|here]].&lt;br /&gt;
&lt;br /&gt;
===Shell mode===&lt;br /&gt;
&lt;br /&gt;
If you run inkscape with &amp;lt;code&amp;gt;--shell&amp;lt;/code&amp;gt;, it will enter a shell mode. In this mode, you type in commands at the prompt and Inkscape executes them, without you having to run a new copy of Inkscape for each command. This feature is mostly useful for scripting and server uses: it adds no new capabilities but allows you to improve the speed and memory requirements of any script that repeatedly calls Inkscape to perform command line tasks (such as export or conversions). Each command in shell mode must be a complete valid Inkscape command line but without the Inkscape program name, for example:&lt;br /&gt;
&lt;br /&gt;
 $ inkscape --shell&lt;br /&gt;
 Inkscape 0.46+devel interactive shell mode. Type 'quit' to quit.&lt;br /&gt;
 &amp;gt;file.svg --export-pdf=file.pdf&lt;br /&gt;
 &amp;gt;otherfile.svg --export-png=bitmap.png&lt;br /&gt;
 Background RRGGBBAA: ffffff00&lt;br /&gt;
 Area 0:0:744.094:1052.36 exported to 744 x 1052 pixels (90 dpi)&lt;br /&gt;
 Bitmap saved as: bitmap.png&lt;br /&gt;
 &amp;gt;quit&lt;br /&gt;
&lt;br /&gt;
===Gesture-based stroke width adjustment===&lt;br /&gt;
CHECK: Maximum factor = 4? Minimum to 0?&lt;br /&gt;
&lt;br /&gt;
Similar to editing the fill or stroke colors by dragging away from the swatch in the status bar, which was added in the last version, this version allows you to drag away from the stroke width value displayed there to change the stroke width of selection. Dragging above the 45-degree line from the swatch increases the width (up to twice the original width), dragging below it decreases the width (down to half the original width). With this feature, quick and precise stroke width adjustments are possible without opening any dialogs or menus.&lt;br /&gt;
&lt;br /&gt;
===Enhanced tablet support===&lt;br /&gt;
&lt;br /&gt;
====Input device tool switching====&lt;br /&gt;
&lt;br /&gt;
Tablets and other input devices that report separate hardware are now recognized and current tool and/or settings can be set to switch in response to the physical tool being used.&lt;br /&gt;
&lt;br /&gt;
====Extended input device configuration====&lt;br /&gt;
&lt;br /&gt;
IS THIS ENABLED? I DON'T SEE ANY DIFFERENCE FROM 0.46 ON LINUX&lt;br /&gt;
&lt;br /&gt;
The stock Input Devices dialog has been replaced with a completely redone version that provides a more useful representation of settings. It also contains a simple area for testing different inputs of different devices.&lt;br /&gt;
&lt;br /&gt;
Additionally hardware setup itself has been separated from general settings to allow for easier dynamic switching of settings appropriate to the task at hand.&lt;br /&gt;
&lt;br /&gt;
===Layers===&lt;br /&gt;
&lt;br /&gt;
The Layers dialog now allows for hiding or showing all layers other than the current layer (click on layer&lt;br /&gt;
name with right mouse button to get pop-up menu). This &amp;quot;solo&amp;quot; feature allows for faster switching between working layers and for quick checking with and without others shown.&lt;br /&gt;
&lt;br /&gt;
A new command, '''Duplicate Layer''', has been added to the Layers menu to allow for duplicating an existing layer with all of its objects (even hidden or locked objects) and any sub-layers.&lt;br /&gt;
&lt;br /&gt;
The Add Layer dialog can be opened with '''Ctrl+Shift+N''' (N for new) shortcut.&lt;br /&gt;
&lt;br /&gt;
Layer names can now be non-unique.&lt;br /&gt;
&lt;br /&gt;
Several layer-handling inconsistencies have been fixed.&lt;br /&gt;
&lt;br /&gt;
===Linked bitmaps===&lt;br /&gt;
Linked bitmaps have a context menu option to launch editing in an external application. Linked images now will reload when the linked file changes on disk. Both the external editor application and the reload behavior is configurable.&lt;br /&gt;
&lt;br /&gt;
===Command for relinking clones===&lt;br /&gt;
&lt;br /&gt;
A new command, '''Relink Clone to Copied''' in ''Edit &amp;gt; Clone'', allows you to relink any clone to a different original object without changing its other properties. Just copy (Ctrl+C) the object you want to be the new original, select any number of clones, and choose the Relink command. Now all selected clones are linked to the copied object.&lt;br /&gt;
&lt;br /&gt;
===Automatic relinking of clones on Duplicate===&lt;br /&gt;
&lt;br /&gt;
If you turn on the '''When duplicating original+clones: Relink duplicated clones''' option on Clones tab of Inkscape Preferences (default is off), duplicating a selection containing both a clone and its original (possibly in groups) will relink the duplicated clone to the duplicated original instead of the old original.&lt;br /&gt;
&lt;br /&gt;
===Pattern editing===&lt;br /&gt;
&lt;br /&gt;
When editing pattern fills:&lt;br /&gt;
* The pattern origin and scale handles now snap.&lt;br /&gt;
* The pattern scaling can now be different in X and Y direction. Press '''Ctrl''' to have a fixed 1:1 ratio scaling (old behavior). (TOOLTIP STILL SAYS &amp;quot;Scale the pattern fill uniformly&amp;quot;)&lt;br /&gt;
* The handles are now positioned at the corners  of the unit cell, instead of only a quarter of that cell as before. So, now a rectangle filled with pattern will have all of the pattern handles in the corners, making it harder to manipulate them. However, the handles can be dragged outside the rectangle by moving the pattern's origin handle.&lt;br /&gt;
&lt;br /&gt;
===Transform dialog: spacing out option===&lt;br /&gt;
&lt;br /&gt;
Previously, the '''Apply to each object separately''' checkbox had no effect for the '''Move''' tab. Now, if several objects are selected, this checkbox is on, and &amp;quot;Relative move&amp;quot; is on, each object is shifted relative to the closest selected object on the left (for X) or below (for Y). &lt;br /&gt;
&lt;br /&gt;
For example, if you have a horizontal row of objects and you move them relatively by x = 5 px with &amp;quot;Apply to each object separately&amp;quot; on, the leftmost object will shift by 5px, the next one to the right by 10px, and so on; the rightmost selected object is displaced by 5*n px where n is the number of selected objects. As a result, the distance in each pair of adjacent objects will increase by 5px and the whole row will be spaced out, much like a letterspacing adjustment spaces out a text string. Moving these objects by X=-5px will, conversely, squeeze them tighter together: the leftmost will move by -5px, the next one by -10px, and so on. For Y, the effect is the same except that the move starts from the object closest to the bottom (i.e. with smallest Y coordinate).&lt;br /&gt;
&lt;br /&gt;
When determining the order of shifting objects, for X, the left edges of their bounding boxes are sorted horizontally, and for Y, the bottoms of their bounding boxes are sorted vertically. Order of selecting the objects or z-order does not matter.&lt;br /&gt;
&lt;br /&gt;
===Converting text to path produces a group===&lt;br /&gt;
&lt;br /&gt;
Converting a text or flowed text to path (Ctrl+Shift+C) now produces a group of paths, one path for each glyph of text, instead of a single monolithic path as before. Apart from easier manipulation, an additional advantage is that if your text contained styled spans (i.e. fragments with different color, opacity, or other properties), these styles will be preserved by the corresponding glyph paths after the conversion.&lt;br /&gt;
&lt;br /&gt;
===Combine works on groups===&lt;br /&gt;
&lt;br /&gt;
The Combine command now works transparently on groups, i.e. combines paths inside selected groups at any level of grouping.&lt;br /&gt;
&lt;br /&gt;
===Path exclusion===&lt;br /&gt;
The Exclusion boolean operation can now operate on an arbitrary number of paths.&lt;br /&gt;
&lt;br /&gt;
==User interface==&lt;br /&gt;
&lt;br /&gt;
===Inkscape Preferences dialog===&lt;br /&gt;
&lt;br /&gt;
* This dialog has been rearranged for more logical grouping of options. New pages have been added: '''Bitmaps''' (options for the new update-on-file-change and external editor features), '''UI''' (options for toolbar icon sizes), and '''SVG Output''' (options for SVG formatting, introduced in 0.46 and now editable from the dialog as well). &lt;br /&gt;
&lt;br /&gt;
* A new option on the Bitmaps tab, '''Resolution for Create Bitmap Copy''', allows you to set the resolution of the bitmap created by the corresponding command (by default bound to Alt+B). The default value of 90 dpi forces the resulting bitmap to align with the default 1px-spaced grid on the canvas.&lt;br /&gt;
&lt;br /&gt;
* '''Zoom correction factor''': the Interface tab has an adjustable ruler. Move the slider until the ruler's on-screen size matches its true size. This is used as a reference point for 100% (original size) zoom.&lt;br /&gt;
&lt;br /&gt;
* The application's interface language can be set from the preferences dialog. You'll have to restart Inkscape to see the changes.&lt;br /&gt;
&lt;br /&gt;
===Toolbars===&lt;br /&gt;
&lt;br /&gt;
* The toolbar icon sizes for the three main toolbars are now separately configurable and to a few different sizes. This allows for a more compact user interface.&lt;br /&gt;
* The main tools toolbar has been converted to a standard GtkToolbar, removing the problem of it pushing the main window taller. Tools that don't fit automatically flow into a popup menu.&lt;br /&gt;
* When torn off, toolbars now keep the size they last had in the main window. They can be resized by docking, resizing the main window, and then undocking again.&lt;br /&gt;
* Some controls (such as the Width in Calligraphic/Tweak/Eraser tools, Tremor, Wiggle, and Mass in Calligraphic, Threshold in Paintbucket, Tolerance in Pencil) are converted from numeric editable fields into draggable sliders, with labels and values (usually in the range 0..100) displayed on top. As these values don't usually require much precision, this makes adjusting them much easier and faster.&lt;br /&gt;
&lt;br /&gt;
===Clone/original visualization===&lt;br /&gt;
&lt;br /&gt;
When you press Shift+D to find and select the original of the selected clone, Inkscape draws a dashed line between the centers of the bounding boxes of the clone and the original. This line disappears after one second.&lt;br /&gt;
&lt;br /&gt;
===Miscellaneous===&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;
* Hovering over a swatch now shows the name of the swatch in the status bar. This makes it easier for tablet users to identify a swatch by name, as holding a stylus still enough for the tooltip to show up is difficult.&lt;br /&gt;
* File Dialogs:&lt;br /&gt;
** The Windows builds of Inkscape now have Windows-native file dialogs to keep consistency with other Windows applications.&lt;br /&gt;
** Two new entries in the File type list, All Bitmaps and All Vectors, allowing you to limit the listing to bitmap or vector formats only.&lt;br /&gt;
* In the Align and Distribute dialog there is now an option to treat all selected objects as a group when aligning. This spares the trouble of manually grouping them, aligning, and ungrouping afterwards).&lt;br /&gt;
* Document Properties Dialog:&lt;br /&gt;
** New Color Management tab. In this new tab, you can declare multiple ICC color profiles for the current document.&lt;br /&gt;
** New Script tab. ?&lt;br /&gt;
* Object Properties Dialog:&lt;br /&gt;
** New Title and Description fields. The Title attribute is intended to be used as tooltip. [sas]&lt;br /&gt;
** New Interactivity section to add JavaScript calls.&lt;br /&gt;
&lt;br /&gt;
==Notable bug fixes==&lt;br /&gt;
&lt;br /&gt;
* Several '''memory leaks''' are stopped, reducing the memory consumption during long editing sessions considerably. Closing the last window with a document now frees memory used by that document immediately. &lt;br /&gt;
&lt;br /&gt;
* Inkscape is now able to handle paths with only 'movetos', i.e. &amp;quot;M 0,0 M 1,1 M 2,2&amp;quot;. These kind of paths can be used to only show markers on a path without the rest of the path visible.&lt;br /&gt;
&lt;br /&gt;
* The '''visual bounding box''' (which is the default bounding box type used by Inkscape) of an object with a filter applied, now includes the expanded area of the filter. For '''single blur filter''' (such as the blur you apply with a slider in the Fill and Stroke dialog), this expands the bounding box by 2.4*radius; although theoretically, blur is infinite, this is the distance at which the opacity of the object drops below the perceptibility threshold of our renderer. For all other filters, the area is expanded by the relative amounts you specify on the &amp;quot;Filter general settings&amp;quot; tab of the Filter Effects dialog.&lt;br /&gt;
&lt;br /&gt;
:Only visual bounding box is affected; if you use geometric bounding box, you will notice no change in most cases. However, the Export bitmap dialog always uses the visual bounding box for selection of the export area; this means that you can now export a blurred object to bitmap without any clipping of the blur.&lt;br /&gt;
&lt;br /&gt;
* Bounding box calculation does not include the invisible objects. [https://bugs.launchpad.net/inkscape/+bug/252547 bug #252547]&lt;br /&gt;
&lt;br /&gt;
* Several fixes allows Inkscape to correctly render and edit SVG files that use &amp;lt;code&amp;gt;currentColor&amp;lt;/code&amp;gt; in objects' style (this includes files created by gnuplot).&lt;br /&gt;
&lt;br /&gt;
* '''No more ID clashes on import and paste''': previously, importing or pasting SVG objects might sometimes distort their colors, because the imported objects referred to gradients with the same IDs as those that already exist in the document but look different. Now, IDs of all gradients in the pasted document are checked for clashes with those in the host document, and if necessary changed with all their users updated correspondingly, so such unexpected color changes will never happen.&lt;br /&gt;
&lt;br /&gt;
* File dialogs remember last visited directory.&lt;br /&gt;
&lt;br /&gt;
* The --vacuum-defs command line parameter erroneously deleted markers which are in use.&lt;br /&gt;
&lt;br /&gt;
* No more garbage lines in outline mode.&lt;br /&gt;
&lt;br /&gt;
* No more artifacts left by the circle cursor in Tweak tool.&lt;br /&gt;
&lt;br /&gt;
* The Live Path Effects '''Bend Path''' and '''Pattern along Path''' now work correctly with closed paths.&lt;br /&gt;
&lt;br /&gt;
* Several '''[[ViewBoxToDo|viewBox]]''' related bugs fixed&lt;br /&gt;
** Documents with viewBox are now editable without transformation defects. In particular this affected documents created with e.g. pstoedit. [https://bugs.launchpad.net/inkscape/+bug/168370 bug #168370]&lt;br /&gt;
** Resizing the page adjusts viewBox. [https://bugs.launchpad.net/inkscape/+bug/167682 bug #167682]&lt;br /&gt;
** preserveAspectRatio parsing code fixed. [https://bugs.launchpad.net/inkscape/+bug/166885 bug #166885]&lt;br /&gt;
&lt;br /&gt;
* open paths (as opposed to closed paths) are now correctly drawn when start and end points are equal. (SVG test suite ''paths-data-10-t.svg'')&lt;br /&gt;
&lt;br /&gt;
* The shorthand 'marker' property is now correctly interpreted (SVG test suite ''painting-marker-03-f.svg'')&lt;br /&gt;
&lt;br /&gt;
* Coordinates and lengths specified in percentages are now correctly interpreted (SVG test suite ''coords-units-02-b.svg'')&lt;br /&gt;
&lt;br /&gt;
* Horizontally scrolling the canvas with a tilt wheel (present on several Logitech mice like the LX5) in the Bezier tool will no longer finish creating the path.&lt;br /&gt;
&lt;br /&gt;
* Various fixes to PS and PDF rendering of objects involving masks, patterns, and/or bitmaps. [https://bugs.launchpad.net/inkscape/+bug/208217 bug #208217], [https://bugs.launchpad.net/inkscape/+bug/217212 bug #217212].&lt;br /&gt;
&lt;br /&gt;
=Known issues=&lt;br /&gt;
&lt;br /&gt;
* First time opening of the drop-down list with font families in Text tool may be slow, especially if you have many fonts installed. Subsequent accesses of this list are fast. &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>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=52977</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=52977"/>
		<updated>2009-06-17T06:12:57Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: Make the native macports process easier.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo boehmgc gtkmm gtk-engines2 intltool libxslt lcms popt poppler boost \ &lt;br /&gt;
 gnome-vfs libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: subversion is pre-installed on Leopard, so you may be fine leaving subversion out of the port install command chain.&lt;br /&gt;
&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm gtk-engines2 intltool libxslt lcms popt boost gsl&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X, though at least it should install fine]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above. &lt;br /&gt;
If you're unsure about MacPorts commands, you can find a guide that is easy to skim here: [http://guide.macports.org/ MacPorts Guide]&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More recent (Sep 2008) pre-packaged nightly builds for Mac OS X also feature additional dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install librsvg libwpd libwpg libcroco&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: At the time of editing (2008-12-01) there was a problem fetching &amp;quot;lzmautils&amp;quot; as the URL MacPorts tried to use as download source dies in a timeout. &lt;br /&gt;
As this package is needed as a dependency for one or more packages noted above you need to download the source tarball of lzmautils from somewhere else (for example, from [ftp://sunfreeware.mirrors.tds.net/pub/sunfreeware/SOURCES/lzma-4.32.7.tar.gz here]) and put that into the local MacPorts repository at &amp;quot;/opt/local/var/macports/distfiles/lzmautils&amp;quot;. You should now be able to run the commands above.&lt;br /&gt;
&lt;br /&gt;
Also make sure that you have &amp;quot;libxml2&amp;quot; and &amp;quot;libxslt&amp;quot; installed with MacPorts. This should have been installed previously, either directly or as a dependency.&lt;br /&gt;
You will need those later to compile the &amp;quot;lxml&amp;quot; Python module if you want to use Python effects. First check what's installed and if they are missing from your MacPorts repository install them by doing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;port installed&lt;br /&gt;
sudo port install libxml2 libxslt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pre-compiling the Python modules  ==&lt;br /&gt;
&lt;br /&gt;
If you cannot use the pre-built Python modules from [http://inkscape.modevia.com/macosx-snap/?C=M;O=D Modevia], say, because you're using an unsupported Python version or you just want to install from source you need to pre-compile both modules.&lt;br /&gt;
&lt;br /&gt;
In case you are using a Python version installed through MacPorts do a search for both modules and install the ones suitable for the Python version activated within MacPorts.&lt;br /&gt;
&amp;lt;pre&amp;gt;port search lxml numpy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are using Leopard's default Python 2.5.1 installation or a more recent one (e.g. MacPython 2.6) you will need to compile both modules outside of MacPorts. Download both modules from [http://pypi.python.org PyPI] if they are available there for your Python version. At the time of editing (2008-12-01) both modules were only available through SVN for Python 2.6.&lt;br /&gt;
&lt;br /&gt;
There are lots of tutorials for building and installing the &amp;quot;numpy&amp;quot; module. One good place to start looking is the [[GettingEffectsWorking#on_Mac_OS_X|Getting Effects Working]] entry referenced at the end of this guide. &lt;br /&gt;
&lt;br /&gt;
Building the &amp;quot;lxml&amp;quot; module deviates a little from the standard way, so if you cannot install it try the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /path/to/lxml/source&lt;br /&gt;
sudo python setup.py install \&lt;br /&gt;
--with-xslt-config=/opt/local/bin/xslt-config \&lt;br /&gt;
--with-xml2-config=/opt/local/bin/xml2-config&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This tells it to use the libxml2 and libxslt packages we installed earlier with MacPorts instead of Mac OS X' default versions, which have been known to cause problems when trying to build &amp;quot;lxml&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If you are compiling the Python modules outside of MacPorts you will need to make a mental note for after running the .app-bundle building script (detailed [[CompilingMacOsX#Creating_an_.app_bundle|later]] in this guide) to copy the &amp;quot;lxml&amp;quot; and &amp;quot;numpy&amp;quot; dirs from the standard installation destination (by default &amp;quot;/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages&amp;quot; for MacPython 2.6 and &amp;quot;/Library/Python/2.5/site-packages/&amp;quot; for Leopard's default Python 2.5.1 installation) to either&lt;br /&gt;
* the &amp;quot;extensions&amp;quot; folder inside the Inkscape.app bundle (&amp;quot;Inkscape.app/Contents/Resources/extensions&amp;quot;) if all you care about is getting the Inkscape build to work with your Python version. This method is more foolproof but supports only one Python version.&lt;br /&gt;
* the &amp;quot;site-packages&amp;quot; folder inside the Inkspace.app bundle. The &amp;quot;site-packages&amp;quot; folder is the right place for putting your pre-compiled Python modules if you want to redistribute your build. Make a subfolder within &amp;quot;site-packages&amp;quot; with the name of your arch (&amp;quot;i386&amp;quot; for Intel, &amp;quot;PPC&amp;quot; for PowerPC or type &amp;lt;code&amp;gt;arch&amp;lt;/code&amp;gt; into a Terminal window) and another subfolder within the arch folder with the name of your Python version (e.g. &amp;quot;2.5&amp;quot; or &amp;quot;2.6&amp;quot; etc.). This allows you to include support for multiple Python versions with your Inkscape build. Note, however, that if someone has multiple Python versions installed they may run into problems with the PATH order exported by the internal script (&amp;quot;Inkspace.app/Contents/Resources/bin/inkscape&amp;quot;) responsible for preparing the Inkscape launch environment. &lt;br /&gt;
&lt;br /&gt;
Armed with this knowledge you should be able to take care of the &amp;quot;...needs the fantastic libxml2 wrapper...&amp;quot; message when executing Python effects. Normally the &amp;lt;code&amp;gt;osx-app.sh&amp;lt;/code&amp;gt; script (detailed [[CompilingMacOsX#Creating_an_.app_bundle|later]])  should take care of this for you, but if for whatever reason it didn't you know how to copy the modules manually.&lt;br /&gt;
&lt;br /&gt;
For further info refer to the [[GettingEffectsWorking#on_Mac_OS_X|Getting Effects Working]] section of this wiki.&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's an example which covers most options that can be set:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/ --with-xft \&lt;br /&gt;
--with-gnome-vfs --with-python=/path/to/python/modules --enable-osxapp --enable-lcms \&lt;br /&gt;
--enable-poppler-cairo --enable-inkboard&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All essential steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to know how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: Excluded steps involve Pre-compiliation of the Python modules and installing the additional nightly build features.&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Update Macport sources ==&lt;br /&gt;
&lt;br /&gt;
The port descriptions in Macports do not currently all compile properly with their Universal variants.   For this reason, we currently use a modified set of some of the portfiles that will compile a universal libraries.  Work is being done to integrate these changes into Macports itself.&lt;br /&gt;
&lt;br /&gt;
You can use our modified portfiles by adding our ports to your sources:&lt;br /&gt;
&lt;br /&gt;
1. Checkout our ports directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/experimental/trunk/mjwybrow/ports ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Edit your sources list to include this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
And add the following line *before* the existing rsync source:&lt;br /&gt;
&amp;lt;pre&amp;gt;file:///Users/YOURUSERNAME/directory/to/ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Run the portindex command in the checked-out port directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;portindex&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Run port sync&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile Inkscape's essential dependencies as Universal libraries on either 10.4 or 10.5,  by giving the &amp;quot;+universal&amp;quot; option for each, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -v install poppler +universal gtk2 +universal ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you already have non-universal versions of these ports installed you may need to deactivate the port and rebuild it, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -f uninstall cairo&lt;br /&gt;
sudo port clean cairo&lt;br /&gt;
sudo port -v install cairo +universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal Inkscape ==&lt;br /&gt;
&lt;br /&gt;
First, Set your SDK, 10.5 for Leopard, 10.4u for TIger:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.5.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; (For Leopard)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.4u.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp;  (For Tiger)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, set up your environment to point to the Macports libraries:&lt;br /&gt;
&amp;lt;pre&amp;gt;export MACPORTS=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
export PATH=$MACPORTS/bin:$MACPORTS/sbin:/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$MACPORTS/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$MACPORTS/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$MACPORTS/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall -isysroot $SDK -arch ppc -arch i386&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The final step is to configure and compile Inkscape.  Inkscape must be configured with the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;   Sets the correct path for Inkscape to be used from an .app bundle&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;--disable-dependency-tracking&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; Dependency tracking can't be user when compiling universal binaries.&lt;br /&gt;
&lt;br /&gt;
Inkscape can then be built (with make), installed, and packaged into a Universal .app bundle using the standard .app bundle building instruction above.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+no_x11 cairomm pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing a second Macports tree (recommended approach) ==&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can set this second tree up to always build packages with specific variants.  For example, you can edit the /opt/local-native/etc/macports/variants.conf file to have the following line:&lt;br /&gt;
&amp;lt;pre&amp;gt;+universal +no_x11 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
You can remove the +universal if you only want to build inkscape for your host architecture.&lt;br /&gt;
You may also need to set alternate applications_dir and  frameworks_dir variables in the /opt/local-native/etc/macports/macports.conf file so that applications and frameworks install by this macports (for example by python) don't clash with your standard  macports tree.&lt;br /&gt;
&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathnative=&amp;quot;export PATH=/opt/local-native/bin:/opt/local-native/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=52975</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=52975"/>
		<updated>2009-06-17T06:05:31Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: Removed the section about compiling native gtk with the all-in-one build script.  It's not needed now.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo boehmgc gtkmm gtk-engines2 intltool libxslt lcms popt poppler boost \ &lt;br /&gt;
 gnome-vfs libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: subversion is pre-installed on Leopard, so you may be fine leaving subversion out of the port install command chain.&lt;br /&gt;
&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm gtk-engines2 intltool libxslt lcms popt boost gsl&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X, though at least it should install fine]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above. &lt;br /&gt;
If you're unsure about MacPorts commands, you can find a guide that is easy to skim here: [http://guide.macports.org/ MacPorts Guide]&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More recent (Sep 2008) pre-packaged nightly builds for Mac OS X also feature additional dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install librsvg libwpd libwpg libcroco&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: At the time of editing (2008-12-01) there was a problem fetching &amp;quot;lzmautils&amp;quot; as the URL MacPorts tried to use as download source dies in a timeout. &lt;br /&gt;
As this package is needed as a dependency for one or more packages noted above you need to download the source tarball of lzmautils from somewhere else (for example, from [ftp://sunfreeware.mirrors.tds.net/pub/sunfreeware/SOURCES/lzma-4.32.7.tar.gz here]) and put that into the local MacPorts repository at &amp;quot;/opt/local/var/macports/distfiles/lzmautils&amp;quot;. You should now be able to run the commands above.&lt;br /&gt;
&lt;br /&gt;
Also make sure that you have &amp;quot;libxml2&amp;quot; and &amp;quot;libxslt&amp;quot; installed with MacPorts. This should have been installed previously, either directly or as a dependency.&lt;br /&gt;
You will need those later to compile the &amp;quot;lxml&amp;quot; Python module if you want to use Python effects. First check what's installed and if they are missing from your MacPorts repository install them by doing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;port installed&lt;br /&gt;
sudo port install libxml2 libxslt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pre-compiling the Python modules  ==&lt;br /&gt;
&lt;br /&gt;
If you cannot use the pre-built Python modules from [http://inkscape.modevia.com/macosx-snap/?C=M;O=D Modevia], say, because you're using an unsupported Python version or you just want to install from source you need to pre-compile both modules.&lt;br /&gt;
&lt;br /&gt;
In case you are using a Python version installed through MacPorts do a search for both modules and install the ones suitable for the Python version activated within MacPorts.&lt;br /&gt;
&amp;lt;pre&amp;gt;port search lxml numpy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are using Leopard's default Python 2.5.1 installation or a more recent one (e.g. MacPython 2.6) you will need to compile both modules outside of MacPorts. Download both modules from [http://pypi.python.org PyPI] if they are available there for your Python version. At the time of editing (2008-12-01) both modules were only available through SVN for Python 2.6.&lt;br /&gt;
&lt;br /&gt;
There are lots of tutorials for building and installing the &amp;quot;numpy&amp;quot; module. One good place to start looking is the [[GettingEffectsWorking#on_Mac_OS_X|Getting Effects Working]] entry referenced at the end of this guide. &lt;br /&gt;
&lt;br /&gt;
Building the &amp;quot;lxml&amp;quot; module deviates a little from the standard way, so if you cannot install it try the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /path/to/lxml/source&lt;br /&gt;
sudo python setup.py install \&lt;br /&gt;
--with-xslt-config=/opt/local/bin/xslt-config \&lt;br /&gt;
--with-xml2-config=/opt/local/bin/xml2-config&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This tells it to use the libxml2 and libxslt packages we installed earlier with MacPorts instead of Mac OS X' default versions, which have been known to cause problems when trying to build &amp;quot;lxml&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If you are compiling the Python modules outside of MacPorts you will need to make a mental note for after running the .app-bundle building script (detailed [[CompilingMacOsX#Creating_an_.app_bundle|later]] in this guide) to copy the &amp;quot;lxml&amp;quot; and &amp;quot;numpy&amp;quot; dirs from the standard installation destination (by default &amp;quot;/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages&amp;quot; for MacPython 2.6 and &amp;quot;/Library/Python/2.5/site-packages/&amp;quot; for Leopard's default Python 2.5.1 installation) to either&lt;br /&gt;
* the &amp;quot;extensions&amp;quot; folder inside the Inkscape.app bundle (&amp;quot;Inkscape.app/Contents/Resources/extensions&amp;quot;) if all you care about is getting the Inkscape build to work with your Python version. This method is more foolproof but supports only one Python version.&lt;br /&gt;
* the &amp;quot;site-packages&amp;quot; folder inside the Inkspace.app bundle. The &amp;quot;site-packages&amp;quot; folder is the right place for putting your pre-compiled Python modules if you want to redistribute your build. Make a subfolder within &amp;quot;site-packages&amp;quot; with the name of your arch (&amp;quot;i386&amp;quot; for Intel, &amp;quot;PPC&amp;quot; for PowerPC or type &amp;lt;code&amp;gt;arch&amp;lt;/code&amp;gt; into a Terminal window) and another subfolder within the arch folder with the name of your Python version (e.g. &amp;quot;2.5&amp;quot; or &amp;quot;2.6&amp;quot; etc.). This allows you to include support for multiple Python versions with your Inkscape build. Note, however, that if someone has multiple Python versions installed they may run into problems with the PATH order exported by the internal script (&amp;quot;Inkspace.app/Contents/Resources/bin/inkscape&amp;quot;) responsible for preparing the Inkscape launch environment. &lt;br /&gt;
&lt;br /&gt;
Armed with this knowledge you should be able to take care of the &amp;quot;...needs the fantastic libxml2 wrapper...&amp;quot; message when executing Python effects. Normally the &amp;lt;code&amp;gt;osx-app.sh&amp;lt;/code&amp;gt; script (detailed [[CompilingMacOsX#Creating_an_.app_bundle|later]])  should take care of this for you, but if for whatever reason it didn't you know how to copy the modules manually.&lt;br /&gt;
&lt;br /&gt;
For further info refer to the [[GettingEffectsWorking#on_Mac_OS_X|Getting Effects Working]] section of this wiki.&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's an example which covers most options that can be set:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/ --with-xft \&lt;br /&gt;
--with-gnome-vfs --with-python=/path/to/python/modules --enable-osxapp --enable-lcms \&lt;br /&gt;
--enable-poppler-cairo --enable-inkboard&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All essential steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to know how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: Excluded steps involve Pre-compiliation of the Python modules and installing the additional nightly build features.&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Update Macport sources ==&lt;br /&gt;
&lt;br /&gt;
The port descriptions in Macports do not currently all compile properly with their Universal variants.   For this reason, we currently use a modified set of some of the portfiles that will compile a universal libraries.  Work is being done to integrate these changes into Macports itself.&lt;br /&gt;
&lt;br /&gt;
You can use our modified portfiles by adding our ports to your sources:&lt;br /&gt;
&lt;br /&gt;
1. Checkout our ports directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/experimental/trunk/mjwybrow/ports ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Edit your sources list to include this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
And add the following line *before* the existing rsync source:&lt;br /&gt;
&amp;lt;pre&amp;gt;file:///Users/YOURUSERNAME/directory/to/ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Run the portindex command in the checked-out port directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;portindex&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Run port sync&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile Inkscape's essential dependencies as Universal libraries on either 10.4 or 10.5,  by giving the &amp;quot;+universal&amp;quot; option for each, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -v install poppler +universal gtk2 +universal ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you already have non-universal versions of these ports installed you may need to deactivate the port and rebuild it, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -f uninstall cairo&lt;br /&gt;
sudo port clean cairo&lt;br /&gt;
sudo port -v install cairo +universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal Inkscape ==&lt;br /&gt;
&lt;br /&gt;
First, Set your SDK, 10.5 for Leopard, 10.4u for TIger:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.5.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; (For Leopard)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.4u.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp;  (For Tiger)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, set up your environment to point to the Macports libraries:&lt;br /&gt;
&amp;lt;pre&amp;gt;export MACPORTS=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
export PATH=$MACPORTS/bin:$MACPORTS/sbin:/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$MACPORTS/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$MACPORTS/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$MACPORTS/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall -isysroot $SDK -arch ppc -arch i386&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The final step is to configure and compile Inkscape.  Inkscape must be configured with the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;   Sets the correct path for Inkscape to be used from an .app bundle&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;--disable-dependency-tracking&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; Dependency tracking can't be user when compiling universal binaries.&lt;br /&gt;
&lt;br /&gt;
Inkscape can then be built (with make), installed, and packaged into a Universal .app bundle using the standard .app bundle building instruction above.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+no_x11 cairomm pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathnative=&amp;quot;export PATH=/opt/local-native/bin:/opt/local-native/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=52903</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=52903"/>
		<updated>2009-05-27T05:21:04Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Installing dependencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo boehmgc gtkmm gtk-engines2 intltool libxslt lcms popt poppler boost \ &lt;br /&gt;
 gnome-vfs libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: subversion is pre-installed on Leopard, so you may be fine leaving subversion out of the port install command chain.&lt;br /&gt;
&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm gtk-engines2 intltool libxslt lcms popt boost gsl&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X, though at least it should install fine]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above. &lt;br /&gt;
If you're unsure about MacPorts commands, you can find a guide that is easy to skim here: [http://guide.macports.org/ MacPorts Guide]&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More recent (Sep 2008) pre-packaged nightly builds for Mac OS X also feature additional dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install librsvg libwpd libwpg libcroco&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: At the time of editing (2008-12-01) there was a problem fetching &amp;quot;lzmautils&amp;quot; as the URL MacPorts tried to use as download source dies in a timeout. &lt;br /&gt;
As this package is needed as a dependency for one or more packages noted above you need to download the source tarball of lzmautils from somewhere else (for example, from [ftp://sunfreeware.mirrors.tds.net/pub/sunfreeware/SOURCES/lzma-4.32.7.tar.gz here]) and put that into the local MacPorts repository at &amp;quot;/opt/local/var/macports/distfiles/lzmautils&amp;quot;. You should now be able to run the commands above.&lt;br /&gt;
&lt;br /&gt;
Also make sure that you have &amp;quot;libxml2&amp;quot; and &amp;quot;libxslt&amp;quot; installed with MacPorts. This should have been installed previously, either directly or as a dependency.&lt;br /&gt;
You will need those later to compile the &amp;quot;lxml&amp;quot; Python module if you want to use Python effects. First check what's installed and if they are missing from your MacPorts repository install them by doing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;port installed&lt;br /&gt;
sudo port install libxml2 libxslt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pre-compiling the Python modules  ==&lt;br /&gt;
&lt;br /&gt;
If you cannot use the pre-built Python modules from [http://inkscape.modevia.com/macosx-snap/?C=M;O=D Modevia], say, because you're using an unsupported Python version or you just want to install from source you need to pre-compile both modules.&lt;br /&gt;
&lt;br /&gt;
In case you are using a Python version installed through MacPorts do a search for both modules and install the ones suitable for the Python version activated within MacPorts.&lt;br /&gt;
&amp;lt;pre&amp;gt;port search lxml numpy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are using Leopard's default Python 2.5.1 installation or a more recent one (e.g. MacPython 2.6) you will need to compile both modules outside of MacPorts. Download both modules from [http://pypi.python.org PyPI] if they are available there for your Python version. At the time of editing (2008-12-01) both modules were only available through SVN for Python 2.6.&lt;br /&gt;
&lt;br /&gt;
There are lots of tutorials for building and installing the &amp;quot;numpy&amp;quot; module. One good place to start looking is the [[GettingEffectsWorking#on_Mac_OS_X|Getting Effects Working]] entry referenced at the end of this guide. &lt;br /&gt;
&lt;br /&gt;
Building the &amp;quot;lxml&amp;quot; module deviates a little from the standard way, so if you cannot install it try the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /path/to/lxml/source&lt;br /&gt;
sudo python setup.py install \&lt;br /&gt;
--with-xslt-config=/opt/local/bin/xslt-config \&lt;br /&gt;
--with-xml2-config=/opt/local/bin/xml2-config&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This tells it to use the libxml2 and libxslt packages we installed earlier with MacPorts instead of Mac OS X' default versions, which have been known to cause problems when trying to build &amp;quot;lxml&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If you are compiling the Python modules outside of MacPorts you will need to make a mental note for after running the .app-bundle building script (detailed [[CompilingMacOsX#Creating_an_.app_bundle|later]] in this guide) to copy the &amp;quot;lxml&amp;quot; and &amp;quot;numpy&amp;quot; dirs from the standard installation destination (by default &amp;quot;/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages&amp;quot; for MacPython 2.6 and &amp;quot;/Library/Python/2.5/site-packages/&amp;quot; for Leopard's default Python 2.5.1 installation) to either&lt;br /&gt;
* the &amp;quot;extensions&amp;quot; folder inside the Inkscape.app bundle (&amp;quot;Inkscape.app/Contents/Resources/extensions&amp;quot;) if all you care about is getting the Inkscape build to work with your Python version. This method is more foolproof but supports only one Python version.&lt;br /&gt;
* the &amp;quot;site-packages&amp;quot; folder inside the Inkspace.app bundle. The &amp;quot;site-packages&amp;quot; folder is the right place for putting your pre-compiled Python modules if you want to redistribute your build. Make a subfolder within &amp;quot;site-packages&amp;quot; with the name of your arch (&amp;quot;i386&amp;quot; for Intel, &amp;quot;PPC&amp;quot; for PowerPC or type &amp;lt;code&amp;gt;arch&amp;lt;/code&amp;gt; into a Terminal window) and another subfolder within the arch folder with the name of your Python version (e.g. &amp;quot;2.5&amp;quot; or &amp;quot;2.6&amp;quot; etc.). This allows you to include support for multiple Python versions with your Inkscape build. Note, however, that if someone has multiple Python versions installed they may run into problems with the PATH order exported by the internal script (&amp;quot;Inkspace.app/Contents/Resources/bin/inkscape&amp;quot;) responsible for preparing the Inkscape launch environment. &lt;br /&gt;
&lt;br /&gt;
Armed with this knowledge you should be able to take care of the &amp;quot;...needs the fantastic libxml2 wrapper...&amp;quot; message when executing Python effects. Normally the &amp;lt;code&amp;gt;osx-app.sh&amp;lt;/code&amp;gt; script (detailed [[CompilingMacOsX#Creating_an_.app_bundle|later]])  should take care of this for you, but if for whatever reason it didn't you know how to copy the modules manually.&lt;br /&gt;
&lt;br /&gt;
For further info refer to the [[GettingEffectsWorking#on_Mac_OS_X|Getting Effects Working]] section of this wiki.&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's an example which covers most options that can be set:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/ --with-xft \&lt;br /&gt;
--with-gnome-vfs --with-python=/path/to/python/modules --enable-osxapp --enable-lcms \&lt;br /&gt;
--enable-poppler-cairo --enable-inkboard&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All essential steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to know how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: Excluded steps involve Pre-compiliation of the Python modules and installing the additional nightly build features.&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Update Macport sources ==&lt;br /&gt;
&lt;br /&gt;
The port descriptions in Macports do not currently all compile properly with their Universal variants.   For this reason, we currently use a modified set of some of the portfiles that will compile a universal libraries.  Work is being done to integrate these changes into Macports itself.&lt;br /&gt;
&lt;br /&gt;
You can use our modified portfiles by adding our ports to your sources:&lt;br /&gt;
&lt;br /&gt;
1. Checkout our ports directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/experimental/trunk/mjwybrow/ports ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Edit your sources list to include this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
And add the following line *before* the existing rsync source:&lt;br /&gt;
&amp;lt;pre&amp;gt;file:///Users/YOURUSERNAME/directory/to/ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Run the portindex command in the checked-out port directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;portindex&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Run port sync&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile Inkscape's essential dependencies as Universal libraries on either 10.4 or 10.5,  by giving the &amp;quot;+universal&amp;quot; option for each, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -v install poppler +universal gtk2 +universal ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you already have non-universal versions of these ports installed you may need to deactivate the port and rebuild it, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -f uninstall cairo&lt;br /&gt;
sudo port clean cairo&lt;br /&gt;
sudo port -v install cairo +universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal Inkscape ==&lt;br /&gt;
&lt;br /&gt;
First, Set your SDK, 10.5 for Leopard, 10.4u for TIger:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.5.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; (For Leopard)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.4u.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp;  (For Tiger)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, set up your environment to point to the Macports libraries:&lt;br /&gt;
&amp;lt;pre&amp;gt;export MACPORTS=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
export PATH=$MACPORTS/bin:$MACPORTS/sbin:/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$MACPORTS/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$MACPORTS/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$MACPORTS/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall -isysroot $SDK -arch ppc -arch i386&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The final step is to configure and compile Inkscape.  Inkscape must be configured with the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;   Sets the correct path for Inkscape to be used from an .app bundle&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;--disable-dependency-tracking&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; Dependency tracking can't be user when compiling universal binaries.&lt;br /&gt;
&lt;br /&gt;
Inkscape can then be built (with make), installed, and packaged into a Universal .app bundle using the standard .app bundle building instruction above.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+no_x11 cairomm pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathnative=&amp;quot;export PATH=/opt/local-native/bin:/opt/local-native/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using the all in one build script [experimental] =&lt;br /&gt;
&lt;br /&gt;
To build a native-GTK build of Inkscape, GTK and some of its dependencies must be built with special options. You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).  This is a modified version of the Imendio native build script, found with instructions on this page:&lt;br /&gt;
http://live.gnome.org/GTK%2B/OSX/BuildInstructions&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested. If you have any troubles using this process then please report them to Michael Wybrow (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PREFIX=/your/install/prefix&lt;br /&gt;
./build-gtk bootstrap&lt;br /&gt;
./build-gtk build inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=52901</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=52901"/>
		<updated>2009-05-27T03:29:31Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Configuring */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo boehmgc gtkmm gtk-engines2 intltool libxslt lcms popt poppler boost \ &lt;br /&gt;
 gnome-vfs libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: subversion is pre-installed on Leopard, so you may be fine leaving subversion out of the port install command chain.&lt;br /&gt;
&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm gtk-engines2 intltool libxslt lcms popt boost gsl&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X, though at least it should install fine]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above. &lt;br /&gt;
If you're unsure about MacPorts commands, you can find a guide that is easy to skim here: [http://guide.macports.org/ MacPorts Guide]&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More recent (Sep 2008) pre-packaged nightly builds for Mac OS X also feature additional dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install librsvg libwpd libwpg libcroco&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: At the time of editing (2008-12-01) there was a problem fetching &amp;quot;lzmautils&amp;quot; as the URL MacPorts tried to use as download source dies in a timeout. &lt;br /&gt;
As this package is needed as a dependency for one or more packages noted above you need to download the source tarball of lzmautils from somewhere else (for example, from [ftp://sunfreeware.mirrors.tds.net/pub/sunfreeware/SOURCES/lzma-4.32.7.tar.gz here]) and put that into the local MacPorts repository at &amp;quot;/opt/local/var/macports/distfiles/lzmautils&amp;quot;. You should now be able to run the commands above.&lt;br /&gt;
&lt;br /&gt;
Also make sure that you have &amp;quot;libxml2&amp;quot; and &amp;quot;libxslt&amp;quot; installed with MacPorts. This should have been installed previously, either directly or as a dependency.&lt;br /&gt;
You will need those later to compile the &amp;quot;lxml&amp;quot; Python module if you want to use Python effects. First check what's installed and if they are missing from your MacPorts repository install them by doing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;port installed&lt;br /&gt;
sudo port install libxml2 libxslt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pre-compiling the Python modules  ==&lt;br /&gt;
&lt;br /&gt;
If you cannot use the pre-built Python modules from [http://inkscape.modevia.com/macosx-snap/?C=M;O=D Modevia], say, because you're using an unsupported Python version or you just want to install from source you need to pre-compile both modules.&lt;br /&gt;
&lt;br /&gt;
In case you are using a Python version installed through MacPorts do a search for both modules and install the ones suitable for the Python version activated within MacPorts.&lt;br /&gt;
&amp;lt;pre&amp;gt;port search lxml numpy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are using Leopard's default Python 2.5.1 installation or a more recent one (e.g. MacPython 2.6) you will need to compile both modules outside of MacPorts. Download both modules from [http://pypi.python.org PyPI] if they are available there for your Python version. At the time of editing (2008-12-01) both modules were only available through SVN for Python 2.6.&lt;br /&gt;
&lt;br /&gt;
There are lots of tutorials for building and installing the &amp;quot;numpy&amp;quot; module. One good place to start looking is the [[GettingEffectsWorking#on_Mac_OS_X|Getting Effects Working]] entry referenced at the end of this guide. &lt;br /&gt;
&lt;br /&gt;
Building the &amp;quot;lxml&amp;quot; module deviates a little from the standard way, so if you cannot install it try the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /path/to/lxml/source&lt;br /&gt;
sudo python setup.py install \&lt;br /&gt;
--with-xslt-config=/opt/local/bin/xslt-config \&lt;br /&gt;
--with-xml2-config=/opt/local/bin/xml2-config&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This tells it to use the libxml2 and libxslt packages we installed earlier with MacPorts instead of Mac OS X' default versions, which have been known to cause problems when trying to build &amp;quot;lxml&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If you are compiling the Python modules outside of MacPorts you will need to make a mental note for after running the .app-bundle building script (detailed [[CompilingMacOsX#Creating_an_.app_bundle|later]] in this guide) to copy the &amp;quot;lxml&amp;quot; and &amp;quot;numpy&amp;quot; dirs from the standard installation destination (by default &amp;quot;/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages&amp;quot; for MacPython 2.6 and &amp;quot;/Library/Python/2.5/site-packages/&amp;quot; for Leopard's default Python 2.5.1 installation) to either&lt;br /&gt;
* the &amp;quot;extensions&amp;quot; folder inside the Inkscape.app bundle (&amp;quot;Inkscape.app/Contents/Resources/extensions&amp;quot;) if all you care about is getting the Inkscape build to work with your Python version. This method is more foolproof but supports only one Python version.&lt;br /&gt;
* the &amp;quot;site-packages&amp;quot; folder inside the Inkspace.app bundle. The &amp;quot;site-packages&amp;quot; folder is the right place for putting your pre-compiled Python modules if you want to redistribute your build. Make a subfolder within &amp;quot;site-packages&amp;quot; with the name of your arch (&amp;quot;i386&amp;quot; for Intel, &amp;quot;PPC&amp;quot; for PowerPC or type &amp;lt;code&amp;gt;arch&amp;lt;/code&amp;gt; into a Terminal window) and another subfolder within the arch folder with the name of your Python version (e.g. &amp;quot;2.5&amp;quot; or &amp;quot;2.6&amp;quot; etc.). This allows you to include support for multiple Python versions with your Inkscape build. Note, however, that if someone has multiple Python versions installed they may run into problems with the PATH order exported by the internal script (&amp;quot;Inkspace.app/Contents/Resources/bin/inkscape&amp;quot;) responsible for preparing the Inkscape launch environment. &lt;br /&gt;
&lt;br /&gt;
Armed with this knowledge you should be able to take care of the &amp;quot;...needs the fantastic libxml2 wrapper...&amp;quot; message when executing Python effects. Normally the &amp;lt;code&amp;gt;osx-app.sh&amp;lt;/code&amp;gt; script (detailed [[CompilingMacOsX#Creating_an_.app_bundle|later]])  should take care of this for you, but if for whatever reason it didn't you know how to copy the modules manually.&lt;br /&gt;
&lt;br /&gt;
For further info refer to the [[GettingEffectsWorking#on_Mac_OS_X|Getting Effects Working]] section of this wiki.&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's an example which covers most options that can be set:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/ --with-xft \&lt;br /&gt;
--with-gnome-vfs --with-python=/path/to/python/modules --enable-osxapp --enable-lcms \&lt;br /&gt;
--enable-poppler-cairo --enable-inkboard&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All essential steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to know how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: Excluded steps involve Pre-compiliation of the Python modules and installing the additional nightly build features.&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Update Macport sources ==&lt;br /&gt;
&lt;br /&gt;
The port descriptions in Macports do not currently all compile properly with their Universal variants.   For this reason, we currently use a modified set of some of the portfiles that will compile a universal libraries.  Work is being done to integrate these changes into Macports itself.&lt;br /&gt;
&lt;br /&gt;
You can use our modified portfiles by adding our ports to your sources:&lt;br /&gt;
&lt;br /&gt;
1. Checkout our ports directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/experimental/trunk/mjwybrow/ports ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Edit your sources list to include this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
And add the following line *before* the existing rsync source:&lt;br /&gt;
&amp;lt;pre&amp;gt;file:///Users/YOURUSERNAME/directory/to/ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Run the portindex command in the checked-out port directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;portindex&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Run port sync&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile Inkscape's essential dependencies as Universal libraries on either 10.4 or 10.5,  by giving the &amp;quot;+universal&amp;quot; option for each, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -v install poppler +universal gtk2 +universal ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you already have non-universal versions of these ports installed you may need to deactivate the port and rebuild it, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -f uninstall cairo&lt;br /&gt;
sudo port clean cairo&lt;br /&gt;
sudo port -v install cairo +universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal Inkscape ==&lt;br /&gt;
&lt;br /&gt;
First, Set your SDK, 10.5 for Leopard, 10.4u for TIger:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.5.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; (For Leopard)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.4u.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp;  (For Tiger)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, set up your environment to point to the Macports libraries:&lt;br /&gt;
&amp;lt;pre&amp;gt;export MACPORTS=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
export PATH=$MACPORTS/bin:$MACPORTS/sbin:/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$MACPORTS/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$MACPORTS/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$MACPORTS/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall -isysroot $SDK -arch ppc -arch i386&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The final step is to configure and compile Inkscape.  Inkscape must be configured with the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;   Sets the correct path for Inkscape to be used from an .app bundle&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;--disable-dependency-tracking&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; Dependency tracking can't be user when compiling universal binaries.&lt;br /&gt;
&lt;br /&gt;
Inkscape can then be built (with make), installed, and packaged into a Universal .app bundle using the standard .app bundle building instruction above.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+no_x11 cairomm pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathnative=&amp;quot;export PATH=/opt/local-native/bin:/opt/local-native/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using the all in one build script [experimental] =&lt;br /&gt;
&lt;br /&gt;
To build a native-GTK build of Inkscape, GTK and some of its dependencies must be built with special options. You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).  This is a modified version of the Imendio native build script, found with instructions on this page:&lt;br /&gt;
http://live.gnome.org/GTK%2B/OSX/BuildInstructions&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested. If you have any troubles using this process then please report them to Michael Wybrow (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PREFIX=/your/install/prefix&lt;br /&gt;
./build-gtk bootstrap&lt;br /&gt;
./build-gtk build inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=52154</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=52154"/>
		<updated>2009-05-05T00:15:25Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Native version of Inkscape dependencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo boehmgc gtkmm gtk-engines2 intltool libxslt lcms popt poppler boost \ &lt;br /&gt;
 gnome-vfs libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: subversion is pre-installed on Leopard, so you may be fine leaving subversion out of the port install command chain.&lt;br /&gt;
&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm gtk-engines2 intltool libxslt lcms popt boost gsl&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X, though at least it should install fine]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above. &lt;br /&gt;
If you're unsure about MacPorts commands, you can find a guide that is easy to skim here: [http://guide.macports.org/ MacPorts Guide]&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More recent (Sep 2008) pre-packaged nightly builds for Mac OS X also feature additional dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install librsvg libwpd libwpg libcroco&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: At the time of editing (2008-12-01) there was a problem fetching &amp;quot;lzmautils&amp;quot; as the URL MacPorts tried to use as download source dies in a timeout. &lt;br /&gt;
As this package is needed as a dependency for one or more packages noted above you need to download the source tarball of lzmautils from somewhere else (for example, from [ftp://sunfreeware.mirrors.tds.net/pub/sunfreeware/SOURCES/lzma-4.32.7.tar.gz here]) and put that into the local MacPorts repository at &amp;quot;/opt/local/var/macports/distfiles/lzmautils&amp;quot;. You should now be able to run the commands above.&lt;br /&gt;
&lt;br /&gt;
Also make sure that you have &amp;quot;libxml2&amp;quot; and &amp;quot;libxslt&amp;quot; installed with MacPorts. This should have been installed previously, either directly or as a dependency.&lt;br /&gt;
You will need those later to compile the &amp;quot;lxml&amp;quot; Python module if you want to use Python effects. First check what's installed and if they are missing from your MacPorts repository install them by doing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;port installed&lt;br /&gt;
sudo port install libxml2 libxslt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pre-compiling the Python modules  ==&lt;br /&gt;
&lt;br /&gt;
If you cannot use the pre-built Python modules from [http://inkscape.modevia.com/macosx-snap/?C=M;O=D Modevia], say, because you're using an unsupported Python version or you just want to install from source you need to pre-compile both modules.&lt;br /&gt;
&lt;br /&gt;
In case you are using a Python version installed through MacPorts do a search for both modules and install the ones suitable for the Python version activated within MacPorts.&lt;br /&gt;
&amp;lt;pre&amp;gt;port search lxml numpy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are using Leopard's default Python 2.5.1 installation or a more recent one (e.g. MacPython 2.6) you will need to compile both modules outside of MacPorts. Download both modules from [http://pypi.python.org PyPI] if they are available there for your Python version. At the time of editing (2008-12-01) both modules were only available through SVN for Python 2.6.&lt;br /&gt;
&lt;br /&gt;
There are lots of tutorials for building and installing the &amp;quot;numpy&amp;quot; module. One good place to start looking is the [[GettingEffectsWorking#on_Mac_OS_X|Getting Effects Working]] entry referenced at the end of this guide. &lt;br /&gt;
&lt;br /&gt;
Building the &amp;quot;lxml&amp;quot; module deviates a little from the standard way, so if you cannot install it try the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /path/to/lxml/source&lt;br /&gt;
sudo python setup.py install \&lt;br /&gt;
--with-xslt-config=/opt/local/bin/xslt-config \&lt;br /&gt;
--with-xml2-config=/opt/local/bin/xml2-config&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This tells it to use the libxml2 and libxslt packages we installed earlier with MacPorts instead of Mac OS X' default versions, which have been known to cause problems when trying to build &amp;quot;lxml&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If you are compiling the Python modules outside of MacPorts you will need to make a mental note for after running the .app-bundle building script (detailed [[CompilingMacOsX#Creating_an_.app_bundle|later]] in this guide) to copy the &amp;quot;lxml&amp;quot; and &amp;quot;numpy&amp;quot; dirs from the standard installation destination (by default &amp;quot;/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages&amp;quot; for MacPython 2.6 and &amp;quot;/Library/Python/2.5/site-packages/&amp;quot; for Leopard's default Python 2.5.1 installation) to either&lt;br /&gt;
* the &amp;quot;extensions&amp;quot; folder inside the Inkscape.app bundle (&amp;quot;Inkscape.app/Contents/Resources/extensions&amp;quot;) if all you care about is getting the Inkscape build to work with your Python version. This method is more foolproof but supports only one Python version.&lt;br /&gt;
* the &amp;quot;site-packages&amp;quot; folder inside the Inkspace.app bundle. The &amp;quot;site-packages&amp;quot; folder is the right place for putting your pre-compiled Python modules if you want to redistribute your build. Make a subfolder within &amp;quot;site-packages&amp;quot; with the name of your arch (&amp;quot;i386&amp;quot; for Intel, &amp;quot;PPC&amp;quot; for PowerPC or type &amp;lt;code&amp;gt;arch&amp;lt;/code&amp;gt; into a Terminal window) and another subfolder within the arch folder with the name of your Python version (e.g. &amp;quot;2.5&amp;quot; or &amp;quot;2.6&amp;quot; etc.). This allows you to include support for multiple Python versions with your Inkscape build. Note, however, that if someone has multiple Python versions installed they may run into problems with the PATH order exported by the internal script (&amp;quot;Inkspace.app/Contents/Resources/bin/inkscape&amp;quot;) responsible for preparing the Inkscape launch environment. &lt;br /&gt;
&lt;br /&gt;
Armed with this knowledge you should be able to take care of the &amp;quot;...needs the fantastic libxml2 wrapper...&amp;quot; message when executing Python effects. Normally the &amp;lt;code&amp;gt;osx-app.sh&amp;lt;/code&amp;gt; script (detailed [[CompilingMacOsX#Creating_an_.app_bundle|later]])  should take care of this for you, but if for whatever reason it didn't you know how to copy the modules manually.&lt;br /&gt;
&lt;br /&gt;
For further info refer to the [[GettingEffectsWorking#on_Mac_OS_X|Getting Effects Working]] section of this wiki.&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's an example which covers most options that can be set:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/ --with-xft \&lt;br /&gt;
--with-gnome-vfs --with-python=/path/to/python/modules --enable-osxapp --enable-lcms \&lt;br /&gt;
--enable-poppler-cairo --enable-inkboard&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All essential steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to know how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: Excluded steps involve Pre-compiliation of the Python modules and installing the additional nightly build features.&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Update Macport sources ==&lt;br /&gt;
&lt;br /&gt;
The port descriptions in Macports do not currently all compile properly with their Universal variants.   For this reason, we currently use a modified set of some of the portfiles that will compile a universal libraries.  Work is being done to integrate these changes into Macports itself.&lt;br /&gt;
&lt;br /&gt;
You can use our modified portfiles by adding our ports to your sources:&lt;br /&gt;
&lt;br /&gt;
1. Checkout our ports directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/experimental/trunk/mjwybrow/ports ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Edit your sources list to include this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
And add the following line *before* the existing rsync source:&lt;br /&gt;
&amp;lt;pre&amp;gt;file:///Users/YOURUSERNAME/directory/to/ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Run the portindex command in the checked-out port directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;portindex&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Run port sync&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile Inkscape's essential dependencies as Universal libraries on either 10.4 or 10.5,  by giving the &amp;quot;+universal&amp;quot; option for each, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -v install poppler +universal gtk2 +universal ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you already have non-universal versions of these ports installed you may need to deactivate the port and rebuild it, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -f uninstall cairo&lt;br /&gt;
sudo port clean cairo&lt;br /&gt;
sudo port -v install cairo +universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal Inkscape ==&lt;br /&gt;
&lt;br /&gt;
First, Set your SDK, 10.5 for Leopard, 10.4u for TIger:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.5.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; (For Leopard)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.4u.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp;  (For Tiger)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, set up your environment to point to the Macports libraries:&lt;br /&gt;
&amp;lt;pre&amp;gt;export MACPORTS=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
export PATH=$MACPORTS/bin:$MACPORTS/sbin:/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$MACPORTS/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$MACPORTS/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$MACPORTS/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall -isysroot $SDK -arch ppc -arch i386&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The final step is to configure and compile Inkscape.  Inkscape must be configured with the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;   Sets the correct path for Inkscape to be used from an .app bundle&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;--disable-dependency-tracking&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; Dependency tracking can't be user when compiling universal binaries.&lt;br /&gt;
&lt;br /&gt;
Inkscape can then be built (with make), installed, and packaged into a Universal .app bundle using the standard .app bundle building instruction above.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+no_x11 cairomm pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathnative=&amp;quot;export PATH=/opt/local-native/bin:/opt/local-native/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using the all in one build script [experimental] =&lt;br /&gt;
&lt;br /&gt;
To build a native-GTK build of Inkscape, GTK and some of its dependencies must be built with special options. You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).  This is a modified version of the Imendio native build script, found with instructions on this page:&lt;br /&gt;
http://live.gnome.org/GTK%2B/OSX/BuildInstructions&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested. If you have any troubles using this process then please report them to Michael Wybrow (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PREFIX=/your/install/prefix&lt;br /&gt;
./build-gtk bootstrap&lt;br /&gt;
./build-gtk build inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Google_Summer_of_Code&amp;diff=49174</id>
		<title>Google Summer of Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Google_Summer_of_Code&amp;diff=49174"/>
		<updated>2009-03-31T03:38:47Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Welcome to Inkscape! =&lt;br /&gt;
&lt;br /&gt;
We've mentored about half a dozen students a year since GSoC started.  Many students enjoyed their work and continue to be involved; perhaps your mentor will be a past GSoC student!  We have a high rate of acceptance of student code into the core codebase. Indeed, GSoC projects have been a key source of some of Inkscape's best features in the past several releases.&lt;br /&gt;
&lt;br /&gt;
The Inkscape team plans to focus this summer on codebase cleanup and refactoring.  This will affect the type of projects we can accept this year; we're looking for ones that either won't affect core code too significantly (such as Extension scripts, or File Input/Output formats) or that would actually result in improving the state of the codebase (adding tests, modularization, etc.).  Students who have already been active developers in Inkscape previously will be allowed more latitude to work on core code (particularly if it will result in cleanup/refactoring of their past work).&lt;br /&gt;
&lt;br /&gt;
= Student Applications =&lt;br /&gt;
&lt;br /&gt;
* Google program information&lt;br /&gt;
** Summer of Code Application form&lt;br /&gt;
* Inkscape-specific information&lt;br /&gt;
** [[SOC Application Template]]&lt;br /&gt;
** [[Roadmap | Inkscape Roadmap]] - to see our overall objectives&lt;br /&gt;
** [[SOC Writing Project Proposals]] - some guidelines for proposals&lt;br /&gt;
** [[SOC Selection Criteria]] - how we rate applications&lt;br /&gt;
&lt;br /&gt;
= Suggested Ideas =&lt;br /&gt;
&lt;br /&gt;
* Further development of [http://generalpicture.com/svg/shapeopera.html Shape Opera], a simple Javascript framework for  morphing Inkscape PATH shapes.&lt;br /&gt;
* Font editing and creation features, e.g. [https://blueprints.launchpad.net/inkscape/+spec/designing-svg-fonts-using-styles designing SVG fonts using styles]&lt;br /&gt;
* [https://blueprints.launchpad.net/inkscape/+spec/fillet-tool Fillet/Chamfer tool]&lt;br /&gt;
* Multiple Page support&lt;br /&gt;
* Full SVG viewbox support&lt;br /&gt;
* Switching primary rendering engine from Livarot to Cairo&lt;br /&gt;
* Python extensions test suite&lt;br /&gt;
* Python effects/extension scripts&lt;br /&gt;
* New file import or export support&lt;br /&gt;
* Importing of 3D scene files in 16 file formats using [http://assimp.sourceforge.net/ Open Asset Import Library]&lt;br /&gt;
* [https://blueprints.launchpad.net/inkscape/+spec/xar-to-svg-converter xar-to-svg converter] - Converter for Xara Xtreme to Inkscape&lt;br /&gt;
* [https://blueprints.launchpad.net/inkscape/+spec/new-from-template-dialog 'New From Template' dialog]&lt;br /&gt;
* [https://blueprints.launchpad.net/inkscape/+spec/lpe-blueprint More Live Path Effects] - There is a lengthy list of ideas to choose from here.&lt;br /&gt;
* [https://blueprints.launchpad.net/inkscape/+spec/kml-svg-translation KML SVG translation] - For use of Inkscape with Google Earth or Maps&lt;br /&gt;
* [https://blueprints.launchpad.net/inkscape/+spec/kidscape-project kidscape] - Condensed version of Inkscape aimed at young kids and small form factor devices&lt;br /&gt;
* [https://blueprints.launchpad.net/inkscape/+spec/cutter-control Cutter control] - Enable Inkscape's use with vinyl cutters.&lt;br /&gt;
* [https://blueprints.launchpad.net/inkscape/+spec/icc-for-cairo ICC Color Management for cairo outputs] - Would allow Inkscape to produce CMYK PDFs and PSs with Cairo.&lt;br /&gt;
* [https://blueprints.launchpad.net/inkscape/+spec/guides-improvement Guides Improvements]&lt;br /&gt;
* [https://blueprints.launchpad.net/inkscape/+spec/transformation-anchors Transformation Anchors]&lt;br /&gt;
* Add a palette of objects to Inkscape. Such a palette would contain often used objects and would allow categorizing such objects. Examples of categories: UML, electric, network.&lt;br /&gt;
* [https://blueprints.launchpad.net/inkscape/+spec/power-stroke Power Stroke] - Modulated width stroke LPE.&lt;br /&gt;
* Multiple-path editing support&lt;br /&gt;
* [https://blueprints.edge.launchpad.net/inkscape/+spec/inkscape-connectors Connector tool improvements] - Expose new libavoid functionality: orthogonal routing, connector ports, curved connectors. (Mentor: Michael Wybrow)&lt;br /&gt;
* Arrowhead/marker improvements&lt;br /&gt;
&lt;br /&gt;
Please do not feel limited to the above ideas - some of our best contributions have been unique ideas that students had in mind from other sources!&lt;br /&gt;
&lt;br /&gt;
For more ideas, please see https://blueprints.launchpad.net/inkscape/&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Google_Summer_of_Code&amp;diff=49164</id>
		<title>Google Summer of Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Google_Summer_of_Code&amp;diff=49164"/>
		<updated>2009-03-30T05:51:14Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Suggested Ideas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Welcome to Inkscape! =&lt;br /&gt;
&lt;br /&gt;
We've mentored about half a dozen students a year since GSoC started.  Many students enjoyed their work and continue to be involved; perhaps your mentor will be a past GSoC student!  We have a high rate of acceptance of student code into the core codebase. Indeed, GSoC projects have been a key source of some of Inkscape's best features in the past several releases.&lt;br /&gt;
&lt;br /&gt;
The Inkscape team plans to focus this summer on codebase cleanup and refactoring.  This will affect the type of projects we can accept this year; we're looking for ones that either won't affect core code too significantly (such as Extension scripts, or File Input/Output formats) or that would actually result in improving the state of the codebase (adding tests, modularization, etc.).  Students who have already been active developers in Inkscape previously will be allowed more latitude to work on core code (particularly if it will result in cleanup/refactoring of their past work).&lt;br /&gt;
&lt;br /&gt;
= Student Applications =&lt;br /&gt;
&lt;br /&gt;
* Google program information&lt;br /&gt;
** Summer of Code Application form&lt;br /&gt;
* Inkscape-specific information&lt;br /&gt;
** [[SOC Application Template]]&lt;br /&gt;
** [[Roadmap | Inkscape Roadmap]] - to see our overall objectives&lt;br /&gt;
** [[SOC Writing Project Proposals]] - some guidelines for proposals&lt;br /&gt;
** [[SOC Selection Criteria]] - how we rate applications&lt;br /&gt;
&lt;br /&gt;
= Suggested Ideas =&lt;br /&gt;
&lt;br /&gt;
* Further development of [http://generalpicture.com/svg/shapeopera.html Shape Opera], a simple Javascript framework for  morphing Inkscape PATH shapes.&lt;br /&gt;
* Font editing and creation features, e.g. [https://blueprints.launchpad.net/inkscape/+spec/designing-svg-fonts-using-styles designing SVG fonts using styles]&lt;br /&gt;
* [https://blueprints.launchpad.net/inkscape/+spec/fillet-tool Fillet/Chamfer tool]&lt;br /&gt;
* Multiple Page support&lt;br /&gt;
* Full SVG viewbox support&lt;br /&gt;
* Switching primary rendering engine from Livarot to Cairo&lt;br /&gt;
* Python extensions test suite&lt;br /&gt;
* Python effects/extension scripts&lt;br /&gt;
* New file import or export support&lt;br /&gt;
* Importing of 3D scene files in 16 file formats using [http://assimp.sourceforge.net/ Open Asset Import Library]&lt;br /&gt;
* [https://blueprints.launchpad.net/inkscape/+spec/xar-to-svg-converter xar-to-svg converter] - Converter for Xara Xtreme to Inkscape&lt;br /&gt;
* [https://blueprints.launchpad.net/inkscape/+spec/new-from-template-dialog 'New From Template' dialog]&lt;br /&gt;
* [https://blueprints.launchpad.net/inkscape/+spec/lpe-blueprint More Live Path Effects] - There is a lengthy list of ideas to choose from here.&lt;br /&gt;
* [https://blueprints.launchpad.net/inkscape/+spec/kml-svg-translation KML SVG translation] - For use of Inkscape with Google Earth or Maps&lt;br /&gt;
* [https://blueprints.launchpad.net/inkscape/+spec/kidscape-project kidscape] - Condensed version of Inkscape aimed at young kids and small form factor devices&lt;br /&gt;
* [https://blueprints.launchpad.net/inkscape/+spec/cutter-control Cutter control] - Enable Inkscape's use with vinyl cutters.&lt;br /&gt;
* [https://blueprints.launchpad.net/inkscape/+spec/icc-for-cairo ICC Color Management for cairo outputs] - Would allow Inkscape to produce CMYK PDFs and PSs with Cairo.&lt;br /&gt;
* [https://blueprints.launchpad.net/inkscape/+spec/guides-improvement Guides Improvements]&lt;br /&gt;
* [https://blueprints.launchpad.net/inkscape/+spec/transformation-anchors Transformation Anchors]&lt;br /&gt;
* Add a palette of objects to Inkscape. Such a palette would contain often used objects and would allow categorizing such objects. Examples of categories: UML, electric, network.&lt;br /&gt;
* [https://blueprints.launchpad.net/inkscape/+spec/power-stroke Power Stroke] - Modulated width stroke LPE.&lt;br /&gt;
* Multiple-path editing support&lt;br /&gt;
* [https://blueprints.edge.launchpad.net/inkscape/+spec/inkscape-connectors Connector tool improvements] - Expose new libavoid functionality: orthogonal routing, connector ports, curved connectors, etc.&lt;br /&gt;
* Arrowhead/marker improvements&lt;br /&gt;
&lt;br /&gt;
Please do not feel limited to the above ideas - some of our best contributions have been unique ideas that students had in mind from other sources!&lt;br /&gt;
&lt;br /&gt;
For more ideas, please see https://blueprints.launchpad.net/inkscape/&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Connectors&amp;diff=49154</id>
		<title>Connectors</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Connectors&amp;diff=49154"/>
		<updated>2009-03-30T05:48:08Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: Add some comments to help formalise possible Summer of Code Tasks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Connector Tool Improvements'''&lt;br /&gt;
&lt;br /&gt;
In Inkscape, it is possible to connect two shapes from their centers. But if you want to make a schematic with represent a family (for example), it's not possible to add connectors from an edge of a shape.&lt;br /&gt;
&lt;br /&gt;
It will be great if connectors can be added to edge of shape, in a way that auto adaptation to &amp;quot;best path&amp;quot; is still possible.&lt;br /&gt;
&lt;br /&gt;
Another idea is to implement a tool that can *restrict* the connector to vertical and horizontal lines only. For now, Inkscape is tracing straight lines or broken line if there is an shape in the path, but lines go in any direction.&lt;br /&gt;
&lt;br /&gt;
It will be great if connectors can be configured in a way that they must avoid others shapes, AND pass through some specific points, AND stay even horizontal even vertical.&lt;br /&gt;
&lt;br /&gt;
I do not speak yet about the functionality of making a little &amp;quot;bridge&amp;quot; when two lines cross each others and are not connected. This is a functionality that exists in M$ Visio but does not work very well :-/&lt;br /&gt;
&lt;br /&gt;
Thanks for reading !&lt;br /&gt;
&lt;br /&gt;
'''Printscreens'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Comments'''&lt;br /&gt;
&lt;br /&gt;
I'd like to formalise aspects of this project proposal. I'm the author of libavoid (the library used for routing in Inkscape) and the person who added the existing connector tool. I'd also probably be the most appropriate person to mentor this project if it were undertaken as a Google Summer of Code (GSoC) project. Below are some connector improvement tasks, along with some comments.&lt;br /&gt;
&lt;br /&gt;
1) Drawing to shape edge, rather than bounding box:&lt;br /&gt;
Currently, the connector tool only draws connectors to the bounding box of shapes. It should (probably) instead draw them up to the first intersection point with the shape's stroke. This is probably quite easy to achieve now that lib2geom is included in Inkscape -- 2geom can find intersection points between lines or curves making up shapes. Otherwise, the old Boolean Ops code could be used instead.&lt;br /&gt;
&lt;br /&gt;
2) Connector ports (Connecting to a specific point on a shape):&lt;br /&gt;
libavoid is able to route connectors to specific points. This work would require adding a GUI for this feature to Inkscape so that users could define connector ports on shapes. These would need to be editable through the canvas and the information saved and loaded from files. I think this activity, along with the other minor items on this list, would form the basis of a good GSoC project.&lt;br /&gt;
&lt;br /&gt;
3) Orthogonal connector support (vertical and horizontal lines only):&lt;br /&gt;
This is something I am working on in libavoid right now. An initial version will be complete during the 2009 GSoC period, so this feature will shortly become fairly trivial to add to Inkscape.&lt;br /&gt;
&lt;br /&gt;
4) Routing connectors through specific points:&lt;br /&gt;
This is not currently a feature of libavoid, though it is a fundamentally easy thing to do. I would be able to add this feature to libavoid fairly easily, and then the work would be in creating an interface for creating such points and working with them in Inkscape.&lt;br /&gt;
&lt;br /&gt;
5) Visualising connector crossings:&lt;br /&gt;
libavoid can be queried to determine where connector crossings occur. Thus, Inkscape could be updated to use this information to modify the connector's path to visualise the crossings distinctly (such as by drawing a little &amp;quot;bridge&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
6) Curved poly-line and orthogonal connectors:&lt;br /&gt;
Inkscape can return versions of poly-line or orthogonal connector paths with curved corners. This is purely an aesthetic improvement. Inkscape could be fairly easily modified to add an option for this and to use this feature of libavoid.&lt;br /&gt;
&lt;br /&gt;
7) Routing preferences and penalties:&lt;br /&gt;
libavoid can provide routes that have less segments, or that have less large bends. It does this by penalising these features when determining the routes. These options could be exposed within Inkscape to give users more control over the quality of the generated paths for connectors.&lt;br /&gt;
&lt;br /&gt;
I'm willing to mentor and assist an interested student who is willing to work on one or more of these tasks. -- Michael Wybrow&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=28654</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=28654"/>
		<updated>2008-05-11T09:04:05Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: Add dependency on gsl&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo +pdf boehmgc gtkmm intltool libxslt lcms popt poppler boost gnome-vfs \&lt;br /&gt;
 libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm intltool libxslt lcms popt boost gsl&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo +pdf&amp;lt;/code&amp;gt; (cairo with the pdf variant) : better pdf export&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo +pdf poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above.&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All these steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to known how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Update Macport sources ==&lt;br /&gt;
&lt;br /&gt;
The port descriptions in Macports do not currently all compile properly with their Universal variants.   For this reason, we currently use a modified set of some of the portfiles that will compile a universal libraries.  Work is being done to integrate these changes into Macports itself.&lt;br /&gt;
&lt;br /&gt;
You can use our modified portfiles by adding our ports to your sources:&lt;br /&gt;
&lt;br /&gt;
1. Checkout our ports directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/experimental/trunk/mjwybrow/ports ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Edit your sources list to include this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
And add the following line *before* the existing rsync source:&lt;br /&gt;
&amp;lt;pre&amp;gt;file:///Users/YOURUSERNAME/directory/to/ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Run the portindex command in the checked-out port directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;portindex&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Run port sync&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile Inkscape's essential dependencies as Universal libraries on either 10.4 or 10.5,  by giving the &amp;quot;+universal&amp;quot; option for each, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -v install poppler +universal gtk2 +universal ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you already have non-universal versions of these ports installed you may need to deactivate the port and rebuild it, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -f uninstall cairo&lt;br /&gt;
sudo port clean cairo&lt;br /&gt;
sudo port -v install cairo +universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal Inkscape ==&lt;br /&gt;
&lt;br /&gt;
First, Set your SDK, 10.5 for Leopard, 10.4u for TIger:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.5.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; (For Leopard)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.4u.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp;  (For Tiger)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, set up your environment to point to the Macports libraries:&lt;br /&gt;
&amp;lt;pre&amp;gt;export MACPORTS=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
export PATH=$MACPORTS/bin:$MACPORTS/sbin:/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$MACPORTS/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$MACPORTS/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$MACPORTS/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall -isysroot $SDK -arch ppc -arch i386&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The final step is to configure and compile Inkscape.  Inkscape must be configured with the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;   Sets the correct path for Inkscape to be used from an .app bundle&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;--disable-dependency-tracking&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; Dependency tracking can't be user when compiling universal binaries.&lt;br /&gt;
&lt;br /&gt;
Inkscape can then be built (with make), installed, and packaged into a Universal .app bundle using the standard .app bundle building instruction above.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+pdf+no_x11 cairomm +quartz pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathuniv=&amp;quot;export PATH=/opt/local-univ/bin:/opt/local-univ/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using the all in one build script [experimental] =&lt;br /&gt;
&lt;br /&gt;
To build a native-GTK build of Inkscape, GTK and some of its dependencies must be built with special options. You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).  This is a modified version of the Imendio native build script, found with instructions on this page:&lt;br /&gt;
http://developer.imendio.com/projects/gtk-macosx/build-instructions&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested. If you have any troubles using this process then please report them to Michael Wybrow (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PREFIX=/your/install/prefix&lt;br /&gt;
./build-gtk bootstrap&lt;br /&gt;
./build-gtk build inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.46&amp;diff=27144</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=27144"/>
		<updated>2008-04-02T00:47:15Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Mac OS X specific improvements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Inkscape 0.46=&lt;br /&gt;
&lt;br /&gt;
Highlights 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;
* Live path effects&lt;br /&gt;
&lt;br /&gt;
* Color management&lt;br /&gt;
&lt;br /&gt;
* New SVG filters and UI&lt;br /&gt;
&lt;br /&gt;
* Native PDF and AI import&lt;br /&gt;
&lt;br /&gt;
* XAML import/export&lt;br /&gt;
&lt;br /&gt;
* Open Clip Art Library integration (import/export)&lt;br /&gt;
&lt;br /&gt;
* Stock patterns&lt;br /&gt;
&lt;br /&gt;
* Bitmap editing extension effects&lt;br /&gt;
&lt;br /&gt;
* Full on-canvas gradient editing&lt;br /&gt;
&lt;br /&gt;
* Engraver's Toolbox in the Calligraphic tool&lt;br /&gt;
&lt;br /&gt;
* Touch selection&lt;br /&gt;
&lt;br /&gt;
* Dockable dialogs&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;
* &amp;quot;3D&amp;quot; / axonometric grid&lt;br /&gt;
&lt;br /&gt;
* Angled guidelines&lt;br /&gt;
&lt;br /&gt;
* Conversion of objects to guidelines&lt;br /&gt;
&lt;br /&gt;
* Significant speed and interactivity improvements&lt;br /&gt;
&lt;br /&gt;
* Hundreds of smaller features and bugfixes&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 in order from top to bottom. Now the redraw always starts '''at your mouse cursor location''' and proceed upwards and downwards from it, so that the area near the cursor is always redrawn first. This significantly improves program's responsiveness in some situations. For example, when you are node-editing part of a complex path, the entire path needs to be redrawn on each change, but now this redraw starts from the point you're working on. Moreover, the redraw is interruptible, so each mouse movement starts new redraw from the mouse cursor area. As a result, during such operations those parts that you're working on redraw often and feel snappy and responsive, while areas further away may lag behind more.&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;
:'''Exporting drawings with blur''' was particularly slow in 0.45; some files could take hours to export. Now this is fixed, in part by the faster algorithm mentioned above and in part by a bugfix in the export code. Now even the quite complex files with large blurs export at high resolution in at most a few minutes.  &lt;br /&gt;
&lt;br /&gt;
* Minor improvements have been made to gradient rendering performance.&lt;br /&gt;
&lt;br /&gt;
* '''Dragging handles and nodes''' as well as '''dragging and transforming objects''' by mouse became more responsive, so that working in complex drawings and especially editing complex paths is noticeably easier. In particular, this fixes the annoying latency issue where a node or a handle could follow mouse cursor even after you release mouse button after a drag. &lt;br /&gt;
&lt;br /&gt;
* '''Moving objects, nodes, and gradient handles by cursor keys''' as well as '''scaling and rotating objects from keyboard''' and '''zooming by keys''' are much more responsive when working with complex slow-rendering objects. Now, if you press and hold a key, your selection/zoom level will quickly jump to the final position instead of going through all the intermediate steps as before. &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;
:* '''Redrawing the newly exposed parts of the canvas''' after scrolling, especially diagonal scrolling, is now faster because only the exposed areas are redrawn; before, this often resulted in the entire screen being redrawn which was much slower.&lt;br /&gt;
&lt;br /&gt;
:* Previously, if you started 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;
* Better responsiveness and more visual feedback in user interface: &lt;br /&gt;
&lt;br /&gt;
:*When you zoom, the '''zoom control''' on the right end of the statusbar now updates immediately, not after screen redraw as before. &lt;br /&gt;
&lt;br /&gt;
:*Many potentially slow commands (Save, Simplify, Combine, Break Apart and others) now display a '''busy cursor''' and flash a message in the statusbar (e.g. &amp;quot;Saving document...&amp;quot;) while they work. &lt;br /&gt;
&lt;br /&gt;
:*The '''statusbar messages''' displayed while you're drawing a shape or a path in Pen tool do not lag behind the mouse movements.&lt;br /&gt;
&lt;br /&gt;
* '''Combine''' and '''Convert to paths''' commands are now orders of magnitude faster when applied to a selection with hundreds or thousands of objects.&lt;br /&gt;
&lt;br /&gt;
* The time it takes to '''snap to objects''' using the selector tool has been reduced dramatically, which is most noticeable for snapping to complex paths.&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;
===How it works===&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 (or use the auto gap closing parameter, see below).&lt;br /&gt;
&lt;br /&gt;
===Style===&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). As in all other tools, the '''style swatch''' on the far right of the Controls bar shows the style that will be used for the next fill object you create.&lt;br /&gt;
&lt;br /&gt;
===Controls===&lt;br /&gt;
&lt;br /&gt;
In the tool's '''Controls bar''':&lt;br /&gt;
&lt;br /&gt;
* Paint Bucket's perceptual fill can use either all visible colors or specific color channels. Using the '''Fill by''' drop-down list, you can restrict the fill algorithm to one 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;
* The '''Threshold''' (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;
* Using the '''Grow/shrink by''' parameter, 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 much the same as the Outset and Inset path commands, except it's done automatically after every fill.&lt;br /&gt;
&lt;br /&gt;
* With the '''Close gaps''' parameter, you can make the Paint Bucket tool  ignore 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 (close gaps up to 2 pixels in size)&lt;br /&gt;
** Medium (4 pixels)&lt;br /&gt;
** Large (6 pixels)&lt;br /&gt;
:Note that setting this parameter to other than None may slow down noticeably the filling of large areas.&lt;br /&gt;
&lt;br /&gt;
===Shortcuts===&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 drawings which largely blurs the&lt;br /&gt;
distinction between vector and raster editing. Instead of meticulously selecting some&lt;br /&gt;
objects and then performing an action on the selection, you can now select ''all''&lt;br /&gt;
objects (or all objects you are interested in) and apply the Tweak tool's brush to&lt;br /&gt;
smoothly and naturally change the shape or style of only those objects (or parts&lt;br /&gt;
thereof) ''that the brush touches''.&lt;br /&gt;
&lt;br /&gt;
The area of the tool's action - its ''brush'' - is marked by an orange-colored circular&lt;br /&gt;
outline that moves with your mouse cursor. 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.&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 mode or paint it by Color Paint&lt;br /&gt;
mode. You can also apply it to groups of objects; it will go into groups and act on&lt;br /&gt;
individual objects inside groups. If you're trying to use it without anything selected,&lt;br /&gt;
it will remind you by a statusbar message to select some objects.&lt;br /&gt;
&lt;br /&gt;
===Width===&lt;br /&gt;
&lt;br /&gt;
The width of the tool's brush, in the range from 1 to 100, can be changed by the&lt;br /&gt;
'''Width''' control in the tool's controls bar above the canvas. You can also change&lt;br /&gt;
width by '''Left''' and '''Right''' arrow keys (same as in the Calligraphy tool) at any&lt;br /&gt;
time (including during action) as well as '''Home''' and '''End'''. Also, as in Calligraphy&lt;br /&gt;
tool, the visible width of the brush is independent of zoom; simply zooming in or out is&lt;br /&gt;
often easier than adjusting the width if you want to cover a smaller or larger area of&lt;br /&gt;
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, also in the&lt;br /&gt;
range from 1 to 100. You can also change width by '''Up''' and '''Down''' arrow keys at&lt;br /&gt;
any time (including during action).&lt;br /&gt;
&lt;br /&gt;
If you have a pressure-sensitive tablet and your &amp;quot;Use pressure&amp;quot; button on the right-hand&lt;br /&gt;
end of the controls bar is on, then the force will also depend on how hard you actually&lt;br /&gt;
press your pen into your tablet, changing in the range from zero to whatever you set in&lt;br /&gt;
the Force control. If all you have is a mouse, then the force will be constant but still&lt;br /&gt;
settable by the Force control. &lt;br /&gt;
&lt;br /&gt;
===Path editing modes===&lt;br /&gt;
&lt;br /&gt;
The Tweak tool has a number of '''modes''', selectable by toggle buttons in the tool's&lt;br /&gt;
Controls bar and by keyboard shortcuts. Some of these modes change the shapes of &lt;br /&gt;
paths while others affect the colors of objects. All these modes share the Width and&lt;br /&gt;
Force controls but otherwise are quite different. Let's look at the path editing modes&lt;br /&gt;
first.&lt;br /&gt;
&lt;br /&gt;
Unlike the Node tool, to edit paths with the Tweak tool you don't need to worry about&lt;br /&gt;
where the nodes of a path are and how to manipulate them. You just apply the tool's&lt;br /&gt;
brush to any point, and the selected paths at that point will reshape smoothly and&lt;br /&gt;
naturally - as if made of soft jelly - regardless of where its nodes lie. If applied to&lt;br /&gt;
a shape or text object, the tool converts them to paths automatically.&lt;br /&gt;
&lt;br /&gt;
While not very useful for technical drawings, tweaking paths will be indispensable for&lt;br /&gt;
artistic uses of Inkscape - cartoons, drawings, sketches, anime, etc. This new&lt;br /&gt;
functionality is somewhat similar to the tools such as &amp;quot;Pucker&amp;quot; and &amp;quot;Bloat&amp;quot; in the&lt;br /&gt;
latest versions of Adobe Illustrator. &lt;br /&gt;
&lt;br /&gt;
There are currently six path editing modes in the Tweak tool: '''Push''', '''Shrink''',&lt;br /&gt;
'''Grow''', '''Attract''', '''Repel''', 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 '''Shrink''' and '''Grow''' 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 (Shrink) or outwards (Grow). 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 Calligraphy pen 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 Shrink action where you want the lines to become thinner (and the hatching to become lighter), up until total disappearance. If you press hard, shrinking works as an eraser, so you can easily clean the strokes' ends to make them thin, sharp, and uniform. Conversely, applying Grow makes strokes wider (i.e. the hatching becomes darker).&lt;br /&gt;
&lt;br /&gt;
:Of course, shrinking and growing are useful not only for calligraphic strokes. Same as with Push, with Shrink and Grow you can '''sculpt''' any path, spawning smooth treacle-like appendages with Grow and carving holes with Shrink. Unlike the &amp;quot;node sculpting&amp;quot; mode in the Node tool, however, this does not require adding new nodes to the shape.&lt;br /&gt;
&lt;br /&gt;
* The '''Attract''' and '''Repel''' modes work by moving each affected point on a path towards (Attract) or from (Repel) the cursor point. In some cases this may look similar to Shrink and Grow, but the difference is that shrinking/growing moves paths perpendicularly to the path in each point, whereas attracting/repelling moves them to or from the cursor regardless of the path shape. These modes are similar to the Pinch effect in AI; you can use them for various central-symmetric distortions in parts of your paths.&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, shrinking, or growing 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;
See the screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.46-tweak-path.png] for a few examples of using the path editing modes of the Tweak tool.&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;
inflates 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 inflating 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;
====Known problems====&lt;br /&gt;
&lt;br /&gt;
Known problems with the path editing modes in Tweak tool:&lt;br /&gt;
&lt;br /&gt;
# they don't work on open paths (an open path becomes closed if you tweak it);&lt;br /&gt;
# they are rather slow; &lt;br /&gt;
# they quickly eat memory; and &lt;br /&gt;
# they are sometimes buggy - thin calligraphic strokes may suddenly disappear or change their shape drastically as you're shrinking or growing them.&lt;br /&gt;
&lt;br /&gt;
For (4), 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;
===Color editing modes===&lt;br /&gt;
&lt;br /&gt;
The '''Color Paint''' and '''Color Jitter''' modes, unlike the path editing modes,&lt;br /&gt;
change the colors of objects instead of their shapes. Yet they share enough common&lt;br /&gt;
features with the path editing modes to be part of the same tool: These modes also use&lt;br /&gt;
a circular soft-edged brush controlled by the Width and Force parameters on the Controls&lt;br /&gt;
bar and affected by the pen pressure (if you have a pressure-sensitive tablet).&lt;br /&gt;
&lt;br /&gt;
* '''Color Paint''' applies the style of the tool to the selected objects under the brush. The style of the tool is visible in the style swatch at the rightmost end of the tool's control bar; it can be changed by clicking on the color palette or by any other style assignment command, such as Fill and Stroke dialog. ('''Note''': unlike all other tools, in Tweak tool in Color Paint mode you cannot assign style directly to selected objects; any style-setting command changes the tool's style instead.)&lt;br /&gt;
&lt;br /&gt;
:The fill from the tool's style applies to the fills of the painted objects, and the stroke applies to the strokes. If the tool's style has no fill or no stroke, it won't affect fills or strokes, correspondingly. For example, if you want to color the fills of objects blue but leave their strokes untouched, assign blue fill to the tool's style (just click blue on the palette) but set its stroke to None (middle-click the Stroke swatch in the statusbar). Similarly, master opacity in the tool's style affects master opacities of the touched objects (if the O channel is on, see below).&lt;br /&gt;
&lt;br /&gt;
:This mode allows you to literally paint over objects, shifting their colors towards the target style of the tool. For example, if you paint with yellow fill over a blue-filled object, the object will become greenish blue, then green, then yellowish green, and end up being exactly the yellow color you're painting with. This speed of this gradual transition depends on both Force parameter and pen pressure; also, objects touched by the periphery of the brush are less affected than those hit by the brush center. Overall, using this tool is very similar to a soft brush in a raster editor such as Gimp or Photoshop.&lt;br /&gt;
&lt;br /&gt;
* '''Color Jitter''' mode does not apply any color, but instead jitters (randomizes) the colors of the objects it touches. The force of the action determines how strong is the randomization, i.e. how far the colors deviate from the original values. This mode does not use the tool's style.&lt;br /&gt;
&lt;br /&gt;
Both modes work on flat fills and gradients; for gradients, the tool takes into account not only the position of the entire object with gradient, but also the position of each gradient stop relative to the brush. This means that, for example, you can change the blue color only in an object filled with blue-red gradient simply by painting over its blue end with a brush small enough to not touch the red. (Note that color tweaking does not create gradients on objects that used flat color before, but only adjusts existing gradients in the drawing.)&lt;br /&gt;
&lt;br /&gt;
See the screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.46-tweak-color.png] for a few examples of using the color editing modes of the Tweak tool.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Channels====&lt;br /&gt;
&lt;br /&gt;
Color Paint and Color Jitter honor the '''Channels''' control. This control comprises&lt;br /&gt;
the four buttons: '''H''', '''S''', '''L''', and '''O''', which allow you to turn on and off&lt;br /&gt;
the tool's action on the object's hue, saturation, lightness, and opacity,&lt;br /&gt;
correspondingly. For example, if you want to raise the saturation of some part of your&lt;br /&gt;
drawing without changing the hue, select some maximum-saturation color (e.g. pure red)&lt;br /&gt;
and turn off all Channels buttons except S. Similarly, you can replace the hues without&lt;br /&gt;
affecting saturation or lightness (only H pressed), or lighten/darken all colors without&lt;br /&gt;
changing their hues and saturation (only L pressed). Pressing O allows you to apply the&lt;br /&gt;
master opacity from the tool's style to the master opacity of objects (but not fill or&lt;br /&gt;
stroke opacity).&lt;br /&gt;
&lt;br /&gt;
====Usage notes====&lt;br /&gt;
&lt;br /&gt;
Color painting with Tweak tool is similar, but not exactly analogous to bitmap&lt;br /&gt;
painting. Even though the tool itself works as a soft brush, it still applies its color&lt;br /&gt;
to vector objects, which behave as vector objects usually do. For example, if you want&lt;br /&gt;
to change the tint of the face in your drawing, and if a hand in the drawing is part of&lt;br /&gt;
the same object as the face, that hand will change its tint too even if it's located far&lt;br /&gt;
from the point you are painting. (We foresee a &amp;quot;fracture&amp;quot; command in one of the next&lt;br /&gt;
versions of Inkscape which will help you turn a monolithic object into a mosaic of small&lt;br /&gt;
fragments that will be then easy to paint with Tweak tool.)  Still, even with this&lt;br /&gt;
limitation, color painting is a novel way of dealing with vector drawings which allows&lt;br /&gt;
you to quickly and intuitively make adjustments which would be awkward and slow with&lt;br /&gt;
traditional approach.&lt;br /&gt;
&lt;br /&gt;
Drawings containing patterns or scatterings of small independent objects are best suited&lt;br /&gt;
for color painting with Tweak tool. Examples include:&lt;br /&gt;
&lt;br /&gt;
* freehand drawings with Calligraphy pen, consisting of many separate strokes;&lt;br /&gt;
&lt;br /&gt;
* gradient meshes imported from Adobe Illustrator files (Inkscape renders these meshes as lattices of small polygons; while there's no direct support for gradient meshes in Inkscape yet, color painting on such lattices is almost as good);&lt;br /&gt;
&lt;br /&gt;
* text converted to paths and with Break Apart command applied so that each letter is a separate path;&lt;br /&gt;
&lt;br /&gt;
* patterns made with the Tile Clones command; note that you need to unset the fill and/or stroke on the original object and use the Color tab to assign some initial color to the clones - this will make them paintable with the Tweak tool without unlinking.&lt;br /&gt;
&lt;br /&gt;
Moreover, color tweaking can be useful for compositions with a few objects or even for&lt;br /&gt;
single objects. Unlike all other color selection methods, painting with the Tweak tool&lt;br /&gt;
implements the ''color mixing'' metaphor which is much more familiar to traditional&lt;br /&gt;
artists than RGB sliders or even the color wheel. For example, start with a rectagle of&lt;br /&gt;
pure blue color; then, pick different colors by Color Paint and apply light touches with&lt;br /&gt;
minimum Force and minimum pen pressure: add a little green, a little brown, a little&lt;br /&gt;
yellow, etc. until you have the exact hue you need. Similarly, you can whiten or blacken&lt;br /&gt;
any hue by admixing white or black.&lt;br /&gt;
&lt;br /&gt;
You can also use color tweaking to add a tint, darken/lighten, saturate/desaturate, or&lt;br /&gt;
color jitter your entire drawing. Just select all in all layers, zoom out, choose a&lt;br /&gt;
large brush width so it covers all of the drawing, and apply a little color tweaking&lt;br /&gt;
(with minimum Force) that will therefore affect all visible objects.&lt;br /&gt;
&lt;br /&gt;
===Keyboard shortcuts===&lt;br /&gt;
&lt;br /&gt;
* '''W''', '''Shift+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+S''': switch to the Shrink mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+G''': switch to the Grow mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+A''': switch to the Attract mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+E''': switch to the Repel mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+R''': switch to the Roughen mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+C''': switch to the Color Paint mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+J''': switch to the Color Jitter 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 Shrink (while Ctrl is down)&lt;br /&gt;
&lt;br /&gt;
* '''Shift+Ctrl+mouse drag''': temporarily switch to Grow (while Shift+Ctrl is down)&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 create drawings or objects that appear three-dimensional. The new '''3D box tool''' helps you create such drawings by automating the most common operation: creating a box in a given 3D 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; Shift+drag without releasing the mouse button to extrude in Z direction.&lt;br /&gt;
&lt;br /&gt;
* Adjust any of its 3 dimensions by handles. The 4 handles on the front X/Y side resize it, the four ones on the back X/Y side expand/contract the box in Z direction. With Shift, the functions of handles on front and back sides are reversed. With Ctrl, the side-resizing handles snap to the coordinate axes or diagonals.&lt;br /&gt;
&lt;br /&gt;
* Move a 3D box &amp;quot;in perspective&amp;quot; by dragging its center; without modifiers, movement occurs within the XY-plane (press Ctrl to constrain the movement to the directions of the coordinate axes or diagonals), with Shift the box moves parallel to the Z-axis.&lt;br /&gt;
&lt;br /&gt;
* Adjust the vanishing points of a perspective by dragging them on the canvas (see below) or toggling their states; all boxes sharing this perspective are affected by a vanishing point move. &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;
In SVG, a 3D box is represented as a '''group''' (svg:g) with a special extension attribute (in Inkscape's 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;
===Keyboard shortcuts===&lt;br /&gt;
&lt;br /&gt;
* '''X''', '''Shift+F4''': switch to the 3D box tool&lt;br /&gt;
&lt;br /&gt;
* The various kinds of parentheses, namely '''[''' ''']''', '''(''' ''')''', '''{''' '''}''', can be used to rotate infinite (i.e., parallel) perspective lines in X-, Y-, and Z-direction, respectively. Closing parentheses rotate clockwise and opening parentheses rotate counterclockwise. The angle of rotation is taken from the preferences. Pressing '''Alt''' reduces the amount of rotation to 1 screen pixel.&lt;br /&gt;
&lt;br /&gt;
* When the 3D box tool is active, '''Shift+X''', '''Shift+Y''', and '''Shift+Z''' toggle perspective lines in the corresponding direction between &amp;quot;converging&amp;quot; and &amp;quot;parallel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Gradient Tool==&lt;br /&gt;
===Selecting multiple stops===&lt;br /&gt;
'''More than one gradient stop''' can be selected at a time. Shortcuts for working with multiple stop selections are generally modeled on the Node tool. &lt;br /&gt;
* Add a stop to the selected stops by '''Shift+click'''.&lt;br /&gt;
* Press '''Ctrl+A''' to select all stops in the selected objects.&lt;br /&gt;
* '''Shift+drag''' around stops to add them to selection.&lt;br /&gt;
Multiple selected stops:&lt;br /&gt;
*Can be moved together by '''mouse drag''' or by '''arrow keys'''. For example, creating a linear gradient, then press Ctrl+A to select all stops and use arrow keys to move the entire gradient as a whole.&lt;br /&gt;
*Can be deleted at the same time by pressing '''Del'''.&lt;br /&gt;
An always up-to-date description of the current handle selection is provided in the statusbar in the Gradient tool, including the number of selected handles (and the type of the single selected handle), as well as the total number of handles and selected objects.&lt;br /&gt;
&lt;br /&gt;
===Editing intermediate stops===&lt;br /&gt;
'''Intermediate stops''' in gradients can be added, deleted, and edited on canvas (previously this was only possible in the Gradient Editor dialog).&lt;br /&gt;
*Stops can be added by '''double clicking''' or by '''Ctrl+Alt+Click''' on the gradient line. Also, you can '''drag-and-drop''' a color from the palette onto the gradient line to create a new stop with this color. Dropping a color on an existing stop changes the color of that stop.&lt;br /&gt;
*When two or more adjacent stops are selected, pressing '''Ins''' adds stops in the middles of all selected stop intervals.&lt;br /&gt;
*Intermediate stops can be '''mousedrag'''ged or moved by '''arrow keys''' along their gradient line, within the limits of the adjacent unselected stops (or end handles). &lt;br /&gt;
:*Dragging with '''Ctrl''' moves the selected stops snapping them to 1/10 fractions of the available range.&lt;br /&gt;
:*Dragging with '''Alt''' moves the selected stops depending on how close each one is to the stop being dragged, using a smooth bell-like curve similar to the node sculpting feature in Node tool. This makes it easy to approximate different gradient profiles; for example, if you have a two-stop gradient that you want to shape according to a curve profile, select both ends of the gradient, press '''Ins''' a few times to add a number of intermediate nodes, then '''Alt+drag''' a node in the middle to smoothly profile the gradient.&lt;br /&gt;
*Stops can also be moved by '''arrow keys''' with all the regular modifiers ('''Shift''' for 10x movement, '''Alt''' for pixel-size movement at the current zoom, '''Shift+Alt''' for 10 pixels movement at the current zoom).&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;
*Pressing '''Ctrl+L''' with some intermediate stops selected attempts to ''simplify'' the selected portion of the gradient, removing those stops that can be removed without too much change in the way the gradient looks. In particular, new stops created by double-clicking or pressing Ins initially do not change the appearance of the gradient, so if you press Ctrl+L, all redundant stops that weren't moved or repainted since creation will be deleted.&lt;br /&gt;
&lt;br /&gt;
===Style of gradient stops===&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;
*When one or more gradient stops are selected, using the Copy command ('''Ctrl+C''') copies to the clipboard the style (color and opacity) of the selected stop or the averaged style of several selected stops, not the entire object with gradient as before. This means you can now copy/paste style between stops: select the source stop(s), copy, select the destination stop(s), paste style ('''Ctrl+Shift+V'''). With several selected stops, this also allows you to easily average their colors and opacities by copying them and pasting the style back onto them. (After that, redundant gradient stops can be removed by simplification with '''Ctrl+L''').&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;
===Automatic duplication of gradients===&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). The Duplicate button is therefore removed. &lt;br /&gt;
&lt;br /&gt;
However, to accommodate the needs of users who have relied on sharing the same gradient definition across objects, this behavior can be optionally suppressed. The '''Prevent sharing of gradient definitions''' checkbox on the Misc tab of Inkscape Preferences is by default checked; if you uncheck it, Inkscape does not automatically copy gradient definitions for new objects, which means that copy/pasting, duplicating, pasting style, and explicit assignment of a gradient to an object via the Gradient tool controls results in a shared gradient definition, so that changing the colors or mid-stop positions of the gradient on one object (but not changing the coordinates of the end handles) affects all other objects that share the same definition.&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), as well as to '''-1/3''', '''-1/2''', '''-1''', '''-2''', '''-3''', etc. This way you can, for example, mirror any object around one of the edges of its box. (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;
&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;
* As a long-requested feature, two entry fields are added to the toolbar which allow precise editing of the coordinates of selected nodes.&lt;br /&gt;
&lt;br /&gt;
==Rectangle Tool==&lt;br /&gt;
&lt;br /&gt;
* '''Ctrl+dragging''' now also allows the creation of rectangles with sides constrained to the '''golden ratio''' (approx. 1 : 1.618034), not only integer ratios.&lt;br /&gt;
&lt;br /&gt;
==Ellipse Tool==&lt;br /&gt;
&lt;br /&gt;
* It is now easy to create ellipses/circles passing through particular points. Normally, the starting and ending point of the mouse drag mark the corners of the '''bounding box'''. Now the '''Alt''' modifier can be used to enlarge the ellipse so that its '''circumference''' passes through these two points.&lt;br /&gt;
&lt;br /&gt;
* '''Ctrl+Alt+drag''' is an exception from this rule. It creates a perfect circle whose diameter is defined by the starting and ending point of the drag.&lt;br /&gt;
&lt;br /&gt;
==Pen/Pencil Tools==&lt;br /&gt;
&lt;br /&gt;
These tools can now create '''single dots''' by '''Ctrl+click''' on the canvas. This creates a small circle filled with the current stroke color. The radius can be set in the Preferences of the respective tools (it is specified as a multiple of the current stroke width). '''Shift+Ctrl+click''' creates a dot twice the specified size, and '''Alt+Ctrl+click''' varies the size of the created dots randomly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Dropper Tool==&lt;br /&gt;
&lt;br /&gt;
The shortcut 'D' is now used to &amp;lt;i&amp;gt;toggle&amp;lt;/i&amp;gt; (not just switch to) the dropper tool - much like space is used to toggle the selector tool. That is, pressing 'D' a second time switches back to the tool used before.&lt;br /&gt;
&lt;br /&gt;
=SVG features=&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;
==SVG 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 '''feColorMatrix''' filter primitive applies a matrix transformation to colour of each rendered pixel. This allows for effects like turning object to grayscale, modifying colour saturation and changing colour hue.&lt;br /&gt;
&lt;br /&gt;
* The '''feComposite''' filter primitive composites two images using one of the [http://en.wikipedia.org/wiki/Porter-Duff Porter-Duff blending modes] (described in paper Compositing Digital Images by T. Porter and T. Duff, published in SIGGRAPH '84 Conference Proceedings, Association for Computing Machinery, Volume 18, Number 3, July 1984) or the aritmetic mode described in SVG standard. Porter-Duff blending modes are essentially logical operations between the images. For example, xor mode shows the areas, where either one of the objects is, but not the areas where both of the objects are. Arithmetic mode lets you specify coefficients k1-k4 for blending equation (result colour) = k1 * (first input colour) * (second input colour) + k2 * (first input colour) + k3 * (second input colour) + k4.&lt;br /&gt;
&lt;br /&gt;
* The '''feConvolveMatrix''' lets you specify a [http://en.wikipedia.org/wiki/Convolution Convolution] to be applied on the image. Common effects created using convolution matrices are blur, sharpening, embossing and edge detection. There's a fairly good explanation and some example matrices at [http://www.gamedev.net/reference/programming/features/imageproc/page2.asp www.gamedev.net/reference/programming/features/imageproc/page2.asp]. Note that while gaussian blur can be created using this filter primitive, the special gaussian blur primitive is faster and resolution-independent.&lt;br /&gt;
&lt;br /&gt;
* Filter primitives '''feDiffuseLighting''' and '''feSpecularLighting''' create lighting maps for the object in input image. SVG doesn't have concept of third dimension, so these filters use alpha channel of input image as a height map: the more opaque given point in input image is, the nearer spectator it is considered to be. There exists an example for using these in Inkscape distribution, in share/examples/lighting_effects.svg or [http://inkscape.svn.sourceforge.net/viewvc/*checkout*/inkscape/inkscape/trunk/share/examples/lighting_effects.svg?revision=15523 in SVN]&lt;br /&gt;
&lt;br /&gt;
* The '''feDisplacementMap''' filter primitive displaces the pixels in the first input using the second input as a displacement map, that shows from how far the pixel should come from. Classical examples are whirl and pinch effects, that can be found in most image manipulation programs and even in some screensavers, where this kind off effect is moving around screen, twisting desktop beneath it.&lt;br /&gt;
&lt;br /&gt;
* The '''feFlood''' filter primitive fills its region with a given color and opacity. It can be used as an auxiliary tool, usualy in combination with other filter primitives, in order to facilitate some common color handling operations.&lt;br /&gt;
&lt;br /&gt;
* The '''feImage''' filter primitive allows using external images as part of filtering chain. For example, one could use external image as a displacement map for feDisplacementMap or as a height map for lighting effects. Note that while SVG standard allows using other parts of the SVG file in this filter primitive, the current Inkscape implementation only allows external images.&lt;br /&gt;
&lt;br /&gt;
* The '''feMerge''' filter primitive composites several temporary images inside the filter primitive to a single image. It uses normal alpha compositing for this. This is equivalent to using several feBlend primitives in 'normal' mode or several feComposite primitives in 'over' -mode.&lt;br /&gt;
&lt;br /&gt;
* The '''feMorphology''' filter primitive provides erode and dilate effects, that are common in image manipulation programs. With erode, darker and more transparent areas spread to lighter and more opaque areas, whereas with dilate lighter and more opaque areas spread to darker and more transparent areas. For single-colour objects, this basically means, erode makes the object thinner and dilate makes it thicker.&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, where the shadow is in a slightly different position than the actual object.&lt;br /&gt;
&lt;br /&gt;
* The '''feTurbulence''' filter primitive renders [http://en.wikipedia.org/wiki/Perlin_noise Perlin noise]. This kind of noise is useful in simulating several nature phenomena like clouds, fire and smoke and in generating complex textures like marble or granite.&lt;br /&gt;
&lt;br /&gt;
See also wiki page [[Filter Effects]] for more info on filters in Inkscape in general.&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 (LPE)=&lt;br /&gt;
&lt;br /&gt;
'''Live path effects''' (not to be confused with extension effects or SVG filters) are a new way to &amp;lt;b&amp;gt;non-destructively modify path and shape objects&amp;lt;/b&amp;gt;. Path effects affect the path data of an object but not its style. The original path is preserved and can be edited directly on-canvas, and the path effect applied to it will be updated live. &lt;br /&gt;
&lt;br /&gt;
In this version, we include several path effects that are analogous to the corresponding extension effects (such as Path along Path effect and Pattern along Path that replaces the extension of the same name). The most important advantage of path effects is that they are, indeed, live - you can still edit the original path and the effect will update in real time (unlike the extension effects which were one-time one-way transformations). In the future, we plan to reimplement most if not all of path-changing extensions as live path effects.&lt;br /&gt;
&lt;br /&gt;
Live path effects were developed by Johan Engelen as part of the GSoC 2007.&lt;br /&gt;
&lt;br /&gt;
==Details about operation==&lt;br /&gt;
The following schematic tries to explain how LPE work.&lt;br /&gt;
&lt;br /&gt;
    original style  ------------&amp;gt;  output style&lt;br /&gt;
    original path   --&amp;gt;  LPE  --&amp;gt;  output path&lt;br /&gt;
                          ^&lt;br /&gt;
                          |&lt;br /&gt;
                      parameters&lt;br /&gt;
&lt;br /&gt;
The original style and path are from the path that the effect is applied on. The output is what is visible on screen. What is very important to notice is that &amp;lt;b&amp;gt;output style equals original style&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameters can be paths, numbers, points, text, in principle anything.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Applying effects==&lt;br /&gt;
Path effects are applied through the Path Effects dialog (opened from the Path menu, or by pressing Ctrl+Shift+7. This dialog is also used for controlling the effect's parameters and for removing effects.&lt;br /&gt;
&lt;br /&gt;
When a path with a path effect applied is selected, the statusbar description mentions that, for example &amp;quot;'''Path''' (4 nodes, path effect)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There is a special Paste Path Effect command (Ctrl+7) that can be used to copy effects from one path to another.&lt;br /&gt;
&lt;br /&gt;
==Editing effect parameters==&lt;br /&gt;
When switching to the node edit tool (&amp;lt;b&amp;gt;F2&amp;lt;/b&amp;gt;), the &amp;lt;b&amp;gt;original path&amp;lt;/b&amp;gt; can be edited. The original path is shown as a red helper path. Normal path operations, like simplify, still work.&lt;br /&gt;
&lt;br /&gt;
Some parameters of effects can be edited on-canvas. For example, path parameters can be node-edited, by pressing the &amp;quot;edit on-canvas&amp;quot; button in the Path Effects dialog. &amp;lt;b&amp;gt;Press &amp;quot;7&amp;quot; to cycle through the different on-canvas editable parameters.&amp;lt;/b&amp;gt; This way, one can edit the parameters without opening the Path Effects dialog. The statusbar tells the name of the parameters that is currently being shown.&lt;br /&gt;
&lt;br /&gt;
==Available effects==&lt;br /&gt;
&lt;br /&gt;
===Path along path===&lt;br /&gt;
The &amp;lt;b&amp;gt;Path along Path&amp;lt;/b&amp;gt; effect can curve a path along another path. When this effect is applied to a path, it can be bend along another path (called ''bend path''). With the node edit tool, both the original path and the bend path can be changed &amp;lt;b&amp;gt;on-canvas&amp;lt;/b&amp;gt; and the result is &amp;lt;b&amp;gt;updated live&amp;lt;/b&amp;gt;. This provides a direct equivalent of &amp;quot;vector brushes&amp;quot; or &amp;quot;skeletal strokes&amp;quot; features in other vector editors. &lt;br /&gt;
&lt;br /&gt;
In the effect's control panel in the Path Effects dialog, you can select how many copies of the original path are put along the bend path (either '''single''' or '''repeated''') and whether it is '''stretched''' to fill the bend path. In this dialog you'll also find a button to edit the bend path on-canvas and a button to '''paste''' a new bend path from clipboard. A possible workflow is this: you select and copy the new bend path to the clipboard, then select the path you want to bend, apply the Path along path effect, and paste the bend path with the paste button next to 'bend path'.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-pathalongpath.svg&lt;br /&gt;
&lt;br /&gt;
===Pattern along path===&lt;br /&gt;
The &amp;lt;b&amp;gt;Pattern along Path&amp;lt;/b&amp;gt; effect can curve a path along another path. When this effect is applied to path A (called ''skeleton''), another path B (called ''pattern'') can then be passed as a parameter. The result is that path B is bent along path A. With the node edit tool, path A can be changed &amp;lt;b&amp;gt;on-canvas&amp;lt;/b&amp;gt; and the result is &amp;lt;b&amp;gt;updated live&amp;lt;/b&amp;gt;. This provides a direct equivalent of &amp;quot;vector brushes&amp;quot; or &amp;quot;skeletal strokes&amp;quot; features in other vector editors. &lt;br /&gt;
&lt;br /&gt;
In the effect's control panel in the Path Effects dialog, you can select how many copies of the pattern are attached (either '''single''' or '''repeated''') and whether the pattern is '''stretched''' to fill the skeleton path. You can also choose the pattern for the selected skeleton [either directly or] by '''pasting''' it from clipboard (that is, you select and copy to the clipboard the pattern, then select the skeleton, apply the Path along path effect, and paste the pattern). The '''Scale width''' parameter allows you to change the width of the pattern applied to the path.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-pathalongpath.svg&lt;br /&gt;
&lt;br /&gt;
===Stitch Subcurves===&lt;br /&gt;
The &amp;lt;b&amp;gt;Stitch Subcurves&amp;lt;/b&amp;gt; effect connects points from two subpaths of the path with straight line or curved segments, i.e. the &amp;lt;i&amp;gt;stitches&amp;lt;/i&amp;gt;. It looks a lot like the Effect Lines from Expression 3. The result is also referred to as &amp;quot;String Art&amp;quot;. For some examples of string art, see http://members.shaw.ca/jillbritton/string_art/jbstringart.htm. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;b&amp;gt;shape&amp;lt;/b&amp;gt; of the &amp;lt;b&amp;gt;connecting paths&amp;lt;/b&amp;gt; can controlled by the &amp;lt;b&amp;gt;stroke path&amp;lt;/b&amp;gt; parameter. This could be used to draw 'hair-shaped' connecting paths with sharp end-tips. Other controls include the &amp;lt;b&amp;gt;number of paths&amp;lt;/b&amp;gt;, the variation in spacing between the connecting paths (&amp;lt;b&amp;gt;clustering&amp;lt;/b&amp;gt;) and also whether the start and end points of the stitches should like exactly on the original subcurves or can &amp;lt;b&amp;gt;stray randomly&amp;lt;/b&amp;gt; around them. Finally the width of the stroke path can be varied.&lt;br /&gt;
&lt;br /&gt;
Note that this effect can only be applied to a path with two subpaths in it, hence '&amp;lt;b&amp;gt;sub&amp;lt;/b&amp;gt;curve' in the name. Use Path &amp;gt; Combine to create such a path from two separate paths.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-curvestitch.svg&lt;br /&gt;
&lt;br /&gt;
===Gears===&lt;br /&gt;
The &amp;lt;b&amp;gt;Gears&amp;lt;/b&amp;gt; effect is a toy effect. It generates a chain of interconnected gears from the path that has the effect applied to it. The nodes of the path define the centers of the gears. The first 3 nodes are special; the first defines the start angle of the chain, the second defines the center of the first gear and the third knot specifies the radius of the first gear. That is, to create a chain of 2 gears, you will need a path with 4 nodes; for 3 gears, 5 nodes, and so on. &lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-gears.svg&lt;br /&gt;
&lt;br /&gt;
==Development of new effects==&lt;br /&gt;
One of the goals of the Summer of Code project was to make it easy to create new effects. There is a framework that greatly simplifies effect implementation; very little code is needed to get the effect hooked into Inkscape. This leaves valuable time for the actual effect to be implemented. See the http://wiki.inkscape.org/wiki/index.php/MakingLivePathEffects wiki page for an explanation of how to get started with your own effect!&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 '''Modify Path &amp;gt; Edge 3D''' extension creates black, grey and white paths around a shape, then blurs and clips them for a 3D effect.&lt;br /&gt;
&lt;br /&gt;
* The new '''Generate from Path &amp;gt; Dimensions''' extension creates CAD style dimensions that are basically arrows with lengths equal to selection's bounding box and captions representing length.&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 new '''Color &amp;gt; Randomize''' extension allows you to change the color via hue, saturation and lightness check boxes. This is useful if you want to colorize lots of shapes at the same time.&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;
*The '''Generate Template &amp;gt; Perfect-Bound Cover''' extension creates templates for wraparound covers for perfect-bound books using US size and paper weight measurements.   This extension will resize the document to include the width, height, spine width, and bleed measurements that are provided to the extensions, so it should be the first operation done before designing.&lt;br /&gt;
&lt;br /&gt;
== XSLT effects ==&lt;br /&gt;
&lt;br /&gt;
* '''XSLT''' is now supported for input, output and effect extensions.  This is used to support the XAML file format (both import and export) and the Adobe Illustrator SVG import which removes Adobe's stuff from SVG.&lt;br /&gt;
&lt;br /&gt;
== ImageMagick effects ==&lt;br /&gt;
&lt;br /&gt;
New raster operations available through the effects drop-down menu, powered by the ImageMagick library. For any of these effects to work, you need to have an '''image object selected''' in the drawing. &lt;br /&gt;
&lt;br /&gt;
* '''Adaptive Threshold''' applies adaptive thresholding to the bitmap. Average color of rectangle provided by '''width''' and '''height''' used as threshold value. Use '''offset''' to apply a different threshold than the average.&lt;br /&gt;
&lt;br /&gt;
* '''Add Noise''' adds random noise of certain types to the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Blur''' blurs the bitmap, using '''radius''' as the amount of blur. Higher radius means more blur. (Note that unlike the vector Gaussian blur of objects, this bitmap blur will not extend the edges of the image, so it may appear truncated at the edges.)&lt;br /&gt;
&lt;br /&gt;
* '''Channel''' extracts the specified channel from the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Charcoal''' applies a charcoal drawing style to a bitmap. Radius controls the width (or detail) of charcoal strokes. Higher '''radius''' means lower detail. '''Sigma''': the higher it is, the less defined the charcoal is.&lt;br /&gt;
&lt;br /&gt;
* '''Colorize''' overlays the bitmap with a given color at a given intensity.&lt;br /&gt;
&lt;br /&gt;
* '''Contrast''' lightly enhances the contrast (difference between lights and darks) of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Cycle Colormap''' cycles the colormap of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Despeckle''' reduce the speckle noise in a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Edge''' hilights edges in a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Emboss''' embosses a bitmap, hilighting edges with 3D effect.&lt;br /&gt;
&lt;br /&gt;
* '''Enhance''' enhance a bitmap, minimizing noise.&lt;br /&gt;
&lt;br /&gt;
* '''Equalize''' equalizes a bitmap. Histogram equalization.&lt;br /&gt;
&lt;br /&gt;
* '''Flop''' mirrors a bitmap, reflecting each scanline in the horizontal direction.&lt;br /&gt;
&lt;br /&gt;
* '''Gaussian Blur''' blurs a bitmap, more strongly than regular blur.&lt;br /&gt;
&lt;br /&gt;
* '''Implode''' sucks everything towards the center of the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Level''' scales values falling between the given '''Black Point''' to '''White Point''' range to the full color range.&lt;br /&gt;
&lt;br /&gt;
* '''Level Channel''' acts the same way as level but for only one channel.&lt;br /&gt;
&lt;br /&gt;
* '''Median Filter''' filters a a bitmap by replacing each pixel component with the median color in a circular neighborhood&lt;br /&gt;
&lt;br /&gt;
* '''Modulate''' adjusts the percent hue, saturation, and brightness of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Negate''' takes the inverse of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Normalize''' normalizes a bitmap, expanding color range to the full possible range of color.&lt;br /&gt;
&lt;br /&gt;
* '''Oil Paint''' stylizes a bitmap so that it appears to be painted with oils.&lt;br /&gt;
&lt;br /&gt;
* '''Opacity''' modifies the opacity channel of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Raise''' alters the lightness of the edges of a bitmap to create a raised appearance, much like a frame.&lt;br /&gt;
&lt;br /&gt;
* '''Reduce Noise''' reduces noise in a bitmap by using a noise peak elimination filter.&lt;br /&gt;
&lt;br /&gt;
* '''Shade''' shades a bitmap by simulating a distant light source&lt;br /&gt;
&lt;br /&gt;
* '''Sharpen''' sharpens a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Solarize''' solarizes a bitmap, like overexposing photographic film.&lt;br /&gt;
&lt;br /&gt;
* '''Spread''' randomly spread pixels in a bitmap within the radius of '''amount'''.&lt;br /&gt;
&lt;br /&gt;
* '''Swirl''' swirls the bitmap around the center point.&lt;br /&gt;
&lt;br /&gt;
* '''Threshold''' thresholds a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Unsharpmask''' sharpens a bitmap using an unsharp mask algorithm.&lt;br /&gt;
&lt;br /&gt;
* '''Wave''' alters a bitmap along the sine wave.&lt;br /&gt;
&lt;br /&gt;
These effects are part of the Google Summer of Code 2007, coded by Christopher Brown.&lt;br /&gt;
&lt;br /&gt;
== Misc ==&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;
* A new parameter, '''precision''' is added to the parameter definitions in the [[MakingAnINX|inx file format]], allowing you to set the number of digits in that parameter's spinbutton in the effect UI.&lt;br /&gt;
&lt;br /&gt;
= Stock patterns =&lt;br /&gt;
&lt;br /&gt;
Since a few versions ago, Inkscape supports patterns in fill and stroke. However, up to now the only way to apply a pattern was by creating it in the document using the Object(s) to Pattern command, which wasn't very convenient. Now, if you switch an object's fill or stroke to pattern using the Fill&amp;amp;Stroke dialog, you will get a drop-down list with a number of predefined '''stock patterns''' that you can apply simply by selecting them from the list:&lt;br /&gt;
&lt;br /&gt;
*A selection of plain '''stripes''' differing by the ratio of the stripe width to gap width (for example, the &amp;quot;Stripes 1:2&amp;quot; pattern has gaps twice as wide as stripes), in the range from 4:1 to 1:64. All stripes patterns are in two versions: with black stripes and with white stripes (gaps are always transparent).&lt;br /&gt;
&lt;br /&gt;
*Two '''checkerboard''' patterns with black and white odd squares (even squares are transparent)&lt;br /&gt;
&lt;br /&gt;
*'''Packed circles''': a hexagonal pattern of black circles with transparent gaps.&lt;br /&gt;
&lt;br /&gt;
*'''Polka dots''': a scattering of dots designed to look randomly but evenly distributed so as to mask the regularity of the repeating pattern. There are three size variants of this pattern (small, medium, and large dots) and two color variants (black and white dots).&lt;br /&gt;
&lt;br /&gt;
*'''Wavy''' is a pattern of wavy lines.&lt;br /&gt;
&lt;br /&gt;
*'''Camouflage''' is a green-toned protective pattern such as that used by the military.&lt;br /&gt;
&lt;br /&gt;
*'''Ermine''' is the traditional heraldic pattern representing stylized stoat furs with black tails.&lt;br /&gt;
&lt;br /&gt;
*Three bitmap patterns: '''sand''', '''cloth''', and '''old paint''' are based on seamless photographic tiles and allow you to add some natural texture to your drawing. All of them are grayscale, so you can make objects with these textures semitransparent and overlay them over other colored objects to &amp;quot;texturize&amp;quot; them. &lt;br /&gt;
&lt;br /&gt;
After applying a stock pattern, switch to Node tool to edit the location, scale, and rotation of the pattern via on-canvas handles.&lt;br /&gt;
&lt;br /&gt;
All stock patterns are stored in the file &amp;lt;code&amp;gt;patterns/patterns.svg&amp;lt;/code&amp;gt; in Inkscape's &amp;lt;code&amp;gt;share&amp;lt;/code&amp;gt; directory (typically &amp;lt;code&amp;gt;/usr/share/inkscape&amp;lt;/code&amp;gt; on Linux, &amp;lt;code&amp;gt;&amp;lt;i&amp;gt;inkscape-dir&amp;lt;/i&amp;gt;/share&amp;lt;/code&amp;gt; on Windows). You can add your own patterns to this file or replace it with any other SVG file containing the patterns you need.&lt;br /&gt;
&lt;br /&gt;
=Markers=&lt;br /&gt;
&lt;br /&gt;
* A new command, '''Objects to Marker''', was added to the Object menu. It converts the current selection into a marker. After you do it, the selection is deleted, but the list of markers in the Fill and Stroke dialog, Stroke style tab, now contains the new marker that you can apply to paths. &lt;br /&gt;
&lt;br /&gt;
:* When creating the new marker, Inkscape assumes that the original objects are oriented as they should be on a horizontal path that goes from left to right. For example, if you create a new arrowhead that you plan to use as an end marker, make it point horizontally to the right before converting it to marker. &lt;br /&gt;
&lt;br /&gt;
:* Similar to standard markers, the user-created marker will scale up and down as you change the stroke width. Its initial size (i.e. the size of the object that you have turned into a marker) corresponds to the 1 px stroke.&lt;br /&gt;
&lt;br /&gt;
:* When you create a new marker, Inkscape uses the rotation center of the (first) selected object as the anchor point, i.e. the point which will coincide with the node to which that marker is attached. By default, the rotation center is in the center of the object's bounding box, which means the newly created marker will be centered around its node. If you move the rotation center, for example, to one of the corners of the object, the new marker will touch its node by that corner.&lt;br /&gt;
&lt;br /&gt;
* Several new '''UML markers''' were added to the standard set, including filled and hollow diamonds and triangles.&lt;br /&gt;
&lt;br /&gt;
* '''Master opacity''' did not apply to path markers as it should; this is fixed.&lt;br /&gt;
&lt;br /&gt;
* '''Stock markers''', if used in the document, now appear in the &amp;quot;this document's markers&amp;quot; section at the top of the marker lists in the Fill &amp;amp; Stroke dialog.  Before, any markers with stock IDs (including markers modified by the user) were hidden, making it difficult to work with modified stock markers.&lt;br /&gt;
&lt;br /&gt;
=Color management=&lt;br /&gt;
&lt;br /&gt;
== Calibrated SVG color including CMYK ==&lt;br /&gt;
&lt;br /&gt;
Inkscape now supports color-managed color definitions that use a colorspace other than sRGB (for example Adobe RGB, or calibrated CMYK colors). In the SVG file, this is done using the&lt;br /&gt;
optional &amp;quot;icc-color(...)&amp;quot; paint components as described in section 11.2 &amp;quot;Specifying paint&amp;quot; of the SVG 1.1 specification&lt;br /&gt;
[http://www.w3.org/TR/SVG11/painting.html#SpecifyingPaint]. A fallback sRGB value will be used, for non color-managed workflows. This allows for the use of calibrated color spaces, including using CMYK values that are preserved across applications.&lt;br /&gt;
&lt;br /&gt;
The new CMS color selector tab allows these colors to be edited.&lt;br /&gt;
&lt;br /&gt;
== Display adjustment ==&lt;br /&gt;
&lt;br /&gt;
In Inkscape Preferences, Color Management tab, there's are new options for enabling display adjustment; you can select any calibration profile (an ICC file) suitable for your display. Options for rendering intent can also be chosen.&lt;br /&gt;
&lt;br /&gt;
=== Per-window adjustment ===&lt;br /&gt;
Display adjustment is enabled and disabled per each editing window. This allows for simultaneous viewing of adjusted and unadjusted views of a single document by using multiple windows. There is a toggle at the bottom-right corner of the scrollbars that allows for turning on and off display adjustment. It also will be disabled to provide visible feedback when no profile is set to be available for adjustment.&lt;br /&gt;
&lt;br /&gt;
=== XICC Support ===&lt;br /&gt;
On X11-based systems (i.e. Unix and Mac OSX), use of [[http://www.burtonini.com/computing/x-icc-profiles-spec-latest.html ICC Profiles In X Specification]] (or XICC) can be enabled. Support for version 0.2 of this specification has been implemented. Enabling this option by choosing to retrieve profiles from the display will switch Inkscape to using profiles attached to screens at runtime. These allow display adjustment to be changed on the fly, and to be set and cleared per-monitor. This is especially helpful with more than a single monitor.&lt;br /&gt;
&lt;br /&gt;
Other Open Source software such as [http://www.gimp.org/ GIMP] support XICC. This allows all aware applications to be adjusted by setting a profile only once.&lt;br /&gt;
&lt;br /&gt;
=== Multi-monitor aware ===&lt;br /&gt;
When XICC support is enabled, windows will adjust to the proper profile as they are moved across monitors. Also, as the windows are moved onto monitors with no profile attached, the adjustment toggle will become disabled. When the windows are moved onto screens that do have profiles, the toggle will become enabled.&lt;br /&gt;
&lt;br /&gt;
== Soft Proofing ==&lt;br /&gt;
&lt;br /&gt;
In Inkscape Preferences, Color Management tab, there's a new option for enabling output device preview; you can select any calibration profile (an ICC file) suitable for your output device. Options for rendering intent can also be chosen, along with out of gamut warnings.&lt;br /&gt;
&lt;br /&gt;
== OS support ==&lt;br /&gt;
&lt;br /&gt;
Сolor management is supported in Linux and Mac OS X only at this time.&lt;br /&gt;
&lt;br /&gt;
=Grids, guides, snapping=&lt;br /&gt;
&lt;br /&gt;
==Grids==&lt;br /&gt;
Grids have undergone some big changes under-the-hood. These are the visible changes:&lt;br /&gt;
&lt;br /&gt;
* There is a &amp;lt;b&amp;gt;new 3D/axonometric grid&amp;lt;/b&amp;gt;. It consists of three sets of parallel lines, one vertical and others at angles of +30 and -30 degrees from the horizontal. The angles of these two latter sets and the spacing of the grid are user-settable. &lt;br /&gt;
&lt;br /&gt;
* A new tab in the Document Properties dialog, &amp;lt;b&amp;gt;Grids&amp;lt;/b&amp;gt;, is devoted solely to grids; the former grid/guide tab is renamed &amp;lt;b&amp;gt;Guides&amp;lt;/b&amp;gt; and is now used only for guides. On the Grids page, you can create and manage grids of various types in your document; so far the two types available are Rectangular (default) and Axonometric, but more types may be added in the future.&lt;br /&gt;
&lt;br /&gt;
* More than one grid can be active at the same time:&lt;br /&gt;
:* Each grid can be enabled/disabled separately from the Document Properties dialog.&lt;br /&gt;
&lt;br /&gt;
* For each grid, you can hide it by unchecking the &amp;quot;Visible&amp;quot; checkbox in the grid's tab, or disable snapping to it by unchecking &amp;quot;Enabled&amp;quot;. Note that you can have &amp;quot;Enabled&amp;quot; on and &amp;quot;Visible&amp;quot; off (but not vice versa), in which case you snap to the invisible grid.&lt;br /&gt;
&lt;br /&gt;
* Multiple views on the same document (i.e. different Inkscape windows with the same document loaded) share the same grids, but the grid can be turned on and off for each view separately. For example, you could have a zoomed-out &amp;quot;overview&amp;quot; view without grids showing. 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. &lt;br /&gt;
&lt;br /&gt;
* The rectangular grid now has an option to show dots on gridline intersections instead of solid lines.&lt;br /&gt;
&lt;br /&gt;
From developer perspective:&lt;br /&gt;
* Implementation of new grids is much easier now by subclassing CanvasGrid. 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;
* Grid information is now stored in SVG as a child of sodipodi:namedview. Old files will be converted to this new format automatically.&lt;br /&gt;
* An old bug is fixed: apparently the origin of the document coordinate system used to be set to the origin of the grid. For example, in 0.45.1 and before, specifying a grid origin of (20,20) moved the origin or coordinates to that point, and the grid was still starting at (0,0) in this moved coordinate system. This is now disabled, and the coordinate origin is not affected by grid origin.&lt;br /&gt;
&lt;br /&gt;
==Angled guidelines==&lt;br /&gt;
&lt;br /&gt;
Now, Inkscape also provides angled guidelines! Double click on a guide to set its angle.&lt;br /&gt;
&lt;br /&gt;
*  When dragging a guideline off the rulers close to the end of the ruler, the guideline will automatically be angled. The angle is set depending on the grid.&lt;br /&gt;
** For the rectangular grid, the angle is 45 degrees.&lt;br /&gt;
** For the axonometric grid, the angle is matched to the grid. When '''Ctrl''' is pressed, the angle is perpendicular to the grid lines (useful for aligning gradients).&lt;br /&gt;
&lt;br /&gt;
==Creating guidelines from objects==&lt;br /&gt;
&lt;br /&gt;
* Selected objects can now be converted to guidelines. To do this, either use the menu command '''&amp;quot;Object-&amp;gt;Object to guides&amp;quot;''' or press '''Shift+G''' in Selector tool (this shortcut also works in some other tools, see below). The conversion process recurses into groups, i.e. all objects in the current selection are converted regardless if they are grouped or not.&lt;br /&gt;
&lt;br /&gt;
* Created guides can be quickly deleted by '''Ctrl'''+clicking on them (this is of course not restricted to guides created by the process described above). Note that this only works in Selector and Node tools, i.e., in contexts where guidelines can be manipulated with the mouse. &lt;br /&gt;
&lt;br /&gt;
* '''Paths''' are converted by creating one guide for each straight line segment occurring in the path (whereas curved segments are not taken into account). To make this conveniently accessible, the shortcut '''Shift+G''' works in Pen and Pencil tools, too.&lt;br /&gt;
&lt;br /&gt;
* For all other objects, conversion usually happens by placing the guidelines around the object's bounding box (use the corresponding checkbox in the &amp;quot;Tools&amp;quot; page of Inkscape Preferences to switch between geometric and visual bounding box).&lt;br /&gt;
&lt;br /&gt;
*For '''rectangles''' and '''3D boxes''' there is a special option in their preferences pages (checked by default) which instead allows the guidelines to be placed along the object's edges so that they imitate its true shape. This is especially useful when converting rotated or skewed rectangles (to create guidelines in a special position) or for creating 3D scenes containing other objects than just boxes. The shortcut '''Shift+G''' works in these tools as well.&lt;br /&gt;
&lt;br /&gt;
==Snapping==&lt;br /&gt;
&lt;br /&gt;
* Snapping has been implemented or improved for:&lt;br /&gt;
&lt;br /&gt;
:* '''Newly created shapes'''&lt;br /&gt;
&lt;br /&gt;
:* '''Skewing''' of objects&lt;br /&gt;
&lt;br /&gt;
:* '''Handles''' of objects, incl. '''gradients'''&lt;br /&gt;
&lt;br /&gt;
:* '''Images''', '''ellipses''', and '''clones'''&lt;br /&gt;
&lt;br /&gt;
:* Text boxes, which snap to '''text baselines''' again&lt;br /&gt;
&lt;br /&gt;
:* Objects, for which snapping now optionally considers the '''rotation center'''&lt;br /&gt;
&lt;br /&gt;
:* Objects, which now allow for '''constrained snapping'''&lt;br /&gt;
&lt;br /&gt;
:* '''Guides''', which now snap while dragging them&lt;br /&gt;
&lt;br /&gt;
:* '''Axonometric grids'''&lt;br /&gt;
&lt;br /&gt;
:* '''Angled guide lines'''&lt;br /&gt;
&lt;br /&gt;
:* '''Bounding boxes''', of which now all four corners snap&lt;br /&gt;
&lt;br /&gt;
* Other snapping fixes and improvements include:&lt;br /&gt;
&lt;br /&gt;
:* It is now possible to snap to '''intersections''' of e.g. gridlines with guidelines, and of line segments. &lt;br /&gt;
&lt;br /&gt;
:* The '''snapping preferences dialog''' has been restyled to make it more intuitive. &lt;br /&gt;
&lt;br /&gt;
:* Inkscape now has a global snapping toggle, which has been added to the view-menu and is accessible through a shortcut&lt;br /&gt;
&lt;br /&gt;
:* Inkscape now allows for controlling the snapping per grid when multiple grids are being used&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 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 time it takes to snap to objects using the selector tool has been reduced significantly.&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;
:* Only nodes at '''non-smooth parts''' of a path now snap.&lt;br /&gt;
&lt;br /&gt;
:* The confusing &amp;quot;Default transformations origin&amp;quot; option has been 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;
&lt;br /&gt;
=Import/Export=&lt;br /&gt;
&lt;br /&gt;
==PDF and AI import==&lt;br /&gt;
&lt;br /&gt;
In this version, Inkscape can natively (i.e. without any additional software) import PDF files and the newer PDF-based Adobe Illustrator files (starting from AI version 9.0). &lt;br /&gt;
&lt;br /&gt;
'''Implemented features''': The new import extension can import '''paths''', '''text''', '''clippaths''', '''masked or non-masked images''', and '''softmasks'''. It supports '''pattern fills''' (XStep and YStep attributes are ignored) as well as '''linear and radial gradients''' (only those using sampled or exponential functions). '''Gradient meshes''' are imported, but they get converted to groups of small tiles (flat-colored paths) that approximate the mesh; the user can adjust the precision of this approximation. &lt;br /&gt;
&lt;br /&gt;
'''PDF import settings''': After opening a PDF or AI document, the PDF Import Settings dialog shows up. Here you can select:&lt;br /&gt;
&lt;br /&gt;
* the '''page''' to be imported from a multipage PDF;&lt;br /&gt;
&lt;br /&gt;
* the overall '''clip region''' (which can be none or set to any of the PDF boxes, e.g. the crop box, the media box, the trim box, etc.);&lt;br /&gt;
&lt;br /&gt;
* the '''precision''' for the approximation of '''gradient meshes'''; note that setting this too high may result in a huge SVG file and slow performance when importing files with gradient meshes;&lt;br /&gt;
&lt;br /&gt;
* a checkbox controlling whether the '''images''' should be '''embedded''' into the resulting SVG document or saved on the current path;&lt;br /&gt;
&lt;br /&gt;
* a '''preview''' of the selected page (shown if poppler-cairo is present on the system or if the selected page has a thumbnail embedded into the PDF 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;
The native PDF/AI importer is based on the poppler library and was implemented by Miklós Erdélyi as part of the Google Summer of Code 2007.&lt;br /&gt;
&lt;br /&gt;
==PDF export==&lt;br /&gt;
&lt;br /&gt;
* A new cairo-based PDF exporter has been added to Inkscape (marked as &amp;quot;Cairo PDF&amp;quot; in the export format list). Inkscape 0.46 can export shapes, strokes, transparency, gradients, patterns, text, and images correctly to cairo. Clipping paths and masks are known to be faulty or missing. Also, unlike the old PDF exporter, the cairo-based PDF export produces compressed PDF files that are reasonably compact. 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, but it is highly recommended to use at least '''cairo 1.5.2''' for quality PDF export.&lt;br /&gt;
&lt;br /&gt;
* A new cairo-based PostScript exporter has been added (marked as &amp;quot;Cairo PS&amp;quot; in the export format list). The cairo PS backend is not as mature as the PDF backend. It rasterizes a lot of its content. Text output does not work where it works with the PDF backend.&lt;br /&gt;
&lt;br /&gt;
==CDR (CorelDraw) import==&lt;br /&gt;
&lt;br /&gt;
Inkscape can use [http://www.sk1project.org/modules.php?name=Products&amp;amp;product=uniconvertor UniConvertor] if it's installed on your system to import documents in CDR format (CorelDraw). This feature is Unix-only at this time and requires that you have Python and UniConvertor installed. As of UniConvertor 1.1.1, versions from 7 to X4 of the CDR format are supported, and text objects are not converted.&lt;br /&gt;
&lt;br /&gt;
==XAML import/export==&lt;br /&gt;
&lt;br /&gt;
* Inkscape can import vector graphics portions of XAML documents, as well as export its documents to XAML.&lt;br /&gt;
&lt;br /&gt;
==Adobe Illustrator SVG clean import==&lt;br /&gt;
&lt;br /&gt;
* Using this new import filter, Inkscape can open an SVG document removing any elements and attributes in the namespaces that Adobe Illustrator uses for its stuff.  This will clean out everything except the actual SVG content.&lt;br /&gt;
&lt;br /&gt;
==WMF import==&lt;br /&gt;
&lt;br /&gt;
Now Inkscape uses UniConvertor for opening WMF files, which results in three noticable changes:&lt;br /&gt;
&lt;br /&gt;
# imported files are editable now&lt;br /&gt;
# known rendering issues are resolved&lt;br /&gt;
# WMF import works on all platforms where UniConvertor works (including Windows)&lt;br /&gt;
&lt;br /&gt;
Text objects are not supported by UniConvertor as of version 1.1.1.&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;
== Open Clip Art Library import and export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape features a preliminary support for importing drawings from [http://openclipart.org/ Open Clip Art Library].&lt;br /&gt;
&lt;br /&gt;
After specifying account details in Preferences dialog (Import/Export tab) use 'File &amp;amp;gt; Import From Open Clip Art Library' command to open a dialog, then search for tags and pick one of the results to merge this found drawing into your document.&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;
* --query-all produces a comma delimited listing of all objects in the document, with their x, y, height, and width values.&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;
=User interface=&lt;br /&gt;
&lt;br /&gt;
== Dockable dialogs ==&lt;br /&gt;
&lt;br /&gt;
Inkscape's dialog handling has been reworked in this release to allow dialogs to behave like '''dockable panels'''. The dock area that holds the user's dialogs is located right of the canvas.&lt;br /&gt;
&lt;br /&gt;
Dialogs placed in the dock can easily be rearranged, resized, stacked in groups or iconified. Furthermore, a dialog can be dragged of the dock to become a floating dock in itself&amp;amp;mdash;this allows other dialogs to be dragged and dropped on it to form a floating group of dialogs.&lt;br /&gt;
&lt;br /&gt;
The old dialog behavior (used in releases before 0.46) has been preserved as an option, and if it is preferred, one can select it under ''Windows'' &amp;gt; ''Dialog behavior'' in the Inkscape preferences dialog.&lt;br /&gt;
&lt;br /&gt;
====Known issues====&lt;br /&gt;
&lt;br /&gt;
* Some of Inkscape's dialogs are yet to be adapted to allow docking, these include the &amp;quot;Text and Font&amp;quot; dialog, the &amp;quot;Tiled clones&amp;quot; dialog, the &amp;quot;XML editor&amp;quot; and the &amp;quot;Object properties&amp;quot; dialog.&lt;br /&gt;
&lt;br /&gt;
* Floating dialogs that are closed and later reopened might reappear on positions slightly different than their original ones.&lt;br /&gt;
&lt;br /&gt;
* Resizing dialogs that are placed in the dock can be a bit slow and quirky.&lt;br /&gt;
&lt;br /&gt;
* The total height of content the dock will in most cases remain the same when a dialog is closed/iconified, i.e. the remaining docked dialogs will fill the hole. This might not the desired behavior.&lt;br /&gt;
&lt;br /&gt;
====Settings====&lt;br /&gt;
&lt;br /&gt;
Three settings that control dockable dialogs behavior are present in the &amp;lt;code&amp;gt;preferences.xml&amp;lt;/code&amp;gt; file under a &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; group called &amp;lt;code&amp;gt;dock&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cancenterdock&amp;lt;/code&amp;gt;: controls if dialogs are allowed to be stacked on top of each other to be ordered in groups. Valid values are &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;dockbarstyle&amp;lt;/code&amp;gt;: controls what information is shown for iconified dockable dialogs. &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; = icons only, &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; = text only, &amp;lt;code&amp;gt;&amp;quot;2&amp;quot;&amp;lt;/code&amp;gt; = both icons and text. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;switcherstyle&amp;lt;/code&amp;gt;: controls what information is shown for grouped dockable dialogs. &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; = icons only, &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; = text only, &amp;lt;code&amp;gt;&amp;quot;2&amp;quot;&amp;lt;/code&amp;gt; = both icons and text.&lt;br /&gt;
&lt;br /&gt;
== Toolbars ==&lt;br /&gt;
&lt;br /&gt;
'''Main toolbar''' on the left can now optionally use '''smaller buttons'''. With the several new tools added in this version, this may help users with small screens where the toolbar otherwise may not fit vertically. The toggle is on the Misc tab of the Inkscape Preferences dialog.&lt;br /&gt;
&lt;br /&gt;
Switching to stock GTK+ toolbars. This allows for the main window to be made narrower, with toolbar items flowing into a popup menu as it is resized.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Swatches panel, color drag-and-drop ==&lt;br /&gt;
&lt;br /&gt;
* Right-clicking a color swatch now opens a context menu which allows you to apply the color to the fill or stroke of selection.&lt;br /&gt;
&lt;br /&gt;
* Dragging colors from the color palette has been fixed and improved:&lt;br /&gt;
&lt;br /&gt;
:* Now the dropped color is applied to '''the object on which you drop it''', regardless of whether that object is selected or not. This means you can change the color of only one object from selection without having to select it separately. (If you want to assign color to the entire selection, just click on the color swatch on the palette, not drag it.)&lt;br /&gt;
&lt;br /&gt;
:* If an object has stroke and you '''drop the color over stroke''', the color is applied to stroke and not fill. (Another way to always apply color to stroke is to '''Shift+drag''' it.)&lt;br /&gt;
&lt;br /&gt;
:* When gradient handles are active (e.g. in Gradient or Node tools), you can '''drop a color onto the gradient line''' to create a new gradient mid stop with this color, or '''drop a color onto an existing stop''' to recolor that stop.&lt;br /&gt;
&lt;br /&gt;
:* A new submenu has been added to affect the shape of the displayed swatches, allowing their preferred size to be made thinner or wider. Among other things, this allows for more to be seen on screen at once when made thinner.&lt;br /&gt;
&lt;br /&gt;
:* Sizing of the swatches has been corrected to be properly progressive, and now go form smaller to larger on all platforms.&lt;br /&gt;
&lt;br /&gt;
:* Space reserved for the scrollbar is no longer kept with smaller palettes shown in the bottom of the main UI. This allows for more working space when palettes with not many entries are selected at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
==Color gestures==&lt;br /&gt;
&lt;br /&gt;
A new method for quick and precise adjustment of colors is added in this version: color gestures. It works on the selected objects by grabbing the '''fill or stroke color swatch''' in the '''selected style indicator''' (on the left of the statusbar) and dragging it in various directions as described below. Note that this only works when the swatch displays a '''flat color'''; it does not work for a swatch showing &amp;quot;None&amp;quot;, &amp;quot;N/A&amp;quot;, or displaying a gradient (although you can select one or more gradient stops in Gradient tool and color-adjust them by color gestures just as you would do for objects). Color gestures can work on '''fill''' or '''stroke''', depending on which swatch in the selected color indicator you drag.&lt;br /&gt;
&lt;br /&gt;
Color gestures work in '''HSL''' color space. Dragging without any keyboard modifiers adjusts the '''hue''' channel, dragging with '''Shift''' adjusts '''saturation''', and dragging with '''Ctrl''' adjusts '''lightness'''.&lt;br /&gt;
&lt;br /&gt;
The adjustment is done by '''&amp;quot;rotating&amp;quot;''' the color swatch away from the original direction which is assumed to be '''NE at 45 degrees''' (i.e. from&lt;br /&gt;
the swatch diagonally into the document window). Once you click and drag the color swatch, imagine a diagonal line going from the point where you clicked in the NE direction, across the entire Inkscape window. By dragging '''below or to the right''' of that line, you decrease the corresponding color channel, to the minimum at the lower edge of the window; by dragging it above or to the left, you increase it, to the maximum at the left edge of the window. If you hover your mouse exactly over the 45 degrees line, the change will be zero.&lt;br /&gt;
&lt;br /&gt;
Note that you can easily vary the '''precision''' of your adjustment. If you drag close enough to the swatch, each small movement results in a big change of the color. If you need a finer adjustment, just drag farther away from the swatch, towards the center of the Inkscape window or even to its upper right corner, where minute movements will produce very small changes in the color. In fact, this method gives you more color precision than even the color wheel in the Fill and Stroke dialog, unless you expand that dialog to fill the entire screen which is rarely practical.&lt;br /&gt;
&lt;br /&gt;
The mouse '''cursor''' changes when you're doing color gestures, reflecting the channel currently adjusted and indicating the directions for increasing and decreasing the value. Also, watch the '''statusbar''' which will indicate, as you drag, the channel you are adjusting, the original value of that channel, the new value, and the difference. &lt;br /&gt;
&lt;br /&gt;
You can '''switch channels while you drag'''. That is, you don't need to &lt;br /&gt;
drag it again and again from the swatch if you want to adjust all three channels - you can do it all in one drag, by pressing and releasing Ctrl and Shift as necessary. Note that when you change the keyboard modifiers during drag, the position of the zero-change line is temporarily changed to go through the current mouse position; this is done so that there are no sudden changes in color if you are switching modifiers away from the original 45-degree line.&lt;br /&gt;
&lt;br /&gt;
The '''Alt''' modifier is special. Pressing Alt means &amp;quot;do nothing&amp;quot;; this allows you to move the mouse, without releasing, to a more convenient place from where to continue tweaking the color after letting go of Alt. As with the other modifiers, releasing Alt temporarily redefines the zero-change axis to go through the point where Alt was released. For example, imagine  you made your color darker by Ctrl+dragging towards the bottom edge of the window and you now need to make it less saturated. You cannot however Shift+drag it any lower because there's just not enough room for that. In that situation, without releasing the mouse, Alt+drag it upwards to a convenient spot and then Shift+drag downwards as needed. Also, you can start dragging from the swatch with Alt pressed to avoid changing the color while you take a more convenient position for adjustments.&lt;br /&gt;
&lt;br /&gt;
For example, you can select a green rectangle and first turn it into greenish-blue by dragging away from the Fill swatch and slightly above the 45 degrees line; then, without releasing the mouse, press Ctrl and drag a bit to the right to darken the color; then press Shift, release Ctrl, and adjust saturation. You can press or release Ctrl and Shift as many times as necessary during a single drag; when you are finally satisfied with your color, release the mouse to commit the change.&lt;br /&gt;
&lt;br /&gt;
Apart from precise adjustments, you can use color gestures to very quickly perform some common color transformations:&lt;br /&gt;
&lt;br /&gt;
* Ctrl+drag the swatch to the right and down to paint all selected objects black.&lt;br /&gt;
&lt;br /&gt;
* Ctrl+drag the swatch upwards and to the left to paint all selected objects white.&lt;br /&gt;
&lt;br /&gt;
* Shift+drag the swatch to the right and down to desaturate the color of selected objects.&lt;br /&gt;
&lt;br /&gt;
* Shift+drag the swatch upwards and to the left to maximize saturation of the color of selected objects. &lt;br /&gt;
&lt;br /&gt;
Note that when several objects or gradient stops with different colors are selected, the selected style indicator shows their '''averaged''' color. If you adjust that color by gesturing, the changed color will be assigned back to all selected objects/stops, in effect eliminating any difference between them. If you want to adjust many different-colored objects preserving their relative differences, use the color modes of the Tweak tool or color adjustment extension effects.&lt;br /&gt;
&lt;br /&gt;
This new technique requires some getting used to, but once you get the idea it is quite convenient, fast, and precise.&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;
== Preserving zoom/view of reverted documents ==&lt;br /&gt;
&lt;br /&gt;
When reverting files to their previously saved state, the current zoom factor/panning is now retained (as opposed to reverted to the saved state, too, as it was the case before). This less interrupts the workflow when one is working on some detail in the drawing.&lt;br /&gt;
&lt;br /&gt;
== Bounding box option moved ==&lt;br /&gt;
&lt;br /&gt;
The preferences option to select between &amp;quot;visual&amp;quot; and &amp;quot;geometric&amp;quot; bounding box was moved in Inkscape Preferences dialog from the &amp;quot;Selector&amp;quot; page to &amp;quot;Tools&amp;quot; page (since it applies more globally than just in Selector tool).&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;
== Using other keys in place of Alt ==&lt;br /&gt;
&lt;br /&gt;
* Many Linux users have found the use of '''Alt-drag''' and '''Alt+click''' in Inkscape problematical because this shortcut is often captured by window managers. In 0.46, instead of disabling of the window manager shortcut as suggested in [http://wiki.inkscape.org/wiki/index.php/FAQ#How_to_make_Alt.2Bclick_and_Alt.2Bdrag_work_on_Linux.3F the FAQ], you can change a setting in your preferences.xml file called &amp;lt;code&amp;gt;mapalt&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; group. This numerical value ranges from 1 to 5; 1 indicates no change, any other value refers to some special key on a keyboard, such as '''Alt Gr''', the '''Windows''' key, etc. The specific mapping of these values to the keys on your keyboard can be viewed and/or editied by '''xkeycaps''', available from [http://www.jwz.org/xkeycaps www.jwz.org]. The value associated with a particular key is shown in that program at the top of the screen beside the word &amp;quot;Modifiers&amp;quot; when the mouse is held over a key on the main display.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keyboard profiles ==&lt;br /&gt;
&lt;br /&gt;
New profiles have been added:&lt;br /&gt;
&lt;br /&gt;
* '''Corel DRAW X4''' (corel-draw-x4.xml)&lt;br /&gt;
* '''Zoner Draw 5''' (zoner-draw.xml)&lt;br /&gt;
* '''ACD Systems Canvas 11''' (acd-canvas.xml)&lt;br /&gt;
&lt;br /&gt;
Also, profile for Adobe Illustrator has been fixed and includes bindings for tools now.&lt;br /&gt;
&lt;br /&gt;
(To enable a profile, copy it into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; in the same directory, overwriting the old file. To restore the default Inkscape set, copy &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
=Other changes and 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;
* On the '''Scale''' tab of the '''Transform dialog''', the numbers now show the current size of selection, not size increment as before. Correspondingly, with the % unit chosen, you see 100% displayed, and to scale it up twice, you enter 200%, not 100% as before. This is a more intuitive behavior and it's more consistent with how the W/H controls work in the Selector tool. &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;
* The '''Shift''' tab of the '''Tile Clones''' dialog has two new options: '''Cumulate''': when checked, each tile is shifted by the normal amount plus the cumulative shifts of all previous tiles. This is useful when placing tiles that are being scaled by a uniform amount. '''Exlude tile''': when checked, the tile width or height is not automatically included in calculating the tile's shift. This is useful when using the dialog to place clones on a circle or spiral (rather than using a shift of -100%). It is also useful when positioning tiles using the '''Exponent''' parameter.&lt;br /&gt;
&lt;br /&gt;
* The '''Scale''' tab of the '''Tile Clones''' dialog has a new parameter: '''Base''' that allows placing tiles along a logarithmic spiral (as often found in nature). If the value is '''0''', the parameter is not used. Use a value less than one for a converging spiral and a value of greater than one for a diverging spiral. The actual scale is calculated as '''base''' raised to the nominal '''scale''' power.&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;
* 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;
* 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;
* Preferences have been added for setting the default metadata and licenses, so this information can be automatically filled in with new documents.&lt;br /&gt;
&lt;br /&gt;
* The built-in '''Potrace''' tracing engine is upgraded to version '''1.8''' with some minor bugs fixed.&lt;br /&gt;
&lt;br /&gt;
* File dialog windows (open/save) now have an '''Enable preview''' checkbox which allows you to disable the preview pane.&lt;br /&gt;
&lt;br /&gt;
* In the Calligraphic pen controls, the toggle button to enable tablet pressure sensitivity is moved to the Width control, and the button for tilt sensitivity is moved to Angle, to better reflect what parameters these toggles affect.&lt;br /&gt;
&lt;br /&gt;
* In Node and Gradient tools, using '''Tab/Shift+Tab''' to select next/previous node or gradient handle scrolls the canvas if necessary to show the selection. &lt;br /&gt;
&lt;br /&gt;
* The option '''Import bitmap as &amp;lt;image&amp;gt;''' is removed; it was added several versions ago to allow optionally importing images as rectangles with image pattern, to make clipping the images easier. Now that you can easily use clipping paths, as well as convert any image to rectangle with pattern with Alt+I, this option is not really necessary and removed to reduce confusion. Bitmaps are always imported into SVG as an &amp;lt;image&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
* Support has been added for stock patterns, in the same way that stock markers were already supported. Adding patterns to share/patterns/patterns.svg, and giving them a inkscape-stockid attribute as found on the examples already there will make them available in all Inkscape sessions from the patterns tab of the fill &amp;amp; stroke dialog.&lt;br /&gt;
&lt;br /&gt;
* New '''fontforge_glyph.svg''' template is added for font designers who draw glyphs in Inkscape and import them into FontFoge. It is 1000x1000px large and has a horizontal guide at 200px to mark border for descenders.&lt;br /&gt;
&lt;br /&gt;
* Save dialogs have been modified to clarify that they '''Save as SVG''', so people using Inkscape to edit PDF, EPS, and other file formats will be less confused at the default behavior when saving files.&lt;br /&gt;
&lt;br /&gt;
= Mac OS X specific improvements =&lt;br /&gt;
&lt;br /&gt;
* Inkscape 0.46 is officially released as a '''Universal''' (i386/ppc) binary for both OS X '''10.4 Tiger''' and '''10.5 Leopard'''.&lt;br /&gt;
&lt;br /&gt;
* Please note:  Leopard users should update X11.app to at least version 2.1.4.  X11.app updates can be downloaded from the [http://xquartz.macosforge.org/ Xquartz project].&lt;br /&gt;
&lt;br /&gt;
* The Inkscape application bundle now contains '''pre-compiled python modules''' (e.g. lxml, numpy, etc.) and uses them without requiring any work from the user. Since Python itself is shipped with Mac OS X, the user only has to drag and drop Inkscape on to their hard-drive and all the extensions will be '''functional immediately'''.&lt;br /&gt;
&lt;br /&gt;
* A GTK theme is now included in Inkscape.app bundle on OS X. If the user does not have any personal customization (e.g. in a .gtkrc-2.0 file) this theme is used. It reflects the OS X settings for &amp;quot;Appearance&amp;quot; and &amp;quot;Highlight Color&amp;quot; set in System Preferences &amp;gt; Appearance.&lt;br /&gt;
&lt;br /&gt;
* If Inkscape.app is already open and a file is dropped on the Inkscape dock icon, or an Inkscape file is double-clicked in the Finder, that document will now be opened, rather than this action being ignored, as happened in 0.45 and prior.&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;
* A fix in the blur rendering code made '''exporting blurred objects to bitmap''' much faster and fixed the disappearing of blurred objects in exported bitmaps which happened for large objects in 0.45.  The same fix got rid of the rendering artefacts that sometimes appeared on blurred objects during scrolling. &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;
* On Windows, '''file opening/saving dialogs''' can no longer sink under the main editor window (they now have the inkscape window set correctly as their parent window).&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;
* '''Creative Commons Public Domain Declaration URI''' points to the 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;
* On Windows, the Inkscape uninstaller deleted all files under the install directory. This could lead to removing user-created files, or even other program files not related to inkscape if the install directory was C:\Program Files. The new uninstaller '''tracks all installed files and asks for confirmation before deleting any other files'''. However, installation and uninstallation process is now slower.&lt;br /&gt;
&lt;br /&gt;
* Clones were wrongly unlinked when their original was moved to another layer; fixed.&lt;br /&gt;
&lt;br /&gt;
* Previous versions had a problem on '''Windows Vista''' where selected menu item was invisible. Now our Windows builds use a newer version of GTK library which fixes this problem.&lt;br /&gt;
&lt;br /&gt;
* Duplicating empty text objects that have just been created no longer crashes. Also, the XML editor crash related to empty text objects is fixed. A downside is that the SVG will become cluttered with empty text objects as they are no longer automatically removed. A better fix for the problem is planned.&lt;br /&gt;
&lt;br /&gt;
* In Tile Clones dialog, the PMG symmetry group was created incorrectly; it is now fixed.&lt;br /&gt;
&lt;br /&gt;
* Serious usability issues with the font size field in the Text tool's controls bar have been fixed.&lt;br /&gt;
&lt;br /&gt;
* The rulers are now correctly scaled and will align nicely with document coordinates, with or without the scrollbars displayed.&lt;br /&gt;
&lt;br /&gt;
=Known Issues=&lt;br /&gt;
&lt;br /&gt;
* (LP: #180890) Blend modes do not work correctly over transparent    backgrounds. A workaround is to place an opaque rectangle underneath the bottom-most layer.&lt;br /&gt;
* (LP # 202704) Blur and other filters are very slow when applied to an object with transform= attribute with rotation or skew. To avoid this slowdown, either do not rotate/skew objects you use with filters, or apply filters only to paths (but not shapes to text) because paths, by default, get no transform= attribute when you rotate or skew them.&lt;br /&gt;
* Windows printing has two known issues. In both cases the workaround is to print to bitmap (Print -&amp;gt; Rendering -&amp;gt; Bitmap).&lt;br /&gt;
** (LP # 205732) Blurred objects are misaligned when printing.&lt;br /&gt;
** (LP # 208217) Masked objects disappear from the page when printing.&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>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.46&amp;diff=27134</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=27134"/>
		<updated>2008-04-02T00:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Mac OS X specific improvements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Inkscape 0.46=&lt;br /&gt;
&lt;br /&gt;
Highlights 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;
* Live path effects&lt;br /&gt;
&lt;br /&gt;
* Color management&lt;br /&gt;
&lt;br /&gt;
* New SVG filters and UI&lt;br /&gt;
&lt;br /&gt;
* Native PDF and AI import&lt;br /&gt;
&lt;br /&gt;
* XAML import/export&lt;br /&gt;
&lt;br /&gt;
* Open Clip Art Library integration (import/export)&lt;br /&gt;
&lt;br /&gt;
* Stock patterns&lt;br /&gt;
&lt;br /&gt;
* Bitmap editing extension effects&lt;br /&gt;
&lt;br /&gt;
* Full on-canvas gradient editing&lt;br /&gt;
&lt;br /&gt;
* Engraver's Toolbox in the Calligraphic tool&lt;br /&gt;
&lt;br /&gt;
* Touch selection&lt;br /&gt;
&lt;br /&gt;
* Dockable dialogs&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;
* &amp;quot;3D&amp;quot; / axonometric grid&lt;br /&gt;
&lt;br /&gt;
* Angled guidelines&lt;br /&gt;
&lt;br /&gt;
* Conversion of objects to guidelines&lt;br /&gt;
&lt;br /&gt;
* Significant speed and interactivity improvements&lt;br /&gt;
&lt;br /&gt;
* Hundreds of smaller features and bugfixes&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 in order from top to bottom. Now the redraw always starts '''at your mouse cursor location''' and proceed upwards and downwards from it, so that the area near the cursor is always redrawn first. This significantly improves program's responsiveness in some situations. For example, when you are node-editing part of a complex path, the entire path needs to be redrawn on each change, but now this redraw starts from the point you're working on. Moreover, the redraw is interruptible, so each mouse movement starts new redraw from the mouse cursor area. As a result, during such operations those parts that you're working on redraw often and feel snappy and responsive, while areas further away may lag behind more.&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;
:'''Exporting drawings with blur''' was particularly slow in 0.45; some files could take hours to export. Now this is fixed, in part by the faster algorithm mentioned above and in part by a bugfix in the export code. Now even the quite complex files with large blurs export at high resolution in at most a few minutes.  &lt;br /&gt;
&lt;br /&gt;
* Minor improvements have been made to gradient rendering performance.&lt;br /&gt;
&lt;br /&gt;
* '''Dragging handles and nodes''' as well as '''dragging and transforming objects''' by mouse became more responsive, so that working in complex drawings and especially editing complex paths is noticeably easier. In particular, this fixes the annoying latency issue where a node or a handle could follow mouse cursor even after you release mouse button after a drag. &lt;br /&gt;
&lt;br /&gt;
* '''Moving objects, nodes, and gradient handles by cursor keys''' as well as '''scaling and rotating objects from keyboard''' and '''zooming by keys''' are much more responsive when working with complex slow-rendering objects. Now, if you press and hold a key, your selection/zoom level will quickly jump to the final position instead of going through all the intermediate steps as before. &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;
:* '''Redrawing the newly exposed parts of the canvas''' after scrolling, especially diagonal scrolling, is now faster because only the exposed areas are redrawn; before, this often resulted in the entire screen being redrawn which was much slower.&lt;br /&gt;
&lt;br /&gt;
:* Previously, if you started 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;
* Better responsiveness and more visual feedback in user interface: &lt;br /&gt;
&lt;br /&gt;
:*When you zoom, the '''zoom control''' on the right end of the statusbar now updates immediately, not after screen redraw as before. &lt;br /&gt;
&lt;br /&gt;
:*Many potentially slow commands (Save, Simplify, Combine, Break Apart and others) now display a '''busy cursor''' and flash a message in the statusbar (e.g. &amp;quot;Saving document...&amp;quot;) while they work. &lt;br /&gt;
&lt;br /&gt;
:*The '''statusbar messages''' displayed while you're drawing a shape or a path in Pen tool do not lag behind the mouse movements.&lt;br /&gt;
&lt;br /&gt;
* '''Combine''' and '''Convert to paths''' commands are now orders of magnitude faster when applied to a selection with hundreds or thousands of objects.&lt;br /&gt;
&lt;br /&gt;
* The time it takes to '''snap to objects''' using the selector tool has been reduced dramatically, which is most noticeable for snapping to complex paths.&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;
===How it works===&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 (or use the auto gap closing parameter, see below).&lt;br /&gt;
&lt;br /&gt;
===Style===&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). As in all other tools, the '''style swatch''' on the far right of the Controls bar shows the style that will be used for the next fill object you create.&lt;br /&gt;
&lt;br /&gt;
===Controls===&lt;br /&gt;
&lt;br /&gt;
In the tool's '''Controls bar''':&lt;br /&gt;
&lt;br /&gt;
* Paint Bucket's perceptual fill can use either all visible colors or specific color channels. Using the '''Fill by''' drop-down list, you can restrict the fill algorithm to one 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;
* The '''Threshold''' (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;
* Using the '''Grow/shrink by''' parameter, 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 much the same as the Outset and Inset path commands, except it's done automatically after every fill.&lt;br /&gt;
&lt;br /&gt;
* With the '''Close gaps''' parameter, you can make the Paint Bucket tool  ignore 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 (close gaps up to 2 pixels in size)&lt;br /&gt;
** Medium (4 pixels)&lt;br /&gt;
** Large (6 pixels)&lt;br /&gt;
:Note that setting this parameter to other than None may slow down noticeably the filling of large areas.&lt;br /&gt;
&lt;br /&gt;
===Shortcuts===&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 drawings which largely blurs the&lt;br /&gt;
distinction between vector and raster editing. Instead of meticulously selecting some&lt;br /&gt;
objects and then performing an action on the selection, you can now select ''all''&lt;br /&gt;
objects (or all objects you are interested in) and apply the Tweak tool's brush to&lt;br /&gt;
smoothly and naturally change the shape or style of only those objects (or parts&lt;br /&gt;
thereof) ''that the brush touches''.&lt;br /&gt;
&lt;br /&gt;
The area of the tool's action - its ''brush'' - is marked by an orange-colored circular&lt;br /&gt;
outline that moves with your mouse cursor. 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.&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 mode or paint it by Color Paint&lt;br /&gt;
mode. You can also apply it to groups of objects; it will go into groups and act on&lt;br /&gt;
individual objects inside groups. If you're trying to use it without anything selected,&lt;br /&gt;
it will remind you by a statusbar message to select some objects.&lt;br /&gt;
&lt;br /&gt;
===Width===&lt;br /&gt;
&lt;br /&gt;
The width of the tool's brush, in the range from 1 to 100, can be changed by the&lt;br /&gt;
'''Width''' control in the tool's controls bar above the canvas. You can also change&lt;br /&gt;
width by '''Left''' and '''Right''' arrow keys (same as in the Calligraphy tool) at any&lt;br /&gt;
time (including during action) as well as '''Home''' and '''End'''. Also, as in Calligraphy&lt;br /&gt;
tool, the visible width of the brush is independent of zoom; simply zooming in or out is&lt;br /&gt;
often easier than adjusting the width if you want to cover a smaller or larger area of&lt;br /&gt;
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, also in the&lt;br /&gt;
range from 1 to 100. You can also change width by '''Up''' and '''Down''' arrow keys at&lt;br /&gt;
any time (including during action).&lt;br /&gt;
&lt;br /&gt;
If you have a pressure-sensitive tablet and your &amp;quot;Use pressure&amp;quot; button on the right-hand&lt;br /&gt;
end of the controls bar is on, then the force will also depend on how hard you actually&lt;br /&gt;
press your pen into your tablet, changing in the range from zero to whatever you set in&lt;br /&gt;
the Force control. If all you have is a mouse, then the force will be constant but still&lt;br /&gt;
settable by the Force control. &lt;br /&gt;
&lt;br /&gt;
===Path editing modes===&lt;br /&gt;
&lt;br /&gt;
The Tweak tool has a number of '''modes''', selectable by toggle buttons in the tool's&lt;br /&gt;
Controls bar and by keyboard shortcuts. Some of these modes change the shapes of &lt;br /&gt;
paths while others affect the colors of objects. All these modes share the Width and&lt;br /&gt;
Force controls but otherwise are quite different. Let's look at the path editing modes&lt;br /&gt;
first.&lt;br /&gt;
&lt;br /&gt;
Unlike the Node tool, to edit paths with the Tweak tool you don't need to worry about&lt;br /&gt;
where the nodes of a path are and how to manipulate them. You just apply the tool's&lt;br /&gt;
brush to any point, and the selected paths at that point will reshape smoothly and&lt;br /&gt;
naturally - as if made of soft jelly - regardless of where its nodes lie. If applied to&lt;br /&gt;
a shape or text object, the tool converts them to paths automatically.&lt;br /&gt;
&lt;br /&gt;
While not very useful for technical drawings, tweaking paths will be indispensable for&lt;br /&gt;
artistic uses of Inkscape - cartoons, drawings, sketches, anime, etc. This new&lt;br /&gt;
functionality is somewhat similar to the tools such as &amp;quot;Pucker&amp;quot; and &amp;quot;Bloat&amp;quot; in the&lt;br /&gt;
latest versions of Adobe Illustrator. &lt;br /&gt;
&lt;br /&gt;
There are currently six path editing modes in the Tweak tool: '''Push''', '''Shrink''',&lt;br /&gt;
'''Grow''', '''Attract''', '''Repel''', 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 '''Shrink''' and '''Grow''' 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 (Shrink) or outwards (Grow). 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 Calligraphy pen 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 Shrink action where you want the lines to become thinner (and the hatching to become lighter), up until total disappearance. If you press hard, shrinking works as an eraser, so you can easily clean the strokes' ends to make them thin, sharp, and uniform. Conversely, applying Grow makes strokes wider (i.e. the hatching becomes darker).&lt;br /&gt;
&lt;br /&gt;
:Of course, shrinking and growing are useful not only for calligraphic strokes. Same as with Push, with Shrink and Grow you can '''sculpt''' any path, spawning smooth treacle-like appendages with Grow and carving holes with Shrink. Unlike the &amp;quot;node sculpting&amp;quot; mode in the Node tool, however, this does not require adding new nodes to the shape.&lt;br /&gt;
&lt;br /&gt;
* The '''Attract''' and '''Repel''' modes work by moving each affected point on a path towards (Attract) or from (Repel) the cursor point. In some cases this may look similar to Shrink and Grow, but the difference is that shrinking/growing moves paths perpendicularly to the path in each point, whereas attracting/repelling moves them to or from the cursor regardless of the path shape. These modes are similar to the Pinch effect in AI; you can use them for various central-symmetric distortions in parts of your paths.&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, shrinking, or growing 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;
See the screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.46-tweak-path.png] for a few examples of using the path editing modes of the Tweak tool.&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;
inflates 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 inflating 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;
====Known problems====&lt;br /&gt;
&lt;br /&gt;
Known problems with the path editing modes in Tweak tool:&lt;br /&gt;
&lt;br /&gt;
# they don't work on open paths (an open path becomes closed if you tweak it);&lt;br /&gt;
# they are rather slow; &lt;br /&gt;
# they quickly eat memory; and &lt;br /&gt;
# they are sometimes buggy - thin calligraphic strokes may suddenly disappear or change their shape drastically as you're shrinking or growing them.&lt;br /&gt;
&lt;br /&gt;
For (4), 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;
===Color editing modes===&lt;br /&gt;
&lt;br /&gt;
The '''Color Paint''' and '''Color Jitter''' modes, unlike the path editing modes,&lt;br /&gt;
change the colors of objects instead of their shapes. Yet they share enough common&lt;br /&gt;
features with the path editing modes to be part of the same tool: These modes also use&lt;br /&gt;
a circular soft-edged brush controlled by the Width and Force parameters on the Controls&lt;br /&gt;
bar and affected by the pen pressure (if you have a pressure-sensitive tablet).&lt;br /&gt;
&lt;br /&gt;
* '''Color Paint''' applies the style of the tool to the selected objects under the brush. The style of the tool is visible in the style swatch at the rightmost end of the tool's control bar; it can be changed by clicking on the color palette or by any other style assignment command, such as Fill and Stroke dialog. ('''Note''': unlike all other tools, in Tweak tool in Color Paint mode you cannot assign style directly to selected objects; any style-setting command changes the tool's style instead.)&lt;br /&gt;
&lt;br /&gt;
:The fill from the tool's style applies to the fills of the painted objects, and the stroke applies to the strokes. If the tool's style has no fill or no stroke, it won't affect fills or strokes, correspondingly. For example, if you want to color the fills of objects blue but leave their strokes untouched, assign blue fill to the tool's style (just click blue on the palette) but set its stroke to None (middle-click the Stroke swatch in the statusbar). Similarly, master opacity in the tool's style affects master opacities of the touched objects (if the O channel is on, see below).&lt;br /&gt;
&lt;br /&gt;
:This mode allows you to literally paint over objects, shifting their colors towards the target style of the tool. For example, if you paint with yellow fill over a blue-filled object, the object will become greenish blue, then green, then yellowish green, and end up being exactly the yellow color you're painting with. This speed of this gradual transition depends on both Force parameter and pen pressure; also, objects touched by the periphery of the brush are less affected than those hit by the brush center. Overall, using this tool is very similar to a soft brush in a raster editor such as Gimp or Photoshop.&lt;br /&gt;
&lt;br /&gt;
* '''Color Jitter''' mode does not apply any color, but instead jitters (randomizes) the colors of the objects it touches. The force of the action determines how strong is the randomization, i.e. how far the colors deviate from the original values. This mode does not use the tool's style.&lt;br /&gt;
&lt;br /&gt;
Both modes work on flat fills and gradients; for gradients, the tool takes into account not only the position of the entire object with gradient, but also the position of each gradient stop relative to the brush. This means that, for example, you can change the blue color only in an object filled with blue-red gradient simply by painting over its blue end with a brush small enough to not touch the red. (Note that color tweaking does not create gradients on objects that used flat color before, but only adjusts existing gradients in the drawing.)&lt;br /&gt;
&lt;br /&gt;
See the screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.46-tweak-color.png] for a few examples of using the color editing modes of the Tweak tool.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Channels====&lt;br /&gt;
&lt;br /&gt;
Color Paint and Color Jitter honor the '''Channels''' control. This control comprises&lt;br /&gt;
the four buttons: '''H''', '''S''', '''L''', and '''O''', which allow you to turn on and off&lt;br /&gt;
the tool's action on the object's hue, saturation, lightness, and opacity,&lt;br /&gt;
correspondingly. For example, if you want to raise the saturation of some part of your&lt;br /&gt;
drawing without changing the hue, select some maximum-saturation color (e.g. pure red)&lt;br /&gt;
and turn off all Channels buttons except S. Similarly, you can replace the hues without&lt;br /&gt;
affecting saturation or lightness (only H pressed), or lighten/darken all colors without&lt;br /&gt;
changing their hues and saturation (only L pressed). Pressing O allows you to apply the&lt;br /&gt;
master opacity from the tool's style to the master opacity of objects (but not fill or&lt;br /&gt;
stroke opacity).&lt;br /&gt;
&lt;br /&gt;
====Usage notes====&lt;br /&gt;
&lt;br /&gt;
Color painting with Tweak tool is similar, but not exactly analogous to bitmap&lt;br /&gt;
painting. Even though the tool itself works as a soft brush, it still applies its color&lt;br /&gt;
to vector objects, which behave as vector objects usually do. For example, if you want&lt;br /&gt;
to change the tint of the face in your drawing, and if a hand in the drawing is part of&lt;br /&gt;
the same object as the face, that hand will change its tint too even if it's located far&lt;br /&gt;
from the point you are painting. (We foresee a &amp;quot;fracture&amp;quot; command in one of the next&lt;br /&gt;
versions of Inkscape which will help you turn a monolithic object into a mosaic of small&lt;br /&gt;
fragments that will be then easy to paint with Tweak tool.)  Still, even with this&lt;br /&gt;
limitation, color painting is a novel way of dealing with vector drawings which allows&lt;br /&gt;
you to quickly and intuitively make adjustments which would be awkward and slow with&lt;br /&gt;
traditional approach.&lt;br /&gt;
&lt;br /&gt;
Drawings containing patterns or scatterings of small independent objects are best suited&lt;br /&gt;
for color painting with Tweak tool. Examples include:&lt;br /&gt;
&lt;br /&gt;
* freehand drawings with Calligraphy pen, consisting of many separate strokes;&lt;br /&gt;
&lt;br /&gt;
* gradient meshes imported from Adobe Illustrator files (Inkscape renders these meshes as lattices of small polygons; while there's no direct support for gradient meshes in Inkscape yet, color painting on such lattices is almost as good);&lt;br /&gt;
&lt;br /&gt;
* text converted to paths and with Break Apart command applied so that each letter is a separate path;&lt;br /&gt;
&lt;br /&gt;
* patterns made with the Tile Clones command; note that you need to unset the fill and/or stroke on the original object and use the Color tab to assign some initial color to the clones - this will make them paintable with the Tweak tool without unlinking.&lt;br /&gt;
&lt;br /&gt;
Moreover, color tweaking can be useful for compositions with a few objects or even for&lt;br /&gt;
single objects. Unlike all other color selection methods, painting with the Tweak tool&lt;br /&gt;
implements the ''color mixing'' metaphor which is much more familiar to traditional&lt;br /&gt;
artists than RGB sliders or even the color wheel. For example, start with a rectagle of&lt;br /&gt;
pure blue color; then, pick different colors by Color Paint and apply light touches with&lt;br /&gt;
minimum Force and minimum pen pressure: add a little green, a little brown, a little&lt;br /&gt;
yellow, etc. until you have the exact hue you need. Similarly, you can whiten or blacken&lt;br /&gt;
any hue by admixing white or black.&lt;br /&gt;
&lt;br /&gt;
You can also use color tweaking to add a tint, darken/lighten, saturate/desaturate, or&lt;br /&gt;
color jitter your entire drawing. Just select all in all layers, zoom out, choose a&lt;br /&gt;
large brush width so it covers all of the drawing, and apply a little color tweaking&lt;br /&gt;
(with minimum Force) that will therefore affect all visible objects.&lt;br /&gt;
&lt;br /&gt;
===Keyboard shortcuts===&lt;br /&gt;
&lt;br /&gt;
* '''W''', '''Shift+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+S''': switch to the Shrink mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+G''': switch to the Grow mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+A''': switch to the Attract mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+E''': switch to the Repel mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+R''': switch to the Roughen mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+C''': switch to the Color Paint mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+J''': switch to the Color Jitter 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 Shrink (while Ctrl is down)&lt;br /&gt;
&lt;br /&gt;
* '''Shift+Ctrl+mouse drag''': temporarily switch to Grow (while Shift+Ctrl is down)&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 create drawings or objects that appear three-dimensional. The new '''3D box tool''' helps you create such drawings by automating the most common operation: creating a box in a given 3D 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; Shift+drag without releasing the mouse button to extrude in Z direction.&lt;br /&gt;
&lt;br /&gt;
* Adjust any of its 3 dimensions by handles. The 4 handles on the front X/Y side resize it, the four ones on the back X/Y side expand/contract the box in Z direction. With Shift, the functions of handles on front and back sides are reversed. With Ctrl, the side-resizing handles snap to the coordinate axes or diagonals.&lt;br /&gt;
&lt;br /&gt;
* Move a 3D box &amp;quot;in perspective&amp;quot; by dragging its center; without modifiers, movement occurs within the XY-plane (press Ctrl to constrain the movement to the directions of the coordinate axes or diagonals), with Shift the box moves parallel to the Z-axis.&lt;br /&gt;
&lt;br /&gt;
* Adjust the vanishing points of a perspective by dragging them on the canvas (see below) or toggling their states; all boxes sharing this perspective are affected by a vanishing point move. &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;
In SVG, a 3D box is represented as a '''group''' (svg:g) with a special extension attribute (in Inkscape's 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;
===Keyboard shortcuts===&lt;br /&gt;
&lt;br /&gt;
* '''X''', '''Shift+F4''': switch to the 3D box tool&lt;br /&gt;
&lt;br /&gt;
* The various kinds of parentheses, namely '''[''' ''']''', '''(''' ''')''', '''{''' '''}''', can be used to rotate infinite (i.e., parallel) perspective lines in X-, Y-, and Z-direction, respectively. Closing parentheses rotate clockwise and opening parentheses rotate counterclockwise. The angle of rotation is taken from the preferences. Pressing '''Alt''' reduces the amount of rotation to 1 screen pixel.&lt;br /&gt;
&lt;br /&gt;
* When the 3D box tool is active, '''Shift+X''', '''Shift+Y''', and '''Shift+Z''' toggle perspective lines in the corresponding direction between &amp;quot;converging&amp;quot; and &amp;quot;parallel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Gradient Tool==&lt;br /&gt;
===Selecting multiple stops===&lt;br /&gt;
'''More than one gradient stop''' can be selected at a time. Shortcuts for working with multiple stop selections are generally modeled on the Node tool. &lt;br /&gt;
* Add a stop to the selected stops by '''Shift+click'''.&lt;br /&gt;
* Press '''Ctrl+A''' to select all stops in the selected objects.&lt;br /&gt;
* '''Shift+drag''' around stops to add them to selection.&lt;br /&gt;
Multiple selected stops:&lt;br /&gt;
*Can be moved together by '''mouse drag''' or by '''arrow keys'''. For example, creating a linear gradient, then press Ctrl+A to select all stops and use arrow keys to move the entire gradient as a whole.&lt;br /&gt;
*Can be deleted at the same time by pressing '''Del'''.&lt;br /&gt;
An always up-to-date description of the current handle selection is provided in the statusbar in the Gradient tool, including the number of selected handles (and the type of the single selected handle), as well as the total number of handles and selected objects.&lt;br /&gt;
&lt;br /&gt;
===Editing intermediate stops===&lt;br /&gt;
'''Intermediate stops''' in gradients can be added, deleted, and edited on canvas (previously this was only possible in the Gradient Editor dialog).&lt;br /&gt;
*Stops can be added by '''double clicking''' or by '''Ctrl+Alt+Click''' on the gradient line. Also, you can '''drag-and-drop''' a color from the palette onto the gradient line to create a new stop with this color. Dropping a color on an existing stop changes the color of that stop.&lt;br /&gt;
*When two or more adjacent stops are selected, pressing '''Ins''' adds stops in the middles of all selected stop intervals.&lt;br /&gt;
*Intermediate stops can be '''mousedrag'''ged or moved by '''arrow keys''' along their gradient line, within the limits of the adjacent unselected stops (or end handles). &lt;br /&gt;
:*Dragging with '''Ctrl''' moves the selected stops snapping them to 1/10 fractions of the available range.&lt;br /&gt;
:*Dragging with '''Alt''' moves the selected stops depending on how close each one is to the stop being dragged, using a smooth bell-like curve similar to the node sculpting feature in Node tool. This makes it easy to approximate different gradient profiles; for example, if you have a two-stop gradient that you want to shape according to a curve profile, select both ends of the gradient, press '''Ins''' a few times to add a number of intermediate nodes, then '''Alt+drag''' a node in the middle to smoothly profile the gradient.&lt;br /&gt;
*Stops can also be moved by '''arrow keys''' with all the regular modifiers ('''Shift''' for 10x movement, '''Alt''' for pixel-size movement at the current zoom, '''Shift+Alt''' for 10 pixels movement at the current zoom).&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;
*Pressing '''Ctrl+L''' with some intermediate stops selected attempts to ''simplify'' the selected portion of the gradient, removing those stops that can be removed without too much change in the way the gradient looks. In particular, new stops created by double-clicking or pressing Ins initially do not change the appearance of the gradient, so if you press Ctrl+L, all redundant stops that weren't moved or repainted since creation will be deleted.&lt;br /&gt;
&lt;br /&gt;
===Style of gradient stops===&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;
*When one or more gradient stops are selected, using the Copy command ('''Ctrl+C''') copies to the clipboard the style (color and opacity) of the selected stop or the averaged style of several selected stops, not the entire object with gradient as before. This means you can now copy/paste style between stops: select the source stop(s), copy, select the destination stop(s), paste style ('''Ctrl+Shift+V'''). With several selected stops, this also allows you to easily average their colors and opacities by copying them and pasting the style back onto them. (After that, redundant gradient stops can be removed by simplification with '''Ctrl+L''').&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;
===Automatic duplication of gradients===&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). The Duplicate button is therefore removed. &lt;br /&gt;
&lt;br /&gt;
However, to accommodate the needs of users who have relied on sharing the same gradient definition across objects, this behavior can be optionally suppressed. The '''Prevent sharing of gradient definitions''' checkbox on the Misc tab of Inkscape Preferences is by default checked; if you uncheck it, Inkscape does not automatically copy gradient definitions for new objects, which means that copy/pasting, duplicating, pasting style, and explicit assignment of a gradient to an object via the Gradient tool controls results in a shared gradient definition, so that changing the colors or mid-stop positions of the gradient on one object (but not changing the coordinates of the end handles) affects all other objects that share the same definition.&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), as well as to '''-1/3''', '''-1/2''', '''-1''', '''-2''', '''-3''', etc. This way you can, for example, mirror any object around one of the edges of its box. (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;
&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;
* As a long-requested feature, two entry fields are added to the toolbar which allow precise editing of the coordinates of selected nodes.&lt;br /&gt;
&lt;br /&gt;
==Rectangle Tool==&lt;br /&gt;
&lt;br /&gt;
* '''Ctrl+dragging''' now also allows the creation of rectangles with sides constrained to the '''golden ratio''' (approx. 1 : 1.618034), not only integer ratios.&lt;br /&gt;
&lt;br /&gt;
==Ellipse Tool==&lt;br /&gt;
&lt;br /&gt;
* It is now easy to create ellipses/circles passing through particular points. Normally, the starting and ending point of the mouse drag mark the corners of the '''bounding box'''. Now the '''Alt''' modifier can be used to enlarge the ellipse so that its '''circumference''' passes through these two points.&lt;br /&gt;
&lt;br /&gt;
* '''Ctrl+Alt+drag''' is an exception from this rule. It creates a perfect circle whose diameter is defined by the starting and ending point of the drag.&lt;br /&gt;
&lt;br /&gt;
==Pen/Pencil Tools==&lt;br /&gt;
&lt;br /&gt;
These tools can now create '''single dots''' by '''Ctrl+click''' on the canvas. This creates a small circle filled with the current stroke color. The radius can be set in the Preferences of the respective tools (it is specified as a multiple of the current stroke width). '''Shift+Ctrl+click''' creates a dot twice the specified size, and '''Alt+Ctrl+click''' varies the size of the created dots randomly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Dropper Tool==&lt;br /&gt;
&lt;br /&gt;
The shortcut 'D' is now used to &amp;lt;i&amp;gt;toggle&amp;lt;/i&amp;gt; (not just switch to) the dropper tool - much like space is used to toggle the selector tool. That is, pressing 'D' a second time switches back to the tool used before.&lt;br /&gt;
&lt;br /&gt;
=SVG features=&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;
==SVG 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 '''feColorMatrix''' filter primitive applies a matrix transformation to colour of each rendered pixel. This allows for effects like turning object to grayscale, modifying colour saturation and changing colour hue.&lt;br /&gt;
&lt;br /&gt;
* The '''feComposite''' filter primitive composites two images using one of the [http://en.wikipedia.org/wiki/Porter-Duff Porter-Duff blending modes] (described in paper Compositing Digital Images by T. Porter and T. Duff, published in SIGGRAPH '84 Conference Proceedings, Association for Computing Machinery, Volume 18, Number 3, July 1984) or the aritmetic mode described in SVG standard. Porter-Duff blending modes are essentially logical operations between the images. For example, xor mode shows the areas, where either one of the objects is, but not the areas where both of the objects are. Arithmetic mode lets you specify coefficients k1-k4 for blending equation (result colour) = k1 * (first input colour) * (second input colour) + k2 * (first input colour) + k3 * (second input colour) + k4.&lt;br /&gt;
&lt;br /&gt;
* The '''feConvolveMatrix''' lets you specify a [http://en.wikipedia.org/wiki/Convolution Convolution] to be applied on the image. Common effects created using convolution matrices are blur, sharpening, embossing and edge detection. There's a fairly good explanation and some example matrices at [http://www.gamedev.net/reference/programming/features/imageproc/page2.asp www.gamedev.net/reference/programming/features/imageproc/page2.asp]. Note that while gaussian blur can be created using this filter primitive, the special gaussian blur primitive is faster and resolution-independent.&lt;br /&gt;
&lt;br /&gt;
* Filter primitives '''feDiffuseLighting''' and '''feSpecularLighting''' create lighting maps for the object in input image. SVG doesn't have concept of third dimension, so these filters use alpha channel of input image as a height map: the more opaque given point in input image is, the nearer spectator it is considered to be. There exists an example for using these in Inkscape distribution, in share/examples/lighting_effects.svg or [http://inkscape.svn.sourceforge.net/viewvc/*checkout*/inkscape/inkscape/trunk/share/examples/lighting_effects.svg?revision=15523 in SVN]&lt;br /&gt;
&lt;br /&gt;
* The '''feDisplacementMap''' filter primitive displaces the pixels in the first input using the second input as a displacement map, that shows from how far the pixel should come from. Classical examples are whirl and pinch effects, that can be found in most image manipulation programs and even in some screensavers, where this kind off effect is moving around screen, twisting desktop beneath it.&lt;br /&gt;
&lt;br /&gt;
* The '''feFlood''' filter primitive fills its region with a given color and opacity. It can be used as an auxiliary tool, usualy in combination with other filter primitives, in order to facilitate some common color handling operations.&lt;br /&gt;
&lt;br /&gt;
* The '''feImage''' filter primitive allows using external images as part of filtering chain. For example, one could use external image as a displacement map for feDisplacementMap or as a height map for lighting effects. Note that while SVG standard allows using other parts of the SVG file in this filter primitive, the current Inkscape implementation only allows external images.&lt;br /&gt;
&lt;br /&gt;
* The '''feMerge''' filter primitive composites several temporary images inside the filter primitive to a single image. It uses normal alpha compositing for this. This is equivalent to using several feBlend primitives in 'normal' mode or several feComposite primitives in 'over' -mode.&lt;br /&gt;
&lt;br /&gt;
* The '''feMorphology''' filter primitive provides erode and dilate effects, that are common in image manipulation programs. With erode, darker and more transparent areas spread to lighter and more opaque areas, whereas with dilate lighter and more opaque areas spread to darker and more transparent areas. For single-colour objects, this basically means, erode makes the object thinner and dilate makes it thicker.&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, where the shadow is in a slightly different position than the actual object.&lt;br /&gt;
&lt;br /&gt;
* The '''feTurbulence''' filter primitive renders [http://en.wikipedia.org/wiki/Perlin_noise Perlin noise]. This kind of noise is useful in simulating several nature phenomena like clouds, fire and smoke and in generating complex textures like marble or granite.&lt;br /&gt;
&lt;br /&gt;
See also wiki page [[Filter Effects]] for more info on filters in Inkscape in general.&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 (LPE)=&lt;br /&gt;
&lt;br /&gt;
'''Live path effects''' (not to be confused with extension effects or SVG filters) are a new way to &amp;lt;b&amp;gt;non-destructively modify path and shape objects&amp;lt;/b&amp;gt;. Path effects affect the path data of an object but not its style. The original path is preserved and can be edited directly on-canvas, and the path effect applied to it will be updated live. &lt;br /&gt;
&lt;br /&gt;
In this version, we include several path effects that are analogous to the corresponding extension effects (such as Path along Path effect and Pattern along Path that replaces the extension of the same name). The most important advantage of path effects is that they are, indeed, live - you can still edit the original path and the effect will update in real time (unlike the extension effects which were one-time one-way transformations). In the future, we plan to reimplement most if not all of path-changing extensions as live path effects.&lt;br /&gt;
&lt;br /&gt;
Live path effects were developed by Johan Engelen as part of the GSoC 2007.&lt;br /&gt;
&lt;br /&gt;
==Details about operation==&lt;br /&gt;
The following schematic tries to explain how LPE work.&lt;br /&gt;
&lt;br /&gt;
    original style  ------------&amp;gt;  output style&lt;br /&gt;
    original path   --&amp;gt;  LPE  --&amp;gt;  output path&lt;br /&gt;
                          ^&lt;br /&gt;
                          |&lt;br /&gt;
                      parameters&lt;br /&gt;
&lt;br /&gt;
The original style and path are from the path that the effect is applied on. The output is what is visible on screen. What is very important to notice is that &amp;lt;b&amp;gt;output style equals original style&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameters can be paths, numbers, points, text, in principle anything.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Applying effects==&lt;br /&gt;
Path effects are applied through the Path Effects dialog (opened from the Path menu, or by pressing Ctrl+Shift+7. This dialog is also used for controlling the effect's parameters and for removing effects.&lt;br /&gt;
&lt;br /&gt;
When a path with a path effect applied is selected, the statusbar description mentions that, for example &amp;quot;'''Path''' (4 nodes, path effect)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There is a special Paste Path Effect command (Ctrl+7) that can be used to copy effects from one path to another.&lt;br /&gt;
&lt;br /&gt;
==Editing effect parameters==&lt;br /&gt;
When switching to the node edit tool (&amp;lt;b&amp;gt;F2&amp;lt;/b&amp;gt;), the &amp;lt;b&amp;gt;original path&amp;lt;/b&amp;gt; can be edited. The original path is shown as a red helper path. Normal path operations, like simplify, still work.&lt;br /&gt;
&lt;br /&gt;
Some parameters of effects can be edited on-canvas. For example, path parameters can be node-edited, by pressing the &amp;quot;edit on-canvas&amp;quot; button in the Path Effects dialog. &amp;lt;b&amp;gt;Press &amp;quot;7&amp;quot; to cycle through the different on-canvas editable parameters.&amp;lt;/b&amp;gt; This way, one can edit the parameters without opening the Path Effects dialog. The statusbar tells the name of the parameters that is currently being shown.&lt;br /&gt;
&lt;br /&gt;
==Available effects==&lt;br /&gt;
&lt;br /&gt;
===Path along path===&lt;br /&gt;
The &amp;lt;b&amp;gt;Path along Path&amp;lt;/b&amp;gt; effect can curve a path along another path. When this effect is applied to a path, it can be bend along another path (called ''bend path''). With the node edit tool, both the original path and the bend path can be changed &amp;lt;b&amp;gt;on-canvas&amp;lt;/b&amp;gt; and the result is &amp;lt;b&amp;gt;updated live&amp;lt;/b&amp;gt;. This provides a direct equivalent of &amp;quot;vector brushes&amp;quot; or &amp;quot;skeletal strokes&amp;quot; features in other vector editors. &lt;br /&gt;
&lt;br /&gt;
In the effect's control panel in the Path Effects dialog, you can select how many copies of the original path are put along the bend path (either '''single''' or '''repeated''') and whether it is '''stretched''' to fill the bend path. In this dialog you'll also find a button to edit the bend path on-canvas and a button to '''paste''' a new bend path from clipboard. A possible workflow is this: you select and copy the new bend path to the clipboard, then select the path you want to bend, apply the Path along path effect, and paste the bend path with the paste button next to 'bend path'.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-pathalongpath.svg&lt;br /&gt;
&lt;br /&gt;
===Pattern along path===&lt;br /&gt;
The &amp;lt;b&amp;gt;Pattern along Path&amp;lt;/b&amp;gt; effect can curve a path along another path. When this effect is applied to path A (called ''skeleton''), another path B (called ''pattern'') can then be passed as a parameter. The result is that path B is bent along path A. With the node edit tool, path A can be changed &amp;lt;b&amp;gt;on-canvas&amp;lt;/b&amp;gt; and the result is &amp;lt;b&amp;gt;updated live&amp;lt;/b&amp;gt;. This provides a direct equivalent of &amp;quot;vector brushes&amp;quot; or &amp;quot;skeletal strokes&amp;quot; features in other vector editors. &lt;br /&gt;
&lt;br /&gt;
In the effect's control panel in the Path Effects dialog, you can select how many copies of the pattern are attached (either '''single''' or '''repeated''') and whether the pattern is '''stretched''' to fill the skeleton path. You can also choose the pattern for the selected skeleton [either directly or] by '''pasting''' it from clipboard (that is, you select and copy to the clipboard the pattern, then select the skeleton, apply the Path along path effect, and paste the pattern). The '''Scale width''' parameter allows you to change the width of the pattern applied to the path.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-pathalongpath.svg&lt;br /&gt;
&lt;br /&gt;
===Stitch Subcurves===&lt;br /&gt;
The &amp;lt;b&amp;gt;Stitch Subcurves&amp;lt;/b&amp;gt; effect connects points from two subpaths of the path with straight line or curved segments, i.e. the &amp;lt;i&amp;gt;stitches&amp;lt;/i&amp;gt;. It looks a lot like the Effect Lines from Expression 3. The result is also referred to as &amp;quot;String Art&amp;quot;. For some examples of string art, see http://members.shaw.ca/jillbritton/string_art/jbstringart.htm. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;b&amp;gt;shape&amp;lt;/b&amp;gt; of the &amp;lt;b&amp;gt;connecting paths&amp;lt;/b&amp;gt; can controlled by the &amp;lt;b&amp;gt;stroke path&amp;lt;/b&amp;gt; parameter. This could be used to draw 'hair-shaped' connecting paths with sharp end-tips. Other controls include the &amp;lt;b&amp;gt;number of paths&amp;lt;/b&amp;gt;, the variation in spacing between the connecting paths (&amp;lt;b&amp;gt;clustering&amp;lt;/b&amp;gt;) and also whether the start and end points of the stitches should like exactly on the original subcurves or can &amp;lt;b&amp;gt;stray randomly&amp;lt;/b&amp;gt; around them. Finally the width of the stroke path can be varied.&lt;br /&gt;
&lt;br /&gt;
Note that this effect can only be applied to a path with two subpaths in it, hence '&amp;lt;b&amp;gt;sub&amp;lt;/b&amp;gt;curve' in the name. Use Path &amp;gt; Combine to create such a path from two separate paths.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-curvestitch.svg&lt;br /&gt;
&lt;br /&gt;
===Gears===&lt;br /&gt;
The &amp;lt;b&amp;gt;Gears&amp;lt;/b&amp;gt; effect is a toy effect. It generates a chain of interconnected gears from the path that has the effect applied to it. The nodes of the path define the centers of the gears. The first 3 nodes are special; the first defines the start angle of the chain, the second defines the center of the first gear and the third knot specifies the radius of the first gear. That is, to create a chain of 2 gears, you will need a path with 4 nodes; for 3 gears, 5 nodes, and so on. &lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-gears.svg&lt;br /&gt;
&lt;br /&gt;
==Development of new effects==&lt;br /&gt;
One of the goals of the Summer of Code project was to make it easy to create new effects. There is a framework that greatly simplifies effect implementation; very little code is needed to get the effect hooked into Inkscape. This leaves valuable time for the actual effect to be implemented. See the http://wiki.inkscape.org/wiki/index.php/MakingLivePathEffects wiki page for an explanation of how to get started with your own effect!&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 '''Modify Path &amp;gt; Edge 3D''' extension creates black, grey and white paths around a shape, then blurs and clips them for a 3D effect.&lt;br /&gt;
&lt;br /&gt;
* The new '''Generate from Path &amp;gt; Dimensions''' extension creates CAD style dimensions that are basically arrows with lengths equal to selection's bounding box and captions representing length.&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 new '''Color &amp;gt; Randomize''' extension allows you to change the color via hue, saturation and lightness check boxes. This is useful if you want to colorize lots of shapes at the same time.&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;
*The '''Generate Template &amp;gt; Perfect-Bound Cover''' extension creates templates for wraparound covers for perfect-bound books using US size and paper weight measurements.   This extension will resize the document to include the width, height, spine width, and bleed measurements that are provided to the extensions, so it should be the first operation done before designing.&lt;br /&gt;
&lt;br /&gt;
== XSLT effects ==&lt;br /&gt;
&lt;br /&gt;
* '''XSLT''' is now supported for input, output and effect extensions.  This is used to support the XAML file format (both import and export) and the Adobe Illustrator SVG import which removes Adobe's stuff from SVG.&lt;br /&gt;
&lt;br /&gt;
== ImageMagick effects ==&lt;br /&gt;
&lt;br /&gt;
New raster operations available through the effects drop-down menu, powered by the ImageMagick library. For any of these effects to work, you need to have an '''image object selected''' in the drawing. &lt;br /&gt;
&lt;br /&gt;
* '''Adaptive Threshold''' applies adaptive thresholding to the bitmap. Average color of rectangle provided by '''width''' and '''height''' used as threshold value. Use '''offset''' to apply a different threshold than the average.&lt;br /&gt;
&lt;br /&gt;
* '''Add Noise''' adds random noise of certain types to the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Blur''' blurs the bitmap, using '''radius''' as the amount of blur. Higher radius means more blur. (Note that unlike the vector Gaussian blur of objects, this bitmap blur will not extend the edges of the image, so it may appear truncated at the edges.)&lt;br /&gt;
&lt;br /&gt;
* '''Channel''' extracts the specified channel from the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Charcoal''' applies a charcoal drawing style to a bitmap. Radius controls the width (or detail) of charcoal strokes. Higher '''radius''' means lower detail. '''Sigma''': the higher it is, the less defined the charcoal is.&lt;br /&gt;
&lt;br /&gt;
* '''Colorize''' overlays the bitmap with a given color at a given intensity.&lt;br /&gt;
&lt;br /&gt;
* '''Contrast''' lightly enhances the contrast (difference between lights and darks) of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Cycle Colormap''' cycles the colormap of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Despeckle''' reduce the speckle noise in a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Edge''' hilights edges in a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Emboss''' embosses a bitmap, hilighting edges with 3D effect.&lt;br /&gt;
&lt;br /&gt;
* '''Enhance''' enhance a bitmap, minimizing noise.&lt;br /&gt;
&lt;br /&gt;
* '''Equalize''' equalizes a bitmap. Histogram equalization.&lt;br /&gt;
&lt;br /&gt;
* '''Flop''' mirrors a bitmap, reflecting each scanline in the horizontal direction.&lt;br /&gt;
&lt;br /&gt;
* '''Gaussian Blur''' blurs a bitmap, more strongly than regular blur.&lt;br /&gt;
&lt;br /&gt;
* '''Implode''' sucks everything towards the center of the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Level''' scales values falling between the given '''Black Point''' to '''White Point''' range to the full color range.&lt;br /&gt;
&lt;br /&gt;
* '''Level Channel''' acts the same way as level but for only one channel.&lt;br /&gt;
&lt;br /&gt;
* '''Median Filter''' filters a a bitmap by replacing each pixel component with the median color in a circular neighborhood&lt;br /&gt;
&lt;br /&gt;
* '''Modulate''' adjusts the percent hue, saturation, and brightness of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Negate''' takes the inverse of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Normalize''' normalizes a bitmap, expanding color range to the full possible range of color.&lt;br /&gt;
&lt;br /&gt;
* '''Oil Paint''' stylizes a bitmap so that it appears to be painted with oils.&lt;br /&gt;
&lt;br /&gt;
* '''Opacity''' modifies the opacity channel of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Raise''' alters the lightness of the edges of a bitmap to create a raised appearance, much like a frame.&lt;br /&gt;
&lt;br /&gt;
* '''Reduce Noise''' reduces noise in a bitmap by using a noise peak elimination filter.&lt;br /&gt;
&lt;br /&gt;
* '''Shade''' shades a bitmap by simulating a distant light source&lt;br /&gt;
&lt;br /&gt;
* '''Sharpen''' sharpens a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Solarize''' solarizes a bitmap, like overexposing photographic film.&lt;br /&gt;
&lt;br /&gt;
* '''Spread''' randomly spread pixels in a bitmap within the radius of '''amount'''.&lt;br /&gt;
&lt;br /&gt;
* '''Swirl''' swirls the bitmap around the center point.&lt;br /&gt;
&lt;br /&gt;
* '''Threshold''' thresholds a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Unsharpmask''' sharpens a bitmap using an unsharp mask algorithm.&lt;br /&gt;
&lt;br /&gt;
* '''Wave''' alters a bitmap along the sine wave.&lt;br /&gt;
&lt;br /&gt;
These effects are part of the Google Summer of Code 2007, coded by Christopher Brown.&lt;br /&gt;
&lt;br /&gt;
== Misc ==&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;
* A new parameter, '''precision''' is added to the parameter definitions in the [[MakingAnINX|inx file format]], allowing you to set the number of digits in that parameter's spinbutton in the effect UI.&lt;br /&gt;
&lt;br /&gt;
= Stock patterns =&lt;br /&gt;
&lt;br /&gt;
Since a few versions ago, Inkscape supports patterns in fill and stroke. However, up to now the only way to apply a pattern was by creating it in the document using the Object(s) to Pattern command, which wasn't very convenient. Now, if you switch an object's fill or stroke to pattern using the Fill&amp;amp;Stroke dialog, you will get a drop-down list with a number of predefined '''stock patterns''' that you can apply simply by selecting them from the list:&lt;br /&gt;
&lt;br /&gt;
*A selection of plain '''stripes''' differing by the ratio of the stripe width to gap width (for example, the &amp;quot;Stripes 1:2&amp;quot; pattern has gaps twice as wide as stripes), in the range from 4:1 to 1:64. All stripes patterns are in two versions: with black stripes and with white stripes (gaps are always transparent).&lt;br /&gt;
&lt;br /&gt;
*Two '''checkerboard''' patterns with black and white odd squares (even squares are transparent)&lt;br /&gt;
&lt;br /&gt;
*'''Packed circles''': a hexagonal pattern of black circles with transparent gaps.&lt;br /&gt;
&lt;br /&gt;
*'''Polka dots''': a scattering of dots designed to look randomly but evenly distributed so as to mask the regularity of the repeating pattern. There are three size variants of this pattern (small, medium, and large dots) and two color variants (black and white dots).&lt;br /&gt;
&lt;br /&gt;
*'''Wavy''' is a pattern of wavy lines.&lt;br /&gt;
&lt;br /&gt;
*'''Camouflage''' is a green-toned protective pattern such as that used by the military.&lt;br /&gt;
&lt;br /&gt;
*'''Ermine''' is the traditional heraldic pattern representing stylized stoat furs with black tails.&lt;br /&gt;
&lt;br /&gt;
*Three bitmap patterns: '''sand''', '''cloth''', and '''old paint''' are based on seamless photographic tiles and allow you to add some natural texture to your drawing. All of them are grayscale, so you can make objects with these textures semitransparent and overlay them over other colored objects to &amp;quot;texturize&amp;quot; them. &lt;br /&gt;
&lt;br /&gt;
After applying a stock pattern, switch to Node tool to edit the location, scale, and rotation of the pattern via on-canvas handles.&lt;br /&gt;
&lt;br /&gt;
All stock patterns are stored in the file &amp;lt;code&amp;gt;patterns/patterns.svg&amp;lt;/code&amp;gt; in Inkscape's &amp;lt;code&amp;gt;share&amp;lt;/code&amp;gt; directory (typically &amp;lt;code&amp;gt;/usr/share/inkscape&amp;lt;/code&amp;gt; on Linux, &amp;lt;code&amp;gt;&amp;lt;i&amp;gt;inkscape-dir&amp;lt;/i&amp;gt;/share&amp;lt;/code&amp;gt; on Windows). You can add your own patterns to this file or replace it with any other SVG file containing the patterns you need.&lt;br /&gt;
&lt;br /&gt;
=Markers=&lt;br /&gt;
&lt;br /&gt;
* A new command, '''Objects to Marker''', was added to the Object menu. It converts the current selection into a marker. After you do it, the selection is deleted, but the list of markers in the Fill and Stroke dialog, Stroke style tab, now contains the new marker that you can apply to paths. &lt;br /&gt;
&lt;br /&gt;
:* When creating the new marker, Inkscape assumes that the original objects are oriented as they should be on a horizontal path that goes from left to right. For example, if you create a new arrowhead that you plan to use as an end marker, make it point horizontally to the right before converting it to marker. &lt;br /&gt;
&lt;br /&gt;
:* Similar to standard markers, the user-created marker will scale up and down as you change the stroke width. Its initial size (i.e. the size of the object that you have turned into a marker) corresponds to the 1 px stroke.&lt;br /&gt;
&lt;br /&gt;
:* When you create a new marker, Inkscape uses the rotation center of the (first) selected object as the anchor point, i.e. the point which will coincide with the node to which that marker is attached. By default, the rotation center is in the center of the object's bounding box, which means the newly created marker will be centered around its node. If you move the rotation center, for example, to one of the corners of the object, the new marker will touch its node by that corner.&lt;br /&gt;
&lt;br /&gt;
* Several new '''UML markers''' were added to the standard set, including filled and hollow diamonds and triangles.&lt;br /&gt;
&lt;br /&gt;
* '''Master opacity''' did not apply to path markers as it should; this is fixed.&lt;br /&gt;
&lt;br /&gt;
* '''Stock markers''', if used in the document, now appear in the &amp;quot;this document's markers&amp;quot; section at the top of the marker lists in the Fill &amp;amp; Stroke dialog.  Before, any markers with stock IDs (including markers modified by the user) were hidden, making it difficult to work with modified stock markers.&lt;br /&gt;
&lt;br /&gt;
=Color management=&lt;br /&gt;
&lt;br /&gt;
== Calibrated SVG color including CMYK ==&lt;br /&gt;
&lt;br /&gt;
Inkscape now supports color-managed color definitions that use a colorspace other than sRGB (for example Adobe RGB, or calibrated CMYK colors). In the SVG file, this is done using the&lt;br /&gt;
optional &amp;quot;icc-color(...)&amp;quot; paint components as described in section 11.2 &amp;quot;Specifying paint&amp;quot; of the SVG 1.1 specification&lt;br /&gt;
[http://www.w3.org/TR/SVG11/painting.html#SpecifyingPaint]. A fallback sRGB value will be used, for non color-managed workflows. This allows for the use of calibrated color spaces, including using CMYK values that are preserved across applications.&lt;br /&gt;
&lt;br /&gt;
The new CMS color selector tab allows these colors to be edited.&lt;br /&gt;
&lt;br /&gt;
== Display adjustment ==&lt;br /&gt;
&lt;br /&gt;
In Inkscape Preferences, Color Management tab, there's are new options for enabling display adjustment; you can select any calibration profile (an ICC file) suitable for your display. Options for rendering intent can also be chosen.&lt;br /&gt;
&lt;br /&gt;
=== Per-window adjustment ===&lt;br /&gt;
Display adjustment is enabled and disabled per each editing window. This allows for simultaneous viewing of adjusted and unadjusted views of a single document by using multiple windows. There is a toggle at the bottom-right corner of the scrollbars that allows for turning on and off display adjustment. It also will be disabled to provide visible feedback when no profile is set to be available for adjustment.&lt;br /&gt;
&lt;br /&gt;
=== XICC Support ===&lt;br /&gt;
On X11-based systems (i.e. Unix and Mac OSX), use of [[http://www.burtonini.com/computing/x-icc-profiles-spec-latest.html ICC Profiles In X Specification]] (or XICC) can be enabled. Support for version 0.2 of this specification has been implemented. Enabling this option by choosing to retrieve profiles from the display will switch Inkscape to using profiles attached to screens at runtime. These allow display adjustment to be changed on the fly, and to be set and cleared per-monitor. This is especially helpful with more than a single monitor.&lt;br /&gt;
&lt;br /&gt;
Other Open Source software such as [http://www.gimp.org/ GIMP] support XICC. This allows all aware applications to be adjusted by setting a profile only once.&lt;br /&gt;
&lt;br /&gt;
=== Multi-monitor aware ===&lt;br /&gt;
When XICC support is enabled, windows will adjust to the proper profile as they are moved across monitors. Also, as the windows are moved onto monitors with no profile attached, the adjustment toggle will become disabled. When the windows are moved onto screens that do have profiles, the toggle will become enabled.&lt;br /&gt;
&lt;br /&gt;
== Soft Proofing ==&lt;br /&gt;
&lt;br /&gt;
In Inkscape Preferences, Color Management tab, there's a new option for enabling output device preview; you can select any calibration profile (an ICC file) suitable for your output device. Options for rendering intent can also be chosen, along with out of gamut warnings.&lt;br /&gt;
&lt;br /&gt;
== OS support ==&lt;br /&gt;
&lt;br /&gt;
Сolor management is supported in Linux and Mac OS X only at this time.&lt;br /&gt;
&lt;br /&gt;
=Grids, guides, snapping=&lt;br /&gt;
&lt;br /&gt;
==Grids==&lt;br /&gt;
Grids have undergone some big changes under-the-hood. These are the visible changes:&lt;br /&gt;
&lt;br /&gt;
* There is a &amp;lt;b&amp;gt;new 3D/axonometric grid&amp;lt;/b&amp;gt;. It consists of three sets of parallel lines, one vertical and others at angles of +30 and -30 degrees from the horizontal. The angles of these two latter sets and the spacing of the grid are user-settable. &lt;br /&gt;
&lt;br /&gt;
* A new tab in the Document Properties dialog, &amp;lt;b&amp;gt;Grids&amp;lt;/b&amp;gt;, is devoted solely to grids; the former grid/guide tab is renamed &amp;lt;b&amp;gt;Guides&amp;lt;/b&amp;gt; and is now used only for guides. On the Grids page, you can create and manage grids of various types in your document; so far the two types available are Rectangular (default) and Axonometric, but more types may be added in the future.&lt;br /&gt;
&lt;br /&gt;
* More than one grid can be active at the same time:&lt;br /&gt;
:* Each grid can be enabled/disabled separately from the Document Properties dialog.&lt;br /&gt;
&lt;br /&gt;
* For each grid, you can hide it by unchecking the &amp;quot;Visible&amp;quot; checkbox in the grid's tab, or disable snapping to it by unchecking &amp;quot;Enabled&amp;quot;. Note that you can have &amp;quot;Enabled&amp;quot; on and &amp;quot;Visible&amp;quot; off (but not vice versa), in which case you snap to the invisible grid.&lt;br /&gt;
&lt;br /&gt;
* Multiple views on the same document (i.e. different Inkscape windows with the same document loaded) share the same grids, but the grid can be turned on and off for each view separately. For example, you could have a zoomed-out &amp;quot;overview&amp;quot; view without grids showing. 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. &lt;br /&gt;
&lt;br /&gt;
* The rectangular grid now has an option to show dots on gridline intersections instead of solid lines.&lt;br /&gt;
&lt;br /&gt;
From developer perspective:&lt;br /&gt;
* Implementation of new grids is much easier now by subclassing CanvasGrid. 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;
* Grid information is now stored in SVG as a child of sodipodi:namedview. Old files will be converted to this new format automatically.&lt;br /&gt;
* An old bug is fixed: apparently the origin of the document coordinate system used to be set to the origin of the grid. For example, in 0.45.1 and before, specifying a grid origin of (20,20) moved the origin or coordinates to that point, and the grid was still starting at (0,0) in this moved coordinate system. This is now disabled, and the coordinate origin is not affected by grid origin.&lt;br /&gt;
&lt;br /&gt;
==Angled guidelines==&lt;br /&gt;
&lt;br /&gt;
Now, Inkscape also provides angled guidelines! Double click on a guide to set its angle.&lt;br /&gt;
&lt;br /&gt;
*  When dragging a guideline off the rulers close to the end of the ruler, the guideline will automatically be angled. The angle is set depending on the grid.&lt;br /&gt;
** For the rectangular grid, the angle is 45 degrees.&lt;br /&gt;
** For the axonometric grid, the angle is matched to the grid. When '''Ctrl''' is pressed, the angle is perpendicular to the grid lines (useful for aligning gradients).&lt;br /&gt;
&lt;br /&gt;
==Creating guidelines from objects==&lt;br /&gt;
&lt;br /&gt;
* Selected objects can now be converted to guidelines. To do this, either use the menu command '''&amp;quot;Object-&amp;gt;Object to guides&amp;quot;''' or press '''Shift+G''' in Selector tool (this shortcut also works in some other tools, see below). The conversion process recurses into groups, i.e. all objects in the current selection are converted regardless if they are grouped or not.&lt;br /&gt;
&lt;br /&gt;
* Created guides can be quickly deleted by '''Ctrl'''+clicking on them (this is of course not restricted to guides created by the process described above). Note that this only works in Selector and Node tools, i.e., in contexts where guidelines can be manipulated with the mouse. &lt;br /&gt;
&lt;br /&gt;
* '''Paths''' are converted by creating one guide for each straight line segment occurring in the path (whereas curved segments are not taken into account). To make this conveniently accessible, the shortcut '''Shift+G''' works in Pen and Pencil tools, too.&lt;br /&gt;
&lt;br /&gt;
* For all other objects, conversion usually happens by placing the guidelines around the object's bounding box (use the corresponding checkbox in the &amp;quot;Tools&amp;quot; page of Inkscape Preferences to switch between geometric and visual bounding box).&lt;br /&gt;
&lt;br /&gt;
*For '''rectangles''' and '''3D boxes''' there is a special option in their preferences pages (checked by default) which instead allows the guidelines to be placed along the object's edges so that they imitate its true shape. This is especially useful when converting rotated or skewed rectangles (to create guidelines in a special position) or for creating 3D scenes containing other objects than just boxes. The shortcut '''Shift+G''' works in these tools as well.&lt;br /&gt;
&lt;br /&gt;
==Snapping==&lt;br /&gt;
&lt;br /&gt;
* Snapping has been implemented or improved for:&lt;br /&gt;
&lt;br /&gt;
:* '''Newly created shapes'''&lt;br /&gt;
&lt;br /&gt;
:* '''Skewing''' of objects&lt;br /&gt;
&lt;br /&gt;
:* '''Handles''' of objects, incl. '''gradients'''&lt;br /&gt;
&lt;br /&gt;
:* '''Images''', '''ellipses''', and '''clones'''&lt;br /&gt;
&lt;br /&gt;
:* Text boxes, which snap to '''text baselines''' again&lt;br /&gt;
&lt;br /&gt;
:* Objects, for which snapping now optionally considers the '''rotation center'''&lt;br /&gt;
&lt;br /&gt;
:* Objects, which now allow for '''constrained snapping'''&lt;br /&gt;
&lt;br /&gt;
:* '''Guides''', which now snap while dragging them&lt;br /&gt;
&lt;br /&gt;
:* '''Axonometric grids'''&lt;br /&gt;
&lt;br /&gt;
:* '''Angled guide lines'''&lt;br /&gt;
&lt;br /&gt;
:* '''Bounding boxes''', of which now all four corners snap&lt;br /&gt;
&lt;br /&gt;
* Other snapping fixes and improvements include:&lt;br /&gt;
&lt;br /&gt;
:* It is now possible to snap to '''intersections''' of e.g. gridlines with guidelines, and of line segments. &lt;br /&gt;
&lt;br /&gt;
:* The '''snapping preferences dialog''' has been restyled to make it more intuitive. &lt;br /&gt;
&lt;br /&gt;
:* Inkscape now has a global snapping toggle, which has been added to the view-menu and is accessible through a shortcut&lt;br /&gt;
&lt;br /&gt;
:* Inkscape now allows for controlling the snapping per grid when multiple grids are being used&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 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 time it takes to snap to objects using the selector tool has been reduced significantly.&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;
:* Only nodes at '''non-smooth parts''' of a path now snap.&lt;br /&gt;
&lt;br /&gt;
:* The confusing &amp;quot;Default transformations origin&amp;quot; option has been 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;
&lt;br /&gt;
=Import/Export=&lt;br /&gt;
&lt;br /&gt;
==PDF and AI import==&lt;br /&gt;
&lt;br /&gt;
In this version, Inkscape can natively (i.e. without any additional software) import PDF files and the newer PDF-based Adobe Illustrator files (starting from AI version 9.0). &lt;br /&gt;
&lt;br /&gt;
'''Implemented features''': The new import extension can import '''paths''', '''text''', '''clippaths''', '''masked or non-masked images''', and '''softmasks'''. It supports '''pattern fills''' (XStep and YStep attributes are ignored) as well as '''linear and radial gradients''' (only those using sampled or exponential functions). '''Gradient meshes''' are imported, but they get converted to groups of small tiles (flat-colored paths) that approximate the mesh; the user can adjust the precision of this approximation. &lt;br /&gt;
&lt;br /&gt;
'''PDF import settings''': After opening a PDF or AI document, the PDF Import Settings dialog shows up. Here you can select:&lt;br /&gt;
&lt;br /&gt;
* the '''page''' to be imported from a multipage PDF;&lt;br /&gt;
&lt;br /&gt;
* the overall '''clip region''' (which can be none or set to any of the PDF boxes, e.g. the crop box, the media box, the trim box, etc.);&lt;br /&gt;
&lt;br /&gt;
* the '''precision''' for the approximation of '''gradient meshes'''; note that setting this too high may result in a huge SVG file and slow performance when importing files with gradient meshes;&lt;br /&gt;
&lt;br /&gt;
* a checkbox controlling whether the '''images''' should be '''embedded''' into the resulting SVG document or saved on the current path;&lt;br /&gt;
&lt;br /&gt;
* a '''preview''' of the selected page (shown if poppler-cairo is present on the system or if the selected page has a thumbnail embedded into the PDF 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;
The native PDF/AI importer is based on the poppler library and was implemented by Miklós Erdélyi as part of the Google Summer of Code 2007.&lt;br /&gt;
&lt;br /&gt;
==PDF export==&lt;br /&gt;
&lt;br /&gt;
* A new cairo-based PDF exporter has been added to Inkscape (marked as &amp;quot;Cairo PDF&amp;quot; in the export format list). Inkscape 0.46 can export shapes, strokes, transparency, gradients, patterns, text, and images correctly to cairo. Clipping paths and masks are known to be faulty or missing. Also, unlike the old PDF exporter, the cairo-based PDF export produces compressed PDF files that are reasonably compact. 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, but it is highly recommended to use at least '''cairo 1.5.2''' for quality PDF export.&lt;br /&gt;
&lt;br /&gt;
* A new cairo-based PostScript exporter has been added (marked as &amp;quot;Cairo PS&amp;quot; in the export format list). The cairo PS backend is not as mature as the PDF backend. It rasterizes a lot of its content. Text output does not work where it works with the PDF backend.&lt;br /&gt;
&lt;br /&gt;
==CDR (CorelDraw) import==&lt;br /&gt;
&lt;br /&gt;
Inkscape can use [http://www.sk1project.org/modules.php?name=Products&amp;amp;product=uniconvertor UniConvertor] if it's installed on your system to import documents in CDR format (CorelDraw). This feature is Unix-only at this time and requires that you have Python and UniConvertor installed. As of UniConvertor 1.1.1, versions from 7 to X4 of the CDR format are supported, and text objects are not converted.&lt;br /&gt;
&lt;br /&gt;
==XAML import/export==&lt;br /&gt;
&lt;br /&gt;
* Inkscape can import vector graphics portions of XAML documents, as well as export its documents to XAML.&lt;br /&gt;
&lt;br /&gt;
==Adobe Illustrator SVG clean import==&lt;br /&gt;
&lt;br /&gt;
* Using this new import filter, Inkscape can open an SVG document removing any elements and attributes in the namespaces that Adobe Illustrator uses for its stuff.  This will clean out everything except the actual SVG content.&lt;br /&gt;
&lt;br /&gt;
==WMF import==&lt;br /&gt;
&lt;br /&gt;
Now Inkscape uses UniConvertor for opening WMF files, which results in three noticable changes:&lt;br /&gt;
&lt;br /&gt;
# imported files are editable now&lt;br /&gt;
# known rendering issues are resolved&lt;br /&gt;
# WMF import works on all platforms where UniConvertor works (including Windows)&lt;br /&gt;
&lt;br /&gt;
Text objects are not supported by UniConvertor as of version 1.1.1.&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;
== Open Clip Art Library import and export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape features a preliminary support for importing drawings from [http://openclipart.org/ Open Clip Art Library].&lt;br /&gt;
&lt;br /&gt;
After specifying account details in Preferences dialog (Import/Export tab) use 'File &amp;amp;gt; Import From Open Clip Art Library' command to open a dialog, then search for tags and pick one of the results to merge this found drawing into your document.&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;
* --query-all produces a comma delimited listing of all objects in the document, with their x, y, height, and width values.&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;
=User interface=&lt;br /&gt;
&lt;br /&gt;
== Dockable dialogs ==&lt;br /&gt;
&lt;br /&gt;
Inkscape's dialog handling has been reworked in this release to allow dialogs to behave like '''dockable panels'''. The dock area that holds the user's dialogs is located right of the canvas.&lt;br /&gt;
&lt;br /&gt;
Dialogs placed in the dock can easily be rearranged, resized, stacked in groups or iconified. Furthermore, a dialog can be dragged of the dock to become a floating dock in itself&amp;amp;mdash;this allows other dialogs to be dragged and dropped on it to form a floating group of dialogs.&lt;br /&gt;
&lt;br /&gt;
The old dialog behavior (used in releases before 0.46) has been preserved as an option, and if it is preferred, one can select it under ''Windows'' &amp;gt; ''Dialog behavior'' in the Inkscape preferences dialog.&lt;br /&gt;
&lt;br /&gt;
====Known issues====&lt;br /&gt;
&lt;br /&gt;
* Some of Inkscape's dialogs are yet to be adapted to allow docking, these include the &amp;quot;Text and Font&amp;quot; dialog, the &amp;quot;Tiled clones&amp;quot; dialog, the &amp;quot;XML editor&amp;quot; and the &amp;quot;Object properties&amp;quot; dialog.&lt;br /&gt;
&lt;br /&gt;
* Floating dialogs that are closed and later reopened might reappear on positions slightly different than their original ones.&lt;br /&gt;
&lt;br /&gt;
* Resizing dialogs that are placed in the dock can be a bit slow and quirky.&lt;br /&gt;
&lt;br /&gt;
* The total height of content the dock will in most cases remain the same when a dialog is closed/iconified, i.e. the remaining docked dialogs will fill the hole. This might not the desired behavior.&lt;br /&gt;
&lt;br /&gt;
====Settings====&lt;br /&gt;
&lt;br /&gt;
Three settings that control dockable dialogs behavior are present in the &amp;lt;code&amp;gt;preferences.xml&amp;lt;/code&amp;gt; file under a &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; group called &amp;lt;code&amp;gt;dock&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cancenterdock&amp;lt;/code&amp;gt;: controls if dialogs are allowed to be stacked on top of each other to be ordered in groups. Valid values are &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;dockbarstyle&amp;lt;/code&amp;gt;: controls what information is shown for iconified dockable dialogs. &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; = icons only, &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; = text only, &amp;lt;code&amp;gt;&amp;quot;2&amp;quot;&amp;lt;/code&amp;gt; = both icons and text. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;switcherstyle&amp;lt;/code&amp;gt;: controls what information is shown for grouped dockable dialogs. &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; = icons only, &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; = text only, &amp;lt;code&amp;gt;&amp;quot;2&amp;quot;&amp;lt;/code&amp;gt; = both icons and text.&lt;br /&gt;
&lt;br /&gt;
== Toolbars ==&lt;br /&gt;
&lt;br /&gt;
'''Main toolbar''' on the left can now optionally use '''smaller buttons'''. With the several new tools added in this version, this may help users with small screens where the toolbar otherwise may not fit vertically. The toggle is on the Misc tab of the Inkscape Preferences dialog.&lt;br /&gt;
&lt;br /&gt;
Switching to stock GTK+ toolbars. This allows for the main window to be made narrower, with toolbar items flowing into a popup menu as it is resized.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Swatches panel, color drag-and-drop ==&lt;br /&gt;
&lt;br /&gt;
* Right-clicking a color swatch now opens a context menu which allows you to apply the color to the fill or stroke of selection.&lt;br /&gt;
&lt;br /&gt;
* Dragging colors from the color palette has been fixed and improved:&lt;br /&gt;
&lt;br /&gt;
:* Now the dropped color is applied to '''the object on which you drop it''', regardless of whether that object is selected or not. This means you can change the color of only one object from selection without having to select it separately. (If you want to assign color to the entire selection, just click on the color swatch on the palette, not drag it.)&lt;br /&gt;
&lt;br /&gt;
:* If an object has stroke and you '''drop the color over stroke''', the color is applied to stroke and not fill. (Another way to always apply color to stroke is to '''Shift+drag''' it.)&lt;br /&gt;
&lt;br /&gt;
:* When gradient handles are active (e.g. in Gradient or Node tools), you can '''drop a color onto the gradient line''' to create a new gradient mid stop with this color, or '''drop a color onto an existing stop''' to recolor that stop.&lt;br /&gt;
&lt;br /&gt;
:* A new submenu has been added to affect the shape of the displayed swatches, allowing their preferred size to be made thinner or wider. Among other things, this allows for more to be seen on screen at once when made thinner.&lt;br /&gt;
&lt;br /&gt;
:* Sizing of the swatches has been corrected to be properly progressive, and now go form smaller to larger on all platforms.&lt;br /&gt;
&lt;br /&gt;
:* Space reserved for the scrollbar is no longer kept with smaller palettes shown in the bottom of the main UI. This allows for more working space when palettes with not many entries are selected at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
==Color gestures==&lt;br /&gt;
&lt;br /&gt;
A new method for quick and precise adjustment of colors is added in this version: color gestures. It works on the selected objects by grabbing the '''fill or stroke color swatch''' in the '''selected style indicator''' (on the left of the statusbar) and dragging it in various directions as described below. Note that this only works when the swatch displays a '''flat color'''; it does not work for a swatch showing &amp;quot;None&amp;quot;, &amp;quot;N/A&amp;quot;, or displaying a gradient (although you can select one or more gradient stops in Gradient tool and color-adjust them by color gestures just as you would do for objects). Color gestures can work on '''fill''' or '''stroke''', depending on which swatch in the selected color indicator you drag.&lt;br /&gt;
&lt;br /&gt;
Color gestures work in '''HSL''' color space. Dragging without any keyboard modifiers adjusts the '''hue''' channel, dragging with '''Shift''' adjusts '''saturation''', and dragging with '''Ctrl''' adjusts '''lightness'''.&lt;br /&gt;
&lt;br /&gt;
The adjustment is done by '''&amp;quot;rotating&amp;quot;''' the color swatch away from the original direction which is assumed to be '''NE at 45 degrees''' (i.e. from&lt;br /&gt;
the swatch diagonally into the document window). Once you click and drag the color swatch, imagine a diagonal line going from the point where you clicked in the NE direction, across the entire Inkscape window. By dragging '''below or to the right''' of that line, you decrease the corresponding color channel, to the minimum at the lower edge of the window; by dragging it above or to the left, you increase it, to the maximum at the left edge of the window. If you hover your mouse exactly over the 45 degrees line, the change will be zero.&lt;br /&gt;
&lt;br /&gt;
Note that you can easily vary the '''precision''' of your adjustment. If you drag close enough to the swatch, each small movement results in a big change of the color. If you need a finer adjustment, just drag farther away from the swatch, towards the center of the Inkscape window or even to its upper right corner, where minute movements will produce very small changes in the color. In fact, this method gives you more color precision than even the color wheel in the Fill and Stroke dialog, unless you expand that dialog to fill the entire screen which is rarely practical.&lt;br /&gt;
&lt;br /&gt;
The mouse '''cursor''' changes when you're doing color gestures, reflecting the channel currently adjusted and indicating the directions for increasing and decreasing the value. Also, watch the '''statusbar''' which will indicate, as you drag, the channel you are adjusting, the original value of that channel, the new value, and the difference. &lt;br /&gt;
&lt;br /&gt;
You can '''switch channels while you drag'''. That is, you don't need to &lt;br /&gt;
drag it again and again from the swatch if you want to adjust all three channels - you can do it all in one drag, by pressing and releasing Ctrl and Shift as necessary. Note that when you change the keyboard modifiers during drag, the position of the zero-change line is temporarily changed to go through the current mouse position; this is done so that there are no sudden changes in color if you are switching modifiers away from the original 45-degree line.&lt;br /&gt;
&lt;br /&gt;
The '''Alt''' modifier is special. Pressing Alt means &amp;quot;do nothing&amp;quot;; this allows you to move the mouse, without releasing, to a more convenient place from where to continue tweaking the color after letting go of Alt. As with the other modifiers, releasing Alt temporarily redefines the zero-change axis to go through the point where Alt was released. For example, imagine  you made your color darker by Ctrl+dragging towards the bottom edge of the window and you now need to make it less saturated. You cannot however Shift+drag it any lower because there's just not enough room for that. In that situation, without releasing the mouse, Alt+drag it upwards to a convenient spot and then Shift+drag downwards as needed. Also, you can start dragging from the swatch with Alt pressed to avoid changing the color while you take a more convenient position for adjustments.&lt;br /&gt;
&lt;br /&gt;
For example, you can select a green rectangle and first turn it into greenish-blue by dragging away from the Fill swatch and slightly above the 45 degrees line; then, without releasing the mouse, press Ctrl and drag a bit to the right to darken the color; then press Shift, release Ctrl, and adjust saturation. You can press or release Ctrl and Shift as many times as necessary during a single drag; when you are finally satisfied with your color, release the mouse to commit the change.&lt;br /&gt;
&lt;br /&gt;
Apart from precise adjustments, you can use color gestures to very quickly perform some common color transformations:&lt;br /&gt;
&lt;br /&gt;
* Ctrl+drag the swatch to the right and down to paint all selected objects black.&lt;br /&gt;
&lt;br /&gt;
* Ctrl+drag the swatch upwards and to the left to paint all selected objects white.&lt;br /&gt;
&lt;br /&gt;
* Shift+drag the swatch to the right and down to desaturate the color of selected objects.&lt;br /&gt;
&lt;br /&gt;
* Shift+drag the swatch upwards and to the left to maximize saturation of the color of selected objects. &lt;br /&gt;
&lt;br /&gt;
Note that when several objects or gradient stops with different colors are selected, the selected style indicator shows their '''averaged''' color. If you adjust that color by gesturing, the changed color will be assigned back to all selected objects/stops, in effect eliminating any difference between them. If you want to adjust many different-colored objects preserving their relative differences, use the color modes of the Tweak tool or color adjustment extension effects.&lt;br /&gt;
&lt;br /&gt;
This new technique requires some getting used to, but once you get the idea it is quite convenient, fast, and precise.&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;
== Preserving zoom/view of reverted documents ==&lt;br /&gt;
&lt;br /&gt;
When reverting files to their previously saved state, the current zoom factor/panning is now retained (as opposed to reverted to the saved state, too, as it was the case before). This less interrupts the workflow when one is working on some detail in the drawing.&lt;br /&gt;
&lt;br /&gt;
== Bounding box option moved ==&lt;br /&gt;
&lt;br /&gt;
The preferences option to select between &amp;quot;visual&amp;quot; and &amp;quot;geometric&amp;quot; bounding box was moved in Inkscape Preferences dialog from the &amp;quot;Selector&amp;quot; page to &amp;quot;Tools&amp;quot; page (since it applies more globally than just in Selector tool).&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;
== Using other keys in place of Alt ==&lt;br /&gt;
&lt;br /&gt;
* Many Linux users have found the use of '''Alt-drag''' and '''Alt+click''' in Inkscape problematical because this shortcut is often captured by window managers. In 0.46, instead of disabling of the window manager shortcut as suggested in [http://wiki.inkscape.org/wiki/index.php/FAQ#How_to_make_Alt.2Bclick_and_Alt.2Bdrag_work_on_Linux.3F the FAQ], you can change a setting in your preferences.xml file called &amp;lt;code&amp;gt;mapalt&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; group. This numerical value ranges from 1 to 5; 1 indicates no change, any other value refers to some special key on a keyboard, such as '''Alt Gr''', the '''Windows''' key, etc. The specific mapping of these values to the keys on your keyboard can be viewed and/or editied by '''xkeycaps''', available from [http://www.jwz.org/xkeycaps www.jwz.org]. The value associated with a particular key is shown in that program at the top of the screen beside the word &amp;quot;Modifiers&amp;quot; when the mouse is held over a key on the main display.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keyboard profiles ==&lt;br /&gt;
&lt;br /&gt;
New profiles have been added:&lt;br /&gt;
&lt;br /&gt;
* '''Corel DRAW X4''' (corel-draw-x4.xml)&lt;br /&gt;
* '''Zoner Draw 5''' (zoner-draw.xml)&lt;br /&gt;
* '''ACD Systems Canvas 11''' (acd-canvas.xml)&lt;br /&gt;
&lt;br /&gt;
Also, profile for Adobe Illustrator has been fixed and includes bindings for tools now.&lt;br /&gt;
&lt;br /&gt;
(To enable a profile, copy it into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; in the same directory, overwriting the old file. To restore the default Inkscape set, copy &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
=Other changes and 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;
* On the '''Scale''' tab of the '''Transform dialog''', the numbers now show the current size of selection, not size increment as before. Correspondingly, with the % unit chosen, you see 100% displayed, and to scale it up twice, you enter 200%, not 100% as before. This is a more intuitive behavior and it's more consistent with how the W/H controls work in the Selector tool. &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;
* The '''Shift''' tab of the '''Tile Clones''' dialog has two new options: '''Cumulate''': when checked, each tile is shifted by the normal amount plus the cumulative shifts of all previous tiles. This is useful when placing tiles that are being scaled by a uniform amount. '''Exlude tile''': when checked, the tile width or height is not automatically included in calculating the tile's shift. This is useful when using the dialog to place clones on a circle or spiral (rather than using a shift of -100%). It is also useful when positioning tiles using the '''Exponent''' parameter.&lt;br /&gt;
&lt;br /&gt;
* The '''Scale''' tab of the '''Tile Clones''' dialog has a new parameter: '''Base''' that allows placing tiles along a logarithmic spiral (as often found in nature). If the value is '''0''', the parameter is not used. Use a value less than one for a converging spiral and a value of greater than one for a diverging spiral. The actual scale is calculated as '''base''' raised to the nominal '''scale''' power.&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;
* 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;
* 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;
* Preferences have been added for setting the default metadata and licenses, so this information can be automatically filled in with new documents.&lt;br /&gt;
&lt;br /&gt;
* The built-in '''Potrace''' tracing engine is upgraded to version '''1.8''' with some minor bugs fixed.&lt;br /&gt;
&lt;br /&gt;
* File dialog windows (open/save) now have an '''Enable preview''' checkbox which allows you to disable the preview pane.&lt;br /&gt;
&lt;br /&gt;
* In the Calligraphic pen controls, the toggle button to enable tablet pressure sensitivity is moved to the Width control, and the button for tilt sensitivity is moved to Angle, to better reflect what parameters these toggles affect.&lt;br /&gt;
&lt;br /&gt;
* In Node and Gradient tools, using '''Tab/Shift+Tab''' to select next/previous node or gradient handle scrolls the canvas if necessary to show the selection. &lt;br /&gt;
&lt;br /&gt;
* The option '''Import bitmap as &amp;lt;image&amp;gt;''' is removed; it was added several versions ago to allow optionally importing images as rectangles with image pattern, to make clipping the images easier. Now that you can easily use clipping paths, as well as convert any image to rectangle with pattern with Alt+I, this option is not really necessary and removed to reduce confusion. Bitmaps are always imported into SVG as an &amp;lt;image&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
* Support has been added for stock patterns, in the same way that stock markers were already supported. Adding patterns to share/patterns/patterns.svg, and giving them a inkscape-stockid attribute as found on the examples already there will make them available in all Inkscape sessions from the patterns tab of the fill &amp;amp; stroke dialog.&lt;br /&gt;
&lt;br /&gt;
* New '''fontforge_glyph.svg''' template is added for font designers who draw glyphs in Inkscape and import them into FontFoge. It is 1000x1000px large and has a horizontal guide at 200px to mark border for descenders.&lt;br /&gt;
&lt;br /&gt;
* Save dialogs have been modified to clarify that they '''Save as SVG''', so people using Inkscape to edit PDF, EPS, and other file formats will be less confused at the default behavior when saving files.&lt;br /&gt;
&lt;br /&gt;
= Mac OS X specific improvements =&lt;br /&gt;
&lt;br /&gt;
* Inkscape 0.46 is officially released as a '''Universal''' (i386/ppc) binary for both OS X '''10.4 Tiger''' and '''10.5 Leopard'''.&lt;br /&gt;
&lt;br /&gt;
* Please note:  Leopard users should update X11.app to at least version 2.1.4.  X11.app updates can be downloaded from the [http://xquartz.macosforge.org/ Xquartz project].&lt;br /&gt;
&lt;br /&gt;
* Inkscape application bundle on '''Mac OS X''' now contains '''pre-compiled python modules''' (e.g. lxml, numpy, etc.) and uses them without requiring any work from the user. Since Python itself is shipped with Mac OS X, the user only has to drag and drop Inkscape on to their hard-drive and all the extensions will be '''functional immediately'''.&lt;br /&gt;
&lt;br /&gt;
* A GTK theme is now included in Inkscape.app bundle on OS X. If the user does not have any personal customization (e.g. in a .gtkrc-2.0 file) this theme is used. It reflects the OS X settings for &amp;quot;Appearance&amp;quot; and &amp;quot;Highlight Color&amp;quot; set in System Preferences &amp;gt; Appearance.&lt;br /&gt;
&lt;br /&gt;
* If Inkscape.app is already open and a file is dropped on the Inkscape dock icon, or an Inkscape file is double-clicked in the Finder, that document will now be opened, rather than this action being ignored, as happened in 0.45 and prior.&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;
* A fix in the blur rendering code made '''exporting blurred objects to bitmap''' much faster and fixed the disappearing of blurred objects in exported bitmaps which happened for large objects in 0.45.  The same fix got rid of the rendering artefacts that sometimes appeared on blurred objects during scrolling. &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;
* On Windows, '''file opening/saving dialogs''' can no longer sink under the main editor window (they now have the inkscape window set correctly as their parent window).&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;
* '''Creative Commons Public Domain Declaration URI''' points to the 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;
* On Windows, the Inkscape uninstaller deleted all files under the install directory. This could lead to removing user-created files, or even other program files not related to inkscape if the install directory was C:\Program Files. The new uninstaller '''tracks all installed files and asks for confirmation before deleting any other files'''. However, installation and uninstallation process is now slower.&lt;br /&gt;
&lt;br /&gt;
* Clones were wrongly unlinked when their original was moved to another layer; fixed.&lt;br /&gt;
&lt;br /&gt;
* Previous versions had a problem on '''Windows Vista''' where selected menu item was invisible. Now our Windows builds use a newer version of GTK library which fixes this problem.&lt;br /&gt;
&lt;br /&gt;
* Duplicating empty text objects that have just been created no longer crashes. Also, the XML editor crash related to empty text objects is fixed. A downside is that the SVG will become cluttered with empty text objects as they are no longer automatically removed. A better fix for the problem is planned.&lt;br /&gt;
&lt;br /&gt;
* In Tile Clones dialog, the PMG symmetry group was created incorrectly; it is now fixed.&lt;br /&gt;
&lt;br /&gt;
* Serious usability issues with the font size field in the Text tool's controls bar have been fixed.&lt;br /&gt;
&lt;br /&gt;
* The rulers are now correctly scaled and will align nicely with document coordinates, with or without the scrollbars displayed.&lt;br /&gt;
&lt;br /&gt;
=Known Issues=&lt;br /&gt;
&lt;br /&gt;
* (LP: #180890) Blend modes do not work correctly over transparent    backgrounds. A workaround is to place an opaque rectangle underneath the bottom-most layer.&lt;br /&gt;
* (LP # 202704) Blur and other filters are very slow when applied to an object with transform= attribute with rotation or skew. To avoid this slowdown, either do not rotate/skew objects you use with filters, or apply filters only to paths (but not shapes to text) because paths, by default, get no transform= attribute when you rotate or skew them.&lt;br /&gt;
* Windows printing has two known issues. In both cases the workaround is to print to bitmap (Print -&amp;gt; Rendering -&amp;gt; Bitmap).&lt;br /&gt;
** (LP # 205732) Blurred objects are misaligned when printing.&lt;br /&gt;
** (LP # 208217) Masked objects disappear from the page when printing.&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>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.46&amp;diff=27124</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=27124"/>
		<updated>2008-04-02T00:43:54Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Mac OS X specific improvements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Inkscape 0.46=&lt;br /&gt;
&lt;br /&gt;
Highlights 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;
* Live path effects&lt;br /&gt;
&lt;br /&gt;
* Color management&lt;br /&gt;
&lt;br /&gt;
* New SVG filters and UI&lt;br /&gt;
&lt;br /&gt;
* Native PDF and AI import&lt;br /&gt;
&lt;br /&gt;
* XAML import/export&lt;br /&gt;
&lt;br /&gt;
* Open Clip Art Library integration (import/export)&lt;br /&gt;
&lt;br /&gt;
* Stock patterns&lt;br /&gt;
&lt;br /&gt;
* Bitmap editing extension effects&lt;br /&gt;
&lt;br /&gt;
* Full on-canvas gradient editing&lt;br /&gt;
&lt;br /&gt;
* Engraver's Toolbox in the Calligraphic tool&lt;br /&gt;
&lt;br /&gt;
* Touch selection&lt;br /&gt;
&lt;br /&gt;
* Dockable dialogs&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;
* &amp;quot;3D&amp;quot; / axonometric grid&lt;br /&gt;
&lt;br /&gt;
* Angled guidelines&lt;br /&gt;
&lt;br /&gt;
* Conversion of objects to guidelines&lt;br /&gt;
&lt;br /&gt;
* Significant speed and interactivity improvements&lt;br /&gt;
&lt;br /&gt;
* Hundreds of smaller features and bugfixes&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 in order from top to bottom. Now the redraw always starts '''at your mouse cursor location''' and proceed upwards and downwards from it, so that the area near the cursor is always redrawn first. This significantly improves program's responsiveness in some situations. For example, when you are node-editing part of a complex path, the entire path needs to be redrawn on each change, but now this redraw starts from the point you're working on. Moreover, the redraw is interruptible, so each mouse movement starts new redraw from the mouse cursor area. As a result, during such operations those parts that you're working on redraw often and feel snappy and responsive, while areas further away may lag behind more.&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;
:'''Exporting drawings with blur''' was particularly slow in 0.45; some files could take hours to export. Now this is fixed, in part by the faster algorithm mentioned above and in part by a bugfix in the export code. Now even the quite complex files with large blurs export at high resolution in at most a few minutes.  &lt;br /&gt;
&lt;br /&gt;
* Minor improvements have been made to gradient rendering performance.&lt;br /&gt;
&lt;br /&gt;
* '''Dragging handles and nodes''' as well as '''dragging and transforming objects''' by mouse became more responsive, so that working in complex drawings and especially editing complex paths is noticeably easier. In particular, this fixes the annoying latency issue where a node or a handle could follow mouse cursor even after you release mouse button after a drag. &lt;br /&gt;
&lt;br /&gt;
* '''Moving objects, nodes, and gradient handles by cursor keys''' as well as '''scaling and rotating objects from keyboard''' and '''zooming by keys''' are much more responsive when working with complex slow-rendering objects. Now, if you press and hold a key, your selection/zoom level will quickly jump to the final position instead of going through all the intermediate steps as before. &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;
:* '''Redrawing the newly exposed parts of the canvas''' after scrolling, especially diagonal scrolling, is now faster because only the exposed areas are redrawn; before, this often resulted in the entire screen being redrawn which was much slower.&lt;br /&gt;
&lt;br /&gt;
:* Previously, if you started 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;
* Better responsiveness and more visual feedback in user interface: &lt;br /&gt;
&lt;br /&gt;
:*When you zoom, the '''zoom control''' on the right end of the statusbar now updates immediately, not after screen redraw as before. &lt;br /&gt;
&lt;br /&gt;
:*Many potentially slow commands (Save, Simplify, Combine, Break Apart and others) now display a '''busy cursor''' and flash a message in the statusbar (e.g. &amp;quot;Saving document...&amp;quot;) while they work. &lt;br /&gt;
&lt;br /&gt;
:*The '''statusbar messages''' displayed while you're drawing a shape or a path in Pen tool do not lag behind the mouse movements.&lt;br /&gt;
&lt;br /&gt;
* '''Combine''' and '''Convert to paths''' commands are now orders of magnitude faster when applied to a selection with hundreds or thousands of objects.&lt;br /&gt;
&lt;br /&gt;
* The time it takes to '''snap to objects''' using the selector tool has been reduced dramatically, which is most noticeable for snapping to complex paths.&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;
===How it works===&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 (or use the auto gap closing parameter, see below).&lt;br /&gt;
&lt;br /&gt;
===Style===&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). As in all other tools, the '''style swatch''' on the far right of the Controls bar shows the style that will be used for the next fill object you create.&lt;br /&gt;
&lt;br /&gt;
===Controls===&lt;br /&gt;
&lt;br /&gt;
In the tool's '''Controls bar''':&lt;br /&gt;
&lt;br /&gt;
* Paint Bucket's perceptual fill can use either all visible colors or specific color channels. Using the '''Fill by''' drop-down list, you can restrict the fill algorithm to one 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;
* The '''Threshold''' (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;
* Using the '''Grow/shrink by''' parameter, 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 much the same as the Outset and Inset path commands, except it's done automatically after every fill.&lt;br /&gt;
&lt;br /&gt;
* With the '''Close gaps''' parameter, you can make the Paint Bucket tool  ignore 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 (close gaps up to 2 pixels in size)&lt;br /&gt;
** Medium (4 pixels)&lt;br /&gt;
** Large (6 pixels)&lt;br /&gt;
:Note that setting this parameter to other than None may slow down noticeably the filling of large areas.&lt;br /&gt;
&lt;br /&gt;
===Shortcuts===&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 drawings which largely blurs the&lt;br /&gt;
distinction between vector and raster editing. Instead of meticulously selecting some&lt;br /&gt;
objects and then performing an action on the selection, you can now select ''all''&lt;br /&gt;
objects (or all objects you are interested in) and apply the Tweak tool's brush to&lt;br /&gt;
smoothly and naturally change the shape or style of only those objects (or parts&lt;br /&gt;
thereof) ''that the brush touches''.&lt;br /&gt;
&lt;br /&gt;
The area of the tool's action - its ''brush'' - is marked by an orange-colored circular&lt;br /&gt;
outline that moves with your mouse cursor. 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.&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 mode or paint it by Color Paint&lt;br /&gt;
mode. You can also apply it to groups of objects; it will go into groups and act on&lt;br /&gt;
individual objects inside groups. If you're trying to use it without anything selected,&lt;br /&gt;
it will remind you by a statusbar message to select some objects.&lt;br /&gt;
&lt;br /&gt;
===Width===&lt;br /&gt;
&lt;br /&gt;
The width of the tool's brush, in the range from 1 to 100, can be changed by the&lt;br /&gt;
'''Width''' control in the tool's controls bar above the canvas. You can also change&lt;br /&gt;
width by '''Left''' and '''Right''' arrow keys (same as in the Calligraphy tool) at any&lt;br /&gt;
time (including during action) as well as '''Home''' and '''End'''. Also, as in Calligraphy&lt;br /&gt;
tool, the visible width of the brush is independent of zoom; simply zooming in or out is&lt;br /&gt;
often easier than adjusting the width if you want to cover a smaller or larger area of&lt;br /&gt;
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, also in the&lt;br /&gt;
range from 1 to 100. You can also change width by '''Up''' and '''Down''' arrow keys at&lt;br /&gt;
any time (including during action).&lt;br /&gt;
&lt;br /&gt;
If you have a pressure-sensitive tablet and your &amp;quot;Use pressure&amp;quot; button on the right-hand&lt;br /&gt;
end of the controls bar is on, then the force will also depend on how hard you actually&lt;br /&gt;
press your pen into your tablet, changing in the range from zero to whatever you set in&lt;br /&gt;
the Force control. If all you have is a mouse, then the force will be constant but still&lt;br /&gt;
settable by the Force control. &lt;br /&gt;
&lt;br /&gt;
===Path editing modes===&lt;br /&gt;
&lt;br /&gt;
The Tweak tool has a number of '''modes''', selectable by toggle buttons in the tool's&lt;br /&gt;
Controls bar and by keyboard shortcuts. Some of these modes change the shapes of &lt;br /&gt;
paths while others affect the colors of objects. All these modes share the Width and&lt;br /&gt;
Force controls but otherwise are quite different. Let's look at the path editing modes&lt;br /&gt;
first.&lt;br /&gt;
&lt;br /&gt;
Unlike the Node tool, to edit paths with the Tweak tool you don't need to worry about&lt;br /&gt;
where the nodes of a path are and how to manipulate them. You just apply the tool's&lt;br /&gt;
brush to any point, and the selected paths at that point will reshape smoothly and&lt;br /&gt;
naturally - as if made of soft jelly - regardless of where its nodes lie. If applied to&lt;br /&gt;
a shape or text object, the tool converts them to paths automatically.&lt;br /&gt;
&lt;br /&gt;
While not very useful for technical drawings, tweaking paths will be indispensable for&lt;br /&gt;
artistic uses of Inkscape - cartoons, drawings, sketches, anime, etc. This new&lt;br /&gt;
functionality is somewhat similar to the tools such as &amp;quot;Pucker&amp;quot; and &amp;quot;Bloat&amp;quot; in the&lt;br /&gt;
latest versions of Adobe Illustrator. &lt;br /&gt;
&lt;br /&gt;
There are currently six path editing modes in the Tweak tool: '''Push''', '''Shrink''',&lt;br /&gt;
'''Grow''', '''Attract''', '''Repel''', 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 '''Shrink''' and '''Grow''' 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 (Shrink) or outwards (Grow). 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 Calligraphy pen 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 Shrink action where you want the lines to become thinner (and the hatching to become lighter), up until total disappearance. If you press hard, shrinking works as an eraser, so you can easily clean the strokes' ends to make them thin, sharp, and uniform. Conversely, applying Grow makes strokes wider (i.e. the hatching becomes darker).&lt;br /&gt;
&lt;br /&gt;
:Of course, shrinking and growing are useful not only for calligraphic strokes. Same as with Push, with Shrink and Grow you can '''sculpt''' any path, spawning smooth treacle-like appendages with Grow and carving holes with Shrink. Unlike the &amp;quot;node sculpting&amp;quot; mode in the Node tool, however, this does not require adding new nodes to the shape.&lt;br /&gt;
&lt;br /&gt;
* The '''Attract''' and '''Repel''' modes work by moving each affected point on a path towards (Attract) or from (Repel) the cursor point. In some cases this may look similar to Shrink and Grow, but the difference is that shrinking/growing moves paths perpendicularly to the path in each point, whereas attracting/repelling moves them to or from the cursor regardless of the path shape. These modes are similar to the Pinch effect in AI; you can use them for various central-symmetric distortions in parts of your paths.&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, shrinking, or growing 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;
See the screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.46-tweak-path.png] for a few examples of using the path editing modes of the Tweak tool.&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;
inflates 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 inflating 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;
====Known problems====&lt;br /&gt;
&lt;br /&gt;
Known problems with the path editing modes in Tweak tool:&lt;br /&gt;
&lt;br /&gt;
# they don't work on open paths (an open path becomes closed if you tweak it);&lt;br /&gt;
# they are rather slow; &lt;br /&gt;
# they quickly eat memory; and &lt;br /&gt;
# they are sometimes buggy - thin calligraphic strokes may suddenly disappear or change their shape drastically as you're shrinking or growing them.&lt;br /&gt;
&lt;br /&gt;
For (4), 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;
===Color editing modes===&lt;br /&gt;
&lt;br /&gt;
The '''Color Paint''' and '''Color Jitter''' modes, unlike the path editing modes,&lt;br /&gt;
change the colors of objects instead of their shapes. Yet they share enough common&lt;br /&gt;
features with the path editing modes to be part of the same tool: These modes also use&lt;br /&gt;
a circular soft-edged brush controlled by the Width and Force parameters on the Controls&lt;br /&gt;
bar and affected by the pen pressure (if you have a pressure-sensitive tablet).&lt;br /&gt;
&lt;br /&gt;
* '''Color Paint''' applies the style of the tool to the selected objects under the brush. The style of the tool is visible in the style swatch at the rightmost end of the tool's control bar; it can be changed by clicking on the color palette or by any other style assignment command, such as Fill and Stroke dialog. ('''Note''': unlike all other tools, in Tweak tool in Color Paint mode you cannot assign style directly to selected objects; any style-setting command changes the tool's style instead.)&lt;br /&gt;
&lt;br /&gt;
:The fill from the tool's style applies to the fills of the painted objects, and the stroke applies to the strokes. If the tool's style has no fill or no stroke, it won't affect fills or strokes, correspondingly. For example, if you want to color the fills of objects blue but leave their strokes untouched, assign blue fill to the tool's style (just click blue on the palette) but set its stroke to None (middle-click the Stroke swatch in the statusbar). Similarly, master opacity in the tool's style affects master opacities of the touched objects (if the O channel is on, see below).&lt;br /&gt;
&lt;br /&gt;
:This mode allows you to literally paint over objects, shifting their colors towards the target style of the tool. For example, if you paint with yellow fill over a blue-filled object, the object will become greenish blue, then green, then yellowish green, and end up being exactly the yellow color you're painting with. This speed of this gradual transition depends on both Force parameter and pen pressure; also, objects touched by the periphery of the brush are less affected than those hit by the brush center. Overall, using this tool is very similar to a soft brush in a raster editor such as Gimp or Photoshop.&lt;br /&gt;
&lt;br /&gt;
* '''Color Jitter''' mode does not apply any color, but instead jitters (randomizes) the colors of the objects it touches. The force of the action determines how strong is the randomization, i.e. how far the colors deviate from the original values. This mode does not use the tool's style.&lt;br /&gt;
&lt;br /&gt;
Both modes work on flat fills and gradients; for gradients, the tool takes into account not only the position of the entire object with gradient, but also the position of each gradient stop relative to the brush. This means that, for example, you can change the blue color only in an object filled with blue-red gradient simply by painting over its blue end with a brush small enough to not touch the red. (Note that color tweaking does not create gradients on objects that used flat color before, but only adjusts existing gradients in the drawing.)&lt;br /&gt;
&lt;br /&gt;
See the screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.46-tweak-color.png] for a few examples of using the color editing modes of the Tweak tool.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Channels====&lt;br /&gt;
&lt;br /&gt;
Color Paint and Color Jitter honor the '''Channels''' control. This control comprises&lt;br /&gt;
the four buttons: '''H''', '''S''', '''L''', and '''O''', which allow you to turn on and off&lt;br /&gt;
the tool's action on the object's hue, saturation, lightness, and opacity,&lt;br /&gt;
correspondingly. For example, if you want to raise the saturation of some part of your&lt;br /&gt;
drawing without changing the hue, select some maximum-saturation color (e.g. pure red)&lt;br /&gt;
and turn off all Channels buttons except S. Similarly, you can replace the hues without&lt;br /&gt;
affecting saturation or lightness (only H pressed), or lighten/darken all colors without&lt;br /&gt;
changing their hues and saturation (only L pressed). Pressing O allows you to apply the&lt;br /&gt;
master opacity from the tool's style to the master opacity of objects (but not fill or&lt;br /&gt;
stroke opacity).&lt;br /&gt;
&lt;br /&gt;
====Usage notes====&lt;br /&gt;
&lt;br /&gt;
Color painting with Tweak tool is similar, but not exactly analogous to bitmap&lt;br /&gt;
painting. Even though the tool itself works as a soft brush, it still applies its color&lt;br /&gt;
to vector objects, which behave as vector objects usually do. For example, if you want&lt;br /&gt;
to change the tint of the face in your drawing, and if a hand in the drawing is part of&lt;br /&gt;
the same object as the face, that hand will change its tint too even if it's located far&lt;br /&gt;
from the point you are painting. (We foresee a &amp;quot;fracture&amp;quot; command in one of the next&lt;br /&gt;
versions of Inkscape which will help you turn a monolithic object into a mosaic of small&lt;br /&gt;
fragments that will be then easy to paint with Tweak tool.)  Still, even with this&lt;br /&gt;
limitation, color painting is a novel way of dealing with vector drawings which allows&lt;br /&gt;
you to quickly and intuitively make adjustments which would be awkward and slow with&lt;br /&gt;
traditional approach.&lt;br /&gt;
&lt;br /&gt;
Drawings containing patterns or scatterings of small independent objects are best suited&lt;br /&gt;
for color painting with Tweak tool. Examples include:&lt;br /&gt;
&lt;br /&gt;
* freehand drawings with Calligraphy pen, consisting of many separate strokes;&lt;br /&gt;
&lt;br /&gt;
* gradient meshes imported from Adobe Illustrator files (Inkscape renders these meshes as lattices of small polygons; while there's no direct support for gradient meshes in Inkscape yet, color painting on such lattices is almost as good);&lt;br /&gt;
&lt;br /&gt;
* text converted to paths and with Break Apart command applied so that each letter is a separate path;&lt;br /&gt;
&lt;br /&gt;
* patterns made with the Tile Clones command; note that you need to unset the fill and/or stroke on the original object and use the Color tab to assign some initial color to the clones - this will make them paintable with the Tweak tool without unlinking.&lt;br /&gt;
&lt;br /&gt;
Moreover, color tweaking can be useful for compositions with a few objects or even for&lt;br /&gt;
single objects. Unlike all other color selection methods, painting with the Tweak tool&lt;br /&gt;
implements the ''color mixing'' metaphor which is much more familiar to traditional&lt;br /&gt;
artists than RGB sliders or even the color wheel. For example, start with a rectagle of&lt;br /&gt;
pure blue color; then, pick different colors by Color Paint and apply light touches with&lt;br /&gt;
minimum Force and minimum pen pressure: add a little green, a little brown, a little&lt;br /&gt;
yellow, etc. until you have the exact hue you need. Similarly, you can whiten or blacken&lt;br /&gt;
any hue by admixing white or black.&lt;br /&gt;
&lt;br /&gt;
You can also use color tweaking to add a tint, darken/lighten, saturate/desaturate, or&lt;br /&gt;
color jitter your entire drawing. Just select all in all layers, zoom out, choose a&lt;br /&gt;
large brush width so it covers all of the drawing, and apply a little color tweaking&lt;br /&gt;
(with minimum Force) that will therefore affect all visible objects.&lt;br /&gt;
&lt;br /&gt;
===Keyboard shortcuts===&lt;br /&gt;
&lt;br /&gt;
* '''W''', '''Shift+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+S''': switch to the Shrink mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+G''': switch to the Grow mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+A''': switch to the Attract mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+E''': switch to the Repel mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+R''': switch to the Roughen mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+C''': switch to the Color Paint mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+J''': switch to the Color Jitter 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 Shrink (while Ctrl is down)&lt;br /&gt;
&lt;br /&gt;
* '''Shift+Ctrl+mouse drag''': temporarily switch to Grow (while Shift+Ctrl is down)&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 create drawings or objects that appear three-dimensional. The new '''3D box tool''' helps you create such drawings by automating the most common operation: creating a box in a given 3D 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; Shift+drag without releasing the mouse button to extrude in Z direction.&lt;br /&gt;
&lt;br /&gt;
* Adjust any of its 3 dimensions by handles. The 4 handles on the front X/Y side resize it, the four ones on the back X/Y side expand/contract the box in Z direction. With Shift, the functions of handles on front and back sides are reversed. With Ctrl, the side-resizing handles snap to the coordinate axes or diagonals.&lt;br /&gt;
&lt;br /&gt;
* Move a 3D box &amp;quot;in perspective&amp;quot; by dragging its center; without modifiers, movement occurs within the XY-plane (press Ctrl to constrain the movement to the directions of the coordinate axes or diagonals), with Shift the box moves parallel to the Z-axis.&lt;br /&gt;
&lt;br /&gt;
* Adjust the vanishing points of a perspective by dragging them on the canvas (see below) or toggling their states; all boxes sharing this perspective are affected by a vanishing point move. &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;
In SVG, a 3D box is represented as a '''group''' (svg:g) with a special extension attribute (in Inkscape's 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;
===Keyboard shortcuts===&lt;br /&gt;
&lt;br /&gt;
* '''X''', '''Shift+F4''': switch to the 3D box tool&lt;br /&gt;
&lt;br /&gt;
* The various kinds of parentheses, namely '''[''' ''']''', '''(''' ''')''', '''{''' '''}''', can be used to rotate infinite (i.e., parallel) perspective lines in X-, Y-, and Z-direction, respectively. Closing parentheses rotate clockwise and opening parentheses rotate counterclockwise. The angle of rotation is taken from the preferences. Pressing '''Alt''' reduces the amount of rotation to 1 screen pixel.&lt;br /&gt;
&lt;br /&gt;
* When the 3D box tool is active, '''Shift+X''', '''Shift+Y''', and '''Shift+Z''' toggle perspective lines in the corresponding direction between &amp;quot;converging&amp;quot; and &amp;quot;parallel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Gradient Tool==&lt;br /&gt;
===Selecting multiple stops===&lt;br /&gt;
'''More than one gradient stop''' can be selected at a time. Shortcuts for working with multiple stop selections are generally modeled on the Node tool. &lt;br /&gt;
* Add a stop to the selected stops by '''Shift+click'''.&lt;br /&gt;
* Press '''Ctrl+A''' to select all stops in the selected objects.&lt;br /&gt;
* '''Shift+drag''' around stops to add them to selection.&lt;br /&gt;
Multiple selected stops:&lt;br /&gt;
*Can be moved together by '''mouse drag''' or by '''arrow keys'''. For example, creating a linear gradient, then press Ctrl+A to select all stops and use arrow keys to move the entire gradient as a whole.&lt;br /&gt;
*Can be deleted at the same time by pressing '''Del'''.&lt;br /&gt;
An always up-to-date description of the current handle selection is provided in the statusbar in the Gradient tool, including the number of selected handles (and the type of the single selected handle), as well as the total number of handles and selected objects.&lt;br /&gt;
&lt;br /&gt;
===Editing intermediate stops===&lt;br /&gt;
'''Intermediate stops''' in gradients can be added, deleted, and edited on canvas (previously this was only possible in the Gradient Editor dialog).&lt;br /&gt;
*Stops can be added by '''double clicking''' or by '''Ctrl+Alt+Click''' on the gradient line. Also, you can '''drag-and-drop''' a color from the palette onto the gradient line to create a new stop with this color. Dropping a color on an existing stop changes the color of that stop.&lt;br /&gt;
*When two or more adjacent stops are selected, pressing '''Ins''' adds stops in the middles of all selected stop intervals.&lt;br /&gt;
*Intermediate stops can be '''mousedrag'''ged or moved by '''arrow keys''' along their gradient line, within the limits of the adjacent unselected stops (or end handles). &lt;br /&gt;
:*Dragging with '''Ctrl''' moves the selected stops snapping them to 1/10 fractions of the available range.&lt;br /&gt;
:*Dragging with '''Alt''' moves the selected stops depending on how close each one is to the stop being dragged, using a smooth bell-like curve similar to the node sculpting feature in Node tool. This makes it easy to approximate different gradient profiles; for example, if you have a two-stop gradient that you want to shape according to a curve profile, select both ends of the gradient, press '''Ins''' a few times to add a number of intermediate nodes, then '''Alt+drag''' a node in the middle to smoothly profile the gradient.&lt;br /&gt;
*Stops can also be moved by '''arrow keys''' with all the regular modifiers ('''Shift''' for 10x movement, '''Alt''' for pixel-size movement at the current zoom, '''Shift+Alt''' for 10 pixels movement at the current zoom).&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;
*Pressing '''Ctrl+L''' with some intermediate stops selected attempts to ''simplify'' the selected portion of the gradient, removing those stops that can be removed without too much change in the way the gradient looks. In particular, new stops created by double-clicking or pressing Ins initially do not change the appearance of the gradient, so if you press Ctrl+L, all redundant stops that weren't moved or repainted since creation will be deleted.&lt;br /&gt;
&lt;br /&gt;
===Style of gradient stops===&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;
*When one or more gradient stops are selected, using the Copy command ('''Ctrl+C''') copies to the clipboard the style (color and opacity) of the selected stop or the averaged style of several selected stops, not the entire object with gradient as before. This means you can now copy/paste style between stops: select the source stop(s), copy, select the destination stop(s), paste style ('''Ctrl+Shift+V'''). With several selected stops, this also allows you to easily average their colors and opacities by copying them and pasting the style back onto them. (After that, redundant gradient stops can be removed by simplification with '''Ctrl+L''').&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;
===Automatic duplication of gradients===&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). The Duplicate button is therefore removed. &lt;br /&gt;
&lt;br /&gt;
However, to accommodate the needs of users who have relied on sharing the same gradient definition across objects, this behavior can be optionally suppressed. The '''Prevent sharing of gradient definitions''' checkbox on the Misc tab of Inkscape Preferences is by default checked; if you uncheck it, Inkscape does not automatically copy gradient definitions for new objects, which means that copy/pasting, duplicating, pasting style, and explicit assignment of a gradient to an object via the Gradient tool controls results in a shared gradient definition, so that changing the colors or mid-stop positions of the gradient on one object (but not changing the coordinates of the end handles) affects all other objects that share the same definition.&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), as well as to '''-1/3''', '''-1/2''', '''-1''', '''-2''', '''-3''', etc. This way you can, for example, mirror any object around one of the edges of its box. (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;
&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;
* As a long-requested feature, two entry fields are added to the toolbar which allow precise editing of the coordinates of selected nodes.&lt;br /&gt;
&lt;br /&gt;
==Rectangle Tool==&lt;br /&gt;
&lt;br /&gt;
* '''Ctrl+dragging''' now also allows the creation of rectangles with sides constrained to the '''golden ratio''' (approx. 1 : 1.618034), not only integer ratios.&lt;br /&gt;
&lt;br /&gt;
==Ellipse Tool==&lt;br /&gt;
&lt;br /&gt;
* It is now easy to create ellipses/circles passing through particular points. Normally, the starting and ending point of the mouse drag mark the corners of the '''bounding box'''. Now the '''Alt''' modifier can be used to enlarge the ellipse so that its '''circumference''' passes through these two points.&lt;br /&gt;
&lt;br /&gt;
* '''Ctrl+Alt+drag''' is an exception from this rule. It creates a perfect circle whose diameter is defined by the starting and ending point of the drag.&lt;br /&gt;
&lt;br /&gt;
==Pen/Pencil Tools==&lt;br /&gt;
&lt;br /&gt;
These tools can now create '''single dots''' by '''Ctrl+click''' on the canvas. This creates a small circle filled with the current stroke color. The radius can be set in the Preferences of the respective tools (it is specified as a multiple of the current stroke width). '''Shift+Ctrl+click''' creates a dot twice the specified size, and '''Alt+Ctrl+click''' varies the size of the created dots randomly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Dropper Tool==&lt;br /&gt;
&lt;br /&gt;
The shortcut 'D' is now used to &amp;lt;i&amp;gt;toggle&amp;lt;/i&amp;gt; (not just switch to) the dropper tool - much like space is used to toggle the selector tool. That is, pressing 'D' a second time switches back to the tool used before.&lt;br /&gt;
&lt;br /&gt;
=SVG features=&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;
==SVG 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 '''feColorMatrix''' filter primitive applies a matrix transformation to colour of each rendered pixel. This allows for effects like turning object to grayscale, modifying colour saturation and changing colour hue.&lt;br /&gt;
&lt;br /&gt;
* The '''feComposite''' filter primitive composites two images using one of the [http://en.wikipedia.org/wiki/Porter-Duff Porter-Duff blending modes] (described in paper Compositing Digital Images by T. Porter and T. Duff, published in SIGGRAPH '84 Conference Proceedings, Association for Computing Machinery, Volume 18, Number 3, July 1984) or the aritmetic mode described in SVG standard. Porter-Duff blending modes are essentially logical operations between the images. For example, xor mode shows the areas, where either one of the objects is, but not the areas where both of the objects are. Arithmetic mode lets you specify coefficients k1-k4 for blending equation (result colour) = k1 * (first input colour) * (second input colour) + k2 * (first input colour) + k3 * (second input colour) + k4.&lt;br /&gt;
&lt;br /&gt;
* The '''feConvolveMatrix''' lets you specify a [http://en.wikipedia.org/wiki/Convolution Convolution] to be applied on the image. Common effects created using convolution matrices are blur, sharpening, embossing and edge detection. There's a fairly good explanation and some example matrices at [http://www.gamedev.net/reference/programming/features/imageproc/page2.asp www.gamedev.net/reference/programming/features/imageproc/page2.asp]. Note that while gaussian blur can be created using this filter primitive, the special gaussian blur primitive is faster and resolution-independent.&lt;br /&gt;
&lt;br /&gt;
* Filter primitives '''feDiffuseLighting''' and '''feSpecularLighting''' create lighting maps for the object in input image. SVG doesn't have concept of third dimension, so these filters use alpha channel of input image as a height map: the more opaque given point in input image is, the nearer spectator it is considered to be. There exists an example for using these in Inkscape distribution, in share/examples/lighting_effects.svg or [http://inkscape.svn.sourceforge.net/viewvc/*checkout*/inkscape/inkscape/trunk/share/examples/lighting_effects.svg?revision=15523 in SVN]&lt;br /&gt;
&lt;br /&gt;
* The '''feDisplacementMap''' filter primitive displaces the pixels in the first input using the second input as a displacement map, that shows from how far the pixel should come from. Classical examples are whirl and pinch effects, that can be found in most image manipulation programs and even in some screensavers, where this kind off effect is moving around screen, twisting desktop beneath it.&lt;br /&gt;
&lt;br /&gt;
* The '''feFlood''' filter primitive fills its region with a given color and opacity. It can be used as an auxiliary tool, usualy in combination with other filter primitives, in order to facilitate some common color handling operations.&lt;br /&gt;
&lt;br /&gt;
* The '''feImage''' filter primitive allows using external images as part of filtering chain. For example, one could use external image as a displacement map for feDisplacementMap or as a height map for lighting effects. Note that while SVG standard allows using other parts of the SVG file in this filter primitive, the current Inkscape implementation only allows external images.&lt;br /&gt;
&lt;br /&gt;
* The '''feMerge''' filter primitive composites several temporary images inside the filter primitive to a single image. It uses normal alpha compositing for this. This is equivalent to using several feBlend primitives in 'normal' mode or several feComposite primitives in 'over' -mode.&lt;br /&gt;
&lt;br /&gt;
* The '''feMorphology''' filter primitive provides erode and dilate effects, that are common in image manipulation programs. With erode, darker and more transparent areas spread to lighter and more opaque areas, whereas with dilate lighter and more opaque areas spread to darker and more transparent areas. For single-colour objects, this basically means, erode makes the object thinner and dilate makes it thicker.&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, where the shadow is in a slightly different position than the actual object.&lt;br /&gt;
&lt;br /&gt;
* The '''feTurbulence''' filter primitive renders [http://en.wikipedia.org/wiki/Perlin_noise Perlin noise]. This kind of noise is useful in simulating several nature phenomena like clouds, fire and smoke and in generating complex textures like marble or granite.&lt;br /&gt;
&lt;br /&gt;
See also wiki page [[Filter Effects]] for more info on filters in Inkscape in general.&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 (LPE)=&lt;br /&gt;
&lt;br /&gt;
'''Live path effects''' (not to be confused with extension effects or SVG filters) are a new way to &amp;lt;b&amp;gt;non-destructively modify path and shape objects&amp;lt;/b&amp;gt;. Path effects affect the path data of an object but not its style. The original path is preserved and can be edited directly on-canvas, and the path effect applied to it will be updated live. &lt;br /&gt;
&lt;br /&gt;
In this version, we include several path effects that are analogous to the corresponding extension effects (such as Path along Path effect and Pattern along Path that replaces the extension of the same name). The most important advantage of path effects is that they are, indeed, live - you can still edit the original path and the effect will update in real time (unlike the extension effects which were one-time one-way transformations). In the future, we plan to reimplement most if not all of path-changing extensions as live path effects.&lt;br /&gt;
&lt;br /&gt;
Live path effects were developed by Johan Engelen as part of the GSoC 2007.&lt;br /&gt;
&lt;br /&gt;
==Details about operation==&lt;br /&gt;
The following schematic tries to explain how LPE work.&lt;br /&gt;
&lt;br /&gt;
    original style  ------------&amp;gt;  output style&lt;br /&gt;
    original path   --&amp;gt;  LPE  --&amp;gt;  output path&lt;br /&gt;
                          ^&lt;br /&gt;
                          |&lt;br /&gt;
                      parameters&lt;br /&gt;
&lt;br /&gt;
The original style and path are from the path that the effect is applied on. The output is what is visible on screen. What is very important to notice is that &amp;lt;b&amp;gt;output style equals original style&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameters can be paths, numbers, points, text, in principle anything.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Applying effects==&lt;br /&gt;
Path effects are applied through the Path Effects dialog (opened from the Path menu, or by pressing Ctrl+Shift+7. This dialog is also used for controlling the effect's parameters and for removing effects.&lt;br /&gt;
&lt;br /&gt;
When a path with a path effect applied is selected, the statusbar description mentions that, for example &amp;quot;'''Path''' (4 nodes, path effect)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There is a special Paste Path Effect command (Ctrl+7) that can be used to copy effects from one path to another.&lt;br /&gt;
&lt;br /&gt;
==Editing effect parameters==&lt;br /&gt;
When switching to the node edit tool (&amp;lt;b&amp;gt;F2&amp;lt;/b&amp;gt;), the &amp;lt;b&amp;gt;original path&amp;lt;/b&amp;gt; can be edited. The original path is shown as a red helper path. Normal path operations, like simplify, still work.&lt;br /&gt;
&lt;br /&gt;
Some parameters of effects can be edited on-canvas. For example, path parameters can be node-edited, by pressing the &amp;quot;edit on-canvas&amp;quot; button in the Path Effects dialog. &amp;lt;b&amp;gt;Press &amp;quot;7&amp;quot; to cycle through the different on-canvas editable parameters.&amp;lt;/b&amp;gt; This way, one can edit the parameters without opening the Path Effects dialog. The statusbar tells the name of the parameters that is currently being shown.&lt;br /&gt;
&lt;br /&gt;
==Available effects==&lt;br /&gt;
&lt;br /&gt;
===Path along path===&lt;br /&gt;
The &amp;lt;b&amp;gt;Path along Path&amp;lt;/b&amp;gt; effect can curve a path along another path. When this effect is applied to a path, it can be bend along another path (called ''bend path''). With the node edit tool, both the original path and the bend path can be changed &amp;lt;b&amp;gt;on-canvas&amp;lt;/b&amp;gt; and the result is &amp;lt;b&amp;gt;updated live&amp;lt;/b&amp;gt;. This provides a direct equivalent of &amp;quot;vector brushes&amp;quot; or &amp;quot;skeletal strokes&amp;quot; features in other vector editors. &lt;br /&gt;
&lt;br /&gt;
In the effect's control panel in the Path Effects dialog, you can select how many copies of the original path are put along the bend path (either '''single''' or '''repeated''') and whether it is '''stretched''' to fill the bend path. In this dialog you'll also find a button to edit the bend path on-canvas and a button to '''paste''' a new bend path from clipboard. A possible workflow is this: you select and copy the new bend path to the clipboard, then select the path you want to bend, apply the Path along path effect, and paste the bend path with the paste button next to 'bend path'.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-pathalongpath.svg&lt;br /&gt;
&lt;br /&gt;
===Pattern along path===&lt;br /&gt;
The &amp;lt;b&amp;gt;Pattern along Path&amp;lt;/b&amp;gt; effect can curve a path along another path. When this effect is applied to path A (called ''skeleton''), another path B (called ''pattern'') can then be passed as a parameter. The result is that path B is bent along path A. With the node edit tool, path A can be changed &amp;lt;b&amp;gt;on-canvas&amp;lt;/b&amp;gt; and the result is &amp;lt;b&amp;gt;updated live&amp;lt;/b&amp;gt;. This provides a direct equivalent of &amp;quot;vector brushes&amp;quot; or &amp;quot;skeletal strokes&amp;quot; features in other vector editors. &lt;br /&gt;
&lt;br /&gt;
In the effect's control panel in the Path Effects dialog, you can select how many copies of the pattern are attached (either '''single''' or '''repeated''') and whether the pattern is '''stretched''' to fill the skeleton path. You can also choose the pattern for the selected skeleton [either directly or] by '''pasting''' it from clipboard (that is, you select and copy to the clipboard the pattern, then select the skeleton, apply the Path along path effect, and paste the pattern). The '''Scale width''' parameter allows you to change the width of the pattern applied to the path.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-pathalongpath.svg&lt;br /&gt;
&lt;br /&gt;
===Stitch Subcurves===&lt;br /&gt;
The &amp;lt;b&amp;gt;Stitch Subcurves&amp;lt;/b&amp;gt; effect connects points from two subpaths of the path with straight line or curved segments, i.e. the &amp;lt;i&amp;gt;stitches&amp;lt;/i&amp;gt;. It looks a lot like the Effect Lines from Expression 3. The result is also referred to as &amp;quot;String Art&amp;quot;. For some examples of string art, see http://members.shaw.ca/jillbritton/string_art/jbstringart.htm. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;b&amp;gt;shape&amp;lt;/b&amp;gt; of the &amp;lt;b&amp;gt;connecting paths&amp;lt;/b&amp;gt; can controlled by the &amp;lt;b&amp;gt;stroke path&amp;lt;/b&amp;gt; parameter. This could be used to draw 'hair-shaped' connecting paths with sharp end-tips. Other controls include the &amp;lt;b&amp;gt;number of paths&amp;lt;/b&amp;gt;, the variation in spacing between the connecting paths (&amp;lt;b&amp;gt;clustering&amp;lt;/b&amp;gt;) and also whether the start and end points of the stitches should like exactly on the original subcurves or can &amp;lt;b&amp;gt;stray randomly&amp;lt;/b&amp;gt; around them. Finally the width of the stroke path can be varied.&lt;br /&gt;
&lt;br /&gt;
Note that this effect can only be applied to a path with two subpaths in it, hence '&amp;lt;b&amp;gt;sub&amp;lt;/b&amp;gt;curve' in the name. Use Path &amp;gt; Combine to create such a path from two separate paths.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-curvestitch.svg&lt;br /&gt;
&lt;br /&gt;
===Gears===&lt;br /&gt;
The &amp;lt;b&amp;gt;Gears&amp;lt;/b&amp;gt; effect is a toy effect. It generates a chain of interconnected gears from the path that has the effect applied to it. The nodes of the path define the centers of the gears. The first 3 nodes are special; the first defines the start angle of the chain, the second defines the center of the first gear and the third knot specifies the radius of the first gear. That is, to create a chain of 2 gears, you will need a path with 4 nodes; for 3 gears, 5 nodes, and so on. &lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-gears.svg&lt;br /&gt;
&lt;br /&gt;
==Development of new effects==&lt;br /&gt;
One of the goals of the Summer of Code project was to make it easy to create new effects. There is a framework that greatly simplifies effect implementation; very little code is needed to get the effect hooked into Inkscape. This leaves valuable time for the actual effect to be implemented. See the http://wiki.inkscape.org/wiki/index.php/MakingLivePathEffects wiki page for an explanation of how to get started with your own effect!&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 '''Modify Path &amp;gt; Edge 3D''' extension creates black, grey and white paths around a shape, then blurs and clips them for a 3D effect.&lt;br /&gt;
&lt;br /&gt;
* The new '''Generate from Path &amp;gt; Dimensions''' extension creates CAD style dimensions that are basically arrows with lengths equal to selection's bounding box and captions representing length.&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 new '''Color &amp;gt; Randomize''' extension allows you to change the color via hue, saturation and lightness check boxes. This is useful if you want to colorize lots of shapes at the same time.&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;
*The '''Generate Template &amp;gt; Perfect-Bound Cover''' extension creates templates for wraparound covers for perfect-bound books using US size and paper weight measurements.   This extension will resize the document to include the width, height, spine width, and bleed measurements that are provided to the extensions, so it should be the first operation done before designing.&lt;br /&gt;
&lt;br /&gt;
== XSLT effects ==&lt;br /&gt;
&lt;br /&gt;
* '''XSLT''' is now supported for input, output and effect extensions.  This is used to support the XAML file format (both import and export) and the Adobe Illustrator SVG import which removes Adobe's stuff from SVG.&lt;br /&gt;
&lt;br /&gt;
== ImageMagick effects ==&lt;br /&gt;
&lt;br /&gt;
New raster operations available through the effects drop-down menu, powered by the ImageMagick library. For any of these effects to work, you need to have an '''image object selected''' in the drawing. &lt;br /&gt;
&lt;br /&gt;
* '''Adaptive Threshold''' applies adaptive thresholding to the bitmap. Average color of rectangle provided by '''width''' and '''height''' used as threshold value. Use '''offset''' to apply a different threshold than the average.&lt;br /&gt;
&lt;br /&gt;
* '''Add Noise''' adds random noise of certain types to the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Blur''' blurs the bitmap, using '''radius''' as the amount of blur. Higher radius means more blur. (Note that unlike the vector Gaussian blur of objects, this bitmap blur will not extend the edges of the image, so it may appear truncated at the edges.)&lt;br /&gt;
&lt;br /&gt;
* '''Channel''' extracts the specified channel from the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Charcoal''' applies a charcoal drawing style to a bitmap. Radius controls the width (or detail) of charcoal strokes. Higher '''radius''' means lower detail. '''Sigma''': the higher it is, the less defined the charcoal is.&lt;br /&gt;
&lt;br /&gt;
* '''Colorize''' overlays the bitmap with a given color at a given intensity.&lt;br /&gt;
&lt;br /&gt;
* '''Contrast''' lightly enhances the contrast (difference between lights and darks) of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Cycle Colormap''' cycles the colormap of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Despeckle''' reduce the speckle noise in a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Edge''' hilights edges in a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Emboss''' embosses a bitmap, hilighting edges with 3D effect.&lt;br /&gt;
&lt;br /&gt;
* '''Enhance''' enhance a bitmap, minimizing noise.&lt;br /&gt;
&lt;br /&gt;
* '''Equalize''' equalizes a bitmap. Histogram equalization.&lt;br /&gt;
&lt;br /&gt;
* '''Flop''' mirrors a bitmap, reflecting each scanline in the horizontal direction.&lt;br /&gt;
&lt;br /&gt;
* '''Gaussian Blur''' blurs a bitmap, more strongly than regular blur.&lt;br /&gt;
&lt;br /&gt;
* '''Implode''' sucks everything towards the center of the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Level''' scales values falling between the given '''Black Point''' to '''White Point''' range to the full color range.&lt;br /&gt;
&lt;br /&gt;
* '''Level Channel''' acts the same way as level but for only one channel.&lt;br /&gt;
&lt;br /&gt;
* '''Median Filter''' filters a a bitmap by replacing each pixel component with the median color in a circular neighborhood&lt;br /&gt;
&lt;br /&gt;
* '''Modulate''' adjusts the percent hue, saturation, and brightness of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Negate''' takes the inverse of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Normalize''' normalizes a bitmap, expanding color range to the full possible range of color.&lt;br /&gt;
&lt;br /&gt;
* '''Oil Paint''' stylizes a bitmap so that it appears to be painted with oils.&lt;br /&gt;
&lt;br /&gt;
* '''Opacity''' modifies the opacity channel of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Raise''' alters the lightness of the edges of a bitmap to create a raised appearance, much like a frame.&lt;br /&gt;
&lt;br /&gt;
* '''Reduce Noise''' reduces noise in a bitmap by using a noise peak elimination filter.&lt;br /&gt;
&lt;br /&gt;
* '''Shade''' shades a bitmap by simulating a distant light source&lt;br /&gt;
&lt;br /&gt;
* '''Sharpen''' sharpens a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Solarize''' solarizes a bitmap, like overexposing photographic film.&lt;br /&gt;
&lt;br /&gt;
* '''Spread''' randomly spread pixels in a bitmap within the radius of '''amount'''.&lt;br /&gt;
&lt;br /&gt;
* '''Swirl''' swirls the bitmap around the center point.&lt;br /&gt;
&lt;br /&gt;
* '''Threshold''' thresholds a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Unsharpmask''' sharpens a bitmap using an unsharp mask algorithm.&lt;br /&gt;
&lt;br /&gt;
* '''Wave''' alters a bitmap along the sine wave.&lt;br /&gt;
&lt;br /&gt;
These effects are part of the Google Summer of Code 2007, coded by Christopher Brown.&lt;br /&gt;
&lt;br /&gt;
== Misc ==&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;
* A new parameter, '''precision''' is added to the parameter definitions in the [[MakingAnINX|inx file format]], allowing you to set the number of digits in that parameter's spinbutton in the effect UI.&lt;br /&gt;
&lt;br /&gt;
= Stock patterns =&lt;br /&gt;
&lt;br /&gt;
Since a few versions ago, Inkscape supports patterns in fill and stroke. However, up to now the only way to apply a pattern was by creating it in the document using the Object(s) to Pattern command, which wasn't very convenient. Now, if you switch an object's fill or stroke to pattern using the Fill&amp;amp;Stroke dialog, you will get a drop-down list with a number of predefined '''stock patterns''' that you can apply simply by selecting them from the list:&lt;br /&gt;
&lt;br /&gt;
*A selection of plain '''stripes''' differing by the ratio of the stripe width to gap width (for example, the &amp;quot;Stripes 1:2&amp;quot; pattern has gaps twice as wide as stripes), in the range from 4:1 to 1:64. All stripes patterns are in two versions: with black stripes and with white stripes (gaps are always transparent).&lt;br /&gt;
&lt;br /&gt;
*Two '''checkerboard''' patterns with black and white odd squares (even squares are transparent)&lt;br /&gt;
&lt;br /&gt;
*'''Packed circles''': a hexagonal pattern of black circles with transparent gaps.&lt;br /&gt;
&lt;br /&gt;
*'''Polka dots''': a scattering of dots designed to look randomly but evenly distributed so as to mask the regularity of the repeating pattern. There are three size variants of this pattern (small, medium, and large dots) and two color variants (black and white dots).&lt;br /&gt;
&lt;br /&gt;
*'''Wavy''' is a pattern of wavy lines.&lt;br /&gt;
&lt;br /&gt;
*'''Camouflage''' is a green-toned protective pattern such as that used by the military.&lt;br /&gt;
&lt;br /&gt;
*'''Ermine''' is the traditional heraldic pattern representing stylized stoat furs with black tails.&lt;br /&gt;
&lt;br /&gt;
*Three bitmap patterns: '''sand''', '''cloth''', and '''old paint''' are based on seamless photographic tiles and allow you to add some natural texture to your drawing. All of them are grayscale, so you can make objects with these textures semitransparent and overlay them over other colored objects to &amp;quot;texturize&amp;quot; them. &lt;br /&gt;
&lt;br /&gt;
After applying a stock pattern, switch to Node tool to edit the location, scale, and rotation of the pattern via on-canvas handles.&lt;br /&gt;
&lt;br /&gt;
All stock patterns are stored in the file &amp;lt;code&amp;gt;patterns/patterns.svg&amp;lt;/code&amp;gt; in Inkscape's &amp;lt;code&amp;gt;share&amp;lt;/code&amp;gt; directory (typically &amp;lt;code&amp;gt;/usr/share/inkscape&amp;lt;/code&amp;gt; on Linux, &amp;lt;code&amp;gt;&amp;lt;i&amp;gt;inkscape-dir&amp;lt;/i&amp;gt;/share&amp;lt;/code&amp;gt; on Windows). You can add your own patterns to this file or replace it with any other SVG file containing the patterns you need.&lt;br /&gt;
&lt;br /&gt;
=Markers=&lt;br /&gt;
&lt;br /&gt;
* A new command, '''Objects to Marker''', was added to the Object menu. It converts the current selection into a marker. After you do it, the selection is deleted, but the list of markers in the Fill and Stroke dialog, Stroke style tab, now contains the new marker that you can apply to paths. &lt;br /&gt;
&lt;br /&gt;
:* When creating the new marker, Inkscape assumes that the original objects are oriented as they should be on a horizontal path that goes from left to right. For example, if you create a new arrowhead that you plan to use as an end marker, make it point horizontally to the right before converting it to marker. &lt;br /&gt;
&lt;br /&gt;
:* Similar to standard markers, the user-created marker will scale up and down as you change the stroke width. Its initial size (i.e. the size of the object that you have turned into a marker) corresponds to the 1 px stroke.&lt;br /&gt;
&lt;br /&gt;
:* When you create a new marker, Inkscape uses the rotation center of the (first) selected object as the anchor point, i.e. the point which will coincide with the node to which that marker is attached. By default, the rotation center is in the center of the object's bounding box, which means the newly created marker will be centered around its node. If you move the rotation center, for example, to one of the corners of the object, the new marker will touch its node by that corner.&lt;br /&gt;
&lt;br /&gt;
* Several new '''UML markers''' were added to the standard set, including filled and hollow diamonds and triangles.&lt;br /&gt;
&lt;br /&gt;
* '''Master opacity''' did not apply to path markers as it should; this is fixed.&lt;br /&gt;
&lt;br /&gt;
* '''Stock markers''', if used in the document, now appear in the &amp;quot;this document's markers&amp;quot; section at the top of the marker lists in the Fill &amp;amp; Stroke dialog.  Before, any markers with stock IDs (including markers modified by the user) were hidden, making it difficult to work with modified stock markers.&lt;br /&gt;
&lt;br /&gt;
=Color management=&lt;br /&gt;
&lt;br /&gt;
== Calibrated SVG color including CMYK ==&lt;br /&gt;
&lt;br /&gt;
Inkscape now supports color-managed color definitions that use a colorspace other than sRGB (for example Adobe RGB, or calibrated CMYK colors). In the SVG file, this is done using the&lt;br /&gt;
optional &amp;quot;icc-color(...)&amp;quot; paint components as described in section 11.2 &amp;quot;Specifying paint&amp;quot; of the SVG 1.1 specification&lt;br /&gt;
[http://www.w3.org/TR/SVG11/painting.html#SpecifyingPaint]. A fallback sRGB value will be used, for non color-managed workflows. This allows for the use of calibrated color spaces, including using CMYK values that are preserved across applications.&lt;br /&gt;
&lt;br /&gt;
The new CMS color selector tab allows these colors to be edited.&lt;br /&gt;
&lt;br /&gt;
== Display adjustment ==&lt;br /&gt;
&lt;br /&gt;
In Inkscape Preferences, Color Management tab, there's are new options for enabling display adjustment; you can select any calibration profile (an ICC file) suitable for your display. Options for rendering intent can also be chosen.&lt;br /&gt;
&lt;br /&gt;
=== Per-window adjustment ===&lt;br /&gt;
Display adjustment is enabled and disabled per each editing window. This allows for simultaneous viewing of adjusted and unadjusted views of a single document by using multiple windows. There is a toggle at the bottom-right corner of the scrollbars that allows for turning on and off display adjustment. It also will be disabled to provide visible feedback when no profile is set to be available for adjustment.&lt;br /&gt;
&lt;br /&gt;
=== XICC Support ===&lt;br /&gt;
On X11-based systems (i.e. Unix and Mac OSX), use of [[http://www.burtonini.com/computing/x-icc-profiles-spec-latest.html ICC Profiles In X Specification]] (or XICC) can be enabled. Support for version 0.2 of this specification has been implemented. Enabling this option by choosing to retrieve profiles from the display will switch Inkscape to using profiles attached to screens at runtime. These allow display adjustment to be changed on the fly, and to be set and cleared per-monitor. This is especially helpful with more than a single monitor.&lt;br /&gt;
&lt;br /&gt;
Other Open Source software such as [http://www.gimp.org/ GIMP] support XICC. This allows all aware applications to be adjusted by setting a profile only once.&lt;br /&gt;
&lt;br /&gt;
=== Multi-monitor aware ===&lt;br /&gt;
When XICC support is enabled, windows will adjust to the proper profile as they are moved across monitors. Also, as the windows are moved onto monitors with no profile attached, the adjustment toggle will become disabled. When the windows are moved onto screens that do have profiles, the toggle will become enabled.&lt;br /&gt;
&lt;br /&gt;
== Soft Proofing ==&lt;br /&gt;
&lt;br /&gt;
In Inkscape Preferences, Color Management tab, there's a new option for enabling output device preview; you can select any calibration profile (an ICC file) suitable for your output device. Options for rendering intent can also be chosen, along with out of gamut warnings.&lt;br /&gt;
&lt;br /&gt;
== OS support ==&lt;br /&gt;
&lt;br /&gt;
Сolor management is supported in Linux and Mac OS X only at this time.&lt;br /&gt;
&lt;br /&gt;
=Grids, guides, snapping=&lt;br /&gt;
&lt;br /&gt;
==Grids==&lt;br /&gt;
Grids have undergone some big changes under-the-hood. These are the visible changes:&lt;br /&gt;
&lt;br /&gt;
* There is a &amp;lt;b&amp;gt;new 3D/axonometric grid&amp;lt;/b&amp;gt;. It consists of three sets of parallel lines, one vertical and others at angles of +30 and -30 degrees from the horizontal. The angles of these two latter sets and the spacing of the grid are user-settable. &lt;br /&gt;
&lt;br /&gt;
* A new tab in the Document Properties dialog, &amp;lt;b&amp;gt;Grids&amp;lt;/b&amp;gt;, is devoted solely to grids; the former grid/guide tab is renamed &amp;lt;b&amp;gt;Guides&amp;lt;/b&amp;gt; and is now used only for guides. On the Grids page, you can create and manage grids of various types in your document; so far the two types available are Rectangular (default) and Axonometric, but more types may be added in the future.&lt;br /&gt;
&lt;br /&gt;
* More than one grid can be active at the same time:&lt;br /&gt;
:* Each grid can be enabled/disabled separately from the Document Properties dialog.&lt;br /&gt;
&lt;br /&gt;
* For each grid, you can hide it by unchecking the &amp;quot;Visible&amp;quot; checkbox in the grid's tab, or disable snapping to it by unchecking &amp;quot;Enabled&amp;quot;. Note that you can have &amp;quot;Enabled&amp;quot; on and &amp;quot;Visible&amp;quot; off (but not vice versa), in which case you snap to the invisible grid.&lt;br /&gt;
&lt;br /&gt;
* Multiple views on the same document (i.e. different Inkscape windows with the same document loaded) share the same grids, but the grid can be turned on and off for each view separately. For example, you could have a zoomed-out &amp;quot;overview&amp;quot; view without grids showing. 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. &lt;br /&gt;
&lt;br /&gt;
* The rectangular grid now has an option to show dots on gridline intersections instead of solid lines.&lt;br /&gt;
&lt;br /&gt;
From developer perspective:&lt;br /&gt;
* Implementation of new grids is much easier now by subclassing CanvasGrid. 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;
* Grid information is now stored in SVG as a child of sodipodi:namedview. Old files will be converted to this new format automatically.&lt;br /&gt;
* An old bug is fixed: apparently the origin of the document coordinate system used to be set to the origin of the grid. For example, in 0.45.1 and before, specifying a grid origin of (20,20) moved the origin or coordinates to that point, and the grid was still starting at (0,0) in this moved coordinate system. This is now disabled, and the coordinate origin is not affected by grid origin.&lt;br /&gt;
&lt;br /&gt;
==Angled guidelines==&lt;br /&gt;
&lt;br /&gt;
Now, Inkscape also provides angled guidelines! Double click on a guide to set its angle.&lt;br /&gt;
&lt;br /&gt;
*  When dragging a guideline off the rulers close to the end of the ruler, the guideline will automatically be angled. The angle is set depending on the grid.&lt;br /&gt;
** For the rectangular grid, the angle is 45 degrees.&lt;br /&gt;
** For the axonometric grid, the angle is matched to the grid. When '''Ctrl''' is pressed, the angle is perpendicular to the grid lines (useful for aligning gradients).&lt;br /&gt;
&lt;br /&gt;
==Creating guidelines from objects==&lt;br /&gt;
&lt;br /&gt;
* Selected objects can now be converted to guidelines. To do this, either use the menu command '''&amp;quot;Object-&amp;gt;Object to guides&amp;quot;''' or press '''Shift+G''' in Selector tool (this shortcut also works in some other tools, see below). The conversion process recurses into groups, i.e. all objects in the current selection are converted regardless if they are grouped or not.&lt;br /&gt;
&lt;br /&gt;
* Created guides can be quickly deleted by '''Ctrl'''+clicking on them (this is of course not restricted to guides created by the process described above). Note that this only works in Selector and Node tools, i.e., in contexts where guidelines can be manipulated with the mouse. &lt;br /&gt;
&lt;br /&gt;
* '''Paths''' are converted by creating one guide for each straight line segment occurring in the path (whereas curved segments are not taken into account). To make this conveniently accessible, the shortcut '''Shift+G''' works in Pen and Pencil tools, too.&lt;br /&gt;
&lt;br /&gt;
* For all other objects, conversion usually happens by placing the guidelines around the object's bounding box (use the corresponding checkbox in the &amp;quot;Tools&amp;quot; page of Inkscape Preferences to switch between geometric and visual bounding box).&lt;br /&gt;
&lt;br /&gt;
*For '''rectangles''' and '''3D boxes''' there is a special option in their preferences pages (checked by default) which instead allows the guidelines to be placed along the object's edges so that they imitate its true shape. This is especially useful when converting rotated or skewed rectangles (to create guidelines in a special position) or for creating 3D scenes containing other objects than just boxes. The shortcut '''Shift+G''' works in these tools as well.&lt;br /&gt;
&lt;br /&gt;
==Snapping==&lt;br /&gt;
&lt;br /&gt;
* Snapping has been implemented or improved for:&lt;br /&gt;
&lt;br /&gt;
:* '''Newly created shapes'''&lt;br /&gt;
&lt;br /&gt;
:* '''Skewing''' of objects&lt;br /&gt;
&lt;br /&gt;
:* '''Handles''' of objects, incl. '''gradients'''&lt;br /&gt;
&lt;br /&gt;
:* '''Images''', '''ellipses''', and '''clones'''&lt;br /&gt;
&lt;br /&gt;
:* Text boxes, which snap to '''text baselines''' again&lt;br /&gt;
&lt;br /&gt;
:* Objects, for which snapping now optionally considers the '''rotation center'''&lt;br /&gt;
&lt;br /&gt;
:* Objects, which now allow for '''constrained snapping'''&lt;br /&gt;
&lt;br /&gt;
:* '''Guides''', which now snap while dragging them&lt;br /&gt;
&lt;br /&gt;
:* '''Axonometric grids'''&lt;br /&gt;
&lt;br /&gt;
:* '''Angled guide lines'''&lt;br /&gt;
&lt;br /&gt;
:* '''Bounding boxes''', of which now all four corners snap&lt;br /&gt;
&lt;br /&gt;
* Other snapping fixes and improvements include:&lt;br /&gt;
&lt;br /&gt;
:* It is now possible to snap to '''intersections''' of e.g. gridlines with guidelines, and of line segments. &lt;br /&gt;
&lt;br /&gt;
:* The '''snapping preferences dialog''' has been restyled to make it more intuitive. &lt;br /&gt;
&lt;br /&gt;
:* Inkscape now has a global snapping toggle, which has been added to the view-menu and is accessible through a shortcut&lt;br /&gt;
&lt;br /&gt;
:* Inkscape now allows for controlling the snapping per grid when multiple grids are being used&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 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 time it takes to snap to objects using the selector tool has been reduced significantly.&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;
:* Only nodes at '''non-smooth parts''' of a path now snap.&lt;br /&gt;
&lt;br /&gt;
:* The confusing &amp;quot;Default transformations origin&amp;quot; option has been 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;
&lt;br /&gt;
=Import/Export=&lt;br /&gt;
&lt;br /&gt;
==PDF and AI import==&lt;br /&gt;
&lt;br /&gt;
In this version, Inkscape can natively (i.e. without any additional software) import PDF files and the newer PDF-based Adobe Illustrator files (starting from AI version 9.0). &lt;br /&gt;
&lt;br /&gt;
'''Implemented features''': The new import extension can import '''paths''', '''text''', '''clippaths''', '''masked or non-masked images''', and '''softmasks'''. It supports '''pattern fills''' (XStep and YStep attributes are ignored) as well as '''linear and radial gradients''' (only those using sampled or exponential functions). '''Gradient meshes''' are imported, but they get converted to groups of small tiles (flat-colored paths) that approximate the mesh; the user can adjust the precision of this approximation. &lt;br /&gt;
&lt;br /&gt;
'''PDF import settings''': After opening a PDF or AI document, the PDF Import Settings dialog shows up. Here you can select:&lt;br /&gt;
&lt;br /&gt;
* the '''page''' to be imported from a multipage PDF;&lt;br /&gt;
&lt;br /&gt;
* the overall '''clip region''' (which can be none or set to any of the PDF boxes, e.g. the crop box, the media box, the trim box, etc.);&lt;br /&gt;
&lt;br /&gt;
* the '''precision''' for the approximation of '''gradient meshes'''; note that setting this too high may result in a huge SVG file and slow performance when importing files with gradient meshes;&lt;br /&gt;
&lt;br /&gt;
* a checkbox controlling whether the '''images''' should be '''embedded''' into the resulting SVG document or saved on the current path;&lt;br /&gt;
&lt;br /&gt;
* a '''preview''' of the selected page (shown if poppler-cairo is present on the system or if the selected page has a thumbnail embedded into the PDF 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;
The native PDF/AI importer is based on the poppler library and was implemented by Miklós Erdélyi as part of the Google Summer of Code 2007.&lt;br /&gt;
&lt;br /&gt;
==PDF export==&lt;br /&gt;
&lt;br /&gt;
* A new cairo-based PDF exporter has been added to Inkscape (marked as &amp;quot;Cairo PDF&amp;quot; in the export format list). Inkscape 0.46 can export shapes, strokes, transparency, gradients, patterns, text, and images correctly to cairo. Clipping paths and masks are known to be faulty or missing. Also, unlike the old PDF exporter, the cairo-based PDF export produces compressed PDF files that are reasonably compact. 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, but it is highly recommended to use at least '''cairo 1.5.2''' for quality PDF export.&lt;br /&gt;
&lt;br /&gt;
* A new cairo-based PostScript exporter has been added (marked as &amp;quot;Cairo PS&amp;quot; in the export format list). The cairo PS backend is not as mature as the PDF backend. It rasterizes a lot of its content. Text output does not work where it works with the PDF backend.&lt;br /&gt;
&lt;br /&gt;
==CDR (CorelDraw) import==&lt;br /&gt;
&lt;br /&gt;
Inkscape can use [http://www.sk1project.org/modules.php?name=Products&amp;amp;product=uniconvertor UniConvertor] if it's installed on your system to import documents in CDR format (CorelDraw). This feature is Unix-only at this time and requires that you have Python and UniConvertor installed. As of UniConvertor 1.1.1, versions from 7 to X4 of the CDR format are supported, and text objects are not converted.&lt;br /&gt;
&lt;br /&gt;
==XAML import/export==&lt;br /&gt;
&lt;br /&gt;
* Inkscape can import vector graphics portions of XAML documents, as well as export its documents to XAML.&lt;br /&gt;
&lt;br /&gt;
==Adobe Illustrator SVG clean import==&lt;br /&gt;
&lt;br /&gt;
* Using this new import filter, Inkscape can open an SVG document removing any elements and attributes in the namespaces that Adobe Illustrator uses for its stuff.  This will clean out everything except the actual SVG content.&lt;br /&gt;
&lt;br /&gt;
==WMF import==&lt;br /&gt;
&lt;br /&gt;
Now Inkscape uses UniConvertor for opening WMF files, which results in three noticable changes:&lt;br /&gt;
&lt;br /&gt;
# imported files are editable now&lt;br /&gt;
# known rendering issues are resolved&lt;br /&gt;
# WMF import works on all platforms where UniConvertor works (including Windows)&lt;br /&gt;
&lt;br /&gt;
Text objects are not supported by UniConvertor as of version 1.1.1.&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;
== Open Clip Art Library import and export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape features a preliminary support for importing drawings from [http://openclipart.org/ Open Clip Art Library].&lt;br /&gt;
&lt;br /&gt;
After specifying account details in Preferences dialog (Import/Export tab) use 'File &amp;amp;gt; Import From Open Clip Art Library' command to open a dialog, then search for tags and pick one of the results to merge this found drawing into your document.&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;
* --query-all produces a comma delimited listing of all objects in the document, with their x, y, height, and width values.&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;
=User interface=&lt;br /&gt;
&lt;br /&gt;
== Dockable dialogs ==&lt;br /&gt;
&lt;br /&gt;
Inkscape's dialog handling has been reworked in this release to allow dialogs to behave like '''dockable panels'''. The dock area that holds the user's dialogs is located right of the canvas.&lt;br /&gt;
&lt;br /&gt;
Dialogs placed in the dock can easily be rearranged, resized, stacked in groups or iconified. Furthermore, a dialog can be dragged of the dock to become a floating dock in itself&amp;amp;mdash;this allows other dialogs to be dragged and dropped on it to form a floating group of dialogs.&lt;br /&gt;
&lt;br /&gt;
The old dialog behavior (used in releases before 0.46) has been preserved as an option, and if it is preferred, one can select it under ''Windows'' &amp;gt; ''Dialog behavior'' in the Inkscape preferences dialog.&lt;br /&gt;
&lt;br /&gt;
====Known issues====&lt;br /&gt;
&lt;br /&gt;
* Some of Inkscape's dialogs are yet to be adapted to allow docking, these include the &amp;quot;Text and Font&amp;quot; dialog, the &amp;quot;Tiled clones&amp;quot; dialog, the &amp;quot;XML editor&amp;quot; and the &amp;quot;Object properties&amp;quot; dialog.&lt;br /&gt;
&lt;br /&gt;
* Floating dialogs that are closed and later reopened might reappear on positions slightly different than their original ones.&lt;br /&gt;
&lt;br /&gt;
* Resizing dialogs that are placed in the dock can be a bit slow and quirky.&lt;br /&gt;
&lt;br /&gt;
* The total height of content the dock will in most cases remain the same when a dialog is closed/iconified, i.e. the remaining docked dialogs will fill the hole. This might not the desired behavior.&lt;br /&gt;
&lt;br /&gt;
====Settings====&lt;br /&gt;
&lt;br /&gt;
Three settings that control dockable dialogs behavior are present in the &amp;lt;code&amp;gt;preferences.xml&amp;lt;/code&amp;gt; file under a &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; group called &amp;lt;code&amp;gt;dock&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cancenterdock&amp;lt;/code&amp;gt;: controls if dialogs are allowed to be stacked on top of each other to be ordered in groups. Valid values are &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;dockbarstyle&amp;lt;/code&amp;gt;: controls what information is shown for iconified dockable dialogs. &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; = icons only, &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; = text only, &amp;lt;code&amp;gt;&amp;quot;2&amp;quot;&amp;lt;/code&amp;gt; = both icons and text. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;switcherstyle&amp;lt;/code&amp;gt;: controls what information is shown for grouped dockable dialogs. &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; = icons only, &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; = text only, &amp;lt;code&amp;gt;&amp;quot;2&amp;quot;&amp;lt;/code&amp;gt; = both icons and text.&lt;br /&gt;
&lt;br /&gt;
== Toolbars ==&lt;br /&gt;
&lt;br /&gt;
'''Main toolbar''' on the left can now optionally use '''smaller buttons'''. With the several new tools added in this version, this may help users with small screens where the toolbar otherwise may not fit vertically. The toggle is on the Misc tab of the Inkscape Preferences dialog.&lt;br /&gt;
&lt;br /&gt;
Switching to stock GTK+ toolbars. This allows for the main window to be made narrower, with toolbar items flowing into a popup menu as it is resized.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Swatches panel, color drag-and-drop ==&lt;br /&gt;
&lt;br /&gt;
* Right-clicking a color swatch now opens a context menu which allows you to apply the color to the fill or stroke of selection.&lt;br /&gt;
&lt;br /&gt;
* Dragging colors from the color palette has been fixed and improved:&lt;br /&gt;
&lt;br /&gt;
:* Now the dropped color is applied to '''the object on which you drop it''', regardless of whether that object is selected or not. This means you can change the color of only one object from selection without having to select it separately. (If you want to assign color to the entire selection, just click on the color swatch on the palette, not drag it.)&lt;br /&gt;
&lt;br /&gt;
:* If an object has stroke and you '''drop the color over stroke''', the color is applied to stroke and not fill. (Another way to always apply color to stroke is to '''Shift+drag''' it.)&lt;br /&gt;
&lt;br /&gt;
:* When gradient handles are active (e.g. in Gradient or Node tools), you can '''drop a color onto the gradient line''' to create a new gradient mid stop with this color, or '''drop a color onto an existing stop''' to recolor that stop.&lt;br /&gt;
&lt;br /&gt;
:* A new submenu has been added to affect the shape of the displayed swatches, allowing their preferred size to be made thinner or wider. Among other things, this allows for more to be seen on screen at once when made thinner.&lt;br /&gt;
&lt;br /&gt;
:* Sizing of the swatches has been corrected to be properly progressive, and now go form smaller to larger on all platforms.&lt;br /&gt;
&lt;br /&gt;
:* Space reserved for the scrollbar is no longer kept with smaller palettes shown in the bottom of the main UI. This allows for more working space when palettes with not many entries are selected at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
==Color gestures==&lt;br /&gt;
&lt;br /&gt;
A new method for quick and precise adjustment of colors is added in this version: color gestures. It works on the selected objects by grabbing the '''fill or stroke color swatch''' in the '''selected style indicator''' (on the left of the statusbar) and dragging it in various directions as described below. Note that this only works when the swatch displays a '''flat color'''; it does not work for a swatch showing &amp;quot;None&amp;quot;, &amp;quot;N/A&amp;quot;, or displaying a gradient (although you can select one or more gradient stops in Gradient tool and color-adjust them by color gestures just as you would do for objects). Color gestures can work on '''fill''' or '''stroke''', depending on which swatch in the selected color indicator you drag.&lt;br /&gt;
&lt;br /&gt;
Color gestures work in '''HSL''' color space. Dragging without any keyboard modifiers adjusts the '''hue''' channel, dragging with '''Shift''' adjusts '''saturation''', and dragging with '''Ctrl''' adjusts '''lightness'''.&lt;br /&gt;
&lt;br /&gt;
The adjustment is done by '''&amp;quot;rotating&amp;quot;''' the color swatch away from the original direction which is assumed to be '''NE at 45 degrees''' (i.e. from&lt;br /&gt;
the swatch diagonally into the document window). Once you click and drag the color swatch, imagine a diagonal line going from the point where you clicked in the NE direction, across the entire Inkscape window. By dragging '''below or to the right''' of that line, you decrease the corresponding color channel, to the minimum at the lower edge of the window; by dragging it above or to the left, you increase it, to the maximum at the left edge of the window. If you hover your mouse exactly over the 45 degrees line, the change will be zero.&lt;br /&gt;
&lt;br /&gt;
Note that you can easily vary the '''precision''' of your adjustment. If you drag close enough to the swatch, each small movement results in a big change of the color. If you need a finer adjustment, just drag farther away from the swatch, towards the center of the Inkscape window or even to its upper right corner, where minute movements will produce very small changes in the color. In fact, this method gives you more color precision than even the color wheel in the Fill and Stroke dialog, unless you expand that dialog to fill the entire screen which is rarely practical.&lt;br /&gt;
&lt;br /&gt;
The mouse '''cursor''' changes when you're doing color gestures, reflecting the channel currently adjusted and indicating the directions for increasing and decreasing the value. Also, watch the '''statusbar''' which will indicate, as you drag, the channel you are adjusting, the original value of that channel, the new value, and the difference. &lt;br /&gt;
&lt;br /&gt;
You can '''switch channels while you drag'''. That is, you don't need to &lt;br /&gt;
drag it again and again from the swatch if you want to adjust all three channels - you can do it all in one drag, by pressing and releasing Ctrl and Shift as necessary. Note that when you change the keyboard modifiers during drag, the position of the zero-change line is temporarily changed to go through the current mouse position; this is done so that there are no sudden changes in color if you are switching modifiers away from the original 45-degree line.&lt;br /&gt;
&lt;br /&gt;
The '''Alt''' modifier is special. Pressing Alt means &amp;quot;do nothing&amp;quot;; this allows you to move the mouse, without releasing, to a more convenient place from where to continue tweaking the color after letting go of Alt. As with the other modifiers, releasing Alt temporarily redefines the zero-change axis to go through the point where Alt was released. For example, imagine  you made your color darker by Ctrl+dragging towards the bottom edge of the window and you now need to make it less saturated. You cannot however Shift+drag it any lower because there's just not enough room for that. In that situation, without releasing the mouse, Alt+drag it upwards to a convenient spot and then Shift+drag downwards as needed. Also, you can start dragging from the swatch with Alt pressed to avoid changing the color while you take a more convenient position for adjustments.&lt;br /&gt;
&lt;br /&gt;
For example, you can select a green rectangle and first turn it into greenish-blue by dragging away from the Fill swatch and slightly above the 45 degrees line; then, without releasing the mouse, press Ctrl and drag a bit to the right to darken the color; then press Shift, release Ctrl, and adjust saturation. You can press or release Ctrl and Shift as many times as necessary during a single drag; when you are finally satisfied with your color, release the mouse to commit the change.&lt;br /&gt;
&lt;br /&gt;
Apart from precise adjustments, you can use color gestures to very quickly perform some common color transformations:&lt;br /&gt;
&lt;br /&gt;
* Ctrl+drag the swatch to the right and down to paint all selected objects black.&lt;br /&gt;
&lt;br /&gt;
* Ctrl+drag the swatch upwards and to the left to paint all selected objects white.&lt;br /&gt;
&lt;br /&gt;
* Shift+drag the swatch to the right and down to desaturate the color of selected objects.&lt;br /&gt;
&lt;br /&gt;
* Shift+drag the swatch upwards and to the left to maximize saturation of the color of selected objects. &lt;br /&gt;
&lt;br /&gt;
Note that when several objects or gradient stops with different colors are selected, the selected style indicator shows their '''averaged''' color. If you adjust that color by gesturing, the changed color will be assigned back to all selected objects/stops, in effect eliminating any difference between them. If you want to adjust many different-colored objects preserving their relative differences, use the color modes of the Tweak tool or color adjustment extension effects.&lt;br /&gt;
&lt;br /&gt;
This new technique requires some getting used to, but once you get the idea it is quite convenient, fast, and precise.&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;
== Preserving zoom/view of reverted documents ==&lt;br /&gt;
&lt;br /&gt;
When reverting files to their previously saved state, the current zoom factor/panning is now retained (as opposed to reverted to the saved state, too, as it was the case before). This less interrupts the workflow when one is working on some detail in the drawing.&lt;br /&gt;
&lt;br /&gt;
== Bounding box option moved ==&lt;br /&gt;
&lt;br /&gt;
The preferences option to select between &amp;quot;visual&amp;quot; and &amp;quot;geometric&amp;quot; bounding box was moved in Inkscape Preferences dialog from the &amp;quot;Selector&amp;quot; page to &amp;quot;Tools&amp;quot; page (since it applies more globally than just in Selector tool).&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;
== Using other keys in place of Alt ==&lt;br /&gt;
&lt;br /&gt;
* Many Linux users have found the use of '''Alt-drag''' and '''Alt+click''' in Inkscape problematical because this shortcut is often captured by window managers. In 0.46, instead of disabling of the window manager shortcut as suggested in [http://wiki.inkscape.org/wiki/index.php/FAQ#How_to_make_Alt.2Bclick_and_Alt.2Bdrag_work_on_Linux.3F the FAQ], you can change a setting in your preferences.xml file called &amp;lt;code&amp;gt;mapalt&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; group. This numerical value ranges from 1 to 5; 1 indicates no change, any other value refers to some special key on a keyboard, such as '''Alt Gr''', the '''Windows''' key, etc. The specific mapping of these values to the keys on your keyboard can be viewed and/or editied by '''xkeycaps''', available from [http://www.jwz.org/xkeycaps www.jwz.org]. The value associated with a particular key is shown in that program at the top of the screen beside the word &amp;quot;Modifiers&amp;quot; when the mouse is held over a key on the main display.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keyboard profiles ==&lt;br /&gt;
&lt;br /&gt;
New profiles have been added:&lt;br /&gt;
&lt;br /&gt;
* '''Corel DRAW X4''' (corel-draw-x4.xml)&lt;br /&gt;
* '''Zoner Draw 5''' (zoner-draw.xml)&lt;br /&gt;
* '''ACD Systems Canvas 11''' (acd-canvas.xml)&lt;br /&gt;
&lt;br /&gt;
Also, profile for Adobe Illustrator has been fixed and includes bindings for tools now.&lt;br /&gt;
&lt;br /&gt;
(To enable a profile, copy it into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; in the same directory, overwriting the old file. To restore the default Inkscape set, copy &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
=Other changes and 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;
* On the '''Scale''' tab of the '''Transform dialog''', the numbers now show the current size of selection, not size increment as before. Correspondingly, with the % unit chosen, you see 100% displayed, and to scale it up twice, you enter 200%, not 100% as before. This is a more intuitive behavior and it's more consistent with how the W/H controls work in the Selector tool. &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;
* The '''Shift''' tab of the '''Tile Clones''' dialog has two new options: '''Cumulate''': when checked, each tile is shifted by the normal amount plus the cumulative shifts of all previous tiles. This is useful when placing tiles that are being scaled by a uniform amount. '''Exlude tile''': when checked, the tile width or height is not automatically included in calculating the tile's shift. This is useful when using the dialog to place clones on a circle or spiral (rather than using a shift of -100%). It is also useful when positioning tiles using the '''Exponent''' parameter.&lt;br /&gt;
&lt;br /&gt;
* The '''Scale''' tab of the '''Tile Clones''' dialog has a new parameter: '''Base''' that allows placing tiles along a logarithmic spiral (as often found in nature). If the value is '''0''', the parameter is not used. Use a value less than one for a converging spiral and a value of greater than one for a diverging spiral. The actual scale is calculated as '''base''' raised to the nominal '''scale''' power.&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;
* 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;
* 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;
* Preferences have been added for setting the default metadata and licenses, so this information can be automatically filled in with new documents.&lt;br /&gt;
&lt;br /&gt;
* The built-in '''Potrace''' tracing engine is upgraded to version '''1.8''' with some minor bugs fixed.&lt;br /&gt;
&lt;br /&gt;
* File dialog windows (open/save) now have an '''Enable preview''' checkbox which allows you to disable the preview pane.&lt;br /&gt;
&lt;br /&gt;
* In the Calligraphic pen controls, the toggle button to enable tablet pressure sensitivity is moved to the Width control, and the button for tilt sensitivity is moved to Angle, to better reflect what parameters these toggles affect.&lt;br /&gt;
&lt;br /&gt;
* In Node and Gradient tools, using '''Tab/Shift+Tab''' to select next/previous node or gradient handle scrolls the canvas if necessary to show the selection. &lt;br /&gt;
&lt;br /&gt;
* The option '''Import bitmap as &amp;lt;image&amp;gt;''' is removed; it was added several versions ago to allow optionally importing images as rectangles with image pattern, to make clipping the images easier. Now that you can easily use clipping paths, as well as convert any image to rectangle with pattern with Alt+I, this option is not really necessary and removed to reduce confusion. Bitmaps are always imported into SVG as an &amp;lt;image&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
* Support has been added for stock patterns, in the same way that stock markers were already supported. Adding patterns to share/patterns/patterns.svg, and giving them a inkscape-stockid attribute as found on the examples already there will make them available in all Inkscape sessions from the patterns tab of the fill &amp;amp; stroke dialog.&lt;br /&gt;
&lt;br /&gt;
* New '''fontforge_glyph.svg''' template is added for font designers who draw glyphs in Inkscape and import them into FontFoge. It is 1000x1000px large and has a horizontal guide at 200px to mark border for descenders.&lt;br /&gt;
&lt;br /&gt;
* Save dialogs have been modified to clarify that they '''Save as SVG''', so people using Inkscape to edit PDF, EPS, and other file formats will be less confused at the default behavior when saving files.&lt;br /&gt;
&lt;br /&gt;
= Mac OS X specific improvements =&lt;br /&gt;
&lt;br /&gt;
* Inkscape 0.46 is officially released as a '''Universal''' (i386/ppc) binary for both OS X '''10.4 Tiger''' and '''10.5 Leopard'''.&lt;br /&gt;
&lt;br /&gt;
* Please note:  Leopard users should update X11.app to at least version 2.1.4.  X11.app updates can be downloaded from the [http://xquartz.macosforge.org/ Xquartz project].&lt;br /&gt;
&lt;br /&gt;
* Inkscape application bundle on '''Mac OS X''' now has the possibility to contain '''pre-compiled python modules''' (e.g. lxml, numpy, etc.) and to use them without requiring any work from the user. Since Python itself is shipped with Mac OS X, the user only has to drag and drop Inkscape on its hard-drive and all the extensions will be '''functional immediately'''.&lt;br /&gt;
&lt;br /&gt;
* A GTK theme is now included in Inkscape.app bundle on OS X. If the user does not have any personal customization (e.g. in a .gtkrc-2.0 file) this theme is used. It reflects the OS X settings for &amp;quot;Appearance&amp;quot; and &amp;quot;Highlight Color&amp;quot; set in System Preferences &amp;gt; Appearance.&lt;br /&gt;
&lt;br /&gt;
* If Inkscape.app is already open and a file is dropped on the Inkscape dock icon, or an Inkscape file is double-clicked in the Finder, that document will now be opened, rather than this action being ignored, as happened in 0.45 and prior.&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;
* A fix in the blur rendering code made '''exporting blurred objects to bitmap''' much faster and fixed the disappearing of blurred objects in exported bitmaps which happened for large objects in 0.45.  The same fix got rid of the rendering artefacts that sometimes appeared on blurred objects during scrolling. &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;
* On Windows, '''file opening/saving dialogs''' can no longer sink under the main editor window (they now have the inkscape window set correctly as their parent window).&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;
* '''Creative Commons Public Domain Declaration URI''' points to the 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;
* On Windows, the Inkscape uninstaller deleted all files under the install directory. This could lead to removing user-created files, or even other program files not related to inkscape if the install directory was C:\Program Files. The new uninstaller '''tracks all installed files and asks for confirmation before deleting any other files'''. However, installation and uninstallation process is now slower.&lt;br /&gt;
&lt;br /&gt;
* Clones were wrongly unlinked when their original was moved to another layer; fixed.&lt;br /&gt;
&lt;br /&gt;
* Previous versions had a problem on '''Windows Vista''' where selected menu item was invisible. Now our Windows builds use a newer version of GTK library which fixes this problem.&lt;br /&gt;
&lt;br /&gt;
* Duplicating empty text objects that have just been created no longer crashes. Also, the XML editor crash related to empty text objects is fixed. A downside is that the SVG will become cluttered with empty text objects as they are no longer automatically removed. A better fix for the problem is planned.&lt;br /&gt;
&lt;br /&gt;
* In Tile Clones dialog, the PMG symmetry group was created incorrectly; it is now fixed.&lt;br /&gt;
&lt;br /&gt;
* Serious usability issues with the font size field in the Text tool's controls bar have been fixed.&lt;br /&gt;
&lt;br /&gt;
* The rulers are now correctly scaled and will align nicely with document coordinates, with or without the scrollbars displayed.&lt;br /&gt;
&lt;br /&gt;
=Known Issues=&lt;br /&gt;
&lt;br /&gt;
* (LP: #180890) Blend modes do not work correctly over transparent    backgrounds. A workaround is to place an opaque rectangle underneath the bottom-most layer.&lt;br /&gt;
* (LP # 202704) Blur and other filters are very slow when applied to an object with transform= attribute with rotation or skew. To avoid this slowdown, either do not rotate/skew objects you use with filters, or apply filters only to paths (but not shapes to text) because paths, by default, get no transform= attribute when you rotate or skew them.&lt;br /&gt;
* Windows printing has two known issues. In both cases the workaround is to print to bitmap (Print -&amp;gt; Rendering -&amp;gt; Bitmap).&lt;br /&gt;
** (LP # 205732) Blurred objects are misaligned when printing.&lt;br /&gt;
** (LP # 208217) Masked objects disappear from the page when printing.&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>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.46&amp;diff=27114</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=27114"/>
		<updated>2008-04-02T00:41:50Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Mac OS X specific improvements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Inkscape 0.46=&lt;br /&gt;
&lt;br /&gt;
Highlights 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;
* Live path effects&lt;br /&gt;
&lt;br /&gt;
* Color management&lt;br /&gt;
&lt;br /&gt;
* New SVG filters and UI&lt;br /&gt;
&lt;br /&gt;
* Native PDF and AI import&lt;br /&gt;
&lt;br /&gt;
* XAML import/export&lt;br /&gt;
&lt;br /&gt;
* Open Clip Art Library integration (import/export)&lt;br /&gt;
&lt;br /&gt;
* Stock patterns&lt;br /&gt;
&lt;br /&gt;
* Bitmap editing extension effects&lt;br /&gt;
&lt;br /&gt;
* Full on-canvas gradient editing&lt;br /&gt;
&lt;br /&gt;
* Engraver's Toolbox in the Calligraphic tool&lt;br /&gt;
&lt;br /&gt;
* Touch selection&lt;br /&gt;
&lt;br /&gt;
* Dockable dialogs&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;
* &amp;quot;3D&amp;quot; / axonometric grid&lt;br /&gt;
&lt;br /&gt;
* Angled guidelines&lt;br /&gt;
&lt;br /&gt;
* Conversion of objects to guidelines&lt;br /&gt;
&lt;br /&gt;
* Significant speed and interactivity improvements&lt;br /&gt;
&lt;br /&gt;
* Hundreds of smaller features and bugfixes&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 in order from top to bottom. Now the redraw always starts '''at your mouse cursor location''' and proceed upwards and downwards from it, so that the area near the cursor is always redrawn first. This significantly improves program's responsiveness in some situations. For example, when you are node-editing part of a complex path, the entire path needs to be redrawn on each change, but now this redraw starts from the point you're working on. Moreover, the redraw is interruptible, so each mouse movement starts new redraw from the mouse cursor area. As a result, during such operations those parts that you're working on redraw often and feel snappy and responsive, while areas further away may lag behind more.&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;
:'''Exporting drawings with blur''' was particularly slow in 0.45; some files could take hours to export. Now this is fixed, in part by the faster algorithm mentioned above and in part by a bugfix in the export code. Now even the quite complex files with large blurs export at high resolution in at most a few minutes.  &lt;br /&gt;
&lt;br /&gt;
* Minor improvements have been made to gradient rendering performance.&lt;br /&gt;
&lt;br /&gt;
* '''Dragging handles and nodes''' as well as '''dragging and transforming objects''' by mouse became more responsive, so that working in complex drawings and especially editing complex paths is noticeably easier. In particular, this fixes the annoying latency issue where a node or a handle could follow mouse cursor even after you release mouse button after a drag. &lt;br /&gt;
&lt;br /&gt;
* '''Moving objects, nodes, and gradient handles by cursor keys''' as well as '''scaling and rotating objects from keyboard''' and '''zooming by keys''' are much more responsive when working with complex slow-rendering objects. Now, if you press and hold a key, your selection/zoom level will quickly jump to the final position instead of going through all the intermediate steps as before. &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;
:* '''Redrawing the newly exposed parts of the canvas''' after scrolling, especially diagonal scrolling, is now faster because only the exposed areas are redrawn; before, this often resulted in the entire screen being redrawn which was much slower.&lt;br /&gt;
&lt;br /&gt;
:* Previously, if you started 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;
* Better responsiveness and more visual feedback in user interface: &lt;br /&gt;
&lt;br /&gt;
:*When you zoom, the '''zoom control''' on the right end of the statusbar now updates immediately, not after screen redraw as before. &lt;br /&gt;
&lt;br /&gt;
:*Many potentially slow commands (Save, Simplify, Combine, Break Apart and others) now display a '''busy cursor''' and flash a message in the statusbar (e.g. &amp;quot;Saving document...&amp;quot;) while they work. &lt;br /&gt;
&lt;br /&gt;
:*The '''statusbar messages''' displayed while you're drawing a shape or a path in Pen tool do not lag behind the mouse movements.&lt;br /&gt;
&lt;br /&gt;
* '''Combine''' and '''Convert to paths''' commands are now orders of magnitude faster when applied to a selection with hundreds or thousands of objects.&lt;br /&gt;
&lt;br /&gt;
* The time it takes to '''snap to objects''' using the selector tool has been reduced dramatically, which is most noticeable for snapping to complex paths.&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;
===How it works===&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 (or use the auto gap closing parameter, see below).&lt;br /&gt;
&lt;br /&gt;
===Style===&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). As in all other tools, the '''style swatch''' on the far right of the Controls bar shows the style that will be used for the next fill object you create.&lt;br /&gt;
&lt;br /&gt;
===Controls===&lt;br /&gt;
&lt;br /&gt;
In the tool's '''Controls bar''':&lt;br /&gt;
&lt;br /&gt;
* Paint Bucket's perceptual fill can use either all visible colors or specific color channels. Using the '''Fill by''' drop-down list, you can restrict the fill algorithm to one 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;
* The '''Threshold''' (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;
* Using the '''Grow/shrink by''' parameter, 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 much the same as the Outset and Inset path commands, except it's done automatically after every fill.&lt;br /&gt;
&lt;br /&gt;
* With the '''Close gaps''' parameter, you can make the Paint Bucket tool  ignore 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 (close gaps up to 2 pixels in size)&lt;br /&gt;
** Medium (4 pixels)&lt;br /&gt;
** Large (6 pixels)&lt;br /&gt;
:Note that setting this parameter to other than None may slow down noticeably the filling of large areas.&lt;br /&gt;
&lt;br /&gt;
===Shortcuts===&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 drawings which largely blurs the&lt;br /&gt;
distinction between vector and raster editing. Instead of meticulously selecting some&lt;br /&gt;
objects and then performing an action on the selection, you can now select ''all''&lt;br /&gt;
objects (or all objects you are interested in) and apply the Tweak tool's brush to&lt;br /&gt;
smoothly and naturally change the shape or style of only those objects (or parts&lt;br /&gt;
thereof) ''that the brush touches''.&lt;br /&gt;
&lt;br /&gt;
The area of the tool's action - its ''brush'' - is marked by an orange-colored circular&lt;br /&gt;
outline that moves with your mouse cursor. 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.&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 mode or paint it by Color Paint&lt;br /&gt;
mode. You can also apply it to groups of objects; it will go into groups and act on&lt;br /&gt;
individual objects inside groups. If you're trying to use it without anything selected,&lt;br /&gt;
it will remind you by a statusbar message to select some objects.&lt;br /&gt;
&lt;br /&gt;
===Width===&lt;br /&gt;
&lt;br /&gt;
The width of the tool's brush, in the range from 1 to 100, can be changed by the&lt;br /&gt;
'''Width''' control in the tool's controls bar above the canvas. You can also change&lt;br /&gt;
width by '''Left''' and '''Right''' arrow keys (same as in the Calligraphy tool) at any&lt;br /&gt;
time (including during action) as well as '''Home''' and '''End'''. Also, as in Calligraphy&lt;br /&gt;
tool, the visible width of the brush is independent of zoom; simply zooming in or out is&lt;br /&gt;
often easier than adjusting the width if you want to cover a smaller or larger area of&lt;br /&gt;
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, also in the&lt;br /&gt;
range from 1 to 100. You can also change width by '''Up''' and '''Down''' arrow keys at&lt;br /&gt;
any time (including during action).&lt;br /&gt;
&lt;br /&gt;
If you have a pressure-sensitive tablet and your &amp;quot;Use pressure&amp;quot; button on the right-hand&lt;br /&gt;
end of the controls bar is on, then the force will also depend on how hard you actually&lt;br /&gt;
press your pen into your tablet, changing in the range from zero to whatever you set in&lt;br /&gt;
the Force control. If all you have is a mouse, then the force will be constant but still&lt;br /&gt;
settable by the Force control. &lt;br /&gt;
&lt;br /&gt;
===Path editing modes===&lt;br /&gt;
&lt;br /&gt;
The Tweak tool has a number of '''modes''', selectable by toggle buttons in the tool's&lt;br /&gt;
Controls bar and by keyboard shortcuts. Some of these modes change the shapes of &lt;br /&gt;
paths while others affect the colors of objects. All these modes share the Width and&lt;br /&gt;
Force controls but otherwise are quite different. Let's look at the path editing modes&lt;br /&gt;
first.&lt;br /&gt;
&lt;br /&gt;
Unlike the Node tool, to edit paths with the Tweak tool you don't need to worry about&lt;br /&gt;
where the nodes of a path are and how to manipulate them. You just apply the tool's&lt;br /&gt;
brush to any point, and the selected paths at that point will reshape smoothly and&lt;br /&gt;
naturally - as if made of soft jelly - regardless of where its nodes lie. If applied to&lt;br /&gt;
a shape or text object, the tool converts them to paths automatically.&lt;br /&gt;
&lt;br /&gt;
While not very useful for technical drawings, tweaking paths will be indispensable for&lt;br /&gt;
artistic uses of Inkscape - cartoons, drawings, sketches, anime, etc. This new&lt;br /&gt;
functionality is somewhat similar to the tools such as &amp;quot;Pucker&amp;quot; and &amp;quot;Bloat&amp;quot; in the&lt;br /&gt;
latest versions of Adobe Illustrator. &lt;br /&gt;
&lt;br /&gt;
There are currently six path editing modes in the Tweak tool: '''Push''', '''Shrink''',&lt;br /&gt;
'''Grow''', '''Attract''', '''Repel''', 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 '''Shrink''' and '''Grow''' 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 (Shrink) or outwards (Grow). 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 Calligraphy pen 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 Shrink action where you want the lines to become thinner (and the hatching to become lighter), up until total disappearance. If you press hard, shrinking works as an eraser, so you can easily clean the strokes' ends to make them thin, sharp, and uniform. Conversely, applying Grow makes strokes wider (i.e. the hatching becomes darker).&lt;br /&gt;
&lt;br /&gt;
:Of course, shrinking and growing are useful not only for calligraphic strokes. Same as with Push, with Shrink and Grow you can '''sculpt''' any path, spawning smooth treacle-like appendages with Grow and carving holes with Shrink. Unlike the &amp;quot;node sculpting&amp;quot; mode in the Node tool, however, this does not require adding new nodes to the shape.&lt;br /&gt;
&lt;br /&gt;
* The '''Attract''' and '''Repel''' modes work by moving each affected point on a path towards (Attract) or from (Repel) the cursor point. In some cases this may look similar to Shrink and Grow, but the difference is that shrinking/growing moves paths perpendicularly to the path in each point, whereas attracting/repelling moves them to or from the cursor regardless of the path shape. These modes are similar to the Pinch effect in AI; you can use them for various central-symmetric distortions in parts of your paths.&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, shrinking, or growing 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;
See the screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.46-tweak-path.png] for a few examples of using the path editing modes of the Tweak tool.&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;
inflates 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 inflating 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;
====Known problems====&lt;br /&gt;
&lt;br /&gt;
Known problems with the path editing modes in Tweak tool:&lt;br /&gt;
&lt;br /&gt;
# they don't work on open paths (an open path becomes closed if you tweak it);&lt;br /&gt;
# they are rather slow; &lt;br /&gt;
# they quickly eat memory; and &lt;br /&gt;
# they are sometimes buggy - thin calligraphic strokes may suddenly disappear or change their shape drastically as you're shrinking or growing them.&lt;br /&gt;
&lt;br /&gt;
For (4), 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;
===Color editing modes===&lt;br /&gt;
&lt;br /&gt;
The '''Color Paint''' and '''Color Jitter''' modes, unlike the path editing modes,&lt;br /&gt;
change the colors of objects instead of their shapes. Yet they share enough common&lt;br /&gt;
features with the path editing modes to be part of the same tool: These modes also use&lt;br /&gt;
a circular soft-edged brush controlled by the Width and Force parameters on the Controls&lt;br /&gt;
bar and affected by the pen pressure (if you have a pressure-sensitive tablet).&lt;br /&gt;
&lt;br /&gt;
* '''Color Paint''' applies the style of the tool to the selected objects under the brush. The style of the tool is visible in the style swatch at the rightmost end of the tool's control bar; it can be changed by clicking on the color palette or by any other style assignment command, such as Fill and Stroke dialog. ('''Note''': unlike all other tools, in Tweak tool in Color Paint mode you cannot assign style directly to selected objects; any style-setting command changes the tool's style instead.)&lt;br /&gt;
&lt;br /&gt;
:The fill from the tool's style applies to the fills of the painted objects, and the stroke applies to the strokes. If the tool's style has no fill or no stroke, it won't affect fills or strokes, correspondingly. For example, if you want to color the fills of objects blue but leave their strokes untouched, assign blue fill to the tool's style (just click blue on the palette) but set its stroke to None (middle-click the Stroke swatch in the statusbar). Similarly, master opacity in the tool's style affects master opacities of the touched objects (if the O channel is on, see below).&lt;br /&gt;
&lt;br /&gt;
:This mode allows you to literally paint over objects, shifting their colors towards the target style of the tool. For example, if you paint with yellow fill over a blue-filled object, the object will become greenish blue, then green, then yellowish green, and end up being exactly the yellow color you're painting with. This speed of this gradual transition depends on both Force parameter and pen pressure; also, objects touched by the periphery of the brush are less affected than those hit by the brush center. Overall, using this tool is very similar to a soft brush in a raster editor such as Gimp or Photoshop.&lt;br /&gt;
&lt;br /&gt;
* '''Color Jitter''' mode does not apply any color, but instead jitters (randomizes) the colors of the objects it touches. The force of the action determines how strong is the randomization, i.e. how far the colors deviate from the original values. This mode does not use the tool's style.&lt;br /&gt;
&lt;br /&gt;
Both modes work on flat fills and gradients; for gradients, the tool takes into account not only the position of the entire object with gradient, but also the position of each gradient stop relative to the brush. This means that, for example, you can change the blue color only in an object filled with blue-red gradient simply by painting over its blue end with a brush small enough to not touch the red. (Note that color tweaking does not create gradients on objects that used flat color before, but only adjusts existing gradients in the drawing.)&lt;br /&gt;
&lt;br /&gt;
See the screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.46-tweak-color.png] for a few examples of using the color editing modes of the Tweak tool.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Channels====&lt;br /&gt;
&lt;br /&gt;
Color Paint and Color Jitter honor the '''Channels''' control. This control comprises&lt;br /&gt;
the four buttons: '''H''', '''S''', '''L''', and '''O''', which allow you to turn on and off&lt;br /&gt;
the tool's action on the object's hue, saturation, lightness, and opacity,&lt;br /&gt;
correspondingly. For example, if you want to raise the saturation of some part of your&lt;br /&gt;
drawing without changing the hue, select some maximum-saturation color (e.g. pure red)&lt;br /&gt;
and turn off all Channels buttons except S. Similarly, you can replace the hues without&lt;br /&gt;
affecting saturation or lightness (only H pressed), or lighten/darken all colors without&lt;br /&gt;
changing their hues and saturation (only L pressed). Pressing O allows you to apply the&lt;br /&gt;
master opacity from the tool's style to the master opacity of objects (but not fill or&lt;br /&gt;
stroke opacity).&lt;br /&gt;
&lt;br /&gt;
====Usage notes====&lt;br /&gt;
&lt;br /&gt;
Color painting with Tweak tool is similar, but not exactly analogous to bitmap&lt;br /&gt;
painting. Even though the tool itself works as a soft brush, it still applies its color&lt;br /&gt;
to vector objects, which behave as vector objects usually do. For example, if you want&lt;br /&gt;
to change the tint of the face in your drawing, and if a hand in the drawing is part of&lt;br /&gt;
the same object as the face, that hand will change its tint too even if it's located far&lt;br /&gt;
from the point you are painting. (We foresee a &amp;quot;fracture&amp;quot; command in one of the next&lt;br /&gt;
versions of Inkscape which will help you turn a monolithic object into a mosaic of small&lt;br /&gt;
fragments that will be then easy to paint with Tweak tool.)  Still, even with this&lt;br /&gt;
limitation, color painting is a novel way of dealing with vector drawings which allows&lt;br /&gt;
you to quickly and intuitively make adjustments which would be awkward and slow with&lt;br /&gt;
traditional approach.&lt;br /&gt;
&lt;br /&gt;
Drawings containing patterns or scatterings of small independent objects are best suited&lt;br /&gt;
for color painting with Tweak tool. Examples include:&lt;br /&gt;
&lt;br /&gt;
* freehand drawings with Calligraphy pen, consisting of many separate strokes;&lt;br /&gt;
&lt;br /&gt;
* gradient meshes imported from Adobe Illustrator files (Inkscape renders these meshes as lattices of small polygons; while there's no direct support for gradient meshes in Inkscape yet, color painting on such lattices is almost as good);&lt;br /&gt;
&lt;br /&gt;
* text converted to paths and with Break Apart command applied so that each letter is a separate path;&lt;br /&gt;
&lt;br /&gt;
* patterns made with the Tile Clones command; note that you need to unset the fill and/or stroke on the original object and use the Color tab to assign some initial color to the clones - this will make them paintable with the Tweak tool without unlinking.&lt;br /&gt;
&lt;br /&gt;
Moreover, color tweaking can be useful for compositions with a few objects or even for&lt;br /&gt;
single objects. Unlike all other color selection methods, painting with the Tweak tool&lt;br /&gt;
implements the ''color mixing'' metaphor which is much more familiar to traditional&lt;br /&gt;
artists than RGB sliders or even the color wheel. For example, start with a rectagle of&lt;br /&gt;
pure blue color; then, pick different colors by Color Paint and apply light touches with&lt;br /&gt;
minimum Force and minimum pen pressure: add a little green, a little brown, a little&lt;br /&gt;
yellow, etc. until you have the exact hue you need. Similarly, you can whiten or blacken&lt;br /&gt;
any hue by admixing white or black.&lt;br /&gt;
&lt;br /&gt;
You can also use color tweaking to add a tint, darken/lighten, saturate/desaturate, or&lt;br /&gt;
color jitter your entire drawing. Just select all in all layers, zoom out, choose a&lt;br /&gt;
large brush width so it covers all of the drawing, and apply a little color tweaking&lt;br /&gt;
(with minimum Force) that will therefore affect all visible objects.&lt;br /&gt;
&lt;br /&gt;
===Keyboard shortcuts===&lt;br /&gt;
&lt;br /&gt;
* '''W''', '''Shift+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+S''': switch to the Shrink mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+G''': switch to the Grow mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+A''': switch to the Attract mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+E''': switch to the Repel mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+R''': switch to the Roughen mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+C''': switch to the Color Paint mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+J''': switch to the Color Jitter 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 Shrink (while Ctrl is down)&lt;br /&gt;
&lt;br /&gt;
* '''Shift+Ctrl+mouse drag''': temporarily switch to Grow (while Shift+Ctrl is down)&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 create drawings or objects that appear three-dimensional. The new '''3D box tool''' helps you create such drawings by automating the most common operation: creating a box in a given 3D 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; Shift+drag without releasing the mouse button to extrude in Z direction.&lt;br /&gt;
&lt;br /&gt;
* Adjust any of its 3 dimensions by handles. The 4 handles on the front X/Y side resize it, the four ones on the back X/Y side expand/contract the box in Z direction. With Shift, the functions of handles on front and back sides are reversed. With Ctrl, the side-resizing handles snap to the coordinate axes or diagonals.&lt;br /&gt;
&lt;br /&gt;
* Move a 3D box &amp;quot;in perspective&amp;quot; by dragging its center; without modifiers, movement occurs within the XY-plane (press Ctrl to constrain the movement to the directions of the coordinate axes or diagonals), with Shift the box moves parallel to the Z-axis.&lt;br /&gt;
&lt;br /&gt;
* Adjust the vanishing points of a perspective by dragging them on the canvas (see below) or toggling their states; all boxes sharing this perspective are affected by a vanishing point move. &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;
In SVG, a 3D box is represented as a '''group''' (svg:g) with a special extension attribute (in Inkscape's 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;
===Keyboard shortcuts===&lt;br /&gt;
&lt;br /&gt;
* '''X''', '''Shift+F4''': switch to the 3D box tool&lt;br /&gt;
&lt;br /&gt;
* The various kinds of parentheses, namely '''[''' ''']''', '''(''' ''')''', '''{''' '''}''', can be used to rotate infinite (i.e., parallel) perspective lines in X-, Y-, and Z-direction, respectively. Closing parentheses rotate clockwise and opening parentheses rotate counterclockwise. The angle of rotation is taken from the preferences. Pressing '''Alt''' reduces the amount of rotation to 1 screen pixel.&lt;br /&gt;
&lt;br /&gt;
* When the 3D box tool is active, '''Shift+X''', '''Shift+Y''', and '''Shift+Z''' toggle perspective lines in the corresponding direction between &amp;quot;converging&amp;quot; and &amp;quot;parallel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Gradient Tool==&lt;br /&gt;
===Selecting multiple stops===&lt;br /&gt;
'''More than one gradient stop''' can be selected at a time. Shortcuts for working with multiple stop selections are generally modeled on the Node tool. &lt;br /&gt;
* Add a stop to the selected stops by '''Shift+click'''.&lt;br /&gt;
* Press '''Ctrl+A''' to select all stops in the selected objects.&lt;br /&gt;
* '''Shift+drag''' around stops to add them to selection.&lt;br /&gt;
Multiple selected stops:&lt;br /&gt;
*Can be moved together by '''mouse drag''' or by '''arrow keys'''. For example, creating a linear gradient, then press Ctrl+A to select all stops and use arrow keys to move the entire gradient as a whole.&lt;br /&gt;
*Can be deleted at the same time by pressing '''Del'''.&lt;br /&gt;
An always up-to-date description of the current handle selection is provided in the statusbar in the Gradient tool, including the number of selected handles (and the type of the single selected handle), as well as the total number of handles and selected objects.&lt;br /&gt;
&lt;br /&gt;
===Editing intermediate stops===&lt;br /&gt;
'''Intermediate stops''' in gradients can be added, deleted, and edited on canvas (previously this was only possible in the Gradient Editor dialog).&lt;br /&gt;
*Stops can be added by '''double clicking''' or by '''Ctrl+Alt+Click''' on the gradient line. Also, you can '''drag-and-drop''' a color from the palette onto the gradient line to create a new stop with this color. Dropping a color on an existing stop changes the color of that stop.&lt;br /&gt;
*When two or more adjacent stops are selected, pressing '''Ins''' adds stops in the middles of all selected stop intervals.&lt;br /&gt;
*Intermediate stops can be '''mousedrag'''ged or moved by '''arrow keys''' along their gradient line, within the limits of the adjacent unselected stops (or end handles). &lt;br /&gt;
:*Dragging with '''Ctrl''' moves the selected stops snapping them to 1/10 fractions of the available range.&lt;br /&gt;
:*Dragging with '''Alt''' moves the selected stops depending on how close each one is to the stop being dragged, using a smooth bell-like curve similar to the node sculpting feature in Node tool. This makes it easy to approximate different gradient profiles; for example, if you have a two-stop gradient that you want to shape according to a curve profile, select both ends of the gradient, press '''Ins''' a few times to add a number of intermediate nodes, then '''Alt+drag''' a node in the middle to smoothly profile the gradient.&lt;br /&gt;
*Stops can also be moved by '''arrow keys''' with all the regular modifiers ('''Shift''' for 10x movement, '''Alt''' for pixel-size movement at the current zoom, '''Shift+Alt''' for 10 pixels movement at the current zoom).&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;
*Pressing '''Ctrl+L''' with some intermediate stops selected attempts to ''simplify'' the selected portion of the gradient, removing those stops that can be removed without too much change in the way the gradient looks. In particular, new stops created by double-clicking or pressing Ins initially do not change the appearance of the gradient, so if you press Ctrl+L, all redundant stops that weren't moved or repainted since creation will be deleted.&lt;br /&gt;
&lt;br /&gt;
===Style of gradient stops===&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;
*When one or more gradient stops are selected, using the Copy command ('''Ctrl+C''') copies to the clipboard the style (color and opacity) of the selected stop or the averaged style of several selected stops, not the entire object with gradient as before. This means you can now copy/paste style between stops: select the source stop(s), copy, select the destination stop(s), paste style ('''Ctrl+Shift+V'''). With several selected stops, this also allows you to easily average their colors and opacities by copying them and pasting the style back onto them. (After that, redundant gradient stops can be removed by simplification with '''Ctrl+L''').&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;
===Automatic duplication of gradients===&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). The Duplicate button is therefore removed. &lt;br /&gt;
&lt;br /&gt;
However, to accommodate the needs of users who have relied on sharing the same gradient definition across objects, this behavior can be optionally suppressed. The '''Prevent sharing of gradient definitions''' checkbox on the Misc tab of Inkscape Preferences is by default checked; if you uncheck it, Inkscape does not automatically copy gradient definitions for new objects, which means that copy/pasting, duplicating, pasting style, and explicit assignment of a gradient to an object via the Gradient tool controls results in a shared gradient definition, so that changing the colors or mid-stop positions of the gradient on one object (but not changing the coordinates of the end handles) affects all other objects that share the same definition.&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), as well as to '''-1/3''', '''-1/2''', '''-1''', '''-2''', '''-3''', etc. This way you can, for example, mirror any object around one of the edges of its box. (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;
&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;
* As a long-requested feature, two entry fields are added to the toolbar which allow precise editing of the coordinates of selected nodes.&lt;br /&gt;
&lt;br /&gt;
==Rectangle Tool==&lt;br /&gt;
&lt;br /&gt;
* '''Ctrl+dragging''' now also allows the creation of rectangles with sides constrained to the '''golden ratio''' (approx. 1 : 1.618034), not only integer ratios.&lt;br /&gt;
&lt;br /&gt;
==Ellipse Tool==&lt;br /&gt;
&lt;br /&gt;
* It is now easy to create ellipses/circles passing through particular points. Normally, the starting and ending point of the mouse drag mark the corners of the '''bounding box'''. Now the '''Alt''' modifier can be used to enlarge the ellipse so that its '''circumference''' passes through these two points.&lt;br /&gt;
&lt;br /&gt;
* '''Ctrl+Alt+drag''' is an exception from this rule. It creates a perfect circle whose diameter is defined by the starting and ending point of the drag.&lt;br /&gt;
&lt;br /&gt;
==Pen/Pencil Tools==&lt;br /&gt;
&lt;br /&gt;
These tools can now create '''single dots''' by '''Ctrl+click''' on the canvas. This creates a small circle filled with the current stroke color. The radius can be set in the Preferences of the respective tools (it is specified as a multiple of the current stroke width). '''Shift+Ctrl+click''' creates a dot twice the specified size, and '''Alt+Ctrl+click''' varies the size of the created dots randomly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Dropper Tool==&lt;br /&gt;
&lt;br /&gt;
The shortcut 'D' is now used to &amp;lt;i&amp;gt;toggle&amp;lt;/i&amp;gt; (not just switch to) the dropper tool - much like space is used to toggle the selector tool. That is, pressing 'D' a second time switches back to the tool used before.&lt;br /&gt;
&lt;br /&gt;
=SVG features=&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;
==SVG 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 '''feColorMatrix''' filter primitive applies a matrix transformation to colour of each rendered pixel. This allows for effects like turning object to grayscale, modifying colour saturation and changing colour hue.&lt;br /&gt;
&lt;br /&gt;
* The '''feComposite''' filter primitive composites two images using one of the [http://en.wikipedia.org/wiki/Porter-Duff Porter-Duff blending modes] (described in paper Compositing Digital Images by T. Porter and T. Duff, published in SIGGRAPH '84 Conference Proceedings, Association for Computing Machinery, Volume 18, Number 3, July 1984) or the aritmetic mode described in SVG standard. Porter-Duff blending modes are essentially logical operations between the images. For example, xor mode shows the areas, where either one of the objects is, but not the areas where both of the objects are. Arithmetic mode lets you specify coefficients k1-k4 for blending equation (result colour) = k1 * (first input colour) * (second input colour) + k2 * (first input colour) + k3 * (second input colour) + k4.&lt;br /&gt;
&lt;br /&gt;
* The '''feConvolveMatrix''' lets you specify a [http://en.wikipedia.org/wiki/Convolution Convolution] to be applied on the image. Common effects created using convolution matrices are blur, sharpening, embossing and edge detection. There's a fairly good explanation and some example matrices at [http://www.gamedev.net/reference/programming/features/imageproc/page2.asp www.gamedev.net/reference/programming/features/imageproc/page2.asp]. Note that while gaussian blur can be created using this filter primitive, the special gaussian blur primitive is faster and resolution-independent.&lt;br /&gt;
&lt;br /&gt;
* Filter primitives '''feDiffuseLighting''' and '''feSpecularLighting''' create lighting maps for the object in input image. SVG doesn't have concept of third dimension, so these filters use alpha channel of input image as a height map: the more opaque given point in input image is, the nearer spectator it is considered to be. There exists an example for using these in Inkscape distribution, in share/examples/lighting_effects.svg or [http://inkscape.svn.sourceforge.net/viewvc/*checkout*/inkscape/inkscape/trunk/share/examples/lighting_effects.svg?revision=15523 in SVN]&lt;br /&gt;
&lt;br /&gt;
* The '''feDisplacementMap''' filter primitive displaces the pixels in the first input using the second input as a displacement map, that shows from how far the pixel should come from. Classical examples are whirl and pinch effects, that can be found in most image manipulation programs and even in some screensavers, where this kind off effect is moving around screen, twisting desktop beneath it.&lt;br /&gt;
&lt;br /&gt;
* The '''feFlood''' filter primitive fills its region with a given color and opacity. It can be used as an auxiliary tool, usualy in combination with other filter primitives, in order to facilitate some common color handling operations.&lt;br /&gt;
&lt;br /&gt;
* The '''feImage''' filter primitive allows using external images as part of filtering chain. For example, one could use external image as a displacement map for feDisplacementMap or as a height map for lighting effects. Note that while SVG standard allows using other parts of the SVG file in this filter primitive, the current Inkscape implementation only allows external images.&lt;br /&gt;
&lt;br /&gt;
* The '''feMerge''' filter primitive composites several temporary images inside the filter primitive to a single image. It uses normal alpha compositing for this. This is equivalent to using several feBlend primitives in 'normal' mode or several feComposite primitives in 'over' -mode.&lt;br /&gt;
&lt;br /&gt;
* The '''feMorphology''' filter primitive provides erode and dilate effects, that are common in image manipulation programs. With erode, darker and more transparent areas spread to lighter and more opaque areas, whereas with dilate lighter and more opaque areas spread to darker and more transparent areas. For single-colour objects, this basically means, erode makes the object thinner and dilate makes it thicker.&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, where the shadow is in a slightly different position than the actual object.&lt;br /&gt;
&lt;br /&gt;
* The '''feTurbulence''' filter primitive renders [http://en.wikipedia.org/wiki/Perlin_noise Perlin noise]. This kind of noise is useful in simulating several nature phenomena like clouds, fire and smoke and in generating complex textures like marble or granite.&lt;br /&gt;
&lt;br /&gt;
See also wiki page [[Filter Effects]] for more info on filters in Inkscape in general.&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 (LPE)=&lt;br /&gt;
&lt;br /&gt;
'''Live path effects''' (not to be confused with extension effects or SVG filters) are a new way to &amp;lt;b&amp;gt;non-destructively modify path and shape objects&amp;lt;/b&amp;gt;. Path effects affect the path data of an object but not its style. The original path is preserved and can be edited directly on-canvas, and the path effect applied to it will be updated live. &lt;br /&gt;
&lt;br /&gt;
In this version, we include several path effects that are analogous to the corresponding extension effects (such as Path along Path effect and Pattern along Path that replaces the extension of the same name). The most important advantage of path effects is that they are, indeed, live - you can still edit the original path and the effect will update in real time (unlike the extension effects which were one-time one-way transformations). In the future, we plan to reimplement most if not all of path-changing extensions as live path effects.&lt;br /&gt;
&lt;br /&gt;
Live path effects were developed by Johan Engelen as part of the GSoC 2007.&lt;br /&gt;
&lt;br /&gt;
==Details about operation==&lt;br /&gt;
The following schematic tries to explain how LPE work.&lt;br /&gt;
&lt;br /&gt;
    original style  ------------&amp;gt;  output style&lt;br /&gt;
    original path   --&amp;gt;  LPE  --&amp;gt;  output path&lt;br /&gt;
                          ^&lt;br /&gt;
                          |&lt;br /&gt;
                      parameters&lt;br /&gt;
&lt;br /&gt;
The original style and path are from the path that the effect is applied on. The output is what is visible on screen. What is very important to notice is that &amp;lt;b&amp;gt;output style equals original style&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameters can be paths, numbers, points, text, in principle anything.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Applying effects==&lt;br /&gt;
Path effects are applied through the Path Effects dialog (opened from the Path menu, or by pressing Ctrl+Shift+7. This dialog is also used for controlling the effect's parameters and for removing effects.&lt;br /&gt;
&lt;br /&gt;
When a path with a path effect applied is selected, the statusbar description mentions that, for example &amp;quot;'''Path''' (4 nodes, path effect)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There is a special Paste Path Effect command (Ctrl+7) that can be used to copy effects from one path to another.&lt;br /&gt;
&lt;br /&gt;
==Editing effect parameters==&lt;br /&gt;
When switching to the node edit tool (&amp;lt;b&amp;gt;F2&amp;lt;/b&amp;gt;), the &amp;lt;b&amp;gt;original path&amp;lt;/b&amp;gt; can be edited. The original path is shown as a red helper path. Normal path operations, like simplify, still work.&lt;br /&gt;
&lt;br /&gt;
Some parameters of effects can be edited on-canvas. For example, path parameters can be node-edited, by pressing the &amp;quot;edit on-canvas&amp;quot; button in the Path Effects dialog. &amp;lt;b&amp;gt;Press &amp;quot;7&amp;quot; to cycle through the different on-canvas editable parameters.&amp;lt;/b&amp;gt; This way, one can edit the parameters without opening the Path Effects dialog. The statusbar tells the name of the parameters that is currently being shown.&lt;br /&gt;
&lt;br /&gt;
==Available effects==&lt;br /&gt;
&lt;br /&gt;
===Path along path===&lt;br /&gt;
The &amp;lt;b&amp;gt;Path along Path&amp;lt;/b&amp;gt; effect can curve a path along another path. When this effect is applied to a path, it can be bend along another path (called ''bend path''). With the node edit tool, both the original path and the bend path can be changed &amp;lt;b&amp;gt;on-canvas&amp;lt;/b&amp;gt; and the result is &amp;lt;b&amp;gt;updated live&amp;lt;/b&amp;gt;. This provides a direct equivalent of &amp;quot;vector brushes&amp;quot; or &amp;quot;skeletal strokes&amp;quot; features in other vector editors. &lt;br /&gt;
&lt;br /&gt;
In the effect's control panel in the Path Effects dialog, you can select how many copies of the original path are put along the bend path (either '''single''' or '''repeated''') and whether it is '''stretched''' to fill the bend path. In this dialog you'll also find a button to edit the bend path on-canvas and a button to '''paste''' a new bend path from clipboard. A possible workflow is this: you select and copy the new bend path to the clipboard, then select the path you want to bend, apply the Path along path effect, and paste the bend path with the paste button next to 'bend path'.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-pathalongpath.svg&lt;br /&gt;
&lt;br /&gt;
===Pattern along path===&lt;br /&gt;
The &amp;lt;b&amp;gt;Pattern along Path&amp;lt;/b&amp;gt; effect can curve a path along another path. When this effect is applied to path A (called ''skeleton''), another path B (called ''pattern'') can then be passed as a parameter. The result is that path B is bent along path A. With the node edit tool, path A can be changed &amp;lt;b&amp;gt;on-canvas&amp;lt;/b&amp;gt; and the result is &amp;lt;b&amp;gt;updated live&amp;lt;/b&amp;gt;. This provides a direct equivalent of &amp;quot;vector brushes&amp;quot; or &amp;quot;skeletal strokes&amp;quot; features in other vector editors. &lt;br /&gt;
&lt;br /&gt;
In the effect's control panel in the Path Effects dialog, you can select how many copies of the pattern are attached (either '''single''' or '''repeated''') and whether the pattern is '''stretched''' to fill the skeleton path. You can also choose the pattern for the selected skeleton [either directly or] by '''pasting''' it from clipboard (that is, you select and copy to the clipboard the pattern, then select the skeleton, apply the Path along path effect, and paste the pattern). The '''Scale width''' parameter allows you to change the width of the pattern applied to the path.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-pathalongpath.svg&lt;br /&gt;
&lt;br /&gt;
===Stitch Subcurves===&lt;br /&gt;
The &amp;lt;b&amp;gt;Stitch Subcurves&amp;lt;/b&amp;gt; effect connects points from two subpaths of the path with straight line or curved segments, i.e. the &amp;lt;i&amp;gt;stitches&amp;lt;/i&amp;gt;. It looks a lot like the Effect Lines from Expression 3. The result is also referred to as &amp;quot;String Art&amp;quot;. For some examples of string art, see http://members.shaw.ca/jillbritton/string_art/jbstringart.htm. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;b&amp;gt;shape&amp;lt;/b&amp;gt; of the &amp;lt;b&amp;gt;connecting paths&amp;lt;/b&amp;gt; can controlled by the &amp;lt;b&amp;gt;stroke path&amp;lt;/b&amp;gt; parameter. This could be used to draw 'hair-shaped' connecting paths with sharp end-tips. Other controls include the &amp;lt;b&amp;gt;number of paths&amp;lt;/b&amp;gt;, the variation in spacing between the connecting paths (&amp;lt;b&amp;gt;clustering&amp;lt;/b&amp;gt;) and also whether the start and end points of the stitches should like exactly on the original subcurves or can &amp;lt;b&amp;gt;stray randomly&amp;lt;/b&amp;gt; around them. Finally the width of the stroke path can be varied.&lt;br /&gt;
&lt;br /&gt;
Note that this effect can only be applied to a path with two subpaths in it, hence '&amp;lt;b&amp;gt;sub&amp;lt;/b&amp;gt;curve' in the name. Use Path &amp;gt; Combine to create such a path from two separate paths.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-curvestitch.svg&lt;br /&gt;
&lt;br /&gt;
===Gears===&lt;br /&gt;
The &amp;lt;b&amp;gt;Gears&amp;lt;/b&amp;gt; effect is a toy effect. It generates a chain of interconnected gears from the path that has the effect applied to it. The nodes of the path define the centers of the gears. The first 3 nodes are special; the first defines the start angle of the chain, the second defines the center of the first gear and the third knot specifies the radius of the first gear. That is, to create a chain of 2 gears, you will need a path with 4 nodes; for 3 gears, 5 nodes, and so on. &lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-gears.svg&lt;br /&gt;
&lt;br /&gt;
==Development of new effects==&lt;br /&gt;
One of the goals of the Summer of Code project was to make it easy to create new effects. There is a framework that greatly simplifies effect implementation; very little code is needed to get the effect hooked into Inkscape. This leaves valuable time for the actual effect to be implemented. See the http://wiki.inkscape.org/wiki/index.php/MakingLivePathEffects wiki page for an explanation of how to get started with your own effect!&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 '''Modify Path &amp;gt; Edge 3D''' extension creates black, grey and white paths around a shape, then blurs and clips them for a 3D effect.&lt;br /&gt;
&lt;br /&gt;
* The new '''Generate from Path &amp;gt; Dimensions''' extension creates CAD style dimensions that are basically arrows with lengths equal to selection's bounding box and captions representing length.&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 new '''Color &amp;gt; Randomize''' extension allows you to change the color via hue, saturation and lightness check boxes. This is useful if you want to colorize lots of shapes at the same time.&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;
*The '''Generate Template &amp;gt; Perfect-Bound Cover''' extension creates templates for wraparound covers for perfect-bound books using US size and paper weight measurements.   This extension will resize the document to include the width, height, spine width, and bleed measurements that are provided to the extensions, so it should be the first operation done before designing.&lt;br /&gt;
&lt;br /&gt;
== XSLT effects ==&lt;br /&gt;
&lt;br /&gt;
* '''XSLT''' is now supported for input, output and effect extensions.  This is used to support the XAML file format (both import and export) and the Adobe Illustrator SVG import which removes Adobe's stuff from SVG.&lt;br /&gt;
&lt;br /&gt;
== ImageMagick effects ==&lt;br /&gt;
&lt;br /&gt;
New raster operations available through the effects drop-down menu, powered by the ImageMagick library. For any of these effects to work, you need to have an '''image object selected''' in the drawing. &lt;br /&gt;
&lt;br /&gt;
* '''Adaptive Threshold''' applies adaptive thresholding to the bitmap. Average color of rectangle provided by '''width''' and '''height''' used as threshold value. Use '''offset''' to apply a different threshold than the average.&lt;br /&gt;
&lt;br /&gt;
* '''Add Noise''' adds random noise of certain types to the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Blur''' blurs the bitmap, using '''radius''' as the amount of blur. Higher radius means more blur. (Note that unlike the vector Gaussian blur of objects, this bitmap blur will not extend the edges of the image, so it may appear truncated at the edges.)&lt;br /&gt;
&lt;br /&gt;
* '''Channel''' extracts the specified channel from the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Charcoal''' applies a charcoal drawing style to a bitmap. Radius controls the width (or detail) of charcoal strokes. Higher '''radius''' means lower detail. '''Sigma''': the higher it is, the less defined the charcoal is.&lt;br /&gt;
&lt;br /&gt;
* '''Colorize''' overlays the bitmap with a given color at a given intensity.&lt;br /&gt;
&lt;br /&gt;
* '''Contrast''' lightly enhances the contrast (difference between lights and darks) of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Cycle Colormap''' cycles the colormap of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Despeckle''' reduce the speckle noise in a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Edge''' hilights edges in a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Emboss''' embosses a bitmap, hilighting edges with 3D effect.&lt;br /&gt;
&lt;br /&gt;
* '''Enhance''' enhance a bitmap, minimizing noise.&lt;br /&gt;
&lt;br /&gt;
* '''Equalize''' equalizes a bitmap. Histogram equalization.&lt;br /&gt;
&lt;br /&gt;
* '''Flop''' mirrors a bitmap, reflecting each scanline in the horizontal direction.&lt;br /&gt;
&lt;br /&gt;
* '''Gaussian Blur''' blurs a bitmap, more strongly than regular blur.&lt;br /&gt;
&lt;br /&gt;
* '''Implode''' sucks everything towards the center of the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Level''' scales values falling between the given '''Black Point''' to '''White Point''' range to the full color range.&lt;br /&gt;
&lt;br /&gt;
* '''Level Channel''' acts the same way as level but for only one channel.&lt;br /&gt;
&lt;br /&gt;
* '''Median Filter''' filters a a bitmap by replacing each pixel component with the median color in a circular neighborhood&lt;br /&gt;
&lt;br /&gt;
* '''Modulate''' adjusts the percent hue, saturation, and brightness of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Negate''' takes the inverse of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Normalize''' normalizes a bitmap, expanding color range to the full possible range of color.&lt;br /&gt;
&lt;br /&gt;
* '''Oil Paint''' stylizes a bitmap so that it appears to be painted with oils.&lt;br /&gt;
&lt;br /&gt;
* '''Opacity''' modifies the opacity channel of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Raise''' alters the lightness of the edges of a bitmap to create a raised appearance, much like a frame.&lt;br /&gt;
&lt;br /&gt;
* '''Reduce Noise''' reduces noise in a bitmap by using a noise peak elimination filter.&lt;br /&gt;
&lt;br /&gt;
* '''Shade''' shades a bitmap by simulating a distant light source&lt;br /&gt;
&lt;br /&gt;
* '''Sharpen''' sharpens a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Solarize''' solarizes a bitmap, like overexposing photographic film.&lt;br /&gt;
&lt;br /&gt;
* '''Spread''' randomly spread pixels in a bitmap within the radius of '''amount'''.&lt;br /&gt;
&lt;br /&gt;
* '''Swirl''' swirls the bitmap around the center point.&lt;br /&gt;
&lt;br /&gt;
* '''Threshold''' thresholds a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Unsharpmask''' sharpens a bitmap using an unsharp mask algorithm.&lt;br /&gt;
&lt;br /&gt;
* '''Wave''' alters a bitmap along the sine wave.&lt;br /&gt;
&lt;br /&gt;
These effects are part of the Google Summer of Code 2007, coded by Christopher Brown.&lt;br /&gt;
&lt;br /&gt;
== Misc ==&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;
* A new parameter, '''precision''' is added to the parameter definitions in the [[MakingAnINX|inx file format]], allowing you to set the number of digits in that parameter's spinbutton in the effect UI.&lt;br /&gt;
&lt;br /&gt;
= Stock patterns =&lt;br /&gt;
&lt;br /&gt;
Since a few versions ago, Inkscape supports patterns in fill and stroke. However, up to now the only way to apply a pattern was by creating it in the document using the Object(s) to Pattern command, which wasn't very convenient. Now, if you switch an object's fill or stroke to pattern using the Fill&amp;amp;Stroke dialog, you will get a drop-down list with a number of predefined '''stock patterns''' that you can apply simply by selecting them from the list:&lt;br /&gt;
&lt;br /&gt;
*A selection of plain '''stripes''' differing by the ratio of the stripe width to gap width (for example, the &amp;quot;Stripes 1:2&amp;quot; pattern has gaps twice as wide as stripes), in the range from 4:1 to 1:64. All stripes patterns are in two versions: with black stripes and with white stripes (gaps are always transparent).&lt;br /&gt;
&lt;br /&gt;
*Two '''checkerboard''' patterns with black and white odd squares (even squares are transparent)&lt;br /&gt;
&lt;br /&gt;
*'''Packed circles''': a hexagonal pattern of black circles with transparent gaps.&lt;br /&gt;
&lt;br /&gt;
*'''Polka dots''': a scattering of dots designed to look randomly but evenly distributed so as to mask the regularity of the repeating pattern. There are three size variants of this pattern (small, medium, and large dots) and two color variants (black and white dots).&lt;br /&gt;
&lt;br /&gt;
*'''Wavy''' is a pattern of wavy lines.&lt;br /&gt;
&lt;br /&gt;
*'''Camouflage''' is a green-toned protective pattern such as that used by the military.&lt;br /&gt;
&lt;br /&gt;
*'''Ermine''' is the traditional heraldic pattern representing stylized stoat furs with black tails.&lt;br /&gt;
&lt;br /&gt;
*Three bitmap patterns: '''sand''', '''cloth''', and '''old paint''' are based on seamless photographic tiles and allow you to add some natural texture to your drawing. All of them are grayscale, so you can make objects with these textures semitransparent and overlay them over other colored objects to &amp;quot;texturize&amp;quot; them. &lt;br /&gt;
&lt;br /&gt;
After applying a stock pattern, switch to Node tool to edit the location, scale, and rotation of the pattern via on-canvas handles.&lt;br /&gt;
&lt;br /&gt;
All stock patterns are stored in the file &amp;lt;code&amp;gt;patterns/patterns.svg&amp;lt;/code&amp;gt; in Inkscape's &amp;lt;code&amp;gt;share&amp;lt;/code&amp;gt; directory (typically &amp;lt;code&amp;gt;/usr/share/inkscape&amp;lt;/code&amp;gt; on Linux, &amp;lt;code&amp;gt;&amp;lt;i&amp;gt;inkscape-dir&amp;lt;/i&amp;gt;/share&amp;lt;/code&amp;gt; on Windows). You can add your own patterns to this file or replace it with any other SVG file containing the patterns you need.&lt;br /&gt;
&lt;br /&gt;
=Markers=&lt;br /&gt;
&lt;br /&gt;
* A new command, '''Objects to Marker''', was added to the Object menu. It converts the current selection into a marker. After you do it, the selection is deleted, but the list of markers in the Fill and Stroke dialog, Stroke style tab, now contains the new marker that you can apply to paths. &lt;br /&gt;
&lt;br /&gt;
:* When creating the new marker, Inkscape assumes that the original objects are oriented as they should be on a horizontal path that goes from left to right. For example, if you create a new arrowhead that you plan to use as an end marker, make it point horizontally to the right before converting it to marker. &lt;br /&gt;
&lt;br /&gt;
:* Similar to standard markers, the user-created marker will scale up and down as you change the stroke width. Its initial size (i.e. the size of the object that you have turned into a marker) corresponds to the 1 px stroke.&lt;br /&gt;
&lt;br /&gt;
:* When you create a new marker, Inkscape uses the rotation center of the (first) selected object as the anchor point, i.e. the point which will coincide with the node to which that marker is attached. By default, the rotation center is in the center of the object's bounding box, which means the newly created marker will be centered around its node. If you move the rotation center, for example, to one of the corners of the object, the new marker will touch its node by that corner.&lt;br /&gt;
&lt;br /&gt;
* Several new '''UML markers''' were added to the standard set, including filled and hollow diamonds and triangles.&lt;br /&gt;
&lt;br /&gt;
* '''Master opacity''' did not apply to path markers as it should; this is fixed.&lt;br /&gt;
&lt;br /&gt;
* '''Stock markers''', if used in the document, now appear in the &amp;quot;this document's markers&amp;quot; section at the top of the marker lists in the Fill &amp;amp; Stroke dialog.  Before, any markers with stock IDs (including markers modified by the user) were hidden, making it difficult to work with modified stock markers.&lt;br /&gt;
&lt;br /&gt;
=Color management=&lt;br /&gt;
&lt;br /&gt;
== Calibrated SVG color including CMYK ==&lt;br /&gt;
&lt;br /&gt;
Inkscape now supports color-managed color definitions that use a colorspace other than sRGB (for example Adobe RGB, or calibrated CMYK colors). In the SVG file, this is done using the&lt;br /&gt;
optional &amp;quot;icc-color(...)&amp;quot; paint components as described in section 11.2 &amp;quot;Specifying paint&amp;quot; of the SVG 1.1 specification&lt;br /&gt;
[http://www.w3.org/TR/SVG11/painting.html#SpecifyingPaint]. A fallback sRGB value will be used, for non color-managed workflows. This allows for the use of calibrated color spaces, including using CMYK values that are preserved across applications.&lt;br /&gt;
&lt;br /&gt;
The new CMS color selector tab allows these colors to be edited.&lt;br /&gt;
&lt;br /&gt;
== Display adjustment ==&lt;br /&gt;
&lt;br /&gt;
In Inkscape Preferences, Color Management tab, there's are new options for enabling display adjustment; you can select any calibration profile (an ICC file) suitable for your display. Options for rendering intent can also be chosen.&lt;br /&gt;
&lt;br /&gt;
=== Per-window adjustment ===&lt;br /&gt;
Display adjustment is enabled and disabled per each editing window. This allows for simultaneous viewing of adjusted and unadjusted views of a single document by using multiple windows. There is a toggle at the bottom-right corner of the scrollbars that allows for turning on and off display adjustment. It also will be disabled to provide visible feedback when no profile is set to be available for adjustment.&lt;br /&gt;
&lt;br /&gt;
=== XICC Support ===&lt;br /&gt;
On X11-based systems (i.e. Unix and Mac OSX), use of [[http://www.burtonini.com/computing/x-icc-profiles-spec-latest.html ICC Profiles In X Specification]] (or XICC) can be enabled. Support for version 0.2 of this specification has been implemented. Enabling this option by choosing to retrieve profiles from the display will switch Inkscape to using profiles attached to screens at runtime. These allow display adjustment to be changed on the fly, and to be set and cleared per-monitor. This is especially helpful with more than a single monitor.&lt;br /&gt;
&lt;br /&gt;
Other Open Source software such as [http://www.gimp.org/ GIMP] support XICC. This allows all aware applications to be adjusted by setting a profile only once.&lt;br /&gt;
&lt;br /&gt;
=== Multi-monitor aware ===&lt;br /&gt;
When XICC support is enabled, windows will adjust to the proper profile as they are moved across monitors. Also, as the windows are moved onto monitors with no profile attached, the adjustment toggle will become disabled. When the windows are moved onto screens that do have profiles, the toggle will become enabled.&lt;br /&gt;
&lt;br /&gt;
== Soft Proofing ==&lt;br /&gt;
&lt;br /&gt;
In Inkscape Preferences, Color Management tab, there's a new option for enabling output device preview; you can select any calibration profile (an ICC file) suitable for your output device. Options for rendering intent can also be chosen, along with out of gamut warnings.&lt;br /&gt;
&lt;br /&gt;
== OS support ==&lt;br /&gt;
&lt;br /&gt;
Сolor management is supported in Linux and Mac OS X only at this time.&lt;br /&gt;
&lt;br /&gt;
=Grids, guides, snapping=&lt;br /&gt;
&lt;br /&gt;
==Grids==&lt;br /&gt;
Grids have undergone some big changes under-the-hood. These are the visible changes:&lt;br /&gt;
&lt;br /&gt;
* There is a &amp;lt;b&amp;gt;new 3D/axonometric grid&amp;lt;/b&amp;gt;. It consists of three sets of parallel lines, one vertical and others at angles of +30 and -30 degrees from the horizontal. The angles of these two latter sets and the spacing of the grid are user-settable. &lt;br /&gt;
&lt;br /&gt;
* A new tab in the Document Properties dialog, &amp;lt;b&amp;gt;Grids&amp;lt;/b&amp;gt;, is devoted solely to grids; the former grid/guide tab is renamed &amp;lt;b&amp;gt;Guides&amp;lt;/b&amp;gt; and is now used only for guides. On the Grids page, you can create and manage grids of various types in your document; so far the two types available are Rectangular (default) and Axonometric, but more types may be added in the future.&lt;br /&gt;
&lt;br /&gt;
* More than one grid can be active at the same time:&lt;br /&gt;
:* Each grid can be enabled/disabled separately from the Document Properties dialog.&lt;br /&gt;
&lt;br /&gt;
* For each grid, you can hide it by unchecking the &amp;quot;Visible&amp;quot; checkbox in the grid's tab, or disable snapping to it by unchecking &amp;quot;Enabled&amp;quot;. Note that you can have &amp;quot;Enabled&amp;quot; on and &amp;quot;Visible&amp;quot; off (but not vice versa), in which case you snap to the invisible grid.&lt;br /&gt;
&lt;br /&gt;
* Multiple views on the same document (i.e. different Inkscape windows with the same document loaded) share the same grids, but the grid can be turned on and off for each view separately. For example, you could have a zoomed-out &amp;quot;overview&amp;quot; view without grids showing. 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. &lt;br /&gt;
&lt;br /&gt;
* The rectangular grid now has an option to show dots on gridline intersections instead of solid lines.&lt;br /&gt;
&lt;br /&gt;
From developer perspective:&lt;br /&gt;
* Implementation of new grids is much easier now by subclassing CanvasGrid. 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;
* Grid information is now stored in SVG as a child of sodipodi:namedview. Old files will be converted to this new format automatically.&lt;br /&gt;
* An old bug is fixed: apparently the origin of the document coordinate system used to be set to the origin of the grid. For example, in 0.45.1 and before, specifying a grid origin of (20,20) moved the origin or coordinates to that point, and the grid was still starting at (0,0) in this moved coordinate system. This is now disabled, and the coordinate origin is not affected by grid origin.&lt;br /&gt;
&lt;br /&gt;
==Angled guidelines==&lt;br /&gt;
&lt;br /&gt;
Now, Inkscape also provides angled guidelines! Double click on a guide to set its angle.&lt;br /&gt;
&lt;br /&gt;
*  When dragging a guideline off the rulers close to the end of the ruler, the guideline will automatically be angled. The angle is set depending on the grid.&lt;br /&gt;
** For the rectangular grid, the angle is 45 degrees.&lt;br /&gt;
** For the axonometric grid, the angle is matched to the grid. When '''Ctrl''' is pressed, the angle is perpendicular to the grid lines (useful for aligning gradients).&lt;br /&gt;
&lt;br /&gt;
==Creating guidelines from objects==&lt;br /&gt;
&lt;br /&gt;
* Selected objects can now be converted to guidelines. To do this, either use the menu command '''&amp;quot;Object-&amp;gt;Object to guides&amp;quot;''' or press '''Shift+G''' in Selector tool (this shortcut also works in some other tools, see below). The conversion process recurses into groups, i.e. all objects in the current selection are converted regardless if they are grouped or not.&lt;br /&gt;
&lt;br /&gt;
* Created guides can be quickly deleted by '''Ctrl'''+clicking on them (this is of course not restricted to guides created by the process described above). Note that this only works in Selector and Node tools, i.e., in contexts where guidelines can be manipulated with the mouse. &lt;br /&gt;
&lt;br /&gt;
* '''Paths''' are converted by creating one guide for each straight line segment occurring in the path (whereas curved segments are not taken into account). To make this conveniently accessible, the shortcut '''Shift+G''' works in Pen and Pencil tools, too.&lt;br /&gt;
&lt;br /&gt;
* For all other objects, conversion usually happens by placing the guidelines around the object's bounding box (use the corresponding checkbox in the &amp;quot;Tools&amp;quot; page of Inkscape Preferences to switch between geometric and visual bounding box).&lt;br /&gt;
&lt;br /&gt;
*For '''rectangles''' and '''3D boxes''' there is a special option in their preferences pages (checked by default) which instead allows the guidelines to be placed along the object's edges so that they imitate its true shape. This is especially useful when converting rotated or skewed rectangles (to create guidelines in a special position) or for creating 3D scenes containing other objects than just boxes. The shortcut '''Shift+G''' works in these tools as well.&lt;br /&gt;
&lt;br /&gt;
==Snapping==&lt;br /&gt;
&lt;br /&gt;
* Snapping has been implemented or improved for:&lt;br /&gt;
&lt;br /&gt;
:* '''Newly created shapes'''&lt;br /&gt;
&lt;br /&gt;
:* '''Skewing''' of objects&lt;br /&gt;
&lt;br /&gt;
:* '''Handles''' of objects, incl. '''gradients'''&lt;br /&gt;
&lt;br /&gt;
:* '''Images''', '''ellipses''', and '''clones'''&lt;br /&gt;
&lt;br /&gt;
:* Text boxes, which snap to '''text baselines''' again&lt;br /&gt;
&lt;br /&gt;
:* Objects, for which snapping now optionally considers the '''rotation center'''&lt;br /&gt;
&lt;br /&gt;
:* Objects, which now allow for '''constrained snapping'''&lt;br /&gt;
&lt;br /&gt;
:* '''Guides''', which now snap while dragging them&lt;br /&gt;
&lt;br /&gt;
:* '''Axonometric grids'''&lt;br /&gt;
&lt;br /&gt;
:* '''Angled guide lines'''&lt;br /&gt;
&lt;br /&gt;
:* '''Bounding boxes''', of which now all four corners snap&lt;br /&gt;
&lt;br /&gt;
* Other snapping fixes and improvements include:&lt;br /&gt;
&lt;br /&gt;
:* It is now possible to snap to '''intersections''' of e.g. gridlines with guidelines, and of line segments. &lt;br /&gt;
&lt;br /&gt;
:* The '''snapping preferences dialog''' has been restyled to make it more intuitive. &lt;br /&gt;
&lt;br /&gt;
:* Inkscape now has a global snapping toggle, which has been added to the view-menu and is accessible through a shortcut&lt;br /&gt;
&lt;br /&gt;
:* Inkscape now allows for controlling the snapping per grid when multiple grids are being used&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 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 time it takes to snap to objects using the selector tool has been reduced significantly.&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;
:* Only nodes at '''non-smooth parts''' of a path now snap.&lt;br /&gt;
&lt;br /&gt;
:* The confusing &amp;quot;Default transformations origin&amp;quot; option has been 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;
&lt;br /&gt;
=Import/Export=&lt;br /&gt;
&lt;br /&gt;
==PDF and AI import==&lt;br /&gt;
&lt;br /&gt;
In this version, Inkscape can natively (i.e. without any additional software) import PDF files and the newer PDF-based Adobe Illustrator files (starting from AI version 9.0). &lt;br /&gt;
&lt;br /&gt;
'''Implemented features''': The new import extension can import '''paths''', '''text''', '''clippaths''', '''masked or non-masked images''', and '''softmasks'''. It supports '''pattern fills''' (XStep and YStep attributes are ignored) as well as '''linear and radial gradients''' (only those using sampled or exponential functions). '''Gradient meshes''' are imported, but they get converted to groups of small tiles (flat-colored paths) that approximate the mesh; the user can adjust the precision of this approximation. &lt;br /&gt;
&lt;br /&gt;
'''PDF import settings''': After opening a PDF or AI document, the PDF Import Settings dialog shows up. Here you can select:&lt;br /&gt;
&lt;br /&gt;
* the '''page''' to be imported from a multipage PDF;&lt;br /&gt;
&lt;br /&gt;
* the overall '''clip region''' (which can be none or set to any of the PDF boxes, e.g. the crop box, the media box, the trim box, etc.);&lt;br /&gt;
&lt;br /&gt;
* the '''precision''' for the approximation of '''gradient meshes'''; note that setting this too high may result in a huge SVG file and slow performance when importing files with gradient meshes;&lt;br /&gt;
&lt;br /&gt;
* a checkbox controlling whether the '''images''' should be '''embedded''' into the resulting SVG document or saved on the current path;&lt;br /&gt;
&lt;br /&gt;
* a '''preview''' of the selected page (shown if poppler-cairo is present on the system or if the selected page has a thumbnail embedded into the PDF 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;
The native PDF/AI importer is based on the poppler library and was implemented by Miklós Erdélyi as part of the Google Summer of Code 2007.&lt;br /&gt;
&lt;br /&gt;
==PDF export==&lt;br /&gt;
&lt;br /&gt;
* A new cairo-based PDF exporter has been added to Inkscape (marked as &amp;quot;Cairo PDF&amp;quot; in the export format list). Inkscape 0.46 can export shapes, strokes, transparency, gradients, patterns, text, and images correctly to cairo. Clipping paths and masks are known to be faulty or missing. Also, unlike the old PDF exporter, the cairo-based PDF export produces compressed PDF files that are reasonably compact. 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, but it is highly recommended to use at least '''cairo 1.5.2''' for quality PDF export.&lt;br /&gt;
&lt;br /&gt;
* A new cairo-based PostScript exporter has been added (marked as &amp;quot;Cairo PS&amp;quot; in the export format list). The cairo PS backend is not as mature as the PDF backend. It rasterizes a lot of its content. Text output does not work where it works with the PDF backend.&lt;br /&gt;
&lt;br /&gt;
==CDR (CorelDraw) import==&lt;br /&gt;
&lt;br /&gt;
Inkscape can use [http://www.sk1project.org/modules.php?name=Products&amp;amp;product=uniconvertor UniConvertor] if it's installed on your system to import documents in CDR format (CorelDraw). This feature is Unix-only at this time and requires that you have Python and UniConvertor installed. As of UniConvertor 1.1.1, versions from 7 to X4 of the CDR format are supported, and text objects are not converted.&lt;br /&gt;
&lt;br /&gt;
==XAML import/export==&lt;br /&gt;
&lt;br /&gt;
* Inkscape can import vector graphics portions of XAML documents, as well as export its documents to XAML.&lt;br /&gt;
&lt;br /&gt;
==Adobe Illustrator SVG clean import==&lt;br /&gt;
&lt;br /&gt;
* Using this new import filter, Inkscape can open an SVG document removing any elements and attributes in the namespaces that Adobe Illustrator uses for its stuff.  This will clean out everything except the actual SVG content.&lt;br /&gt;
&lt;br /&gt;
==WMF import==&lt;br /&gt;
&lt;br /&gt;
Now Inkscape uses UniConvertor for opening WMF files, which results in three noticable changes:&lt;br /&gt;
&lt;br /&gt;
# imported files are editable now&lt;br /&gt;
# known rendering issues are resolved&lt;br /&gt;
# WMF import works on all platforms where UniConvertor works (including Windows)&lt;br /&gt;
&lt;br /&gt;
Text objects are not supported by UniConvertor as of version 1.1.1.&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;
== Open Clip Art Library import and export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape features a preliminary support for importing drawings from [http://openclipart.org/ Open Clip Art Library].&lt;br /&gt;
&lt;br /&gt;
After specifying account details in Preferences dialog (Import/Export tab) use 'File &amp;amp;gt; Import From Open Clip Art Library' command to open a dialog, then search for tags and pick one of the results to merge this found drawing into your document.&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;
* --query-all produces a comma delimited listing of all objects in the document, with their x, y, height, and width values.&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;
=User interface=&lt;br /&gt;
&lt;br /&gt;
== Dockable dialogs ==&lt;br /&gt;
&lt;br /&gt;
Inkscape's dialog handling has been reworked in this release to allow dialogs to behave like '''dockable panels'''. The dock area that holds the user's dialogs is located right of the canvas.&lt;br /&gt;
&lt;br /&gt;
Dialogs placed in the dock can easily be rearranged, resized, stacked in groups or iconified. Furthermore, a dialog can be dragged of the dock to become a floating dock in itself&amp;amp;mdash;this allows other dialogs to be dragged and dropped on it to form a floating group of dialogs.&lt;br /&gt;
&lt;br /&gt;
The old dialog behavior (used in releases before 0.46) has been preserved as an option, and if it is preferred, one can select it under ''Windows'' &amp;gt; ''Dialog behavior'' in the Inkscape preferences dialog.&lt;br /&gt;
&lt;br /&gt;
====Known issues====&lt;br /&gt;
&lt;br /&gt;
* Some of Inkscape's dialogs are yet to be adapted to allow docking, these include the &amp;quot;Text and Font&amp;quot; dialog, the &amp;quot;Tiled clones&amp;quot; dialog, the &amp;quot;XML editor&amp;quot; and the &amp;quot;Object properties&amp;quot; dialog.&lt;br /&gt;
&lt;br /&gt;
* Floating dialogs that are closed and later reopened might reappear on positions slightly different than their original ones.&lt;br /&gt;
&lt;br /&gt;
* Resizing dialogs that are placed in the dock can be a bit slow and quirky.&lt;br /&gt;
&lt;br /&gt;
* The total height of content the dock will in most cases remain the same when a dialog is closed/iconified, i.e. the remaining docked dialogs will fill the hole. This might not the desired behavior.&lt;br /&gt;
&lt;br /&gt;
====Settings====&lt;br /&gt;
&lt;br /&gt;
Three settings that control dockable dialogs behavior are present in the &amp;lt;code&amp;gt;preferences.xml&amp;lt;/code&amp;gt; file under a &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; group called &amp;lt;code&amp;gt;dock&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cancenterdock&amp;lt;/code&amp;gt;: controls if dialogs are allowed to be stacked on top of each other to be ordered in groups. Valid values are &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;dockbarstyle&amp;lt;/code&amp;gt;: controls what information is shown for iconified dockable dialogs. &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; = icons only, &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; = text only, &amp;lt;code&amp;gt;&amp;quot;2&amp;quot;&amp;lt;/code&amp;gt; = both icons and text. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;switcherstyle&amp;lt;/code&amp;gt;: controls what information is shown for grouped dockable dialogs. &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; = icons only, &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; = text only, &amp;lt;code&amp;gt;&amp;quot;2&amp;quot;&amp;lt;/code&amp;gt; = both icons and text.&lt;br /&gt;
&lt;br /&gt;
== Toolbars ==&lt;br /&gt;
&lt;br /&gt;
'''Main toolbar''' on the left can now optionally use '''smaller buttons'''. With the several new tools added in this version, this may help users with small screens where the toolbar otherwise may not fit vertically. The toggle is on the Misc tab of the Inkscape Preferences dialog.&lt;br /&gt;
&lt;br /&gt;
Switching to stock GTK+ toolbars. This allows for the main window to be made narrower, with toolbar items flowing into a popup menu as it is resized.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Swatches panel, color drag-and-drop ==&lt;br /&gt;
&lt;br /&gt;
* Right-clicking a color swatch now opens a context menu which allows you to apply the color to the fill or stroke of selection.&lt;br /&gt;
&lt;br /&gt;
* Dragging colors from the color palette has been fixed and improved:&lt;br /&gt;
&lt;br /&gt;
:* Now the dropped color is applied to '''the object on which you drop it''', regardless of whether that object is selected or not. This means you can change the color of only one object from selection without having to select it separately. (If you want to assign color to the entire selection, just click on the color swatch on the palette, not drag it.)&lt;br /&gt;
&lt;br /&gt;
:* If an object has stroke and you '''drop the color over stroke''', the color is applied to stroke and not fill. (Another way to always apply color to stroke is to '''Shift+drag''' it.)&lt;br /&gt;
&lt;br /&gt;
:* When gradient handles are active (e.g. in Gradient or Node tools), you can '''drop a color onto the gradient line''' to create a new gradient mid stop with this color, or '''drop a color onto an existing stop''' to recolor that stop.&lt;br /&gt;
&lt;br /&gt;
:* A new submenu has been added to affect the shape of the displayed swatches, allowing their preferred size to be made thinner or wider. Among other things, this allows for more to be seen on screen at once when made thinner.&lt;br /&gt;
&lt;br /&gt;
:* Sizing of the swatches has been corrected to be properly progressive, and now go form smaller to larger on all platforms.&lt;br /&gt;
&lt;br /&gt;
:* Space reserved for the scrollbar is no longer kept with smaller palettes shown in the bottom of the main UI. This allows for more working space when palettes with not many entries are selected at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
==Color gestures==&lt;br /&gt;
&lt;br /&gt;
A new method for quick and precise adjustment of colors is added in this version: color gestures. It works on the selected objects by grabbing the '''fill or stroke color swatch''' in the '''selected style indicator''' (on the left of the statusbar) and dragging it in various directions as described below. Note that this only works when the swatch displays a '''flat color'''; it does not work for a swatch showing &amp;quot;None&amp;quot;, &amp;quot;N/A&amp;quot;, or displaying a gradient (although you can select one or more gradient stops in Gradient tool and color-adjust them by color gestures just as you would do for objects). Color gestures can work on '''fill''' or '''stroke''', depending on which swatch in the selected color indicator you drag.&lt;br /&gt;
&lt;br /&gt;
Color gestures work in '''HSL''' color space. Dragging without any keyboard modifiers adjusts the '''hue''' channel, dragging with '''Shift''' adjusts '''saturation''', and dragging with '''Ctrl''' adjusts '''lightness'''.&lt;br /&gt;
&lt;br /&gt;
The adjustment is done by '''&amp;quot;rotating&amp;quot;''' the color swatch away from the original direction which is assumed to be '''NE at 45 degrees''' (i.e. from&lt;br /&gt;
the swatch diagonally into the document window). Once you click and drag the color swatch, imagine a diagonal line going from the point where you clicked in the NE direction, across the entire Inkscape window. By dragging '''below or to the right''' of that line, you decrease the corresponding color channel, to the minimum at the lower edge of the window; by dragging it above or to the left, you increase it, to the maximum at the left edge of the window. If you hover your mouse exactly over the 45 degrees line, the change will be zero.&lt;br /&gt;
&lt;br /&gt;
Note that you can easily vary the '''precision''' of your adjustment. If you drag close enough to the swatch, each small movement results in a big change of the color. If you need a finer adjustment, just drag farther away from the swatch, towards the center of the Inkscape window or even to its upper right corner, where minute movements will produce very small changes in the color. In fact, this method gives you more color precision than even the color wheel in the Fill and Stroke dialog, unless you expand that dialog to fill the entire screen which is rarely practical.&lt;br /&gt;
&lt;br /&gt;
The mouse '''cursor''' changes when you're doing color gestures, reflecting the channel currently adjusted and indicating the directions for increasing and decreasing the value. Also, watch the '''statusbar''' which will indicate, as you drag, the channel you are adjusting, the original value of that channel, the new value, and the difference. &lt;br /&gt;
&lt;br /&gt;
You can '''switch channels while you drag'''. That is, you don't need to &lt;br /&gt;
drag it again and again from the swatch if you want to adjust all three channels - you can do it all in one drag, by pressing and releasing Ctrl and Shift as necessary. Note that when you change the keyboard modifiers during drag, the position of the zero-change line is temporarily changed to go through the current mouse position; this is done so that there are no sudden changes in color if you are switching modifiers away from the original 45-degree line.&lt;br /&gt;
&lt;br /&gt;
The '''Alt''' modifier is special. Pressing Alt means &amp;quot;do nothing&amp;quot;; this allows you to move the mouse, without releasing, to a more convenient place from where to continue tweaking the color after letting go of Alt. As with the other modifiers, releasing Alt temporarily redefines the zero-change axis to go through the point where Alt was released. For example, imagine  you made your color darker by Ctrl+dragging towards the bottom edge of the window and you now need to make it less saturated. You cannot however Shift+drag it any lower because there's just not enough room for that. In that situation, without releasing the mouse, Alt+drag it upwards to a convenient spot and then Shift+drag downwards as needed. Also, you can start dragging from the swatch with Alt pressed to avoid changing the color while you take a more convenient position for adjustments.&lt;br /&gt;
&lt;br /&gt;
For example, you can select a green rectangle and first turn it into greenish-blue by dragging away from the Fill swatch and slightly above the 45 degrees line; then, without releasing the mouse, press Ctrl and drag a bit to the right to darken the color; then press Shift, release Ctrl, and adjust saturation. You can press or release Ctrl and Shift as many times as necessary during a single drag; when you are finally satisfied with your color, release the mouse to commit the change.&lt;br /&gt;
&lt;br /&gt;
Apart from precise adjustments, you can use color gestures to very quickly perform some common color transformations:&lt;br /&gt;
&lt;br /&gt;
* Ctrl+drag the swatch to the right and down to paint all selected objects black.&lt;br /&gt;
&lt;br /&gt;
* Ctrl+drag the swatch upwards and to the left to paint all selected objects white.&lt;br /&gt;
&lt;br /&gt;
* Shift+drag the swatch to the right and down to desaturate the color of selected objects.&lt;br /&gt;
&lt;br /&gt;
* Shift+drag the swatch upwards and to the left to maximize saturation of the color of selected objects. &lt;br /&gt;
&lt;br /&gt;
Note that when several objects or gradient stops with different colors are selected, the selected style indicator shows their '''averaged''' color. If you adjust that color by gesturing, the changed color will be assigned back to all selected objects/stops, in effect eliminating any difference between them. If you want to adjust many different-colored objects preserving their relative differences, use the color modes of the Tweak tool or color adjustment extension effects.&lt;br /&gt;
&lt;br /&gt;
This new technique requires some getting used to, but once you get the idea it is quite convenient, fast, and precise.&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;
== Preserving zoom/view of reverted documents ==&lt;br /&gt;
&lt;br /&gt;
When reverting files to their previously saved state, the current zoom factor/panning is now retained (as opposed to reverted to the saved state, too, as it was the case before). This less interrupts the workflow when one is working on some detail in the drawing.&lt;br /&gt;
&lt;br /&gt;
== Bounding box option moved ==&lt;br /&gt;
&lt;br /&gt;
The preferences option to select between &amp;quot;visual&amp;quot; and &amp;quot;geometric&amp;quot; bounding box was moved in Inkscape Preferences dialog from the &amp;quot;Selector&amp;quot; page to &amp;quot;Tools&amp;quot; page (since it applies more globally than just in Selector tool).&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;
== Using other keys in place of Alt ==&lt;br /&gt;
&lt;br /&gt;
* Many Linux users have found the use of '''Alt-drag''' and '''Alt+click''' in Inkscape problematical because this shortcut is often captured by window managers. In 0.46, instead of disabling of the window manager shortcut as suggested in [http://wiki.inkscape.org/wiki/index.php/FAQ#How_to_make_Alt.2Bclick_and_Alt.2Bdrag_work_on_Linux.3F the FAQ], you can change a setting in your preferences.xml file called &amp;lt;code&amp;gt;mapalt&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; group. This numerical value ranges from 1 to 5; 1 indicates no change, any other value refers to some special key on a keyboard, such as '''Alt Gr''', the '''Windows''' key, etc. The specific mapping of these values to the keys on your keyboard can be viewed and/or editied by '''xkeycaps''', available from [http://www.jwz.org/xkeycaps www.jwz.org]. The value associated with a particular key is shown in that program at the top of the screen beside the word &amp;quot;Modifiers&amp;quot; when the mouse is held over a key on the main display.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keyboard profiles ==&lt;br /&gt;
&lt;br /&gt;
New profiles have been added:&lt;br /&gt;
&lt;br /&gt;
* '''Corel DRAW X4''' (corel-draw-x4.xml)&lt;br /&gt;
* '''Zoner Draw 5''' (zoner-draw.xml)&lt;br /&gt;
* '''ACD Systems Canvas 11''' (acd-canvas.xml)&lt;br /&gt;
&lt;br /&gt;
Also, profile for Adobe Illustrator has been fixed and includes bindings for tools now.&lt;br /&gt;
&lt;br /&gt;
(To enable a profile, copy it into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; in the same directory, overwriting the old file. To restore the default Inkscape set, copy &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
=Other changes and 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;
* On the '''Scale''' tab of the '''Transform dialog''', the numbers now show the current size of selection, not size increment as before. Correspondingly, with the % unit chosen, you see 100% displayed, and to scale it up twice, you enter 200%, not 100% as before. This is a more intuitive behavior and it's more consistent with how the W/H controls work in the Selector tool. &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;
* The '''Shift''' tab of the '''Tile Clones''' dialog has two new options: '''Cumulate''': when checked, each tile is shifted by the normal amount plus the cumulative shifts of all previous tiles. This is useful when placing tiles that are being scaled by a uniform amount. '''Exlude tile''': when checked, the tile width or height is not automatically included in calculating the tile's shift. This is useful when using the dialog to place clones on a circle or spiral (rather than using a shift of -100%). It is also useful when positioning tiles using the '''Exponent''' parameter.&lt;br /&gt;
&lt;br /&gt;
* The '''Scale''' tab of the '''Tile Clones''' dialog has a new parameter: '''Base''' that allows placing tiles along a logarithmic spiral (as often found in nature). If the value is '''0''', the parameter is not used. Use a value less than one for a converging spiral and a value of greater than one for a diverging spiral. The actual scale is calculated as '''base''' raised to the nominal '''scale''' power.&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;
* 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;
* 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;
* Preferences have been added for setting the default metadata and licenses, so this information can be automatically filled in with new documents.&lt;br /&gt;
&lt;br /&gt;
* The built-in '''Potrace''' tracing engine is upgraded to version '''1.8''' with some minor bugs fixed.&lt;br /&gt;
&lt;br /&gt;
* File dialog windows (open/save) now have an '''Enable preview''' checkbox which allows you to disable the preview pane.&lt;br /&gt;
&lt;br /&gt;
* In the Calligraphic pen controls, the toggle button to enable tablet pressure sensitivity is moved to the Width control, and the button for tilt sensitivity is moved to Angle, to better reflect what parameters these toggles affect.&lt;br /&gt;
&lt;br /&gt;
* In Node and Gradient tools, using '''Tab/Shift+Tab''' to select next/previous node or gradient handle scrolls the canvas if necessary to show the selection. &lt;br /&gt;
&lt;br /&gt;
* The option '''Import bitmap as &amp;lt;image&amp;gt;''' is removed; it was added several versions ago to allow optionally importing images as rectangles with image pattern, to make clipping the images easier. Now that you can easily use clipping paths, as well as convert any image to rectangle with pattern with Alt+I, this option is not really necessary and removed to reduce confusion. Bitmaps are always imported into SVG as an &amp;lt;image&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
* Support has been added for stock patterns, in the same way that stock markers were already supported. Adding patterns to share/patterns/patterns.svg, and giving them a inkscape-stockid attribute as found on the examples already there will make them available in all Inkscape sessions from the patterns tab of the fill &amp;amp; stroke dialog.&lt;br /&gt;
&lt;br /&gt;
* New '''fontforge_glyph.svg''' template is added for font designers who draw glyphs in Inkscape and import them into FontFoge. It is 1000x1000px large and has a horizontal guide at 200px to mark border for descenders.&lt;br /&gt;
&lt;br /&gt;
* Save dialogs have been modified to clarify that they '''Save as SVG''', so people using Inkscape to edit PDF, EPS, and other file formats will be less confused at the default behavior when saving files.&lt;br /&gt;
&lt;br /&gt;
= Mac OS X specific improvements =&lt;br /&gt;
&lt;br /&gt;
* Inkscape 0.46 is officially released as a '''Universal''' (i386/ppc) binary for both OS X '''10.4 Tiger''' and '''10.5 Leopard'''.&lt;br /&gt;
&lt;br /&gt;
* Please note:  Leopard users should update X11.app to at least 2.1.4.  X11.app updates can be downloaded from XQuartz: [http://xquartz.macosforge.org/].&lt;br /&gt;
&lt;br /&gt;
* Inkscape application bundle on '''Mac OS X''' now has the possibility to contain '''pre-compiled python modules''' (e.g. lxml, numpy, etc.) and to use them without requiring any work from the user. Since Python itself is shipped with Mac OS X, the user only has to drag and drop Inkscape on its hard-drive and all the extensions will be '''functional immediately'''.&lt;br /&gt;
&lt;br /&gt;
* A GTK theme is now included in Inkscape.app bundle on OS X. If the user does not have any personal customization (e.g. in a .gtkrc-2.0 file) this theme is used. It reflects the OS X settings for &amp;quot;Appearance&amp;quot; and &amp;quot;Highlight Color&amp;quot; set in System Preferences &amp;gt; Appearance.&lt;br /&gt;
&lt;br /&gt;
* If Inkscape.app is already open and a file is dropped on the Inkscape dock icon, or an Inkscape file is double-clicked in the Finder, that document will now be opened, rather than this action being ignored, as happened in 0.45 and prior.&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;
* A fix in the blur rendering code made '''exporting blurred objects to bitmap''' much faster and fixed the disappearing of blurred objects in exported bitmaps which happened for large objects in 0.45.  The same fix got rid of the rendering artefacts that sometimes appeared on blurred objects during scrolling. &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;
* On Windows, '''file opening/saving dialogs''' can no longer sink under the main editor window (they now have the inkscape window set correctly as their parent window).&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;
* '''Creative Commons Public Domain Declaration URI''' points to the 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;
* On Windows, the Inkscape uninstaller deleted all files under the install directory. This could lead to removing user-created files, or even other program files not related to inkscape if the install directory was C:\Program Files. The new uninstaller '''tracks all installed files and asks for confirmation before deleting any other files'''. However, installation and uninstallation process is now slower.&lt;br /&gt;
&lt;br /&gt;
* Clones were wrongly unlinked when their original was moved to another layer; fixed.&lt;br /&gt;
&lt;br /&gt;
* Previous versions had a problem on '''Windows Vista''' where selected menu item was invisible. Now our Windows builds use a newer version of GTK library which fixes this problem.&lt;br /&gt;
&lt;br /&gt;
* Duplicating empty text objects that have just been created no longer crashes. Also, the XML editor crash related to empty text objects is fixed. A downside is that the SVG will become cluttered with empty text objects as they are no longer automatically removed. A better fix for the problem is planned.&lt;br /&gt;
&lt;br /&gt;
* In Tile Clones dialog, the PMG symmetry group was created incorrectly; it is now fixed.&lt;br /&gt;
&lt;br /&gt;
* Serious usability issues with the font size field in the Text tool's controls bar have been fixed.&lt;br /&gt;
&lt;br /&gt;
* The rulers are now correctly scaled and will align nicely with document coordinates, with or without the scrollbars displayed.&lt;br /&gt;
&lt;br /&gt;
=Known Issues=&lt;br /&gt;
&lt;br /&gt;
* (LP: #180890) Blend modes do not work correctly over transparent    backgrounds. A workaround is to place an opaque rectangle underneath the bottom-most layer.&lt;br /&gt;
* (LP # 202704) Blur and other filters are very slow when applied to an object with transform= attribute with rotation or skew. To avoid this slowdown, either do not rotate/skew objects you use with filters, or apply filters only to paths (but not shapes to text) because paths, by default, get no transform= attribute when you rotate or skew them.&lt;br /&gt;
* Windows printing has two known issues. In both cases the workaround is to print to bitmap (Print -&amp;gt; Rendering -&amp;gt; Bitmap).&lt;br /&gt;
** (LP # 205732) Blurred objects are misaligned when printing.&lt;br /&gt;
** (LP # 208217) Masked objects disappear from the page when printing.&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>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.46&amp;diff=27104</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=27104"/>
		<updated>2008-04-02T00:41:23Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Improvements for the Mac OS X version */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Inkscape 0.46=&lt;br /&gt;
&lt;br /&gt;
Highlights 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;
* Live path effects&lt;br /&gt;
&lt;br /&gt;
* Color management&lt;br /&gt;
&lt;br /&gt;
* New SVG filters and UI&lt;br /&gt;
&lt;br /&gt;
* Native PDF and AI import&lt;br /&gt;
&lt;br /&gt;
* XAML import/export&lt;br /&gt;
&lt;br /&gt;
* Open Clip Art Library integration (import/export)&lt;br /&gt;
&lt;br /&gt;
* Stock patterns&lt;br /&gt;
&lt;br /&gt;
* Bitmap editing extension effects&lt;br /&gt;
&lt;br /&gt;
* Full on-canvas gradient editing&lt;br /&gt;
&lt;br /&gt;
* Engraver's Toolbox in the Calligraphic tool&lt;br /&gt;
&lt;br /&gt;
* Touch selection&lt;br /&gt;
&lt;br /&gt;
* Dockable dialogs&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;
* &amp;quot;3D&amp;quot; / axonometric grid&lt;br /&gt;
&lt;br /&gt;
* Angled guidelines&lt;br /&gt;
&lt;br /&gt;
* Conversion of objects to guidelines&lt;br /&gt;
&lt;br /&gt;
* Significant speed and interactivity improvements&lt;br /&gt;
&lt;br /&gt;
* Hundreds of smaller features and bugfixes&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 in order from top to bottom. Now the redraw always starts '''at your mouse cursor location''' and proceed upwards and downwards from it, so that the area near the cursor is always redrawn first. This significantly improves program's responsiveness in some situations. For example, when you are node-editing part of a complex path, the entire path needs to be redrawn on each change, but now this redraw starts from the point you're working on. Moreover, the redraw is interruptible, so each mouse movement starts new redraw from the mouse cursor area. As a result, during such operations those parts that you're working on redraw often and feel snappy and responsive, while areas further away may lag behind more.&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;
:'''Exporting drawings with blur''' was particularly slow in 0.45; some files could take hours to export. Now this is fixed, in part by the faster algorithm mentioned above and in part by a bugfix in the export code. Now even the quite complex files with large blurs export at high resolution in at most a few minutes.  &lt;br /&gt;
&lt;br /&gt;
* Minor improvements have been made to gradient rendering performance.&lt;br /&gt;
&lt;br /&gt;
* '''Dragging handles and nodes''' as well as '''dragging and transforming objects''' by mouse became more responsive, so that working in complex drawings and especially editing complex paths is noticeably easier. In particular, this fixes the annoying latency issue where a node or a handle could follow mouse cursor even after you release mouse button after a drag. &lt;br /&gt;
&lt;br /&gt;
* '''Moving objects, nodes, and gradient handles by cursor keys''' as well as '''scaling and rotating objects from keyboard''' and '''zooming by keys''' are much more responsive when working with complex slow-rendering objects. Now, if you press and hold a key, your selection/zoom level will quickly jump to the final position instead of going through all the intermediate steps as before. &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;
:* '''Redrawing the newly exposed parts of the canvas''' after scrolling, especially diagonal scrolling, is now faster because only the exposed areas are redrawn; before, this often resulted in the entire screen being redrawn which was much slower.&lt;br /&gt;
&lt;br /&gt;
:* Previously, if you started 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;
* Better responsiveness and more visual feedback in user interface: &lt;br /&gt;
&lt;br /&gt;
:*When you zoom, the '''zoom control''' on the right end of the statusbar now updates immediately, not after screen redraw as before. &lt;br /&gt;
&lt;br /&gt;
:*Many potentially slow commands (Save, Simplify, Combine, Break Apart and others) now display a '''busy cursor''' and flash a message in the statusbar (e.g. &amp;quot;Saving document...&amp;quot;) while they work. &lt;br /&gt;
&lt;br /&gt;
:*The '''statusbar messages''' displayed while you're drawing a shape or a path in Pen tool do not lag behind the mouse movements.&lt;br /&gt;
&lt;br /&gt;
* '''Combine''' and '''Convert to paths''' commands are now orders of magnitude faster when applied to a selection with hundreds or thousands of objects.&lt;br /&gt;
&lt;br /&gt;
* The time it takes to '''snap to objects''' using the selector tool has been reduced dramatically, which is most noticeable for snapping to complex paths.&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;
===How it works===&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 (or use the auto gap closing parameter, see below).&lt;br /&gt;
&lt;br /&gt;
===Style===&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). As in all other tools, the '''style swatch''' on the far right of the Controls bar shows the style that will be used for the next fill object you create.&lt;br /&gt;
&lt;br /&gt;
===Controls===&lt;br /&gt;
&lt;br /&gt;
In the tool's '''Controls bar''':&lt;br /&gt;
&lt;br /&gt;
* Paint Bucket's perceptual fill can use either all visible colors or specific color channels. Using the '''Fill by''' drop-down list, you can restrict the fill algorithm to one 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;
* The '''Threshold''' (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;
* Using the '''Grow/shrink by''' parameter, 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 much the same as the Outset and Inset path commands, except it's done automatically after every fill.&lt;br /&gt;
&lt;br /&gt;
* With the '''Close gaps''' parameter, you can make the Paint Bucket tool  ignore 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 (close gaps up to 2 pixels in size)&lt;br /&gt;
** Medium (4 pixels)&lt;br /&gt;
** Large (6 pixels)&lt;br /&gt;
:Note that setting this parameter to other than None may slow down noticeably the filling of large areas.&lt;br /&gt;
&lt;br /&gt;
===Shortcuts===&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 drawings which largely blurs the&lt;br /&gt;
distinction between vector and raster editing. Instead of meticulously selecting some&lt;br /&gt;
objects and then performing an action on the selection, you can now select ''all''&lt;br /&gt;
objects (or all objects you are interested in) and apply the Tweak tool's brush to&lt;br /&gt;
smoothly and naturally change the shape or style of only those objects (or parts&lt;br /&gt;
thereof) ''that the brush touches''.&lt;br /&gt;
&lt;br /&gt;
The area of the tool's action - its ''brush'' - is marked by an orange-colored circular&lt;br /&gt;
outline that moves with your mouse cursor. 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.&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 mode or paint it by Color Paint&lt;br /&gt;
mode. You can also apply it to groups of objects; it will go into groups and act on&lt;br /&gt;
individual objects inside groups. If you're trying to use it without anything selected,&lt;br /&gt;
it will remind you by a statusbar message to select some objects.&lt;br /&gt;
&lt;br /&gt;
===Width===&lt;br /&gt;
&lt;br /&gt;
The width of the tool's brush, in the range from 1 to 100, can be changed by the&lt;br /&gt;
'''Width''' control in the tool's controls bar above the canvas. You can also change&lt;br /&gt;
width by '''Left''' and '''Right''' arrow keys (same as in the Calligraphy tool) at any&lt;br /&gt;
time (including during action) as well as '''Home''' and '''End'''. Also, as in Calligraphy&lt;br /&gt;
tool, the visible width of the brush is independent of zoom; simply zooming in or out is&lt;br /&gt;
often easier than adjusting the width if you want to cover a smaller or larger area of&lt;br /&gt;
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, also in the&lt;br /&gt;
range from 1 to 100. You can also change width by '''Up''' and '''Down''' arrow keys at&lt;br /&gt;
any time (including during action).&lt;br /&gt;
&lt;br /&gt;
If you have a pressure-sensitive tablet and your &amp;quot;Use pressure&amp;quot; button on the right-hand&lt;br /&gt;
end of the controls bar is on, then the force will also depend on how hard you actually&lt;br /&gt;
press your pen into your tablet, changing in the range from zero to whatever you set in&lt;br /&gt;
the Force control. If all you have is a mouse, then the force will be constant but still&lt;br /&gt;
settable by the Force control. &lt;br /&gt;
&lt;br /&gt;
===Path editing modes===&lt;br /&gt;
&lt;br /&gt;
The Tweak tool has a number of '''modes''', selectable by toggle buttons in the tool's&lt;br /&gt;
Controls bar and by keyboard shortcuts. Some of these modes change the shapes of &lt;br /&gt;
paths while others affect the colors of objects. All these modes share the Width and&lt;br /&gt;
Force controls but otherwise are quite different. Let's look at the path editing modes&lt;br /&gt;
first.&lt;br /&gt;
&lt;br /&gt;
Unlike the Node tool, to edit paths with the Tweak tool you don't need to worry about&lt;br /&gt;
where the nodes of a path are and how to manipulate them. You just apply the tool's&lt;br /&gt;
brush to any point, and the selected paths at that point will reshape smoothly and&lt;br /&gt;
naturally - as if made of soft jelly - regardless of where its nodes lie. If applied to&lt;br /&gt;
a shape or text object, the tool converts them to paths automatically.&lt;br /&gt;
&lt;br /&gt;
While not very useful for technical drawings, tweaking paths will be indispensable for&lt;br /&gt;
artistic uses of Inkscape - cartoons, drawings, sketches, anime, etc. This new&lt;br /&gt;
functionality is somewhat similar to the tools such as &amp;quot;Pucker&amp;quot; and &amp;quot;Bloat&amp;quot; in the&lt;br /&gt;
latest versions of Adobe Illustrator. &lt;br /&gt;
&lt;br /&gt;
There are currently six path editing modes in the Tweak tool: '''Push''', '''Shrink''',&lt;br /&gt;
'''Grow''', '''Attract''', '''Repel''', 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 '''Shrink''' and '''Grow''' 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 (Shrink) or outwards (Grow). 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 Calligraphy pen 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 Shrink action where you want the lines to become thinner (and the hatching to become lighter), up until total disappearance. If you press hard, shrinking works as an eraser, so you can easily clean the strokes' ends to make them thin, sharp, and uniform. Conversely, applying Grow makes strokes wider (i.e. the hatching becomes darker).&lt;br /&gt;
&lt;br /&gt;
:Of course, shrinking and growing are useful not only for calligraphic strokes. Same as with Push, with Shrink and Grow you can '''sculpt''' any path, spawning smooth treacle-like appendages with Grow and carving holes with Shrink. Unlike the &amp;quot;node sculpting&amp;quot; mode in the Node tool, however, this does not require adding new nodes to the shape.&lt;br /&gt;
&lt;br /&gt;
* The '''Attract''' and '''Repel''' modes work by moving each affected point on a path towards (Attract) or from (Repel) the cursor point. In some cases this may look similar to Shrink and Grow, but the difference is that shrinking/growing moves paths perpendicularly to the path in each point, whereas attracting/repelling moves them to or from the cursor regardless of the path shape. These modes are similar to the Pinch effect in AI; you can use them for various central-symmetric distortions in parts of your paths.&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, shrinking, or growing 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;
See the screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.46-tweak-path.png] for a few examples of using the path editing modes of the Tweak tool.&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;
inflates 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 inflating 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;
====Known problems====&lt;br /&gt;
&lt;br /&gt;
Known problems with the path editing modes in Tweak tool:&lt;br /&gt;
&lt;br /&gt;
# they don't work on open paths (an open path becomes closed if you tweak it);&lt;br /&gt;
# they are rather slow; &lt;br /&gt;
# they quickly eat memory; and &lt;br /&gt;
# they are sometimes buggy - thin calligraphic strokes may suddenly disappear or change their shape drastically as you're shrinking or growing them.&lt;br /&gt;
&lt;br /&gt;
For (4), 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;
===Color editing modes===&lt;br /&gt;
&lt;br /&gt;
The '''Color Paint''' and '''Color Jitter''' modes, unlike the path editing modes,&lt;br /&gt;
change the colors of objects instead of their shapes. Yet they share enough common&lt;br /&gt;
features with the path editing modes to be part of the same tool: These modes also use&lt;br /&gt;
a circular soft-edged brush controlled by the Width and Force parameters on the Controls&lt;br /&gt;
bar and affected by the pen pressure (if you have a pressure-sensitive tablet).&lt;br /&gt;
&lt;br /&gt;
* '''Color Paint''' applies the style of the tool to the selected objects under the brush. The style of the tool is visible in the style swatch at the rightmost end of the tool's control bar; it can be changed by clicking on the color palette or by any other style assignment command, such as Fill and Stroke dialog. ('''Note''': unlike all other tools, in Tweak tool in Color Paint mode you cannot assign style directly to selected objects; any style-setting command changes the tool's style instead.)&lt;br /&gt;
&lt;br /&gt;
:The fill from the tool's style applies to the fills of the painted objects, and the stroke applies to the strokes. If the tool's style has no fill or no stroke, it won't affect fills or strokes, correspondingly. For example, if you want to color the fills of objects blue but leave their strokes untouched, assign blue fill to the tool's style (just click blue on the palette) but set its stroke to None (middle-click the Stroke swatch in the statusbar). Similarly, master opacity in the tool's style affects master opacities of the touched objects (if the O channel is on, see below).&lt;br /&gt;
&lt;br /&gt;
:This mode allows you to literally paint over objects, shifting their colors towards the target style of the tool. For example, if you paint with yellow fill over a blue-filled object, the object will become greenish blue, then green, then yellowish green, and end up being exactly the yellow color you're painting with. This speed of this gradual transition depends on both Force parameter and pen pressure; also, objects touched by the periphery of the brush are less affected than those hit by the brush center. Overall, using this tool is very similar to a soft brush in a raster editor such as Gimp or Photoshop.&lt;br /&gt;
&lt;br /&gt;
* '''Color Jitter''' mode does not apply any color, but instead jitters (randomizes) the colors of the objects it touches. The force of the action determines how strong is the randomization, i.e. how far the colors deviate from the original values. This mode does not use the tool's style.&lt;br /&gt;
&lt;br /&gt;
Both modes work on flat fills and gradients; for gradients, the tool takes into account not only the position of the entire object with gradient, but also the position of each gradient stop relative to the brush. This means that, for example, you can change the blue color only in an object filled with blue-red gradient simply by painting over its blue end with a brush small enough to not touch the red. (Note that color tweaking does not create gradients on objects that used flat color before, but only adjusts existing gradients in the drawing.)&lt;br /&gt;
&lt;br /&gt;
See the screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.46-tweak-color.png] for a few examples of using the color editing modes of the Tweak tool.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Channels====&lt;br /&gt;
&lt;br /&gt;
Color Paint and Color Jitter honor the '''Channels''' control. This control comprises&lt;br /&gt;
the four buttons: '''H''', '''S''', '''L''', and '''O''', which allow you to turn on and off&lt;br /&gt;
the tool's action on the object's hue, saturation, lightness, and opacity,&lt;br /&gt;
correspondingly. For example, if you want to raise the saturation of some part of your&lt;br /&gt;
drawing without changing the hue, select some maximum-saturation color (e.g. pure red)&lt;br /&gt;
and turn off all Channels buttons except S. Similarly, you can replace the hues without&lt;br /&gt;
affecting saturation or lightness (only H pressed), or lighten/darken all colors without&lt;br /&gt;
changing their hues and saturation (only L pressed). Pressing O allows you to apply the&lt;br /&gt;
master opacity from the tool's style to the master opacity of objects (but not fill or&lt;br /&gt;
stroke opacity).&lt;br /&gt;
&lt;br /&gt;
====Usage notes====&lt;br /&gt;
&lt;br /&gt;
Color painting with Tweak tool is similar, but not exactly analogous to bitmap&lt;br /&gt;
painting. Even though the tool itself works as a soft brush, it still applies its color&lt;br /&gt;
to vector objects, which behave as vector objects usually do. For example, if you want&lt;br /&gt;
to change the tint of the face in your drawing, and if a hand in the drawing is part of&lt;br /&gt;
the same object as the face, that hand will change its tint too even if it's located far&lt;br /&gt;
from the point you are painting. (We foresee a &amp;quot;fracture&amp;quot; command in one of the next&lt;br /&gt;
versions of Inkscape which will help you turn a monolithic object into a mosaic of small&lt;br /&gt;
fragments that will be then easy to paint with Tweak tool.)  Still, even with this&lt;br /&gt;
limitation, color painting is a novel way of dealing with vector drawings which allows&lt;br /&gt;
you to quickly and intuitively make adjustments which would be awkward and slow with&lt;br /&gt;
traditional approach.&lt;br /&gt;
&lt;br /&gt;
Drawings containing patterns or scatterings of small independent objects are best suited&lt;br /&gt;
for color painting with Tweak tool. Examples include:&lt;br /&gt;
&lt;br /&gt;
* freehand drawings with Calligraphy pen, consisting of many separate strokes;&lt;br /&gt;
&lt;br /&gt;
* gradient meshes imported from Adobe Illustrator files (Inkscape renders these meshes as lattices of small polygons; while there's no direct support for gradient meshes in Inkscape yet, color painting on such lattices is almost as good);&lt;br /&gt;
&lt;br /&gt;
* text converted to paths and with Break Apart command applied so that each letter is a separate path;&lt;br /&gt;
&lt;br /&gt;
* patterns made with the Tile Clones command; note that you need to unset the fill and/or stroke on the original object and use the Color tab to assign some initial color to the clones - this will make them paintable with the Tweak tool without unlinking.&lt;br /&gt;
&lt;br /&gt;
Moreover, color tweaking can be useful for compositions with a few objects or even for&lt;br /&gt;
single objects. Unlike all other color selection methods, painting with the Tweak tool&lt;br /&gt;
implements the ''color mixing'' metaphor which is much more familiar to traditional&lt;br /&gt;
artists than RGB sliders or even the color wheel. For example, start with a rectagle of&lt;br /&gt;
pure blue color; then, pick different colors by Color Paint and apply light touches with&lt;br /&gt;
minimum Force and minimum pen pressure: add a little green, a little brown, a little&lt;br /&gt;
yellow, etc. until you have the exact hue you need. Similarly, you can whiten or blacken&lt;br /&gt;
any hue by admixing white or black.&lt;br /&gt;
&lt;br /&gt;
You can also use color tweaking to add a tint, darken/lighten, saturate/desaturate, or&lt;br /&gt;
color jitter your entire drawing. Just select all in all layers, zoom out, choose a&lt;br /&gt;
large brush width so it covers all of the drawing, and apply a little color tweaking&lt;br /&gt;
(with minimum Force) that will therefore affect all visible objects.&lt;br /&gt;
&lt;br /&gt;
===Keyboard shortcuts===&lt;br /&gt;
&lt;br /&gt;
* '''W''', '''Shift+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+S''': switch to the Shrink mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+G''': switch to the Grow mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+A''': switch to the Attract mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+E''': switch to the Repel mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+R''': switch to the Roughen mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+C''': switch to the Color Paint mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+J''': switch to the Color Jitter 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 Shrink (while Ctrl is down)&lt;br /&gt;
&lt;br /&gt;
* '''Shift+Ctrl+mouse drag''': temporarily switch to Grow (while Shift+Ctrl is down)&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 create drawings or objects that appear three-dimensional. The new '''3D box tool''' helps you create such drawings by automating the most common operation: creating a box in a given 3D 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; Shift+drag without releasing the mouse button to extrude in Z direction.&lt;br /&gt;
&lt;br /&gt;
* Adjust any of its 3 dimensions by handles. The 4 handles on the front X/Y side resize it, the four ones on the back X/Y side expand/contract the box in Z direction. With Shift, the functions of handles on front and back sides are reversed. With Ctrl, the side-resizing handles snap to the coordinate axes or diagonals.&lt;br /&gt;
&lt;br /&gt;
* Move a 3D box &amp;quot;in perspective&amp;quot; by dragging its center; without modifiers, movement occurs within the XY-plane (press Ctrl to constrain the movement to the directions of the coordinate axes or diagonals), with Shift the box moves parallel to the Z-axis.&lt;br /&gt;
&lt;br /&gt;
* Adjust the vanishing points of a perspective by dragging them on the canvas (see below) or toggling their states; all boxes sharing this perspective are affected by a vanishing point move. &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;
In SVG, a 3D box is represented as a '''group''' (svg:g) with a special extension attribute (in Inkscape's 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;
===Keyboard shortcuts===&lt;br /&gt;
&lt;br /&gt;
* '''X''', '''Shift+F4''': switch to the 3D box tool&lt;br /&gt;
&lt;br /&gt;
* The various kinds of parentheses, namely '''[''' ''']''', '''(''' ''')''', '''{''' '''}''', can be used to rotate infinite (i.e., parallel) perspective lines in X-, Y-, and Z-direction, respectively. Closing parentheses rotate clockwise and opening parentheses rotate counterclockwise. The angle of rotation is taken from the preferences. Pressing '''Alt''' reduces the amount of rotation to 1 screen pixel.&lt;br /&gt;
&lt;br /&gt;
* When the 3D box tool is active, '''Shift+X''', '''Shift+Y''', and '''Shift+Z''' toggle perspective lines in the corresponding direction between &amp;quot;converging&amp;quot; and &amp;quot;parallel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Gradient Tool==&lt;br /&gt;
===Selecting multiple stops===&lt;br /&gt;
'''More than one gradient stop''' can be selected at a time. Shortcuts for working with multiple stop selections are generally modeled on the Node tool. &lt;br /&gt;
* Add a stop to the selected stops by '''Shift+click'''.&lt;br /&gt;
* Press '''Ctrl+A''' to select all stops in the selected objects.&lt;br /&gt;
* '''Shift+drag''' around stops to add them to selection.&lt;br /&gt;
Multiple selected stops:&lt;br /&gt;
*Can be moved together by '''mouse drag''' or by '''arrow keys'''. For example, creating a linear gradient, then press Ctrl+A to select all stops and use arrow keys to move the entire gradient as a whole.&lt;br /&gt;
*Can be deleted at the same time by pressing '''Del'''.&lt;br /&gt;
An always up-to-date description of the current handle selection is provided in the statusbar in the Gradient tool, including the number of selected handles (and the type of the single selected handle), as well as the total number of handles and selected objects.&lt;br /&gt;
&lt;br /&gt;
===Editing intermediate stops===&lt;br /&gt;
'''Intermediate stops''' in gradients can be added, deleted, and edited on canvas (previously this was only possible in the Gradient Editor dialog).&lt;br /&gt;
*Stops can be added by '''double clicking''' or by '''Ctrl+Alt+Click''' on the gradient line. Also, you can '''drag-and-drop''' a color from the palette onto the gradient line to create a new stop with this color. Dropping a color on an existing stop changes the color of that stop.&lt;br /&gt;
*When two or more adjacent stops are selected, pressing '''Ins''' adds stops in the middles of all selected stop intervals.&lt;br /&gt;
*Intermediate stops can be '''mousedrag'''ged or moved by '''arrow keys''' along their gradient line, within the limits of the adjacent unselected stops (or end handles). &lt;br /&gt;
:*Dragging with '''Ctrl''' moves the selected stops snapping them to 1/10 fractions of the available range.&lt;br /&gt;
:*Dragging with '''Alt''' moves the selected stops depending on how close each one is to the stop being dragged, using a smooth bell-like curve similar to the node sculpting feature in Node tool. This makes it easy to approximate different gradient profiles; for example, if you have a two-stop gradient that you want to shape according to a curve profile, select both ends of the gradient, press '''Ins''' a few times to add a number of intermediate nodes, then '''Alt+drag''' a node in the middle to smoothly profile the gradient.&lt;br /&gt;
*Stops can also be moved by '''arrow keys''' with all the regular modifiers ('''Shift''' for 10x movement, '''Alt''' for pixel-size movement at the current zoom, '''Shift+Alt''' for 10 pixels movement at the current zoom).&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;
*Pressing '''Ctrl+L''' with some intermediate stops selected attempts to ''simplify'' the selected portion of the gradient, removing those stops that can be removed without too much change in the way the gradient looks. In particular, new stops created by double-clicking or pressing Ins initially do not change the appearance of the gradient, so if you press Ctrl+L, all redundant stops that weren't moved or repainted since creation will be deleted.&lt;br /&gt;
&lt;br /&gt;
===Style of gradient stops===&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;
*When one or more gradient stops are selected, using the Copy command ('''Ctrl+C''') copies to the clipboard the style (color and opacity) of the selected stop or the averaged style of several selected stops, not the entire object with gradient as before. This means you can now copy/paste style between stops: select the source stop(s), copy, select the destination stop(s), paste style ('''Ctrl+Shift+V'''). With several selected stops, this also allows you to easily average their colors and opacities by copying them and pasting the style back onto them. (After that, redundant gradient stops can be removed by simplification with '''Ctrl+L''').&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;
===Automatic duplication of gradients===&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). The Duplicate button is therefore removed. &lt;br /&gt;
&lt;br /&gt;
However, to accommodate the needs of users who have relied on sharing the same gradient definition across objects, this behavior can be optionally suppressed. The '''Prevent sharing of gradient definitions''' checkbox on the Misc tab of Inkscape Preferences is by default checked; if you uncheck it, Inkscape does not automatically copy gradient definitions for new objects, which means that copy/pasting, duplicating, pasting style, and explicit assignment of a gradient to an object via the Gradient tool controls results in a shared gradient definition, so that changing the colors or mid-stop positions of the gradient on one object (but not changing the coordinates of the end handles) affects all other objects that share the same definition.&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), as well as to '''-1/3''', '''-1/2''', '''-1''', '''-2''', '''-3''', etc. This way you can, for example, mirror any object around one of the edges of its box. (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;
&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;
* As a long-requested feature, two entry fields are added to the toolbar which allow precise editing of the coordinates of selected nodes.&lt;br /&gt;
&lt;br /&gt;
==Rectangle Tool==&lt;br /&gt;
&lt;br /&gt;
* '''Ctrl+dragging''' now also allows the creation of rectangles with sides constrained to the '''golden ratio''' (approx. 1 : 1.618034), not only integer ratios.&lt;br /&gt;
&lt;br /&gt;
==Ellipse Tool==&lt;br /&gt;
&lt;br /&gt;
* It is now easy to create ellipses/circles passing through particular points. Normally, the starting and ending point of the mouse drag mark the corners of the '''bounding box'''. Now the '''Alt''' modifier can be used to enlarge the ellipse so that its '''circumference''' passes through these two points.&lt;br /&gt;
&lt;br /&gt;
* '''Ctrl+Alt+drag''' is an exception from this rule. It creates a perfect circle whose diameter is defined by the starting and ending point of the drag.&lt;br /&gt;
&lt;br /&gt;
==Pen/Pencil Tools==&lt;br /&gt;
&lt;br /&gt;
These tools can now create '''single dots''' by '''Ctrl+click''' on the canvas. This creates a small circle filled with the current stroke color. The radius can be set in the Preferences of the respective tools (it is specified as a multiple of the current stroke width). '''Shift+Ctrl+click''' creates a dot twice the specified size, and '''Alt+Ctrl+click''' varies the size of the created dots randomly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Dropper Tool==&lt;br /&gt;
&lt;br /&gt;
The shortcut 'D' is now used to &amp;lt;i&amp;gt;toggle&amp;lt;/i&amp;gt; (not just switch to) the dropper tool - much like space is used to toggle the selector tool. That is, pressing 'D' a second time switches back to the tool used before.&lt;br /&gt;
&lt;br /&gt;
=SVG features=&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;
==SVG 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 '''feColorMatrix''' filter primitive applies a matrix transformation to colour of each rendered pixel. This allows for effects like turning object to grayscale, modifying colour saturation and changing colour hue.&lt;br /&gt;
&lt;br /&gt;
* The '''feComposite''' filter primitive composites two images using one of the [http://en.wikipedia.org/wiki/Porter-Duff Porter-Duff blending modes] (described in paper Compositing Digital Images by T. Porter and T. Duff, published in SIGGRAPH '84 Conference Proceedings, Association for Computing Machinery, Volume 18, Number 3, July 1984) or the aritmetic mode described in SVG standard. Porter-Duff blending modes are essentially logical operations between the images. For example, xor mode shows the areas, where either one of the objects is, but not the areas where both of the objects are. Arithmetic mode lets you specify coefficients k1-k4 for blending equation (result colour) = k1 * (first input colour) * (second input colour) + k2 * (first input colour) + k3 * (second input colour) + k4.&lt;br /&gt;
&lt;br /&gt;
* The '''feConvolveMatrix''' lets you specify a [http://en.wikipedia.org/wiki/Convolution Convolution] to be applied on the image. Common effects created using convolution matrices are blur, sharpening, embossing and edge detection. There's a fairly good explanation and some example matrices at [http://www.gamedev.net/reference/programming/features/imageproc/page2.asp www.gamedev.net/reference/programming/features/imageproc/page2.asp]. Note that while gaussian blur can be created using this filter primitive, the special gaussian blur primitive is faster and resolution-independent.&lt;br /&gt;
&lt;br /&gt;
* Filter primitives '''feDiffuseLighting''' and '''feSpecularLighting''' create lighting maps for the object in input image. SVG doesn't have concept of third dimension, so these filters use alpha channel of input image as a height map: the more opaque given point in input image is, the nearer spectator it is considered to be. There exists an example for using these in Inkscape distribution, in share/examples/lighting_effects.svg or [http://inkscape.svn.sourceforge.net/viewvc/*checkout*/inkscape/inkscape/trunk/share/examples/lighting_effects.svg?revision=15523 in SVN]&lt;br /&gt;
&lt;br /&gt;
* The '''feDisplacementMap''' filter primitive displaces the pixels in the first input using the second input as a displacement map, that shows from how far the pixel should come from. Classical examples are whirl and pinch effects, that can be found in most image manipulation programs and even in some screensavers, where this kind off effect is moving around screen, twisting desktop beneath it.&lt;br /&gt;
&lt;br /&gt;
* The '''feFlood''' filter primitive fills its region with a given color and opacity. It can be used as an auxiliary tool, usualy in combination with other filter primitives, in order to facilitate some common color handling operations.&lt;br /&gt;
&lt;br /&gt;
* The '''feImage''' filter primitive allows using external images as part of filtering chain. For example, one could use external image as a displacement map for feDisplacementMap or as a height map for lighting effects. Note that while SVG standard allows using other parts of the SVG file in this filter primitive, the current Inkscape implementation only allows external images.&lt;br /&gt;
&lt;br /&gt;
* The '''feMerge''' filter primitive composites several temporary images inside the filter primitive to a single image. It uses normal alpha compositing for this. This is equivalent to using several feBlend primitives in 'normal' mode or several feComposite primitives in 'over' -mode.&lt;br /&gt;
&lt;br /&gt;
* The '''feMorphology''' filter primitive provides erode and dilate effects, that are common in image manipulation programs. With erode, darker and more transparent areas spread to lighter and more opaque areas, whereas with dilate lighter and more opaque areas spread to darker and more transparent areas. For single-colour objects, this basically means, erode makes the object thinner and dilate makes it thicker.&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, where the shadow is in a slightly different position than the actual object.&lt;br /&gt;
&lt;br /&gt;
* The '''feTurbulence''' filter primitive renders [http://en.wikipedia.org/wiki/Perlin_noise Perlin noise]. This kind of noise is useful in simulating several nature phenomena like clouds, fire and smoke and in generating complex textures like marble or granite.&lt;br /&gt;
&lt;br /&gt;
See also wiki page [[Filter Effects]] for more info on filters in Inkscape in general.&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 (LPE)=&lt;br /&gt;
&lt;br /&gt;
'''Live path effects''' (not to be confused with extension effects or SVG filters) are a new way to &amp;lt;b&amp;gt;non-destructively modify path and shape objects&amp;lt;/b&amp;gt;. Path effects affect the path data of an object but not its style. The original path is preserved and can be edited directly on-canvas, and the path effect applied to it will be updated live. &lt;br /&gt;
&lt;br /&gt;
In this version, we include several path effects that are analogous to the corresponding extension effects (such as Path along Path effect and Pattern along Path that replaces the extension of the same name). The most important advantage of path effects is that they are, indeed, live - you can still edit the original path and the effect will update in real time (unlike the extension effects which were one-time one-way transformations). In the future, we plan to reimplement most if not all of path-changing extensions as live path effects.&lt;br /&gt;
&lt;br /&gt;
Live path effects were developed by Johan Engelen as part of the GSoC 2007.&lt;br /&gt;
&lt;br /&gt;
==Details about operation==&lt;br /&gt;
The following schematic tries to explain how LPE work.&lt;br /&gt;
&lt;br /&gt;
    original style  ------------&amp;gt;  output style&lt;br /&gt;
    original path   --&amp;gt;  LPE  --&amp;gt;  output path&lt;br /&gt;
                          ^&lt;br /&gt;
                          |&lt;br /&gt;
                      parameters&lt;br /&gt;
&lt;br /&gt;
The original style and path are from the path that the effect is applied on. The output is what is visible on screen. What is very important to notice is that &amp;lt;b&amp;gt;output style equals original style&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameters can be paths, numbers, points, text, in principle anything.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Applying effects==&lt;br /&gt;
Path effects are applied through the Path Effects dialog (opened from the Path menu, or by pressing Ctrl+Shift+7. This dialog is also used for controlling the effect's parameters and for removing effects.&lt;br /&gt;
&lt;br /&gt;
When a path with a path effect applied is selected, the statusbar description mentions that, for example &amp;quot;'''Path''' (4 nodes, path effect)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There is a special Paste Path Effect command (Ctrl+7) that can be used to copy effects from one path to another.&lt;br /&gt;
&lt;br /&gt;
==Editing effect parameters==&lt;br /&gt;
When switching to the node edit tool (&amp;lt;b&amp;gt;F2&amp;lt;/b&amp;gt;), the &amp;lt;b&amp;gt;original path&amp;lt;/b&amp;gt; can be edited. The original path is shown as a red helper path. Normal path operations, like simplify, still work.&lt;br /&gt;
&lt;br /&gt;
Some parameters of effects can be edited on-canvas. For example, path parameters can be node-edited, by pressing the &amp;quot;edit on-canvas&amp;quot; button in the Path Effects dialog. &amp;lt;b&amp;gt;Press &amp;quot;7&amp;quot; to cycle through the different on-canvas editable parameters.&amp;lt;/b&amp;gt; This way, one can edit the parameters without opening the Path Effects dialog. The statusbar tells the name of the parameters that is currently being shown.&lt;br /&gt;
&lt;br /&gt;
==Available effects==&lt;br /&gt;
&lt;br /&gt;
===Path along path===&lt;br /&gt;
The &amp;lt;b&amp;gt;Path along Path&amp;lt;/b&amp;gt; effect can curve a path along another path. When this effect is applied to a path, it can be bend along another path (called ''bend path''). With the node edit tool, both the original path and the bend path can be changed &amp;lt;b&amp;gt;on-canvas&amp;lt;/b&amp;gt; and the result is &amp;lt;b&amp;gt;updated live&amp;lt;/b&amp;gt;. This provides a direct equivalent of &amp;quot;vector brushes&amp;quot; or &amp;quot;skeletal strokes&amp;quot; features in other vector editors. &lt;br /&gt;
&lt;br /&gt;
In the effect's control panel in the Path Effects dialog, you can select how many copies of the original path are put along the bend path (either '''single''' or '''repeated''') and whether it is '''stretched''' to fill the bend path. In this dialog you'll also find a button to edit the bend path on-canvas and a button to '''paste''' a new bend path from clipboard. A possible workflow is this: you select and copy the new bend path to the clipboard, then select the path you want to bend, apply the Path along path effect, and paste the bend path with the paste button next to 'bend path'.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-pathalongpath.svg&lt;br /&gt;
&lt;br /&gt;
===Pattern along path===&lt;br /&gt;
The &amp;lt;b&amp;gt;Pattern along Path&amp;lt;/b&amp;gt; effect can curve a path along another path. When this effect is applied to path A (called ''skeleton''), another path B (called ''pattern'') can then be passed as a parameter. The result is that path B is bent along path A. With the node edit tool, path A can be changed &amp;lt;b&amp;gt;on-canvas&amp;lt;/b&amp;gt; and the result is &amp;lt;b&amp;gt;updated live&amp;lt;/b&amp;gt;. This provides a direct equivalent of &amp;quot;vector brushes&amp;quot; or &amp;quot;skeletal strokes&amp;quot; features in other vector editors. &lt;br /&gt;
&lt;br /&gt;
In the effect's control panel in the Path Effects dialog, you can select how many copies of the pattern are attached (either '''single''' or '''repeated''') and whether the pattern is '''stretched''' to fill the skeleton path. You can also choose the pattern for the selected skeleton [either directly or] by '''pasting''' it from clipboard (that is, you select and copy to the clipboard the pattern, then select the skeleton, apply the Path along path effect, and paste the pattern). The '''Scale width''' parameter allows you to change the width of the pattern applied to the path.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-pathalongpath.svg&lt;br /&gt;
&lt;br /&gt;
===Stitch Subcurves===&lt;br /&gt;
The &amp;lt;b&amp;gt;Stitch Subcurves&amp;lt;/b&amp;gt; effect connects points from two subpaths of the path with straight line or curved segments, i.e. the &amp;lt;i&amp;gt;stitches&amp;lt;/i&amp;gt;. It looks a lot like the Effect Lines from Expression 3. The result is also referred to as &amp;quot;String Art&amp;quot;. For some examples of string art, see http://members.shaw.ca/jillbritton/string_art/jbstringart.htm. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;b&amp;gt;shape&amp;lt;/b&amp;gt; of the &amp;lt;b&amp;gt;connecting paths&amp;lt;/b&amp;gt; can controlled by the &amp;lt;b&amp;gt;stroke path&amp;lt;/b&amp;gt; parameter. This could be used to draw 'hair-shaped' connecting paths with sharp end-tips. Other controls include the &amp;lt;b&amp;gt;number of paths&amp;lt;/b&amp;gt;, the variation in spacing between the connecting paths (&amp;lt;b&amp;gt;clustering&amp;lt;/b&amp;gt;) and also whether the start and end points of the stitches should like exactly on the original subcurves or can &amp;lt;b&amp;gt;stray randomly&amp;lt;/b&amp;gt; around them. Finally the width of the stroke path can be varied.&lt;br /&gt;
&lt;br /&gt;
Note that this effect can only be applied to a path with two subpaths in it, hence '&amp;lt;b&amp;gt;sub&amp;lt;/b&amp;gt;curve' in the name. Use Path &amp;gt; Combine to create such a path from two separate paths.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-curvestitch.svg&lt;br /&gt;
&lt;br /&gt;
===Gears===&lt;br /&gt;
The &amp;lt;b&amp;gt;Gears&amp;lt;/b&amp;gt; effect is a toy effect. It generates a chain of interconnected gears from the path that has the effect applied to it. The nodes of the path define the centers of the gears. The first 3 nodes are special; the first defines the start angle of the chain, the second defines the center of the first gear and the third knot specifies the radius of the first gear. That is, to create a chain of 2 gears, you will need a path with 4 nodes; for 3 gears, 5 nodes, and so on. &lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-gears.svg&lt;br /&gt;
&lt;br /&gt;
==Development of new effects==&lt;br /&gt;
One of the goals of the Summer of Code project was to make it easy to create new effects. There is a framework that greatly simplifies effect implementation; very little code is needed to get the effect hooked into Inkscape. This leaves valuable time for the actual effect to be implemented. See the http://wiki.inkscape.org/wiki/index.php/MakingLivePathEffects wiki page for an explanation of how to get started with your own effect!&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 '''Modify Path &amp;gt; Edge 3D''' extension creates black, grey and white paths around a shape, then blurs and clips them for a 3D effect.&lt;br /&gt;
&lt;br /&gt;
* The new '''Generate from Path &amp;gt; Dimensions''' extension creates CAD style dimensions that are basically arrows with lengths equal to selection's bounding box and captions representing length.&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 new '''Color &amp;gt; Randomize''' extension allows you to change the color via hue, saturation and lightness check boxes. This is useful if you want to colorize lots of shapes at the same time.&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;
*The '''Generate Template &amp;gt; Perfect-Bound Cover''' extension creates templates for wraparound covers for perfect-bound books using US size and paper weight measurements.   This extension will resize the document to include the width, height, spine width, and bleed measurements that are provided to the extensions, so it should be the first operation done before designing.&lt;br /&gt;
&lt;br /&gt;
== XSLT effects ==&lt;br /&gt;
&lt;br /&gt;
* '''XSLT''' is now supported for input, output and effect extensions.  This is used to support the XAML file format (both import and export) and the Adobe Illustrator SVG import which removes Adobe's stuff from SVG.&lt;br /&gt;
&lt;br /&gt;
== ImageMagick effects ==&lt;br /&gt;
&lt;br /&gt;
New raster operations available through the effects drop-down menu, powered by the ImageMagick library. For any of these effects to work, you need to have an '''image object selected''' in the drawing. &lt;br /&gt;
&lt;br /&gt;
* '''Adaptive Threshold''' applies adaptive thresholding to the bitmap. Average color of rectangle provided by '''width''' and '''height''' used as threshold value. Use '''offset''' to apply a different threshold than the average.&lt;br /&gt;
&lt;br /&gt;
* '''Add Noise''' adds random noise of certain types to the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Blur''' blurs the bitmap, using '''radius''' as the amount of blur. Higher radius means more blur. (Note that unlike the vector Gaussian blur of objects, this bitmap blur will not extend the edges of the image, so it may appear truncated at the edges.)&lt;br /&gt;
&lt;br /&gt;
* '''Channel''' extracts the specified channel from the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Charcoal''' applies a charcoal drawing style to a bitmap. Radius controls the width (or detail) of charcoal strokes. Higher '''radius''' means lower detail. '''Sigma''': the higher it is, the less defined the charcoal is.&lt;br /&gt;
&lt;br /&gt;
* '''Colorize''' overlays the bitmap with a given color at a given intensity.&lt;br /&gt;
&lt;br /&gt;
* '''Contrast''' lightly enhances the contrast (difference between lights and darks) of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Cycle Colormap''' cycles the colormap of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Despeckle''' reduce the speckle noise in a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Edge''' hilights edges in a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Emboss''' embosses a bitmap, hilighting edges with 3D effect.&lt;br /&gt;
&lt;br /&gt;
* '''Enhance''' enhance a bitmap, minimizing noise.&lt;br /&gt;
&lt;br /&gt;
* '''Equalize''' equalizes a bitmap. Histogram equalization.&lt;br /&gt;
&lt;br /&gt;
* '''Flop''' mirrors a bitmap, reflecting each scanline in the horizontal direction.&lt;br /&gt;
&lt;br /&gt;
* '''Gaussian Blur''' blurs a bitmap, more strongly than regular blur.&lt;br /&gt;
&lt;br /&gt;
* '''Implode''' sucks everything towards the center of the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Level''' scales values falling between the given '''Black Point''' to '''White Point''' range to the full color range.&lt;br /&gt;
&lt;br /&gt;
* '''Level Channel''' acts the same way as level but for only one channel.&lt;br /&gt;
&lt;br /&gt;
* '''Median Filter''' filters a a bitmap by replacing each pixel component with the median color in a circular neighborhood&lt;br /&gt;
&lt;br /&gt;
* '''Modulate''' adjusts the percent hue, saturation, and brightness of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Negate''' takes the inverse of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Normalize''' normalizes a bitmap, expanding color range to the full possible range of color.&lt;br /&gt;
&lt;br /&gt;
* '''Oil Paint''' stylizes a bitmap so that it appears to be painted with oils.&lt;br /&gt;
&lt;br /&gt;
* '''Opacity''' modifies the opacity channel of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Raise''' alters the lightness of the edges of a bitmap to create a raised appearance, much like a frame.&lt;br /&gt;
&lt;br /&gt;
* '''Reduce Noise''' reduces noise in a bitmap by using a noise peak elimination filter.&lt;br /&gt;
&lt;br /&gt;
* '''Shade''' shades a bitmap by simulating a distant light source&lt;br /&gt;
&lt;br /&gt;
* '''Sharpen''' sharpens a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Solarize''' solarizes a bitmap, like overexposing photographic film.&lt;br /&gt;
&lt;br /&gt;
* '''Spread''' randomly spread pixels in a bitmap within the radius of '''amount'''.&lt;br /&gt;
&lt;br /&gt;
* '''Swirl''' swirls the bitmap around the center point.&lt;br /&gt;
&lt;br /&gt;
* '''Threshold''' thresholds a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Unsharpmask''' sharpens a bitmap using an unsharp mask algorithm.&lt;br /&gt;
&lt;br /&gt;
* '''Wave''' alters a bitmap along the sine wave.&lt;br /&gt;
&lt;br /&gt;
These effects are part of the Google Summer of Code 2007, coded by Christopher Brown.&lt;br /&gt;
&lt;br /&gt;
== Misc ==&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;
* A new parameter, '''precision''' is added to the parameter definitions in the [[MakingAnINX|inx file format]], allowing you to set the number of digits in that parameter's spinbutton in the effect UI.&lt;br /&gt;
&lt;br /&gt;
= Stock patterns =&lt;br /&gt;
&lt;br /&gt;
Since a few versions ago, Inkscape supports patterns in fill and stroke. However, up to now the only way to apply a pattern was by creating it in the document using the Object(s) to Pattern command, which wasn't very convenient. Now, if you switch an object's fill or stroke to pattern using the Fill&amp;amp;Stroke dialog, you will get a drop-down list with a number of predefined '''stock patterns''' that you can apply simply by selecting them from the list:&lt;br /&gt;
&lt;br /&gt;
*A selection of plain '''stripes''' differing by the ratio of the stripe width to gap width (for example, the &amp;quot;Stripes 1:2&amp;quot; pattern has gaps twice as wide as stripes), in the range from 4:1 to 1:64. All stripes patterns are in two versions: with black stripes and with white stripes (gaps are always transparent).&lt;br /&gt;
&lt;br /&gt;
*Two '''checkerboard''' patterns with black and white odd squares (even squares are transparent)&lt;br /&gt;
&lt;br /&gt;
*'''Packed circles''': a hexagonal pattern of black circles with transparent gaps.&lt;br /&gt;
&lt;br /&gt;
*'''Polka dots''': a scattering of dots designed to look randomly but evenly distributed so as to mask the regularity of the repeating pattern. There are three size variants of this pattern (small, medium, and large dots) and two color variants (black and white dots).&lt;br /&gt;
&lt;br /&gt;
*'''Wavy''' is a pattern of wavy lines.&lt;br /&gt;
&lt;br /&gt;
*'''Camouflage''' is a green-toned protective pattern such as that used by the military.&lt;br /&gt;
&lt;br /&gt;
*'''Ermine''' is the traditional heraldic pattern representing stylized stoat furs with black tails.&lt;br /&gt;
&lt;br /&gt;
*Three bitmap patterns: '''sand''', '''cloth''', and '''old paint''' are based on seamless photographic tiles and allow you to add some natural texture to your drawing. All of them are grayscale, so you can make objects with these textures semitransparent and overlay them over other colored objects to &amp;quot;texturize&amp;quot; them. &lt;br /&gt;
&lt;br /&gt;
After applying a stock pattern, switch to Node tool to edit the location, scale, and rotation of the pattern via on-canvas handles.&lt;br /&gt;
&lt;br /&gt;
All stock patterns are stored in the file &amp;lt;code&amp;gt;patterns/patterns.svg&amp;lt;/code&amp;gt; in Inkscape's &amp;lt;code&amp;gt;share&amp;lt;/code&amp;gt; directory (typically &amp;lt;code&amp;gt;/usr/share/inkscape&amp;lt;/code&amp;gt; on Linux, &amp;lt;code&amp;gt;&amp;lt;i&amp;gt;inkscape-dir&amp;lt;/i&amp;gt;/share&amp;lt;/code&amp;gt; on Windows). You can add your own patterns to this file or replace it with any other SVG file containing the patterns you need.&lt;br /&gt;
&lt;br /&gt;
=Markers=&lt;br /&gt;
&lt;br /&gt;
* A new command, '''Objects to Marker''', was added to the Object menu. It converts the current selection into a marker. After you do it, the selection is deleted, but the list of markers in the Fill and Stroke dialog, Stroke style tab, now contains the new marker that you can apply to paths. &lt;br /&gt;
&lt;br /&gt;
:* When creating the new marker, Inkscape assumes that the original objects are oriented as they should be on a horizontal path that goes from left to right. For example, if you create a new arrowhead that you plan to use as an end marker, make it point horizontally to the right before converting it to marker. &lt;br /&gt;
&lt;br /&gt;
:* Similar to standard markers, the user-created marker will scale up and down as you change the stroke width. Its initial size (i.e. the size of the object that you have turned into a marker) corresponds to the 1 px stroke.&lt;br /&gt;
&lt;br /&gt;
:* When you create a new marker, Inkscape uses the rotation center of the (first) selected object as the anchor point, i.e. the point which will coincide with the node to which that marker is attached. By default, the rotation center is in the center of the object's bounding box, which means the newly created marker will be centered around its node. If you move the rotation center, for example, to one of the corners of the object, the new marker will touch its node by that corner.&lt;br /&gt;
&lt;br /&gt;
* Several new '''UML markers''' were added to the standard set, including filled and hollow diamonds and triangles.&lt;br /&gt;
&lt;br /&gt;
* '''Master opacity''' did not apply to path markers as it should; this is fixed.&lt;br /&gt;
&lt;br /&gt;
* '''Stock markers''', if used in the document, now appear in the &amp;quot;this document's markers&amp;quot; section at the top of the marker lists in the Fill &amp;amp; Stroke dialog.  Before, any markers with stock IDs (including markers modified by the user) were hidden, making it difficult to work with modified stock markers.&lt;br /&gt;
&lt;br /&gt;
=Color management=&lt;br /&gt;
&lt;br /&gt;
== Calibrated SVG color including CMYK ==&lt;br /&gt;
&lt;br /&gt;
Inkscape now supports color-managed color definitions that use a colorspace other than sRGB (for example Adobe RGB, or calibrated CMYK colors). In the SVG file, this is done using the&lt;br /&gt;
optional &amp;quot;icc-color(...)&amp;quot; paint components as described in section 11.2 &amp;quot;Specifying paint&amp;quot; of the SVG 1.1 specification&lt;br /&gt;
[http://www.w3.org/TR/SVG11/painting.html#SpecifyingPaint]. A fallback sRGB value will be used, for non color-managed workflows. This allows for the use of calibrated color spaces, including using CMYK values that are preserved across applications.&lt;br /&gt;
&lt;br /&gt;
The new CMS color selector tab allows these colors to be edited.&lt;br /&gt;
&lt;br /&gt;
== Display adjustment ==&lt;br /&gt;
&lt;br /&gt;
In Inkscape Preferences, Color Management tab, there's are new options for enabling display adjustment; you can select any calibration profile (an ICC file) suitable for your display. Options for rendering intent can also be chosen.&lt;br /&gt;
&lt;br /&gt;
=== Per-window adjustment ===&lt;br /&gt;
Display adjustment is enabled and disabled per each editing window. This allows for simultaneous viewing of adjusted and unadjusted views of a single document by using multiple windows. There is a toggle at the bottom-right corner of the scrollbars that allows for turning on and off display adjustment. It also will be disabled to provide visible feedback when no profile is set to be available for adjustment.&lt;br /&gt;
&lt;br /&gt;
=== XICC Support ===&lt;br /&gt;
On X11-based systems (i.e. Unix and Mac OSX), use of [[http://www.burtonini.com/computing/x-icc-profiles-spec-latest.html ICC Profiles In X Specification]] (or XICC) can be enabled. Support for version 0.2 of this specification has been implemented. Enabling this option by choosing to retrieve profiles from the display will switch Inkscape to using profiles attached to screens at runtime. These allow display adjustment to be changed on the fly, and to be set and cleared per-monitor. This is especially helpful with more than a single monitor.&lt;br /&gt;
&lt;br /&gt;
Other Open Source software such as [http://www.gimp.org/ GIMP] support XICC. This allows all aware applications to be adjusted by setting a profile only once.&lt;br /&gt;
&lt;br /&gt;
=== Multi-monitor aware ===&lt;br /&gt;
When XICC support is enabled, windows will adjust to the proper profile as they are moved across monitors. Also, as the windows are moved onto monitors with no profile attached, the adjustment toggle will become disabled. When the windows are moved onto screens that do have profiles, the toggle will become enabled.&lt;br /&gt;
&lt;br /&gt;
== Soft Proofing ==&lt;br /&gt;
&lt;br /&gt;
In Inkscape Preferences, Color Management tab, there's a new option for enabling output device preview; you can select any calibration profile (an ICC file) suitable for your output device. Options for rendering intent can also be chosen, along with out of gamut warnings.&lt;br /&gt;
&lt;br /&gt;
== OS support ==&lt;br /&gt;
&lt;br /&gt;
Сolor management is supported in Linux and Mac OS X only at this time.&lt;br /&gt;
&lt;br /&gt;
=Grids, guides, snapping=&lt;br /&gt;
&lt;br /&gt;
==Grids==&lt;br /&gt;
Grids have undergone some big changes under-the-hood. These are the visible changes:&lt;br /&gt;
&lt;br /&gt;
* There is a &amp;lt;b&amp;gt;new 3D/axonometric grid&amp;lt;/b&amp;gt;. It consists of three sets of parallel lines, one vertical and others at angles of +30 and -30 degrees from the horizontal. The angles of these two latter sets and the spacing of the grid are user-settable. &lt;br /&gt;
&lt;br /&gt;
* A new tab in the Document Properties dialog, &amp;lt;b&amp;gt;Grids&amp;lt;/b&amp;gt;, is devoted solely to grids; the former grid/guide tab is renamed &amp;lt;b&amp;gt;Guides&amp;lt;/b&amp;gt; and is now used only for guides. On the Grids page, you can create and manage grids of various types in your document; so far the two types available are Rectangular (default) and Axonometric, but more types may be added in the future.&lt;br /&gt;
&lt;br /&gt;
* More than one grid can be active at the same time:&lt;br /&gt;
:* Each grid can be enabled/disabled separately from the Document Properties dialog.&lt;br /&gt;
&lt;br /&gt;
* For each grid, you can hide it by unchecking the &amp;quot;Visible&amp;quot; checkbox in the grid's tab, or disable snapping to it by unchecking &amp;quot;Enabled&amp;quot;. Note that you can have &amp;quot;Enabled&amp;quot; on and &amp;quot;Visible&amp;quot; off (but not vice versa), in which case you snap to the invisible grid.&lt;br /&gt;
&lt;br /&gt;
* Multiple views on the same document (i.e. different Inkscape windows with the same document loaded) share the same grids, but the grid can be turned on and off for each view separately. For example, you could have a zoomed-out &amp;quot;overview&amp;quot; view without grids showing. 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. &lt;br /&gt;
&lt;br /&gt;
* The rectangular grid now has an option to show dots on gridline intersections instead of solid lines.&lt;br /&gt;
&lt;br /&gt;
From developer perspective:&lt;br /&gt;
* Implementation of new grids is much easier now by subclassing CanvasGrid. 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;
* Grid information is now stored in SVG as a child of sodipodi:namedview. Old files will be converted to this new format automatically.&lt;br /&gt;
* An old bug is fixed: apparently the origin of the document coordinate system used to be set to the origin of the grid. For example, in 0.45.1 and before, specifying a grid origin of (20,20) moved the origin or coordinates to that point, and the grid was still starting at (0,0) in this moved coordinate system. This is now disabled, and the coordinate origin is not affected by grid origin.&lt;br /&gt;
&lt;br /&gt;
==Angled guidelines==&lt;br /&gt;
&lt;br /&gt;
Now, Inkscape also provides angled guidelines! Double click on a guide to set its angle.&lt;br /&gt;
&lt;br /&gt;
*  When dragging a guideline off the rulers close to the end of the ruler, the guideline will automatically be angled. The angle is set depending on the grid.&lt;br /&gt;
** For the rectangular grid, the angle is 45 degrees.&lt;br /&gt;
** For the axonometric grid, the angle is matched to the grid. When '''Ctrl''' is pressed, the angle is perpendicular to the grid lines (useful for aligning gradients).&lt;br /&gt;
&lt;br /&gt;
==Creating guidelines from objects==&lt;br /&gt;
&lt;br /&gt;
* Selected objects can now be converted to guidelines. To do this, either use the menu command '''&amp;quot;Object-&amp;gt;Object to guides&amp;quot;''' or press '''Shift+G''' in Selector tool (this shortcut also works in some other tools, see below). The conversion process recurses into groups, i.e. all objects in the current selection are converted regardless if they are grouped or not.&lt;br /&gt;
&lt;br /&gt;
* Created guides can be quickly deleted by '''Ctrl'''+clicking on them (this is of course not restricted to guides created by the process described above). Note that this only works in Selector and Node tools, i.e., in contexts where guidelines can be manipulated with the mouse. &lt;br /&gt;
&lt;br /&gt;
* '''Paths''' are converted by creating one guide for each straight line segment occurring in the path (whereas curved segments are not taken into account). To make this conveniently accessible, the shortcut '''Shift+G''' works in Pen and Pencil tools, too.&lt;br /&gt;
&lt;br /&gt;
* For all other objects, conversion usually happens by placing the guidelines around the object's bounding box (use the corresponding checkbox in the &amp;quot;Tools&amp;quot; page of Inkscape Preferences to switch between geometric and visual bounding box).&lt;br /&gt;
&lt;br /&gt;
*For '''rectangles''' and '''3D boxes''' there is a special option in their preferences pages (checked by default) which instead allows the guidelines to be placed along the object's edges so that they imitate its true shape. This is especially useful when converting rotated or skewed rectangles (to create guidelines in a special position) or for creating 3D scenes containing other objects than just boxes. The shortcut '''Shift+G''' works in these tools as well.&lt;br /&gt;
&lt;br /&gt;
==Snapping==&lt;br /&gt;
&lt;br /&gt;
* Snapping has been implemented or improved for:&lt;br /&gt;
&lt;br /&gt;
:* '''Newly created shapes'''&lt;br /&gt;
&lt;br /&gt;
:* '''Skewing''' of objects&lt;br /&gt;
&lt;br /&gt;
:* '''Handles''' of objects, incl. '''gradients'''&lt;br /&gt;
&lt;br /&gt;
:* '''Images''', '''ellipses''', and '''clones'''&lt;br /&gt;
&lt;br /&gt;
:* Text boxes, which snap to '''text baselines''' again&lt;br /&gt;
&lt;br /&gt;
:* Objects, for which snapping now optionally considers the '''rotation center'''&lt;br /&gt;
&lt;br /&gt;
:* Objects, which now allow for '''constrained snapping'''&lt;br /&gt;
&lt;br /&gt;
:* '''Guides''', which now snap while dragging them&lt;br /&gt;
&lt;br /&gt;
:* '''Axonometric grids'''&lt;br /&gt;
&lt;br /&gt;
:* '''Angled guide lines'''&lt;br /&gt;
&lt;br /&gt;
:* '''Bounding boxes''', of which now all four corners snap&lt;br /&gt;
&lt;br /&gt;
* Other snapping fixes and improvements include:&lt;br /&gt;
&lt;br /&gt;
:* It is now possible to snap to '''intersections''' of e.g. gridlines with guidelines, and of line segments. &lt;br /&gt;
&lt;br /&gt;
:* The '''snapping preferences dialog''' has been restyled to make it more intuitive. &lt;br /&gt;
&lt;br /&gt;
:* Inkscape now has a global snapping toggle, which has been added to the view-menu and is accessible through a shortcut&lt;br /&gt;
&lt;br /&gt;
:* Inkscape now allows for controlling the snapping per grid when multiple grids are being used&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 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 time it takes to snap to objects using the selector tool has been reduced significantly.&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;
:* Only nodes at '''non-smooth parts''' of a path now snap.&lt;br /&gt;
&lt;br /&gt;
:* The confusing &amp;quot;Default transformations origin&amp;quot; option has been 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;
&lt;br /&gt;
=Import/Export=&lt;br /&gt;
&lt;br /&gt;
==PDF and AI import==&lt;br /&gt;
&lt;br /&gt;
In this version, Inkscape can natively (i.e. without any additional software) import PDF files and the newer PDF-based Adobe Illustrator files (starting from AI version 9.0). &lt;br /&gt;
&lt;br /&gt;
'''Implemented features''': The new import extension can import '''paths''', '''text''', '''clippaths''', '''masked or non-masked images''', and '''softmasks'''. It supports '''pattern fills''' (XStep and YStep attributes are ignored) as well as '''linear and radial gradients''' (only those using sampled or exponential functions). '''Gradient meshes''' are imported, but they get converted to groups of small tiles (flat-colored paths) that approximate the mesh; the user can adjust the precision of this approximation. &lt;br /&gt;
&lt;br /&gt;
'''PDF import settings''': After opening a PDF or AI document, the PDF Import Settings dialog shows up. Here you can select:&lt;br /&gt;
&lt;br /&gt;
* the '''page''' to be imported from a multipage PDF;&lt;br /&gt;
&lt;br /&gt;
* the overall '''clip region''' (which can be none or set to any of the PDF boxes, e.g. the crop box, the media box, the trim box, etc.);&lt;br /&gt;
&lt;br /&gt;
* the '''precision''' for the approximation of '''gradient meshes'''; note that setting this too high may result in a huge SVG file and slow performance when importing files with gradient meshes;&lt;br /&gt;
&lt;br /&gt;
* a checkbox controlling whether the '''images''' should be '''embedded''' into the resulting SVG document or saved on the current path;&lt;br /&gt;
&lt;br /&gt;
* a '''preview''' of the selected page (shown if poppler-cairo is present on the system or if the selected page has a thumbnail embedded into the PDF 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;
The native PDF/AI importer is based on the poppler library and was implemented by Miklós Erdélyi as part of the Google Summer of Code 2007.&lt;br /&gt;
&lt;br /&gt;
==PDF export==&lt;br /&gt;
&lt;br /&gt;
* A new cairo-based PDF exporter has been added to Inkscape (marked as &amp;quot;Cairo PDF&amp;quot; in the export format list). Inkscape 0.46 can export shapes, strokes, transparency, gradients, patterns, text, and images correctly to cairo. Clipping paths and masks are known to be faulty or missing. Also, unlike the old PDF exporter, the cairo-based PDF export produces compressed PDF files that are reasonably compact. 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, but it is highly recommended to use at least '''cairo 1.5.2''' for quality PDF export.&lt;br /&gt;
&lt;br /&gt;
* A new cairo-based PostScript exporter has been added (marked as &amp;quot;Cairo PS&amp;quot; in the export format list). The cairo PS backend is not as mature as the PDF backend. It rasterizes a lot of its content. Text output does not work where it works with the PDF backend.&lt;br /&gt;
&lt;br /&gt;
==CDR (CorelDraw) import==&lt;br /&gt;
&lt;br /&gt;
Inkscape can use [http://www.sk1project.org/modules.php?name=Products&amp;amp;product=uniconvertor UniConvertor] if it's installed on your system to import documents in CDR format (CorelDraw). This feature is Unix-only at this time and requires that you have Python and UniConvertor installed. As of UniConvertor 1.1.1, versions from 7 to X4 of the CDR format are supported, and text objects are not converted.&lt;br /&gt;
&lt;br /&gt;
==XAML import/export==&lt;br /&gt;
&lt;br /&gt;
* Inkscape can import vector graphics portions of XAML documents, as well as export its documents to XAML.&lt;br /&gt;
&lt;br /&gt;
==Adobe Illustrator SVG clean import==&lt;br /&gt;
&lt;br /&gt;
* Using this new import filter, Inkscape can open an SVG document removing any elements and attributes in the namespaces that Adobe Illustrator uses for its stuff.  This will clean out everything except the actual SVG content.&lt;br /&gt;
&lt;br /&gt;
==WMF import==&lt;br /&gt;
&lt;br /&gt;
Now Inkscape uses UniConvertor for opening WMF files, which results in three noticable changes:&lt;br /&gt;
&lt;br /&gt;
# imported files are editable now&lt;br /&gt;
# known rendering issues are resolved&lt;br /&gt;
# WMF import works on all platforms where UniConvertor works (including Windows)&lt;br /&gt;
&lt;br /&gt;
Text objects are not supported by UniConvertor as of version 1.1.1.&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;
== Open Clip Art Library import and export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape features a preliminary support for importing drawings from [http://openclipart.org/ Open Clip Art Library].&lt;br /&gt;
&lt;br /&gt;
After specifying account details in Preferences dialog (Import/Export tab) use 'File &amp;amp;gt; Import From Open Clip Art Library' command to open a dialog, then search for tags and pick one of the results to merge this found drawing into your document.&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;
* --query-all produces a comma delimited listing of all objects in the document, with their x, y, height, and width values.&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;
=User interface=&lt;br /&gt;
&lt;br /&gt;
== Dockable dialogs ==&lt;br /&gt;
&lt;br /&gt;
Inkscape's dialog handling has been reworked in this release to allow dialogs to behave like '''dockable panels'''. The dock area that holds the user's dialogs is located right of the canvas.&lt;br /&gt;
&lt;br /&gt;
Dialogs placed in the dock can easily be rearranged, resized, stacked in groups or iconified. Furthermore, a dialog can be dragged of the dock to become a floating dock in itself&amp;amp;mdash;this allows other dialogs to be dragged and dropped on it to form a floating group of dialogs.&lt;br /&gt;
&lt;br /&gt;
The old dialog behavior (used in releases before 0.46) has been preserved as an option, and if it is preferred, one can select it under ''Windows'' &amp;gt; ''Dialog behavior'' in the Inkscape preferences dialog.&lt;br /&gt;
&lt;br /&gt;
====Known issues====&lt;br /&gt;
&lt;br /&gt;
* Some of Inkscape's dialogs are yet to be adapted to allow docking, these include the &amp;quot;Text and Font&amp;quot; dialog, the &amp;quot;Tiled clones&amp;quot; dialog, the &amp;quot;XML editor&amp;quot; and the &amp;quot;Object properties&amp;quot; dialog.&lt;br /&gt;
&lt;br /&gt;
* Floating dialogs that are closed and later reopened might reappear on positions slightly different than their original ones.&lt;br /&gt;
&lt;br /&gt;
* Resizing dialogs that are placed in the dock can be a bit slow and quirky.&lt;br /&gt;
&lt;br /&gt;
* The total height of content the dock will in most cases remain the same when a dialog is closed/iconified, i.e. the remaining docked dialogs will fill the hole. This might not the desired behavior.&lt;br /&gt;
&lt;br /&gt;
====Settings====&lt;br /&gt;
&lt;br /&gt;
Three settings that control dockable dialogs behavior are present in the &amp;lt;code&amp;gt;preferences.xml&amp;lt;/code&amp;gt; file under a &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; group called &amp;lt;code&amp;gt;dock&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cancenterdock&amp;lt;/code&amp;gt;: controls if dialogs are allowed to be stacked on top of each other to be ordered in groups. Valid values are &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;dockbarstyle&amp;lt;/code&amp;gt;: controls what information is shown for iconified dockable dialogs. &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; = icons only, &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; = text only, &amp;lt;code&amp;gt;&amp;quot;2&amp;quot;&amp;lt;/code&amp;gt; = both icons and text. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;switcherstyle&amp;lt;/code&amp;gt;: controls what information is shown for grouped dockable dialogs. &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; = icons only, &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; = text only, &amp;lt;code&amp;gt;&amp;quot;2&amp;quot;&amp;lt;/code&amp;gt; = both icons and text.&lt;br /&gt;
&lt;br /&gt;
== Toolbars ==&lt;br /&gt;
&lt;br /&gt;
'''Main toolbar''' on the left can now optionally use '''smaller buttons'''. With the several new tools added in this version, this may help users with small screens where the toolbar otherwise may not fit vertically. The toggle is on the Misc tab of the Inkscape Preferences dialog.&lt;br /&gt;
&lt;br /&gt;
Switching to stock GTK+ toolbars. This allows for the main window to be made narrower, with toolbar items flowing into a popup menu as it is resized.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Swatches panel, color drag-and-drop ==&lt;br /&gt;
&lt;br /&gt;
* Right-clicking a color swatch now opens a context menu which allows you to apply the color to the fill or stroke of selection.&lt;br /&gt;
&lt;br /&gt;
* Dragging colors from the color palette has been fixed and improved:&lt;br /&gt;
&lt;br /&gt;
:* Now the dropped color is applied to '''the object on which you drop it''', regardless of whether that object is selected or not. This means you can change the color of only one object from selection without having to select it separately. (If you want to assign color to the entire selection, just click on the color swatch on the palette, not drag it.)&lt;br /&gt;
&lt;br /&gt;
:* If an object has stroke and you '''drop the color over stroke''', the color is applied to stroke and not fill. (Another way to always apply color to stroke is to '''Shift+drag''' it.)&lt;br /&gt;
&lt;br /&gt;
:* When gradient handles are active (e.g. in Gradient or Node tools), you can '''drop a color onto the gradient line''' to create a new gradient mid stop with this color, or '''drop a color onto an existing stop''' to recolor that stop.&lt;br /&gt;
&lt;br /&gt;
:* A new submenu has been added to affect the shape of the displayed swatches, allowing their preferred size to be made thinner or wider. Among other things, this allows for more to be seen on screen at once when made thinner.&lt;br /&gt;
&lt;br /&gt;
:* Sizing of the swatches has been corrected to be properly progressive, and now go form smaller to larger on all platforms.&lt;br /&gt;
&lt;br /&gt;
:* Space reserved for the scrollbar is no longer kept with smaller palettes shown in the bottom of the main UI. This allows for more working space when palettes with not many entries are selected at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
==Color gestures==&lt;br /&gt;
&lt;br /&gt;
A new method for quick and precise adjustment of colors is added in this version: color gestures. It works on the selected objects by grabbing the '''fill or stroke color swatch''' in the '''selected style indicator''' (on the left of the statusbar) and dragging it in various directions as described below. Note that this only works when the swatch displays a '''flat color'''; it does not work for a swatch showing &amp;quot;None&amp;quot;, &amp;quot;N/A&amp;quot;, or displaying a gradient (although you can select one or more gradient stops in Gradient tool and color-adjust them by color gestures just as you would do for objects). Color gestures can work on '''fill''' or '''stroke''', depending on which swatch in the selected color indicator you drag.&lt;br /&gt;
&lt;br /&gt;
Color gestures work in '''HSL''' color space. Dragging without any keyboard modifiers adjusts the '''hue''' channel, dragging with '''Shift''' adjusts '''saturation''', and dragging with '''Ctrl''' adjusts '''lightness'''.&lt;br /&gt;
&lt;br /&gt;
The adjustment is done by '''&amp;quot;rotating&amp;quot;''' the color swatch away from the original direction which is assumed to be '''NE at 45 degrees''' (i.e. from&lt;br /&gt;
the swatch diagonally into the document window). Once you click and drag the color swatch, imagine a diagonal line going from the point where you clicked in the NE direction, across the entire Inkscape window. By dragging '''below or to the right''' of that line, you decrease the corresponding color channel, to the minimum at the lower edge of the window; by dragging it above or to the left, you increase it, to the maximum at the left edge of the window. If you hover your mouse exactly over the 45 degrees line, the change will be zero.&lt;br /&gt;
&lt;br /&gt;
Note that you can easily vary the '''precision''' of your adjustment. If you drag close enough to the swatch, each small movement results in a big change of the color. If you need a finer adjustment, just drag farther away from the swatch, towards the center of the Inkscape window or even to its upper right corner, where minute movements will produce very small changes in the color. In fact, this method gives you more color precision than even the color wheel in the Fill and Stroke dialog, unless you expand that dialog to fill the entire screen which is rarely practical.&lt;br /&gt;
&lt;br /&gt;
The mouse '''cursor''' changes when you're doing color gestures, reflecting the channel currently adjusted and indicating the directions for increasing and decreasing the value. Also, watch the '''statusbar''' which will indicate, as you drag, the channel you are adjusting, the original value of that channel, the new value, and the difference. &lt;br /&gt;
&lt;br /&gt;
You can '''switch channels while you drag'''. That is, you don't need to &lt;br /&gt;
drag it again and again from the swatch if you want to adjust all three channels - you can do it all in one drag, by pressing and releasing Ctrl and Shift as necessary. Note that when you change the keyboard modifiers during drag, the position of the zero-change line is temporarily changed to go through the current mouse position; this is done so that there are no sudden changes in color if you are switching modifiers away from the original 45-degree line.&lt;br /&gt;
&lt;br /&gt;
The '''Alt''' modifier is special. Pressing Alt means &amp;quot;do nothing&amp;quot;; this allows you to move the mouse, without releasing, to a more convenient place from where to continue tweaking the color after letting go of Alt. As with the other modifiers, releasing Alt temporarily redefines the zero-change axis to go through the point where Alt was released. For example, imagine  you made your color darker by Ctrl+dragging towards the bottom edge of the window and you now need to make it less saturated. You cannot however Shift+drag it any lower because there's just not enough room for that. In that situation, without releasing the mouse, Alt+drag it upwards to a convenient spot and then Shift+drag downwards as needed. Also, you can start dragging from the swatch with Alt pressed to avoid changing the color while you take a more convenient position for adjustments.&lt;br /&gt;
&lt;br /&gt;
For example, you can select a green rectangle and first turn it into greenish-blue by dragging away from the Fill swatch and slightly above the 45 degrees line; then, without releasing the mouse, press Ctrl and drag a bit to the right to darken the color; then press Shift, release Ctrl, and adjust saturation. You can press or release Ctrl and Shift as many times as necessary during a single drag; when you are finally satisfied with your color, release the mouse to commit the change.&lt;br /&gt;
&lt;br /&gt;
Apart from precise adjustments, you can use color gestures to very quickly perform some common color transformations:&lt;br /&gt;
&lt;br /&gt;
* Ctrl+drag the swatch to the right and down to paint all selected objects black.&lt;br /&gt;
&lt;br /&gt;
* Ctrl+drag the swatch upwards and to the left to paint all selected objects white.&lt;br /&gt;
&lt;br /&gt;
* Shift+drag the swatch to the right and down to desaturate the color of selected objects.&lt;br /&gt;
&lt;br /&gt;
* Shift+drag the swatch upwards and to the left to maximize saturation of the color of selected objects. &lt;br /&gt;
&lt;br /&gt;
Note that when several objects or gradient stops with different colors are selected, the selected style indicator shows their '''averaged''' color. If you adjust that color by gesturing, the changed color will be assigned back to all selected objects/stops, in effect eliminating any difference between them. If you want to adjust many different-colored objects preserving their relative differences, use the color modes of the Tweak tool or color adjustment extension effects.&lt;br /&gt;
&lt;br /&gt;
This new technique requires some getting used to, but once you get the idea it is quite convenient, fast, and precise.&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;
== Preserving zoom/view of reverted documents ==&lt;br /&gt;
&lt;br /&gt;
When reverting files to their previously saved state, the current zoom factor/panning is now retained (as opposed to reverted to the saved state, too, as it was the case before). This less interrupts the workflow when one is working on some detail in the drawing.&lt;br /&gt;
&lt;br /&gt;
== Bounding box option moved ==&lt;br /&gt;
&lt;br /&gt;
The preferences option to select between &amp;quot;visual&amp;quot; and &amp;quot;geometric&amp;quot; bounding box was moved in Inkscape Preferences dialog from the &amp;quot;Selector&amp;quot; page to &amp;quot;Tools&amp;quot; page (since it applies more globally than just in Selector tool).&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;
== Using other keys in place of Alt ==&lt;br /&gt;
&lt;br /&gt;
* Many Linux users have found the use of '''Alt-drag''' and '''Alt+click''' in Inkscape problematical because this shortcut is often captured by window managers. In 0.46, instead of disabling of the window manager shortcut as suggested in [http://wiki.inkscape.org/wiki/index.php/FAQ#How_to_make_Alt.2Bclick_and_Alt.2Bdrag_work_on_Linux.3F the FAQ], you can change a setting in your preferences.xml file called &amp;lt;code&amp;gt;mapalt&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; group. This numerical value ranges from 1 to 5; 1 indicates no change, any other value refers to some special key on a keyboard, such as '''Alt Gr''', the '''Windows''' key, etc. The specific mapping of these values to the keys on your keyboard can be viewed and/or editied by '''xkeycaps''', available from [http://www.jwz.org/xkeycaps www.jwz.org]. The value associated with a particular key is shown in that program at the top of the screen beside the word &amp;quot;Modifiers&amp;quot; when the mouse is held over a key on the main display.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keyboard profiles ==&lt;br /&gt;
&lt;br /&gt;
New profiles have been added:&lt;br /&gt;
&lt;br /&gt;
* '''Corel DRAW X4''' (corel-draw-x4.xml)&lt;br /&gt;
* '''Zoner Draw 5''' (zoner-draw.xml)&lt;br /&gt;
* '''ACD Systems Canvas 11''' (acd-canvas.xml)&lt;br /&gt;
&lt;br /&gt;
Also, profile for Adobe Illustrator has been fixed and includes bindings for tools now.&lt;br /&gt;
&lt;br /&gt;
(To enable a profile, copy it into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; in the same directory, overwriting the old file. To restore the default Inkscape set, copy &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
=Other changes and 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;
* On the '''Scale''' tab of the '''Transform dialog''', the numbers now show the current size of selection, not size increment as before. Correspondingly, with the % unit chosen, you see 100% displayed, and to scale it up twice, you enter 200%, not 100% as before. This is a more intuitive behavior and it's more consistent with how the W/H controls work in the Selector tool. &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;
* The '''Shift''' tab of the '''Tile Clones''' dialog has two new options: '''Cumulate''': when checked, each tile is shifted by the normal amount plus the cumulative shifts of all previous tiles. This is useful when placing tiles that are being scaled by a uniform amount. '''Exlude tile''': when checked, the tile width or height is not automatically included in calculating the tile's shift. This is useful when using the dialog to place clones on a circle or spiral (rather than using a shift of -100%). It is also useful when positioning tiles using the '''Exponent''' parameter.&lt;br /&gt;
&lt;br /&gt;
* The '''Scale''' tab of the '''Tile Clones''' dialog has a new parameter: '''Base''' that allows placing tiles along a logarithmic spiral (as often found in nature). If the value is '''0''', the parameter is not used. Use a value less than one for a converging spiral and a value of greater than one for a diverging spiral. The actual scale is calculated as '''base''' raised to the nominal '''scale''' power.&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;
* 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;
* 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;
* Preferences have been added for setting the default metadata and licenses, so this information can be automatically filled in with new documents.&lt;br /&gt;
&lt;br /&gt;
* The built-in '''Potrace''' tracing engine is upgraded to version '''1.8''' with some minor bugs fixed.&lt;br /&gt;
&lt;br /&gt;
* File dialog windows (open/save) now have an '''Enable preview''' checkbox which allows you to disable the preview pane.&lt;br /&gt;
&lt;br /&gt;
* In the Calligraphic pen controls, the toggle button to enable tablet pressure sensitivity is moved to the Width control, and the button for tilt sensitivity is moved to Angle, to better reflect what parameters these toggles affect.&lt;br /&gt;
&lt;br /&gt;
* In Node and Gradient tools, using '''Tab/Shift+Tab''' to select next/previous node or gradient handle scrolls the canvas if necessary to show the selection. &lt;br /&gt;
&lt;br /&gt;
* The option '''Import bitmap as &amp;lt;image&amp;gt;''' is removed; it was added several versions ago to allow optionally importing images as rectangles with image pattern, to make clipping the images easier. Now that you can easily use clipping paths, as well as convert any image to rectangle with pattern with Alt+I, this option is not really necessary and removed to reduce confusion. Bitmaps are always imported into SVG as an &amp;lt;image&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
* Support has been added for stock patterns, in the same way that stock markers were already supported. Adding patterns to share/patterns/patterns.svg, and giving them a inkscape-stockid attribute as found on the examples already there will make them available in all Inkscape sessions from the patterns tab of the fill &amp;amp; stroke dialog.&lt;br /&gt;
&lt;br /&gt;
* New '''fontforge_glyph.svg''' template is added for font designers who draw glyphs in Inkscape and import them into FontFoge. It is 1000x1000px large and has a horizontal guide at 200px to mark border for descenders.&lt;br /&gt;
&lt;br /&gt;
* Save dialogs have been modified to clarify that they '''Save as SVG''', so people using Inkscape to edit PDF, EPS, and other file formats will be less confused at the default behavior when saving files.&lt;br /&gt;
&lt;br /&gt;
= Mac OS X specific improvements =&lt;br /&gt;
&lt;br /&gt;
* Inkscape 0.46 is officially released as a '''Universal''' (i386/ppc) binary for both OS X '''10.4 Tiger''' and '''10.5 Leopard'''.&lt;br /&gt;
&lt;br /&gt;
* Please note:  Leopard users should update X11.app to at least 2.1.4.  X11.app updates can be downloaded from XQuartz: [http://xquartz.macosforge.org/].&lt;br /&gt;
&lt;br /&gt;
* Inkscape application bundle on '''Mac OS X''' now has the possibility to contain '''pre-compiled python modules''' (e.g. lxml, numpy, etc.) and to use them without requiring any work from the user. Since Python itself is shipped with Mac OS X, the user only has to drag and drop Inkscape on its hard-drive and all the extensions will be '''functional immediately'''.&lt;br /&gt;
&lt;br /&gt;
* A GTK theme is now included in Inkscape.app bundle on OS X. If the user does not have any personal customization (e.g. in a .gtkrc-2.0 file) this theme is used. It reflects the OS X settings for &amp;quot;Appearance&amp;quot; and &amp;quot;Highlight Color&amp;quot; set in System Preferences &amp;gt; Appearance.&lt;br /&gt;
&lt;br /&gt;
* If Inkscape.app is already open and a file is dropped on the Inkscape dock icon, or an Inkscape file is&lt;br /&gt;
 double-clicked in the Finder, that document will now be opened, rather than this action being ignored, as happened in 0.45 and prior.&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;
* A fix in the blur rendering code made '''exporting blurred objects to bitmap''' much faster and fixed the disappearing of blurred objects in exported bitmaps which happened for large objects in 0.45.  The same fix got rid of the rendering artefacts that sometimes appeared on blurred objects during scrolling. &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;
* On Windows, '''file opening/saving dialogs''' can no longer sink under the main editor window (they now have the inkscape window set correctly as their parent window).&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;
* '''Creative Commons Public Domain Declaration URI''' points to the 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;
* On Windows, the Inkscape uninstaller deleted all files under the install directory. This could lead to removing user-created files, or even other program files not related to inkscape if the install directory was C:\Program Files. The new uninstaller '''tracks all installed files and asks for confirmation before deleting any other files'''. However, installation and uninstallation process is now slower.&lt;br /&gt;
&lt;br /&gt;
* Clones were wrongly unlinked when their original was moved to another layer; fixed.&lt;br /&gt;
&lt;br /&gt;
* Previous versions had a problem on '''Windows Vista''' where selected menu item was invisible. Now our Windows builds use a newer version of GTK library which fixes this problem.&lt;br /&gt;
&lt;br /&gt;
* Duplicating empty text objects that have just been created no longer crashes. Also, the XML editor crash related to empty text objects is fixed. A downside is that the SVG will become cluttered with empty text objects as they are no longer automatically removed. A better fix for the problem is planned.&lt;br /&gt;
&lt;br /&gt;
* In Tile Clones dialog, the PMG symmetry group was created incorrectly; it is now fixed.&lt;br /&gt;
&lt;br /&gt;
* Serious usability issues with the font size field in the Text tool's controls bar have been fixed.&lt;br /&gt;
&lt;br /&gt;
* The rulers are now correctly scaled and will align nicely with document coordinates, with or without the scrollbars displayed.&lt;br /&gt;
&lt;br /&gt;
=Known Issues=&lt;br /&gt;
&lt;br /&gt;
* (LP: #180890) Blend modes do not work correctly over transparent    backgrounds. A workaround is to place an opaque rectangle underneath the bottom-most layer.&lt;br /&gt;
* (LP # 202704) Blur and other filters are very slow when applied to an object with transform= attribute with rotation or skew. To avoid this slowdown, either do not rotate/skew objects you use with filters, or apply filters only to paths (but not shapes to text) because paths, by default, get no transform= attribute when you rotate or skew them.&lt;br /&gt;
* Windows printing has two known issues. In both cases the workaround is to print to bitmap (Print -&amp;gt; Rendering -&amp;gt; Bitmap).&lt;br /&gt;
** (LP # 205732) Blurred objects are misaligned when printing.&lt;br /&gt;
** (LP # 208217) Masked objects disappear from the page when printing.&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>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.46&amp;diff=27084</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=27084"/>
		<updated>2008-04-02T00:33:43Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Improvements for the Mac OS X version */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Inkscape 0.46=&lt;br /&gt;
&lt;br /&gt;
Highlights 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;
* Live path effects&lt;br /&gt;
&lt;br /&gt;
* Color management&lt;br /&gt;
&lt;br /&gt;
* New SVG filters and UI&lt;br /&gt;
&lt;br /&gt;
* Native PDF and AI import&lt;br /&gt;
&lt;br /&gt;
* XAML import/export&lt;br /&gt;
&lt;br /&gt;
* Open Clip Art Library integration (import/export)&lt;br /&gt;
&lt;br /&gt;
* Stock patterns&lt;br /&gt;
&lt;br /&gt;
* Bitmap editing extension effects&lt;br /&gt;
&lt;br /&gt;
* Full on-canvas gradient editing&lt;br /&gt;
&lt;br /&gt;
* Engraver's Toolbox in the Calligraphic tool&lt;br /&gt;
&lt;br /&gt;
* Touch selection&lt;br /&gt;
&lt;br /&gt;
* Dockable dialogs&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;
* &amp;quot;3D&amp;quot; / axonometric grid&lt;br /&gt;
&lt;br /&gt;
* Angled guidelines&lt;br /&gt;
&lt;br /&gt;
* Conversion of objects to guidelines&lt;br /&gt;
&lt;br /&gt;
* Significant speed and interactivity improvements&lt;br /&gt;
&lt;br /&gt;
* Hundreds of smaller features and bugfixes&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 in order from top to bottom. Now the redraw always starts '''at your mouse cursor location''' and proceed upwards and downwards from it, so that the area near the cursor is always redrawn first. This significantly improves program's responsiveness in some situations. For example, when you are node-editing part of a complex path, the entire path needs to be redrawn on each change, but now this redraw starts from the point you're working on. Moreover, the redraw is interruptible, so each mouse movement starts new redraw from the mouse cursor area. As a result, during such operations those parts that you're working on redraw often and feel snappy and responsive, while areas further away may lag behind more.&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;
:'''Exporting drawings with blur''' was particularly slow in 0.45; some files could take hours to export. Now this is fixed, in part by the faster algorithm mentioned above and in part by a bugfix in the export code. Now even the quite complex files with large blurs export at high resolution in at most a few minutes.  &lt;br /&gt;
&lt;br /&gt;
* Minor improvements have been made to gradient rendering performance.&lt;br /&gt;
&lt;br /&gt;
* '''Dragging handles and nodes''' as well as '''dragging and transforming objects''' by mouse became more responsive, so that working in complex drawings and especially editing complex paths is noticeably easier. In particular, this fixes the annoying latency issue where a node or a handle could follow mouse cursor even after you release mouse button after a drag. &lt;br /&gt;
&lt;br /&gt;
* '''Moving objects, nodes, and gradient handles by cursor keys''' as well as '''scaling and rotating objects from keyboard''' and '''zooming by keys''' are much more responsive when working with complex slow-rendering objects. Now, if you press and hold a key, your selection/zoom level will quickly jump to the final position instead of going through all the intermediate steps as before. &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;
:* '''Redrawing the newly exposed parts of the canvas''' after scrolling, especially diagonal scrolling, is now faster because only the exposed areas are redrawn; before, this often resulted in the entire screen being redrawn which was much slower.&lt;br /&gt;
&lt;br /&gt;
:* Previously, if you started 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;
* Better responsiveness and more visual feedback in user interface: &lt;br /&gt;
&lt;br /&gt;
:*When you zoom, the '''zoom control''' on the right end of the statusbar now updates immediately, not after screen redraw as before. &lt;br /&gt;
&lt;br /&gt;
:*Many potentially slow commands (Save, Simplify, Combine, Break Apart and others) now display a '''busy cursor''' and flash a message in the statusbar (e.g. &amp;quot;Saving document...&amp;quot;) while they work. &lt;br /&gt;
&lt;br /&gt;
:*The '''statusbar messages''' displayed while you're drawing a shape or a path in Pen tool do not lag behind the mouse movements.&lt;br /&gt;
&lt;br /&gt;
* '''Combine''' and '''Convert to paths''' commands are now orders of magnitude faster when applied to a selection with hundreds or thousands of objects.&lt;br /&gt;
&lt;br /&gt;
* The time it takes to '''snap to objects''' using the selector tool has been reduced dramatically, which is most noticeable for snapping to complex paths.&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;
===How it works===&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 (or use the auto gap closing parameter, see below).&lt;br /&gt;
&lt;br /&gt;
===Style===&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). As in all other tools, the '''style swatch''' on the far right of the Controls bar shows the style that will be used for the next fill object you create.&lt;br /&gt;
&lt;br /&gt;
===Controls===&lt;br /&gt;
&lt;br /&gt;
In the tool's '''Controls bar''':&lt;br /&gt;
&lt;br /&gt;
* Paint Bucket's perceptual fill can use either all visible colors or specific color channels. Using the '''Fill by''' drop-down list, you can restrict the fill algorithm to one 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;
* The '''Threshold''' (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;
* Using the '''Grow/shrink by''' parameter, 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 much the same as the Outset and Inset path commands, except it's done automatically after every fill.&lt;br /&gt;
&lt;br /&gt;
* With the '''Close gaps''' parameter, you can make the Paint Bucket tool  ignore 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 (close gaps up to 2 pixels in size)&lt;br /&gt;
** Medium (4 pixels)&lt;br /&gt;
** Large (6 pixels)&lt;br /&gt;
:Note that setting this parameter to other than None may slow down noticeably the filling of large areas.&lt;br /&gt;
&lt;br /&gt;
===Shortcuts===&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 drawings which largely blurs the&lt;br /&gt;
distinction between vector and raster editing. Instead of meticulously selecting some&lt;br /&gt;
objects and then performing an action on the selection, you can now select ''all''&lt;br /&gt;
objects (or all objects you are interested in) and apply the Tweak tool's brush to&lt;br /&gt;
smoothly and naturally change the shape or style of only those objects (or parts&lt;br /&gt;
thereof) ''that the brush touches''.&lt;br /&gt;
&lt;br /&gt;
The area of the tool's action - its ''brush'' - is marked by an orange-colored circular&lt;br /&gt;
outline that moves with your mouse cursor. 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.&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 mode or paint it by Color Paint&lt;br /&gt;
mode. You can also apply it to groups of objects; it will go into groups and act on&lt;br /&gt;
individual objects inside groups. If you're trying to use it without anything selected,&lt;br /&gt;
it will remind you by a statusbar message to select some objects.&lt;br /&gt;
&lt;br /&gt;
===Width===&lt;br /&gt;
&lt;br /&gt;
The width of the tool's brush, in the range from 1 to 100, can be changed by the&lt;br /&gt;
'''Width''' control in the tool's controls bar above the canvas. You can also change&lt;br /&gt;
width by '''Left''' and '''Right''' arrow keys (same as in the Calligraphy tool) at any&lt;br /&gt;
time (including during action) as well as '''Home''' and '''End'''. Also, as in Calligraphy&lt;br /&gt;
tool, the visible width of the brush is independent of zoom; simply zooming in or out is&lt;br /&gt;
often easier than adjusting the width if you want to cover a smaller or larger area of&lt;br /&gt;
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, also in the&lt;br /&gt;
range from 1 to 100. You can also change width by '''Up''' and '''Down''' arrow keys at&lt;br /&gt;
any time (including during action).&lt;br /&gt;
&lt;br /&gt;
If you have a pressure-sensitive tablet and your &amp;quot;Use pressure&amp;quot; button on the right-hand&lt;br /&gt;
end of the controls bar is on, then the force will also depend on how hard you actually&lt;br /&gt;
press your pen into your tablet, changing in the range from zero to whatever you set in&lt;br /&gt;
the Force control. If all you have is a mouse, then the force will be constant but still&lt;br /&gt;
settable by the Force control. &lt;br /&gt;
&lt;br /&gt;
===Path editing modes===&lt;br /&gt;
&lt;br /&gt;
The Tweak tool has a number of '''modes''', selectable by toggle buttons in the tool's&lt;br /&gt;
Controls bar and by keyboard shortcuts. Some of these modes change the shapes of &lt;br /&gt;
paths while others affect the colors of objects. All these modes share the Width and&lt;br /&gt;
Force controls but otherwise are quite different. Let's look at the path editing modes&lt;br /&gt;
first.&lt;br /&gt;
&lt;br /&gt;
Unlike the Node tool, to edit paths with the Tweak tool you don't need to worry about&lt;br /&gt;
where the nodes of a path are and how to manipulate them. You just apply the tool's&lt;br /&gt;
brush to any point, and the selected paths at that point will reshape smoothly and&lt;br /&gt;
naturally - as if made of soft jelly - regardless of where its nodes lie. If applied to&lt;br /&gt;
a shape or text object, the tool converts them to paths automatically.&lt;br /&gt;
&lt;br /&gt;
While not very useful for technical drawings, tweaking paths will be indispensable for&lt;br /&gt;
artistic uses of Inkscape - cartoons, drawings, sketches, anime, etc. This new&lt;br /&gt;
functionality is somewhat similar to the tools such as &amp;quot;Pucker&amp;quot; and &amp;quot;Bloat&amp;quot; in the&lt;br /&gt;
latest versions of Adobe Illustrator. &lt;br /&gt;
&lt;br /&gt;
There are currently six path editing modes in the Tweak tool: '''Push''', '''Shrink''',&lt;br /&gt;
'''Grow''', '''Attract''', '''Repel''', 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 '''Shrink''' and '''Grow''' 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 (Shrink) or outwards (Grow). 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 Calligraphy pen 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 Shrink action where you want the lines to become thinner (and the hatching to become lighter), up until total disappearance. If you press hard, shrinking works as an eraser, so you can easily clean the strokes' ends to make them thin, sharp, and uniform. Conversely, applying Grow makes strokes wider (i.e. the hatching becomes darker).&lt;br /&gt;
&lt;br /&gt;
:Of course, shrinking and growing are useful not only for calligraphic strokes. Same as with Push, with Shrink and Grow you can '''sculpt''' any path, spawning smooth treacle-like appendages with Grow and carving holes with Shrink. Unlike the &amp;quot;node sculpting&amp;quot; mode in the Node tool, however, this does not require adding new nodes to the shape.&lt;br /&gt;
&lt;br /&gt;
* The '''Attract''' and '''Repel''' modes work by moving each affected point on a path towards (Attract) or from (Repel) the cursor point. In some cases this may look similar to Shrink and Grow, but the difference is that shrinking/growing moves paths perpendicularly to the path in each point, whereas attracting/repelling moves them to or from the cursor regardless of the path shape. These modes are similar to the Pinch effect in AI; you can use them for various central-symmetric distortions in parts of your paths.&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, shrinking, or growing 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;
See the screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.46-tweak-path.png] for a few examples of using the path editing modes of the Tweak tool.&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;
inflates 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 inflating 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;
====Known problems====&lt;br /&gt;
&lt;br /&gt;
Known problems with the path editing modes in Tweak tool:&lt;br /&gt;
&lt;br /&gt;
# they don't work on open paths (an open path becomes closed if you tweak it);&lt;br /&gt;
# they are rather slow; &lt;br /&gt;
# they quickly eat memory; and &lt;br /&gt;
# they are sometimes buggy - thin calligraphic strokes may suddenly disappear or change their shape drastically as you're shrinking or growing them.&lt;br /&gt;
&lt;br /&gt;
For (4), 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;
===Color editing modes===&lt;br /&gt;
&lt;br /&gt;
The '''Color Paint''' and '''Color Jitter''' modes, unlike the path editing modes,&lt;br /&gt;
change the colors of objects instead of their shapes. Yet they share enough common&lt;br /&gt;
features with the path editing modes to be part of the same tool: These modes also use&lt;br /&gt;
a circular soft-edged brush controlled by the Width and Force parameters on the Controls&lt;br /&gt;
bar and affected by the pen pressure (if you have a pressure-sensitive tablet).&lt;br /&gt;
&lt;br /&gt;
* '''Color Paint''' applies the style of the tool to the selected objects under the brush. The style of the tool is visible in the style swatch at the rightmost end of the tool's control bar; it can be changed by clicking on the color palette or by any other style assignment command, such as Fill and Stroke dialog. ('''Note''': unlike all other tools, in Tweak tool in Color Paint mode you cannot assign style directly to selected objects; any style-setting command changes the tool's style instead.)&lt;br /&gt;
&lt;br /&gt;
:The fill from the tool's style applies to the fills of the painted objects, and the stroke applies to the strokes. If the tool's style has no fill or no stroke, it won't affect fills or strokes, correspondingly. For example, if you want to color the fills of objects blue but leave their strokes untouched, assign blue fill to the tool's style (just click blue on the palette) but set its stroke to None (middle-click the Stroke swatch in the statusbar). Similarly, master opacity in the tool's style affects master opacities of the touched objects (if the O channel is on, see below).&lt;br /&gt;
&lt;br /&gt;
:This mode allows you to literally paint over objects, shifting their colors towards the target style of the tool. For example, if you paint with yellow fill over a blue-filled object, the object will become greenish blue, then green, then yellowish green, and end up being exactly the yellow color you're painting with. This speed of this gradual transition depends on both Force parameter and pen pressure; also, objects touched by the periphery of the brush are less affected than those hit by the brush center. Overall, using this tool is very similar to a soft brush in a raster editor such as Gimp or Photoshop.&lt;br /&gt;
&lt;br /&gt;
* '''Color Jitter''' mode does not apply any color, but instead jitters (randomizes) the colors of the objects it touches. The force of the action determines how strong is the randomization, i.e. how far the colors deviate from the original values. This mode does not use the tool's style.&lt;br /&gt;
&lt;br /&gt;
Both modes work on flat fills and gradients; for gradients, the tool takes into account not only the position of the entire object with gradient, but also the position of each gradient stop relative to the brush. This means that, for example, you can change the blue color only in an object filled with blue-red gradient simply by painting over its blue end with a brush small enough to not touch the red. (Note that color tweaking does not create gradients on objects that used flat color before, but only adjusts existing gradients in the drawing.)&lt;br /&gt;
&lt;br /&gt;
See the screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.46-tweak-color.png] for a few examples of using the color editing modes of the Tweak tool.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Channels====&lt;br /&gt;
&lt;br /&gt;
Color Paint and Color Jitter honor the '''Channels''' control. This control comprises&lt;br /&gt;
the four buttons: '''H''', '''S''', '''L''', and '''O''', which allow you to turn on and off&lt;br /&gt;
the tool's action on the object's hue, saturation, lightness, and opacity,&lt;br /&gt;
correspondingly. For example, if you want to raise the saturation of some part of your&lt;br /&gt;
drawing without changing the hue, select some maximum-saturation color (e.g. pure red)&lt;br /&gt;
and turn off all Channels buttons except S. Similarly, you can replace the hues without&lt;br /&gt;
affecting saturation or lightness (only H pressed), or lighten/darken all colors without&lt;br /&gt;
changing their hues and saturation (only L pressed). Pressing O allows you to apply the&lt;br /&gt;
master opacity from the tool's style to the master opacity of objects (but not fill or&lt;br /&gt;
stroke opacity).&lt;br /&gt;
&lt;br /&gt;
====Usage notes====&lt;br /&gt;
&lt;br /&gt;
Color painting with Tweak tool is similar, but not exactly analogous to bitmap&lt;br /&gt;
painting. Even though the tool itself works as a soft brush, it still applies its color&lt;br /&gt;
to vector objects, which behave as vector objects usually do. For example, if you want&lt;br /&gt;
to change the tint of the face in your drawing, and if a hand in the drawing is part of&lt;br /&gt;
the same object as the face, that hand will change its tint too even if it's located far&lt;br /&gt;
from the point you are painting. (We foresee a &amp;quot;fracture&amp;quot; command in one of the next&lt;br /&gt;
versions of Inkscape which will help you turn a monolithic object into a mosaic of small&lt;br /&gt;
fragments that will be then easy to paint with Tweak tool.)  Still, even with this&lt;br /&gt;
limitation, color painting is a novel way of dealing with vector drawings which allows&lt;br /&gt;
you to quickly and intuitively make adjustments which would be awkward and slow with&lt;br /&gt;
traditional approach.&lt;br /&gt;
&lt;br /&gt;
Drawings containing patterns or scatterings of small independent objects are best suited&lt;br /&gt;
for color painting with Tweak tool. Examples include:&lt;br /&gt;
&lt;br /&gt;
* freehand drawings with Calligraphy pen, consisting of many separate strokes;&lt;br /&gt;
&lt;br /&gt;
* gradient meshes imported from Adobe Illustrator files (Inkscape renders these meshes as lattices of small polygons; while there's no direct support for gradient meshes in Inkscape yet, color painting on such lattices is almost as good);&lt;br /&gt;
&lt;br /&gt;
* text converted to paths and with Break Apart command applied so that each letter is a separate path;&lt;br /&gt;
&lt;br /&gt;
* patterns made with the Tile Clones command; note that you need to unset the fill and/or stroke on the original object and use the Color tab to assign some initial color to the clones - this will make them paintable with the Tweak tool without unlinking.&lt;br /&gt;
&lt;br /&gt;
Moreover, color tweaking can be useful for compositions with a few objects or even for&lt;br /&gt;
single objects. Unlike all other color selection methods, painting with the Tweak tool&lt;br /&gt;
implements the ''color mixing'' metaphor which is much more familiar to traditional&lt;br /&gt;
artists than RGB sliders or even the color wheel. For example, start with a rectagle of&lt;br /&gt;
pure blue color; then, pick different colors by Color Paint and apply light touches with&lt;br /&gt;
minimum Force and minimum pen pressure: add a little green, a little brown, a little&lt;br /&gt;
yellow, etc. until you have the exact hue you need. Similarly, you can whiten or blacken&lt;br /&gt;
any hue by admixing white or black.&lt;br /&gt;
&lt;br /&gt;
You can also use color tweaking to add a tint, darken/lighten, saturate/desaturate, or&lt;br /&gt;
color jitter your entire drawing. Just select all in all layers, zoom out, choose a&lt;br /&gt;
large brush width so it covers all of the drawing, and apply a little color tweaking&lt;br /&gt;
(with minimum Force) that will therefore affect all visible objects.&lt;br /&gt;
&lt;br /&gt;
===Keyboard shortcuts===&lt;br /&gt;
&lt;br /&gt;
* '''W''', '''Shift+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+S''': switch to the Shrink mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+G''': switch to the Grow mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+A''': switch to the Attract mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+E''': switch to the Repel mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+R''': switch to the Roughen mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+C''': switch to the Color Paint mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+J''': switch to the Color Jitter 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 Shrink (while Ctrl is down)&lt;br /&gt;
&lt;br /&gt;
* '''Shift+Ctrl+mouse drag''': temporarily switch to Grow (while Shift+Ctrl is down)&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 create drawings or objects that appear three-dimensional. The new '''3D box tool''' helps you create such drawings by automating the most common operation: creating a box in a given 3D 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; Shift+drag without releasing the mouse button to extrude in Z direction.&lt;br /&gt;
&lt;br /&gt;
* Adjust any of its 3 dimensions by handles. The 4 handles on the front X/Y side resize it, the four ones on the back X/Y side expand/contract the box in Z direction. With Shift, the functions of handles on front and back sides are reversed. With Ctrl, the side-resizing handles snap to the coordinate axes or diagonals.&lt;br /&gt;
&lt;br /&gt;
* Move a 3D box &amp;quot;in perspective&amp;quot; by dragging its center; without modifiers, movement occurs within the XY-plane (press Ctrl to constrain the movement to the directions of the coordinate axes or diagonals), with Shift the box moves parallel to the Z-axis.&lt;br /&gt;
&lt;br /&gt;
* Adjust the vanishing points of a perspective by dragging them on the canvas (see below) or toggling their states; all boxes sharing this perspective are affected by a vanishing point move. &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;
In SVG, a 3D box is represented as a '''group''' (svg:g) with a special extension attribute (in Inkscape's 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;
===Keyboard shortcuts===&lt;br /&gt;
&lt;br /&gt;
* '''X''', '''Shift+F4''': switch to the 3D box tool&lt;br /&gt;
&lt;br /&gt;
* The various kinds of parentheses, namely '''[''' ''']''', '''(''' ''')''', '''{''' '''}''', can be used to rotate infinite (i.e., parallel) perspective lines in X-, Y-, and Z-direction, respectively. Closing parentheses rotate clockwise and opening parentheses rotate counterclockwise. The angle of rotation is taken from the preferences. Pressing '''Alt''' reduces the amount of rotation to 1 screen pixel.&lt;br /&gt;
&lt;br /&gt;
* When the 3D box tool is active, '''Shift+X''', '''Shift+Y''', and '''Shift+Z''' toggle perspective lines in the corresponding direction between &amp;quot;converging&amp;quot; and &amp;quot;parallel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Gradient Tool==&lt;br /&gt;
===Selecting multiple stops===&lt;br /&gt;
'''More than one gradient stop''' can be selected at a time. Shortcuts for working with multiple stop selections are generally modeled on the Node tool. &lt;br /&gt;
* Add a stop to the selected stops by '''Shift+click'''.&lt;br /&gt;
* Press '''Ctrl+A''' to select all stops in the selected objects.&lt;br /&gt;
* '''Shift+drag''' around stops to add them to selection.&lt;br /&gt;
Multiple selected stops:&lt;br /&gt;
*Can be moved together by '''mouse drag''' or by '''arrow keys'''. For example, creating a linear gradient, then press Ctrl+A to select all stops and use arrow keys to move the entire gradient as a whole.&lt;br /&gt;
*Can be deleted at the same time by pressing '''Del'''.&lt;br /&gt;
An always up-to-date description of the current handle selection is provided in the statusbar in the Gradient tool, including the number of selected handles (and the type of the single selected handle), as well as the total number of handles and selected objects.&lt;br /&gt;
&lt;br /&gt;
===Editing intermediate stops===&lt;br /&gt;
'''Intermediate stops''' in gradients can be added, deleted, and edited on canvas (previously this was only possible in the Gradient Editor dialog).&lt;br /&gt;
*Stops can be added by '''double clicking''' or by '''Ctrl+Alt+Click''' on the gradient line. Also, you can '''drag-and-drop''' a color from the palette onto the gradient line to create a new stop with this color. Dropping a color on an existing stop changes the color of that stop.&lt;br /&gt;
*When two or more adjacent stops are selected, pressing '''Ins''' adds stops in the middles of all selected stop intervals.&lt;br /&gt;
*Intermediate stops can be '''mousedrag'''ged or moved by '''arrow keys''' along their gradient line, within the limits of the adjacent unselected stops (or end handles). &lt;br /&gt;
:*Dragging with '''Ctrl''' moves the selected stops snapping them to 1/10 fractions of the available range.&lt;br /&gt;
:*Dragging with '''Alt''' moves the selected stops depending on how close each one is to the stop being dragged, using a smooth bell-like curve similar to the node sculpting feature in Node tool. This makes it easy to approximate different gradient profiles; for example, if you have a two-stop gradient that you want to shape according to a curve profile, select both ends of the gradient, press '''Ins''' a few times to add a number of intermediate nodes, then '''Alt+drag''' a node in the middle to smoothly profile the gradient.&lt;br /&gt;
*Stops can also be moved by '''arrow keys''' with all the regular modifiers ('''Shift''' for 10x movement, '''Alt''' for pixel-size movement at the current zoom, '''Shift+Alt''' for 10 pixels movement at the current zoom).&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;
*Pressing '''Ctrl+L''' with some intermediate stops selected attempts to ''simplify'' the selected portion of the gradient, removing those stops that can be removed without too much change in the way the gradient looks. In particular, new stops created by double-clicking or pressing Ins initially do not change the appearance of the gradient, so if you press Ctrl+L, all redundant stops that weren't moved or repainted since creation will be deleted.&lt;br /&gt;
&lt;br /&gt;
===Style of gradient stops===&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;
*When one or more gradient stops are selected, using the Copy command ('''Ctrl+C''') copies to the clipboard the style (color and opacity) of the selected stop or the averaged style of several selected stops, not the entire object with gradient as before. This means you can now copy/paste style between stops: select the source stop(s), copy, select the destination stop(s), paste style ('''Ctrl+Shift+V'''). With several selected stops, this also allows you to easily average their colors and opacities by copying them and pasting the style back onto them. (After that, redundant gradient stops can be removed by simplification with '''Ctrl+L''').&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;
===Automatic duplication of gradients===&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). The Duplicate button is therefore removed. &lt;br /&gt;
&lt;br /&gt;
However, to accommodate the needs of users who have relied on sharing the same gradient definition across objects, this behavior can be optionally suppressed. The '''Prevent sharing of gradient definitions''' checkbox on the Misc tab of Inkscape Preferences is by default checked; if you uncheck it, Inkscape does not automatically copy gradient definitions for new objects, which means that copy/pasting, duplicating, pasting style, and explicit assignment of a gradient to an object via the Gradient tool controls results in a shared gradient definition, so that changing the colors or mid-stop positions of the gradient on one object (but not changing the coordinates of the end handles) affects all other objects that share the same definition.&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), as well as to '''-1/3''', '''-1/2''', '''-1''', '''-2''', '''-3''', etc. This way you can, for example, mirror any object around one of the edges of its box. (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;
&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;
* As a long-requested feature, two entry fields are added to the toolbar which allow precise editing of the coordinates of selected nodes.&lt;br /&gt;
&lt;br /&gt;
==Rectangle Tool==&lt;br /&gt;
&lt;br /&gt;
* '''Ctrl+dragging''' now also allows the creation of rectangles with sides constrained to the '''golden ratio''' (approx. 1 : 1.618034), not only integer ratios.&lt;br /&gt;
&lt;br /&gt;
==Ellipse Tool==&lt;br /&gt;
&lt;br /&gt;
* It is now easy to create ellipses/circles passing through particular points. Normally, the starting and ending point of the mouse drag mark the corners of the '''bounding box'''. Now the '''Alt''' modifier can be used to enlarge the ellipse so that its '''circumference''' passes through these two points.&lt;br /&gt;
&lt;br /&gt;
* '''Ctrl+Alt+drag''' is an exception from this rule. It creates a perfect circle whose diameter is defined by the starting and ending point of the drag.&lt;br /&gt;
&lt;br /&gt;
==Pen/Pencil Tools==&lt;br /&gt;
&lt;br /&gt;
These tools can now create '''single dots''' by '''Ctrl+click''' on the canvas. This creates a small circle filled with the current stroke color. The radius can be set in the Preferences of the respective tools (it is specified as a multiple of the current stroke width). '''Shift+Ctrl+click''' creates a dot twice the specified size, and '''Alt+Ctrl+click''' varies the size of the created dots randomly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Dropper Tool==&lt;br /&gt;
&lt;br /&gt;
The shortcut 'D' is now used to &amp;lt;i&amp;gt;toggle&amp;lt;/i&amp;gt; (not just switch to) the dropper tool - much like space is used to toggle the selector tool. That is, pressing 'D' a second time switches back to the tool used before.&lt;br /&gt;
&lt;br /&gt;
=SVG features=&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;
==SVG 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 '''feColorMatrix''' filter primitive applies a matrix transformation to colour of each rendered pixel. This allows for effects like turning object to grayscale, modifying colour saturation and changing colour hue.&lt;br /&gt;
&lt;br /&gt;
* The '''feComposite''' filter primitive composites two images using one of the [http://en.wikipedia.org/wiki/Porter-Duff Porter-Duff blending modes] (described in paper Compositing Digital Images by T. Porter and T. Duff, published in SIGGRAPH '84 Conference Proceedings, Association for Computing Machinery, Volume 18, Number 3, July 1984) or the aritmetic mode described in SVG standard. Porter-Duff blending modes are essentially logical operations between the images. For example, xor mode shows the areas, where either one of the objects is, but not the areas where both of the objects are. Arithmetic mode lets you specify coefficients k1-k4 for blending equation (result colour) = k1 * (first input colour) * (second input colour) + k2 * (first input colour) + k3 * (second input colour) + k4.&lt;br /&gt;
&lt;br /&gt;
* The '''feConvolveMatrix''' lets you specify a [http://en.wikipedia.org/wiki/Convolution Convolution] to be applied on the image. Common effects created using convolution matrices are blur, sharpening, embossing and edge detection. There's a fairly good explanation and some example matrices at [http://www.gamedev.net/reference/programming/features/imageproc/page2.asp www.gamedev.net/reference/programming/features/imageproc/page2.asp]. Note that while gaussian blur can be created using this filter primitive, the special gaussian blur primitive is faster and resolution-independent.&lt;br /&gt;
&lt;br /&gt;
* Filter primitives '''feDiffuseLighting''' and '''feSpecularLighting''' create lighting maps for the object in input image. SVG doesn't have concept of third dimension, so these filters use alpha channel of input image as a height map: the more opaque given point in input image is, the nearer spectator it is considered to be. There exists an example for using these in Inkscape distribution, in share/examples/lighting_effects.svg or [http://inkscape.svn.sourceforge.net/viewvc/*checkout*/inkscape/inkscape/trunk/share/examples/lighting_effects.svg?revision=15523 in SVN]&lt;br /&gt;
&lt;br /&gt;
* The '''feDisplacementMap''' filter primitive displaces the pixels in the first input using the second input as a displacement map, that shows from how far the pixel should come from. Classical examples are whirl and pinch effects, that can be found in most image manipulation programs and even in some screensavers, where this kind off effect is moving around screen, twisting desktop beneath it.&lt;br /&gt;
&lt;br /&gt;
* The '''feFlood''' filter primitive fills its region with a given color and opacity. It can be used as an auxiliary tool, usualy in combination with other filter primitives, in order to facilitate some common color handling operations.&lt;br /&gt;
&lt;br /&gt;
* The '''feImage''' filter primitive allows using external images as part of filtering chain. For example, one could use external image as a displacement map for feDisplacementMap or as a height map for lighting effects. Note that while SVG standard allows using other parts of the SVG file in this filter primitive, the current Inkscape implementation only allows external images.&lt;br /&gt;
&lt;br /&gt;
* The '''feMerge''' filter primitive composites several temporary images inside the filter primitive to a single image. It uses normal alpha compositing for this. This is equivalent to using several feBlend primitives in 'normal' mode or several feComposite primitives in 'over' -mode.&lt;br /&gt;
&lt;br /&gt;
* The '''feMorphology''' filter primitive provides erode and dilate effects, that are common in image manipulation programs. With erode, darker and more transparent areas spread to lighter and more opaque areas, whereas with dilate lighter and more opaque areas spread to darker and more transparent areas. For single-colour objects, this basically means, erode makes the object thinner and dilate makes it thicker.&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, where the shadow is in a slightly different position than the actual object.&lt;br /&gt;
&lt;br /&gt;
* The '''feTurbulence''' filter primitive renders [http://en.wikipedia.org/wiki/Perlin_noise Perlin noise]. This kind of noise is useful in simulating several nature phenomena like clouds, fire and smoke and in generating complex textures like marble or granite.&lt;br /&gt;
&lt;br /&gt;
See also wiki page [[Filter Effects]] for more info on filters in Inkscape in general.&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 (LPE)=&lt;br /&gt;
&lt;br /&gt;
'''Live path effects''' (not to be confused with extension effects or SVG filters) are a new way to &amp;lt;b&amp;gt;non-destructively modify path and shape objects&amp;lt;/b&amp;gt;. Path effects affect the path data of an object but not its style. The original path is preserved and can be edited directly on-canvas, and the path effect applied to it will be updated live. &lt;br /&gt;
&lt;br /&gt;
In this version, we include several path effects that are analogous to the corresponding extension effects (such as Path along Path effect and Pattern along Path that replaces the extension of the same name). The most important advantage of path effects is that they are, indeed, live - you can still edit the original path and the effect will update in real time (unlike the extension effects which were one-time one-way transformations). In the future, we plan to reimplement most if not all of path-changing extensions as live path effects.&lt;br /&gt;
&lt;br /&gt;
Live path effects were developed by Johan Engelen as part of the GSoC 2007.&lt;br /&gt;
&lt;br /&gt;
==Details about operation==&lt;br /&gt;
The following schematic tries to explain how LPE work.&lt;br /&gt;
&lt;br /&gt;
    original style  ------------&amp;gt;  output style&lt;br /&gt;
    original path   --&amp;gt;  LPE  --&amp;gt;  output path&lt;br /&gt;
                          ^&lt;br /&gt;
                          |&lt;br /&gt;
                      parameters&lt;br /&gt;
&lt;br /&gt;
The original style and path are from the path that the effect is applied on. The output is what is visible on screen. What is very important to notice is that &amp;lt;b&amp;gt;output style equals original style&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameters can be paths, numbers, points, text, in principle anything.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Applying effects==&lt;br /&gt;
Path effects are applied through the Path Effects dialog (opened from the Path menu, or by pressing Ctrl+Shift+7. This dialog is also used for controlling the effect's parameters and for removing effects.&lt;br /&gt;
&lt;br /&gt;
When a path with a path effect applied is selected, the statusbar description mentions that, for example &amp;quot;'''Path''' (4 nodes, path effect)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There is a special Paste Path Effect command (Ctrl+7) that can be used to copy effects from one path to another.&lt;br /&gt;
&lt;br /&gt;
==Editing effect parameters==&lt;br /&gt;
When switching to the node edit tool (&amp;lt;b&amp;gt;F2&amp;lt;/b&amp;gt;), the &amp;lt;b&amp;gt;original path&amp;lt;/b&amp;gt; can be edited. The original path is shown as a red helper path. Normal path operations, like simplify, still work.&lt;br /&gt;
&lt;br /&gt;
Some parameters of effects can be edited on-canvas. For example, path parameters can be node-edited, by pressing the &amp;quot;edit on-canvas&amp;quot; button in the Path Effects dialog. &amp;lt;b&amp;gt;Press &amp;quot;7&amp;quot; to cycle through the different on-canvas editable parameters.&amp;lt;/b&amp;gt; This way, one can edit the parameters without opening the Path Effects dialog. The statusbar tells the name of the parameters that is currently being shown.&lt;br /&gt;
&lt;br /&gt;
==Available effects==&lt;br /&gt;
&lt;br /&gt;
===Path along path===&lt;br /&gt;
The &amp;lt;b&amp;gt;Path along Path&amp;lt;/b&amp;gt; effect can curve a path along another path. When this effect is applied to a path, it can be bend along another path (called ''bend path''). With the node edit tool, both the original path and the bend path can be changed &amp;lt;b&amp;gt;on-canvas&amp;lt;/b&amp;gt; and the result is &amp;lt;b&amp;gt;updated live&amp;lt;/b&amp;gt;. This provides a direct equivalent of &amp;quot;vector brushes&amp;quot; or &amp;quot;skeletal strokes&amp;quot; features in other vector editors. &lt;br /&gt;
&lt;br /&gt;
In the effect's control panel in the Path Effects dialog, you can select how many copies of the original path are put along the bend path (either '''single''' or '''repeated''') and whether it is '''stretched''' to fill the bend path. In this dialog you'll also find a button to edit the bend path on-canvas and a button to '''paste''' a new bend path from clipboard. A possible workflow is this: you select and copy the new bend path to the clipboard, then select the path you want to bend, apply the Path along path effect, and paste the bend path with the paste button next to 'bend path'.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-pathalongpath.svg&lt;br /&gt;
&lt;br /&gt;
===Pattern along path===&lt;br /&gt;
The &amp;lt;b&amp;gt;Pattern along Path&amp;lt;/b&amp;gt; effect can curve a path along another path. When this effect is applied to path A (called ''skeleton''), another path B (called ''pattern'') can then be passed as a parameter. The result is that path B is bent along path A. With the node edit tool, path A can be changed &amp;lt;b&amp;gt;on-canvas&amp;lt;/b&amp;gt; and the result is &amp;lt;b&amp;gt;updated live&amp;lt;/b&amp;gt;. This provides a direct equivalent of &amp;quot;vector brushes&amp;quot; or &amp;quot;skeletal strokes&amp;quot; features in other vector editors. &lt;br /&gt;
&lt;br /&gt;
In the effect's control panel in the Path Effects dialog, you can select how many copies of the pattern are attached (either '''single''' or '''repeated''') and whether the pattern is '''stretched''' to fill the skeleton path. You can also choose the pattern for the selected skeleton [either directly or] by '''pasting''' it from clipboard (that is, you select and copy to the clipboard the pattern, then select the skeleton, apply the Path along path effect, and paste the pattern). The '''Scale width''' parameter allows you to change the width of the pattern applied to the path.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-pathalongpath.svg&lt;br /&gt;
&lt;br /&gt;
===Stitch Subcurves===&lt;br /&gt;
The &amp;lt;b&amp;gt;Stitch Subcurves&amp;lt;/b&amp;gt; effect connects points from two subpaths of the path with straight line or curved segments, i.e. the &amp;lt;i&amp;gt;stitches&amp;lt;/i&amp;gt;. It looks a lot like the Effect Lines from Expression 3. The result is also referred to as &amp;quot;String Art&amp;quot;. For some examples of string art, see http://members.shaw.ca/jillbritton/string_art/jbstringart.htm. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;b&amp;gt;shape&amp;lt;/b&amp;gt; of the &amp;lt;b&amp;gt;connecting paths&amp;lt;/b&amp;gt; can controlled by the &amp;lt;b&amp;gt;stroke path&amp;lt;/b&amp;gt; parameter. This could be used to draw 'hair-shaped' connecting paths with sharp end-tips. Other controls include the &amp;lt;b&amp;gt;number of paths&amp;lt;/b&amp;gt;, the variation in spacing between the connecting paths (&amp;lt;b&amp;gt;clustering&amp;lt;/b&amp;gt;) and also whether the start and end points of the stitches should like exactly on the original subcurves or can &amp;lt;b&amp;gt;stray randomly&amp;lt;/b&amp;gt; around them. Finally the width of the stroke path can be varied.&lt;br /&gt;
&lt;br /&gt;
Note that this effect can only be applied to a path with two subpaths in it, hence '&amp;lt;b&amp;gt;sub&amp;lt;/b&amp;gt;curve' in the name. Use Path &amp;gt; Combine to create such a path from two separate paths.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-curvestitch.svg&lt;br /&gt;
&lt;br /&gt;
===Gears===&lt;br /&gt;
The &amp;lt;b&amp;gt;Gears&amp;lt;/b&amp;gt; effect is a toy effect. It generates a chain of interconnected gears from the path that has the effect applied to it. The nodes of the path define the centers of the gears. The first 3 nodes are special; the first defines the start angle of the chain, the second defines the center of the first gear and the third knot specifies the radius of the first gear. That is, to create a chain of 2 gears, you will need a path with 4 nodes; for 3 gears, 5 nodes, and so on. &lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-gears.svg&lt;br /&gt;
&lt;br /&gt;
==Development of new effects==&lt;br /&gt;
One of the goals of the Summer of Code project was to make it easy to create new effects. There is a framework that greatly simplifies effect implementation; very little code is needed to get the effect hooked into Inkscape. This leaves valuable time for the actual effect to be implemented. See the http://wiki.inkscape.org/wiki/index.php/MakingLivePathEffects wiki page for an explanation of how to get started with your own effect!&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 '''Modify Path &amp;gt; Edge 3D''' extension creates black, grey and white paths around a shape, then blurs and clips them for a 3D effect.&lt;br /&gt;
&lt;br /&gt;
* The new '''Generate from Path &amp;gt; Dimensions''' extension creates CAD style dimensions that are basically arrows with lengths equal to selection's bounding box and captions representing length.&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 new '''Color &amp;gt; Randomize''' extension allows you to change the color via hue, saturation and lightness check boxes. This is useful if you want to colorize lots of shapes at the same time.&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;
*The '''Generate Template &amp;gt; Perfect-Bound Cover''' extension creates templates for wraparound covers for perfect-bound books using US size and paper weight measurements.   This extension will resize the document to include the width, height, spine width, and bleed measurements that are provided to the extensions, so it should be the first operation done before designing.&lt;br /&gt;
&lt;br /&gt;
== XSLT effects ==&lt;br /&gt;
&lt;br /&gt;
* '''XSLT''' is now supported for input, output and effect extensions.  This is used to support the XAML file format (both import and export) and the Adobe Illustrator SVG import which removes Adobe's stuff from SVG.&lt;br /&gt;
&lt;br /&gt;
== ImageMagick effects ==&lt;br /&gt;
&lt;br /&gt;
New raster operations available through the effects drop-down menu, powered by the ImageMagick library. For any of these effects to work, you need to have an '''image object selected''' in the drawing. &lt;br /&gt;
&lt;br /&gt;
* '''Adaptive Threshold''' applies adaptive thresholding to the bitmap. Average color of rectangle provided by '''width''' and '''height''' used as threshold value. Use '''offset''' to apply a different threshold than the average.&lt;br /&gt;
&lt;br /&gt;
* '''Add Noise''' adds random noise of certain types to the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Blur''' blurs the bitmap, using '''radius''' as the amount of blur. Higher radius means more blur. (Note that unlike the vector Gaussian blur of objects, this bitmap blur will not extend the edges of the image, so it may appear truncated at the edges.)&lt;br /&gt;
&lt;br /&gt;
* '''Channel''' extracts the specified channel from the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Charcoal''' applies a charcoal drawing style to a bitmap. Radius controls the width (or detail) of charcoal strokes. Higher '''radius''' means lower detail. '''Sigma''': the higher it is, the less defined the charcoal is.&lt;br /&gt;
&lt;br /&gt;
* '''Colorize''' overlays the bitmap with a given color at a given intensity.&lt;br /&gt;
&lt;br /&gt;
* '''Contrast''' lightly enhances the contrast (difference between lights and darks) of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Cycle Colormap''' cycles the colormap of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Despeckle''' reduce the speckle noise in a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Edge''' hilights edges in a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Emboss''' embosses a bitmap, hilighting edges with 3D effect.&lt;br /&gt;
&lt;br /&gt;
* '''Enhance''' enhance a bitmap, minimizing noise.&lt;br /&gt;
&lt;br /&gt;
* '''Equalize''' equalizes a bitmap. Histogram equalization.&lt;br /&gt;
&lt;br /&gt;
* '''Flop''' mirrors a bitmap, reflecting each scanline in the horizontal direction.&lt;br /&gt;
&lt;br /&gt;
* '''Gaussian Blur''' blurs a bitmap, more strongly than regular blur.&lt;br /&gt;
&lt;br /&gt;
* '''Implode''' sucks everything towards the center of the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Level''' scales values falling between the given '''Black Point''' to '''White Point''' range to the full color range.&lt;br /&gt;
&lt;br /&gt;
* '''Level Channel''' acts the same way as level but for only one channel.&lt;br /&gt;
&lt;br /&gt;
* '''Median Filter''' filters a a bitmap by replacing each pixel component with the median color in a circular neighborhood&lt;br /&gt;
&lt;br /&gt;
* '''Modulate''' adjusts the percent hue, saturation, and brightness of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Negate''' takes the inverse of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Normalize''' normalizes a bitmap, expanding color range to the full possible range of color.&lt;br /&gt;
&lt;br /&gt;
* '''Oil Paint''' stylizes a bitmap so that it appears to be painted with oils.&lt;br /&gt;
&lt;br /&gt;
* '''Opacity''' modifies the opacity channel of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Raise''' alters the lightness of the edges of a bitmap to create a raised appearance, much like a frame.&lt;br /&gt;
&lt;br /&gt;
* '''Reduce Noise''' reduces noise in a bitmap by using a noise peak elimination filter.&lt;br /&gt;
&lt;br /&gt;
* '''Shade''' shades a bitmap by simulating a distant light source&lt;br /&gt;
&lt;br /&gt;
* '''Sharpen''' sharpens a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Solarize''' solarizes a bitmap, like overexposing photographic film.&lt;br /&gt;
&lt;br /&gt;
* '''Spread''' randomly spread pixels in a bitmap within the radius of '''amount'''.&lt;br /&gt;
&lt;br /&gt;
* '''Swirl''' swirls the bitmap around the center point.&lt;br /&gt;
&lt;br /&gt;
* '''Threshold''' thresholds a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Unsharpmask''' sharpens a bitmap using an unsharp mask algorithm.&lt;br /&gt;
&lt;br /&gt;
* '''Wave''' alters a bitmap along the sine wave.&lt;br /&gt;
&lt;br /&gt;
These effects are part of the Google Summer of Code 2007, coded by Christopher Brown.&lt;br /&gt;
&lt;br /&gt;
== Misc ==&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;
* A new parameter, '''precision''' is added to the parameter definitions in the [[MakingAnINX|inx file format]], allowing you to set the number of digits in that parameter's spinbutton in the effect UI.&lt;br /&gt;
&lt;br /&gt;
= Stock patterns =&lt;br /&gt;
&lt;br /&gt;
Since a few versions ago, Inkscape supports patterns in fill and stroke. However, up to now the only way to apply a pattern was by creating it in the document using the Object(s) to Pattern command, which wasn't very convenient. Now, if you switch an object's fill or stroke to pattern using the Fill&amp;amp;Stroke dialog, you will get a drop-down list with a number of predefined '''stock patterns''' that you can apply simply by selecting them from the list:&lt;br /&gt;
&lt;br /&gt;
*A selection of plain '''stripes''' differing by the ratio of the stripe width to gap width (for example, the &amp;quot;Stripes 1:2&amp;quot; pattern has gaps twice as wide as stripes), in the range from 4:1 to 1:64. All stripes patterns are in two versions: with black stripes and with white stripes (gaps are always transparent).&lt;br /&gt;
&lt;br /&gt;
*Two '''checkerboard''' patterns with black and white odd squares (even squares are transparent)&lt;br /&gt;
&lt;br /&gt;
*'''Packed circles''': a hexagonal pattern of black circles with transparent gaps.&lt;br /&gt;
&lt;br /&gt;
*'''Polka dots''': a scattering of dots designed to look randomly but evenly distributed so as to mask the regularity of the repeating pattern. There are three size variants of this pattern (small, medium, and large dots) and two color variants (black and white dots).&lt;br /&gt;
&lt;br /&gt;
*'''Wavy''' is a pattern of wavy lines.&lt;br /&gt;
&lt;br /&gt;
*'''Camouflage''' is a green-toned protective pattern such as that used by the military.&lt;br /&gt;
&lt;br /&gt;
*'''Ermine''' is the traditional heraldic pattern representing stylized stoat furs with black tails.&lt;br /&gt;
&lt;br /&gt;
*Three bitmap patterns: '''sand''', '''cloth''', and '''old paint''' are based on seamless photographic tiles and allow you to add some natural texture to your drawing. All of them are grayscale, so you can make objects with these textures semitransparent and overlay them over other colored objects to &amp;quot;texturize&amp;quot; them. &lt;br /&gt;
&lt;br /&gt;
After applying a stock pattern, switch to Node tool to edit the location, scale, and rotation of the pattern via on-canvas handles.&lt;br /&gt;
&lt;br /&gt;
All stock patterns are stored in the file &amp;lt;code&amp;gt;patterns/patterns.svg&amp;lt;/code&amp;gt; in Inkscape's &amp;lt;code&amp;gt;share&amp;lt;/code&amp;gt; directory (typically &amp;lt;code&amp;gt;/usr/share/inkscape&amp;lt;/code&amp;gt; on Linux, &amp;lt;code&amp;gt;&amp;lt;i&amp;gt;inkscape-dir&amp;lt;/i&amp;gt;/share&amp;lt;/code&amp;gt; on Windows). You can add your own patterns to this file or replace it with any other SVG file containing the patterns you need.&lt;br /&gt;
&lt;br /&gt;
=Markers=&lt;br /&gt;
&lt;br /&gt;
* A new command, '''Objects to Marker''', was added to the Object menu. It converts the current selection into a marker. After you do it, the selection is deleted, but the list of markers in the Fill and Stroke dialog, Stroke style tab, now contains the new marker that you can apply to paths. &lt;br /&gt;
&lt;br /&gt;
:* When creating the new marker, Inkscape assumes that the original objects are oriented as they should be on a horizontal path that goes from left to right. For example, if you create a new arrowhead that you plan to use as an end marker, make it point horizontally to the right before converting it to marker. &lt;br /&gt;
&lt;br /&gt;
:* Similar to standard markers, the user-created marker will scale up and down as you change the stroke width. Its initial size (i.e. the size of the object that you have turned into a marker) corresponds to the 1 px stroke.&lt;br /&gt;
&lt;br /&gt;
:* When you create a new marker, Inkscape uses the rotation center of the (first) selected object as the anchor point, i.e. the point which will coincide with the node to which that marker is attached. By default, the rotation center is in the center of the object's bounding box, which means the newly created marker will be centered around its node. If you move the rotation center, for example, to one of the corners of the object, the new marker will touch its node by that corner.&lt;br /&gt;
&lt;br /&gt;
* Several new '''UML markers''' were added to the standard set, including filled and hollow diamonds and triangles.&lt;br /&gt;
&lt;br /&gt;
* '''Master opacity''' did not apply to path markers as it should; this is fixed.&lt;br /&gt;
&lt;br /&gt;
* '''Stock markers''', if used in the document, now appear in the &amp;quot;this document's markers&amp;quot; section at the top of the marker lists in the Fill &amp;amp; Stroke dialog.  Before, any markers with stock IDs (including markers modified by the user) were hidden, making it difficult to work with modified stock markers.&lt;br /&gt;
&lt;br /&gt;
=Color management=&lt;br /&gt;
&lt;br /&gt;
== Calibrated SVG color including CMYK ==&lt;br /&gt;
&lt;br /&gt;
Inkscape now supports color-managed color definitions that use a colorspace other than sRGB (for example Adobe RGB, or calibrated CMYK colors). In the SVG file, this is done using the&lt;br /&gt;
optional &amp;quot;icc-color(...)&amp;quot; paint components as described in section 11.2 &amp;quot;Specifying paint&amp;quot; of the SVG 1.1 specification&lt;br /&gt;
[http://www.w3.org/TR/SVG11/painting.html#SpecifyingPaint]. A fallback sRGB value will be used, for non color-managed workflows. This allows for the use of calibrated color spaces, including using CMYK values that are preserved across applications.&lt;br /&gt;
&lt;br /&gt;
The new CMS color selector tab allows these colors to be edited.&lt;br /&gt;
&lt;br /&gt;
== Display adjustment ==&lt;br /&gt;
&lt;br /&gt;
In Inkscape Preferences, Color Management tab, there's are new options for enabling display adjustment; you can select any calibration profile (an ICC file) suitable for your display. Options for rendering intent can also be chosen.&lt;br /&gt;
&lt;br /&gt;
=== Per-window adjustment ===&lt;br /&gt;
Display adjustment is enabled and disabled per each editing window. This allows for simultaneous viewing of adjusted and unadjusted views of a single document by using multiple windows. There is a toggle at the bottom-right corner of the scrollbars that allows for turning on and off display adjustment. It also will be disabled to provide visible feedback when no profile is set to be available for adjustment.&lt;br /&gt;
&lt;br /&gt;
=== XICC Support ===&lt;br /&gt;
On X11-based systems (i.e. Unix and Mac OSX), use of [[http://www.burtonini.com/computing/x-icc-profiles-spec-latest.html ICC Profiles In X Specification]] (or XICC) can be enabled. Support for version 0.2 of this specification has been implemented. Enabling this option by choosing to retrieve profiles from the display will switch Inkscape to using profiles attached to screens at runtime. These allow display adjustment to be changed on the fly, and to be set and cleared per-monitor. This is especially helpful with more than a single monitor.&lt;br /&gt;
&lt;br /&gt;
Other Open Source software such as [http://www.gimp.org/ GIMP] support XICC. This allows all aware applications to be adjusted by setting a profile only once.&lt;br /&gt;
&lt;br /&gt;
=== Multi-monitor aware ===&lt;br /&gt;
When XICC support is enabled, windows will adjust to the proper profile as they are moved across monitors. Also, as the windows are moved onto monitors with no profile attached, the adjustment toggle will become disabled. When the windows are moved onto screens that do have profiles, the toggle will become enabled.&lt;br /&gt;
&lt;br /&gt;
== Soft Proofing ==&lt;br /&gt;
&lt;br /&gt;
In Inkscape Preferences, Color Management tab, there's a new option for enabling output device preview; you can select any calibration profile (an ICC file) suitable for your output device. Options for rendering intent can also be chosen, along with out of gamut warnings.&lt;br /&gt;
&lt;br /&gt;
== OS support ==&lt;br /&gt;
&lt;br /&gt;
Сolor management is supported in Linux and Mac OS X only at this time.&lt;br /&gt;
&lt;br /&gt;
=Grids, guides, snapping=&lt;br /&gt;
&lt;br /&gt;
==Grids==&lt;br /&gt;
Grids have undergone some big changes under-the-hood. These are the visible changes:&lt;br /&gt;
&lt;br /&gt;
* There is a &amp;lt;b&amp;gt;new 3D/axonometric grid&amp;lt;/b&amp;gt;. It consists of three sets of parallel lines, one vertical and others at angles of +30 and -30 degrees from the horizontal. The angles of these two latter sets and the spacing of the grid are user-settable. &lt;br /&gt;
&lt;br /&gt;
* A new tab in the Document Properties dialog, &amp;lt;b&amp;gt;Grids&amp;lt;/b&amp;gt;, is devoted solely to grids; the former grid/guide tab is renamed &amp;lt;b&amp;gt;Guides&amp;lt;/b&amp;gt; and is now used only for guides. On the Grids page, you can create and manage grids of various types in your document; so far the two types available are Rectangular (default) and Axonometric, but more types may be added in the future.&lt;br /&gt;
&lt;br /&gt;
* More than one grid can be active at the same time:&lt;br /&gt;
:* Each grid can be enabled/disabled separately from the Document Properties dialog.&lt;br /&gt;
&lt;br /&gt;
* For each grid, you can hide it by unchecking the &amp;quot;Visible&amp;quot; checkbox in the grid's tab, or disable snapping to it by unchecking &amp;quot;Enabled&amp;quot;. Note that you can have &amp;quot;Enabled&amp;quot; on and &amp;quot;Visible&amp;quot; off (but not vice versa), in which case you snap to the invisible grid.&lt;br /&gt;
&lt;br /&gt;
* Multiple views on the same document (i.e. different Inkscape windows with the same document loaded) share the same grids, but the grid can be turned on and off for each view separately. For example, you could have a zoomed-out &amp;quot;overview&amp;quot; view without grids showing. 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. &lt;br /&gt;
&lt;br /&gt;
* The rectangular grid now has an option to show dots on gridline intersections instead of solid lines.&lt;br /&gt;
&lt;br /&gt;
From developer perspective:&lt;br /&gt;
* Implementation of new grids is much easier now by subclassing CanvasGrid. 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;
* Grid information is now stored in SVG as a child of sodipodi:namedview. Old files will be converted to this new format automatically.&lt;br /&gt;
* An old bug is fixed: apparently the origin of the document coordinate system used to be set to the origin of the grid. For example, in 0.45.1 and before, specifying a grid origin of (20,20) moved the origin or coordinates to that point, and the grid was still starting at (0,0) in this moved coordinate system. This is now disabled, and the coordinate origin is not affected by grid origin.&lt;br /&gt;
&lt;br /&gt;
==Angled guidelines==&lt;br /&gt;
&lt;br /&gt;
Now, Inkscape also provides angled guidelines! Double click on a guide to set its angle.&lt;br /&gt;
&lt;br /&gt;
*  When dragging a guideline off the rulers close to the end of the ruler, the guideline will automatically be angled. The angle is set depending on the grid.&lt;br /&gt;
** For the rectangular grid, the angle is 45 degrees.&lt;br /&gt;
** For the axonometric grid, the angle is matched to the grid. When '''Ctrl''' is pressed, the angle is perpendicular to the grid lines (useful for aligning gradients).&lt;br /&gt;
&lt;br /&gt;
==Creating guidelines from objects==&lt;br /&gt;
&lt;br /&gt;
* Selected objects can now be converted to guidelines. To do this, either use the menu command '''&amp;quot;Object-&amp;gt;Object to guides&amp;quot;''' or press '''Shift+G''' in Selector tool (this shortcut also works in some other tools, see below). The conversion process recurses into groups, i.e. all objects in the current selection are converted regardless if they are grouped or not.&lt;br /&gt;
&lt;br /&gt;
* Created guides can be quickly deleted by '''Ctrl'''+clicking on them (this is of course not restricted to guides created by the process described above). Note that this only works in Selector and Node tools, i.e., in contexts where guidelines can be manipulated with the mouse. &lt;br /&gt;
&lt;br /&gt;
* '''Paths''' are converted by creating one guide for each straight line segment occurring in the path (whereas curved segments are not taken into account). To make this conveniently accessible, the shortcut '''Shift+G''' works in Pen and Pencil tools, too.&lt;br /&gt;
&lt;br /&gt;
* For all other objects, conversion usually happens by placing the guidelines around the object's bounding box (use the corresponding checkbox in the &amp;quot;Tools&amp;quot; page of Inkscape Preferences to switch between geometric and visual bounding box).&lt;br /&gt;
&lt;br /&gt;
*For '''rectangles''' and '''3D boxes''' there is a special option in their preferences pages (checked by default) which instead allows the guidelines to be placed along the object's edges so that they imitate its true shape. This is especially useful when converting rotated or skewed rectangles (to create guidelines in a special position) or for creating 3D scenes containing other objects than just boxes. The shortcut '''Shift+G''' works in these tools as well.&lt;br /&gt;
&lt;br /&gt;
==Snapping==&lt;br /&gt;
&lt;br /&gt;
* Snapping has been implemented or improved for:&lt;br /&gt;
&lt;br /&gt;
:* '''Newly created shapes'''&lt;br /&gt;
&lt;br /&gt;
:* '''Skewing''' of objects&lt;br /&gt;
&lt;br /&gt;
:* '''Handles''' of objects, incl. '''gradients'''&lt;br /&gt;
&lt;br /&gt;
:* '''Images''', '''ellipses''', and '''clones'''&lt;br /&gt;
&lt;br /&gt;
:* Text boxes, which snap to '''text baselines''' again&lt;br /&gt;
&lt;br /&gt;
:* Objects, for which snapping now optionally considers the '''rotation center'''&lt;br /&gt;
&lt;br /&gt;
:* Objects, which now allow for '''constrained snapping'''&lt;br /&gt;
&lt;br /&gt;
:* '''Guides''', which now snap while dragging them&lt;br /&gt;
&lt;br /&gt;
:* '''Axonometric grids'''&lt;br /&gt;
&lt;br /&gt;
:* '''Angled guide lines'''&lt;br /&gt;
&lt;br /&gt;
:* '''Bounding boxes''', of which now all four corners snap&lt;br /&gt;
&lt;br /&gt;
* Other snapping fixes and improvements include:&lt;br /&gt;
&lt;br /&gt;
:* It is now possible to snap to '''intersections''' of e.g. gridlines with guidelines, and of line segments. &lt;br /&gt;
&lt;br /&gt;
:* The '''snapping preferences dialog''' has been restyled to make it more intuitive. &lt;br /&gt;
&lt;br /&gt;
:* Inkscape now has a global snapping toggle, which has been added to the view-menu and is accessible through a shortcut&lt;br /&gt;
&lt;br /&gt;
:* Inkscape now allows for controlling the snapping per grid when multiple grids are being used&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 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 time it takes to snap to objects using the selector tool has been reduced significantly.&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;
:* Only nodes at '''non-smooth parts''' of a path now snap.&lt;br /&gt;
&lt;br /&gt;
:* The confusing &amp;quot;Default transformations origin&amp;quot; option has been 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;
&lt;br /&gt;
=Import/Export=&lt;br /&gt;
&lt;br /&gt;
==PDF and AI import==&lt;br /&gt;
&lt;br /&gt;
In this version, Inkscape can natively (i.e. without any additional software) import PDF files and the newer PDF-based Adobe Illustrator files (starting from AI version 9.0). &lt;br /&gt;
&lt;br /&gt;
'''Implemented features''': The new import extension can import '''paths''', '''text''', '''clippaths''', '''masked or non-masked images''', and '''softmasks'''. It supports '''pattern fills''' (XStep and YStep attributes are ignored) as well as '''linear and radial gradients''' (only those using sampled or exponential functions). '''Gradient meshes''' are imported, but they get converted to groups of small tiles (flat-colored paths) that approximate the mesh; the user can adjust the precision of this approximation. &lt;br /&gt;
&lt;br /&gt;
'''PDF import settings''': After opening a PDF or AI document, the PDF Import Settings dialog shows up. Here you can select:&lt;br /&gt;
&lt;br /&gt;
* the '''page''' to be imported from a multipage PDF;&lt;br /&gt;
&lt;br /&gt;
* the overall '''clip region''' (which can be none or set to any of the PDF boxes, e.g. the crop box, the media box, the trim box, etc.);&lt;br /&gt;
&lt;br /&gt;
* the '''precision''' for the approximation of '''gradient meshes'''; note that setting this too high may result in a huge SVG file and slow performance when importing files with gradient meshes;&lt;br /&gt;
&lt;br /&gt;
* a checkbox controlling whether the '''images''' should be '''embedded''' into the resulting SVG document or saved on the current path;&lt;br /&gt;
&lt;br /&gt;
* a '''preview''' of the selected page (shown if poppler-cairo is present on the system or if the selected page has a thumbnail embedded into the PDF 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;
The native PDF/AI importer is based on the poppler library and was implemented by Miklós Erdélyi as part of the Google Summer of Code 2007.&lt;br /&gt;
&lt;br /&gt;
==PDF export==&lt;br /&gt;
&lt;br /&gt;
* A new cairo-based PDF exporter has been added to Inkscape (marked as &amp;quot;Cairo PDF&amp;quot; in the export format list). Inkscape 0.46 can export shapes, strokes, transparency, gradients, patterns, text, and images correctly to cairo. Clipping paths and masks are known to be faulty or missing. Also, unlike the old PDF exporter, the cairo-based PDF export produces compressed PDF files that are reasonably compact. 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, but it is highly recommended to use at least '''cairo 1.5.2''' for quality PDF export.&lt;br /&gt;
&lt;br /&gt;
* A new cairo-based PostScript exporter has been added (marked as &amp;quot;Cairo PS&amp;quot; in the export format list). The cairo PS backend is not as mature as the PDF backend. It rasterizes a lot of its content. Text output does not work where it works with the PDF backend.&lt;br /&gt;
&lt;br /&gt;
==CDR (CorelDraw) import==&lt;br /&gt;
&lt;br /&gt;
Inkscape can use [http://www.sk1project.org/modules.php?name=Products&amp;amp;product=uniconvertor UniConvertor] if it's installed on your system to import documents in CDR format (CorelDraw). This feature is Unix-only at this time and requires that you have Python and UniConvertor installed. As of UniConvertor 1.1.1, versions from 7 to X4 of the CDR format are supported, and text objects are not converted.&lt;br /&gt;
&lt;br /&gt;
==XAML import/export==&lt;br /&gt;
&lt;br /&gt;
* Inkscape can import vector graphics portions of XAML documents, as well as export its documents to XAML.&lt;br /&gt;
&lt;br /&gt;
==Adobe Illustrator SVG clean import==&lt;br /&gt;
&lt;br /&gt;
* Using this new import filter, Inkscape can open an SVG document removing any elements and attributes in the namespaces that Adobe Illustrator uses for its stuff.  This will clean out everything except the actual SVG content.&lt;br /&gt;
&lt;br /&gt;
==WMF import==&lt;br /&gt;
&lt;br /&gt;
Now Inkscape uses UniConvertor for opening WMF files, which results in three noticable changes:&lt;br /&gt;
&lt;br /&gt;
# imported files are editable now&lt;br /&gt;
# known rendering issues are resolved&lt;br /&gt;
# WMF import works on all platforms where UniConvertor works (including Windows)&lt;br /&gt;
&lt;br /&gt;
Text objects are not supported by UniConvertor as of version 1.1.1.&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;
== Open Clip Art Library import and export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape features a preliminary support for importing drawings from [http://openclipart.org/ Open Clip Art Library].&lt;br /&gt;
&lt;br /&gt;
After specifying account details in Preferences dialog (Import/Export tab) use 'File &amp;amp;gt; Import From Open Clip Art Library' command to open a dialog, then search for tags and pick one of the results to merge this found drawing into your document.&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;
* --query-all produces a comma delimited listing of all objects in the document, with their x, y, height, and width values.&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;
=User interface=&lt;br /&gt;
&lt;br /&gt;
== Dockable dialogs ==&lt;br /&gt;
&lt;br /&gt;
Inkscape's dialog handling has been reworked in this release to allow dialogs to behave like '''dockable panels'''. The dock area that holds the user's dialogs is located right of the canvas.&lt;br /&gt;
&lt;br /&gt;
Dialogs placed in the dock can easily be rearranged, resized, stacked in groups or iconified. Furthermore, a dialog can be dragged of the dock to become a floating dock in itself&amp;amp;mdash;this allows other dialogs to be dragged and dropped on it to form a floating group of dialogs.&lt;br /&gt;
&lt;br /&gt;
The old dialog behavior (used in releases before 0.46) has been preserved as an option, and if it is preferred, one can select it under ''Windows'' &amp;gt; ''Dialog behavior'' in the Inkscape preferences dialog.&lt;br /&gt;
&lt;br /&gt;
====Known issues====&lt;br /&gt;
&lt;br /&gt;
* Some of Inkscape's dialogs are yet to be adapted to allow docking, these include the &amp;quot;Text and Font&amp;quot; dialog, the &amp;quot;Tiled clones&amp;quot; dialog, the &amp;quot;XML editor&amp;quot; and the &amp;quot;Object properties&amp;quot; dialog.&lt;br /&gt;
&lt;br /&gt;
* Floating dialogs that are closed and later reopened might reappear on positions slightly different than their original ones.&lt;br /&gt;
&lt;br /&gt;
* Resizing dialogs that are placed in the dock can be a bit slow and quirky.&lt;br /&gt;
&lt;br /&gt;
* The total height of content the dock will in most cases remain the same when a dialog is closed/iconified, i.e. the remaining docked dialogs will fill the hole. This might not the desired behavior.&lt;br /&gt;
&lt;br /&gt;
====Settings====&lt;br /&gt;
&lt;br /&gt;
Three settings that control dockable dialogs behavior are present in the &amp;lt;code&amp;gt;preferences.xml&amp;lt;/code&amp;gt; file under a &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; group called &amp;lt;code&amp;gt;dock&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cancenterdock&amp;lt;/code&amp;gt;: controls if dialogs are allowed to be stacked on top of each other to be ordered in groups. Valid values are &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;dockbarstyle&amp;lt;/code&amp;gt;: controls what information is shown for iconified dockable dialogs. &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; = icons only, &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; = text only, &amp;lt;code&amp;gt;&amp;quot;2&amp;quot;&amp;lt;/code&amp;gt; = both icons and text. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;switcherstyle&amp;lt;/code&amp;gt;: controls what information is shown for grouped dockable dialogs. &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; = icons only, &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; = text only, &amp;lt;code&amp;gt;&amp;quot;2&amp;quot;&amp;lt;/code&amp;gt; = both icons and text.&lt;br /&gt;
&lt;br /&gt;
== Toolbars ==&lt;br /&gt;
&lt;br /&gt;
'''Main toolbar''' on the left can now optionally use '''smaller buttons'''. With the several new tools added in this version, this may help users with small screens where the toolbar otherwise may not fit vertically. The toggle is on the Misc tab of the Inkscape Preferences dialog.&lt;br /&gt;
&lt;br /&gt;
Switching to stock GTK+ toolbars. This allows for the main window to be made narrower, with toolbar items flowing into a popup menu as it is resized.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Swatches panel, color drag-and-drop ==&lt;br /&gt;
&lt;br /&gt;
* Right-clicking a color swatch now opens a context menu which allows you to apply the color to the fill or stroke of selection.&lt;br /&gt;
&lt;br /&gt;
* Dragging colors from the color palette has been fixed and improved:&lt;br /&gt;
&lt;br /&gt;
:* Now the dropped color is applied to '''the object on which you drop it''', regardless of whether that object is selected or not. This means you can change the color of only one object from selection without having to select it separately. (If you want to assign color to the entire selection, just click on the color swatch on the palette, not drag it.)&lt;br /&gt;
&lt;br /&gt;
:* If an object has stroke and you '''drop the color over stroke''', the color is applied to stroke and not fill. (Another way to always apply color to stroke is to '''Shift+drag''' it.)&lt;br /&gt;
&lt;br /&gt;
:* When gradient handles are active (e.g. in Gradient or Node tools), you can '''drop a color onto the gradient line''' to create a new gradient mid stop with this color, or '''drop a color onto an existing stop''' to recolor that stop.&lt;br /&gt;
&lt;br /&gt;
:* A new submenu has been added to affect the shape of the displayed swatches, allowing their preferred size to be made thinner or wider. Among other things, this allows for more to be seen on screen at once when made thinner.&lt;br /&gt;
&lt;br /&gt;
:* Sizing of the swatches has been corrected to be properly progressive, and now go form smaller to larger on all platforms.&lt;br /&gt;
&lt;br /&gt;
:* Space reserved for the scrollbar is no longer kept with smaller palettes shown in the bottom of the main UI. This allows for more working space when palettes with not many entries are selected at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
==Color gestures==&lt;br /&gt;
&lt;br /&gt;
A new method for quick and precise adjustment of colors is added in this version: color gestures. It works on the selected objects by grabbing the '''fill or stroke color swatch''' in the '''selected style indicator''' (on the left of the statusbar) and dragging it in various directions as described below. Note that this only works when the swatch displays a '''flat color'''; it does not work for a swatch showing &amp;quot;None&amp;quot;, &amp;quot;N/A&amp;quot;, or displaying a gradient (although you can select one or more gradient stops in Gradient tool and color-adjust them by color gestures just as you would do for objects). Color gestures can work on '''fill''' or '''stroke''', depending on which swatch in the selected color indicator you drag.&lt;br /&gt;
&lt;br /&gt;
Color gestures work in '''HSL''' color space. Dragging without any keyboard modifiers adjusts the '''hue''' channel, dragging with '''Shift''' adjusts '''saturation''', and dragging with '''Ctrl''' adjusts '''lightness'''.&lt;br /&gt;
&lt;br /&gt;
The adjustment is done by '''&amp;quot;rotating&amp;quot;''' the color swatch away from the original direction which is assumed to be '''NE at 45 degrees''' (i.e. from&lt;br /&gt;
the swatch diagonally into the document window). Once you click and drag the color swatch, imagine a diagonal line going from the point where you clicked in the NE direction, across the entire Inkscape window. By dragging '''below or to the right''' of that line, you decrease the corresponding color channel, to the minimum at the lower edge of the window; by dragging it above or to the left, you increase it, to the maximum at the left edge of the window. If you hover your mouse exactly over the 45 degrees line, the change will be zero.&lt;br /&gt;
&lt;br /&gt;
Note that you can easily vary the '''precision''' of your adjustment. If you drag close enough to the swatch, each small movement results in a big change of the color. If you need a finer adjustment, just drag farther away from the swatch, towards the center of the Inkscape window or even to its upper right corner, where minute movements will produce very small changes in the color. In fact, this method gives you more color precision than even the color wheel in the Fill and Stroke dialog, unless you expand that dialog to fill the entire screen which is rarely practical.&lt;br /&gt;
&lt;br /&gt;
The mouse '''cursor''' changes when you're doing color gestures, reflecting the channel currently adjusted and indicating the directions for increasing and decreasing the value. Also, watch the '''statusbar''' which will indicate, as you drag, the channel you are adjusting, the original value of that channel, the new value, and the difference. &lt;br /&gt;
&lt;br /&gt;
You can '''switch channels while you drag'''. That is, you don't need to &lt;br /&gt;
drag it again and again from the swatch if you want to adjust all three channels - you can do it all in one drag, by pressing and releasing Ctrl and Shift as necessary. Note that when you change the keyboard modifiers during drag, the position of the zero-change line is temporarily changed to go through the current mouse position; this is done so that there are no sudden changes in color if you are switching modifiers away from the original 45-degree line.&lt;br /&gt;
&lt;br /&gt;
The '''Alt''' modifier is special. Pressing Alt means &amp;quot;do nothing&amp;quot;; this allows you to move the mouse, without releasing, to a more convenient place from where to continue tweaking the color after letting go of Alt. As with the other modifiers, releasing Alt temporarily redefines the zero-change axis to go through the point where Alt was released. For example, imagine  you made your color darker by Ctrl+dragging towards the bottom edge of the window and you now need to make it less saturated. You cannot however Shift+drag it any lower because there's just not enough room for that. In that situation, without releasing the mouse, Alt+drag it upwards to a convenient spot and then Shift+drag downwards as needed. Also, you can start dragging from the swatch with Alt pressed to avoid changing the color while you take a more convenient position for adjustments.&lt;br /&gt;
&lt;br /&gt;
For example, you can select a green rectangle and first turn it into greenish-blue by dragging away from the Fill swatch and slightly above the 45 degrees line; then, without releasing the mouse, press Ctrl and drag a bit to the right to darken the color; then press Shift, release Ctrl, and adjust saturation. You can press or release Ctrl and Shift as many times as necessary during a single drag; when you are finally satisfied with your color, release the mouse to commit the change.&lt;br /&gt;
&lt;br /&gt;
Apart from precise adjustments, you can use color gestures to very quickly perform some common color transformations:&lt;br /&gt;
&lt;br /&gt;
* Ctrl+drag the swatch to the right and down to paint all selected objects black.&lt;br /&gt;
&lt;br /&gt;
* Ctrl+drag the swatch upwards and to the left to paint all selected objects white.&lt;br /&gt;
&lt;br /&gt;
* Shift+drag the swatch to the right and down to desaturate the color of selected objects.&lt;br /&gt;
&lt;br /&gt;
* Shift+drag the swatch upwards and to the left to maximize saturation of the color of selected objects. &lt;br /&gt;
&lt;br /&gt;
Note that when several objects or gradient stops with different colors are selected, the selected style indicator shows their '''averaged''' color. If you adjust that color by gesturing, the changed color will be assigned back to all selected objects/stops, in effect eliminating any difference between them. If you want to adjust many different-colored objects preserving their relative differences, use the color modes of the Tweak tool or color adjustment extension effects.&lt;br /&gt;
&lt;br /&gt;
This new technique requires some getting used to, but once you get the idea it is quite convenient, fast, and precise.&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;
== Preserving zoom/view of reverted documents ==&lt;br /&gt;
&lt;br /&gt;
When reverting files to their previously saved state, the current zoom factor/panning is now retained (as opposed to reverted to the saved state, too, as it was the case before). This less interrupts the workflow when one is working on some detail in the drawing.&lt;br /&gt;
&lt;br /&gt;
== Bounding box option moved ==&lt;br /&gt;
&lt;br /&gt;
The preferences option to select between &amp;quot;visual&amp;quot; and &amp;quot;geometric&amp;quot; bounding box was moved in Inkscape Preferences dialog from the &amp;quot;Selector&amp;quot; page to &amp;quot;Tools&amp;quot; page (since it applies more globally than just in Selector tool).&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;
== Using other keys in place of Alt ==&lt;br /&gt;
&lt;br /&gt;
* Many Linux users have found the use of '''Alt-drag''' and '''Alt+click''' in Inkscape problematical because this shortcut is often captured by window managers. In 0.46, instead of disabling of the window manager shortcut as suggested in [http://wiki.inkscape.org/wiki/index.php/FAQ#How_to_make_Alt.2Bclick_and_Alt.2Bdrag_work_on_Linux.3F the FAQ], you can change a setting in your preferences.xml file called &amp;lt;code&amp;gt;mapalt&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; group. This numerical value ranges from 1 to 5; 1 indicates no change, any other value refers to some special key on a keyboard, such as '''Alt Gr''', the '''Windows''' key, etc. The specific mapping of these values to the keys on your keyboard can be viewed and/or editied by '''xkeycaps''', available from [http://www.jwz.org/xkeycaps www.jwz.org]. The value associated with a particular key is shown in that program at the top of the screen beside the word &amp;quot;Modifiers&amp;quot; when the mouse is held over a key on the main display.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keyboard profiles ==&lt;br /&gt;
&lt;br /&gt;
New profiles have been added:&lt;br /&gt;
&lt;br /&gt;
* '''Corel DRAW X4''' (corel-draw-x4.xml)&lt;br /&gt;
* '''Zoner Draw 5''' (zoner-draw.xml)&lt;br /&gt;
* '''ACD Systems Canvas 11''' (acd-canvas.xml)&lt;br /&gt;
&lt;br /&gt;
Also, profile for Adobe Illustrator has been fixed and includes bindings for tools now.&lt;br /&gt;
&lt;br /&gt;
(To enable a profile, copy it into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; in the same directory, overwriting the old file. To restore the default Inkscape set, copy &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
=Other changes and 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;
* On the '''Scale''' tab of the '''Transform dialog''', the numbers now show the current size of selection, not size increment as before. Correspondingly, with the % unit chosen, you see 100% displayed, and to scale it up twice, you enter 200%, not 100% as before. This is a more intuitive behavior and it's more consistent with how the W/H controls work in the Selector tool. &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;
* The '''Shift''' tab of the '''Tile Clones''' dialog has two new options: '''Cumulate''': when checked, each tile is shifted by the normal amount plus the cumulative shifts of all previous tiles. This is useful when placing tiles that are being scaled by a uniform amount. '''Exlude tile''': when checked, the tile width or height is not automatically included in calculating the tile's shift. This is useful when using the dialog to place clones on a circle or spiral (rather than using a shift of -100%). It is also useful when positioning tiles using the '''Exponent''' parameter.&lt;br /&gt;
&lt;br /&gt;
* The '''Scale''' tab of the '''Tile Clones''' dialog has a new parameter: '''Base''' that allows placing tiles along a logarithmic spiral (as often found in nature). If the value is '''0''', the parameter is not used. Use a value less than one for a converging spiral and a value of greater than one for a diverging spiral. The actual scale is calculated as '''base''' raised to the nominal '''scale''' power.&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;
* 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;
* 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;
* Preferences have been added for setting the default metadata and licenses, so this information can be automatically filled in with new documents.&lt;br /&gt;
&lt;br /&gt;
* The built-in '''Potrace''' tracing engine is upgraded to version '''1.8''' with some minor bugs fixed.&lt;br /&gt;
&lt;br /&gt;
* File dialog windows (open/save) now have an '''Enable preview''' checkbox which allows you to disable the preview pane.&lt;br /&gt;
&lt;br /&gt;
* In the Calligraphic pen controls, the toggle button to enable tablet pressure sensitivity is moved to the Width control, and the button for tilt sensitivity is moved to Angle, to better reflect what parameters these toggles affect.&lt;br /&gt;
&lt;br /&gt;
* In Node and Gradient tools, using '''Tab/Shift+Tab''' to select next/previous node or gradient handle scrolls the canvas if necessary to show the selection. &lt;br /&gt;
&lt;br /&gt;
* The option '''Import bitmap as &amp;lt;image&amp;gt;''' is removed; it was added several versions ago to allow optionally importing images as rectangles with image pattern, to make clipping the images easier. Now that you can easily use clipping paths, as well as convert any image to rectangle with pattern with Alt+I, this option is not really necessary and removed to reduce confusion. Bitmaps are always imported into SVG as an &amp;lt;image&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
* Support has been added for stock patterns, in the same way that stock markers were already supported. Adding patterns to share/patterns/patterns.svg, and giving them a inkscape-stockid attribute as found on the examples already there will make them available in all Inkscape sessions from the patterns tab of the fill &amp;amp; stroke dialog.&lt;br /&gt;
&lt;br /&gt;
* New '''fontforge_glyph.svg''' template is added for font designers who draw glyphs in Inkscape and import them into FontFoge. It is 1000x1000px large and has a horizontal guide at 200px to mark border for descenders.&lt;br /&gt;
&lt;br /&gt;
* Save dialogs have been modified to clarify that they '''Save as SVG''', so people using Inkscape to edit PDF, EPS, and other file formats will be less confused at the default behavior when saving files.&lt;br /&gt;
&lt;br /&gt;
= Improvements for the Mac OS X version =&lt;br /&gt;
&lt;br /&gt;
* Inkscape 0.46 is officially released as a '''Universal''' (i386/ppc) binary for both OS X '''10.4 Tiger''' and '''10.5 Leopard'''.&lt;br /&gt;
&lt;br /&gt;
* Inkscape application bundle on '''Mac OS X''' now has the possibility to contain '''pre-compiled python modules''' (e.g. lxml, numpy, etc.) and to use them without requiring any work from the user. Since Python itself is shipped with Mac OS X, the user only has to drag and drop Inkscape on its hard-drive and all the extensions will be '''functional immediately'''.&lt;br /&gt;
&lt;br /&gt;
* A GTK theme is now included in Inkscape.app bundle on OS X. If the user does not have any personal customization (e.g. in a .gtkrc-2.0 file) this theme is used. It reflects the OS X settings for &amp;quot;Appearance&amp;quot; and &amp;quot;Highlight Color&amp;quot; set in System Preferences &amp;gt; Appearance.&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;
* A fix in the blur rendering code made '''exporting blurred objects to bitmap''' much faster and fixed the disappearing of blurred objects in exported bitmaps which happened for large objects in 0.45.  The same fix got rid of the rendering artefacts that sometimes appeared on blurred objects during scrolling. &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;
* On Windows, '''file opening/saving dialogs''' can no longer sink under the main editor window (they now have the inkscape window set correctly as their parent window).&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;
* '''Creative Commons Public Domain Declaration URI''' points to the 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;
* On Windows, the Inkscape uninstaller deleted all files under the install directory. This could lead to removing user-created files, or even other program files not related to inkscape if the install directory was C:\Program Files. The new uninstaller '''tracks all installed files and asks for confirmation before deleting any other files'''. However, installation and uninstallation process is now slower.&lt;br /&gt;
&lt;br /&gt;
* Clones were wrongly unlinked when their original was moved to another layer; fixed.&lt;br /&gt;
&lt;br /&gt;
* Previous versions had a problem on '''Windows Vista''' where selected menu item was invisible. Now our Windows builds use a newer version of GTK library which fixes this problem.&lt;br /&gt;
&lt;br /&gt;
* Duplicating empty text objects that have just been created no longer crashes. Also, the XML editor crash related to empty text objects is fixed. A downside is that the SVG will become cluttered with empty text objects as they are no longer automatically removed. A better fix for the problem is planned.&lt;br /&gt;
&lt;br /&gt;
* In Tile Clones dialog, the PMG symmetry group was created incorrectly; it is now fixed.&lt;br /&gt;
&lt;br /&gt;
* Serious usability issues with the font size field in the Text tool's controls bar have been fixed.&lt;br /&gt;
&lt;br /&gt;
* The rulers are now correctly scaled and will align nicely with document coordinates, with or without the scrollbars displayed.&lt;br /&gt;
&lt;br /&gt;
=Known Issues=&lt;br /&gt;
&lt;br /&gt;
* (LP: #180890) Blend modes do not work correctly over transparent    backgrounds. A workaround is to place an opaque rectangle underneath the bottom-most layer.&lt;br /&gt;
* (LP # 202704) Blur and other filters are very slow when applied to an object with transform= attribute with rotation or skew. To avoid this slowdown, either do not rotate/skew objects you use with filters, or apply filters only to paths (but not shapes to text) because paths, by default, get no transform= attribute when you rotate or skew them.&lt;br /&gt;
* Windows printing has two known issues. In both cases the workaround is to print to bitmap (Print -&amp;gt; Rendering -&amp;gt; Bitmap).&lt;br /&gt;
** (LP # 205732) Blurred objects are misaligned when printing.&lt;br /&gt;
** (LP # 208217) Masked objects disappear from the page when printing.&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>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.46&amp;diff=27074</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=27074"/>
		<updated>2008-04-02T00:32:49Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* GTK theme on OS X */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Inkscape 0.46=&lt;br /&gt;
&lt;br /&gt;
Highlights 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;
* Live path effects&lt;br /&gt;
&lt;br /&gt;
* Color management&lt;br /&gt;
&lt;br /&gt;
* New SVG filters and UI&lt;br /&gt;
&lt;br /&gt;
* Native PDF and AI import&lt;br /&gt;
&lt;br /&gt;
* XAML import/export&lt;br /&gt;
&lt;br /&gt;
* Open Clip Art Library integration (import/export)&lt;br /&gt;
&lt;br /&gt;
* Stock patterns&lt;br /&gt;
&lt;br /&gt;
* Bitmap editing extension effects&lt;br /&gt;
&lt;br /&gt;
* Full on-canvas gradient editing&lt;br /&gt;
&lt;br /&gt;
* Engraver's Toolbox in the Calligraphic tool&lt;br /&gt;
&lt;br /&gt;
* Touch selection&lt;br /&gt;
&lt;br /&gt;
* Dockable dialogs&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;
* &amp;quot;3D&amp;quot; / axonometric grid&lt;br /&gt;
&lt;br /&gt;
* Angled guidelines&lt;br /&gt;
&lt;br /&gt;
* Conversion of objects to guidelines&lt;br /&gt;
&lt;br /&gt;
* Significant speed and interactivity improvements&lt;br /&gt;
&lt;br /&gt;
* Hundreds of smaller features and bugfixes&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 in order from top to bottom. Now the redraw always starts '''at your mouse cursor location''' and proceed upwards and downwards from it, so that the area near the cursor is always redrawn first. This significantly improves program's responsiveness in some situations. For example, when you are node-editing part of a complex path, the entire path needs to be redrawn on each change, but now this redraw starts from the point you're working on. Moreover, the redraw is interruptible, so each mouse movement starts new redraw from the mouse cursor area. As a result, during such operations those parts that you're working on redraw often and feel snappy and responsive, while areas further away may lag behind more.&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;
:'''Exporting drawings with blur''' was particularly slow in 0.45; some files could take hours to export. Now this is fixed, in part by the faster algorithm mentioned above and in part by a bugfix in the export code. Now even the quite complex files with large blurs export at high resolution in at most a few minutes.  &lt;br /&gt;
&lt;br /&gt;
* Minor improvements have been made to gradient rendering performance.&lt;br /&gt;
&lt;br /&gt;
* '''Dragging handles and nodes''' as well as '''dragging and transforming objects''' by mouse became more responsive, so that working in complex drawings and especially editing complex paths is noticeably easier. In particular, this fixes the annoying latency issue where a node or a handle could follow mouse cursor even after you release mouse button after a drag. &lt;br /&gt;
&lt;br /&gt;
* '''Moving objects, nodes, and gradient handles by cursor keys''' as well as '''scaling and rotating objects from keyboard''' and '''zooming by keys''' are much more responsive when working with complex slow-rendering objects. Now, if you press and hold a key, your selection/zoom level will quickly jump to the final position instead of going through all the intermediate steps as before. &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;
:* '''Redrawing the newly exposed parts of the canvas''' after scrolling, especially diagonal scrolling, is now faster because only the exposed areas are redrawn; before, this often resulted in the entire screen being redrawn which was much slower.&lt;br /&gt;
&lt;br /&gt;
:* Previously, if you started 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;
* Better responsiveness and more visual feedback in user interface: &lt;br /&gt;
&lt;br /&gt;
:*When you zoom, the '''zoom control''' on the right end of the statusbar now updates immediately, not after screen redraw as before. &lt;br /&gt;
&lt;br /&gt;
:*Many potentially slow commands (Save, Simplify, Combine, Break Apart and others) now display a '''busy cursor''' and flash a message in the statusbar (e.g. &amp;quot;Saving document...&amp;quot;) while they work. &lt;br /&gt;
&lt;br /&gt;
:*The '''statusbar messages''' displayed while you're drawing a shape or a path in Pen tool do not lag behind the mouse movements.&lt;br /&gt;
&lt;br /&gt;
* '''Combine''' and '''Convert to paths''' commands are now orders of magnitude faster when applied to a selection with hundreds or thousands of objects.&lt;br /&gt;
&lt;br /&gt;
* The time it takes to '''snap to objects''' using the selector tool has been reduced dramatically, which is most noticeable for snapping to complex paths.&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;
===How it works===&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 (or use the auto gap closing parameter, see below).&lt;br /&gt;
&lt;br /&gt;
===Style===&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). As in all other tools, the '''style swatch''' on the far right of the Controls bar shows the style that will be used for the next fill object you create.&lt;br /&gt;
&lt;br /&gt;
===Controls===&lt;br /&gt;
&lt;br /&gt;
In the tool's '''Controls bar''':&lt;br /&gt;
&lt;br /&gt;
* Paint Bucket's perceptual fill can use either all visible colors or specific color channels. Using the '''Fill by''' drop-down list, you can restrict the fill algorithm to one 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;
* The '''Threshold''' (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;
* Using the '''Grow/shrink by''' parameter, 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 much the same as the Outset and Inset path commands, except it's done automatically after every fill.&lt;br /&gt;
&lt;br /&gt;
* With the '''Close gaps''' parameter, you can make the Paint Bucket tool  ignore 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 (close gaps up to 2 pixels in size)&lt;br /&gt;
** Medium (4 pixels)&lt;br /&gt;
** Large (6 pixels)&lt;br /&gt;
:Note that setting this parameter to other than None may slow down noticeably the filling of large areas.&lt;br /&gt;
&lt;br /&gt;
===Shortcuts===&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 drawings which largely blurs the&lt;br /&gt;
distinction between vector and raster editing. Instead of meticulously selecting some&lt;br /&gt;
objects and then performing an action on the selection, you can now select ''all''&lt;br /&gt;
objects (or all objects you are interested in) and apply the Tweak tool's brush to&lt;br /&gt;
smoothly and naturally change the shape or style of only those objects (or parts&lt;br /&gt;
thereof) ''that the brush touches''.&lt;br /&gt;
&lt;br /&gt;
The area of the tool's action - its ''brush'' - is marked by an orange-colored circular&lt;br /&gt;
outline that moves with your mouse cursor. 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.&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 mode or paint it by Color Paint&lt;br /&gt;
mode. You can also apply it to groups of objects; it will go into groups and act on&lt;br /&gt;
individual objects inside groups. If you're trying to use it without anything selected,&lt;br /&gt;
it will remind you by a statusbar message to select some objects.&lt;br /&gt;
&lt;br /&gt;
===Width===&lt;br /&gt;
&lt;br /&gt;
The width of the tool's brush, in the range from 1 to 100, can be changed by the&lt;br /&gt;
'''Width''' control in the tool's controls bar above the canvas. You can also change&lt;br /&gt;
width by '''Left''' and '''Right''' arrow keys (same as in the Calligraphy tool) at any&lt;br /&gt;
time (including during action) as well as '''Home''' and '''End'''. Also, as in Calligraphy&lt;br /&gt;
tool, the visible width of the brush is independent of zoom; simply zooming in or out is&lt;br /&gt;
often easier than adjusting the width if you want to cover a smaller or larger area of&lt;br /&gt;
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, also in the&lt;br /&gt;
range from 1 to 100. You can also change width by '''Up''' and '''Down''' arrow keys at&lt;br /&gt;
any time (including during action).&lt;br /&gt;
&lt;br /&gt;
If you have a pressure-sensitive tablet and your &amp;quot;Use pressure&amp;quot; button on the right-hand&lt;br /&gt;
end of the controls bar is on, then the force will also depend on how hard you actually&lt;br /&gt;
press your pen into your tablet, changing in the range from zero to whatever you set in&lt;br /&gt;
the Force control. If all you have is a mouse, then the force will be constant but still&lt;br /&gt;
settable by the Force control. &lt;br /&gt;
&lt;br /&gt;
===Path editing modes===&lt;br /&gt;
&lt;br /&gt;
The Tweak tool has a number of '''modes''', selectable by toggle buttons in the tool's&lt;br /&gt;
Controls bar and by keyboard shortcuts. Some of these modes change the shapes of &lt;br /&gt;
paths while others affect the colors of objects. All these modes share the Width and&lt;br /&gt;
Force controls but otherwise are quite different. Let's look at the path editing modes&lt;br /&gt;
first.&lt;br /&gt;
&lt;br /&gt;
Unlike the Node tool, to edit paths with the Tweak tool you don't need to worry about&lt;br /&gt;
where the nodes of a path are and how to manipulate them. You just apply the tool's&lt;br /&gt;
brush to any point, and the selected paths at that point will reshape smoothly and&lt;br /&gt;
naturally - as if made of soft jelly - regardless of where its nodes lie. If applied to&lt;br /&gt;
a shape or text object, the tool converts them to paths automatically.&lt;br /&gt;
&lt;br /&gt;
While not very useful for technical drawings, tweaking paths will be indispensable for&lt;br /&gt;
artistic uses of Inkscape - cartoons, drawings, sketches, anime, etc. This new&lt;br /&gt;
functionality is somewhat similar to the tools such as &amp;quot;Pucker&amp;quot; and &amp;quot;Bloat&amp;quot; in the&lt;br /&gt;
latest versions of Adobe Illustrator. &lt;br /&gt;
&lt;br /&gt;
There are currently six path editing modes in the Tweak tool: '''Push''', '''Shrink''',&lt;br /&gt;
'''Grow''', '''Attract''', '''Repel''', 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 '''Shrink''' and '''Grow''' 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 (Shrink) or outwards (Grow). 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 Calligraphy pen 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 Shrink action where you want the lines to become thinner (and the hatching to become lighter), up until total disappearance. If you press hard, shrinking works as an eraser, so you can easily clean the strokes' ends to make them thin, sharp, and uniform. Conversely, applying Grow makes strokes wider (i.e. the hatching becomes darker).&lt;br /&gt;
&lt;br /&gt;
:Of course, shrinking and growing are useful not only for calligraphic strokes. Same as with Push, with Shrink and Grow you can '''sculpt''' any path, spawning smooth treacle-like appendages with Grow and carving holes with Shrink. Unlike the &amp;quot;node sculpting&amp;quot; mode in the Node tool, however, this does not require adding new nodes to the shape.&lt;br /&gt;
&lt;br /&gt;
* The '''Attract''' and '''Repel''' modes work by moving each affected point on a path towards (Attract) or from (Repel) the cursor point. In some cases this may look similar to Shrink and Grow, but the difference is that shrinking/growing moves paths perpendicularly to the path in each point, whereas attracting/repelling moves them to or from the cursor regardless of the path shape. These modes are similar to the Pinch effect in AI; you can use them for various central-symmetric distortions in parts of your paths.&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, shrinking, or growing 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;
See the screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.46-tweak-path.png] for a few examples of using the path editing modes of the Tweak tool.&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;
inflates 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 inflating 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;
====Known problems====&lt;br /&gt;
&lt;br /&gt;
Known problems with the path editing modes in Tweak tool:&lt;br /&gt;
&lt;br /&gt;
# they don't work on open paths (an open path becomes closed if you tweak it);&lt;br /&gt;
# they are rather slow; &lt;br /&gt;
# they quickly eat memory; and &lt;br /&gt;
# they are sometimes buggy - thin calligraphic strokes may suddenly disappear or change their shape drastically as you're shrinking or growing them.&lt;br /&gt;
&lt;br /&gt;
For (4), 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;
===Color editing modes===&lt;br /&gt;
&lt;br /&gt;
The '''Color Paint''' and '''Color Jitter''' modes, unlike the path editing modes,&lt;br /&gt;
change the colors of objects instead of their shapes. Yet they share enough common&lt;br /&gt;
features with the path editing modes to be part of the same tool: These modes also use&lt;br /&gt;
a circular soft-edged brush controlled by the Width and Force parameters on the Controls&lt;br /&gt;
bar and affected by the pen pressure (if you have a pressure-sensitive tablet).&lt;br /&gt;
&lt;br /&gt;
* '''Color Paint''' applies the style of the tool to the selected objects under the brush. The style of the tool is visible in the style swatch at the rightmost end of the tool's control bar; it can be changed by clicking on the color palette or by any other style assignment command, such as Fill and Stroke dialog. ('''Note''': unlike all other tools, in Tweak tool in Color Paint mode you cannot assign style directly to selected objects; any style-setting command changes the tool's style instead.)&lt;br /&gt;
&lt;br /&gt;
:The fill from the tool's style applies to the fills of the painted objects, and the stroke applies to the strokes. If the tool's style has no fill or no stroke, it won't affect fills or strokes, correspondingly. For example, if you want to color the fills of objects blue but leave their strokes untouched, assign blue fill to the tool's style (just click blue on the palette) but set its stroke to None (middle-click the Stroke swatch in the statusbar). Similarly, master opacity in the tool's style affects master opacities of the touched objects (if the O channel is on, see below).&lt;br /&gt;
&lt;br /&gt;
:This mode allows you to literally paint over objects, shifting their colors towards the target style of the tool. For example, if you paint with yellow fill over a blue-filled object, the object will become greenish blue, then green, then yellowish green, and end up being exactly the yellow color you're painting with. This speed of this gradual transition depends on both Force parameter and pen pressure; also, objects touched by the periphery of the brush are less affected than those hit by the brush center. Overall, using this tool is very similar to a soft brush in a raster editor such as Gimp or Photoshop.&lt;br /&gt;
&lt;br /&gt;
* '''Color Jitter''' mode does not apply any color, but instead jitters (randomizes) the colors of the objects it touches. The force of the action determines how strong is the randomization, i.e. how far the colors deviate from the original values. This mode does not use the tool's style.&lt;br /&gt;
&lt;br /&gt;
Both modes work on flat fills and gradients; for gradients, the tool takes into account not only the position of the entire object with gradient, but also the position of each gradient stop relative to the brush. This means that, for example, you can change the blue color only in an object filled with blue-red gradient simply by painting over its blue end with a brush small enough to not touch the red. (Note that color tweaking does not create gradients on objects that used flat color before, but only adjusts existing gradients in the drawing.)&lt;br /&gt;
&lt;br /&gt;
See the screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.46-tweak-color.png] for a few examples of using the color editing modes of the Tweak tool.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Channels====&lt;br /&gt;
&lt;br /&gt;
Color Paint and Color Jitter honor the '''Channels''' control. This control comprises&lt;br /&gt;
the four buttons: '''H''', '''S''', '''L''', and '''O''', which allow you to turn on and off&lt;br /&gt;
the tool's action on the object's hue, saturation, lightness, and opacity,&lt;br /&gt;
correspondingly. For example, if you want to raise the saturation of some part of your&lt;br /&gt;
drawing without changing the hue, select some maximum-saturation color (e.g. pure red)&lt;br /&gt;
and turn off all Channels buttons except S. Similarly, you can replace the hues without&lt;br /&gt;
affecting saturation or lightness (only H pressed), or lighten/darken all colors without&lt;br /&gt;
changing their hues and saturation (only L pressed). Pressing O allows you to apply the&lt;br /&gt;
master opacity from the tool's style to the master opacity of objects (but not fill or&lt;br /&gt;
stroke opacity).&lt;br /&gt;
&lt;br /&gt;
====Usage notes====&lt;br /&gt;
&lt;br /&gt;
Color painting with Tweak tool is similar, but not exactly analogous to bitmap&lt;br /&gt;
painting. Even though the tool itself works as a soft brush, it still applies its color&lt;br /&gt;
to vector objects, which behave as vector objects usually do. For example, if you want&lt;br /&gt;
to change the tint of the face in your drawing, and if a hand in the drawing is part of&lt;br /&gt;
the same object as the face, that hand will change its tint too even if it's located far&lt;br /&gt;
from the point you are painting. (We foresee a &amp;quot;fracture&amp;quot; command in one of the next&lt;br /&gt;
versions of Inkscape which will help you turn a monolithic object into a mosaic of small&lt;br /&gt;
fragments that will be then easy to paint with Tweak tool.)  Still, even with this&lt;br /&gt;
limitation, color painting is a novel way of dealing with vector drawings which allows&lt;br /&gt;
you to quickly and intuitively make adjustments which would be awkward and slow with&lt;br /&gt;
traditional approach.&lt;br /&gt;
&lt;br /&gt;
Drawings containing patterns or scatterings of small independent objects are best suited&lt;br /&gt;
for color painting with Tweak tool. Examples include:&lt;br /&gt;
&lt;br /&gt;
* freehand drawings with Calligraphy pen, consisting of many separate strokes;&lt;br /&gt;
&lt;br /&gt;
* gradient meshes imported from Adobe Illustrator files (Inkscape renders these meshes as lattices of small polygons; while there's no direct support for gradient meshes in Inkscape yet, color painting on such lattices is almost as good);&lt;br /&gt;
&lt;br /&gt;
* text converted to paths and with Break Apart command applied so that each letter is a separate path;&lt;br /&gt;
&lt;br /&gt;
* patterns made with the Tile Clones command; note that you need to unset the fill and/or stroke on the original object and use the Color tab to assign some initial color to the clones - this will make them paintable with the Tweak tool without unlinking.&lt;br /&gt;
&lt;br /&gt;
Moreover, color tweaking can be useful for compositions with a few objects or even for&lt;br /&gt;
single objects. Unlike all other color selection methods, painting with the Tweak tool&lt;br /&gt;
implements the ''color mixing'' metaphor which is much more familiar to traditional&lt;br /&gt;
artists than RGB sliders or even the color wheel. For example, start with a rectagle of&lt;br /&gt;
pure blue color; then, pick different colors by Color Paint and apply light touches with&lt;br /&gt;
minimum Force and minimum pen pressure: add a little green, a little brown, a little&lt;br /&gt;
yellow, etc. until you have the exact hue you need. Similarly, you can whiten or blacken&lt;br /&gt;
any hue by admixing white or black.&lt;br /&gt;
&lt;br /&gt;
You can also use color tweaking to add a tint, darken/lighten, saturate/desaturate, or&lt;br /&gt;
color jitter your entire drawing. Just select all in all layers, zoom out, choose a&lt;br /&gt;
large brush width so it covers all of the drawing, and apply a little color tweaking&lt;br /&gt;
(with minimum Force) that will therefore affect all visible objects.&lt;br /&gt;
&lt;br /&gt;
===Keyboard shortcuts===&lt;br /&gt;
&lt;br /&gt;
* '''W''', '''Shift+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+S''': switch to the Shrink mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+G''': switch to the Grow mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+A''': switch to the Attract mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+E''': switch to the Repel mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+R''': switch to the Roughen mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+C''': switch to the Color Paint mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+J''': switch to the Color Jitter 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 Shrink (while Ctrl is down)&lt;br /&gt;
&lt;br /&gt;
* '''Shift+Ctrl+mouse drag''': temporarily switch to Grow (while Shift+Ctrl is down)&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 create drawings or objects that appear three-dimensional. The new '''3D box tool''' helps you create such drawings by automating the most common operation: creating a box in a given 3D 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; Shift+drag without releasing the mouse button to extrude in Z direction.&lt;br /&gt;
&lt;br /&gt;
* Adjust any of its 3 dimensions by handles. The 4 handles on the front X/Y side resize it, the four ones on the back X/Y side expand/contract the box in Z direction. With Shift, the functions of handles on front and back sides are reversed. With Ctrl, the side-resizing handles snap to the coordinate axes or diagonals.&lt;br /&gt;
&lt;br /&gt;
* Move a 3D box &amp;quot;in perspective&amp;quot; by dragging its center; without modifiers, movement occurs within the XY-plane (press Ctrl to constrain the movement to the directions of the coordinate axes or diagonals), with Shift the box moves parallel to the Z-axis.&lt;br /&gt;
&lt;br /&gt;
* Adjust the vanishing points of a perspective by dragging them on the canvas (see below) or toggling their states; all boxes sharing this perspective are affected by a vanishing point move. &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;
In SVG, a 3D box is represented as a '''group''' (svg:g) with a special extension attribute (in Inkscape's 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;
===Keyboard shortcuts===&lt;br /&gt;
&lt;br /&gt;
* '''X''', '''Shift+F4''': switch to the 3D box tool&lt;br /&gt;
&lt;br /&gt;
* The various kinds of parentheses, namely '''[''' ''']''', '''(''' ''')''', '''{''' '''}''', can be used to rotate infinite (i.e., parallel) perspective lines in X-, Y-, and Z-direction, respectively. Closing parentheses rotate clockwise and opening parentheses rotate counterclockwise. The angle of rotation is taken from the preferences. Pressing '''Alt''' reduces the amount of rotation to 1 screen pixel.&lt;br /&gt;
&lt;br /&gt;
* When the 3D box tool is active, '''Shift+X''', '''Shift+Y''', and '''Shift+Z''' toggle perspective lines in the corresponding direction between &amp;quot;converging&amp;quot; and &amp;quot;parallel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Gradient Tool==&lt;br /&gt;
===Selecting multiple stops===&lt;br /&gt;
'''More than one gradient stop''' can be selected at a time. Shortcuts for working with multiple stop selections are generally modeled on the Node tool. &lt;br /&gt;
* Add a stop to the selected stops by '''Shift+click'''.&lt;br /&gt;
* Press '''Ctrl+A''' to select all stops in the selected objects.&lt;br /&gt;
* '''Shift+drag''' around stops to add them to selection.&lt;br /&gt;
Multiple selected stops:&lt;br /&gt;
*Can be moved together by '''mouse drag''' or by '''arrow keys'''. For example, creating a linear gradient, then press Ctrl+A to select all stops and use arrow keys to move the entire gradient as a whole.&lt;br /&gt;
*Can be deleted at the same time by pressing '''Del'''.&lt;br /&gt;
An always up-to-date description of the current handle selection is provided in the statusbar in the Gradient tool, including the number of selected handles (and the type of the single selected handle), as well as the total number of handles and selected objects.&lt;br /&gt;
&lt;br /&gt;
===Editing intermediate stops===&lt;br /&gt;
'''Intermediate stops''' in gradients can be added, deleted, and edited on canvas (previously this was only possible in the Gradient Editor dialog).&lt;br /&gt;
*Stops can be added by '''double clicking''' or by '''Ctrl+Alt+Click''' on the gradient line. Also, you can '''drag-and-drop''' a color from the palette onto the gradient line to create a new stop with this color. Dropping a color on an existing stop changes the color of that stop.&lt;br /&gt;
*When two or more adjacent stops are selected, pressing '''Ins''' adds stops in the middles of all selected stop intervals.&lt;br /&gt;
*Intermediate stops can be '''mousedrag'''ged or moved by '''arrow keys''' along their gradient line, within the limits of the adjacent unselected stops (or end handles). &lt;br /&gt;
:*Dragging with '''Ctrl''' moves the selected stops snapping them to 1/10 fractions of the available range.&lt;br /&gt;
:*Dragging with '''Alt''' moves the selected stops depending on how close each one is to the stop being dragged, using a smooth bell-like curve similar to the node sculpting feature in Node tool. This makes it easy to approximate different gradient profiles; for example, if you have a two-stop gradient that you want to shape according to a curve profile, select both ends of the gradient, press '''Ins''' a few times to add a number of intermediate nodes, then '''Alt+drag''' a node in the middle to smoothly profile the gradient.&lt;br /&gt;
*Stops can also be moved by '''arrow keys''' with all the regular modifiers ('''Shift''' for 10x movement, '''Alt''' for pixel-size movement at the current zoom, '''Shift+Alt''' for 10 pixels movement at the current zoom).&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;
*Pressing '''Ctrl+L''' with some intermediate stops selected attempts to ''simplify'' the selected portion of the gradient, removing those stops that can be removed without too much change in the way the gradient looks. In particular, new stops created by double-clicking or pressing Ins initially do not change the appearance of the gradient, so if you press Ctrl+L, all redundant stops that weren't moved or repainted since creation will be deleted.&lt;br /&gt;
&lt;br /&gt;
===Style of gradient stops===&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;
*When one or more gradient stops are selected, using the Copy command ('''Ctrl+C''') copies to the clipboard the style (color and opacity) of the selected stop or the averaged style of several selected stops, not the entire object with gradient as before. This means you can now copy/paste style between stops: select the source stop(s), copy, select the destination stop(s), paste style ('''Ctrl+Shift+V'''). With several selected stops, this also allows you to easily average their colors and opacities by copying them and pasting the style back onto them. (After that, redundant gradient stops can be removed by simplification with '''Ctrl+L''').&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;
===Automatic duplication of gradients===&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). The Duplicate button is therefore removed. &lt;br /&gt;
&lt;br /&gt;
However, to accommodate the needs of users who have relied on sharing the same gradient definition across objects, this behavior can be optionally suppressed. The '''Prevent sharing of gradient definitions''' checkbox on the Misc tab of Inkscape Preferences is by default checked; if you uncheck it, Inkscape does not automatically copy gradient definitions for new objects, which means that copy/pasting, duplicating, pasting style, and explicit assignment of a gradient to an object via the Gradient tool controls results in a shared gradient definition, so that changing the colors or mid-stop positions of the gradient on one object (but not changing the coordinates of the end handles) affects all other objects that share the same definition.&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), as well as to '''-1/3''', '''-1/2''', '''-1''', '''-2''', '''-3''', etc. This way you can, for example, mirror any object around one of the edges of its box. (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;
&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;
* As a long-requested feature, two entry fields are added to the toolbar which allow precise editing of the coordinates of selected nodes.&lt;br /&gt;
&lt;br /&gt;
==Rectangle Tool==&lt;br /&gt;
&lt;br /&gt;
* '''Ctrl+dragging''' now also allows the creation of rectangles with sides constrained to the '''golden ratio''' (approx. 1 : 1.618034), not only integer ratios.&lt;br /&gt;
&lt;br /&gt;
==Ellipse Tool==&lt;br /&gt;
&lt;br /&gt;
* It is now easy to create ellipses/circles passing through particular points. Normally, the starting and ending point of the mouse drag mark the corners of the '''bounding box'''. Now the '''Alt''' modifier can be used to enlarge the ellipse so that its '''circumference''' passes through these two points.&lt;br /&gt;
&lt;br /&gt;
* '''Ctrl+Alt+drag''' is an exception from this rule. It creates a perfect circle whose diameter is defined by the starting and ending point of the drag.&lt;br /&gt;
&lt;br /&gt;
==Pen/Pencil Tools==&lt;br /&gt;
&lt;br /&gt;
These tools can now create '''single dots''' by '''Ctrl+click''' on the canvas. This creates a small circle filled with the current stroke color. The radius can be set in the Preferences of the respective tools (it is specified as a multiple of the current stroke width). '''Shift+Ctrl+click''' creates a dot twice the specified size, and '''Alt+Ctrl+click''' varies the size of the created dots randomly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Dropper Tool==&lt;br /&gt;
&lt;br /&gt;
The shortcut 'D' is now used to &amp;lt;i&amp;gt;toggle&amp;lt;/i&amp;gt; (not just switch to) the dropper tool - much like space is used to toggle the selector tool. That is, pressing 'D' a second time switches back to the tool used before.&lt;br /&gt;
&lt;br /&gt;
=SVG features=&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;
==SVG 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 '''feColorMatrix''' filter primitive applies a matrix transformation to colour of each rendered pixel. This allows for effects like turning object to grayscale, modifying colour saturation and changing colour hue.&lt;br /&gt;
&lt;br /&gt;
* The '''feComposite''' filter primitive composites two images using one of the [http://en.wikipedia.org/wiki/Porter-Duff Porter-Duff blending modes] (described in paper Compositing Digital Images by T. Porter and T. Duff, published in SIGGRAPH '84 Conference Proceedings, Association for Computing Machinery, Volume 18, Number 3, July 1984) or the aritmetic mode described in SVG standard. Porter-Duff blending modes are essentially logical operations between the images. For example, xor mode shows the areas, where either one of the objects is, but not the areas where both of the objects are. Arithmetic mode lets you specify coefficients k1-k4 for blending equation (result colour) = k1 * (first input colour) * (second input colour) + k2 * (first input colour) + k3 * (second input colour) + k4.&lt;br /&gt;
&lt;br /&gt;
* The '''feConvolveMatrix''' lets you specify a [http://en.wikipedia.org/wiki/Convolution Convolution] to be applied on the image. Common effects created using convolution matrices are blur, sharpening, embossing and edge detection. There's a fairly good explanation and some example matrices at [http://www.gamedev.net/reference/programming/features/imageproc/page2.asp www.gamedev.net/reference/programming/features/imageproc/page2.asp]. Note that while gaussian blur can be created using this filter primitive, the special gaussian blur primitive is faster and resolution-independent.&lt;br /&gt;
&lt;br /&gt;
* Filter primitives '''feDiffuseLighting''' and '''feSpecularLighting''' create lighting maps for the object in input image. SVG doesn't have concept of third dimension, so these filters use alpha channel of input image as a height map: the more opaque given point in input image is, the nearer spectator it is considered to be. There exists an example for using these in Inkscape distribution, in share/examples/lighting_effects.svg or [http://inkscape.svn.sourceforge.net/viewvc/*checkout*/inkscape/inkscape/trunk/share/examples/lighting_effects.svg?revision=15523 in SVN]&lt;br /&gt;
&lt;br /&gt;
* The '''feDisplacementMap''' filter primitive displaces the pixels in the first input using the second input as a displacement map, that shows from how far the pixel should come from. Classical examples are whirl and pinch effects, that can be found in most image manipulation programs and even in some screensavers, where this kind off effect is moving around screen, twisting desktop beneath it.&lt;br /&gt;
&lt;br /&gt;
* The '''feFlood''' filter primitive fills its region with a given color and opacity. It can be used as an auxiliary tool, usualy in combination with other filter primitives, in order to facilitate some common color handling operations.&lt;br /&gt;
&lt;br /&gt;
* The '''feImage''' filter primitive allows using external images as part of filtering chain. For example, one could use external image as a displacement map for feDisplacementMap or as a height map for lighting effects. Note that while SVG standard allows using other parts of the SVG file in this filter primitive, the current Inkscape implementation only allows external images.&lt;br /&gt;
&lt;br /&gt;
* The '''feMerge''' filter primitive composites several temporary images inside the filter primitive to a single image. It uses normal alpha compositing for this. This is equivalent to using several feBlend primitives in 'normal' mode or several feComposite primitives in 'over' -mode.&lt;br /&gt;
&lt;br /&gt;
* The '''feMorphology''' filter primitive provides erode and dilate effects, that are common in image manipulation programs. With erode, darker and more transparent areas spread to lighter and more opaque areas, whereas with dilate lighter and more opaque areas spread to darker and more transparent areas. For single-colour objects, this basically means, erode makes the object thinner and dilate makes it thicker.&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, where the shadow is in a slightly different position than the actual object.&lt;br /&gt;
&lt;br /&gt;
* The '''feTurbulence''' filter primitive renders [http://en.wikipedia.org/wiki/Perlin_noise Perlin noise]. This kind of noise is useful in simulating several nature phenomena like clouds, fire and smoke and in generating complex textures like marble or granite.&lt;br /&gt;
&lt;br /&gt;
See also wiki page [[Filter Effects]] for more info on filters in Inkscape in general.&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 (LPE)=&lt;br /&gt;
&lt;br /&gt;
'''Live path effects''' (not to be confused with extension effects or SVG filters) are a new way to &amp;lt;b&amp;gt;non-destructively modify path and shape objects&amp;lt;/b&amp;gt;. Path effects affect the path data of an object but not its style. The original path is preserved and can be edited directly on-canvas, and the path effect applied to it will be updated live. &lt;br /&gt;
&lt;br /&gt;
In this version, we include several path effects that are analogous to the corresponding extension effects (such as Path along Path effect and Pattern along Path that replaces the extension of the same name). The most important advantage of path effects is that they are, indeed, live - you can still edit the original path and the effect will update in real time (unlike the extension effects which were one-time one-way transformations). In the future, we plan to reimplement most if not all of path-changing extensions as live path effects.&lt;br /&gt;
&lt;br /&gt;
Live path effects were developed by Johan Engelen as part of the GSoC 2007.&lt;br /&gt;
&lt;br /&gt;
==Details about operation==&lt;br /&gt;
The following schematic tries to explain how LPE work.&lt;br /&gt;
&lt;br /&gt;
    original style  ------------&amp;gt;  output style&lt;br /&gt;
    original path   --&amp;gt;  LPE  --&amp;gt;  output path&lt;br /&gt;
                          ^&lt;br /&gt;
                          |&lt;br /&gt;
                      parameters&lt;br /&gt;
&lt;br /&gt;
The original style and path are from the path that the effect is applied on. The output is what is visible on screen. What is very important to notice is that &amp;lt;b&amp;gt;output style equals original style&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameters can be paths, numbers, points, text, in principle anything.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Applying effects==&lt;br /&gt;
Path effects are applied through the Path Effects dialog (opened from the Path menu, or by pressing Ctrl+Shift+7. This dialog is also used for controlling the effect's parameters and for removing effects.&lt;br /&gt;
&lt;br /&gt;
When a path with a path effect applied is selected, the statusbar description mentions that, for example &amp;quot;'''Path''' (4 nodes, path effect)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There is a special Paste Path Effect command (Ctrl+7) that can be used to copy effects from one path to another.&lt;br /&gt;
&lt;br /&gt;
==Editing effect parameters==&lt;br /&gt;
When switching to the node edit tool (&amp;lt;b&amp;gt;F2&amp;lt;/b&amp;gt;), the &amp;lt;b&amp;gt;original path&amp;lt;/b&amp;gt; can be edited. The original path is shown as a red helper path. Normal path operations, like simplify, still work.&lt;br /&gt;
&lt;br /&gt;
Some parameters of effects can be edited on-canvas. For example, path parameters can be node-edited, by pressing the &amp;quot;edit on-canvas&amp;quot; button in the Path Effects dialog. &amp;lt;b&amp;gt;Press &amp;quot;7&amp;quot; to cycle through the different on-canvas editable parameters.&amp;lt;/b&amp;gt; This way, one can edit the parameters without opening the Path Effects dialog. The statusbar tells the name of the parameters that is currently being shown.&lt;br /&gt;
&lt;br /&gt;
==Available effects==&lt;br /&gt;
&lt;br /&gt;
===Path along path===&lt;br /&gt;
The &amp;lt;b&amp;gt;Path along Path&amp;lt;/b&amp;gt; effect can curve a path along another path. When this effect is applied to a path, it can be bend along another path (called ''bend path''). With the node edit tool, both the original path and the bend path can be changed &amp;lt;b&amp;gt;on-canvas&amp;lt;/b&amp;gt; and the result is &amp;lt;b&amp;gt;updated live&amp;lt;/b&amp;gt;. This provides a direct equivalent of &amp;quot;vector brushes&amp;quot; or &amp;quot;skeletal strokes&amp;quot; features in other vector editors. &lt;br /&gt;
&lt;br /&gt;
In the effect's control panel in the Path Effects dialog, you can select how many copies of the original path are put along the bend path (either '''single''' or '''repeated''') and whether it is '''stretched''' to fill the bend path. In this dialog you'll also find a button to edit the bend path on-canvas and a button to '''paste''' a new bend path from clipboard. A possible workflow is this: you select and copy the new bend path to the clipboard, then select the path you want to bend, apply the Path along path effect, and paste the bend path with the paste button next to 'bend path'.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-pathalongpath.svg&lt;br /&gt;
&lt;br /&gt;
===Pattern along path===&lt;br /&gt;
The &amp;lt;b&amp;gt;Pattern along Path&amp;lt;/b&amp;gt; effect can curve a path along another path. When this effect is applied to path A (called ''skeleton''), another path B (called ''pattern'') can then be passed as a parameter. The result is that path B is bent along path A. With the node edit tool, path A can be changed &amp;lt;b&amp;gt;on-canvas&amp;lt;/b&amp;gt; and the result is &amp;lt;b&amp;gt;updated live&amp;lt;/b&amp;gt;. This provides a direct equivalent of &amp;quot;vector brushes&amp;quot; or &amp;quot;skeletal strokes&amp;quot; features in other vector editors. &lt;br /&gt;
&lt;br /&gt;
In the effect's control panel in the Path Effects dialog, you can select how many copies of the pattern are attached (either '''single''' or '''repeated''') and whether the pattern is '''stretched''' to fill the skeleton path. You can also choose the pattern for the selected skeleton [either directly or] by '''pasting''' it from clipboard (that is, you select and copy to the clipboard the pattern, then select the skeleton, apply the Path along path effect, and paste the pattern). The '''Scale width''' parameter allows you to change the width of the pattern applied to the path.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-pathalongpath.svg&lt;br /&gt;
&lt;br /&gt;
===Stitch Subcurves===&lt;br /&gt;
The &amp;lt;b&amp;gt;Stitch Subcurves&amp;lt;/b&amp;gt; effect connects points from two subpaths of the path with straight line or curved segments, i.e. the &amp;lt;i&amp;gt;stitches&amp;lt;/i&amp;gt;. It looks a lot like the Effect Lines from Expression 3. The result is also referred to as &amp;quot;String Art&amp;quot;. For some examples of string art, see http://members.shaw.ca/jillbritton/string_art/jbstringart.htm. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;b&amp;gt;shape&amp;lt;/b&amp;gt; of the &amp;lt;b&amp;gt;connecting paths&amp;lt;/b&amp;gt; can controlled by the &amp;lt;b&amp;gt;stroke path&amp;lt;/b&amp;gt; parameter. This could be used to draw 'hair-shaped' connecting paths with sharp end-tips. Other controls include the &amp;lt;b&amp;gt;number of paths&amp;lt;/b&amp;gt;, the variation in spacing between the connecting paths (&amp;lt;b&amp;gt;clustering&amp;lt;/b&amp;gt;) and also whether the start and end points of the stitches should like exactly on the original subcurves or can &amp;lt;b&amp;gt;stray randomly&amp;lt;/b&amp;gt; around them. Finally the width of the stroke path can be varied.&lt;br /&gt;
&lt;br /&gt;
Note that this effect can only be applied to a path with two subpaths in it, hence '&amp;lt;b&amp;gt;sub&amp;lt;/b&amp;gt;curve' in the name. Use Path &amp;gt; Combine to create such a path from two separate paths.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-curvestitch.svg&lt;br /&gt;
&lt;br /&gt;
===Gears===&lt;br /&gt;
The &amp;lt;b&amp;gt;Gears&amp;lt;/b&amp;gt; effect is a toy effect. It generates a chain of interconnected gears from the path that has the effect applied to it. The nodes of the path define the centers of the gears. The first 3 nodes are special; the first defines the start angle of the chain, the second defines the center of the first gear and the third knot specifies the radius of the first gear. That is, to create a chain of 2 gears, you will need a path with 4 nodes; for 3 gears, 5 nodes, and so on. &lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-gears.svg&lt;br /&gt;
&lt;br /&gt;
==Development of new effects==&lt;br /&gt;
One of the goals of the Summer of Code project was to make it easy to create new effects. There is a framework that greatly simplifies effect implementation; very little code is needed to get the effect hooked into Inkscape. This leaves valuable time for the actual effect to be implemented. See the http://wiki.inkscape.org/wiki/index.php/MakingLivePathEffects wiki page for an explanation of how to get started with your own effect!&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 '''Modify Path &amp;gt; Edge 3D''' extension creates black, grey and white paths around a shape, then blurs and clips them for a 3D effect.&lt;br /&gt;
&lt;br /&gt;
* The new '''Generate from Path &amp;gt; Dimensions''' extension creates CAD style dimensions that are basically arrows with lengths equal to selection's bounding box and captions representing length.&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 new '''Color &amp;gt; Randomize''' extension allows you to change the color via hue, saturation and lightness check boxes. This is useful if you want to colorize lots of shapes at the same time.&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;
*The '''Generate Template &amp;gt; Perfect-Bound Cover''' extension creates templates for wraparound covers for perfect-bound books using US size and paper weight measurements.   This extension will resize the document to include the width, height, spine width, and bleed measurements that are provided to the extensions, so it should be the first operation done before designing.&lt;br /&gt;
&lt;br /&gt;
== XSLT effects ==&lt;br /&gt;
&lt;br /&gt;
* '''XSLT''' is now supported for input, output and effect extensions.  This is used to support the XAML file format (both import and export) and the Adobe Illustrator SVG import which removes Adobe's stuff from SVG.&lt;br /&gt;
&lt;br /&gt;
== ImageMagick effects ==&lt;br /&gt;
&lt;br /&gt;
New raster operations available through the effects drop-down menu, powered by the ImageMagick library. For any of these effects to work, you need to have an '''image object selected''' in the drawing. &lt;br /&gt;
&lt;br /&gt;
* '''Adaptive Threshold''' applies adaptive thresholding to the bitmap. Average color of rectangle provided by '''width''' and '''height''' used as threshold value. Use '''offset''' to apply a different threshold than the average.&lt;br /&gt;
&lt;br /&gt;
* '''Add Noise''' adds random noise of certain types to the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Blur''' blurs the bitmap, using '''radius''' as the amount of blur. Higher radius means more blur. (Note that unlike the vector Gaussian blur of objects, this bitmap blur will not extend the edges of the image, so it may appear truncated at the edges.)&lt;br /&gt;
&lt;br /&gt;
* '''Channel''' extracts the specified channel from the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Charcoal''' applies a charcoal drawing style to a bitmap. Radius controls the width (or detail) of charcoal strokes. Higher '''radius''' means lower detail. '''Sigma''': the higher it is, the less defined the charcoal is.&lt;br /&gt;
&lt;br /&gt;
* '''Colorize''' overlays the bitmap with a given color at a given intensity.&lt;br /&gt;
&lt;br /&gt;
* '''Contrast''' lightly enhances the contrast (difference between lights and darks) of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Cycle Colormap''' cycles the colormap of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Despeckle''' reduce the speckle noise in a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Edge''' hilights edges in a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Emboss''' embosses a bitmap, hilighting edges with 3D effect.&lt;br /&gt;
&lt;br /&gt;
* '''Enhance''' enhance a bitmap, minimizing noise.&lt;br /&gt;
&lt;br /&gt;
* '''Equalize''' equalizes a bitmap. Histogram equalization.&lt;br /&gt;
&lt;br /&gt;
* '''Flop''' mirrors a bitmap, reflecting each scanline in the horizontal direction.&lt;br /&gt;
&lt;br /&gt;
* '''Gaussian Blur''' blurs a bitmap, more strongly than regular blur.&lt;br /&gt;
&lt;br /&gt;
* '''Implode''' sucks everything towards the center of the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Level''' scales values falling between the given '''Black Point''' to '''White Point''' range to the full color range.&lt;br /&gt;
&lt;br /&gt;
* '''Level Channel''' acts the same way as level but for only one channel.&lt;br /&gt;
&lt;br /&gt;
* '''Median Filter''' filters a a bitmap by replacing each pixel component with the median color in a circular neighborhood&lt;br /&gt;
&lt;br /&gt;
* '''Modulate''' adjusts the percent hue, saturation, and brightness of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Negate''' takes the inverse of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Normalize''' normalizes a bitmap, expanding color range to the full possible range of color.&lt;br /&gt;
&lt;br /&gt;
* '''Oil Paint''' stylizes a bitmap so that it appears to be painted with oils.&lt;br /&gt;
&lt;br /&gt;
* '''Opacity''' modifies the opacity channel of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Raise''' alters the lightness of the edges of a bitmap to create a raised appearance, much like a frame.&lt;br /&gt;
&lt;br /&gt;
* '''Reduce Noise''' reduces noise in a bitmap by using a noise peak elimination filter.&lt;br /&gt;
&lt;br /&gt;
* '''Shade''' shades a bitmap by simulating a distant light source&lt;br /&gt;
&lt;br /&gt;
* '''Sharpen''' sharpens a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Solarize''' solarizes a bitmap, like overexposing photographic film.&lt;br /&gt;
&lt;br /&gt;
* '''Spread''' randomly spread pixels in a bitmap within the radius of '''amount'''.&lt;br /&gt;
&lt;br /&gt;
* '''Swirl''' swirls the bitmap around the center point.&lt;br /&gt;
&lt;br /&gt;
* '''Threshold''' thresholds a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Unsharpmask''' sharpens a bitmap using an unsharp mask algorithm.&lt;br /&gt;
&lt;br /&gt;
* '''Wave''' alters a bitmap along the sine wave.&lt;br /&gt;
&lt;br /&gt;
These effects are part of the Google Summer of Code 2007, coded by Christopher Brown.&lt;br /&gt;
&lt;br /&gt;
== Misc ==&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;
* A new parameter, '''precision''' is added to the parameter definitions in the [[MakingAnINX|inx file format]], allowing you to set the number of digits in that parameter's spinbutton in the effect UI.&lt;br /&gt;
&lt;br /&gt;
= Stock patterns =&lt;br /&gt;
&lt;br /&gt;
Since a few versions ago, Inkscape supports patterns in fill and stroke. However, up to now the only way to apply a pattern was by creating it in the document using the Object(s) to Pattern command, which wasn't very convenient. Now, if you switch an object's fill or stroke to pattern using the Fill&amp;amp;Stroke dialog, you will get a drop-down list with a number of predefined '''stock patterns''' that you can apply simply by selecting them from the list:&lt;br /&gt;
&lt;br /&gt;
*A selection of plain '''stripes''' differing by the ratio of the stripe width to gap width (for example, the &amp;quot;Stripes 1:2&amp;quot; pattern has gaps twice as wide as stripes), in the range from 4:1 to 1:64. All stripes patterns are in two versions: with black stripes and with white stripes (gaps are always transparent).&lt;br /&gt;
&lt;br /&gt;
*Two '''checkerboard''' patterns with black and white odd squares (even squares are transparent)&lt;br /&gt;
&lt;br /&gt;
*'''Packed circles''': a hexagonal pattern of black circles with transparent gaps.&lt;br /&gt;
&lt;br /&gt;
*'''Polka dots''': a scattering of dots designed to look randomly but evenly distributed so as to mask the regularity of the repeating pattern. There are three size variants of this pattern (small, medium, and large dots) and two color variants (black and white dots).&lt;br /&gt;
&lt;br /&gt;
*'''Wavy''' is a pattern of wavy lines.&lt;br /&gt;
&lt;br /&gt;
*'''Camouflage''' is a green-toned protective pattern such as that used by the military.&lt;br /&gt;
&lt;br /&gt;
*'''Ermine''' is the traditional heraldic pattern representing stylized stoat furs with black tails.&lt;br /&gt;
&lt;br /&gt;
*Three bitmap patterns: '''sand''', '''cloth''', and '''old paint''' are based on seamless photographic tiles and allow you to add some natural texture to your drawing. All of them are grayscale, so you can make objects with these textures semitransparent and overlay them over other colored objects to &amp;quot;texturize&amp;quot; them. &lt;br /&gt;
&lt;br /&gt;
After applying a stock pattern, switch to Node tool to edit the location, scale, and rotation of the pattern via on-canvas handles.&lt;br /&gt;
&lt;br /&gt;
All stock patterns are stored in the file &amp;lt;code&amp;gt;patterns/patterns.svg&amp;lt;/code&amp;gt; in Inkscape's &amp;lt;code&amp;gt;share&amp;lt;/code&amp;gt; directory (typically &amp;lt;code&amp;gt;/usr/share/inkscape&amp;lt;/code&amp;gt; on Linux, &amp;lt;code&amp;gt;&amp;lt;i&amp;gt;inkscape-dir&amp;lt;/i&amp;gt;/share&amp;lt;/code&amp;gt; on Windows). You can add your own patterns to this file or replace it with any other SVG file containing the patterns you need.&lt;br /&gt;
&lt;br /&gt;
=Markers=&lt;br /&gt;
&lt;br /&gt;
* A new command, '''Objects to Marker''', was added to the Object menu. It converts the current selection into a marker. After you do it, the selection is deleted, but the list of markers in the Fill and Stroke dialog, Stroke style tab, now contains the new marker that you can apply to paths. &lt;br /&gt;
&lt;br /&gt;
:* When creating the new marker, Inkscape assumes that the original objects are oriented as they should be on a horizontal path that goes from left to right. For example, if you create a new arrowhead that you plan to use as an end marker, make it point horizontally to the right before converting it to marker. &lt;br /&gt;
&lt;br /&gt;
:* Similar to standard markers, the user-created marker will scale up and down as you change the stroke width. Its initial size (i.e. the size of the object that you have turned into a marker) corresponds to the 1 px stroke.&lt;br /&gt;
&lt;br /&gt;
:* When you create a new marker, Inkscape uses the rotation center of the (first) selected object as the anchor point, i.e. the point which will coincide with the node to which that marker is attached. By default, the rotation center is in the center of the object's bounding box, which means the newly created marker will be centered around its node. If you move the rotation center, for example, to one of the corners of the object, the new marker will touch its node by that corner.&lt;br /&gt;
&lt;br /&gt;
* Several new '''UML markers''' were added to the standard set, including filled and hollow diamonds and triangles.&lt;br /&gt;
&lt;br /&gt;
* '''Master opacity''' did not apply to path markers as it should; this is fixed.&lt;br /&gt;
&lt;br /&gt;
* '''Stock markers''', if used in the document, now appear in the &amp;quot;this document's markers&amp;quot; section at the top of the marker lists in the Fill &amp;amp; Stroke dialog.  Before, any markers with stock IDs (including markers modified by the user) were hidden, making it difficult to work with modified stock markers.&lt;br /&gt;
&lt;br /&gt;
=Color management=&lt;br /&gt;
&lt;br /&gt;
== Calibrated SVG color including CMYK ==&lt;br /&gt;
&lt;br /&gt;
Inkscape now supports color-managed color definitions that use a colorspace other than sRGB (for example Adobe RGB, or calibrated CMYK colors). In the SVG file, this is done using the&lt;br /&gt;
optional &amp;quot;icc-color(...)&amp;quot; paint components as described in section 11.2 &amp;quot;Specifying paint&amp;quot; of the SVG 1.1 specification&lt;br /&gt;
[http://www.w3.org/TR/SVG11/painting.html#SpecifyingPaint]. A fallback sRGB value will be used, for non color-managed workflows. This allows for the use of calibrated color spaces, including using CMYK values that are preserved across applications.&lt;br /&gt;
&lt;br /&gt;
The new CMS color selector tab allows these colors to be edited.&lt;br /&gt;
&lt;br /&gt;
== Display adjustment ==&lt;br /&gt;
&lt;br /&gt;
In Inkscape Preferences, Color Management tab, there's are new options for enabling display adjustment; you can select any calibration profile (an ICC file) suitable for your display. Options for rendering intent can also be chosen.&lt;br /&gt;
&lt;br /&gt;
=== Per-window adjustment ===&lt;br /&gt;
Display adjustment is enabled and disabled per each editing window. This allows for simultaneous viewing of adjusted and unadjusted views of a single document by using multiple windows. There is a toggle at the bottom-right corner of the scrollbars that allows for turning on and off display adjustment. It also will be disabled to provide visible feedback when no profile is set to be available for adjustment.&lt;br /&gt;
&lt;br /&gt;
=== XICC Support ===&lt;br /&gt;
On X11-based systems (i.e. Unix and Mac OSX), use of [[http://www.burtonini.com/computing/x-icc-profiles-spec-latest.html ICC Profiles In X Specification]] (or XICC) can be enabled. Support for version 0.2 of this specification has been implemented. Enabling this option by choosing to retrieve profiles from the display will switch Inkscape to using profiles attached to screens at runtime. These allow display adjustment to be changed on the fly, and to be set and cleared per-monitor. This is especially helpful with more than a single monitor.&lt;br /&gt;
&lt;br /&gt;
Other Open Source software such as [http://www.gimp.org/ GIMP] support XICC. This allows all aware applications to be adjusted by setting a profile only once.&lt;br /&gt;
&lt;br /&gt;
=== Multi-monitor aware ===&lt;br /&gt;
When XICC support is enabled, windows will adjust to the proper profile as they are moved across monitors. Also, as the windows are moved onto monitors with no profile attached, the adjustment toggle will become disabled. When the windows are moved onto screens that do have profiles, the toggle will become enabled.&lt;br /&gt;
&lt;br /&gt;
== Soft Proofing ==&lt;br /&gt;
&lt;br /&gt;
In Inkscape Preferences, Color Management tab, there's a new option for enabling output device preview; you can select any calibration profile (an ICC file) suitable for your output device. Options for rendering intent can also be chosen, along with out of gamut warnings.&lt;br /&gt;
&lt;br /&gt;
== OS support ==&lt;br /&gt;
&lt;br /&gt;
Сolor management is supported in Linux and Mac OS X only at this time.&lt;br /&gt;
&lt;br /&gt;
=Grids, guides, snapping=&lt;br /&gt;
&lt;br /&gt;
==Grids==&lt;br /&gt;
Grids have undergone some big changes under-the-hood. These are the visible changes:&lt;br /&gt;
&lt;br /&gt;
* There is a &amp;lt;b&amp;gt;new 3D/axonometric grid&amp;lt;/b&amp;gt;. It consists of three sets of parallel lines, one vertical and others at angles of +30 and -30 degrees from the horizontal. The angles of these two latter sets and the spacing of the grid are user-settable. &lt;br /&gt;
&lt;br /&gt;
* A new tab in the Document Properties dialog, &amp;lt;b&amp;gt;Grids&amp;lt;/b&amp;gt;, is devoted solely to grids; the former grid/guide tab is renamed &amp;lt;b&amp;gt;Guides&amp;lt;/b&amp;gt; and is now used only for guides. On the Grids page, you can create and manage grids of various types in your document; so far the two types available are Rectangular (default) and Axonometric, but more types may be added in the future.&lt;br /&gt;
&lt;br /&gt;
* More than one grid can be active at the same time:&lt;br /&gt;
:* Each grid can be enabled/disabled separately from the Document Properties dialog.&lt;br /&gt;
&lt;br /&gt;
* For each grid, you can hide it by unchecking the &amp;quot;Visible&amp;quot; checkbox in the grid's tab, or disable snapping to it by unchecking &amp;quot;Enabled&amp;quot;. Note that you can have &amp;quot;Enabled&amp;quot; on and &amp;quot;Visible&amp;quot; off (but not vice versa), in which case you snap to the invisible grid.&lt;br /&gt;
&lt;br /&gt;
* Multiple views on the same document (i.e. different Inkscape windows with the same document loaded) share the same grids, but the grid can be turned on and off for each view separately. For example, you could have a zoomed-out &amp;quot;overview&amp;quot; view without grids showing. 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. &lt;br /&gt;
&lt;br /&gt;
* The rectangular grid now has an option to show dots on gridline intersections instead of solid lines.&lt;br /&gt;
&lt;br /&gt;
From developer perspective:&lt;br /&gt;
* Implementation of new grids is much easier now by subclassing CanvasGrid. 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;
* Grid information is now stored in SVG as a child of sodipodi:namedview. Old files will be converted to this new format automatically.&lt;br /&gt;
* An old bug is fixed: apparently the origin of the document coordinate system used to be set to the origin of the grid. For example, in 0.45.1 and before, specifying a grid origin of (20,20) moved the origin or coordinates to that point, and the grid was still starting at (0,0) in this moved coordinate system. This is now disabled, and the coordinate origin is not affected by grid origin.&lt;br /&gt;
&lt;br /&gt;
==Angled guidelines==&lt;br /&gt;
&lt;br /&gt;
Now, Inkscape also provides angled guidelines! Double click on a guide to set its angle.&lt;br /&gt;
&lt;br /&gt;
*  When dragging a guideline off the rulers close to the end of the ruler, the guideline will automatically be angled. The angle is set depending on the grid.&lt;br /&gt;
** For the rectangular grid, the angle is 45 degrees.&lt;br /&gt;
** For the axonometric grid, the angle is matched to the grid. When '''Ctrl''' is pressed, the angle is perpendicular to the grid lines (useful for aligning gradients).&lt;br /&gt;
&lt;br /&gt;
==Creating guidelines from objects==&lt;br /&gt;
&lt;br /&gt;
* Selected objects can now be converted to guidelines. To do this, either use the menu command '''&amp;quot;Object-&amp;gt;Object to guides&amp;quot;''' or press '''Shift+G''' in Selector tool (this shortcut also works in some other tools, see below). The conversion process recurses into groups, i.e. all objects in the current selection are converted regardless if they are grouped or not.&lt;br /&gt;
&lt;br /&gt;
* Created guides can be quickly deleted by '''Ctrl'''+clicking on them (this is of course not restricted to guides created by the process described above). Note that this only works in Selector and Node tools, i.e., in contexts where guidelines can be manipulated with the mouse. &lt;br /&gt;
&lt;br /&gt;
* '''Paths''' are converted by creating one guide for each straight line segment occurring in the path (whereas curved segments are not taken into account). To make this conveniently accessible, the shortcut '''Shift+G''' works in Pen and Pencil tools, too.&lt;br /&gt;
&lt;br /&gt;
* For all other objects, conversion usually happens by placing the guidelines around the object's bounding box (use the corresponding checkbox in the &amp;quot;Tools&amp;quot; page of Inkscape Preferences to switch between geometric and visual bounding box).&lt;br /&gt;
&lt;br /&gt;
*For '''rectangles''' and '''3D boxes''' there is a special option in their preferences pages (checked by default) which instead allows the guidelines to be placed along the object's edges so that they imitate its true shape. This is especially useful when converting rotated or skewed rectangles (to create guidelines in a special position) or for creating 3D scenes containing other objects than just boxes. The shortcut '''Shift+G''' works in these tools as well.&lt;br /&gt;
&lt;br /&gt;
==Snapping==&lt;br /&gt;
&lt;br /&gt;
* Snapping has been implemented or improved for:&lt;br /&gt;
&lt;br /&gt;
:* '''Newly created shapes'''&lt;br /&gt;
&lt;br /&gt;
:* '''Skewing''' of objects&lt;br /&gt;
&lt;br /&gt;
:* '''Handles''' of objects, incl. '''gradients'''&lt;br /&gt;
&lt;br /&gt;
:* '''Images''', '''ellipses''', and '''clones'''&lt;br /&gt;
&lt;br /&gt;
:* Text boxes, which snap to '''text baselines''' again&lt;br /&gt;
&lt;br /&gt;
:* Objects, for which snapping now optionally considers the '''rotation center'''&lt;br /&gt;
&lt;br /&gt;
:* Objects, which now allow for '''constrained snapping'''&lt;br /&gt;
&lt;br /&gt;
:* '''Guides''', which now snap while dragging them&lt;br /&gt;
&lt;br /&gt;
:* '''Axonometric grids'''&lt;br /&gt;
&lt;br /&gt;
:* '''Angled guide lines'''&lt;br /&gt;
&lt;br /&gt;
:* '''Bounding boxes''', of which now all four corners snap&lt;br /&gt;
&lt;br /&gt;
* Other snapping fixes and improvements include:&lt;br /&gt;
&lt;br /&gt;
:* It is now possible to snap to '''intersections''' of e.g. gridlines with guidelines, and of line segments. &lt;br /&gt;
&lt;br /&gt;
:* The '''snapping preferences dialog''' has been restyled to make it more intuitive. &lt;br /&gt;
&lt;br /&gt;
:* Inkscape now has a global snapping toggle, which has been added to the view-menu and is accessible through a shortcut&lt;br /&gt;
&lt;br /&gt;
:* Inkscape now allows for controlling the snapping per grid when multiple grids are being used&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 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 time it takes to snap to objects using the selector tool has been reduced significantly.&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;
:* Only nodes at '''non-smooth parts''' of a path now snap.&lt;br /&gt;
&lt;br /&gt;
:* The confusing &amp;quot;Default transformations origin&amp;quot; option has been 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;
&lt;br /&gt;
=Import/Export=&lt;br /&gt;
&lt;br /&gt;
==PDF and AI import==&lt;br /&gt;
&lt;br /&gt;
In this version, Inkscape can natively (i.e. without any additional software) import PDF files and the newer PDF-based Adobe Illustrator files (starting from AI version 9.0). &lt;br /&gt;
&lt;br /&gt;
'''Implemented features''': The new import extension can import '''paths''', '''text''', '''clippaths''', '''masked or non-masked images''', and '''softmasks'''. It supports '''pattern fills''' (XStep and YStep attributes are ignored) as well as '''linear and radial gradients''' (only those using sampled or exponential functions). '''Gradient meshes''' are imported, but they get converted to groups of small tiles (flat-colored paths) that approximate the mesh; the user can adjust the precision of this approximation. &lt;br /&gt;
&lt;br /&gt;
'''PDF import settings''': After opening a PDF or AI document, the PDF Import Settings dialog shows up. Here you can select:&lt;br /&gt;
&lt;br /&gt;
* the '''page''' to be imported from a multipage PDF;&lt;br /&gt;
&lt;br /&gt;
* the overall '''clip region''' (which can be none or set to any of the PDF boxes, e.g. the crop box, the media box, the trim box, etc.);&lt;br /&gt;
&lt;br /&gt;
* the '''precision''' for the approximation of '''gradient meshes'''; note that setting this too high may result in a huge SVG file and slow performance when importing files with gradient meshes;&lt;br /&gt;
&lt;br /&gt;
* a checkbox controlling whether the '''images''' should be '''embedded''' into the resulting SVG document or saved on the current path;&lt;br /&gt;
&lt;br /&gt;
* a '''preview''' of the selected page (shown if poppler-cairo is present on the system or if the selected page has a thumbnail embedded into the PDF 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;
The native PDF/AI importer is based on the poppler library and was implemented by Miklós Erdélyi as part of the Google Summer of Code 2007.&lt;br /&gt;
&lt;br /&gt;
==PDF export==&lt;br /&gt;
&lt;br /&gt;
* A new cairo-based PDF exporter has been added to Inkscape (marked as &amp;quot;Cairo PDF&amp;quot; in the export format list). Inkscape 0.46 can export shapes, strokes, transparency, gradients, patterns, text, and images correctly to cairo. Clipping paths and masks are known to be faulty or missing. Also, unlike the old PDF exporter, the cairo-based PDF export produces compressed PDF files that are reasonably compact. 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, but it is highly recommended to use at least '''cairo 1.5.2''' for quality PDF export.&lt;br /&gt;
&lt;br /&gt;
* A new cairo-based PostScript exporter has been added (marked as &amp;quot;Cairo PS&amp;quot; in the export format list). The cairo PS backend is not as mature as the PDF backend. It rasterizes a lot of its content. Text output does not work where it works with the PDF backend.&lt;br /&gt;
&lt;br /&gt;
==CDR (CorelDraw) import==&lt;br /&gt;
&lt;br /&gt;
Inkscape can use [http://www.sk1project.org/modules.php?name=Products&amp;amp;product=uniconvertor UniConvertor] if it's installed on your system to import documents in CDR format (CorelDraw). This feature is Unix-only at this time and requires that you have Python and UniConvertor installed. As of UniConvertor 1.1.1, versions from 7 to X4 of the CDR format are supported, and text objects are not converted.&lt;br /&gt;
&lt;br /&gt;
==XAML import/export==&lt;br /&gt;
&lt;br /&gt;
* Inkscape can import vector graphics portions of XAML documents, as well as export its documents to XAML.&lt;br /&gt;
&lt;br /&gt;
==Adobe Illustrator SVG clean import==&lt;br /&gt;
&lt;br /&gt;
* Using this new import filter, Inkscape can open an SVG document removing any elements and attributes in the namespaces that Adobe Illustrator uses for its stuff.  This will clean out everything except the actual SVG content.&lt;br /&gt;
&lt;br /&gt;
==WMF import==&lt;br /&gt;
&lt;br /&gt;
Now Inkscape uses UniConvertor for opening WMF files, which results in three noticable changes:&lt;br /&gt;
&lt;br /&gt;
# imported files are editable now&lt;br /&gt;
# known rendering issues are resolved&lt;br /&gt;
# WMF import works on all platforms where UniConvertor works (including Windows)&lt;br /&gt;
&lt;br /&gt;
Text objects are not supported by UniConvertor as of version 1.1.1.&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;
== Open Clip Art Library import and export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape features a preliminary support for importing drawings from [http://openclipart.org/ Open Clip Art Library].&lt;br /&gt;
&lt;br /&gt;
After specifying account details in Preferences dialog (Import/Export tab) use 'File &amp;amp;gt; Import From Open Clip Art Library' command to open a dialog, then search for tags and pick one of the results to merge this found drawing into your document.&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;
* --query-all produces a comma delimited listing of all objects in the document, with their x, y, height, and width values.&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;
=User interface=&lt;br /&gt;
&lt;br /&gt;
== Dockable dialogs ==&lt;br /&gt;
&lt;br /&gt;
Inkscape's dialog handling has been reworked in this release to allow dialogs to behave like '''dockable panels'''. The dock area that holds the user's dialogs is located right of the canvas.&lt;br /&gt;
&lt;br /&gt;
Dialogs placed in the dock can easily be rearranged, resized, stacked in groups or iconified. Furthermore, a dialog can be dragged of the dock to become a floating dock in itself&amp;amp;mdash;this allows other dialogs to be dragged and dropped on it to form a floating group of dialogs.&lt;br /&gt;
&lt;br /&gt;
The old dialog behavior (used in releases before 0.46) has been preserved as an option, and if it is preferred, one can select it under ''Windows'' &amp;gt; ''Dialog behavior'' in the Inkscape preferences dialog.&lt;br /&gt;
&lt;br /&gt;
====Known issues====&lt;br /&gt;
&lt;br /&gt;
* Some of Inkscape's dialogs are yet to be adapted to allow docking, these include the &amp;quot;Text and Font&amp;quot; dialog, the &amp;quot;Tiled clones&amp;quot; dialog, the &amp;quot;XML editor&amp;quot; and the &amp;quot;Object properties&amp;quot; dialog.&lt;br /&gt;
&lt;br /&gt;
* Floating dialogs that are closed and later reopened might reappear on positions slightly different than their original ones.&lt;br /&gt;
&lt;br /&gt;
* Resizing dialogs that are placed in the dock can be a bit slow and quirky.&lt;br /&gt;
&lt;br /&gt;
* The total height of content the dock will in most cases remain the same when a dialog is closed/iconified, i.e. the remaining docked dialogs will fill the hole. This might not the desired behavior.&lt;br /&gt;
&lt;br /&gt;
====Settings====&lt;br /&gt;
&lt;br /&gt;
Three settings that control dockable dialogs behavior are present in the &amp;lt;code&amp;gt;preferences.xml&amp;lt;/code&amp;gt; file under a &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; group called &amp;lt;code&amp;gt;dock&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cancenterdock&amp;lt;/code&amp;gt;: controls if dialogs are allowed to be stacked on top of each other to be ordered in groups. Valid values are &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;dockbarstyle&amp;lt;/code&amp;gt;: controls what information is shown for iconified dockable dialogs. &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; = icons only, &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; = text only, &amp;lt;code&amp;gt;&amp;quot;2&amp;quot;&amp;lt;/code&amp;gt; = both icons and text. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;switcherstyle&amp;lt;/code&amp;gt;: controls what information is shown for grouped dockable dialogs. &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; = icons only, &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; = text only, &amp;lt;code&amp;gt;&amp;quot;2&amp;quot;&amp;lt;/code&amp;gt; = both icons and text.&lt;br /&gt;
&lt;br /&gt;
== Toolbars ==&lt;br /&gt;
&lt;br /&gt;
'''Main toolbar''' on the left can now optionally use '''smaller buttons'''. With the several new tools added in this version, this may help users with small screens where the toolbar otherwise may not fit vertically. The toggle is on the Misc tab of the Inkscape Preferences dialog.&lt;br /&gt;
&lt;br /&gt;
Switching to stock GTK+ toolbars. This allows for the main window to be made narrower, with toolbar items flowing into a popup menu as it is resized.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Swatches panel, color drag-and-drop ==&lt;br /&gt;
&lt;br /&gt;
* Right-clicking a color swatch now opens a context menu which allows you to apply the color to the fill or stroke of selection.&lt;br /&gt;
&lt;br /&gt;
* Dragging colors from the color palette has been fixed and improved:&lt;br /&gt;
&lt;br /&gt;
:* Now the dropped color is applied to '''the object on which you drop it''', regardless of whether that object is selected or not. This means you can change the color of only one object from selection without having to select it separately. (If you want to assign color to the entire selection, just click on the color swatch on the palette, not drag it.)&lt;br /&gt;
&lt;br /&gt;
:* If an object has stroke and you '''drop the color over stroke''', the color is applied to stroke and not fill. (Another way to always apply color to stroke is to '''Shift+drag''' it.)&lt;br /&gt;
&lt;br /&gt;
:* When gradient handles are active (e.g. in Gradient or Node tools), you can '''drop a color onto the gradient line''' to create a new gradient mid stop with this color, or '''drop a color onto an existing stop''' to recolor that stop.&lt;br /&gt;
&lt;br /&gt;
:* A new submenu has been added to affect the shape of the displayed swatches, allowing their preferred size to be made thinner or wider. Among other things, this allows for more to be seen on screen at once when made thinner.&lt;br /&gt;
&lt;br /&gt;
:* Sizing of the swatches has been corrected to be properly progressive, and now go form smaller to larger on all platforms.&lt;br /&gt;
&lt;br /&gt;
:* Space reserved for the scrollbar is no longer kept with smaller palettes shown in the bottom of the main UI. This allows for more working space when palettes with not many entries are selected at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
==Color gestures==&lt;br /&gt;
&lt;br /&gt;
A new method for quick and precise adjustment of colors is added in this version: color gestures. It works on the selected objects by grabbing the '''fill or stroke color swatch''' in the '''selected style indicator''' (on the left of the statusbar) and dragging it in various directions as described below. Note that this only works when the swatch displays a '''flat color'''; it does not work for a swatch showing &amp;quot;None&amp;quot;, &amp;quot;N/A&amp;quot;, or displaying a gradient (although you can select one or more gradient stops in Gradient tool and color-adjust them by color gestures just as you would do for objects). Color gestures can work on '''fill''' or '''stroke''', depending on which swatch in the selected color indicator you drag.&lt;br /&gt;
&lt;br /&gt;
Color gestures work in '''HSL''' color space. Dragging without any keyboard modifiers adjusts the '''hue''' channel, dragging with '''Shift''' adjusts '''saturation''', and dragging with '''Ctrl''' adjusts '''lightness'''.&lt;br /&gt;
&lt;br /&gt;
The adjustment is done by '''&amp;quot;rotating&amp;quot;''' the color swatch away from the original direction which is assumed to be '''NE at 45 degrees''' (i.e. from&lt;br /&gt;
the swatch diagonally into the document window). Once you click and drag the color swatch, imagine a diagonal line going from the point where you clicked in the NE direction, across the entire Inkscape window. By dragging '''below or to the right''' of that line, you decrease the corresponding color channel, to the minimum at the lower edge of the window; by dragging it above or to the left, you increase it, to the maximum at the left edge of the window. If you hover your mouse exactly over the 45 degrees line, the change will be zero.&lt;br /&gt;
&lt;br /&gt;
Note that you can easily vary the '''precision''' of your adjustment. If you drag close enough to the swatch, each small movement results in a big change of the color. If you need a finer adjustment, just drag farther away from the swatch, towards the center of the Inkscape window or even to its upper right corner, where minute movements will produce very small changes in the color. In fact, this method gives you more color precision than even the color wheel in the Fill and Stroke dialog, unless you expand that dialog to fill the entire screen which is rarely practical.&lt;br /&gt;
&lt;br /&gt;
The mouse '''cursor''' changes when you're doing color gestures, reflecting the channel currently adjusted and indicating the directions for increasing and decreasing the value. Also, watch the '''statusbar''' which will indicate, as you drag, the channel you are adjusting, the original value of that channel, the new value, and the difference. &lt;br /&gt;
&lt;br /&gt;
You can '''switch channels while you drag'''. That is, you don't need to &lt;br /&gt;
drag it again and again from the swatch if you want to adjust all three channels - you can do it all in one drag, by pressing and releasing Ctrl and Shift as necessary. Note that when you change the keyboard modifiers during drag, the position of the zero-change line is temporarily changed to go through the current mouse position; this is done so that there are no sudden changes in color if you are switching modifiers away from the original 45-degree line.&lt;br /&gt;
&lt;br /&gt;
The '''Alt''' modifier is special. Pressing Alt means &amp;quot;do nothing&amp;quot;; this allows you to move the mouse, without releasing, to a more convenient place from where to continue tweaking the color after letting go of Alt. As with the other modifiers, releasing Alt temporarily redefines the zero-change axis to go through the point where Alt was released. For example, imagine  you made your color darker by Ctrl+dragging towards the bottom edge of the window and you now need to make it less saturated. You cannot however Shift+drag it any lower because there's just not enough room for that. In that situation, without releasing the mouse, Alt+drag it upwards to a convenient spot and then Shift+drag downwards as needed. Also, you can start dragging from the swatch with Alt pressed to avoid changing the color while you take a more convenient position for adjustments.&lt;br /&gt;
&lt;br /&gt;
For example, you can select a green rectangle and first turn it into greenish-blue by dragging away from the Fill swatch and slightly above the 45 degrees line; then, without releasing the mouse, press Ctrl and drag a bit to the right to darken the color; then press Shift, release Ctrl, and adjust saturation. You can press or release Ctrl and Shift as many times as necessary during a single drag; when you are finally satisfied with your color, release the mouse to commit the change.&lt;br /&gt;
&lt;br /&gt;
Apart from precise adjustments, you can use color gestures to very quickly perform some common color transformations:&lt;br /&gt;
&lt;br /&gt;
* Ctrl+drag the swatch to the right and down to paint all selected objects black.&lt;br /&gt;
&lt;br /&gt;
* Ctrl+drag the swatch upwards and to the left to paint all selected objects white.&lt;br /&gt;
&lt;br /&gt;
* Shift+drag the swatch to the right and down to desaturate the color of selected objects.&lt;br /&gt;
&lt;br /&gt;
* Shift+drag the swatch upwards and to the left to maximize saturation of the color of selected objects. &lt;br /&gt;
&lt;br /&gt;
Note that when several objects or gradient stops with different colors are selected, the selected style indicator shows their '''averaged''' color. If you adjust that color by gesturing, the changed color will be assigned back to all selected objects/stops, in effect eliminating any difference between them. If you want to adjust many different-colored objects preserving their relative differences, use the color modes of the Tweak tool or color adjustment extension effects.&lt;br /&gt;
&lt;br /&gt;
This new technique requires some getting used to, but once you get the idea it is quite convenient, fast, and precise.&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;
== Preserving zoom/view of reverted documents ==&lt;br /&gt;
&lt;br /&gt;
When reverting files to their previously saved state, the current zoom factor/panning is now retained (as opposed to reverted to the saved state, too, as it was the case before). This less interrupts the workflow when one is working on some detail in the drawing.&lt;br /&gt;
&lt;br /&gt;
== Bounding box option moved ==&lt;br /&gt;
&lt;br /&gt;
The preferences option to select between &amp;quot;visual&amp;quot; and &amp;quot;geometric&amp;quot; bounding box was moved in Inkscape Preferences dialog from the &amp;quot;Selector&amp;quot; page to &amp;quot;Tools&amp;quot; page (since it applies more globally than just in Selector tool).&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;
== Using other keys in place of Alt ==&lt;br /&gt;
&lt;br /&gt;
* Many Linux users have found the use of '''Alt-drag''' and '''Alt+click''' in Inkscape problematical because this shortcut is often captured by window managers. In 0.46, instead of disabling of the window manager shortcut as suggested in [http://wiki.inkscape.org/wiki/index.php/FAQ#How_to_make_Alt.2Bclick_and_Alt.2Bdrag_work_on_Linux.3F the FAQ], you can change a setting in your preferences.xml file called &amp;lt;code&amp;gt;mapalt&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; group. This numerical value ranges from 1 to 5; 1 indicates no change, any other value refers to some special key on a keyboard, such as '''Alt Gr''', the '''Windows''' key, etc. The specific mapping of these values to the keys on your keyboard can be viewed and/or editied by '''xkeycaps''', available from [http://www.jwz.org/xkeycaps www.jwz.org]. The value associated with a particular key is shown in that program at the top of the screen beside the word &amp;quot;Modifiers&amp;quot; when the mouse is held over a key on the main display.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keyboard profiles ==&lt;br /&gt;
&lt;br /&gt;
New profiles have been added:&lt;br /&gt;
&lt;br /&gt;
* '''Corel DRAW X4''' (corel-draw-x4.xml)&lt;br /&gt;
* '''Zoner Draw 5''' (zoner-draw.xml)&lt;br /&gt;
* '''ACD Systems Canvas 11''' (acd-canvas.xml)&lt;br /&gt;
&lt;br /&gt;
Also, profile for Adobe Illustrator has been fixed and includes bindings for tools now.&lt;br /&gt;
&lt;br /&gt;
(To enable a profile, copy it into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; in the same directory, overwriting the old file. To restore the default Inkscape set, copy &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
=Other changes and 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;
* On the '''Scale''' tab of the '''Transform dialog''', the numbers now show the current size of selection, not size increment as before. Correspondingly, with the % unit chosen, you see 100% displayed, and to scale it up twice, you enter 200%, not 100% as before. This is a more intuitive behavior and it's more consistent with how the W/H controls work in the Selector tool. &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;
* The '''Shift''' tab of the '''Tile Clones''' dialog has two new options: '''Cumulate''': when checked, each tile is shifted by the normal amount plus the cumulative shifts of all previous tiles. This is useful when placing tiles that are being scaled by a uniform amount. '''Exlude tile''': when checked, the tile width or height is not automatically included in calculating the tile's shift. This is useful when using the dialog to place clones on a circle or spiral (rather than using a shift of -100%). It is also useful when positioning tiles using the '''Exponent''' parameter.&lt;br /&gt;
&lt;br /&gt;
* The '''Scale''' tab of the '''Tile Clones''' dialog has a new parameter: '''Base''' that allows placing tiles along a logarithmic spiral (as often found in nature). If the value is '''0''', the parameter is not used. Use a value less than one for a converging spiral and a value of greater than one for a diverging spiral. The actual scale is calculated as '''base''' raised to the nominal '''scale''' power.&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;
* 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;
* 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;
* Preferences have been added for setting the default metadata and licenses, so this information can be automatically filled in with new documents.&lt;br /&gt;
&lt;br /&gt;
* The built-in '''Potrace''' tracing engine is upgraded to version '''1.8''' with some minor bugs fixed.&lt;br /&gt;
&lt;br /&gt;
* File dialog windows (open/save) now have an '''Enable preview''' checkbox which allows you to disable the preview pane.&lt;br /&gt;
&lt;br /&gt;
* In the Calligraphic pen controls, the toggle button to enable tablet pressure sensitivity is moved to the Width control, and the button for tilt sensitivity is moved to Angle, to better reflect what parameters these toggles affect.&lt;br /&gt;
&lt;br /&gt;
* In Node and Gradient tools, using '''Tab/Shift+Tab''' to select next/previous node or gradient handle scrolls the canvas if necessary to show the selection. &lt;br /&gt;
&lt;br /&gt;
* The option '''Import bitmap as &amp;lt;image&amp;gt;''' is removed; it was added several versions ago to allow optionally importing images as rectangles with image pattern, to make clipping the images easier. Now that you can easily use clipping paths, as well as convert any image to rectangle with pattern with Alt+I, this option is not really necessary and removed to reduce confusion. Bitmaps are always imported into SVG as an &amp;lt;image&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
* Support has been added for stock patterns, in the same way that stock markers were already supported. Adding patterns to share/patterns/patterns.svg, and giving them a inkscape-stockid attribute as found on the examples already there will make them available in all Inkscape sessions from the patterns tab of the fill &amp;amp; stroke dialog.&lt;br /&gt;
&lt;br /&gt;
* New '''fontforge_glyph.svg''' template is added for font designers who draw glyphs in Inkscape and import them into FontFoge. It is 1000x1000px large and has a horizontal guide at 200px to mark border for descenders.&lt;br /&gt;
&lt;br /&gt;
* Save dialogs have been modified to clarify that they '''Save as SVG''', so people using Inkscape to edit PDF, EPS, and other file formats will be less confused at the default behavior when saving files.&lt;br /&gt;
&lt;br /&gt;
= Improvements for the Mac OS X version =&lt;br /&gt;
&lt;br /&gt;
* Inkscape 0.46 is officially released as a '''Universal''' (i386/ppc) binary for both OS X '''10.4 Tiger''' and '''10.5 Leopard'''.&lt;br /&gt;
&lt;br /&gt;
* Inkscape application bundle on '''Mac OS X''' now has the possibility to contain '''pre-compiled python modules''' (e.g. lxml, numpy, etc.) and to use them without requiring any work from the user. Since Python itself is shipped with Mac OS X, the user only has to drag and drop Inkscape on its hard-drive and all the extensions will be '''functional immediately'''.&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;
* A fix in the blur rendering code made '''exporting blurred objects to bitmap''' much faster and fixed the disappearing of blurred objects in exported bitmaps which happened for large objects in 0.45.  The same fix got rid of the rendering artefacts that sometimes appeared on blurred objects during scrolling. &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;
* On Windows, '''file opening/saving dialogs''' can no longer sink under the main editor window (they now have the inkscape window set correctly as their parent window).&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;
* '''Creative Commons Public Domain Declaration URI''' points to the 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;
* On Windows, the Inkscape uninstaller deleted all files under the install directory. This could lead to removing user-created files, or even other program files not related to inkscape if the install directory was C:\Program Files. The new uninstaller '''tracks all installed files and asks for confirmation before deleting any other files'''. However, installation and uninstallation process is now slower.&lt;br /&gt;
&lt;br /&gt;
* Clones were wrongly unlinked when their original was moved to another layer; fixed.&lt;br /&gt;
&lt;br /&gt;
* Previous versions had a problem on '''Windows Vista''' where selected menu item was invisible. Now our Windows builds use a newer version of GTK library which fixes this problem.&lt;br /&gt;
&lt;br /&gt;
* Duplicating empty text objects that have just been created no longer crashes. Also, the XML editor crash related to empty text objects is fixed. A downside is that the SVG will become cluttered with empty text objects as they are no longer automatically removed. A better fix for the problem is planned.&lt;br /&gt;
&lt;br /&gt;
* In Tile Clones dialog, the PMG symmetry group was created incorrectly; it is now fixed.&lt;br /&gt;
&lt;br /&gt;
* Serious usability issues with the font size field in the Text tool's controls bar have been fixed.&lt;br /&gt;
&lt;br /&gt;
* The rulers are now correctly scaled and will align nicely with document coordinates, with or without the scrollbars displayed.&lt;br /&gt;
&lt;br /&gt;
=Known Issues=&lt;br /&gt;
&lt;br /&gt;
* (LP: #180890) Blend modes do not work correctly over transparent    backgrounds. A workaround is to place an opaque rectangle underneath the bottom-most layer.&lt;br /&gt;
* (LP # 202704) Blur and other filters are very slow when applied to an object with transform= attribute with rotation or skew. To avoid this slowdown, either do not rotate/skew objects you use with filters, or apply filters only to paths (but not shapes to text) because paths, by default, get no transform= attribute when you rotate or skew them.&lt;br /&gt;
* Windows printing has two known issues. In both cases the workaround is to print to bitmap (Print -&amp;gt; Rendering -&amp;gt; Bitmap).&lt;br /&gt;
** (LP # 205732) Blurred objects are misaligned when printing.&lt;br /&gt;
** (LP # 208217) Masked objects disappear from the page when printing.&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>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.46&amp;diff=27064</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=27064"/>
		<updated>2008-04-02T00:31:46Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: List some OS X specific improvements.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Inkscape 0.46=&lt;br /&gt;
&lt;br /&gt;
Highlights 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;
* Live path effects&lt;br /&gt;
&lt;br /&gt;
* Color management&lt;br /&gt;
&lt;br /&gt;
* New SVG filters and UI&lt;br /&gt;
&lt;br /&gt;
* Native PDF and AI import&lt;br /&gt;
&lt;br /&gt;
* XAML import/export&lt;br /&gt;
&lt;br /&gt;
* Open Clip Art Library integration (import/export)&lt;br /&gt;
&lt;br /&gt;
* Stock patterns&lt;br /&gt;
&lt;br /&gt;
* Bitmap editing extension effects&lt;br /&gt;
&lt;br /&gt;
* Full on-canvas gradient editing&lt;br /&gt;
&lt;br /&gt;
* Engraver's Toolbox in the Calligraphic tool&lt;br /&gt;
&lt;br /&gt;
* Touch selection&lt;br /&gt;
&lt;br /&gt;
* Dockable dialogs&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;
* &amp;quot;3D&amp;quot; / axonometric grid&lt;br /&gt;
&lt;br /&gt;
* Angled guidelines&lt;br /&gt;
&lt;br /&gt;
* Conversion of objects to guidelines&lt;br /&gt;
&lt;br /&gt;
* Significant speed and interactivity improvements&lt;br /&gt;
&lt;br /&gt;
* Hundreds of smaller features and bugfixes&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 in order from top to bottom. Now the redraw always starts '''at your mouse cursor location''' and proceed upwards and downwards from it, so that the area near the cursor is always redrawn first. This significantly improves program's responsiveness in some situations. For example, when you are node-editing part of a complex path, the entire path needs to be redrawn on each change, but now this redraw starts from the point you're working on. Moreover, the redraw is interruptible, so each mouse movement starts new redraw from the mouse cursor area. As a result, during such operations those parts that you're working on redraw often and feel snappy and responsive, while areas further away may lag behind more.&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;
:'''Exporting drawings with blur''' was particularly slow in 0.45; some files could take hours to export. Now this is fixed, in part by the faster algorithm mentioned above and in part by a bugfix in the export code. Now even the quite complex files with large blurs export at high resolution in at most a few minutes.  &lt;br /&gt;
&lt;br /&gt;
* Minor improvements have been made to gradient rendering performance.&lt;br /&gt;
&lt;br /&gt;
* '''Dragging handles and nodes''' as well as '''dragging and transforming objects''' by mouse became more responsive, so that working in complex drawings and especially editing complex paths is noticeably easier. In particular, this fixes the annoying latency issue where a node or a handle could follow mouse cursor even after you release mouse button after a drag. &lt;br /&gt;
&lt;br /&gt;
* '''Moving objects, nodes, and gradient handles by cursor keys''' as well as '''scaling and rotating objects from keyboard''' and '''zooming by keys''' are much more responsive when working with complex slow-rendering objects. Now, if you press and hold a key, your selection/zoom level will quickly jump to the final position instead of going through all the intermediate steps as before. &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;
:* '''Redrawing the newly exposed parts of the canvas''' after scrolling, especially diagonal scrolling, is now faster because only the exposed areas are redrawn; before, this often resulted in the entire screen being redrawn which was much slower.&lt;br /&gt;
&lt;br /&gt;
:* Previously, if you started 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;
* Better responsiveness and more visual feedback in user interface: &lt;br /&gt;
&lt;br /&gt;
:*When you zoom, the '''zoom control''' on the right end of the statusbar now updates immediately, not after screen redraw as before. &lt;br /&gt;
&lt;br /&gt;
:*Many potentially slow commands (Save, Simplify, Combine, Break Apart and others) now display a '''busy cursor''' and flash a message in the statusbar (e.g. &amp;quot;Saving document...&amp;quot;) while they work. &lt;br /&gt;
&lt;br /&gt;
:*The '''statusbar messages''' displayed while you're drawing a shape or a path in Pen tool do not lag behind the mouse movements.&lt;br /&gt;
&lt;br /&gt;
* '''Combine''' and '''Convert to paths''' commands are now orders of magnitude faster when applied to a selection with hundreds or thousands of objects.&lt;br /&gt;
&lt;br /&gt;
* The time it takes to '''snap to objects''' using the selector tool has been reduced dramatically, which is most noticeable for snapping to complex paths.&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;
===How it works===&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 (or use the auto gap closing parameter, see below).&lt;br /&gt;
&lt;br /&gt;
===Style===&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). As in all other tools, the '''style swatch''' on the far right of the Controls bar shows the style that will be used for the next fill object you create.&lt;br /&gt;
&lt;br /&gt;
===Controls===&lt;br /&gt;
&lt;br /&gt;
In the tool's '''Controls bar''':&lt;br /&gt;
&lt;br /&gt;
* Paint Bucket's perceptual fill can use either all visible colors or specific color channels. Using the '''Fill by''' drop-down list, you can restrict the fill algorithm to one 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;
* The '''Threshold''' (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;
* Using the '''Grow/shrink by''' parameter, 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 much the same as the Outset and Inset path commands, except it's done automatically after every fill.&lt;br /&gt;
&lt;br /&gt;
* With the '''Close gaps''' parameter, you can make the Paint Bucket tool  ignore 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 (close gaps up to 2 pixels in size)&lt;br /&gt;
** Medium (4 pixels)&lt;br /&gt;
** Large (6 pixels)&lt;br /&gt;
:Note that setting this parameter to other than None may slow down noticeably the filling of large areas.&lt;br /&gt;
&lt;br /&gt;
===Shortcuts===&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 drawings which largely blurs the&lt;br /&gt;
distinction between vector and raster editing. Instead of meticulously selecting some&lt;br /&gt;
objects and then performing an action on the selection, you can now select ''all''&lt;br /&gt;
objects (or all objects you are interested in) and apply the Tweak tool's brush to&lt;br /&gt;
smoothly and naturally change the shape or style of only those objects (or parts&lt;br /&gt;
thereof) ''that the brush touches''.&lt;br /&gt;
&lt;br /&gt;
The area of the tool's action - its ''brush'' - is marked by an orange-colored circular&lt;br /&gt;
outline that moves with your mouse cursor. 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.&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 mode or paint it by Color Paint&lt;br /&gt;
mode. You can also apply it to groups of objects; it will go into groups and act on&lt;br /&gt;
individual objects inside groups. If you're trying to use it without anything selected,&lt;br /&gt;
it will remind you by a statusbar message to select some objects.&lt;br /&gt;
&lt;br /&gt;
===Width===&lt;br /&gt;
&lt;br /&gt;
The width of the tool's brush, in the range from 1 to 100, can be changed by the&lt;br /&gt;
'''Width''' control in the tool's controls bar above the canvas. You can also change&lt;br /&gt;
width by '''Left''' and '''Right''' arrow keys (same as in the Calligraphy tool) at any&lt;br /&gt;
time (including during action) as well as '''Home''' and '''End'''. Also, as in Calligraphy&lt;br /&gt;
tool, the visible width of the brush is independent of zoom; simply zooming in or out is&lt;br /&gt;
often easier than adjusting the width if you want to cover a smaller or larger area of&lt;br /&gt;
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, also in the&lt;br /&gt;
range from 1 to 100. You can also change width by '''Up''' and '''Down''' arrow keys at&lt;br /&gt;
any time (including during action).&lt;br /&gt;
&lt;br /&gt;
If you have a pressure-sensitive tablet and your &amp;quot;Use pressure&amp;quot; button on the right-hand&lt;br /&gt;
end of the controls bar is on, then the force will also depend on how hard you actually&lt;br /&gt;
press your pen into your tablet, changing in the range from zero to whatever you set in&lt;br /&gt;
the Force control. If all you have is a mouse, then the force will be constant but still&lt;br /&gt;
settable by the Force control. &lt;br /&gt;
&lt;br /&gt;
===Path editing modes===&lt;br /&gt;
&lt;br /&gt;
The Tweak tool has a number of '''modes''', selectable by toggle buttons in the tool's&lt;br /&gt;
Controls bar and by keyboard shortcuts. Some of these modes change the shapes of &lt;br /&gt;
paths while others affect the colors of objects. All these modes share the Width and&lt;br /&gt;
Force controls but otherwise are quite different. Let's look at the path editing modes&lt;br /&gt;
first.&lt;br /&gt;
&lt;br /&gt;
Unlike the Node tool, to edit paths with the Tweak tool you don't need to worry about&lt;br /&gt;
where the nodes of a path are and how to manipulate them. You just apply the tool's&lt;br /&gt;
brush to any point, and the selected paths at that point will reshape smoothly and&lt;br /&gt;
naturally - as if made of soft jelly - regardless of where its nodes lie. If applied to&lt;br /&gt;
a shape or text object, the tool converts them to paths automatically.&lt;br /&gt;
&lt;br /&gt;
While not very useful for technical drawings, tweaking paths will be indispensable for&lt;br /&gt;
artistic uses of Inkscape - cartoons, drawings, sketches, anime, etc. This new&lt;br /&gt;
functionality is somewhat similar to the tools such as &amp;quot;Pucker&amp;quot; and &amp;quot;Bloat&amp;quot; in the&lt;br /&gt;
latest versions of Adobe Illustrator. &lt;br /&gt;
&lt;br /&gt;
There are currently six path editing modes in the Tweak tool: '''Push''', '''Shrink''',&lt;br /&gt;
'''Grow''', '''Attract''', '''Repel''', 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 '''Shrink''' and '''Grow''' 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 (Shrink) or outwards (Grow). 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 Calligraphy pen 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 Shrink action where you want the lines to become thinner (and the hatching to become lighter), up until total disappearance. If you press hard, shrinking works as an eraser, so you can easily clean the strokes' ends to make them thin, sharp, and uniform. Conversely, applying Grow makes strokes wider (i.e. the hatching becomes darker).&lt;br /&gt;
&lt;br /&gt;
:Of course, shrinking and growing are useful not only for calligraphic strokes. Same as with Push, with Shrink and Grow you can '''sculpt''' any path, spawning smooth treacle-like appendages with Grow and carving holes with Shrink. Unlike the &amp;quot;node sculpting&amp;quot; mode in the Node tool, however, this does not require adding new nodes to the shape.&lt;br /&gt;
&lt;br /&gt;
* The '''Attract''' and '''Repel''' modes work by moving each affected point on a path towards (Attract) or from (Repel) the cursor point. In some cases this may look similar to Shrink and Grow, but the difference is that shrinking/growing moves paths perpendicularly to the path in each point, whereas attracting/repelling moves them to or from the cursor regardless of the path shape. These modes are similar to the Pinch effect in AI; you can use them for various central-symmetric distortions in parts of your paths.&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, shrinking, or growing 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;
See the screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.46-tweak-path.png] for a few examples of using the path editing modes of the Tweak tool.&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;
inflates 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 inflating 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;
====Known problems====&lt;br /&gt;
&lt;br /&gt;
Known problems with the path editing modes in Tweak tool:&lt;br /&gt;
&lt;br /&gt;
# they don't work on open paths (an open path becomes closed if you tweak it);&lt;br /&gt;
# they are rather slow; &lt;br /&gt;
# they quickly eat memory; and &lt;br /&gt;
# they are sometimes buggy - thin calligraphic strokes may suddenly disappear or change their shape drastically as you're shrinking or growing them.&lt;br /&gt;
&lt;br /&gt;
For (4), 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;
===Color editing modes===&lt;br /&gt;
&lt;br /&gt;
The '''Color Paint''' and '''Color Jitter''' modes, unlike the path editing modes,&lt;br /&gt;
change the colors of objects instead of their shapes. Yet they share enough common&lt;br /&gt;
features with the path editing modes to be part of the same tool: These modes also use&lt;br /&gt;
a circular soft-edged brush controlled by the Width and Force parameters on the Controls&lt;br /&gt;
bar and affected by the pen pressure (if you have a pressure-sensitive tablet).&lt;br /&gt;
&lt;br /&gt;
* '''Color Paint''' applies the style of the tool to the selected objects under the brush. The style of the tool is visible in the style swatch at the rightmost end of the tool's control bar; it can be changed by clicking on the color palette or by any other style assignment command, such as Fill and Stroke dialog. ('''Note''': unlike all other tools, in Tweak tool in Color Paint mode you cannot assign style directly to selected objects; any style-setting command changes the tool's style instead.)&lt;br /&gt;
&lt;br /&gt;
:The fill from the tool's style applies to the fills of the painted objects, and the stroke applies to the strokes. If the tool's style has no fill or no stroke, it won't affect fills or strokes, correspondingly. For example, if you want to color the fills of objects blue but leave their strokes untouched, assign blue fill to the tool's style (just click blue on the palette) but set its stroke to None (middle-click the Stroke swatch in the statusbar). Similarly, master opacity in the tool's style affects master opacities of the touched objects (if the O channel is on, see below).&lt;br /&gt;
&lt;br /&gt;
:This mode allows you to literally paint over objects, shifting their colors towards the target style of the tool. For example, if you paint with yellow fill over a blue-filled object, the object will become greenish blue, then green, then yellowish green, and end up being exactly the yellow color you're painting with. This speed of this gradual transition depends on both Force parameter and pen pressure; also, objects touched by the periphery of the brush are less affected than those hit by the brush center. Overall, using this tool is very similar to a soft brush in a raster editor such as Gimp or Photoshop.&lt;br /&gt;
&lt;br /&gt;
* '''Color Jitter''' mode does not apply any color, but instead jitters (randomizes) the colors of the objects it touches. The force of the action determines how strong is the randomization, i.e. how far the colors deviate from the original values. This mode does not use the tool's style.&lt;br /&gt;
&lt;br /&gt;
Both modes work on flat fills and gradients; for gradients, the tool takes into account not only the position of the entire object with gradient, but also the position of each gradient stop relative to the brush. This means that, for example, you can change the blue color only in an object filled with blue-red gradient simply by painting over its blue end with a brush small enough to not touch the red. (Note that color tweaking does not create gradients on objects that used flat color before, but only adjusts existing gradients in the drawing.)&lt;br /&gt;
&lt;br /&gt;
See the screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.46-tweak-color.png] for a few examples of using the color editing modes of the Tweak tool.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Channels====&lt;br /&gt;
&lt;br /&gt;
Color Paint and Color Jitter honor the '''Channels''' control. This control comprises&lt;br /&gt;
the four buttons: '''H''', '''S''', '''L''', and '''O''', which allow you to turn on and off&lt;br /&gt;
the tool's action on the object's hue, saturation, lightness, and opacity,&lt;br /&gt;
correspondingly. For example, if you want to raise the saturation of some part of your&lt;br /&gt;
drawing without changing the hue, select some maximum-saturation color (e.g. pure red)&lt;br /&gt;
and turn off all Channels buttons except S. Similarly, you can replace the hues without&lt;br /&gt;
affecting saturation or lightness (only H pressed), or lighten/darken all colors without&lt;br /&gt;
changing their hues and saturation (only L pressed). Pressing O allows you to apply the&lt;br /&gt;
master opacity from the tool's style to the master opacity of objects (but not fill or&lt;br /&gt;
stroke opacity).&lt;br /&gt;
&lt;br /&gt;
====Usage notes====&lt;br /&gt;
&lt;br /&gt;
Color painting with Tweak tool is similar, but not exactly analogous to bitmap&lt;br /&gt;
painting. Even though the tool itself works as a soft brush, it still applies its color&lt;br /&gt;
to vector objects, which behave as vector objects usually do. For example, if you want&lt;br /&gt;
to change the tint of the face in your drawing, and if a hand in the drawing is part of&lt;br /&gt;
the same object as the face, that hand will change its tint too even if it's located far&lt;br /&gt;
from the point you are painting. (We foresee a &amp;quot;fracture&amp;quot; command in one of the next&lt;br /&gt;
versions of Inkscape which will help you turn a monolithic object into a mosaic of small&lt;br /&gt;
fragments that will be then easy to paint with Tweak tool.)  Still, even with this&lt;br /&gt;
limitation, color painting is a novel way of dealing with vector drawings which allows&lt;br /&gt;
you to quickly and intuitively make adjustments which would be awkward and slow with&lt;br /&gt;
traditional approach.&lt;br /&gt;
&lt;br /&gt;
Drawings containing patterns or scatterings of small independent objects are best suited&lt;br /&gt;
for color painting with Tweak tool. Examples include:&lt;br /&gt;
&lt;br /&gt;
* freehand drawings with Calligraphy pen, consisting of many separate strokes;&lt;br /&gt;
&lt;br /&gt;
* gradient meshes imported from Adobe Illustrator files (Inkscape renders these meshes as lattices of small polygons; while there's no direct support for gradient meshes in Inkscape yet, color painting on such lattices is almost as good);&lt;br /&gt;
&lt;br /&gt;
* text converted to paths and with Break Apart command applied so that each letter is a separate path;&lt;br /&gt;
&lt;br /&gt;
* patterns made with the Tile Clones command; note that you need to unset the fill and/or stroke on the original object and use the Color tab to assign some initial color to the clones - this will make them paintable with the Tweak tool without unlinking.&lt;br /&gt;
&lt;br /&gt;
Moreover, color tweaking can be useful for compositions with a few objects or even for&lt;br /&gt;
single objects. Unlike all other color selection methods, painting with the Tweak tool&lt;br /&gt;
implements the ''color mixing'' metaphor which is much more familiar to traditional&lt;br /&gt;
artists than RGB sliders or even the color wheel. For example, start with a rectagle of&lt;br /&gt;
pure blue color; then, pick different colors by Color Paint and apply light touches with&lt;br /&gt;
minimum Force and minimum pen pressure: add a little green, a little brown, a little&lt;br /&gt;
yellow, etc. until you have the exact hue you need. Similarly, you can whiten or blacken&lt;br /&gt;
any hue by admixing white or black.&lt;br /&gt;
&lt;br /&gt;
You can also use color tweaking to add a tint, darken/lighten, saturate/desaturate, or&lt;br /&gt;
color jitter your entire drawing. Just select all in all layers, zoom out, choose a&lt;br /&gt;
large brush width so it covers all of the drawing, and apply a little color tweaking&lt;br /&gt;
(with minimum Force) that will therefore affect all visible objects.&lt;br /&gt;
&lt;br /&gt;
===Keyboard shortcuts===&lt;br /&gt;
&lt;br /&gt;
* '''W''', '''Shift+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+S''': switch to the Shrink mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+G''': switch to the Grow mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+A''': switch to the Attract mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+E''': switch to the Repel mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+R''': switch to the Roughen mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+C''': switch to the Color Paint mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+J''': switch to the Color Jitter 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 Shrink (while Ctrl is down)&lt;br /&gt;
&lt;br /&gt;
* '''Shift+Ctrl+mouse drag''': temporarily switch to Grow (while Shift+Ctrl is down)&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 create drawings or objects that appear three-dimensional. The new '''3D box tool''' helps you create such drawings by automating the most common operation: creating a box in a given 3D 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; Shift+drag without releasing the mouse button to extrude in Z direction.&lt;br /&gt;
&lt;br /&gt;
* Adjust any of its 3 dimensions by handles. The 4 handles on the front X/Y side resize it, the four ones on the back X/Y side expand/contract the box in Z direction. With Shift, the functions of handles on front and back sides are reversed. With Ctrl, the side-resizing handles snap to the coordinate axes or diagonals.&lt;br /&gt;
&lt;br /&gt;
* Move a 3D box &amp;quot;in perspective&amp;quot; by dragging its center; without modifiers, movement occurs within the XY-plane (press Ctrl to constrain the movement to the directions of the coordinate axes or diagonals), with Shift the box moves parallel to the Z-axis.&lt;br /&gt;
&lt;br /&gt;
* Adjust the vanishing points of a perspective by dragging them on the canvas (see below) or toggling their states; all boxes sharing this perspective are affected by a vanishing point move. &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;
In SVG, a 3D box is represented as a '''group''' (svg:g) with a special extension attribute (in Inkscape's 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;
===Keyboard shortcuts===&lt;br /&gt;
&lt;br /&gt;
* '''X''', '''Shift+F4''': switch to the 3D box tool&lt;br /&gt;
&lt;br /&gt;
* The various kinds of parentheses, namely '''[''' ''']''', '''(''' ''')''', '''{''' '''}''', can be used to rotate infinite (i.e., parallel) perspective lines in X-, Y-, and Z-direction, respectively. Closing parentheses rotate clockwise and opening parentheses rotate counterclockwise. The angle of rotation is taken from the preferences. Pressing '''Alt''' reduces the amount of rotation to 1 screen pixel.&lt;br /&gt;
&lt;br /&gt;
* When the 3D box tool is active, '''Shift+X''', '''Shift+Y''', and '''Shift+Z''' toggle perspective lines in the corresponding direction between &amp;quot;converging&amp;quot; and &amp;quot;parallel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Gradient Tool==&lt;br /&gt;
===Selecting multiple stops===&lt;br /&gt;
'''More than one gradient stop''' can be selected at a time. Shortcuts for working with multiple stop selections are generally modeled on the Node tool. &lt;br /&gt;
* Add a stop to the selected stops by '''Shift+click'''.&lt;br /&gt;
* Press '''Ctrl+A''' to select all stops in the selected objects.&lt;br /&gt;
* '''Shift+drag''' around stops to add them to selection.&lt;br /&gt;
Multiple selected stops:&lt;br /&gt;
*Can be moved together by '''mouse drag''' or by '''arrow keys'''. For example, creating a linear gradient, then press Ctrl+A to select all stops and use arrow keys to move the entire gradient as a whole.&lt;br /&gt;
*Can be deleted at the same time by pressing '''Del'''.&lt;br /&gt;
An always up-to-date description of the current handle selection is provided in the statusbar in the Gradient tool, including the number of selected handles (and the type of the single selected handle), as well as the total number of handles and selected objects.&lt;br /&gt;
&lt;br /&gt;
===Editing intermediate stops===&lt;br /&gt;
'''Intermediate stops''' in gradients can be added, deleted, and edited on canvas (previously this was only possible in the Gradient Editor dialog).&lt;br /&gt;
*Stops can be added by '''double clicking''' or by '''Ctrl+Alt+Click''' on the gradient line. Also, you can '''drag-and-drop''' a color from the palette onto the gradient line to create a new stop with this color. Dropping a color on an existing stop changes the color of that stop.&lt;br /&gt;
*When two or more adjacent stops are selected, pressing '''Ins''' adds stops in the middles of all selected stop intervals.&lt;br /&gt;
*Intermediate stops can be '''mousedrag'''ged or moved by '''arrow keys''' along their gradient line, within the limits of the adjacent unselected stops (or end handles). &lt;br /&gt;
:*Dragging with '''Ctrl''' moves the selected stops snapping them to 1/10 fractions of the available range.&lt;br /&gt;
:*Dragging with '''Alt''' moves the selected stops depending on how close each one is to the stop being dragged, using a smooth bell-like curve similar to the node sculpting feature in Node tool. This makes it easy to approximate different gradient profiles; for example, if you have a two-stop gradient that you want to shape according to a curve profile, select both ends of the gradient, press '''Ins''' a few times to add a number of intermediate nodes, then '''Alt+drag''' a node in the middle to smoothly profile the gradient.&lt;br /&gt;
*Stops can also be moved by '''arrow keys''' with all the regular modifiers ('''Shift''' for 10x movement, '''Alt''' for pixel-size movement at the current zoom, '''Shift+Alt''' for 10 pixels movement at the current zoom).&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;
*Pressing '''Ctrl+L''' with some intermediate stops selected attempts to ''simplify'' the selected portion of the gradient, removing those stops that can be removed without too much change in the way the gradient looks. In particular, new stops created by double-clicking or pressing Ins initially do not change the appearance of the gradient, so if you press Ctrl+L, all redundant stops that weren't moved or repainted since creation will be deleted.&lt;br /&gt;
&lt;br /&gt;
===Style of gradient stops===&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;
*When one or more gradient stops are selected, using the Copy command ('''Ctrl+C''') copies to the clipboard the style (color and opacity) of the selected stop or the averaged style of several selected stops, not the entire object with gradient as before. This means you can now copy/paste style between stops: select the source stop(s), copy, select the destination stop(s), paste style ('''Ctrl+Shift+V'''). With several selected stops, this also allows you to easily average their colors and opacities by copying them and pasting the style back onto them. (After that, redundant gradient stops can be removed by simplification with '''Ctrl+L''').&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;
===Automatic duplication of gradients===&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). The Duplicate button is therefore removed. &lt;br /&gt;
&lt;br /&gt;
However, to accommodate the needs of users who have relied on sharing the same gradient definition across objects, this behavior can be optionally suppressed. The '''Prevent sharing of gradient definitions''' checkbox on the Misc tab of Inkscape Preferences is by default checked; if you uncheck it, Inkscape does not automatically copy gradient definitions for new objects, which means that copy/pasting, duplicating, pasting style, and explicit assignment of a gradient to an object via the Gradient tool controls results in a shared gradient definition, so that changing the colors or mid-stop positions of the gradient on one object (but not changing the coordinates of the end handles) affects all other objects that share the same definition.&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), as well as to '''-1/3''', '''-1/2''', '''-1''', '''-2''', '''-3''', etc. This way you can, for example, mirror any object around one of the edges of its box. (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;
&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;
* As a long-requested feature, two entry fields are added to the toolbar which allow precise editing of the coordinates of selected nodes.&lt;br /&gt;
&lt;br /&gt;
==Rectangle Tool==&lt;br /&gt;
&lt;br /&gt;
* '''Ctrl+dragging''' now also allows the creation of rectangles with sides constrained to the '''golden ratio''' (approx. 1 : 1.618034), not only integer ratios.&lt;br /&gt;
&lt;br /&gt;
==Ellipse Tool==&lt;br /&gt;
&lt;br /&gt;
* It is now easy to create ellipses/circles passing through particular points. Normally, the starting and ending point of the mouse drag mark the corners of the '''bounding box'''. Now the '''Alt''' modifier can be used to enlarge the ellipse so that its '''circumference''' passes through these two points.&lt;br /&gt;
&lt;br /&gt;
* '''Ctrl+Alt+drag''' is an exception from this rule. It creates a perfect circle whose diameter is defined by the starting and ending point of the drag.&lt;br /&gt;
&lt;br /&gt;
==Pen/Pencil Tools==&lt;br /&gt;
&lt;br /&gt;
These tools can now create '''single dots''' by '''Ctrl+click''' on the canvas. This creates a small circle filled with the current stroke color. The radius can be set in the Preferences of the respective tools (it is specified as a multiple of the current stroke width). '''Shift+Ctrl+click''' creates a dot twice the specified size, and '''Alt+Ctrl+click''' varies the size of the created dots randomly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Dropper Tool==&lt;br /&gt;
&lt;br /&gt;
The shortcut 'D' is now used to &amp;lt;i&amp;gt;toggle&amp;lt;/i&amp;gt; (not just switch to) the dropper tool - much like space is used to toggle the selector tool. That is, pressing 'D' a second time switches back to the tool used before.&lt;br /&gt;
&lt;br /&gt;
=SVG features=&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;
==SVG 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 '''feColorMatrix''' filter primitive applies a matrix transformation to colour of each rendered pixel. This allows for effects like turning object to grayscale, modifying colour saturation and changing colour hue.&lt;br /&gt;
&lt;br /&gt;
* The '''feComposite''' filter primitive composites two images using one of the [http://en.wikipedia.org/wiki/Porter-Duff Porter-Duff blending modes] (described in paper Compositing Digital Images by T. Porter and T. Duff, published in SIGGRAPH '84 Conference Proceedings, Association for Computing Machinery, Volume 18, Number 3, July 1984) or the aritmetic mode described in SVG standard. Porter-Duff blending modes are essentially logical operations between the images. For example, xor mode shows the areas, where either one of the objects is, but not the areas where both of the objects are. Arithmetic mode lets you specify coefficients k1-k4 for blending equation (result colour) = k1 * (first input colour) * (second input colour) + k2 * (first input colour) + k3 * (second input colour) + k4.&lt;br /&gt;
&lt;br /&gt;
* The '''feConvolveMatrix''' lets you specify a [http://en.wikipedia.org/wiki/Convolution Convolution] to be applied on the image. Common effects created using convolution matrices are blur, sharpening, embossing and edge detection. There's a fairly good explanation and some example matrices at [http://www.gamedev.net/reference/programming/features/imageproc/page2.asp www.gamedev.net/reference/programming/features/imageproc/page2.asp]. Note that while gaussian blur can be created using this filter primitive, the special gaussian blur primitive is faster and resolution-independent.&lt;br /&gt;
&lt;br /&gt;
* Filter primitives '''feDiffuseLighting''' and '''feSpecularLighting''' create lighting maps for the object in input image. SVG doesn't have concept of third dimension, so these filters use alpha channel of input image as a height map: the more opaque given point in input image is, the nearer spectator it is considered to be. There exists an example for using these in Inkscape distribution, in share/examples/lighting_effects.svg or [http://inkscape.svn.sourceforge.net/viewvc/*checkout*/inkscape/inkscape/trunk/share/examples/lighting_effects.svg?revision=15523 in SVN]&lt;br /&gt;
&lt;br /&gt;
* The '''feDisplacementMap''' filter primitive displaces the pixels in the first input using the second input as a displacement map, that shows from how far the pixel should come from. Classical examples are whirl and pinch effects, that can be found in most image manipulation programs and even in some screensavers, where this kind off effect is moving around screen, twisting desktop beneath it.&lt;br /&gt;
&lt;br /&gt;
* The '''feFlood''' filter primitive fills its region with a given color and opacity. It can be used as an auxiliary tool, usualy in combination with other filter primitives, in order to facilitate some common color handling operations.&lt;br /&gt;
&lt;br /&gt;
* The '''feImage''' filter primitive allows using external images as part of filtering chain. For example, one could use external image as a displacement map for feDisplacementMap or as a height map for lighting effects. Note that while SVG standard allows using other parts of the SVG file in this filter primitive, the current Inkscape implementation only allows external images.&lt;br /&gt;
&lt;br /&gt;
* The '''feMerge''' filter primitive composites several temporary images inside the filter primitive to a single image. It uses normal alpha compositing for this. This is equivalent to using several feBlend primitives in 'normal' mode or several feComposite primitives in 'over' -mode.&lt;br /&gt;
&lt;br /&gt;
* The '''feMorphology''' filter primitive provides erode and dilate effects, that are common in image manipulation programs. With erode, darker and more transparent areas spread to lighter and more opaque areas, whereas with dilate lighter and more opaque areas spread to darker and more transparent areas. For single-colour objects, this basically means, erode makes the object thinner and dilate makes it thicker.&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, where the shadow is in a slightly different position than the actual object.&lt;br /&gt;
&lt;br /&gt;
* The '''feTurbulence''' filter primitive renders [http://en.wikipedia.org/wiki/Perlin_noise Perlin noise]. This kind of noise is useful in simulating several nature phenomena like clouds, fire and smoke and in generating complex textures like marble or granite.&lt;br /&gt;
&lt;br /&gt;
See also wiki page [[Filter Effects]] for more info on filters in Inkscape in general.&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 (LPE)=&lt;br /&gt;
&lt;br /&gt;
'''Live path effects''' (not to be confused with extension effects or SVG filters) are a new way to &amp;lt;b&amp;gt;non-destructively modify path and shape objects&amp;lt;/b&amp;gt;. Path effects affect the path data of an object but not its style. The original path is preserved and can be edited directly on-canvas, and the path effect applied to it will be updated live. &lt;br /&gt;
&lt;br /&gt;
In this version, we include several path effects that are analogous to the corresponding extension effects (such as Path along Path effect and Pattern along Path that replaces the extension of the same name). The most important advantage of path effects is that they are, indeed, live - you can still edit the original path and the effect will update in real time (unlike the extension effects which were one-time one-way transformations). In the future, we plan to reimplement most if not all of path-changing extensions as live path effects.&lt;br /&gt;
&lt;br /&gt;
Live path effects were developed by Johan Engelen as part of the GSoC 2007.&lt;br /&gt;
&lt;br /&gt;
==Details about operation==&lt;br /&gt;
The following schematic tries to explain how LPE work.&lt;br /&gt;
&lt;br /&gt;
    original style  ------------&amp;gt;  output style&lt;br /&gt;
    original path   --&amp;gt;  LPE  --&amp;gt;  output path&lt;br /&gt;
                          ^&lt;br /&gt;
                          |&lt;br /&gt;
                      parameters&lt;br /&gt;
&lt;br /&gt;
The original style and path are from the path that the effect is applied on. The output is what is visible on screen. What is very important to notice is that &amp;lt;b&amp;gt;output style equals original style&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameters can be paths, numbers, points, text, in principle anything.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Applying effects==&lt;br /&gt;
Path effects are applied through the Path Effects dialog (opened from the Path menu, or by pressing Ctrl+Shift+7. This dialog is also used for controlling the effect's parameters and for removing effects.&lt;br /&gt;
&lt;br /&gt;
When a path with a path effect applied is selected, the statusbar description mentions that, for example &amp;quot;'''Path''' (4 nodes, path effect)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There is a special Paste Path Effect command (Ctrl+7) that can be used to copy effects from one path to another.&lt;br /&gt;
&lt;br /&gt;
==Editing effect parameters==&lt;br /&gt;
When switching to the node edit tool (&amp;lt;b&amp;gt;F2&amp;lt;/b&amp;gt;), the &amp;lt;b&amp;gt;original path&amp;lt;/b&amp;gt; can be edited. The original path is shown as a red helper path. Normal path operations, like simplify, still work.&lt;br /&gt;
&lt;br /&gt;
Some parameters of effects can be edited on-canvas. For example, path parameters can be node-edited, by pressing the &amp;quot;edit on-canvas&amp;quot; button in the Path Effects dialog. &amp;lt;b&amp;gt;Press &amp;quot;7&amp;quot; to cycle through the different on-canvas editable parameters.&amp;lt;/b&amp;gt; This way, one can edit the parameters without opening the Path Effects dialog. The statusbar tells the name of the parameters that is currently being shown.&lt;br /&gt;
&lt;br /&gt;
==Available effects==&lt;br /&gt;
&lt;br /&gt;
===Path along path===&lt;br /&gt;
The &amp;lt;b&amp;gt;Path along Path&amp;lt;/b&amp;gt; effect can curve a path along another path. When this effect is applied to a path, it can be bend along another path (called ''bend path''). With the node edit tool, both the original path and the bend path can be changed &amp;lt;b&amp;gt;on-canvas&amp;lt;/b&amp;gt; and the result is &amp;lt;b&amp;gt;updated live&amp;lt;/b&amp;gt;. This provides a direct equivalent of &amp;quot;vector brushes&amp;quot; or &amp;quot;skeletal strokes&amp;quot; features in other vector editors. &lt;br /&gt;
&lt;br /&gt;
In the effect's control panel in the Path Effects dialog, you can select how many copies of the original path are put along the bend path (either '''single''' or '''repeated''') and whether it is '''stretched''' to fill the bend path. In this dialog you'll also find a button to edit the bend path on-canvas and a button to '''paste''' a new bend path from clipboard. A possible workflow is this: you select and copy the new bend path to the clipboard, then select the path you want to bend, apply the Path along path effect, and paste the bend path with the paste button next to 'bend path'.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-pathalongpath.svg&lt;br /&gt;
&lt;br /&gt;
===Pattern along path===&lt;br /&gt;
The &amp;lt;b&amp;gt;Pattern along Path&amp;lt;/b&amp;gt; effect can curve a path along another path. When this effect is applied to path A (called ''skeleton''), another path B (called ''pattern'') can then be passed as a parameter. The result is that path B is bent along path A. With the node edit tool, path A can be changed &amp;lt;b&amp;gt;on-canvas&amp;lt;/b&amp;gt; and the result is &amp;lt;b&amp;gt;updated live&amp;lt;/b&amp;gt;. This provides a direct equivalent of &amp;quot;vector brushes&amp;quot; or &amp;quot;skeletal strokes&amp;quot; features in other vector editors. &lt;br /&gt;
&lt;br /&gt;
In the effect's control panel in the Path Effects dialog, you can select how many copies of the pattern are attached (either '''single''' or '''repeated''') and whether the pattern is '''stretched''' to fill the skeleton path. You can also choose the pattern for the selected skeleton [either directly or] by '''pasting''' it from clipboard (that is, you select and copy to the clipboard the pattern, then select the skeleton, apply the Path along path effect, and paste the pattern). The '''Scale width''' parameter allows you to change the width of the pattern applied to the path.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-pathalongpath.svg&lt;br /&gt;
&lt;br /&gt;
===Stitch Subcurves===&lt;br /&gt;
The &amp;lt;b&amp;gt;Stitch Subcurves&amp;lt;/b&amp;gt; effect connects points from two subpaths of the path with straight line or curved segments, i.e. the &amp;lt;i&amp;gt;stitches&amp;lt;/i&amp;gt;. It looks a lot like the Effect Lines from Expression 3. The result is also referred to as &amp;quot;String Art&amp;quot;. For some examples of string art, see http://members.shaw.ca/jillbritton/string_art/jbstringart.htm. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;b&amp;gt;shape&amp;lt;/b&amp;gt; of the &amp;lt;b&amp;gt;connecting paths&amp;lt;/b&amp;gt; can controlled by the &amp;lt;b&amp;gt;stroke path&amp;lt;/b&amp;gt; parameter. This could be used to draw 'hair-shaped' connecting paths with sharp end-tips. Other controls include the &amp;lt;b&amp;gt;number of paths&amp;lt;/b&amp;gt;, the variation in spacing between the connecting paths (&amp;lt;b&amp;gt;clustering&amp;lt;/b&amp;gt;) and also whether the start and end points of the stitches should like exactly on the original subcurves or can &amp;lt;b&amp;gt;stray randomly&amp;lt;/b&amp;gt; around them. Finally the width of the stroke path can be varied.&lt;br /&gt;
&lt;br /&gt;
Note that this effect can only be applied to a path with two subpaths in it, hence '&amp;lt;b&amp;gt;sub&amp;lt;/b&amp;gt;curve' in the name. Use Path &amp;gt; Combine to create such a path from two separate paths.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-curvestitch.svg&lt;br /&gt;
&lt;br /&gt;
===Gears===&lt;br /&gt;
The &amp;lt;b&amp;gt;Gears&amp;lt;/b&amp;gt; effect is a toy effect. It generates a chain of interconnected gears from the path that has the effect applied to it. The nodes of the path define the centers of the gears. The first 3 nodes are special; the first defines the start angle of the chain, the second defines the center of the first gear and the third knot specifies the radius of the first gear. That is, to create a chain of 2 gears, you will need a path with 4 nodes; for 3 gears, 5 nodes, and so on. &lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-gears.svg&lt;br /&gt;
&lt;br /&gt;
==Development of new effects==&lt;br /&gt;
One of the goals of the Summer of Code project was to make it easy to create new effects. There is a framework that greatly simplifies effect implementation; very little code is needed to get the effect hooked into Inkscape. This leaves valuable time for the actual effect to be implemented. See the http://wiki.inkscape.org/wiki/index.php/MakingLivePathEffects wiki page for an explanation of how to get started with your own effect!&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 '''Modify Path &amp;gt; Edge 3D''' extension creates black, grey and white paths around a shape, then blurs and clips them for a 3D effect.&lt;br /&gt;
&lt;br /&gt;
* The new '''Generate from Path &amp;gt; Dimensions''' extension creates CAD style dimensions that are basically arrows with lengths equal to selection's bounding box and captions representing length.&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 new '''Color &amp;gt; Randomize''' extension allows you to change the color via hue, saturation and lightness check boxes. This is useful if you want to colorize lots of shapes at the same time.&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;
*The '''Generate Template &amp;gt; Perfect-Bound Cover''' extension creates templates for wraparound covers for perfect-bound books using US size and paper weight measurements.   This extension will resize the document to include the width, height, spine width, and bleed measurements that are provided to the extensions, so it should be the first operation done before designing.&lt;br /&gt;
&lt;br /&gt;
== XSLT effects ==&lt;br /&gt;
&lt;br /&gt;
* '''XSLT''' is now supported for input, output and effect extensions.  This is used to support the XAML file format (both import and export) and the Adobe Illustrator SVG import which removes Adobe's stuff from SVG.&lt;br /&gt;
&lt;br /&gt;
== ImageMagick effects ==&lt;br /&gt;
&lt;br /&gt;
New raster operations available through the effects drop-down menu, powered by the ImageMagick library. For any of these effects to work, you need to have an '''image object selected''' in the drawing. &lt;br /&gt;
&lt;br /&gt;
* '''Adaptive Threshold''' applies adaptive thresholding to the bitmap. Average color of rectangle provided by '''width''' and '''height''' used as threshold value. Use '''offset''' to apply a different threshold than the average.&lt;br /&gt;
&lt;br /&gt;
* '''Add Noise''' adds random noise of certain types to the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Blur''' blurs the bitmap, using '''radius''' as the amount of blur. Higher radius means more blur. (Note that unlike the vector Gaussian blur of objects, this bitmap blur will not extend the edges of the image, so it may appear truncated at the edges.)&lt;br /&gt;
&lt;br /&gt;
* '''Channel''' extracts the specified channel from the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Charcoal''' applies a charcoal drawing style to a bitmap. Radius controls the width (or detail) of charcoal strokes. Higher '''radius''' means lower detail. '''Sigma''': the higher it is, the less defined the charcoal is.&lt;br /&gt;
&lt;br /&gt;
* '''Colorize''' overlays the bitmap with a given color at a given intensity.&lt;br /&gt;
&lt;br /&gt;
* '''Contrast''' lightly enhances the contrast (difference between lights and darks) of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Cycle Colormap''' cycles the colormap of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Despeckle''' reduce the speckle noise in a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Edge''' hilights edges in a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Emboss''' embosses a bitmap, hilighting edges with 3D effect.&lt;br /&gt;
&lt;br /&gt;
* '''Enhance''' enhance a bitmap, minimizing noise.&lt;br /&gt;
&lt;br /&gt;
* '''Equalize''' equalizes a bitmap. Histogram equalization.&lt;br /&gt;
&lt;br /&gt;
* '''Flop''' mirrors a bitmap, reflecting each scanline in the horizontal direction.&lt;br /&gt;
&lt;br /&gt;
* '''Gaussian Blur''' blurs a bitmap, more strongly than regular blur.&lt;br /&gt;
&lt;br /&gt;
* '''Implode''' sucks everything towards the center of the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Level''' scales values falling between the given '''Black Point''' to '''White Point''' range to the full color range.&lt;br /&gt;
&lt;br /&gt;
* '''Level Channel''' acts the same way as level but for only one channel.&lt;br /&gt;
&lt;br /&gt;
* '''Median Filter''' filters a a bitmap by replacing each pixel component with the median color in a circular neighborhood&lt;br /&gt;
&lt;br /&gt;
* '''Modulate''' adjusts the percent hue, saturation, and brightness of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Negate''' takes the inverse of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Normalize''' normalizes a bitmap, expanding color range to the full possible range of color.&lt;br /&gt;
&lt;br /&gt;
* '''Oil Paint''' stylizes a bitmap so that it appears to be painted with oils.&lt;br /&gt;
&lt;br /&gt;
* '''Opacity''' modifies the opacity channel of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Raise''' alters the lightness of the edges of a bitmap to create a raised appearance, much like a frame.&lt;br /&gt;
&lt;br /&gt;
* '''Reduce Noise''' reduces noise in a bitmap by using a noise peak elimination filter.&lt;br /&gt;
&lt;br /&gt;
* '''Shade''' shades a bitmap by simulating a distant light source&lt;br /&gt;
&lt;br /&gt;
* '''Sharpen''' sharpens a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Solarize''' solarizes a bitmap, like overexposing photographic film.&lt;br /&gt;
&lt;br /&gt;
* '''Spread''' randomly spread pixels in a bitmap within the radius of '''amount'''.&lt;br /&gt;
&lt;br /&gt;
* '''Swirl''' swirls the bitmap around the center point.&lt;br /&gt;
&lt;br /&gt;
* '''Threshold''' thresholds a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Unsharpmask''' sharpens a bitmap using an unsharp mask algorithm.&lt;br /&gt;
&lt;br /&gt;
* '''Wave''' alters a bitmap along the sine wave.&lt;br /&gt;
&lt;br /&gt;
These effects are part of the Google Summer of Code 2007, coded by Christopher Brown.&lt;br /&gt;
&lt;br /&gt;
== Misc ==&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;
* A new parameter, '''precision''' is added to the parameter definitions in the [[MakingAnINX|inx file format]], allowing you to set the number of digits in that parameter's spinbutton in the effect UI.&lt;br /&gt;
&lt;br /&gt;
= Stock patterns =&lt;br /&gt;
&lt;br /&gt;
Since a few versions ago, Inkscape supports patterns in fill and stroke. However, up to now the only way to apply a pattern was by creating it in the document using the Object(s) to Pattern command, which wasn't very convenient. Now, if you switch an object's fill or stroke to pattern using the Fill&amp;amp;Stroke dialog, you will get a drop-down list with a number of predefined '''stock patterns''' that you can apply simply by selecting them from the list:&lt;br /&gt;
&lt;br /&gt;
*A selection of plain '''stripes''' differing by the ratio of the stripe width to gap width (for example, the &amp;quot;Stripes 1:2&amp;quot; pattern has gaps twice as wide as stripes), in the range from 4:1 to 1:64. All stripes patterns are in two versions: with black stripes and with white stripes (gaps are always transparent).&lt;br /&gt;
&lt;br /&gt;
*Two '''checkerboard''' patterns with black and white odd squares (even squares are transparent)&lt;br /&gt;
&lt;br /&gt;
*'''Packed circles''': a hexagonal pattern of black circles with transparent gaps.&lt;br /&gt;
&lt;br /&gt;
*'''Polka dots''': a scattering of dots designed to look randomly but evenly distributed so as to mask the regularity of the repeating pattern. There are three size variants of this pattern (small, medium, and large dots) and two color variants (black and white dots).&lt;br /&gt;
&lt;br /&gt;
*'''Wavy''' is a pattern of wavy lines.&lt;br /&gt;
&lt;br /&gt;
*'''Camouflage''' is a green-toned protective pattern such as that used by the military.&lt;br /&gt;
&lt;br /&gt;
*'''Ermine''' is the traditional heraldic pattern representing stylized stoat furs with black tails.&lt;br /&gt;
&lt;br /&gt;
*Three bitmap patterns: '''sand''', '''cloth''', and '''old paint''' are based on seamless photographic tiles and allow you to add some natural texture to your drawing. All of them are grayscale, so you can make objects with these textures semitransparent and overlay them over other colored objects to &amp;quot;texturize&amp;quot; them. &lt;br /&gt;
&lt;br /&gt;
After applying a stock pattern, switch to Node tool to edit the location, scale, and rotation of the pattern via on-canvas handles.&lt;br /&gt;
&lt;br /&gt;
All stock patterns are stored in the file &amp;lt;code&amp;gt;patterns/patterns.svg&amp;lt;/code&amp;gt; in Inkscape's &amp;lt;code&amp;gt;share&amp;lt;/code&amp;gt; directory (typically &amp;lt;code&amp;gt;/usr/share/inkscape&amp;lt;/code&amp;gt; on Linux, &amp;lt;code&amp;gt;&amp;lt;i&amp;gt;inkscape-dir&amp;lt;/i&amp;gt;/share&amp;lt;/code&amp;gt; on Windows). You can add your own patterns to this file or replace it with any other SVG file containing the patterns you need.&lt;br /&gt;
&lt;br /&gt;
=Markers=&lt;br /&gt;
&lt;br /&gt;
* A new command, '''Objects to Marker''', was added to the Object menu. It converts the current selection into a marker. After you do it, the selection is deleted, but the list of markers in the Fill and Stroke dialog, Stroke style tab, now contains the new marker that you can apply to paths. &lt;br /&gt;
&lt;br /&gt;
:* When creating the new marker, Inkscape assumes that the original objects are oriented as they should be on a horizontal path that goes from left to right. For example, if you create a new arrowhead that you plan to use as an end marker, make it point horizontally to the right before converting it to marker. &lt;br /&gt;
&lt;br /&gt;
:* Similar to standard markers, the user-created marker will scale up and down as you change the stroke width. Its initial size (i.e. the size of the object that you have turned into a marker) corresponds to the 1 px stroke.&lt;br /&gt;
&lt;br /&gt;
:* When you create a new marker, Inkscape uses the rotation center of the (first) selected object as the anchor point, i.e. the point which will coincide with the node to which that marker is attached. By default, the rotation center is in the center of the object's bounding box, which means the newly created marker will be centered around its node. If you move the rotation center, for example, to one of the corners of the object, the new marker will touch its node by that corner.&lt;br /&gt;
&lt;br /&gt;
* Several new '''UML markers''' were added to the standard set, including filled and hollow diamonds and triangles.&lt;br /&gt;
&lt;br /&gt;
* '''Master opacity''' did not apply to path markers as it should; this is fixed.&lt;br /&gt;
&lt;br /&gt;
* '''Stock markers''', if used in the document, now appear in the &amp;quot;this document's markers&amp;quot; section at the top of the marker lists in the Fill &amp;amp; Stroke dialog.  Before, any markers with stock IDs (including markers modified by the user) were hidden, making it difficult to work with modified stock markers.&lt;br /&gt;
&lt;br /&gt;
=Color management=&lt;br /&gt;
&lt;br /&gt;
== Calibrated SVG color including CMYK ==&lt;br /&gt;
&lt;br /&gt;
Inkscape now supports color-managed color definitions that use a colorspace other than sRGB (for example Adobe RGB, or calibrated CMYK colors). In the SVG file, this is done using the&lt;br /&gt;
optional &amp;quot;icc-color(...)&amp;quot; paint components as described in section 11.2 &amp;quot;Specifying paint&amp;quot; of the SVG 1.1 specification&lt;br /&gt;
[http://www.w3.org/TR/SVG11/painting.html#SpecifyingPaint]. A fallback sRGB value will be used, for non color-managed workflows. This allows for the use of calibrated color spaces, including using CMYK values that are preserved across applications.&lt;br /&gt;
&lt;br /&gt;
The new CMS color selector tab allows these colors to be edited.&lt;br /&gt;
&lt;br /&gt;
== Display adjustment ==&lt;br /&gt;
&lt;br /&gt;
In Inkscape Preferences, Color Management tab, there's are new options for enabling display adjustment; you can select any calibration profile (an ICC file) suitable for your display. Options for rendering intent can also be chosen.&lt;br /&gt;
&lt;br /&gt;
=== Per-window adjustment ===&lt;br /&gt;
Display adjustment is enabled and disabled per each editing window. This allows for simultaneous viewing of adjusted and unadjusted views of a single document by using multiple windows. There is a toggle at the bottom-right corner of the scrollbars that allows for turning on and off display adjustment. It also will be disabled to provide visible feedback when no profile is set to be available for adjustment.&lt;br /&gt;
&lt;br /&gt;
=== XICC Support ===&lt;br /&gt;
On X11-based systems (i.e. Unix and Mac OSX), use of [[http://www.burtonini.com/computing/x-icc-profiles-spec-latest.html ICC Profiles In X Specification]] (or XICC) can be enabled. Support for version 0.2 of this specification has been implemented. Enabling this option by choosing to retrieve profiles from the display will switch Inkscape to using profiles attached to screens at runtime. These allow display adjustment to be changed on the fly, and to be set and cleared per-monitor. This is especially helpful with more than a single monitor.&lt;br /&gt;
&lt;br /&gt;
Other Open Source software such as [http://www.gimp.org/ GIMP] support XICC. This allows all aware applications to be adjusted by setting a profile only once.&lt;br /&gt;
&lt;br /&gt;
=== Multi-monitor aware ===&lt;br /&gt;
When XICC support is enabled, windows will adjust to the proper profile as they are moved across monitors. Also, as the windows are moved onto monitors with no profile attached, the adjustment toggle will become disabled. When the windows are moved onto screens that do have profiles, the toggle will become enabled.&lt;br /&gt;
&lt;br /&gt;
== Soft Proofing ==&lt;br /&gt;
&lt;br /&gt;
In Inkscape Preferences, Color Management tab, there's a new option for enabling output device preview; you can select any calibration profile (an ICC file) suitable for your output device. Options for rendering intent can also be chosen, along with out of gamut warnings.&lt;br /&gt;
&lt;br /&gt;
== OS support ==&lt;br /&gt;
&lt;br /&gt;
Сolor management is supported in Linux and Mac OS X only at this time.&lt;br /&gt;
&lt;br /&gt;
=Grids, guides, snapping=&lt;br /&gt;
&lt;br /&gt;
==Grids==&lt;br /&gt;
Grids have undergone some big changes under-the-hood. These are the visible changes:&lt;br /&gt;
&lt;br /&gt;
* There is a &amp;lt;b&amp;gt;new 3D/axonometric grid&amp;lt;/b&amp;gt;. It consists of three sets of parallel lines, one vertical and others at angles of +30 and -30 degrees from the horizontal. The angles of these two latter sets and the spacing of the grid are user-settable. &lt;br /&gt;
&lt;br /&gt;
* A new tab in the Document Properties dialog, &amp;lt;b&amp;gt;Grids&amp;lt;/b&amp;gt;, is devoted solely to grids; the former grid/guide tab is renamed &amp;lt;b&amp;gt;Guides&amp;lt;/b&amp;gt; and is now used only for guides. On the Grids page, you can create and manage grids of various types in your document; so far the two types available are Rectangular (default) and Axonometric, but more types may be added in the future.&lt;br /&gt;
&lt;br /&gt;
* More than one grid can be active at the same time:&lt;br /&gt;
:* Each grid can be enabled/disabled separately from the Document Properties dialog.&lt;br /&gt;
&lt;br /&gt;
* For each grid, you can hide it by unchecking the &amp;quot;Visible&amp;quot; checkbox in the grid's tab, or disable snapping to it by unchecking &amp;quot;Enabled&amp;quot;. Note that you can have &amp;quot;Enabled&amp;quot; on and &amp;quot;Visible&amp;quot; off (but not vice versa), in which case you snap to the invisible grid.&lt;br /&gt;
&lt;br /&gt;
* Multiple views on the same document (i.e. different Inkscape windows with the same document loaded) share the same grids, but the grid can be turned on and off for each view separately. For example, you could have a zoomed-out &amp;quot;overview&amp;quot; view without grids showing. 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. &lt;br /&gt;
&lt;br /&gt;
* The rectangular grid now has an option to show dots on gridline intersections instead of solid lines.&lt;br /&gt;
&lt;br /&gt;
From developer perspective:&lt;br /&gt;
* Implementation of new grids is much easier now by subclassing CanvasGrid. 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;
* Grid information is now stored in SVG as a child of sodipodi:namedview. Old files will be converted to this new format automatically.&lt;br /&gt;
* An old bug is fixed: apparently the origin of the document coordinate system used to be set to the origin of the grid. For example, in 0.45.1 and before, specifying a grid origin of (20,20) moved the origin or coordinates to that point, and the grid was still starting at (0,0) in this moved coordinate system. This is now disabled, and the coordinate origin is not affected by grid origin.&lt;br /&gt;
&lt;br /&gt;
==Angled guidelines==&lt;br /&gt;
&lt;br /&gt;
Now, Inkscape also provides angled guidelines! Double click on a guide to set its angle.&lt;br /&gt;
&lt;br /&gt;
*  When dragging a guideline off the rulers close to the end of the ruler, the guideline will automatically be angled. The angle is set depending on the grid.&lt;br /&gt;
** For the rectangular grid, the angle is 45 degrees.&lt;br /&gt;
** For the axonometric grid, the angle is matched to the grid. When '''Ctrl''' is pressed, the angle is perpendicular to the grid lines (useful for aligning gradients).&lt;br /&gt;
&lt;br /&gt;
==Creating guidelines from objects==&lt;br /&gt;
&lt;br /&gt;
* Selected objects can now be converted to guidelines. To do this, either use the menu command '''&amp;quot;Object-&amp;gt;Object to guides&amp;quot;''' or press '''Shift+G''' in Selector tool (this shortcut also works in some other tools, see below). The conversion process recurses into groups, i.e. all objects in the current selection are converted regardless if they are grouped or not.&lt;br /&gt;
&lt;br /&gt;
* Created guides can be quickly deleted by '''Ctrl'''+clicking on them (this is of course not restricted to guides created by the process described above). Note that this only works in Selector and Node tools, i.e., in contexts where guidelines can be manipulated with the mouse. &lt;br /&gt;
&lt;br /&gt;
* '''Paths''' are converted by creating one guide for each straight line segment occurring in the path (whereas curved segments are not taken into account). To make this conveniently accessible, the shortcut '''Shift+G''' works in Pen and Pencil tools, too.&lt;br /&gt;
&lt;br /&gt;
* For all other objects, conversion usually happens by placing the guidelines around the object's bounding box (use the corresponding checkbox in the &amp;quot;Tools&amp;quot; page of Inkscape Preferences to switch between geometric and visual bounding box).&lt;br /&gt;
&lt;br /&gt;
*For '''rectangles''' and '''3D boxes''' there is a special option in their preferences pages (checked by default) which instead allows the guidelines to be placed along the object's edges so that they imitate its true shape. This is especially useful when converting rotated or skewed rectangles (to create guidelines in a special position) or for creating 3D scenes containing other objects than just boxes. The shortcut '''Shift+G''' works in these tools as well.&lt;br /&gt;
&lt;br /&gt;
==Snapping==&lt;br /&gt;
&lt;br /&gt;
* Snapping has been implemented or improved for:&lt;br /&gt;
&lt;br /&gt;
:* '''Newly created shapes'''&lt;br /&gt;
&lt;br /&gt;
:* '''Skewing''' of objects&lt;br /&gt;
&lt;br /&gt;
:* '''Handles''' of objects, incl. '''gradients'''&lt;br /&gt;
&lt;br /&gt;
:* '''Images''', '''ellipses''', and '''clones'''&lt;br /&gt;
&lt;br /&gt;
:* Text boxes, which snap to '''text baselines''' again&lt;br /&gt;
&lt;br /&gt;
:* Objects, for which snapping now optionally considers the '''rotation center'''&lt;br /&gt;
&lt;br /&gt;
:* Objects, which now allow for '''constrained snapping'''&lt;br /&gt;
&lt;br /&gt;
:* '''Guides''', which now snap while dragging them&lt;br /&gt;
&lt;br /&gt;
:* '''Axonometric grids'''&lt;br /&gt;
&lt;br /&gt;
:* '''Angled guide lines'''&lt;br /&gt;
&lt;br /&gt;
:* '''Bounding boxes''', of which now all four corners snap&lt;br /&gt;
&lt;br /&gt;
* Other snapping fixes and improvements include:&lt;br /&gt;
&lt;br /&gt;
:* It is now possible to snap to '''intersections''' of e.g. gridlines with guidelines, and of line segments. &lt;br /&gt;
&lt;br /&gt;
:* The '''snapping preferences dialog''' has been restyled to make it more intuitive. &lt;br /&gt;
&lt;br /&gt;
:* Inkscape now has a global snapping toggle, which has been added to the view-menu and is accessible through a shortcut&lt;br /&gt;
&lt;br /&gt;
:* Inkscape now allows for controlling the snapping per grid when multiple grids are being used&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 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 time it takes to snap to objects using the selector tool has been reduced significantly.&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;
:* Only nodes at '''non-smooth parts''' of a path now snap.&lt;br /&gt;
&lt;br /&gt;
:* The confusing &amp;quot;Default transformations origin&amp;quot; option has been 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;
&lt;br /&gt;
=Import/Export=&lt;br /&gt;
&lt;br /&gt;
==PDF and AI import==&lt;br /&gt;
&lt;br /&gt;
In this version, Inkscape can natively (i.e. without any additional software) import PDF files and the newer PDF-based Adobe Illustrator files (starting from AI version 9.0). &lt;br /&gt;
&lt;br /&gt;
'''Implemented features''': The new import extension can import '''paths''', '''text''', '''clippaths''', '''masked or non-masked images''', and '''softmasks'''. It supports '''pattern fills''' (XStep and YStep attributes are ignored) as well as '''linear and radial gradients''' (only those using sampled or exponential functions). '''Gradient meshes''' are imported, but they get converted to groups of small tiles (flat-colored paths) that approximate the mesh; the user can adjust the precision of this approximation. &lt;br /&gt;
&lt;br /&gt;
'''PDF import settings''': After opening a PDF or AI document, the PDF Import Settings dialog shows up. Here you can select:&lt;br /&gt;
&lt;br /&gt;
* the '''page''' to be imported from a multipage PDF;&lt;br /&gt;
&lt;br /&gt;
* the overall '''clip region''' (which can be none or set to any of the PDF boxes, e.g. the crop box, the media box, the trim box, etc.);&lt;br /&gt;
&lt;br /&gt;
* the '''precision''' for the approximation of '''gradient meshes'''; note that setting this too high may result in a huge SVG file and slow performance when importing files with gradient meshes;&lt;br /&gt;
&lt;br /&gt;
* a checkbox controlling whether the '''images''' should be '''embedded''' into the resulting SVG document or saved on the current path;&lt;br /&gt;
&lt;br /&gt;
* a '''preview''' of the selected page (shown if poppler-cairo is present on the system or if the selected page has a thumbnail embedded into the PDF 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;
The native PDF/AI importer is based on the poppler library and was implemented by Miklós Erdélyi as part of the Google Summer of Code 2007.&lt;br /&gt;
&lt;br /&gt;
==PDF export==&lt;br /&gt;
&lt;br /&gt;
* A new cairo-based PDF exporter has been added to Inkscape (marked as &amp;quot;Cairo PDF&amp;quot; in the export format list). Inkscape 0.46 can export shapes, strokes, transparency, gradients, patterns, text, and images correctly to cairo. Clipping paths and masks are known to be faulty or missing. Also, unlike the old PDF exporter, the cairo-based PDF export produces compressed PDF files that are reasonably compact. 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, but it is highly recommended to use at least '''cairo 1.5.2''' for quality PDF export.&lt;br /&gt;
&lt;br /&gt;
* A new cairo-based PostScript exporter has been added (marked as &amp;quot;Cairo PS&amp;quot; in the export format list). The cairo PS backend is not as mature as the PDF backend. It rasterizes a lot of its content. Text output does not work where it works with the PDF backend.&lt;br /&gt;
&lt;br /&gt;
==CDR (CorelDraw) import==&lt;br /&gt;
&lt;br /&gt;
Inkscape can use [http://www.sk1project.org/modules.php?name=Products&amp;amp;product=uniconvertor UniConvertor] if it's installed on your system to import documents in CDR format (CorelDraw). This feature is Unix-only at this time and requires that you have Python and UniConvertor installed. As of UniConvertor 1.1.1, versions from 7 to X4 of the CDR format are supported, and text objects are not converted.&lt;br /&gt;
&lt;br /&gt;
==XAML import/export==&lt;br /&gt;
&lt;br /&gt;
* Inkscape can import vector graphics portions of XAML documents, as well as export its documents to XAML.&lt;br /&gt;
&lt;br /&gt;
==Adobe Illustrator SVG clean import==&lt;br /&gt;
&lt;br /&gt;
* Using this new import filter, Inkscape can open an SVG document removing any elements and attributes in the namespaces that Adobe Illustrator uses for its stuff.  This will clean out everything except the actual SVG content.&lt;br /&gt;
&lt;br /&gt;
==WMF import==&lt;br /&gt;
&lt;br /&gt;
Now Inkscape uses UniConvertor for opening WMF files, which results in three noticable changes:&lt;br /&gt;
&lt;br /&gt;
# imported files are editable now&lt;br /&gt;
# known rendering issues are resolved&lt;br /&gt;
# WMF import works on all platforms where UniConvertor works (including Windows)&lt;br /&gt;
&lt;br /&gt;
Text objects are not supported by UniConvertor as of version 1.1.1.&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;
== Open Clip Art Library import and export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape features a preliminary support for importing drawings from [http://openclipart.org/ Open Clip Art Library].&lt;br /&gt;
&lt;br /&gt;
After specifying account details in Preferences dialog (Import/Export tab) use 'File &amp;amp;gt; Import From Open Clip Art Library' command to open a dialog, then search for tags and pick one of the results to merge this found drawing into your document.&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;
* --query-all produces a comma delimited listing of all objects in the document, with their x, y, height, and width values.&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;
=User interface=&lt;br /&gt;
&lt;br /&gt;
== Dockable dialogs ==&lt;br /&gt;
&lt;br /&gt;
Inkscape's dialog handling has been reworked in this release to allow dialogs to behave like '''dockable panels'''. The dock area that holds the user's dialogs is located right of the canvas.&lt;br /&gt;
&lt;br /&gt;
Dialogs placed in the dock can easily be rearranged, resized, stacked in groups or iconified. Furthermore, a dialog can be dragged of the dock to become a floating dock in itself&amp;amp;mdash;this allows other dialogs to be dragged and dropped on it to form a floating group of dialogs.&lt;br /&gt;
&lt;br /&gt;
The old dialog behavior (used in releases before 0.46) has been preserved as an option, and if it is preferred, one can select it under ''Windows'' &amp;gt; ''Dialog behavior'' in the Inkscape preferences dialog.&lt;br /&gt;
&lt;br /&gt;
====Known issues====&lt;br /&gt;
&lt;br /&gt;
* Some of Inkscape's dialogs are yet to be adapted to allow docking, these include the &amp;quot;Text and Font&amp;quot; dialog, the &amp;quot;Tiled clones&amp;quot; dialog, the &amp;quot;XML editor&amp;quot; and the &amp;quot;Object properties&amp;quot; dialog.&lt;br /&gt;
&lt;br /&gt;
* Floating dialogs that are closed and later reopened might reappear on positions slightly different than their original ones.&lt;br /&gt;
&lt;br /&gt;
* Resizing dialogs that are placed in the dock can be a bit slow and quirky.&lt;br /&gt;
&lt;br /&gt;
* The total height of content the dock will in most cases remain the same when a dialog is closed/iconified, i.e. the remaining docked dialogs will fill the hole. This might not the desired behavior.&lt;br /&gt;
&lt;br /&gt;
====Settings====&lt;br /&gt;
&lt;br /&gt;
Three settings that control dockable dialogs behavior are present in the &amp;lt;code&amp;gt;preferences.xml&amp;lt;/code&amp;gt; file under a &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; group called &amp;lt;code&amp;gt;dock&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cancenterdock&amp;lt;/code&amp;gt;: controls if dialogs are allowed to be stacked on top of each other to be ordered in groups. Valid values are &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;dockbarstyle&amp;lt;/code&amp;gt;: controls what information is shown for iconified dockable dialogs. &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; = icons only, &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; = text only, &amp;lt;code&amp;gt;&amp;quot;2&amp;quot;&amp;lt;/code&amp;gt; = both icons and text. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;switcherstyle&amp;lt;/code&amp;gt;: controls what information is shown for grouped dockable dialogs. &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; = icons only, &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; = text only, &amp;lt;code&amp;gt;&amp;quot;2&amp;quot;&amp;lt;/code&amp;gt; = both icons and text.&lt;br /&gt;
&lt;br /&gt;
== Toolbars ==&lt;br /&gt;
&lt;br /&gt;
'''Main toolbar''' on the left can now optionally use '''smaller buttons'''. With the several new tools added in this version, this may help users with small screens where the toolbar otherwise may not fit vertically. The toggle is on the Misc tab of the Inkscape Preferences dialog.&lt;br /&gt;
&lt;br /&gt;
Switching to stock GTK+ toolbars. This allows for the main window to be made narrower, with toolbar items flowing into a popup menu as it is resized.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Swatches panel, color drag-and-drop ==&lt;br /&gt;
&lt;br /&gt;
* Right-clicking a color swatch now opens a context menu which allows you to apply the color to the fill or stroke of selection.&lt;br /&gt;
&lt;br /&gt;
* Dragging colors from the color palette has been fixed and improved:&lt;br /&gt;
&lt;br /&gt;
:* Now the dropped color is applied to '''the object on which you drop it''', regardless of whether that object is selected or not. This means you can change the color of only one object from selection without having to select it separately. (If you want to assign color to the entire selection, just click on the color swatch on the palette, not drag it.)&lt;br /&gt;
&lt;br /&gt;
:* If an object has stroke and you '''drop the color over stroke''', the color is applied to stroke and not fill. (Another way to always apply color to stroke is to '''Shift+drag''' it.)&lt;br /&gt;
&lt;br /&gt;
:* When gradient handles are active (e.g. in Gradient or Node tools), you can '''drop a color onto the gradient line''' to create a new gradient mid stop with this color, or '''drop a color onto an existing stop''' to recolor that stop.&lt;br /&gt;
&lt;br /&gt;
:* A new submenu has been added to affect the shape of the displayed swatches, allowing their preferred size to be made thinner or wider. Among other things, this allows for more to be seen on screen at once when made thinner.&lt;br /&gt;
&lt;br /&gt;
:* Sizing of the swatches has been corrected to be properly progressive, and now go form smaller to larger on all platforms.&lt;br /&gt;
&lt;br /&gt;
:* Space reserved for the scrollbar is no longer kept with smaller palettes shown in the bottom of the main UI. This allows for more working space when palettes with not many entries are selected at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
==Color gestures==&lt;br /&gt;
&lt;br /&gt;
A new method for quick and precise adjustment of colors is added in this version: color gestures. It works on the selected objects by grabbing the '''fill or stroke color swatch''' in the '''selected style indicator''' (on the left of the statusbar) and dragging it in various directions as described below. Note that this only works when the swatch displays a '''flat color'''; it does not work for a swatch showing &amp;quot;None&amp;quot;, &amp;quot;N/A&amp;quot;, or displaying a gradient (although you can select one or more gradient stops in Gradient tool and color-adjust them by color gestures just as you would do for objects). Color gestures can work on '''fill''' or '''stroke''', depending on which swatch in the selected color indicator you drag.&lt;br /&gt;
&lt;br /&gt;
Color gestures work in '''HSL''' color space. Dragging without any keyboard modifiers adjusts the '''hue''' channel, dragging with '''Shift''' adjusts '''saturation''', and dragging with '''Ctrl''' adjusts '''lightness'''.&lt;br /&gt;
&lt;br /&gt;
The adjustment is done by '''&amp;quot;rotating&amp;quot;''' the color swatch away from the original direction which is assumed to be '''NE at 45 degrees''' (i.e. from&lt;br /&gt;
the swatch diagonally into the document window). Once you click and drag the color swatch, imagine a diagonal line going from the point where you clicked in the NE direction, across the entire Inkscape window. By dragging '''below or to the right''' of that line, you decrease the corresponding color channel, to the minimum at the lower edge of the window; by dragging it above or to the left, you increase it, to the maximum at the left edge of the window. If you hover your mouse exactly over the 45 degrees line, the change will be zero.&lt;br /&gt;
&lt;br /&gt;
Note that you can easily vary the '''precision''' of your adjustment. If you drag close enough to the swatch, each small movement results in a big change of the color. If you need a finer adjustment, just drag farther away from the swatch, towards the center of the Inkscape window or even to its upper right corner, where minute movements will produce very small changes in the color. In fact, this method gives you more color precision than even the color wheel in the Fill and Stroke dialog, unless you expand that dialog to fill the entire screen which is rarely practical.&lt;br /&gt;
&lt;br /&gt;
The mouse '''cursor''' changes when you're doing color gestures, reflecting the channel currently adjusted and indicating the directions for increasing and decreasing the value. Also, watch the '''statusbar''' which will indicate, as you drag, the channel you are adjusting, the original value of that channel, the new value, and the difference. &lt;br /&gt;
&lt;br /&gt;
You can '''switch channels while you drag'''. That is, you don't need to &lt;br /&gt;
drag it again and again from the swatch if you want to adjust all three channels - you can do it all in one drag, by pressing and releasing Ctrl and Shift as necessary. Note that when you change the keyboard modifiers during drag, the position of the zero-change line is temporarily changed to go through the current mouse position; this is done so that there are no sudden changes in color if you are switching modifiers away from the original 45-degree line.&lt;br /&gt;
&lt;br /&gt;
The '''Alt''' modifier is special. Pressing Alt means &amp;quot;do nothing&amp;quot;; this allows you to move the mouse, without releasing, to a more convenient place from where to continue tweaking the color after letting go of Alt. As with the other modifiers, releasing Alt temporarily redefines the zero-change axis to go through the point where Alt was released. For example, imagine  you made your color darker by Ctrl+dragging towards the bottom edge of the window and you now need to make it less saturated. You cannot however Shift+drag it any lower because there's just not enough room for that. In that situation, without releasing the mouse, Alt+drag it upwards to a convenient spot and then Shift+drag downwards as needed. Also, you can start dragging from the swatch with Alt pressed to avoid changing the color while you take a more convenient position for adjustments.&lt;br /&gt;
&lt;br /&gt;
For example, you can select a green rectangle and first turn it into greenish-blue by dragging away from the Fill swatch and slightly above the 45 degrees line; then, without releasing the mouse, press Ctrl and drag a bit to the right to darken the color; then press Shift, release Ctrl, and adjust saturation. You can press or release Ctrl and Shift as many times as necessary during a single drag; when you are finally satisfied with your color, release the mouse to commit the change.&lt;br /&gt;
&lt;br /&gt;
Apart from precise adjustments, you can use color gestures to very quickly perform some common color transformations:&lt;br /&gt;
&lt;br /&gt;
* Ctrl+drag the swatch to the right and down to paint all selected objects black.&lt;br /&gt;
&lt;br /&gt;
* Ctrl+drag the swatch upwards and to the left to paint all selected objects white.&lt;br /&gt;
&lt;br /&gt;
* Shift+drag the swatch to the right and down to desaturate the color of selected objects.&lt;br /&gt;
&lt;br /&gt;
* Shift+drag the swatch upwards and to the left to maximize saturation of the color of selected objects. &lt;br /&gt;
&lt;br /&gt;
Note that when several objects or gradient stops with different colors are selected, the selected style indicator shows their '''averaged''' color. If you adjust that color by gesturing, the changed color will be assigned back to all selected objects/stops, in effect eliminating any difference between them. If you want to adjust many different-colored objects preserving their relative differences, use the color modes of the Tweak tool or color adjustment extension effects.&lt;br /&gt;
&lt;br /&gt;
This new technique requires some getting used to, but once you get the idea it is quite convenient, fast, and precise.&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;
== Preserving zoom/view of reverted documents ==&lt;br /&gt;
&lt;br /&gt;
When reverting files to their previously saved state, the current zoom factor/panning is now retained (as opposed to reverted to the saved state, too, as it was the case before). This less interrupts the workflow when one is working on some detail in the drawing.&lt;br /&gt;
&lt;br /&gt;
== Bounding box option moved ==&lt;br /&gt;
&lt;br /&gt;
The preferences option to select between &amp;quot;visual&amp;quot; and &amp;quot;geometric&amp;quot; bounding box was moved in Inkscape Preferences dialog from the &amp;quot;Selector&amp;quot; page to &amp;quot;Tools&amp;quot; page (since it applies more globally than just in Selector tool).&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;
== Using other keys in place of Alt ==&lt;br /&gt;
&lt;br /&gt;
* Many Linux users have found the use of '''Alt-drag''' and '''Alt+click''' in Inkscape problematical because this shortcut is often captured by window managers. In 0.46, instead of disabling of the window manager shortcut as suggested in [http://wiki.inkscape.org/wiki/index.php/FAQ#How_to_make_Alt.2Bclick_and_Alt.2Bdrag_work_on_Linux.3F the FAQ], you can change a setting in your preferences.xml file called &amp;lt;code&amp;gt;mapalt&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; group. This numerical value ranges from 1 to 5; 1 indicates no change, any other value refers to some special key on a keyboard, such as '''Alt Gr''', the '''Windows''' key, etc. The specific mapping of these values to the keys on your keyboard can be viewed and/or editied by '''xkeycaps''', available from [http://www.jwz.org/xkeycaps www.jwz.org]. The value associated with a particular key is shown in that program at the top of the screen beside the word &amp;quot;Modifiers&amp;quot; when the mouse is held over a key on the main display.&lt;br /&gt;
&lt;br /&gt;
== GTK theme on OS X ==&lt;br /&gt;
&lt;br /&gt;
A GTK theme is now included in Inkscape.app bundle on OS X. If the user does not have any personal customization (e.g. in a .gtkrc-2.0 file) this theme is used. It reflects the OS X settings for &amp;quot;Appearance&amp;quot; and &amp;quot;Highlight Color&amp;quot; set in System Preferences &amp;gt; Appearance.&lt;br /&gt;
&lt;br /&gt;
== Keyboard profiles ==&lt;br /&gt;
&lt;br /&gt;
New profiles have been added:&lt;br /&gt;
&lt;br /&gt;
* '''Corel DRAW X4''' (corel-draw-x4.xml)&lt;br /&gt;
* '''Zoner Draw 5''' (zoner-draw.xml)&lt;br /&gt;
* '''ACD Systems Canvas 11''' (acd-canvas.xml)&lt;br /&gt;
&lt;br /&gt;
Also, profile for Adobe Illustrator has been fixed and includes bindings for tools now.&lt;br /&gt;
&lt;br /&gt;
(To enable a profile, copy it into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; in the same directory, overwriting the old file. To restore the default Inkscape set, copy &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
=Other changes and 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;
* On the '''Scale''' tab of the '''Transform dialog''', the numbers now show the current size of selection, not size increment as before. Correspondingly, with the % unit chosen, you see 100% displayed, and to scale it up twice, you enter 200%, not 100% as before. This is a more intuitive behavior and it's more consistent with how the W/H controls work in the Selector tool. &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;
* The '''Shift''' tab of the '''Tile Clones''' dialog has two new options: '''Cumulate''': when checked, each tile is shifted by the normal amount plus the cumulative shifts of all previous tiles. This is useful when placing tiles that are being scaled by a uniform amount. '''Exlude tile''': when checked, the tile width or height is not automatically included in calculating the tile's shift. This is useful when using the dialog to place clones on a circle or spiral (rather than using a shift of -100%). It is also useful when positioning tiles using the '''Exponent''' parameter.&lt;br /&gt;
&lt;br /&gt;
* The '''Scale''' tab of the '''Tile Clones''' dialog has a new parameter: '''Base''' that allows placing tiles along a logarithmic spiral (as often found in nature). If the value is '''0''', the parameter is not used. Use a value less than one for a converging spiral and a value of greater than one for a diverging spiral. The actual scale is calculated as '''base''' raised to the nominal '''scale''' power.&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;
* 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;
* 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;
* Preferences have been added for setting the default metadata and licenses, so this information can be automatically filled in with new documents.&lt;br /&gt;
&lt;br /&gt;
* The built-in '''Potrace''' tracing engine is upgraded to version '''1.8''' with some minor bugs fixed.&lt;br /&gt;
&lt;br /&gt;
* File dialog windows (open/save) now have an '''Enable preview''' checkbox which allows you to disable the preview pane.&lt;br /&gt;
&lt;br /&gt;
* In the Calligraphic pen controls, the toggle button to enable tablet pressure sensitivity is moved to the Width control, and the button for tilt sensitivity is moved to Angle, to better reflect what parameters these toggles affect.&lt;br /&gt;
&lt;br /&gt;
* In Node and Gradient tools, using '''Tab/Shift+Tab''' to select next/previous node or gradient handle scrolls the canvas if necessary to show the selection. &lt;br /&gt;
&lt;br /&gt;
* The option '''Import bitmap as &amp;lt;image&amp;gt;''' is removed; it was added several versions ago to allow optionally importing images as rectangles with image pattern, to make clipping the images easier. Now that you can easily use clipping paths, as well as convert any image to rectangle with pattern with Alt+I, this option is not really necessary and removed to reduce confusion. Bitmaps are always imported into SVG as an &amp;lt;image&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
* Support has been added for stock patterns, in the same way that stock markers were already supported. Adding patterns to share/patterns/patterns.svg, and giving them a inkscape-stockid attribute as found on the examples already there will make them available in all Inkscape sessions from the patterns tab of the fill &amp;amp; stroke dialog.&lt;br /&gt;
&lt;br /&gt;
* New '''fontforge_glyph.svg''' template is added for font designers who draw glyphs in Inkscape and import them into FontFoge. It is 1000x1000px large and has a horizontal guide at 200px to mark border for descenders.&lt;br /&gt;
&lt;br /&gt;
* Save dialogs have been modified to clarify that they '''Save as SVG''', so people using Inkscape to edit PDF, EPS, and other file formats will be less confused at the default behavior when saving files.&lt;br /&gt;
&lt;br /&gt;
= Improvements for the Mac OS X version =&lt;br /&gt;
&lt;br /&gt;
* Inkscape 0.46 is officially released as a '''Universal''' (i386/ppc) binary for both OS X '''10.4 Tiger''' and '''10.5 Leopard'''.&lt;br /&gt;
&lt;br /&gt;
* Inkscape application bundle on '''Mac OS X''' now has the possibility to contain '''pre-compiled python modules''' (e.g. lxml, numpy, etc.) and to use them without requiring any work from the user. Since Python itself is shipped with Mac OS X, the user only has to drag and drop Inkscape on its hard-drive and all the extensions will be '''functional immediately'''.&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;
* A fix in the blur rendering code made '''exporting blurred objects to bitmap''' much faster and fixed the disappearing of blurred objects in exported bitmaps which happened for large objects in 0.45.  The same fix got rid of the rendering artefacts that sometimes appeared on blurred objects during scrolling. &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;
* On Windows, '''file opening/saving dialogs''' can no longer sink under the main editor window (they now have the inkscape window set correctly as their parent window).&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;
* '''Creative Commons Public Domain Declaration URI''' points to the 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;
* On Windows, the Inkscape uninstaller deleted all files under the install directory. This could lead to removing user-created files, or even other program files not related to inkscape if the install directory was C:\Program Files. The new uninstaller '''tracks all installed files and asks for confirmation before deleting any other files'''. However, installation and uninstallation process is now slower.&lt;br /&gt;
&lt;br /&gt;
* Clones were wrongly unlinked when their original was moved to another layer; fixed.&lt;br /&gt;
&lt;br /&gt;
* Previous versions had a problem on '''Windows Vista''' where selected menu item was invisible. Now our Windows builds use a newer version of GTK library which fixes this problem.&lt;br /&gt;
&lt;br /&gt;
* Duplicating empty text objects that have just been created no longer crashes. Also, the XML editor crash related to empty text objects is fixed. A downside is that the SVG will become cluttered with empty text objects as they are no longer automatically removed. A better fix for the problem is planned.&lt;br /&gt;
&lt;br /&gt;
* In Tile Clones dialog, the PMG symmetry group was created incorrectly; it is now fixed.&lt;br /&gt;
&lt;br /&gt;
* Serious usability issues with the font size field in the Text tool's controls bar have been fixed.&lt;br /&gt;
&lt;br /&gt;
* The rulers are now correctly scaled and will align nicely with document coordinates, with or without the scrollbars displayed.&lt;br /&gt;
&lt;br /&gt;
=Known Issues=&lt;br /&gt;
&lt;br /&gt;
* (LP: #180890) Blend modes do not work correctly over transparent    backgrounds. A workaround is to place an opaque rectangle underneath the bottom-most layer.&lt;br /&gt;
* (LP # 202704) Blur and other filters are very slow when applied to an object with transform= attribute with rotation or skew. To avoid this slowdown, either do not rotate/skew objects you use with filters, or apply filters only to paths (but not shapes to text) because paths, by default, get no transform= attribute when you rotate or skew them.&lt;br /&gt;
* Windows printing has two known issues. In both cases the workaround is to print to bitmap (Print -&amp;gt; Rendering -&amp;gt; Bitmap).&lt;br /&gt;
** (LP # 205732) Blurred objects are misaligned when printing.&lt;br /&gt;
** (LP # 208217) Masked objects disappear from the page when printing.&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>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.46&amp;diff=27054</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=27054"/>
		<updated>2008-04-02T00:25:38Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Other changes and improvements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Inkscape 0.46=&lt;br /&gt;
&lt;br /&gt;
Highlights 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;
* Live path effects&lt;br /&gt;
&lt;br /&gt;
* Color management&lt;br /&gt;
&lt;br /&gt;
* New SVG filters and UI&lt;br /&gt;
&lt;br /&gt;
* Native PDF and AI import&lt;br /&gt;
&lt;br /&gt;
* XAML import/export&lt;br /&gt;
&lt;br /&gt;
* Open Clip Art Library integration (import/export)&lt;br /&gt;
&lt;br /&gt;
* Stock patterns&lt;br /&gt;
&lt;br /&gt;
* Bitmap editing extension effects&lt;br /&gt;
&lt;br /&gt;
* Full on-canvas gradient editing&lt;br /&gt;
&lt;br /&gt;
* Engraver's Toolbox in the Calligraphic tool&lt;br /&gt;
&lt;br /&gt;
* Touch selection&lt;br /&gt;
&lt;br /&gt;
* Dockable dialogs&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;
* &amp;quot;3D&amp;quot; / axonometric grid&lt;br /&gt;
&lt;br /&gt;
* Angled guidelines&lt;br /&gt;
&lt;br /&gt;
* Conversion of objects to guidelines&lt;br /&gt;
&lt;br /&gt;
* Significant speed and interactivity improvements&lt;br /&gt;
&lt;br /&gt;
* Hundreds of smaller features and bugfixes&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 in order from top to bottom. Now the redraw always starts '''at your mouse cursor location''' and proceed upwards and downwards from it, so that the area near the cursor is always redrawn first. This significantly improves program's responsiveness in some situations. For example, when you are node-editing part of a complex path, the entire path needs to be redrawn on each change, but now this redraw starts from the point you're working on. Moreover, the redraw is interruptible, so each mouse movement starts new redraw from the mouse cursor area. As a result, during such operations those parts that you're working on redraw often and feel snappy and responsive, while areas further away may lag behind more.&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;
:'''Exporting drawings with blur''' was particularly slow in 0.45; some files could take hours to export. Now this is fixed, in part by the faster algorithm mentioned above and in part by a bugfix in the export code. Now even the quite complex files with large blurs export at high resolution in at most a few minutes.  &lt;br /&gt;
&lt;br /&gt;
* Minor improvements have been made to gradient rendering performance.&lt;br /&gt;
&lt;br /&gt;
* '''Dragging handles and nodes''' as well as '''dragging and transforming objects''' by mouse became more responsive, so that working in complex drawings and especially editing complex paths is noticeably easier. In particular, this fixes the annoying latency issue where a node or a handle could follow mouse cursor even after you release mouse button after a drag. &lt;br /&gt;
&lt;br /&gt;
* '''Moving objects, nodes, and gradient handles by cursor keys''' as well as '''scaling and rotating objects from keyboard''' and '''zooming by keys''' are much more responsive when working with complex slow-rendering objects. Now, if you press and hold a key, your selection/zoom level will quickly jump to the final position instead of going through all the intermediate steps as before. &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;
:* '''Redrawing the newly exposed parts of the canvas''' after scrolling, especially diagonal scrolling, is now faster because only the exposed areas are redrawn; before, this often resulted in the entire screen being redrawn which was much slower.&lt;br /&gt;
&lt;br /&gt;
:* Previously, if you started 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;
* Better responsiveness and more visual feedback in user interface: &lt;br /&gt;
&lt;br /&gt;
:*When you zoom, the '''zoom control''' on the right end of the statusbar now updates immediately, not after screen redraw as before. &lt;br /&gt;
&lt;br /&gt;
:*Many potentially slow commands (Save, Simplify, Combine, Break Apart and others) now display a '''busy cursor''' and flash a message in the statusbar (e.g. &amp;quot;Saving document...&amp;quot;) while they work. &lt;br /&gt;
&lt;br /&gt;
:*The '''statusbar messages''' displayed while you're drawing a shape or a path in Pen tool do not lag behind the mouse movements.&lt;br /&gt;
&lt;br /&gt;
* '''Combine''' and '''Convert to paths''' commands are now orders of magnitude faster when applied to a selection with hundreds or thousands of objects.&lt;br /&gt;
&lt;br /&gt;
* The time it takes to '''snap to objects''' using the selector tool has been reduced dramatically, which is most noticeable for snapping to complex paths.&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;
===How it works===&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 (or use the auto gap closing parameter, see below).&lt;br /&gt;
&lt;br /&gt;
===Style===&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). As in all other tools, the '''style swatch''' on the far right of the Controls bar shows the style that will be used for the next fill object you create.&lt;br /&gt;
&lt;br /&gt;
===Controls===&lt;br /&gt;
&lt;br /&gt;
In the tool's '''Controls bar''':&lt;br /&gt;
&lt;br /&gt;
* Paint Bucket's perceptual fill can use either all visible colors or specific color channels. Using the '''Fill by''' drop-down list, you can restrict the fill algorithm to one 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;
* The '''Threshold''' (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;
* Using the '''Grow/shrink by''' parameter, 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 much the same as the Outset and Inset path commands, except it's done automatically after every fill.&lt;br /&gt;
&lt;br /&gt;
* With the '''Close gaps''' parameter, you can make the Paint Bucket tool  ignore 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 (close gaps up to 2 pixels in size)&lt;br /&gt;
** Medium (4 pixels)&lt;br /&gt;
** Large (6 pixels)&lt;br /&gt;
:Note that setting this parameter to other than None may slow down noticeably the filling of large areas.&lt;br /&gt;
&lt;br /&gt;
===Shortcuts===&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 drawings which largely blurs the&lt;br /&gt;
distinction between vector and raster editing. Instead of meticulously selecting some&lt;br /&gt;
objects and then performing an action on the selection, you can now select ''all''&lt;br /&gt;
objects (or all objects you are interested in) and apply the Tweak tool's brush to&lt;br /&gt;
smoothly and naturally change the shape or style of only those objects (or parts&lt;br /&gt;
thereof) ''that the brush touches''.&lt;br /&gt;
&lt;br /&gt;
The area of the tool's action - its ''brush'' - is marked by an orange-colored circular&lt;br /&gt;
outline that moves with your mouse cursor. 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.&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 mode or paint it by Color Paint&lt;br /&gt;
mode. You can also apply it to groups of objects; it will go into groups and act on&lt;br /&gt;
individual objects inside groups. If you're trying to use it without anything selected,&lt;br /&gt;
it will remind you by a statusbar message to select some objects.&lt;br /&gt;
&lt;br /&gt;
===Width===&lt;br /&gt;
&lt;br /&gt;
The width of the tool's brush, in the range from 1 to 100, can be changed by the&lt;br /&gt;
'''Width''' control in the tool's controls bar above the canvas. You can also change&lt;br /&gt;
width by '''Left''' and '''Right''' arrow keys (same as in the Calligraphy tool) at any&lt;br /&gt;
time (including during action) as well as '''Home''' and '''End'''. Also, as in Calligraphy&lt;br /&gt;
tool, the visible width of the brush is independent of zoom; simply zooming in or out is&lt;br /&gt;
often easier than adjusting the width if you want to cover a smaller or larger area of&lt;br /&gt;
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, also in the&lt;br /&gt;
range from 1 to 100. You can also change width by '''Up''' and '''Down''' arrow keys at&lt;br /&gt;
any time (including during action).&lt;br /&gt;
&lt;br /&gt;
If you have a pressure-sensitive tablet and your &amp;quot;Use pressure&amp;quot; button on the right-hand&lt;br /&gt;
end of the controls bar is on, then the force will also depend on how hard you actually&lt;br /&gt;
press your pen into your tablet, changing in the range from zero to whatever you set in&lt;br /&gt;
the Force control. If all you have is a mouse, then the force will be constant but still&lt;br /&gt;
settable by the Force control. &lt;br /&gt;
&lt;br /&gt;
===Path editing modes===&lt;br /&gt;
&lt;br /&gt;
The Tweak tool has a number of '''modes''', selectable by toggle buttons in the tool's&lt;br /&gt;
Controls bar and by keyboard shortcuts. Some of these modes change the shapes of &lt;br /&gt;
paths while others affect the colors of objects. All these modes share the Width and&lt;br /&gt;
Force controls but otherwise are quite different. Let's look at the path editing modes&lt;br /&gt;
first.&lt;br /&gt;
&lt;br /&gt;
Unlike the Node tool, to edit paths with the Tweak tool you don't need to worry about&lt;br /&gt;
where the nodes of a path are and how to manipulate them. You just apply the tool's&lt;br /&gt;
brush to any point, and the selected paths at that point will reshape smoothly and&lt;br /&gt;
naturally - as if made of soft jelly - regardless of where its nodes lie. If applied to&lt;br /&gt;
a shape or text object, the tool converts them to paths automatically.&lt;br /&gt;
&lt;br /&gt;
While not very useful for technical drawings, tweaking paths will be indispensable for&lt;br /&gt;
artistic uses of Inkscape - cartoons, drawings, sketches, anime, etc. This new&lt;br /&gt;
functionality is somewhat similar to the tools such as &amp;quot;Pucker&amp;quot; and &amp;quot;Bloat&amp;quot; in the&lt;br /&gt;
latest versions of Adobe Illustrator. &lt;br /&gt;
&lt;br /&gt;
There are currently six path editing modes in the Tweak tool: '''Push''', '''Shrink''',&lt;br /&gt;
'''Grow''', '''Attract''', '''Repel''', 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 '''Shrink''' and '''Grow''' 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 (Shrink) or outwards (Grow). 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 Calligraphy pen 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 Shrink action where you want the lines to become thinner (and the hatching to become lighter), up until total disappearance. If you press hard, shrinking works as an eraser, so you can easily clean the strokes' ends to make them thin, sharp, and uniform. Conversely, applying Grow makes strokes wider (i.e. the hatching becomes darker).&lt;br /&gt;
&lt;br /&gt;
:Of course, shrinking and growing are useful not only for calligraphic strokes. Same as with Push, with Shrink and Grow you can '''sculpt''' any path, spawning smooth treacle-like appendages with Grow and carving holes with Shrink. Unlike the &amp;quot;node sculpting&amp;quot; mode in the Node tool, however, this does not require adding new nodes to the shape.&lt;br /&gt;
&lt;br /&gt;
* The '''Attract''' and '''Repel''' modes work by moving each affected point on a path towards (Attract) or from (Repel) the cursor point. In some cases this may look similar to Shrink and Grow, but the difference is that shrinking/growing moves paths perpendicularly to the path in each point, whereas attracting/repelling moves them to or from the cursor regardless of the path shape. These modes are similar to the Pinch effect in AI; you can use them for various central-symmetric distortions in parts of your paths.&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, shrinking, or growing 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;
See the screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.46-tweak-path.png] for a few examples of using the path editing modes of the Tweak tool.&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;
inflates 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 inflating 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;
====Known problems====&lt;br /&gt;
&lt;br /&gt;
Known problems with the path editing modes in Tweak tool:&lt;br /&gt;
&lt;br /&gt;
# they don't work on open paths (an open path becomes closed if you tweak it);&lt;br /&gt;
# they are rather slow; &lt;br /&gt;
# they quickly eat memory; and &lt;br /&gt;
# they are sometimes buggy - thin calligraphic strokes may suddenly disappear or change their shape drastically as you're shrinking or growing them.&lt;br /&gt;
&lt;br /&gt;
For (4), 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;
===Color editing modes===&lt;br /&gt;
&lt;br /&gt;
The '''Color Paint''' and '''Color Jitter''' modes, unlike the path editing modes,&lt;br /&gt;
change the colors of objects instead of their shapes. Yet they share enough common&lt;br /&gt;
features with the path editing modes to be part of the same tool: These modes also use&lt;br /&gt;
a circular soft-edged brush controlled by the Width and Force parameters on the Controls&lt;br /&gt;
bar and affected by the pen pressure (if you have a pressure-sensitive tablet).&lt;br /&gt;
&lt;br /&gt;
* '''Color Paint''' applies the style of the tool to the selected objects under the brush. The style of the tool is visible in the style swatch at the rightmost end of the tool's control bar; it can be changed by clicking on the color palette or by any other style assignment command, such as Fill and Stroke dialog. ('''Note''': unlike all other tools, in Tweak tool in Color Paint mode you cannot assign style directly to selected objects; any style-setting command changes the tool's style instead.)&lt;br /&gt;
&lt;br /&gt;
:The fill from the tool's style applies to the fills of the painted objects, and the stroke applies to the strokes. If the tool's style has no fill or no stroke, it won't affect fills or strokes, correspondingly. For example, if you want to color the fills of objects blue but leave their strokes untouched, assign blue fill to the tool's style (just click blue on the palette) but set its stroke to None (middle-click the Stroke swatch in the statusbar). Similarly, master opacity in the tool's style affects master opacities of the touched objects (if the O channel is on, see below).&lt;br /&gt;
&lt;br /&gt;
:This mode allows you to literally paint over objects, shifting their colors towards the target style of the tool. For example, if you paint with yellow fill over a blue-filled object, the object will become greenish blue, then green, then yellowish green, and end up being exactly the yellow color you're painting with. This speed of this gradual transition depends on both Force parameter and pen pressure; also, objects touched by the periphery of the brush are less affected than those hit by the brush center. Overall, using this tool is very similar to a soft brush in a raster editor such as Gimp or Photoshop.&lt;br /&gt;
&lt;br /&gt;
* '''Color Jitter''' mode does not apply any color, but instead jitters (randomizes) the colors of the objects it touches. The force of the action determines how strong is the randomization, i.e. how far the colors deviate from the original values. This mode does not use the tool's style.&lt;br /&gt;
&lt;br /&gt;
Both modes work on flat fills and gradients; for gradients, the tool takes into account not only the position of the entire object with gradient, but also the position of each gradient stop relative to the brush. This means that, for example, you can change the blue color only in an object filled with blue-red gradient simply by painting over its blue end with a brush small enough to not touch the red. (Note that color tweaking does not create gradients on objects that used flat color before, but only adjusts existing gradients in the drawing.)&lt;br /&gt;
&lt;br /&gt;
See the screenshot at [http://inkscape.org/screenshots/gallery/inkscape-0.46-tweak-color.png] for a few examples of using the color editing modes of the Tweak tool.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Channels====&lt;br /&gt;
&lt;br /&gt;
Color Paint and Color Jitter honor the '''Channels''' control. This control comprises&lt;br /&gt;
the four buttons: '''H''', '''S''', '''L''', and '''O''', which allow you to turn on and off&lt;br /&gt;
the tool's action on the object's hue, saturation, lightness, and opacity,&lt;br /&gt;
correspondingly. For example, if you want to raise the saturation of some part of your&lt;br /&gt;
drawing without changing the hue, select some maximum-saturation color (e.g. pure red)&lt;br /&gt;
and turn off all Channels buttons except S. Similarly, you can replace the hues without&lt;br /&gt;
affecting saturation or lightness (only H pressed), or lighten/darken all colors without&lt;br /&gt;
changing their hues and saturation (only L pressed). Pressing O allows you to apply the&lt;br /&gt;
master opacity from the tool's style to the master opacity of objects (but not fill or&lt;br /&gt;
stroke opacity).&lt;br /&gt;
&lt;br /&gt;
====Usage notes====&lt;br /&gt;
&lt;br /&gt;
Color painting with Tweak tool is similar, but not exactly analogous to bitmap&lt;br /&gt;
painting. Even though the tool itself works as a soft brush, it still applies its color&lt;br /&gt;
to vector objects, which behave as vector objects usually do. For example, if you want&lt;br /&gt;
to change the tint of the face in your drawing, and if a hand in the drawing is part of&lt;br /&gt;
the same object as the face, that hand will change its tint too even if it's located far&lt;br /&gt;
from the point you are painting. (We foresee a &amp;quot;fracture&amp;quot; command in one of the next&lt;br /&gt;
versions of Inkscape which will help you turn a monolithic object into a mosaic of small&lt;br /&gt;
fragments that will be then easy to paint with Tweak tool.)  Still, even with this&lt;br /&gt;
limitation, color painting is a novel way of dealing with vector drawings which allows&lt;br /&gt;
you to quickly and intuitively make adjustments which would be awkward and slow with&lt;br /&gt;
traditional approach.&lt;br /&gt;
&lt;br /&gt;
Drawings containing patterns or scatterings of small independent objects are best suited&lt;br /&gt;
for color painting with Tweak tool. Examples include:&lt;br /&gt;
&lt;br /&gt;
* freehand drawings with Calligraphy pen, consisting of many separate strokes;&lt;br /&gt;
&lt;br /&gt;
* gradient meshes imported from Adobe Illustrator files (Inkscape renders these meshes as lattices of small polygons; while there's no direct support for gradient meshes in Inkscape yet, color painting on such lattices is almost as good);&lt;br /&gt;
&lt;br /&gt;
* text converted to paths and with Break Apart command applied so that each letter is a separate path;&lt;br /&gt;
&lt;br /&gt;
* patterns made with the Tile Clones command; note that you need to unset the fill and/or stroke on the original object and use the Color tab to assign some initial color to the clones - this will make them paintable with the Tweak tool without unlinking.&lt;br /&gt;
&lt;br /&gt;
Moreover, color tweaking can be useful for compositions with a few objects or even for&lt;br /&gt;
single objects. Unlike all other color selection methods, painting with the Tweak tool&lt;br /&gt;
implements the ''color mixing'' metaphor which is much more familiar to traditional&lt;br /&gt;
artists than RGB sliders or even the color wheel. For example, start with a rectagle of&lt;br /&gt;
pure blue color; then, pick different colors by Color Paint and apply light touches with&lt;br /&gt;
minimum Force and minimum pen pressure: add a little green, a little brown, a little&lt;br /&gt;
yellow, etc. until you have the exact hue you need. Similarly, you can whiten or blacken&lt;br /&gt;
any hue by admixing white or black.&lt;br /&gt;
&lt;br /&gt;
You can also use color tweaking to add a tint, darken/lighten, saturate/desaturate, or&lt;br /&gt;
color jitter your entire drawing. Just select all in all layers, zoom out, choose a&lt;br /&gt;
large brush width so it covers all of the drawing, and apply a little color tweaking&lt;br /&gt;
(with minimum Force) that will therefore affect all visible objects.&lt;br /&gt;
&lt;br /&gt;
===Keyboard shortcuts===&lt;br /&gt;
&lt;br /&gt;
* '''W''', '''Shift+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+S''': switch to the Shrink mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+G''': switch to the Grow mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+A''': switch to the Attract mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+E''': switch to the Repel mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+R''': switch to the Roughen mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+C''': switch to the Color Paint mode&lt;br /&gt;
&lt;br /&gt;
* '''Shift+J''': switch to the Color Jitter 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 Shrink (while Ctrl is down)&lt;br /&gt;
&lt;br /&gt;
* '''Shift+Ctrl+mouse drag''': temporarily switch to Grow (while Shift+Ctrl is down)&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 create drawings or objects that appear three-dimensional. The new '''3D box tool''' helps you create such drawings by automating the most common operation: creating a box in a given 3D 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; Shift+drag without releasing the mouse button to extrude in Z direction.&lt;br /&gt;
&lt;br /&gt;
* Adjust any of its 3 dimensions by handles. The 4 handles on the front X/Y side resize it, the four ones on the back X/Y side expand/contract the box in Z direction. With Shift, the functions of handles on front and back sides are reversed. With Ctrl, the side-resizing handles snap to the coordinate axes or diagonals.&lt;br /&gt;
&lt;br /&gt;
* Move a 3D box &amp;quot;in perspective&amp;quot; by dragging its center; without modifiers, movement occurs within the XY-plane (press Ctrl to constrain the movement to the directions of the coordinate axes or diagonals), with Shift the box moves parallel to the Z-axis.&lt;br /&gt;
&lt;br /&gt;
* Adjust the vanishing points of a perspective by dragging them on the canvas (see below) or toggling their states; all boxes sharing this perspective are affected by a vanishing point move. &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;
In SVG, a 3D box is represented as a '''group''' (svg:g) with a special extension attribute (in Inkscape's 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;
===Keyboard shortcuts===&lt;br /&gt;
&lt;br /&gt;
* '''X''', '''Shift+F4''': switch to the 3D box tool&lt;br /&gt;
&lt;br /&gt;
* The various kinds of parentheses, namely '''[''' ''']''', '''(''' ''')''', '''{''' '''}''', can be used to rotate infinite (i.e., parallel) perspective lines in X-, Y-, and Z-direction, respectively. Closing parentheses rotate clockwise and opening parentheses rotate counterclockwise. The angle of rotation is taken from the preferences. Pressing '''Alt''' reduces the amount of rotation to 1 screen pixel.&lt;br /&gt;
&lt;br /&gt;
* When the 3D box tool is active, '''Shift+X''', '''Shift+Y''', and '''Shift+Z''' toggle perspective lines in the corresponding direction between &amp;quot;converging&amp;quot; and &amp;quot;parallel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Gradient Tool==&lt;br /&gt;
===Selecting multiple stops===&lt;br /&gt;
'''More than one gradient stop''' can be selected at a time. Shortcuts for working with multiple stop selections are generally modeled on the Node tool. &lt;br /&gt;
* Add a stop to the selected stops by '''Shift+click'''.&lt;br /&gt;
* Press '''Ctrl+A''' to select all stops in the selected objects.&lt;br /&gt;
* '''Shift+drag''' around stops to add them to selection.&lt;br /&gt;
Multiple selected stops:&lt;br /&gt;
*Can be moved together by '''mouse drag''' or by '''arrow keys'''. For example, creating a linear gradient, then press Ctrl+A to select all stops and use arrow keys to move the entire gradient as a whole.&lt;br /&gt;
*Can be deleted at the same time by pressing '''Del'''.&lt;br /&gt;
An always up-to-date description of the current handle selection is provided in the statusbar in the Gradient tool, including the number of selected handles (and the type of the single selected handle), as well as the total number of handles and selected objects.&lt;br /&gt;
&lt;br /&gt;
===Editing intermediate stops===&lt;br /&gt;
'''Intermediate stops''' in gradients can be added, deleted, and edited on canvas (previously this was only possible in the Gradient Editor dialog).&lt;br /&gt;
*Stops can be added by '''double clicking''' or by '''Ctrl+Alt+Click''' on the gradient line. Also, you can '''drag-and-drop''' a color from the palette onto the gradient line to create a new stop with this color. Dropping a color on an existing stop changes the color of that stop.&lt;br /&gt;
*When two or more adjacent stops are selected, pressing '''Ins''' adds stops in the middles of all selected stop intervals.&lt;br /&gt;
*Intermediate stops can be '''mousedrag'''ged or moved by '''arrow keys''' along their gradient line, within the limits of the adjacent unselected stops (or end handles). &lt;br /&gt;
:*Dragging with '''Ctrl''' moves the selected stops snapping them to 1/10 fractions of the available range.&lt;br /&gt;
:*Dragging with '''Alt''' moves the selected stops depending on how close each one is to the stop being dragged, using a smooth bell-like curve similar to the node sculpting feature in Node tool. This makes it easy to approximate different gradient profiles; for example, if you have a two-stop gradient that you want to shape according to a curve profile, select both ends of the gradient, press '''Ins''' a few times to add a number of intermediate nodes, then '''Alt+drag''' a node in the middle to smoothly profile the gradient.&lt;br /&gt;
*Stops can also be moved by '''arrow keys''' with all the regular modifiers ('''Shift''' for 10x movement, '''Alt''' for pixel-size movement at the current zoom, '''Shift+Alt''' for 10 pixels movement at the current zoom).&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;
*Pressing '''Ctrl+L''' with some intermediate stops selected attempts to ''simplify'' the selected portion of the gradient, removing those stops that can be removed without too much change in the way the gradient looks. In particular, new stops created by double-clicking or pressing Ins initially do not change the appearance of the gradient, so if you press Ctrl+L, all redundant stops that weren't moved or repainted since creation will be deleted.&lt;br /&gt;
&lt;br /&gt;
===Style of gradient stops===&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;
*When one or more gradient stops are selected, using the Copy command ('''Ctrl+C''') copies to the clipboard the style (color and opacity) of the selected stop or the averaged style of several selected stops, not the entire object with gradient as before. This means you can now copy/paste style between stops: select the source stop(s), copy, select the destination stop(s), paste style ('''Ctrl+Shift+V'''). With several selected stops, this also allows you to easily average their colors and opacities by copying them and pasting the style back onto them. (After that, redundant gradient stops can be removed by simplification with '''Ctrl+L''').&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;
===Automatic duplication of gradients===&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). The Duplicate button is therefore removed. &lt;br /&gt;
&lt;br /&gt;
However, to accommodate the needs of users who have relied on sharing the same gradient definition across objects, this behavior can be optionally suppressed. The '''Prevent sharing of gradient definitions''' checkbox on the Misc tab of Inkscape Preferences is by default checked; if you uncheck it, Inkscape does not automatically copy gradient definitions for new objects, which means that copy/pasting, duplicating, pasting style, and explicit assignment of a gradient to an object via the Gradient tool controls results in a shared gradient definition, so that changing the colors or mid-stop positions of the gradient on one object (but not changing the coordinates of the end handles) affects all other objects that share the same definition.&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), as well as to '''-1/3''', '''-1/2''', '''-1''', '''-2''', '''-3''', etc. This way you can, for example, mirror any object around one of the edges of its box. (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;
&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;
* As a long-requested feature, two entry fields are added to the toolbar which allow precise editing of the coordinates of selected nodes.&lt;br /&gt;
&lt;br /&gt;
==Rectangle Tool==&lt;br /&gt;
&lt;br /&gt;
* '''Ctrl+dragging''' now also allows the creation of rectangles with sides constrained to the '''golden ratio''' (approx. 1 : 1.618034), not only integer ratios.&lt;br /&gt;
&lt;br /&gt;
==Ellipse Tool==&lt;br /&gt;
&lt;br /&gt;
* It is now easy to create ellipses/circles passing through particular points. Normally, the starting and ending point of the mouse drag mark the corners of the '''bounding box'''. Now the '''Alt''' modifier can be used to enlarge the ellipse so that its '''circumference''' passes through these two points.&lt;br /&gt;
&lt;br /&gt;
* '''Ctrl+Alt+drag''' is an exception from this rule. It creates a perfect circle whose diameter is defined by the starting and ending point of the drag.&lt;br /&gt;
&lt;br /&gt;
==Pen/Pencil Tools==&lt;br /&gt;
&lt;br /&gt;
These tools can now create '''single dots''' by '''Ctrl+click''' on the canvas. This creates a small circle filled with the current stroke color. The radius can be set in the Preferences of the respective tools (it is specified as a multiple of the current stroke width). '''Shift+Ctrl+click''' creates a dot twice the specified size, and '''Alt+Ctrl+click''' varies the size of the created dots randomly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Dropper Tool==&lt;br /&gt;
&lt;br /&gt;
The shortcut 'D' is now used to &amp;lt;i&amp;gt;toggle&amp;lt;/i&amp;gt; (not just switch to) the dropper tool - much like space is used to toggle the selector tool. That is, pressing 'D' a second time switches back to the tool used before.&lt;br /&gt;
&lt;br /&gt;
=SVG features=&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;
==SVG 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 '''feColorMatrix''' filter primitive applies a matrix transformation to colour of each rendered pixel. This allows for effects like turning object to grayscale, modifying colour saturation and changing colour hue.&lt;br /&gt;
&lt;br /&gt;
* The '''feComposite''' filter primitive composites two images using one of the [http://en.wikipedia.org/wiki/Porter-Duff Porter-Duff blending modes] (described in paper Compositing Digital Images by T. Porter and T. Duff, published in SIGGRAPH '84 Conference Proceedings, Association for Computing Machinery, Volume 18, Number 3, July 1984) or the aritmetic mode described in SVG standard. Porter-Duff blending modes are essentially logical operations between the images. For example, xor mode shows the areas, where either one of the objects is, but not the areas where both of the objects are. Arithmetic mode lets you specify coefficients k1-k4 for blending equation (result colour) = k1 * (first input colour) * (second input colour) + k2 * (first input colour) + k3 * (second input colour) + k4.&lt;br /&gt;
&lt;br /&gt;
* The '''feConvolveMatrix''' lets you specify a [http://en.wikipedia.org/wiki/Convolution Convolution] to be applied on the image. Common effects created using convolution matrices are blur, sharpening, embossing and edge detection. There's a fairly good explanation and some example matrices at [http://www.gamedev.net/reference/programming/features/imageproc/page2.asp www.gamedev.net/reference/programming/features/imageproc/page2.asp]. Note that while gaussian blur can be created using this filter primitive, the special gaussian blur primitive is faster and resolution-independent.&lt;br /&gt;
&lt;br /&gt;
* Filter primitives '''feDiffuseLighting''' and '''feSpecularLighting''' create lighting maps for the object in input image. SVG doesn't have concept of third dimension, so these filters use alpha channel of input image as a height map: the more opaque given point in input image is, the nearer spectator it is considered to be. There exists an example for using these in Inkscape distribution, in share/examples/lighting_effects.svg or [http://inkscape.svn.sourceforge.net/viewvc/*checkout*/inkscape/inkscape/trunk/share/examples/lighting_effects.svg?revision=15523 in SVN]&lt;br /&gt;
&lt;br /&gt;
* The '''feDisplacementMap''' filter primitive displaces the pixels in the first input using the second input as a displacement map, that shows from how far the pixel should come from. Classical examples are whirl and pinch effects, that can be found in most image manipulation programs and even in some screensavers, where this kind off effect is moving around screen, twisting desktop beneath it.&lt;br /&gt;
&lt;br /&gt;
* The '''feFlood''' filter primitive fills its region with a given color and opacity. It can be used as an auxiliary tool, usualy in combination with other filter primitives, in order to facilitate some common color handling operations.&lt;br /&gt;
&lt;br /&gt;
* The '''feImage''' filter primitive allows using external images as part of filtering chain. For example, one could use external image as a displacement map for feDisplacementMap or as a height map for lighting effects. Note that while SVG standard allows using other parts of the SVG file in this filter primitive, the current Inkscape implementation only allows external images.&lt;br /&gt;
&lt;br /&gt;
* The '''feMerge''' filter primitive composites several temporary images inside the filter primitive to a single image. It uses normal alpha compositing for this. This is equivalent to using several feBlend primitives in 'normal' mode or several feComposite primitives in 'over' -mode.&lt;br /&gt;
&lt;br /&gt;
* The '''feMorphology''' filter primitive provides erode and dilate effects, that are common in image manipulation programs. With erode, darker and more transparent areas spread to lighter and more opaque areas, whereas with dilate lighter and more opaque areas spread to darker and more transparent areas. For single-colour objects, this basically means, erode makes the object thinner and dilate makes it thicker.&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, where the shadow is in a slightly different position than the actual object.&lt;br /&gt;
&lt;br /&gt;
* The '''feTurbulence''' filter primitive renders [http://en.wikipedia.org/wiki/Perlin_noise Perlin noise]. This kind of noise is useful in simulating several nature phenomena like clouds, fire and smoke and in generating complex textures like marble or granite.&lt;br /&gt;
&lt;br /&gt;
See also wiki page [[Filter Effects]] for more info on filters in Inkscape in general.&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 (LPE)=&lt;br /&gt;
&lt;br /&gt;
'''Live path effects''' (not to be confused with extension effects or SVG filters) are a new way to &amp;lt;b&amp;gt;non-destructively modify path and shape objects&amp;lt;/b&amp;gt;. Path effects affect the path data of an object but not its style. The original path is preserved and can be edited directly on-canvas, and the path effect applied to it will be updated live. &lt;br /&gt;
&lt;br /&gt;
In this version, we include several path effects that are analogous to the corresponding extension effects (such as Path along Path effect and Pattern along Path that replaces the extension of the same name). The most important advantage of path effects is that they are, indeed, live - you can still edit the original path and the effect will update in real time (unlike the extension effects which were one-time one-way transformations). In the future, we plan to reimplement most if not all of path-changing extensions as live path effects.&lt;br /&gt;
&lt;br /&gt;
Live path effects were developed by Johan Engelen as part of the GSoC 2007.&lt;br /&gt;
&lt;br /&gt;
==Details about operation==&lt;br /&gt;
The following schematic tries to explain how LPE work.&lt;br /&gt;
&lt;br /&gt;
    original style  ------------&amp;gt;  output style&lt;br /&gt;
    original path   --&amp;gt;  LPE  --&amp;gt;  output path&lt;br /&gt;
                          ^&lt;br /&gt;
                          |&lt;br /&gt;
                      parameters&lt;br /&gt;
&lt;br /&gt;
The original style and path are from the path that the effect is applied on. The output is what is visible on screen. What is very important to notice is that &amp;lt;b&amp;gt;output style equals original style&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameters can be paths, numbers, points, text, in principle anything.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Applying effects==&lt;br /&gt;
Path effects are applied through the Path Effects dialog (opened from the Path menu, or by pressing Ctrl+Shift+7. This dialog is also used for controlling the effect's parameters and for removing effects.&lt;br /&gt;
&lt;br /&gt;
When a path with a path effect applied is selected, the statusbar description mentions that, for example &amp;quot;'''Path''' (4 nodes, path effect)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There is a special Paste Path Effect command (Ctrl+7) that can be used to copy effects from one path to another.&lt;br /&gt;
&lt;br /&gt;
==Editing effect parameters==&lt;br /&gt;
When switching to the node edit tool (&amp;lt;b&amp;gt;F2&amp;lt;/b&amp;gt;), the &amp;lt;b&amp;gt;original path&amp;lt;/b&amp;gt; can be edited. The original path is shown as a red helper path. Normal path operations, like simplify, still work.&lt;br /&gt;
&lt;br /&gt;
Some parameters of effects can be edited on-canvas. For example, path parameters can be node-edited, by pressing the &amp;quot;edit on-canvas&amp;quot; button in the Path Effects dialog. &amp;lt;b&amp;gt;Press &amp;quot;7&amp;quot; to cycle through the different on-canvas editable parameters.&amp;lt;/b&amp;gt; This way, one can edit the parameters without opening the Path Effects dialog. The statusbar tells the name of the parameters that is currently being shown.&lt;br /&gt;
&lt;br /&gt;
==Available effects==&lt;br /&gt;
&lt;br /&gt;
===Path along path===&lt;br /&gt;
The &amp;lt;b&amp;gt;Path along Path&amp;lt;/b&amp;gt; effect can curve a path along another path. When this effect is applied to a path, it can be bend along another path (called ''bend path''). With the node edit tool, both the original path and the bend path can be changed &amp;lt;b&amp;gt;on-canvas&amp;lt;/b&amp;gt; and the result is &amp;lt;b&amp;gt;updated live&amp;lt;/b&amp;gt;. This provides a direct equivalent of &amp;quot;vector brushes&amp;quot; or &amp;quot;skeletal strokes&amp;quot; features in other vector editors. &lt;br /&gt;
&lt;br /&gt;
In the effect's control panel in the Path Effects dialog, you can select how many copies of the original path are put along the bend path (either '''single''' or '''repeated''') and whether it is '''stretched''' to fill the bend path. In this dialog you'll also find a button to edit the bend path on-canvas and a button to '''paste''' a new bend path from clipboard. A possible workflow is this: you select and copy the new bend path to the clipboard, then select the path you want to bend, apply the Path along path effect, and paste the bend path with the paste button next to 'bend path'.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-pathalongpath.svg&lt;br /&gt;
&lt;br /&gt;
===Pattern along path===&lt;br /&gt;
The &amp;lt;b&amp;gt;Pattern along Path&amp;lt;/b&amp;gt; effect can curve a path along another path. When this effect is applied to path A (called ''skeleton''), another path B (called ''pattern'') can then be passed as a parameter. The result is that path B is bent along path A. With the node edit tool, path A can be changed &amp;lt;b&amp;gt;on-canvas&amp;lt;/b&amp;gt; and the result is &amp;lt;b&amp;gt;updated live&amp;lt;/b&amp;gt;. This provides a direct equivalent of &amp;quot;vector brushes&amp;quot; or &amp;quot;skeletal strokes&amp;quot; features in other vector editors. &lt;br /&gt;
&lt;br /&gt;
In the effect's control panel in the Path Effects dialog, you can select how many copies of the pattern are attached (either '''single''' or '''repeated''') and whether the pattern is '''stretched''' to fill the skeleton path. You can also choose the pattern for the selected skeleton [either directly or] by '''pasting''' it from clipboard (that is, you select and copy to the clipboard the pattern, then select the skeleton, apply the Path along path effect, and paste the pattern). The '''Scale width''' parameter allows you to change the width of the pattern applied to the path.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-pathalongpath.svg&lt;br /&gt;
&lt;br /&gt;
===Stitch Subcurves===&lt;br /&gt;
The &amp;lt;b&amp;gt;Stitch Subcurves&amp;lt;/b&amp;gt; effect connects points from two subpaths of the path with straight line or curved segments, i.e. the &amp;lt;i&amp;gt;stitches&amp;lt;/i&amp;gt;. It looks a lot like the Effect Lines from Expression 3. The result is also referred to as &amp;quot;String Art&amp;quot;. For some examples of string art, see http://members.shaw.ca/jillbritton/string_art/jbstringart.htm. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;b&amp;gt;shape&amp;lt;/b&amp;gt; of the &amp;lt;b&amp;gt;connecting paths&amp;lt;/b&amp;gt; can controlled by the &amp;lt;b&amp;gt;stroke path&amp;lt;/b&amp;gt; parameter. This could be used to draw 'hair-shaped' connecting paths with sharp end-tips. Other controls include the &amp;lt;b&amp;gt;number of paths&amp;lt;/b&amp;gt;, the variation in spacing between the connecting paths (&amp;lt;b&amp;gt;clustering&amp;lt;/b&amp;gt;) and also whether the start and end points of the stitches should like exactly on the original subcurves or can &amp;lt;b&amp;gt;stray randomly&amp;lt;/b&amp;gt; around them. Finally the width of the stroke path can be varied.&lt;br /&gt;
&lt;br /&gt;
Note that this effect can only be applied to a path with two subpaths in it, hence '&amp;lt;b&amp;gt;sub&amp;lt;/b&amp;gt;curve' in the name. Use Path &amp;gt; Combine to create such a path from two separate paths.&lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-curvestitch.svg&lt;br /&gt;
&lt;br /&gt;
===Gears===&lt;br /&gt;
The &amp;lt;b&amp;gt;Gears&amp;lt;/b&amp;gt; effect is a toy effect. It generates a chain of interconnected gears from the path that has the effect applied to it. The nodes of the path define the centers of the gears. The first 3 nodes are special; the first defines the start angle of the chain, the second defines the center of the first gear and the third knot specifies the radius of the first gear. That is, to create a chain of 2 gears, you will need a path with 4 nodes; for 3 gears, 5 nodes, and so on. &lt;br /&gt;
&lt;br /&gt;
Example file: live-path-effects-gears.svg&lt;br /&gt;
&lt;br /&gt;
==Development of new effects==&lt;br /&gt;
One of the goals of the Summer of Code project was to make it easy to create new effects. There is a framework that greatly simplifies effect implementation; very little code is needed to get the effect hooked into Inkscape. This leaves valuable time for the actual effect to be implemented. See the http://wiki.inkscape.org/wiki/index.php/MakingLivePathEffects wiki page for an explanation of how to get started with your own effect!&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 '''Modify Path &amp;gt; Edge 3D''' extension creates black, grey and white paths around a shape, then blurs and clips them for a 3D effect.&lt;br /&gt;
&lt;br /&gt;
* The new '''Generate from Path &amp;gt; Dimensions''' extension creates CAD style dimensions that are basically arrows with lengths equal to selection's bounding box and captions representing length.&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 new '''Color &amp;gt; Randomize''' extension allows you to change the color via hue, saturation and lightness check boxes. This is useful if you want to colorize lots of shapes at the same time.&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;
*The '''Generate Template &amp;gt; Perfect-Bound Cover''' extension creates templates for wraparound covers for perfect-bound books using US size and paper weight measurements.   This extension will resize the document to include the width, height, spine width, and bleed measurements that are provided to the extensions, so it should be the first operation done before designing.&lt;br /&gt;
&lt;br /&gt;
== XSLT effects ==&lt;br /&gt;
&lt;br /&gt;
* '''XSLT''' is now supported for input, output and effect extensions.  This is used to support the XAML file format (both import and export) and the Adobe Illustrator SVG import which removes Adobe's stuff from SVG.&lt;br /&gt;
&lt;br /&gt;
== ImageMagick effects ==&lt;br /&gt;
&lt;br /&gt;
New raster operations available through the effects drop-down menu, powered by the ImageMagick library. For any of these effects to work, you need to have an '''image object selected''' in the drawing. &lt;br /&gt;
&lt;br /&gt;
* '''Adaptive Threshold''' applies adaptive thresholding to the bitmap. Average color of rectangle provided by '''width''' and '''height''' used as threshold value. Use '''offset''' to apply a different threshold than the average.&lt;br /&gt;
&lt;br /&gt;
* '''Add Noise''' adds random noise of certain types to the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Blur''' blurs the bitmap, using '''radius''' as the amount of blur. Higher radius means more blur. (Note that unlike the vector Gaussian blur of objects, this bitmap blur will not extend the edges of the image, so it may appear truncated at the edges.)&lt;br /&gt;
&lt;br /&gt;
* '''Channel''' extracts the specified channel from the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Charcoal''' applies a charcoal drawing style to a bitmap. Radius controls the width (or detail) of charcoal strokes. Higher '''radius''' means lower detail. '''Sigma''': the higher it is, the less defined the charcoal is.&lt;br /&gt;
&lt;br /&gt;
* '''Colorize''' overlays the bitmap with a given color at a given intensity.&lt;br /&gt;
&lt;br /&gt;
* '''Contrast''' lightly enhances the contrast (difference between lights and darks) of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Cycle Colormap''' cycles the colormap of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Despeckle''' reduce the speckle noise in a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Edge''' hilights edges in a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Emboss''' embosses a bitmap, hilighting edges with 3D effect.&lt;br /&gt;
&lt;br /&gt;
* '''Enhance''' enhance a bitmap, minimizing noise.&lt;br /&gt;
&lt;br /&gt;
* '''Equalize''' equalizes a bitmap. Histogram equalization.&lt;br /&gt;
&lt;br /&gt;
* '''Flop''' mirrors a bitmap, reflecting each scanline in the horizontal direction.&lt;br /&gt;
&lt;br /&gt;
* '''Gaussian Blur''' blurs a bitmap, more strongly than regular blur.&lt;br /&gt;
&lt;br /&gt;
* '''Implode''' sucks everything towards the center of the bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Level''' scales values falling between the given '''Black Point''' to '''White Point''' range to the full color range.&lt;br /&gt;
&lt;br /&gt;
* '''Level Channel''' acts the same way as level but for only one channel.&lt;br /&gt;
&lt;br /&gt;
* '''Median Filter''' filters a a bitmap by replacing each pixel component with the median color in a circular neighborhood&lt;br /&gt;
&lt;br /&gt;
* '''Modulate''' adjusts the percent hue, saturation, and brightness of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Negate''' takes the inverse of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Normalize''' normalizes a bitmap, expanding color range to the full possible range of color.&lt;br /&gt;
&lt;br /&gt;
* '''Oil Paint''' stylizes a bitmap so that it appears to be painted with oils.&lt;br /&gt;
&lt;br /&gt;
* '''Opacity''' modifies the opacity channel of a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Raise''' alters the lightness of the edges of a bitmap to create a raised appearance, much like a frame.&lt;br /&gt;
&lt;br /&gt;
* '''Reduce Noise''' reduces noise in a bitmap by using a noise peak elimination filter.&lt;br /&gt;
&lt;br /&gt;
* '''Shade''' shades a bitmap by simulating a distant light source&lt;br /&gt;
&lt;br /&gt;
* '''Sharpen''' sharpens a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Solarize''' solarizes a bitmap, like overexposing photographic film.&lt;br /&gt;
&lt;br /&gt;
* '''Spread''' randomly spread pixels in a bitmap within the radius of '''amount'''.&lt;br /&gt;
&lt;br /&gt;
* '''Swirl''' swirls the bitmap around the center point.&lt;br /&gt;
&lt;br /&gt;
* '''Threshold''' thresholds a bitmap.&lt;br /&gt;
&lt;br /&gt;
* '''Unsharpmask''' sharpens a bitmap using an unsharp mask algorithm.&lt;br /&gt;
&lt;br /&gt;
* '''Wave''' alters a bitmap along the sine wave.&lt;br /&gt;
&lt;br /&gt;
These effects are part of the Google Summer of Code 2007, coded by Christopher Brown.&lt;br /&gt;
&lt;br /&gt;
== Misc ==&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;
* A new parameter, '''precision''' is added to the parameter definitions in the [[MakingAnINX|inx file format]], allowing you to set the number of digits in that parameter's spinbutton in the effect UI.&lt;br /&gt;
&lt;br /&gt;
= Stock patterns =&lt;br /&gt;
&lt;br /&gt;
Since a few versions ago, Inkscape supports patterns in fill and stroke. However, up to now the only way to apply a pattern was by creating it in the document using the Object(s) to Pattern command, which wasn't very convenient. Now, if you switch an object's fill or stroke to pattern using the Fill&amp;amp;Stroke dialog, you will get a drop-down list with a number of predefined '''stock patterns''' that you can apply simply by selecting them from the list:&lt;br /&gt;
&lt;br /&gt;
*A selection of plain '''stripes''' differing by the ratio of the stripe width to gap width (for example, the &amp;quot;Stripes 1:2&amp;quot; pattern has gaps twice as wide as stripes), in the range from 4:1 to 1:64. All stripes patterns are in two versions: with black stripes and with white stripes (gaps are always transparent).&lt;br /&gt;
&lt;br /&gt;
*Two '''checkerboard''' patterns with black and white odd squares (even squares are transparent)&lt;br /&gt;
&lt;br /&gt;
*'''Packed circles''': a hexagonal pattern of black circles with transparent gaps.&lt;br /&gt;
&lt;br /&gt;
*'''Polka dots''': a scattering of dots designed to look randomly but evenly distributed so as to mask the regularity of the repeating pattern. There are three size variants of this pattern (small, medium, and large dots) and two color variants (black and white dots).&lt;br /&gt;
&lt;br /&gt;
*'''Wavy''' is a pattern of wavy lines.&lt;br /&gt;
&lt;br /&gt;
*'''Camouflage''' is a green-toned protective pattern such as that used by the military.&lt;br /&gt;
&lt;br /&gt;
*'''Ermine''' is the traditional heraldic pattern representing stylized stoat furs with black tails.&lt;br /&gt;
&lt;br /&gt;
*Three bitmap patterns: '''sand''', '''cloth''', and '''old paint''' are based on seamless photographic tiles and allow you to add some natural texture to your drawing. All of them are grayscale, so you can make objects with these textures semitransparent and overlay them over other colored objects to &amp;quot;texturize&amp;quot; them. &lt;br /&gt;
&lt;br /&gt;
After applying a stock pattern, switch to Node tool to edit the location, scale, and rotation of the pattern via on-canvas handles.&lt;br /&gt;
&lt;br /&gt;
All stock patterns are stored in the file &amp;lt;code&amp;gt;patterns/patterns.svg&amp;lt;/code&amp;gt; in Inkscape's &amp;lt;code&amp;gt;share&amp;lt;/code&amp;gt; directory (typically &amp;lt;code&amp;gt;/usr/share/inkscape&amp;lt;/code&amp;gt; on Linux, &amp;lt;code&amp;gt;&amp;lt;i&amp;gt;inkscape-dir&amp;lt;/i&amp;gt;/share&amp;lt;/code&amp;gt; on Windows). You can add your own patterns to this file or replace it with any other SVG file containing the patterns you need.&lt;br /&gt;
&lt;br /&gt;
=Markers=&lt;br /&gt;
&lt;br /&gt;
* A new command, '''Objects to Marker''', was added to the Object menu. It converts the current selection into a marker. After you do it, the selection is deleted, but the list of markers in the Fill and Stroke dialog, Stroke style tab, now contains the new marker that you can apply to paths. &lt;br /&gt;
&lt;br /&gt;
:* When creating the new marker, Inkscape assumes that the original objects are oriented as they should be on a horizontal path that goes from left to right. For example, if you create a new arrowhead that you plan to use as an end marker, make it point horizontally to the right before converting it to marker. &lt;br /&gt;
&lt;br /&gt;
:* Similar to standard markers, the user-created marker will scale up and down as you change the stroke width. Its initial size (i.e. the size of the object that you have turned into a marker) corresponds to the 1 px stroke.&lt;br /&gt;
&lt;br /&gt;
:* When you create a new marker, Inkscape uses the rotation center of the (first) selected object as the anchor point, i.e. the point which will coincide with the node to which that marker is attached. By default, the rotation center is in the center of the object's bounding box, which means the newly created marker will be centered around its node. If you move the rotation center, for example, to one of the corners of the object, the new marker will touch its node by that corner.&lt;br /&gt;
&lt;br /&gt;
* Several new '''UML markers''' were added to the standard set, including filled and hollow diamonds and triangles.&lt;br /&gt;
&lt;br /&gt;
* '''Master opacity''' did not apply to path markers as it should; this is fixed.&lt;br /&gt;
&lt;br /&gt;
* '''Stock markers''', if used in the document, now appear in the &amp;quot;this document's markers&amp;quot; section at the top of the marker lists in the Fill &amp;amp; Stroke dialog.  Before, any markers with stock IDs (including markers modified by the user) were hidden, making it difficult to work with modified stock markers.&lt;br /&gt;
&lt;br /&gt;
=Color management=&lt;br /&gt;
&lt;br /&gt;
== Calibrated SVG color including CMYK ==&lt;br /&gt;
&lt;br /&gt;
Inkscape now supports color-managed color definitions that use a colorspace other than sRGB (for example Adobe RGB, or calibrated CMYK colors). In the SVG file, this is done using the&lt;br /&gt;
optional &amp;quot;icc-color(...)&amp;quot; paint components as described in section 11.2 &amp;quot;Specifying paint&amp;quot; of the SVG 1.1 specification&lt;br /&gt;
[http://www.w3.org/TR/SVG11/painting.html#SpecifyingPaint]. A fallback sRGB value will be used, for non color-managed workflows. This allows for the use of calibrated color spaces, including using CMYK values that are preserved across applications.&lt;br /&gt;
&lt;br /&gt;
The new CMS color selector tab allows these colors to be edited.&lt;br /&gt;
&lt;br /&gt;
== Display adjustment ==&lt;br /&gt;
&lt;br /&gt;
In Inkscape Preferences, Color Management tab, there's are new options for enabling display adjustment; you can select any calibration profile (an ICC file) suitable for your display. Options for rendering intent can also be chosen.&lt;br /&gt;
&lt;br /&gt;
=== Per-window adjustment ===&lt;br /&gt;
Display adjustment is enabled and disabled per each editing window. This allows for simultaneous viewing of adjusted and unadjusted views of a single document by using multiple windows. There is a toggle at the bottom-right corner of the scrollbars that allows for turning on and off display adjustment. It also will be disabled to provide visible feedback when no profile is set to be available for adjustment.&lt;br /&gt;
&lt;br /&gt;
=== XICC Support ===&lt;br /&gt;
On X11-based systems (i.e. Unix and Mac OSX), use of [[http://www.burtonini.com/computing/x-icc-profiles-spec-latest.html ICC Profiles In X Specification]] (or XICC) can be enabled. Support for version 0.2 of this specification has been implemented. Enabling this option by choosing to retrieve profiles from the display will switch Inkscape to using profiles attached to screens at runtime. These allow display adjustment to be changed on the fly, and to be set and cleared per-monitor. This is especially helpful with more than a single monitor.&lt;br /&gt;
&lt;br /&gt;
Other Open Source software such as [http://www.gimp.org/ GIMP] support XICC. This allows all aware applications to be adjusted by setting a profile only once.&lt;br /&gt;
&lt;br /&gt;
=== Multi-monitor aware ===&lt;br /&gt;
When XICC support is enabled, windows will adjust to the proper profile as they are moved across monitors. Also, as the windows are moved onto monitors with no profile attached, the adjustment toggle will become disabled. When the windows are moved onto screens that do have profiles, the toggle will become enabled.&lt;br /&gt;
&lt;br /&gt;
== Soft Proofing ==&lt;br /&gt;
&lt;br /&gt;
In Inkscape Preferences, Color Management tab, there's a new option for enabling output device preview; you can select any calibration profile (an ICC file) suitable for your output device. Options for rendering intent can also be chosen, along with out of gamut warnings.&lt;br /&gt;
&lt;br /&gt;
== OS support ==&lt;br /&gt;
&lt;br /&gt;
Сolor management is supported in Linux and Mac OS X only at this time.&lt;br /&gt;
&lt;br /&gt;
=Grids, guides, snapping=&lt;br /&gt;
&lt;br /&gt;
==Grids==&lt;br /&gt;
Grids have undergone some big changes under-the-hood. These are the visible changes:&lt;br /&gt;
&lt;br /&gt;
* There is a &amp;lt;b&amp;gt;new 3D/axonometric grid&amp;lt;/b&amp;gt;. It consists of three sets of parallel lines, one vertical and others at angles of +30 and -30 degrees from the horizontal. The angles of these two latter sets and the spacing of the grid are user-settable. &lt;br /&gt;
&lt;br /&gt;
* A new tab in the Document Properties dialog, &amp;lt;b&amp;gt;Grids&amp;lt;/b&amp;gt;, is devoted solely to grids; the former grid/guide tab is renamed &amp;lt;b&amp;gt;Guides&amp;lt;/b&amp;gt; and is now used only for guides. On the Grids page, you can create and manage grids of various types in your document; so far the two types available are Rectangular (default) and Axonometric, but more types may be added in the future.&lt;br /&gt;
&lt;br /&gt;
* More than one grid can be active at the same time:&lt;br /&gt;
:* Each grid can be enabled/disabled separately from the Document Properties dialog.&lt;br /&gt;
&lt;br /&gt;
* For each grid, you can hide it by unchecking the &amp;quot;Visible&amp;quot; checkbox in the grid's tab, or disable snapping to it by unchecking &amp;quot;Enabled&amp;quot;. Note that you can have &amp;quot;Enabled&amp;quot; on and &amp;quot;Visible&amp;quot; off (but not vice versa), in which case you snap to the invisible grid.&lt;br /&gt;
&lt;br /&gt;
* Multiple views on the same document (i.e. different Inkscape windows with the same document loaded) share the same grids, but the grid can be turned on and off for each view separately. For example, you could have a zoomed-out &amp;quot;overview&amp;quot; view without grids showing. 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. &lt;br /&gt;
&lt;br /&gt;
* The rectangular grid now has an option to show dots on gridline intersections instead of solid lines.&lt;br /&gt;
&lt;br /&gt;
From developer perspective:&lt;br /&gt;
* Implementation of new grids is much easier now by subclassing CanvasGrid. 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;
* Grid information is now stored in SVG as a child of sodipodi:namedview. Old files will be converted to this new format automatically.&lt;br /&gt;
* An old bug is fixed: apparently the origin of the document coordinate system used to be set to the origin of the grid. For example, in 0.45.1 and before, specifying a grid origin of (20,20) moved the origin or coordinates to that point, and the grid was still starting at (0,0) in this moved coordinate system. This is now disabled, and the coordinate origin is not affected by grid origin.&lt;br /&gt;
&lt;br /&gt;
==Angled guidelines==&lt;br /&gt;
&lt;br /&gt;
Now, Inkscape also provides angled guidelines! Double click on a guide to set its angle.&lt;br /&gt;
&lt;br /&gt;
*  When dragging a guideline off the rulers close to the end of the ruler, the guideline will automatically be angled. The angle is set depending on the grid.&lt;br /&gt;
** For the rectangular grid, the angle is 45 degrees.&lt;br /&gt;
** For the axonometric grid, the angle is matched to the grid. When '''Ctrl''' is pressed, the angle is perpendicular to the grid lines (useful for aligning gradients).&lt;br /&gt;
&lt;br /&gt;
==Creating guidelines from objects==&lt;br /&gt;
&lt;br /&gt;
* Selected objects can now be converted to guidelines. To do this, either use the menu command '''&amp;quot;Object-&amp;gt;Object to guides&amp;quot;''' or press '''Shift+G''' in Selector tool (this shortcut also works in some other tools, see below). The conversion process recurses into groups, i.e. all objects in the current selection are converted regardless if they are grouped or not.&lt;br /&gt;
&lt;br /&gt;
* Created guides can be quickly deleted by '''Ctrl'''+clicking on them (this is of course not restricted to guides created by the process described above). Note that this only works in Selector and Node tools, i.e., in contexts where guidelines can be manipulated with the mouse. &lt;br /&gt;
&lt;br /&gt;
* '''Paths''' are converted by creating one guide for each straight line segment occurring in the path (whereas curved segments are not taken into account). To make this conveniently accessible, the shortcut '''Shift+G''' works in Pen and Pencil tools, too.&lt;br /&gt;
&lt;br /&gt;
* For all other objects, conversion usually happens by placing the guidelines around the object's bounding box (use the corresponding checkbox in the &amp;quot;Tools&amp;quot; page of Inkscape Preferences to switch between geometric and visual bounding box).&lt;br /&gt;
&lt;br /&gt;
*For '''rectangles''' and '''3D boxes''' there is a special option in their preferences pages (checked by default) which instead allows the guidelines to be placed along the object's edges so that they imitate its true shape. This is especially useful when converting rotated or skewed rectangles (to create guidelines in a special position) or for creating 3D scenes containing other objects than just boxes. The shortcut '''Shift+G''' works in these tools as well.&lt;br /&gt;
&lt;br /&gt;
==Snapping==&lt;br /&gt;
&lt;br /&gt;
* Snapping has been implemented or improved for:&lt;br /&gt;
&lt;br /&gt;
:* '''Newly created shapes'''&lt;br /&gt;
&lt;br /&gt;
:* '''Skewing''' of objects&lt;br /&gt;
&lt;br /&gt;
:* '''Handles''' of objects, incl. '''gradients'''&lt;br /&gt;
&lt;br /&gt;
:* '''Images''', '''ellipses''', and '''clones'''&lt;br /&gt;
&lt;br /&gt;
:* Text boxes, which snap to '''text baselines''' again&lt;br /&gt;
&lt;br /&gt;
:* Objects, for which snapping now optionally considers the '''rotation center'''&lt;br /&gt;
&lt;br /&gt;
:* Objects, which now allow for '''constrained snapping'''&lt;br /&gt;
&lt;br /&gt;
:* '''Guides''', which now snap while dragging them&lt;br /&gt;
&lt;br /&gt;
:* '''Axonometric grids'''&lt;br /&gt;
&lt;br /&gt;
:* '''Angled guide lines'''&lt;br /&gt;
&lt;br /&gt;
:* '''Bounding boxes''', of which now all four corners snap&lt;br /&gt;
&lt;br /&gt;
* Other snapping fixes and improvements include:&lt;br /&gt;
&lt;br /&gt;
:* It is now possible to snap to '''intersections''' of e.g. gridlines with guidelines, and of line segments. &lt;br /&gt;
&lt;br /&gt;
:* The '''snapping preferences dialog''' has been restyled to make it more intuitive. &lt;br /&gt;
&lt;br /&gt;
:* Inkscape now has a global snapping toggle, which has been added to the view-menu and is accessible through a shortcut&lt;br /&gt;
&lt;br /&gt;
:* Inkscape now allows for controlling the snapping per grid when multiple grids are being used&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 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 time it takes to snap to objects using the selector tool has been reduced significantly.&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;
:* Only nodes at '''non-smooth parts''' of a path now snap.&lt;br /&gt;
&lt;br /&gt;
:* The confusing &amp;quot;Default transformations origin&amp;quot; option has been 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;
&lt;br /&gt;
=Import/Export=&lt;br /&gt;
&lt;br /&gt;
==PDF and AI import==&lt;br /&gt;
&lt;br /&gt;
In this version, Inkscape can natively (i.e. without any additional software) import PDF files and the newer PDF-based Adobe Illustrator files (starting from AI version 9.0). &lt;br /&gt;
&lt;br /&gt;
'''Implemented features''': The new import extension can import '''paths''', '''text''', '''clippaths''', '''masked or non-masked images''', and '''softmasks'''. It supports '''pattern fills''' (XStep and YStep attributes are ignored) as well as '''linear and radial gradients''' (only those using sampled or exponential functions). '''Gradient meshes''' are imported, but they get converted to groups of small tiles (flat-colored paths) that approximate the mesh; the user can adjust the precision of this approximation. &lt;br /&gt;
&lt;br /&gt;
'''PDF import settings''': After opening a PDF or AI document, the PDF Import Settings dialog shows up. Here you can select:&lt;br /&gt;
&lt;br /&gt;
* the '''page''' to be imported from a multipage PDF;&lt;br /&gt;
&lt;br /&gt;
* the overall '''clip region''' (which can be none or set to any of the PDF boxes, e.g. the crop box, the media box, the trim box, etc.);&lt;br /&gt;
&lt;br /&gt;
* the '''precision''' for the approximation of '''gradient meshes'''; note that setting this too high may result in a huge SVG file and slow performance when importing files with gradient meshes;&lt;br /&gt;
&lt;br /&gt;
* a checkbox controlling whether the '''images''' should be '''embedded''' into the resulting SVG document or saved on the current path;&lt;br /&gt;
&lt;br /&gt;
* a '''preview''' of the selected page (shown if poppler-cairo is present on the system or if the selected page has a thumbnail embedded into the PDF 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;
The native PDF/AI importer is based on the poppler library and was implemented by Miklós Erdélyi as part of the Google Summer of Code 2007.&lt;br /&gt;
&lt;br /&gt;
==PDF export==&lt;br /&gt;
&lt;br /&gt;
* A new cairo-based PDF exporter has been added to Inkscape (marked as &amp;quot;Cairo PDF&amp;quot; in the export format list). Inkscape 0.46 can export shapes, strokes, transparency, gradients, patterns, text, and images correctly to cairo. Clipping paths and masks are known to be faulty or missing. Also, unlike the old PDF exporter, the cairo-based PDF export produces compressed PDF files that are reasonably compact. 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, but it is highly recommended to use at least '''cairo 1.5.2''' for quality PDF export.&lt;br /&gt;
&lt;br /&gt;
* A new cairo-based PostScript exporter has been added (marked as &amp;quot;Cairo PS&amp;quot; in the export format list). The cairo PS backend is not as mature as the PDF backend. It rasterizes a lot of its content. Text output does not work where it works with the PDF backend.&lt;br /&gt;
&lt;br /&gt;
==CDR (CorelDraw) import==&lt;br /&gt;
&lt;br /&gt;
Inkscape can use [http://www.sk1project.org/modules.php?name=Products&amp;amp;product=uniconvertor UniConvertor] if it's installed on your system to import documents in CDR format (CorelDraw). This feature is Unix-only at this time and requires that you have Python and UniConvertor installed. As of UniConvertor 1.1.1, versions from 7 to X4 of the CDR format are supported, and text objects are not converted.&lt;br /&gt;
&lt;br /&gt;
==XAML import/export==&lt;br /&gt;
&lt;br /&gt;
* Inkscape can import vector graphics portions of XAML documents, as well as export its documents to XAML.&lt;br /&gt;
&lt;br /&gt;
==Adobe Illustrator SVG clean import==&lt;br /&gt;
&lt;br /&gt;
* Using this new import filter, Inkscape can open an SVG document removing any elements and attributes in the namespaces that Adobe Illustrator uses for its stuff.  This will clean out everything except the actual SVG content.&lt;br /&gt;
&lt;br /&gt;
==WMF import==&lt;br /&gt;
&lt;br /&gt;
Now Inkscape uses UniConvertor for opening WMF files, which results in three noticable changes:&lt;br /&gt;
&lt;br /&gt;
# imported files are editable now&lt;br /&gt;
# known rendering issues are resolved&lt;br /&gt;
# WMF import works on all platforms where UniConvertor works (including Windows)&lt;br /&gt;
&lt;br /&gt;
Text objects are not supported by UniConvertor as of version 1.1.1.&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;
== Open Clip Art Library import and export ==&lt;br /&gt;
&lt;br /&gt;
Inkscape features a preliminary support for importing drawings from [http://openclipart.org/ Open Clip Art Library].&lt;br /&gt;
&lt;br /&gt;
After specifying account details in Preferences dialog (Import/Export tab) use 'File &amp;amp;gt; Import From Open Clip Art Library' command to open a dialog, then search for tags and pick one of the results to merge this found drawing into your document.&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;
* --query-all produces a comma delimited listing of all objects in the document, with their x, y, height, and width values.&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;
=User interface=&lt;br /&gt;
&lt;br /&gt;
== Dockable dialogs ==&lt;br /&gt;
&lt;br /&gt;
Inkscape's dialog handling has been reworked in this release to allow dialogs to behave like '''dockable panels'''. The dock area that holds the user's dialogs is located right of the canvas.&lt;br /&gt;
&lt;br /&gt;
Dialogs placed in the dock can easily be rearranged, resized, stacked in groups or iconified. Furthermore, a dialog can be dragged of the dock to become a floating dock in itself&amp;amp;mdash;this allows other dialogs to be dragged and dropped on it to form a floating group of dialogs.&lt;br /&gt;
&lt;br /&gt;
The old dialog behavior (used in releases before 0.46) has been preserved as an option, and if it is preferred, one can select it under ''Windows'' &amp;gt; ''Dialog behavior'' in the Inkscape preferences dialog.&lt;br /&gt;
&lt;br /&gt;
====Known issues====&lt;br /&gt;
&lt;br /&gt;
* Some of Inkscape's dialogs are yet to be adapted to allow docking, these include the &amp;quot;Text and Font&amp;quot; dialog, the &amp;quot;Tiled clones&amp;quot; dialog, the &amp;quot;XML editor&amp;quot; and the &amp;quot;Object properties&amp;quot; dialog.&lt;br /&gt;
&lt;br /&gt;
* Floating dialogs that are closed and later reopened might reappear on positions slightly different than their original ones.&lt;br /&gt;
&lt;br /&gt;
* Resizing dialogs that are placed in the dock can be a bit slow and quirky.&lt;br /&gt;
&lt;br /&gt;
* The total height of content the dock will in most cases remain the same when a dialog is closed/iconified, i.e. the remaining docked dialogs will fill the hole. This might not the desired behavior.&lt;br /&gt;
&lt;br /&gt;
====Settings====&lt;br /&gt;
&lt;br /&gt;
Three settings that control dockable dialogs behavior are present in the &amp;lt;code&amp;gt;preferences.xml&amp;lt;/code&amp;gt; file under a &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; group called &amp;lt;code&amp;gt;dock&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cancenterdock&amp;lt;/code&amp;gt;: controls if dialogs are allowed to be stacked on top of each other to be ordered in groups. Valid values are &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;dockbarstyle&amp;lt;/code&amp;gt;: controls what information is shown for iconified dockable dialogs. &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; = icons only, &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; = text only, &amp;lt;code&amp;gt;&amp;quot;2&amp;quot;&amp;lt;/code&amp;gt; = both icons and text. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;switcherstyle&amp;lt;/code&amp;gt;: controls what information is shown for grouped dockable dialogs. &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; = icons only, &amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; = text only, &amp;lt;code&amp;gt;&amp;quot;2&amp;quot;&amp;lt;/code&amp;gt; = both icons and text.&lt;br /&gt;
&lt;br /&gt;
== Toolbars ==&lt;br /&gt;
&lt;br /&gt;
'''Main toolbar''' on the left can now optionally use '''smaller buttons'''. With the several new tools added in this version, this may help users with small screens where the toolbar otherwise may not fit vertically. The toggle is on the Misc tab of the Inkscape Preferences dialog.&lt;br /&gt;
&lt;br /&gt;
Switching to stock GTK+ toolbars. This allows for the main window to be made narrower, with toolbar items flowing into a popup menu as it is resized.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Swatches panel, color drag-and-drop ==&lt;br /&gt;
&lt;br /&gt;
* Right-clicking a color swatch now opens a context menu which allows you to apply the color to the fill or stroke of selection.&lt;br /&gt;
&lt;br /&gt;
* Dragging colors from the color palette has been fixed and improved:&lt;br /&gt;
&lt;br /&gt;
:* Now the dropped color is applied to '''the object on which you drop it''', regardless of whether that object is selected or not. This means you can change the color of only one object from selection without having to select it separately. (If you want to assign color to the entire selection, just click on the color swatch on the palette, not drag it.)&lt;br /&gt;
&lt;br /&gt;
:* If an object has stroke and you '''drop the color over stroke''', the color is applied to stroke and not fill. (Another way to always apply color to stroke is to '''Shift+drag''' it.)&lt;br /&gt;
&lt;br /&gt;
:* When gradient handles are active (e.g. in Gradient or Node tools), you can '''drop a color onto the gradient line''' to create a new gradient mid stop with this color, or '''drop a color onto an existing stop''' to recolor that stop.&lt;br /&gt;
&lt;br /&gt;
:* A new submenu has been added to affect the shape of the displayed swatches, allowing their preferred size to be made thinner or wider. Among other things, this allows for more to be seen on screen at once when made thinner.&lt;br /&gt;
&lt;br /&gt;
:* Sizing of the swatches has been corrected to be properly progressive, and now go form smaller to larger on all platforms.&lt;br /&gt;
&lt;br /&gt;
:* Space reserved for the scrollbar is no longer kept with smaller palettes shown in the bottom of the main UI. This allows for more working space when palettes with not many entries are selected at smaller sizes.&lt;br /&gt;
&lt;br /&gt;
==Color gestures==&lt;br /&gt;
&lt;br /&gt;
A new method for quick and precise adjustment of colors is added in this version: color gestures. It works on the selected objects by grabbing the '''fill or stroke color swatch''' in the '''selected style indicator''' (on the left of the statusbar) and dragging it in various directions as described below. Note that this only works when the swatch displays a '''flat color'''; it does not work for a swatch showing &amp;quot;None&amp;quot;, &amp;quot;N/A&amp;quot;, or displaying a gradient (although you can select one or more gradient stops in Gradient tool and color-adjust them by color gestures just as you would do for objects). Color gestures can work on '''fill''' or '''stroke''', depending on which swatch in the selected color indicator you drag.&lt;br /&gt;
&lt;br /&gt;
Color gestures work in '''HSL''' color space. Dragging without any keyboard modifiers adjusts the '''hue''' channel, dragging with '''Shift''' adjusts '''saturation''', and dragging with '''Ctrl''' adjusts '''lightness'''.&lt;br /&gt;
&lt;br /&gt;
The adjustment is done by '''&amp;quot;rotating&amp;quot;''' the color swatch away from the original direction which is assumed to be '''NE at 45 degrees''' (i.e. from&lt;br /&gt;
the swatch diagonally into the document window). Once you click and drag the color swatch, imagine a diagonal line going from the point where you clicked in the NE direction, across the entire Inkscape window. By dragging '''below or to the right''' of that line, you decrease the corresponding color channel, to the minimum at the lower edge of the window; by dragging it above or to the left, you increase it, to the maximum at the left edge of the window. If you hover your mouse exactly over the 45 degrees line, the change will be zero.&lt;br /&gt;
&lt;br /&gt;
Note that you can easily vary the '''precision''' of your adjustment. If you drag close enough to the swatch, each small movement results in a big change of the color. If you need a finer adjustment, just drag farther away from the swatch, towards the center of the Inkscape window or even to its upper right corner, where minute movements will produce very small changes in the color. In fact, this method gives you more color precision than even the color wheel in the Fill and Stroke dialog, unless you expand that dialog to fill the entire screen which is rarely practical.&lt;br /&gt;
&lt;br /&gt;
The mouse '''cursor''' changes when you're doing color gestures, reflecting the channel currently adjusted and indicating the directions for increasing and decreasing the value. Also, watch the '''statusbar''' which will indicate, as you drag, the channel you are adjusting, the original value of that channel, the new value, and the difference. &lt;br /&gt;
&lt;br /&gt;
You can '''switch channels while you drag'''. That is, you don't need to &lt;br /&gt;
drag it again and again from the swatch if you want to adjust all three channels - you can do it all in one drag, by pressing and releasing Ctrl and Shift as necessary. Note that when you change the keyboard modifiers during drag, the position of the zero-change line is temporarily changed to go through the current mouse position; this is done so that there are no sudden changes in color if you are switching modifiers away from the original 45-degree line.&lt;br /&gt;
&lt;br /&gt;
The '''Alt''' modifier is special. Pressing Alt means &amp;quot;do nothing&amp;quot;; this allows you to move the mouse, without releasing, to a more convenient place from where to continue tweaking the color after letting go of Alt. As with the other modifiers, releasing Alt temporarily redefines the zero-change axis to go through the point where Alt was released. For example, imagine  you made your color darker by Ctrl+dragging towards the bottom edge of the window and you now need to make it less saturated. You cannot however Shift+drag it any lower because there's just not enough room for that. In that situation, without releasing the mouse, Alt+drag it upwards to a convenient spot and then Shift+drag downwards as needed. Also, you can start dragging from the swatch with Alt pressed to avoid changing the color while you take a more convenient position for adjustments.&lt;br /&gt;
&lt;br /&gt;
For example, you can select a green rectangle and first turn it into greenish-blue by dragging away from the Fill swatch and slightly above the 45 degrees line; then, without releasing the mouse, press Ctrl and drag a bit to the right to darken the color; then press Shift, release Ctrl, and adjust saturation. You can press or release Ctrl and Shift as many times as necessary during a single drag; when you are finally satisfied with your color, release the mouse to commit the change.&lt;br /&gt;
&lt;br /&gt;
Apart from precise adjustments, you can use color gestures to very quickly perform some common color transformations:&lt;br /&gt;
&lt;br /&gt;
* Ctrl+drag the swatch to the right and down to paint all selected objects black.&lt;br /&gt;
&lt;br /&gt;
* Ctrl+drag the swatch upwards and to the left to paint all selected objects white.&lt;br /&gt;
&lt;br /&gt;
* Shift+drag the swatch to the right and down to desaturate the color of selected objects.&lt;br /&gt;
&lt;br /&gt;
* Shift+drag the swatch upwards and to the left to maximize saturation of the color of selected objects. &lt;br /&gt;
&lt;br /&gt;
Note that when several objects or gradient stops with different colors are selected, the selected style indicator shows their '''averaged''' color. If you adjust that color by gesturing, the changed color will be assigned back to all selected objects/stops, in effect eliminating any difference between them. If you want to adjust many different-colored objects preserving their relative differences, use the color modes of the Tweak tool or color adjustment extension effects.&lt;br /&gt;
&lt;br /&gt;
This new technique requires some getting used to, but once you get the idea it is quite convenient, fast, and precise.&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;
== Preserving zoom/view of reverted documents ==&lt;br /&gt;
&lt;br /&gt;
When reverting files to their previously saved state, the current zoom factor/panning is now retained (as opposed to reverted to the saved state, too, as it was the case before). This less interrupts the workflow when one is working on some detail in the drawing.&lt;br /&gt;
&lt;br /&gt;
== Bounding box option moved ==&lt;br /&gt;
&lt;br /&gt;
The preferences option to select between &amp;quot;visual&amp;quot; and &amp;quot;geometric&amp;quot; bounding box was moved in Inkscape Preferences dialog from the &amp;quot;Selector&amp;quot; page to &amp;quot;Tools&amp;quot; page (since it applies more globally than just in Selector tool).&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;
== Using other keys in place of Alt ==&lt;br /&gt;
&lt;br /&gt;
* Many Linux users have found the use of '''Alt-drag''' and '''Alt+click''' in Inkscape problematical because this shortcut is often captured by window managers. In 0.46, instead of disabling of the window manager shortcut as suggested in [http://wiki.inkscape.org/wiki/index.php/FAQ#How_to_make_Alt.2Bclick_and_Alt.2Bdrag_work_on_Linux.3F the FAQ], you can change a setting in your preferences.xml file called &amp;lt;code&amp;gt;mapalt&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; group. This numerical value ranges from 1 to 5; 1 indicates no change, any other value refers to some special key on a keyboard, such as '''Alt Gr''', the '''Windows''' key, etc. The specific mapping of these values to the keys on your keyboard can be viewed and/or editied by '''xkeycaps''', available from [http://www.jwz.org/xkeycaps www.jwz.org]. The value associated with a particular key is shown in that program at the top of the screen beside the word &amp;quot;Modifiers&amp;quot; when the mouse is held over a key on the main display.&lt;br /&gt;
&lt;br /&gt;
== GTK theme on OS X ==&lt;br /&gt;
&lt;br /&gt;
A GTK theme is now included in Inkscape.app bundle on OS X. If the user does not have any personal customization (e.g. in a .gtkrc-2.0 file) this theme is used. It reflects the OS X settings for &amp;quot;Appearance&amp;quot; and &amp;quot;Highlight Color&amp;quot; set in System Preferences &amp;gt; Appearance.&lt;br /&gt;
&lt;br /&gt;
== Keyboard profiles ==&lt;br /&gt;
&lt;br /&gt;
New profiles have been added:&lt;br /&gt;
&lt;br /&gt;
* '''Corel DRAW X4''' (corel-draw-x4.xml)&lt;br /&gt;
* '''Zoner Draw 5''' (zoner-draw.xml)&lt;br /&gt;
* '''ACD Systems Canvas 11''' (acd-canvas.xml)&lt;br /&gt;
&lt;br /&gt;
Also, profile for Adobe Illustrator has been fixed and includes bindings for tools now.&lt;br /&gt;
&lt;br /&gt;
(To enable a profile, copy it into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; in the same directory, overwriting the old file. To restore the default Inkscape set, copy &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
=Other changes and 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;
* On the '''Scale''' tab of the '''Transform dialog''', the numbers now show the current size of selection, not size increment as before. Correspondingly, with the % unit chosen, you see 100% displayed, and to scale it up twice, you enter 200%, not 100% as before. This is a more intuitive behavior and it's more consistent with how the W/H controls work in the Selector tool. &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;
* The '''Shift''' tab of the '''Tile Clones''' dialog has two new options: '''Cumulate''': when checked, each tile is shifted by the normal amount plus the cumulative shifts of all previous tiles. This is useful when placing tiles that are being scaled by a uniform amount. '''Exlude tile''': when checked, the tile width or height is not automatically included in calculating the tile's shift. This is useful when using the dialog to place clones on a circle or spiral (rather than using a shift of -100%). It is also useful when positioning tiles using the '''Exponent''' parameter.&lt;br /&gt;
&lt;br /&gt;
* The '''Scale''' tab of the '''Tile Clones''' dialog has a new parameter: '''Base''' that allows placing tiles along a logarithmic spiral (as often found in nature). If the value is '''0''', the parameter is not used. Use a value less than one for a converging spiral and a value of greater than one for a diverging spiral. The actual scale is calculated as '''base''' raised to the nominal '''scale''' power.&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;
* 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;
* 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;
* Preferences have been added for setting the default metadata and licenses, so this information can be automatically filled in with new documents.&lt;br /&gt;
&lt;br /&gt;
* The built-in '''Potrace''' tracing engine is upgraded to version '''1.8''' with some minor bugs fixed.&lt;br /&gt;
&lt;br /&gt;
* File dialog windows (open/save) now have an '''Enable preview''' checkbox which allows you to disable the preview pane.&lt;br /&gt;
&lt;br /&gt;
* In the Calligraphic pen controls, the toggle button to enable tablet pressure sensitivity is moved to the Width control, and the button for tilt sensitivity is moved to Angle, to better reflect what parameters these toggles affect.&lt;br /&gt;
&lt;br /&gt;
* In Node and Gradient tools, using '''Tab/Shift+Tab''' to select next/previous node or gradient handle scrolls the canvas if necessary to show the selection. &lt;br /&gt;
&lt;br /&gt;
* The option '''Import bitmap as &amp;lt;image&amp;gt;''' is removed; it was added several versions ago to allow optionally importing images as rectangles with image pattern, to make clipping the images easier. Now that you can easily use clipping paths, as well as convert any image to rectangle with pattern with Alt+I, this option is not really necessary and removed to reduce confusion. Bitmaps are always imported into SVG as an &amp;lt;image&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
* Support has been added for stock patterns, in the same way that stock markers were already supported. Adding patterns to share/patterns/patterns.svg, and giving them a inkscape-stockid attribute as found on the examples already there will make them available in all Inkscape sessions from the patterns tab of the fill &amp;amp; stroke dialog.&lt;br /&gt;
&lt;br /&gt;
* New '''fontforge_glyph.svg''' template is added for font designers who draw glyphs in Inkscape and import them into FontFoge. It is 1000x1000px large and has a horizontal guide at 200px to mark border for descenders.&lt;br /&gt;
&lt;br /&gt;
* Save dialogs have been modified to clarify that they '''Save as SVG''', so people using Inkscape to edit PDF, EPS, and other file formats will be less confused at the default behavior when saving files.&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;
* A fix in the blur rendering code made '''exporting blurred objects to bitmap''' much faster and fixed the disappearing of blurred objects in exported bitmaps which happened for large objects in 0.45.  The same fix got rid of the rendering artefacts that sometimes appeared on blurred objects during scrolling. &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;
* On Windows, '''file opening/saving dialogs''' can no longer sink under the main editor window (they now have the inkscape window set correctly as their parent window).&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;
* '''Creative Commons Public Domain Declaration URI''' points to the 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;
* On Windows, the Inkscape uninstaller deleted all files under the install directory. This could lead to removing user-created files, or even other program files not related to inkscape if the install directory was C:\Program Files. The new uninstaller '''tracks all installed files and asks for confirmation before deleting any other files'''. However, installation and uninstallation process is now slower.&lt;br /&gt;
&lt;br /&gt;
* Clones were wrongly unlinked when their original was moved to another layer; fixed.&lt;br /&gt;
&lt;br /&gt;
* Previous versions had a problem on '''Windows Vista''' where selected menu item was invisible. Now our Windows builds use a newer version of GTK library which fixes this problem.&lt;br /&gt;
&lt;br /&gt;
* Duplicating empty text objects that have just been created no longer crashes. Also, the XML editor crash related to empty text objects is fixed. A downside is that the SVG will become cluttered with empty text objects as they are no longer automatically removed. A better fix for the problem is planned.&lt;br /&gt;
&lt;br /&gt;
* In Tile Clones dialog, the PMG symmetry group was created incorrectly; it is now fixed.&lt;br /&gt;
&lt;br /&gt;
* Serious usability issues with the font size field in the Text tool's controls bar have been fixed.&lt;br /&gt;
&lt;br /&gt;
* The rulers are now correctly scaled and will align nicely with document coordinates, with or without the scrollbars displayed.&lt;br /&gt;
&lt;br /&gt;
=Known Issues=&lt;br /&gt;
&lt;br /&gt;
* (LP: #180890) Blend modes do not work correctly over transparent    backgrounds. A workaround is to place an opaque rectangle underneath the bottom-most layer.&lt;br /&gt;
* (LP # 202704) Blur and other filters are very slow when applied to an object with transform= attribute with rotation or skew. To avoid this slowdown, either do not rotate/skew objects you use with filters, or apply filters only to paths (but not shapes to text) because paths, by default, get no transform= attribute when you rotate or skew them.&lt;br /&gt;
* Windows printing has two known issues. In both cases the workaround is to print to bitmap (Print -&amp;gt; Rendering -&amp;gt; Bitmap).&lt;br /&gt;
** (LP # 205732) Blurred objects are misaligned when printing.&lt;br /&gt;
** (LP # 208217) Masked objects disappear from the page when printing.&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>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=27044</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=27044"/>
		<updated>2008-04-02T00:17:38Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Build Universal Inkscape */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo +pdf boehmgc gtkmm intltool libxslt lcms popt poppler boost gnome-vfs \&lt;br /&gt;
 libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm intltool libxslt lcms popt boost&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo +pdf&amp;lt;/code&amp;gt; (cairo with the pdf variant) : better pdf export&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo +pdf poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above.&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All these steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to known how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Update Macport sources ==&lt;br /&gt;
&lt;br /&gt;
The port descriptions in Macports do not currently all compile properly with their Universal variants.   For this reason, we currently use a modified set of some of the portfiles that will compile a universal libraries.  Work is being done to integrate these changes into Macports itself.&lt;br /&gt;
&lt;br /&gt;
You can use our modified portfiles by adding our ports to your sources:&lt;br /&gt;
&lt;br /&gt;
1. Checkout our ports directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/experimental/trunk/mjwybrow/ports ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Edit your sources list to include this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
And add the following line *before* the existing rsync source:&lt;br /&gt;
&amp;lt;pre&amp;gt;file:///Users/YOURUSERNAME/directory/to/ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Run the portindex command in the checked-out port directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;portindex&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Run port sync&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile Inkscape's essential dependencies as Universal libraries on either 10.4 or 10.5,  by giving the &amp;quot;+universal&amp;quot; option for each, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -v install poppler +universal gtk2 +universal ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you already have non-universal versions of these ports installed you may need to deactivate the port and rebuild it, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -f uninstall cairo&lt;br /&gt;
sudo port clean cairo&lt;br /&gt;
sudo port -v install cairo +universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal Inkscape ==&lt;br /&gt;
&lt;br /&gt;
First, Set your SDK, 10.5 for Leopard, 10.4u for TIger:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.5.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; (For Leopard)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.4u.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp;  (For Tiger)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, set up your environment to point to the Macports libraries:&lt;br /&gt;
&amp;lt;pre&amp;gt;export MACPORTS=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
export PATH=$MACPORTS/bin:$MACPORTS/sbin:/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$MACPORTS/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$MACPORTS/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$MACPORTS/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall -isysroot $SDK -arch ppc -arch i386&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The final step is to configure and compile Inkscape.  Inkscape must be configured with the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;   Sets the correct path for Inkscape to be used from an .app bundle&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;--disable-dependency-tracking&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; Dependency tracking can't be user when compiling universal binaries.&lt;br /&gt;
&lt;br /&gt;
Inkscape can then be built (with make), installed, and packaged into a Universal .app bundle using the standard .app bundle building instruction above.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+pdf+no_x11 cairomm +quartz pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathuniv=&amp;quot;export PATH=/opt/local-univ/bin:/opt/local-univ/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using the all in one build script [experimental] =&lt;br /&gt;
&lt;br /&gt;
To build a native-GTK build of Inkscape, GTK and some of its dependencies must be built with special options. You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).  This is a modified version of the Imendio native build script, found with instructions on this page:&lt;br /&gt;
http://developer.imendio.com/projects/gtk-macosx/build-instructions&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested. If you have any troubles using this process then please report them to Michael Wybrow (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PREFIX=/your/install/prefix&lt;br /&gt;
./build-gtk bootstrap&lt;br /&gt;
./build-gtk build inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=27034</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=27034"/>
		<updated>2008-04-02T00:17:25Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Build Universal Inkscape */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo +pdf boehmgc gtkmm intltool libxslt lcms popt poppler boost gnome-vfs \&lt;br /&gt;
 libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm intltool libxslt lcms popt boost&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo +pdf&amp;lt;/code&amp;gt; (cairo with the pdf variant) : better pdf export&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo +pdf poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above.&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All these steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to known how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Update Macport sources ==&lt;br /&gt;
&lt;br /&gt;
The port descriptions in Macports do not currently all compile properly with their Universal variants.   For this reason, we currently use a modified set of some of the portfiles that will compile a universal libraries.  Work is being done to integrate these changes into Macports itself.&lt;br /&gt;
&lt;br /&gt;
You can use our modified portfiles by adding our ports to your sources:&lt;br /&gt;
&lt;br /&gt;
1. Checkout our ports directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/experimental/trunk/mjwybrow/ports ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Edit your sources list to include this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
And add the following line *before* the existing rsync source:&lt;br /&gt;
&amp;lt;pre&amp;gt;file:///Users/YOURUSERNAME/directory/to/ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Run the portindex command in the checked-out port directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;portindex&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Run port sync&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile Inkscape's essential dependencies as Universal libraries on either 10.4 or 10.5,  by giving the &amp;quot;+universal&amp;quot; option for each, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -v install poppler +universal gtk2 +universal ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you already have non-universal versions of these ports installed you may need to deactivate the port and rebuild it, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -f uninstall cairo&lt;br /&gt;
sudo port clean cairo&lt;br /&gt;
sudo port -v install cairo +universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal Inkscape ==&lt;br /&gt;
&lt;br /&gt;
First, Set your SDK, 10.5 for Leopard, 10.4u for TIger:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.5.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; (For Leopard)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.4u.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp;  (ForTiger)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, set up your environment to point to the Macports libraries:&lt;br /&gt;
&amp;lt;pre&amp;gt;export MACPORTS=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
export PATH=$MACPORTS/bin:$MACPORTS/sbin:/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$MACPORTS/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$MACPORTS/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$MACPORTS/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall -isysroot $SDK -arch ppc -arch i386&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The final step is to configure and compile Inkscape.  Inkscape must be configured with the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;   Sets the correct path for Inkscape to be used from an .app bundle&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;--disable-dependency-tracking&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp; Dependency tracking can't be user when compiling universal binaries.&lt;br /&gt;
&lt;br /&gt;
Inkscape can then be built (with make), installed, and packaged into a Universal .app bundle using the standard .app bundle building instruction above.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+pdf+no_x11 cairomm +quartz pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathuniv=&amp;quot;export PATH=/opt/local-univ/bin:/opt/local-univ/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using the all in one build script [experimental] =&lt;br /&gt;
&lt;br /&gt;
To build a native-GTK build of Inkscape, GTK and some of its dependencies must be built with special options. You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).  This is a modified version of the Imendio native build script, found with instructions on this page:&lt;br /&gt;
http://developer.imendio.com/projects/gtk-macosx/build-instructions&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested. If you have any troubles using this process then please report them to Michael Wybrow (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PREFIX=/your/install/prefix&lt;br /&gt;
./build-gtk bootstrap&lt;br /&gt;
./build-gtk build inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=27024</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=27024"/>
		<updated>2008-04-02T00:17:02Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Build Universal Inkscape */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo +pdf boehmgc gtkmm intltool libxslt lcms popt poppler boost gnome-vfs \&lt;br /&gt;
 libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm intltool libxslt lcms popt boost&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo +pdf&amp;lt;/code&amp;gt; (cairo with the pdf variant) : better pdf export&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo +pdf poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above.&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All these steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to known how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Update Macport sources ==&lt;br /&gt;
&lt;br /&gt;
The port descriptions in Macports do not currently all compile properly with their Universal variants.   For this reason, we currently use a modified set of some of the portfiles that will compile a universal libraries.  Work is being done to integrate these changes into Macports itself.&lt;br /&gt;
&lt;br /&gt;
You can use our modified portfiles by adding our ports to your sources:&lt;br /&gt;
&lt;br /&gt;
1. Checkout our ports directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/experimental/trunk/mjwybrow/ports ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Edit your sources list to include this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
And add the following line *before* the existing rsync source:&lt;br /&gt;
&amp;lt;pre&amp;gt;file:///Users/YOURUSERNAME/directory/to/ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Run the portindex command in the checked-out port directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;portindex&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Run port sync&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile Inkscape's essential dependencies as Universal libraries on either 10.4 or 10.5,  by giving the &amp;quot;+universal&amp;quot; option for each, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -v install poppler +universal gtk2 +universal ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you already have non-universal versions of these ports installed you may need to deactivate the port and rebuild it, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -f uninstall cairo&lt;br /&gt;
sudo port clean cairo&lt;br /&gt;
sudo port -v install cairo +universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal Inkscape ==&lt;br /&gt;
&lt;br /&gt;
First, Set your SDK, 10.5 for Leopard, 10.4u for TIger:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.5.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp (For Leopard)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.4u.sdk&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp  (ForTiger)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, set up your environment to point to the Macports libraries:&lt;br /&gt;
&amp;lt;pre&amp;gt;export MACPORTS=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
export PATH=$MACPORTS/bin:$MACPORTS/sbin:/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$MACPORTS/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$MACPORTS/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$MACPORTS/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall -isysroot $SDK -arch ppc -arch i386&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The final step is to configure and compile Inkscape.  Inkscape must be configured with the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp   Sets the correct path for Inkscape to be used from an .app bundle&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;--disable-dependency-tracking&amp;lt;/code&amp;gt;  &amp;amp;nbsp; &amp;amp;nbsp Dependency tracking can't be user when compiling universal binaries.&lt;br /&gt;
&lt;br /&gt;
Inkscape can then be built (with make), installed, and packaged into a Universal .app bundle using the standard .app bundle building instruction above.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+pdf+no_x11 cairomm +quartz pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathuniv=&amp;quot;export PATH=/opt/local-univ/bin:/opt/local-univ/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using the all in one build script [experimental] =&lt;br /&gt;
&lt;br /&gt;
To build a native-GTK build of Inkscape, GTK and some of its dependencies must be built with special options. You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).  This is a modified version of the Imendio native build script, found with instructions on this page:&lt;br /&gt;
http://developer.imendio.com/projects/gtk-macosx/build-instructions&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested. If you have any troubles using this process then please report them to Michael Wybrow (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PREFIX=/your/install/prefix&lt;br /&gt;
./build-gtk bootstrap&lt;br /&gt;
./build-gtk build inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=27014</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=27014"/>
		<updated>2008-04-02T00:16:22Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Build Universal Inkscape */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo +pdf boehmgc gtkmm intltool libxslt lcms popt poppler boost gnome-vfs \&lt;br /&gt;
 libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm intltool libxslt lcms popt boost&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo +pdf&amp;lt;/code&amp;gt; (cairo with the pdf variant) : better pdf export&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo +pdf poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above.&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All these steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to known how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Update Macport sources ==&lt;br /&gt;
&lt;br /&gt;
The port descriptions in Macports do not currently all compile properly with their Universal variants.   For this reason, we currently use a modified set of some of the portfiles that will compile a universal libraries.  Work is being done to integrate these changes into Macports itself.&lt;br /&gt;
&lt;br /&gt;
You can use our modified portfiles by adding our ports to your sources:&lt;br /&gt;
&lt;br /&gt;
1. Checkout our ports directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/experimental/trunk/mjwybrow/ports ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Edit your sources list to include this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
And add the following line *before* the existing rsync source:&lt;br /&gt;
&amp;lt;pre&amp;gt;file:///Users/YOURUSERNAME/directory/to/ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Run the portindex command in the checked-out port directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;portindex&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Run port sync&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile Inkscape's essential dependencies as Universal libraries on either 10.4 or 10.5,  by giving the &amp;quot;+universal&amp;quot; option for each, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -v install poppler +universal gtk2 +universal ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you already have non-universal versions of these ports installed you may need to deactivate the port and rebuild it, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -f uninstall cairo&lt;br /&gt;
sudo port clean cairo&lt;br /&gt;
sudo port -v install cairo +universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal Inkscape ==&lt;br /&gt;
&lt;br /&gt;
First, Set your SDK, 10.5 for Leopard, 10.4u for TIger:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.5.sdk&amp;lt;/code&amp;gt;  (For Leopard)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.4u.sdk&amp;lt;/code&amp;gt;  (ForTIger)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, set up your environment to point to the Macports libraries:&lt;br /&gt;
&amp;lt;pre&amp;gt;export MACPORTS=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
export PATH=$MACPORTS/bin:$MACPORTS/sbin:/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$MACPORTS/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$MACPORTS/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$MACPORTS/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall -isysroot $SDK -arch ppc -arch i386&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The final step is to configure and compile Inkscape.  Inkscape must be configured with the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;  Sets the correct path for Inkscape to be used from an .app bundle&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;--disable-dependency-tracking&amp;lt;/code&amp;gt; Dependency tracking can't be user when compiling universal binaries.&lt;br /&gt;
&lt;br /&gt;
Inkscape can then be built (with make), installed, and packaged into a Universal .app bundle using the standard .app bundle building instruction above.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+pdf+no_x11 cairomm +quartz pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathuniv=&amp;quot;export PATH=/opt/local-univ/bin:/opt/local-univ/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using the all in one build script [experimental] =&lt;br /&gt;
&lt;br /&gt;
To build a native-GTK build of Inkscape, GTK and some of its dependencies must be built with special options. You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).  This is a modified version of the Imendio native build script, found with instructions on this page:&lt;br /&gt;
http://developer.imendio.com/projects/gtk-macosx/build-instructions&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested. If you have any troubles using this process then please report them to Michael Wybrow (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PREFIX=/your/install/prefix&lt;br /&gt;
./build-gtk bootstrap&lt;br /&gt;
./build-gtk build inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=27004</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=27004"/>
		<updated>2008-04-02T00:09:59Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Build Universal Inkscape */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo +pdf boehmgc gtkmm intltool libxslt lcms popt poppler boost gnome-vfs \&lt;br /&gt;
 libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm intltool libxslt lcms popt boost&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo +pdf&amp;lt;/code&amp;gt; (cairo with the pdf variant) : better pdf export&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo +pdf poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above.&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All these steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to known how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Update Macport sources ==&lt;br /&gt;
&lt;br /&gt;
The port descriptions in Macports do not currently all compile properly with their Universal variants.   For this reason, we currently use a modified set of some of the portfiles that will compile a universal libraries.  Work is being done to integrate these changes into Macports itself.&lt;br /&gt;
&lt;br /&gt;
You can use our modified portfiles by adding our ports to your sources:&lt;br /&gt;
&lt;br /&gt;
1. Checkout our ports directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/experimental/trunk/mjwybrow/ports ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Edit your sources list to include this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
And add the following line *before* the existing rsync source:&lt;br /&gt;
&amp;lt;pre&amp;gt;file:///Users/YOURUSERNAME/directory/to/ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Run the portindex command in the checked-out port directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;portindex&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Run port sync&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile Inkscape's essential dependencies as Universal libraries on either 10.4 or 10.5,  by giving the &amp;quot;+universal&amp;quot; option for each, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -v install poppler +universal gtk2 +universal ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you already have non-universal versions of these ports installed you may need to deactivate the port and rebuild it, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -f uninstall cairo&lt;br /&gt;
sudo port clean cairo&lt;br /&gt;
sudo port -v install cairo +universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal Inkscape ==&lt;br /&gt;
&lt;br /&gt;
First, Set your SDK, 10.5 for Leopard, 10.4u for TIger:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.5.sdk&amp;lt;/code&amp;gt;  (For Leopard)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.4u.sdk&amp;lt;/code&amp;gt;  (ForTIger)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, set up your environment to point to the Macports libraries:&lt;br /&gt;
&amp;lt;pre&amp;gt;export MACPORTS=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
export PATH=$MACPORTS/bin:$MACPORTS/sbin:/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$MACPORTS/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$MACPORTS/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$MACPORTS/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall -isysroot $SDK -arch ppc -arch i386&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+pdf+no_x11 cairomm +quartz pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathuniv=&amp;quot;export PATH=/opt/local-univ/bin:/opt/local-univ/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using the all in one build script [experimental] =&lt;br /&gt;
&lt;br /&gt;
To build a native-GTK build of Inkscape, GTK and some of its dependencies must be built with special options. You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).  This is a modified version of the Imendio native build script, found with instructions on this page:&lt;br /&gt;
http://developer.imendio.com/projects/gtk-macosx/build-instructions&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested. If you have any troubles using this process then please report them to Michael Wybrow (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PREFIX=/your/install/prefix&lt;br /&gt;
./build-gtk bootstrap&lt;br /&gt;
./build-gtk build inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26994</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26994"/>
		<updated>2008-04-02T00:09:32Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Build Universal Inkscape */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo +pdf boehmgc gtkmm intltool libxslt lcms popt poppler boost gnome-vfs \&lt;br /&gt;
 libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm intltool libxslt lcms popt boost&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo +pdf&amp;lt;/code&amp;gt; (cairo with the pdf variant) : better pdf export&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo +pdf poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above.&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All these steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to known how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Update Macport sources ==&lt;br /&gt;
&lt;br /&gt;
The port descriptions in Macports do not currently all compile properly with their Universal variants.   For this reason, we currently use a modified set of some of the portfiles that will compile a universal libraries.  Work is being done to integrate these changes into Macports itself.&lt;br /&gt;
&lt;br /&gt;
You can use our modified portfiles by adding our ports to your sources:&lt;br /&gt;
&lt;br /&gt;
1. Checkout our ports directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/experimental/trunk/mjwybrow/ports ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Edit your sources list to include this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
And add the following line *before* the existing rsync source:&lt;br /&gt;
&amp;lt;pre&amp;gt;file:///Users/YOURUSERNAME/directory/to/ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Run the portindex command in the checked-out port directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;portindex&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Run port sync&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile Inkscape's essential dependencies as Universal libraries on either 10.4 or 10.5,  by giving the &amp;quot;+universal&amp;quot; option for each, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -v install poppler +universal gtk2 +universal ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you already have non-universal versions of these ports installed you may need to deactivate the port and rebuild it, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -f uninstall cairo&lt;br /&gt;
sudo port clean cairo&lt;br /&gt;
sudo port -v install cairo +universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal Inkscape ==&lt;br /&gt;
&lt;br /&gt;
Set your SDK, 10.5 for Leopard, 10.4u for TIger:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.5.sdk&amp;lt;/code&amp;gt;  (For Leopard)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;CODE&amp;gt;export SDK=/Developer/SDKs/MacOSX10.4u.sdk&amp;lt;/code&amp;gt;  (ForTIger)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, set up your environment to point to the Macports libraries:&lt;br /&gt;
&amp;lt;pre&amp;gt;export MACPORTS=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
export PATH=$MACPORTS/bin:$MACPORTS/sbin:/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$MACPORTS/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$MACPORTS/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$MACPORTS/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall -isysroot /Developer/SDKs/MacOSX10.5.sdk -arch ppc -arch i386&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+pdf+no_x11 cairomm +quartz pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathuniv=&amp;quot;export PATH=/opt/local-univ/bin:/opt/local-univ/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using the all in one build script [experimental] =&lt;br /&gt;
&lt;br /&gt;
To build a native-GTK build of Inkscape, GTK and some of its dependencies must be built with special options. You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).  This is a modified version of the Imendio native build script, found with instructions on this page:&lt;br /&gt;
http://developer.imendio.com/projects/gtk-macosx/build-instructions&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested. If you have any troubles using this process then please report them to Michael Wybrow (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PREFIX=/your/install/prefix&lt;br /&gt;
./build-gtk bootstrap&lt;br /&gt;
./build-gtk build inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26984</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26984"/>
		<updated>2008-04-02T00:07:31Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Build Universal dependencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo +pdf boehmgc gtkmm intltool libxslt lcms popt poppler boost gnome-vfs \&lt;br /&gt;
 libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm intltool libxslt lcms popt boost&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo +pdf&amp;lt;/code&amp;gt; (cairo with the pdf variant) : better pdf export&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo +pdf poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above.&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All these steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to known how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Update Macport sources ==&lt;br /&gt;
&lt;br /&gt;
The port descriptions in Macports do not currently all compile properly with their Universal variants.   For this reason, we currently use a modified set of some of the portfiles that will compile a universal libraries.  Work is being done to integrate these changes into Macports itself.&lt;br /&gt;
&lt;br /&gt;
You can use our modified portfiles by adding our ports to your sources:&lt;br /&gt;
&lt;br /&gt;
1. Checkout our ports directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/experimental/trunk/mjwybrow/ports ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Edit your sources list to include this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
And add the following line *before* the existing rsync source:&lt;br /&gt;
&amp;lt;pre&amp;gt;file:///Users/YOURUSERNAME/directory/to/ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Run the portindex command in the checked-out port directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;portindex&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Run port sync&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile Inkscape's essential dependencies as Universal libraries on either 10.4 or 10.5,  by giving the &amp;quot;+universal&amp;quot; option for each, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -v install poppler +universal gtk2 +universal ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you already have non-universal versions of these ports installed you may need to deactivate the port and rebuild it, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -f uninstall cairo&lt;br /&gt;
sudo port clean cairo&lt;br /&gt;
sudo port -v install cairo +universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal Inkscape ==&lt;br /&gt;
&lt;br /&gt;
First set up your environment to point to the Macports libraries:&lt;br /&gt;
&amp;lt;pre&amp;gt;export MACPORTS=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
export PATH=$MACPORTS/bin:$MACPORTS/sbin:/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin&lt;br /&gt;
&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$MACPORTS/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$MACPORTS/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$MACPORTS/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall -isysroot /Developer/SDKs/MacOSX10.5.sdk -arch ppc -arch i386&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+pdf+no_x11 cairomm +quartz pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathuniv=&amp;quot;export PATH=/opt/local-univ/bin:/opt/local-univ/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using the all in one build script [experimental] =&lt;br /&gt;
&lt;br /&gt;
To build a native-GTK build of Inkscape, GTK and some of its dependencies must be built with special options. You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).  This is a modified version of the Imendio native build script, found with instructions on this page:&lt;br /&gt;
http://developer.imendio.com/projects/gtk-macosx/build-instructions&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested. If you have any troubles using this process then please report them to Michael Wybrow (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PREFIX=/your/install/prefix&lt;br /&gt;
./build-gtk bootstrap&lt;br /&gt;
./build-gtk build inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26974</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26974"/>
		<updated>2008-04-01T23:59:43Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Update Macport sources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo +pdf boehmgc gtkmm intltool libxslt lcms popt poppler boost gnome-vfs \&lt;br /&gt;
 libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm intltool libxslt lcms popt boost&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo +pdf&amp;lt;/code&amp;gt; (cairo with the pdf variant) : better pdf export&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo +pdf poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above.&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All these steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to known how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Update Macport sources ==&lt;br /&gt;
&lt;br /&gt;
The port descriptions in Macports do not currently all compile properly with their Universal variants.   For this reason, we currently use a modified set of some of the portfiles that will compile a universal libraries.  Work is being done to integrate these changes into Macports itself.&lt;br /&gt;
&lt;br /&gt;
You can use our modified portfiles by adding our ports to your sources:&lt;br /&gt;
&lt;br /&gt;
1. Checkout our ports directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/experimental/trunk/mjwybrow/ports ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Edit your sources list to include this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
And add the following line *before* the existing rsync source:&lt;br /&gt;
&amp;lt;pre&amp;gt;file:///Users/YOURUSERNAME/directory/to/ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Run the portindex command in the checked-out port directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;portindex&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Run port sync&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile Inkscape's essential dependencies as Universal libraries on either 10.4 or 10.5,  by giving the &amp;quot;+universal&amp;quot; option for each, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -v install poppler +universal gtk2 +universal ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you already have non-universal versions of these ports installed you may need to deactivate the port and rebuild it, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -f uninstall cairo&lt;br /&gt;
sudo port clean cairo&lt;br /&gt;
sudo port -v install cairo +universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+pdf+no_x11 cairomm +quartz pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathuniv=&amp;quot;export PATH=/opt/local-univ/bin:/opt/local-univ/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using the all in one build script [experimental] =&lt;br /&gt;
&lt;br /&gt;
To build a native-GTK build of Inkscape, GTK and some of its dependencies must be built with special options. You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).  This is a modified version of the Imendio native build script, found with instructions on this page:&lt;br /&gt;
http://developer.imendio.com/projects/gtk-macosx/build-instructions&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested. If you have any troubles using this process then please report them to Michael Wybrow (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PREFIX=/your/install/prefix&lt;br /&gt;
./build-gtk bootstrap&lt;br /&gt;
./build-gtk build inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26964</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26964"/>
		<updated>2008-04-01T23:58:25Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Update Macport sources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo +pdf boehmgc gtkmm intltool libxslt lcms popt poppler boost gnome-vfs \&lt;br /&gt;
 libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm intltool libxslt lcms popt boost&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo +pdf&amp;lt;/code&amp;gt; (cairo with the pdf variant) : better pdf export&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo +pdf poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above.&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All these steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to known how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Update Macport sources ==&lt;br /&gt;
&lt;br /&gt;
The port descriptions in Macports do not currently all compile properly with their Universal variants.   For this reason, we currently use a modified set of some of the portfiles that will compile a universal libraries.  Work is being done to integrate these changes into Macports itself.&lt;br /&gt;
&lt;br /&gt;
You can use our modified portfiles by adding our ports to your sources:&lt;br /&gt;
&lt;br /&gt;
1. Checkout our ports directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/experimental/trunk/mjwybrow/ports ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Edit your sources list to include this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
And add the following line *before* the existing rsync source:&lt;br /&gt;
&amp;lt;pre&amp;gt;file:///Users/YOURUSERNAME/directory/to/ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Run port sync&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile Inkscape's essential dependencies as Universal libraries on either 10.4 or 10.5,  by giving the &amp;quot;+universal&amp;quot; option for each, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -v install poppler +universal gtk2 +universal ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you already have non-universal versions of these ports installed you may need to deactivate the port and rebuild it, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -f uninstall cairo&lt;br /&gt;
sudo port clean cairo&lt;br /&gt;
sudo port -v install cairo +universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+pdf+no_x11 cairomm +quartz pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathuniv=&amp;quot;export PATH=/opt/local-univ/bin:/opt/local-univ/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using the all in one build script [experimental] =&lt;br /&gt;
&lt;br /&gt;
To build a native-GTK build of Inkscape, GTK and some of its dependencies must be built with special options. You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).  This is a modified version of the Imendio native build script, found with instructions on this page:&lt;br /&gt;
http://developer.imendio.com/projects/gtk-macosx/build-instructions&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested. If you have any troubles using this process then please report them to Michael Wybrow (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PREFIX=/your/install/prefix&lt;br /&gt;
./build-gtk bootstrap&lt;br /&gt;
./build-gtk build inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26954</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26954"/>
		<updated>2008-04-01T23:57:49Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Build Universal dependencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo +pdf boehmgc gtkmm intltool libxslt lcms popt poppler boost gnome-vfs \&lt;br /&gt;
 libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm intltool libxslt lcms popt boost&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo +pdf&amp;lt;/code&amp;gt; (cairo with the pdf variant) : better pdf export&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo +pdf poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above.&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All these steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to known how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Update Macport sources ==&lt;br /&gt;
&lt;br /&gt;
The port descriptions in Macports do not currently all compile properly with their Universal variants.   For this reason, we currently use a modified set of some of the portfiles that will compile a universal libraries.  Work is being done to integrate these changes into Macports itself.&lt;br /&gt;
&lt;br /&gt;
You can use our modified portfiles by adding our ports to your sources:&lt;br /&gt;
&lt;br /&gt;
1. Checkout our ports directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/experimental/trunk/mjwybrow/ports ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Edit your cources list to include this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
And add the following line *before* the existing rsync source:&lt;br /&gt;
&amp;lt;pre&amp;gt;file:///Users/YOURUSERNAME/directory/to/ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Run port sync&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile Inkscape's essential dependencies as Universal libraries on either 10.4 or 10.5,  by giving the &amp;quot;+universal&amp;quot; option for each, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -v install poppler +universal gtk2 +universal ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you already have non-universal versions of these ports installed you may need to deactivate the port and rebuild it, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -f uninstall cairo&lt;br /&gt;
sudo port clean cairo&lt;br /&gt;
sudo port -v install cairo +universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+pdf+no_x11 cairomm +quartz pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathuniv=&amp;quot;export PATH=/opt/local-univ/bin:/opt/local-univ/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using the all in one build script [experimental] =&lt;br /&gt;
&lt;br /&gt;
To build a native-GTK build of Inkscape, GTK and some of its dependencies must be built with special options. You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).  This is a modified version of the Imendio native build script, found with instructions on this page:&lt;br /&gt;
http://developer.imendio.com/projects/gtk-macosx/build-instructions&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested. If you have any troubles using this process then please report them to Michael Wybrow (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PREFIX=/your/install/prefix&lt;br /&gt;
./build-gtk bootstrap&lt;br /&gt;
./build-gtk build inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26944</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26944"/>
		<updated>2008-04-01T23:57:15Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Compiling a Universal Binary of Inkscape with X11, using MacPorts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo +pdf boehmgc gtkmm intltool libxslt lcms popt poppler boost gnome-vfs \&lt;br /&gt;
 libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm intltool libxslt lcms popt boost&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo +pdf&amp;lt;/code&amp;gt; (cairo with the pdf variant) : better pdf export&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo +pdf poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above.&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All these steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to known how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Update Macport sources ==&lt;br /&gt;
&lt;br /&gt;
The port descriptions in Macports do not currently all compile properly with their Universal variants.   For this reason, we currently use a modified set of some of the portfiles that will compile a universal libraries.  Work is being done to integrate these changes into Macports itself.&lt;br /&gt;
&lt;br /&gt;
You can use our modified portfiles by adding our ports to your sources:&lt;br /&gt;
&lt;br /&gt;
1. Checkout our ports directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/experimental/trunk/mjwybrow/ports ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Edit your cources list to include this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
And add the following line *before* the existing rsync source:&lt;br /&gt;
&amp;lt;pre&amp;gt;file:///Users/YOURUSERNAME/directory/to/ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Run port sync&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile Inkscape's essential dependencies as Universal libraries on either 10.4 or 10.5,  by giving the &amp;quot;+universal&amp;quot; option for each, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -v install poppler +universal gtk2 +universal ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you already have non-universal versions of these ports installed you may need to deactivate the port and rebuild it, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate cairo&lt;br /&gt;
sudo port -f uninstall cairo&lt;br /&gt;
sudo port clean cairo&lt;br /&gt;
sudo port -v install cairo +universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+pdf+no_x11 cairomm +quartz pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathuniv=&amp;quot;export PATH=/opt/local-univ/bin:/opt/local-univ/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using the all in one build script [experimental] =&lt;br /&gt;
&lt;br /&gt;
To build a native-GTK build of Inkscape, GTK and some of its dependencies must be built with special options. You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).  This is a modified version of the Imendio native build script, found with instructions on this page:&lt;br /&gt;
http://developer.imendio.com/projects/gtk-macosx/build-instructions&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested. If you have any troubles using this process then please report them to Michael Wybrow (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PREFIX=/your/install/prefix&lt;br /&gt;
./build-gtk bootstrap&lt;br /&gt;
./build-gtk build inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26934</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26934"/>
		<updated>2008-04-01T23:55:53Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Build Universal dependencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo +pdf boehmgc gtkmm intltool libxslt lcms popt poppler boost gnome-vfs \&lt;br /&gt;
 libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm intltool libxslt lcms popt boost&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo +pdf&amp;lt;/code&amp;gt; (cairo with the pdf variant) : better pdf export&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo +pdf poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above.&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All these steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to known how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Update Macport sources ==&lt;br /&gt;
&lt;br /&gt;
The port descriptions in Macports do not currently all compile properly with their Universal variants.   For this reason, we currently use a modified set of some of the portfiles that will compile a universal libraries.  Work is being done to integrate these changes into Macports itself.&lt;br /&gt;
&lt;br /&gt;
You can use our modified portfiles by adding our ports to your sources:&lt;br /&gt;
&lt;br /&gt;
1. Checkout our ports directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/experimental/trunk/mjwybrow/ports ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Edit your cources list to include this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
And add the following line *before* the existing rsync source:&lt;br /&gt;
&amp;lt;pre&amp;gt;file:///Users/YOURUSERNAME/directory/to/ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Run port sync&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile Inkscape's essential dependencies as Universal libraries on either 10.4 or 10.5,  by giving the &amp;quot;+universal&amp;quot; option for each, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -v install poppler +universal gtk2 +universal ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you already have non-universal versions of these ports installed you may need to deactivate the port and rebuild it, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate cairo&lt;br /&gt;
sudo port -v install cairo +universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+pdf+no_x11 cairomm +quartz pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathuniv=&amp;quot;export PATH=/opt/local-univ/bin:/opt/local-univ/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using the all in one build script [experimental] =&lt;br /&gt;
&lt;br /&gt;
To build a native-GTK build of Inkscape, GTK and some of its dependencies must be built with special options. You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).  This is a modified version of the Imendio native build script, found with instructions on this page:&lt;br /&gt;
http://developer.imendio.com/projects/gtk-macosx/build-instructions&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested. If you have any troubles using this process then please report them to Michael Wybrow (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PREFIX=/your/install/prefix&lt;br /&gt;
./build-gtk bootstrap&lt;br /&gt;
./build-gtk build inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26924</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26924"/>
		<updated>2008-04-01T23:55:30Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Build Universal dependencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo +pdf boehmgc gtkmm intltool libxslt lcms popt poppler boost gnome-vfs \&lt;br /&gt;
 libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm intltool libxslt lcms popt boost&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo +pdf&amp;lt;/code&amp;gt; (cairo with the pdf variant) : better pdf export&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo +pdf poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above.&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All these steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to known how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Update Macport sources ==&lt;br /&gt;
&lt;br /&gt;
The port descriptions in Macports do not currently all compile properly with their Universal variants.   For this reason, we currently use a modified set of some of the portfiles that will compile a universal libraries.  Work is being done to integrate these changes into Macports itself.&lt;br /&gt;
&lt;br /&gt;
You can use our modified portfiles by adding our ports to your sources:&lt;br /&gt;
&lt;br /&gt;
1. Checkout our ports directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/experimental/trunk/mjwybrow/ports ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Edit your cources list to include this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
And add the following line *before* the existing rsync source:&lt;br /&gt;
&amp;lt;pre&amp;gt;file:///Users/YOURUSERNAME/directory/to/ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Run port sync&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile Inkscape's essential dependencies as Universal libraries on either 10.4 or 10.5,  by giving the &amp;quot;+universal&amp;quot; option for each, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -v install poppler +universal gtk2 +universal ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you already have non-universal versions of these ports installed you may need to deactivate the port and rebuild it, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate cairo&lt;br /&gt;
sudo port install -v cairo +universal&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+pdf+no_x11 cairomm +quartz pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathuniv=&amp;quot;export PATH=/opt/local-univ/bin:/opt/local-univ/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using the all in one build script [experimental] =&lt;br /&gt;
&lt;br /&gt;
To build a native-GTK build of Inkscape, GTK and some of its dependencies must be built with special options. You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).  This is a modified version of the Imendio native build script, found with instructions on this page:&lt;br /&gt;
http://developer.imendio.com/projects/gtk-macosx/build-instructions&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested. If you have any troubles using this process then please report them to Michael Wybrow (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PREFIX=/your/install/prefix&lt;br /&gt;
./build-gtk bootstrap&lt;br /&gt;
./build-gtk build inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26914</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26914"/>
		<updated>2008-04-01T23:50:05Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Build Universal dependencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo +pdf boehmgc gtkmm intltool libxslt lcms popt poppler boost gnome-vfs \&lt;br /&gt;
 libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm intltool libxslt lcms popt boost&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo +pdf&amp;lt;/code&amp;gt; (cairo with the pdf variant) : better pdf export&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo +pdf poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above.&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All these steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to known how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Update Macport sources ==&lt;br /&gt;
&lt;br /&gt;
The port descriptions in Macports do not currently all compile properly with their Universal variants.   For this reason, we currently use a modified set of some of the portfiles that will compile a universal libraries.  Work is being done to integrate these changes into Macports itself.&lt;br /&gt;
&lt;br /&gt;
You can use our modified portfiles by adding our ports to your sources:&lt;br /&gt;
&lt;br /&gt;
1. Checkout our ports directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/experimental/trunk/mjwybrow/ports ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Edit your cources list to include this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
And add the following line *before* the existing rsync source:&lt;br /&gt;
&amp;lt;pre&amp;gt;file:///Users/YOURUSERNAME/directory/to/ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Run port sync&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile Inkscape's essential dependencies as Universal libraries on either 10.4 or 10.5,  by giving the &amp;quot;+universal&amp;quot; option for each, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port -v install poppler +universal gtk2 +universal ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+pdf+no_x11 cairomm +quartz pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathuniv=&amp;quot;export PATH=/opt/local-univ/bin:/opt/local-univ/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using the all in one build script [experimental] =&lt;br /&gt;
&lt;br /&gt;
To build a native-GTK build of Inkscape, GTK and some of its dependencies must be built with special options. You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).  This is a modified version of the Imendio native build script, found with instructions on this page:&lt;br /&gt;
http://developer.imendio.com/projects/gtk-macosx/build-instructions&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested. If you have any troubles using this process then please report them to Michael Wybrow (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PREFIX=/your/install/prefix&lt;br /&gt;
./build-gtk bootstrap&lt;br /&gt;
./build-gtk build inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26904</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26904"/>
		<updated>2008-04-01T23:49:37Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Compiling a Universal Binary of Inkscape with X11, using MacPorts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo +pdf boehmgc gtkmm intltool libxslt lcms popt poppler boost gnome-vfs \&lt;br /&gt;
 libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm intltool libxslt lcms popt boost&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo +pdf&amp;lt;/code&amp;gt; (cairo with the pdf variant) : better pdf export&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo +pdf poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above.&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All these steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to known how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
== Update Macport sources ==&lt;br /&gt;
&lt;br /&gt;
The port descriptions in Macports do not currently all compile properly with their Universal variants.   For this reason, we currently use a modified set of some of the portfiles that will compile a universal libraries.  Work is being done to integrate these changes into Macports itself.&lt;br /&gt;
&lt;br /&gt;
You can use our modified portfiles by adding our ports to your sources:&lt;br /&gt;
&lt;br /&gt;
1. Checkout our ports directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/experimental/trunk/mjwybrow/ports ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Edit your cources list to include this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo vim /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
And add the following line *before* the existing rsync source:&lt;br /&gt;
&amp;lt;pre&amp;gt;file:///Users/YOURUSERNAME/directory/to/ports&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Run port sync&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Universal dependencies ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile Inkscape's essential dependencies as Universal libraries on either 10.4 or 10.5,  by giving the &amp;quot;+universal&amp;quot; option for each, e.g.&lt;br /&gt;
sudo port -v install poppler +universal gtk2 +universal ...&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+pdf+no_x11 cairomm +quartz pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathuniv=&amp;quot;export PATH=/opt/local-univ/bin:/opt/local-univ/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using the all in one build script [experimental] =&lt;br /&gt;
&lt;br /&gt;
To build a native-GTK build of Inkscape, GTK and some of its dependencies must be built with special options. You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).  This is a modified version of the Imendio native build script, found with instructions on this page:&lt;br /&gt;
http://developer.imendio.com/projects/gtk-macosx/build-instructions&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested. If you have any troubles using this process then please report them to Michael Wybrow (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PREFIX=/your/install/prefix&lt;br /&gt;
./build-gtk bootstrap&lt;br /&gt;
./build-gtk build inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26894</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26894"/>
		<updated>2008-04-01T23:47:20Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Compiling a Universal Binary of Inkscape with X11, using MacPorts [in progress] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo +pdf boehmgc gtkmm intltool libxslt lcms popt poppler boost gnome-vfs \&lt;br /&gt;
 libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm intltool libxslt lcms popt boost&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo +pdf&amp;lt;/code&amp;gt; (cairo with the pdf variant) : better pdf export&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo +pdf poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above.&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All these steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to known how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts=&lt;br /&gt;
&lt;br /&gt;
These instructions should work on both 10.4 and 10.5 machines with the latest Xcode version installed.&lt;br /&gt;
&lt;br /&gt;
The port descriptions in Macports do not currently all compile properly with their Universal variants.   For this reason, we currently use a modified set of some of the portfiles that will compile a universal libraries.  Work is being done to integrate these changes into Macports itself.&lt;br /&gt;
&lt;br /&gt;
You can use our modified portfiles by adding our ports to your sources:&lt;br /&gt;
&lt;br /&gt;
1. Checkout our ports directory:&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/experimental/trunk/mjwybrow/ports ports&lt;br /&gt;
2. Edit your cources list to include this directory:&lt;br /&gt;
sudo vim /opt/local/etc/macports/sources.conf&lt;br /&gt;
And add the following line *before* the existing rsync source:&lt;br /&gt;
file:///Users/YOURUSERNAME/directory/to/ports&lt;br /&gt;
3. Run port sync&lt;br /&gt;
sudo port sync&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile Inkscape's essential dependencies as Universal libraries on either 10.4 or 10.5,  by giving the &amp;quot;+universal&amp;quot; option for each, e.g.&lt;br /&gt;
sudo port -v install poppler +universal gtk2 +universal ...&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+pdf+no_x11 cairomm +quartz pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathuniv=&amp;quot;export PATH=/opt/local-univ/bin:/opt/local-univ/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using the all in one build script [experimental] =&lt;br /&gt;
&lt;br /&gt;
To build a native-GTK build of Inkscape, GTK and some of its dependencies must be built with special options. You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).  This is a modified version of the Imendio native build script, found with instructions on this page:&lt;br /&gt;
http://developer.imendio.com/projects/gtk-macosx/build-instructions&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested. If you have any troubles using this process then please report them to Michael Wybrow (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PREFIX=/your/install/prefix&lt;br /&gt;
./build-gtk bootstrap&lt;br /&gt;
./build-gtk build inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26884</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26884"/>
		<updated>2008-04-01T23:36:22Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Compiling a Universal Binary of Inkscape with X11, using the all-in-one build script [untested] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo +pdf boehmgc gtkmm intltool libxslt lcms popt poppler boost gnome-vfs \&lt;br /&gt;
 libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm intltool libxslt lcms popt boost&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo +pdf&amp;lt;/code&amp;gt; (cairo with the pdf variant) : better pdf export&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo +pdf poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above.&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All these steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to known how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts [in progress]=&lt;br /&gt;
&lt;br /&gt;
Just use the +universal variant of everything to build universal versions.&lt;br /&gt;
&lt;br /&gt;
Port that fail currently&lt;br /&gt;
* poppler : Error: Error executing universal: Default universal variant only works with ports based on configure&lt;br /&gt;
* docbook-xsl : similar. can be build non universal it is not a runtime dependency. it is just a compile time dependency for gtk-doc. but this is a pain since one cannot just do port install gtk2 +univeral anymore because it tries to find docbook-xsl +universal. so one have to install everything by hand.&lt;br /&gt;
* more to come...&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+pdf+no_x11 cairomm +quartz pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathuniv=&amp;quot;export PATH=/opt/local-univ/bin:/opt/local-univ/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using the all in one build script [experimental] =&lt;br /&gt;
&lt;br /&gt;
To build a native-GTK build of Inkscape, GTK and some of its dependencies must be built with special options. You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).  This is a modified version of the Imendio native build script, found with instructions on this page:&lt;br /&gt;
http://developer.imendio.com/projects/gtk-macosx/build-instructions&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested. If you have any troubles using this process then please report them to Michael Wybrow (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PREFIX=/your/install/prefix&lt;br /&gt;
./build-gtk bootstrap&lt;br /&gt;
./build-gtk build inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26874</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=26874"/>
		<updated>2008-04-01T23:33:28Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= For the impatient =&lt;br /&gt;
&lt;br /&gt;
1. Install [http://developer.apple.com/tools/xcode/ XCode tools] from your OS X installation DVD&lt;br /&gt;
&lt;br /&gt;
2. Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&lt;br /&gt;
3. In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port sync&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install cairo +pdf boehmgc gtkmm intltool libxslt lcms popt poppler boost gnome-vfs \&lt;br /&gt;
 libgnomeprintui automake autoconf subversion&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grab a cup of coffee&lt;br /&gt;
&lt;br /&gt;
4. In Terminal, get and build Inkscape&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn co https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk inkscape&lt;br /&gt;
cd inkscape/packaging/macosx/&lt;br /&gt;
./osx-build.sh a c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Et voilà''. If you want to understand what you just did, read on.&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
To compile Inkscape from source you need:&lt;br /&gt;
*Mac OS X &amp;gt; 10.3&lt;br /&gt;
*XCode Tools. They are on your installation DVD, in the optional installs, or can be download from [http://developer.apple.com/tools/xcode/ Apple Developer Connection]. You can customize the install to make it smaller (avoir documentation and example software for example). You need at least: gcc, XCode, X11SDK.&lt;br /&gt;
*Inkscape's source code. You can download an [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D development snapshot] or checkout a copy of the current state of the [http://www.inkscape.org/svn.php?lang=en SVN repository] using [http://subversion.tigris.org/ subversion]. Subversion comes pre-installed on Leopard. On previous system, subversion can be installed by package management systems (see point below) or with an OS X installer [http://homepage.mac.com/martinott/ package]&lt;br /&gt;
*A means of getting Inkscape's numerous dependencies: glibmm, gtkmm, lmcs, boehmgc... We recommend the use of [http://www.macports.org/ MacPorts] right now. ([http://www.finkproject.org/ Fink] was used in the past but it no longer meets Inkscape's needs currently.)&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with X11, using MacPorts [Recommended method]=&lt;br /&gt;
&lt;br /&gt;
== Installing dependencies ==&lt;br /&gt;
You can use MacPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm intltool libxslt lcms popt boost&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt; : access to remote servers, in particular import from Open Clipart Library&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
* &amp;lt;code&amp;gt;cairo +pdf&amp;lt;/code&amp;gt; (cairo with the pdf variant) : better pdf export&lt;br /&gt;
* &amp;lt;code&amp;gt;poppler&amp;lt;/code&amp;gt; : better pdf import&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install gnome-vfs aspell libgnomeprintui loudmouth cairo +pdf poppler&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: Cairo was already installed at previous step as a GTK dependency. You need to either deactivate the old version and install this one, or directly write it on the command line above.&lt;br /&gt;
&lt;br /&gt;
In addition, Inkscape requires versions of the autotools more recent thant those that ship with OS X. Install them:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install autoconf automake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting the build environment ==&lt;br /&gt;
MacPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you need to generate the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building and Installing ==&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an .app bundle ==&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s -b /path/to/install/prefix/bin/inkscape -p ../../Info.plist&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
== Creating a disk image to distribute Inkscape ==&lt;br /&gt;
Inkscape.app created at the previous step is completely independent from the original location of MacPorts libraries and can therefore be distributed. It will only work on your platform though (PPC or Intel) and incompatibilities are known between X11 versions on different major versions of OS X (Panther, Tiger and Leopard). The general rule is that versions are not backward compatible.&lt;br /&gt;
&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background and all, using the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh -p Inkscape.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X (where your app bundle should be, otherwise modify the path to Inkscape.app).&lt;br /&gt;
&lt;br /&gt;
== Automated build script ==&lt;br /&gt;
All these steps are automated by a build script: &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt;. It has built-in help so to known how to use it just type:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using the all-in-one build script [untested]=&lt;br /&gt;
&lt;br /&gt;
To build a Universal Binary of Inkscape you also need to build Universal versions of all its dependencies (i.e., gtk+, cairo, pango, etc).  You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested, as it is only being used by Michael Wybrow  for official Inkscape release builds.  If you have any troubles using this process then please report them to Michael (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PREFIX=/your/install/prefix&lt;br /&gt;
export UNIVERSAL_BUILD=Yes&lt;br /&gt;
./build-gtk bootstrap&lt;br /&gt;
./build-gtk build inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Compiling a Universal Binary of Inkscape with X11, using MacPorts [in progress]=&lt;br /&gt;
&lt;br /&gt;
Just use the +universal variant of everything to build universal versions.&lt;br /&gt;
&lt;br /&gt;
Port that fail currently&lt;br /&gt;
* poppler : Error: Error executing universal: Default universal variant only works with ports based on configure&lt;br /&gt;
* docbook-xsl : similar. can be build non universal it is not a runtime dependency. it is just a compile time dependency for gtk-doc. but this is a pain since one cannot just do port install gtk2 +univeral anymore because it tries to find docbook-xsl +universal. so one have to install everything by hand.&lt;br /&gt;
* more to come...&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using MacPorts [experimental] =&lt;br /&gt;
This process is very similar to compiling an X11 version of Inkscape except for the building of dependencies: need to build native versions of Inkscape dependencies. At the moment (2007-12-17) this process does not produce a usable version of Inkscape but the more people try to use it, the quicker the bugs will be ironed out!&lt;br /&gt;
&lt;br /&gt;
== Native version of Inkscape dependencies ==&lt;br /&gt;
Thanks to the power of port &amp;quot;variants&amp;quot; and port &amp;quot;deactivation&amp;quot; you can install native versions of gtk, cairo, pango and such, alongside the regular X11 ones. To know which ports have a &amp;lt;code&amp;gt;quartz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no_x11&amp;lt;/code&amp;gt; variant, use the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;port list variant:quartz variant:no_x11&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you an idea of what need to be replaced.&lt;br /&gt;
&lt;br /&gt;
Assuming your MacPorts tree has been already used to build regular versions of Inkscape, you first need to deactivate (suppress from the tree without really uninstalling) the X11 versions of gtk, cairo, cairomm and pango:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port deactivate gtk2 cairo cairomm pango&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install native variants:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install cairo +quartz+pdf+no_x11 cairomm +quartz pango +no_x11 poppler +quartz gtk2 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than deactivating and reactivating ports, you can also keep two MacPorts trees side by side, provided you install the second one from source. Let say I want to install a new tree for native versions in /opt/local/native, I would do&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin&lt;br /&gt;
cd ~/MacPorts-1.x.x/&lt;br /&gt;
./configure --prefix=/opt/local-native --with-tclpackage=/Library/Tcl/macports-native&lt;br /&gt;
make&lt;br /&gt;
sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you need to have only one version of the port command in the path at any time so you need to setup your .bashrc (or .bash_profile or .profile) accordingly. I use shell aliases to quickly and temporarily switch to the universal version:&lt;br /&gt;
&amp;lt;pre&amp;gt;alias portpathregular=&amp;quot;export PATH=/opt/local/bin:/opt/local/sbin:/Developer/Tools:/usr/local/bin: \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
alias portpathuniv=&amp;quot;export PATH=/opt/local-univ/bin:/opt/local-univ/sbin:/Developer/Tools:/usr/local/bin:  \&lt;br /&gt;
/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
NB: the \ are just to mark line continuation here, suppress them and put everything in one line.&lt;br /&gt;
&lt;br /&gt;
== Install the rest ==&lt;br /&gt;
Eventually, follow the regular install procedure for the rest:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install libxslt boost boehmgc gtkmm lcms intltool popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your MacPorts tree was already ready to compile Inkscape, you should not need to reinstall anything, with the possible exception of gtkmm, which may need to be rebuilt against the native version of gtk rather than against the X11 one (please someone confirm this).&lt;br /&gt;
&lt;br /&gt;
Get inkscape source code and go in the mac OS X specific packaging directory&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
There edit &amp;lt;code&amp;gt;osx-build.sh&amp;lt;/code&amp;gt; to remove the configure option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; because it puts inkscape in a .app bundle where it is started together with X11, which would defeat the purpose of this native compilation. You can also specify an alternative install prefix if you want. Then&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh u a c b i&amp;lt;/pre&amp;gt;&lt;br /&gt;
and a native version of Inkscape is installed in the prefix you specified or in the &amp;lt;code&amp;gt;Build/bin&amp;lt;/code&amp;gt; directory of Inkscape's source code. You can test it by&lt;br /&gt;
&amp;lt;pre&amp;gt; cd ../../Build/bin/&lt;br /&gt;
./inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: if you compiled a GTK theme engine against your old GTK install (i.e. the one with X11) and try to use it with the new install, it will complain, so edit &amp;lt;code&amp;gt;~/.gtkrc-2.0&amp;lt;/code&amp;gt; to remove the offending theme or recompile it with the new native GTK.&lt;br /&gt;
&lt;br /&gt;
= Compiling Inkscape with native GTK using the all in one build script [experimental] =&lt;br /&gt;
&lt;br /&gt;
To build a native-GTK build of Inkscape, GTK and some of its dependencies must be built with special options. You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).  This is a modified version of the Imendio native build script, found with instructions on this page:&lt;br /&gt;
http://developer.imendio.com/projects/gtk-macosx/build-instructions&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested. If you have any troubles using this process then please report them to Michael Wybrow (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PREFIX=/your/install/prefix&lt;br /&gt;
./build-gtk bootstrap&lt;br /&gt;
./build-gtk build inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Enabling python effects =&lt;br /&gt;
moved to [[GettingEffectsWorking]]. They should work out of the box in the new versions anyway.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
== User Examples ==&lt;br /&gt;
* Adam Strzeleki has outlined some improvements to this process on the Inkscape [http://www.nabble.com/Inkscape-native-Mac-OS-X-build---look-improvements-td14733036.html email list]. See his screenshot from January 10, 2008 [http://www.nabble.com/attachment/14733036/1/Inkscape%20OSX%20PL.gif here].&lt;br /&gt;
* JiHO has a video of his builds [http://jo.irisson.free.fr/?p=34 here] and [http://jo.irisson.free.fr/?p=62 here].&lt;br /&gt;
&lt;br /&gt;
== Apple Documentation ==&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=14467</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=14467"/>
		<updated>2007-04-29T23:53:04Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Compiling Inkscape as a native application (no X11) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Requirements ==&lt;br /&gt;
To compile Inkscape from source you will need:&lt;br /&gt;
*Mac OS X 10.4 (10.3 support is on the way, you are welcome to help if you still have a machine running 10.3)&lt;br /&gt;
*XCode 2.3 on OS X 10.4 (i.e. with gcc 4.0.1)&lt;br /&gt;
*Inkscape's source code. You can get the [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D SVN snapshot] or a copy of the [http://www.inkscape.org/svn.php?lang=en SVN repository].&lt;br /&gt;
*Inkscape's dependencies, for example glibmm, gtkmm, lmcs, boehm gc... You can use a package distribution system ([http://www.finkproject.org/ Fink] or [http://www.macports.org/ MacPorts], formerly known as [http://darwinports.opendarwin.org/ DarwinPorts]) or Inkscape all-in-one universal build script to install them. Inkscape requires a recent version of gtk, hence only MacPorts can be used at the moment. Once Fink updates gtk it should not be a problem to use it.&lt;br /&gt;
&lt;br /&gt;
== Compiling Inkscape using Mac/DarwinPorts ==&lt;br /&gt;
&lt;br /&gt;
=== Installing dependencies ===&lt;br /&gt;
You can use DarwinPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm gnome-vfs intltool libxslt lcms popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X]&lt;br /&gt;
* &amp;lt;code&amp;gt;boost&amp;lt;/code&amp;gt; : auto-organisation of connectors [Note: is boost still needed?]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install aspell boost libgnomeprintui loudmouth&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== For the impatient ===&lt;br /&gt;
There is an automated build script for Mac OS X included with Inkscape source code, in the directory packaging/macosx. It has builtin help:&lt;br /&gt;
&amp;lt;pre&amp;gt; cd packaging/macosx/&lt;br /&gt;
./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Basically to configure, build, install and package Inkscape into a double clickable app bundle you just need to issue the command&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh conf build install -s package&amp;lt;/pre&amp;gt;&lt;br /&gt;
or more simply&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step by step instructions ===&lt;br /&gt;
If you want to know what you do or to understand how the build script works, please read the following paragraphs.&lt;br /&gt;
&lt;br /&gt;
==== Setting the build environment ====&lt;br /&gt;
DarwinPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuring ====&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you probably need to build the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and  &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to do it), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Building and Installing ====&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Creating an .app bundle ====&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s /path/to/install/prefix/bin/inkscape ../Info.plist macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
==== Creating a disk image to distribute Inkscape ====&lt;br /&gt;
Inkscape.app created at the previous step is completely independant from the original location of the librairies and can therefore be distributed. It will only work on one platform though (PPC or Intel): the one you built it on.&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background, with the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X.&lt;br /&gt;
&lt;br /&gt;
== Compiling a universal binary of Inkscape using the all-in-one build script ==&lt;br /&gt;
&lt;br /&gt;
To build a universal build of Inkscape you also need to build Universal versions of all its dependencies (i.e., gtk+, cairo, pango, etc).  You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested, as it is only being used by Michael Wybrow  for official Inkscape release builds.  If you have any troubles using this process then please report them to Michael (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
        export PREFIX=/your/install/prefix&lt;br /&gt;
        export UNIVERSAL_BUILD=Yes&lt;br /&gt;
        ./build-gtk bootstrap&lt;br /&gt;
        ./build-gtk build inkscape&lt;br /&gt;
&lt;br /&gt;
== Compiling Inkscape as a native application (no X11) ==&lt;br /&gt;
&lt;br /&gt;
To build a native-GTK build of Inkscape, GTK and some of its dependencies must be built with special options. You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).  This is a modified version of the Imendio native build script, found with instructions on this page:&lt;br /&gt;
http://developer.imendio.com/projects/gtk-macosx/build-instructions&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested. If you have any troubles using this process then please report them to Michael Wybrow (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
       export PREFIX=/your/install/prefix&lt;br /&gt;
       ./build-gtk bootstrap&lt;br /&gt;
       ./build-gtk build inkscape&lt;br /&gt;
&lt;br /&gt;
== Enabling python effects ==&lt;br /&gt;
Many &amp;quot;effects&amp;quot; in the Effect menu of Inkscape use python as a scripting language. Mac OS X ships with python but without some packages that Inkscape uses: [http://pyxml.sourceforge.net/ pyXML] and [http://numpy.scipy.org/ numpy].&lt;br /&gt;
&lt;br /&gt;
=== Binary packages ===&lt;br /&gt;
You can install a binary version compiled by us (thanks to krolco for the Intel version) downloadable with the developement builds of Inkscape:&lt;br /&gt;
:http://inkscape.modevia.com/macosx-snap/?M=D&lt;br /&gt;
or in an official stable package for 0.44.PPC or later (their name contains &amp;quot;+python&amp;quot;). &lt;br /&gt;
You need to copy the folders for pyXML (_xmlplus) and numpy (numpy) to /Library/Python/2.3/site-packages/ (there is a link in the dmg on which the folders can be droped).&lt;br /&gt;
&lt;br /&gt;
=== Compiling from source ===&lt;br /&gt;
If you prefer or if you are on an Intel machine, you can install them from source, it is really easy.&lt;br /&gt;
&lt;br /&gt;
==== pyXML ====&lt;br /&gt;
# download the source code from [http://sourceforge.net/project/showfiles.php?group_id=6473 sourceforge]&lt;br /&gt;
# unpack the &amp;lt;code&amp;gt;.tar.gz&amp;lt;/code&amp;gt; file&lt;br /&gt;
# cd into the newly created directory&lt;br /&gt;
# set the variable &amp;lt;code&amp;gt;MACOSX_DEPLOYMENT_TARGET&amp;lt;/code&amp;gt; to version of your operating system (10.3 for Panther, 10.4 for Tiger, 10.5 for Leopard. It probably won't work on previous systems). In bash syntax this means typing:&amp;lt;pre&amp;gt;export MACOSX_DEPLOYMENT_TARGET=10.?&amp;lt;/pre&amp;gt;&lt;br /&gt;
# move the python files and build C extensions by just typing &amp;lt;pre&amp;gt;python setup.py build&amp;lt;/pre&amp;gt;&lt;br /&gt;
# install (the install is system wide so you need administrator rights)&amp;lt;pre&amp;gt;sudo python setup.py install&amp;lt;/pre&amp;gt;and type your password.&lt;br /&gt;
&lt;br /&gt;
==== numpy ====&lt;br /&gt;
# download the source code from [http://sourceforge.net/project/showfiles.php?group_id=1369&amp;amp;package_id=175103 sourceforge]&lt;br /&gt;
# unpack the &amp;lt;code&amp;gt;.tar.gz&amp;lt;/code&amp;gt; file&lt;br /&gt;
# cd into the newly created directory&lt;br /&gt;
# build C extensions and install (the install is system wide so you need administrator rights)&amp;lt;pre&amp;gt;sudo python setup.py install&amp;lt;/pre&amp;gt;and type your password.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
=== Apple Documentation ===&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
=== Packaging ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=14465</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=14465"/>
		<updated>2007-04-29T23:47:53Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Compiling a universal binary of Inkscape using the all-in-one build script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Requirements ==&lt;br /&gt;
To compile Inkscape from source you will need:&lt;br /&gt;
*Mac OS X 10.4 (10.3 support is on the way, you are welcome to help if you still have a machine running 10.3)&lt;br /&gt;
*XCode 2.3 on OS X 10.4 (i.e. with gcc 4.0.1)&lt;br /&gt;
*Inkscape's source code. You can get the [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D SVN snapshot] or a copy of the [http://www.inkscape.org/svn.php?lang=en SVN repository].&lt;br /&gt;
*Inkscape's dependencies, for example glibmm, gtkmm, lmcs, boehm gc... You can use a package distribution system ([http://www.finkproject.org/ Fink] or [http://www.macports.org/ MacPorts], formerly known as [http://darwinports.opendarwin.org/ DarwinPorts]) or Inkscape all-in-one universal build script to install them. Inkscape requires a recent version of gtk, hence only MacPorts can be used at the moment. Once Fink updates gtk it should not be a problem to use it.&lt;br /&gt;
&lt;br /&gt;
== Compiling Inkscape using Mac/DarwinPorts ==&lt;br /&gt;
&lt;br /&gt;
=== Installing dependencies ===&lt;br /&gt;
You can use DarwinPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm gnome-vfs intltool libxslt lcms popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X]&lt;br /&gt;
* &amp;lt;code&amp;gt;boost&amp;lt;/code&amp;gt; : auto-organisation of connectors [Note: is boost still needed?]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install aspell boost libgnomeprintui loudmouth&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== For the impatient ===&lt;br /&gt;
There is an automated build script for Mac OS X included with Inkscape source code, in the directory packaging/macosx. It has builtin help:&lt;br /&gt;
&amp;lt;pre&amp;gt; cd packaging/macosx/&lt;br /&gt;
./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Basically to configure, build, install and package Inkscape into a double clickable app bundle you just need to issue the command&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh conf build install -s package&amp;lt;/pre&amp;gt;&lt;br /&gt;
or more simply&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step by step instructions ===&lt;br /&gt;
If you want to know what you do or to understand how the build script works, please read the following paragraphs.&lt;br /&gt;
&lt;br /&gt;
==== Setting the build environment ====&lt;br /&gt;
DarwinPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuring ====&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you probably need to build the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and  &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to do it), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Building and Installing ====&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Creating an .app bundle ====&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s /path/to/install/prefix/bin/inkscape ../Info.plist macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
==== Creating a disk image to distribute Inkscape ====&lt;br /&gt;
Inkscape.app created at the previous step is completely independant from the original location of the librairies and can therefore be distributed. It will only work on one platform though (PPC or Intel): the one you built it on.&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background, with the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X.&lt;br /&gt;
&lt;br /&gt;
== Compiling a universal binary of Inkscape using the all-in-one build script ==&lt;br /&gt;
&lt;br /&gt;
To build a universal build of Inkscape you also need to build Universal versions of all its dependencies (i.e., gtk+, cairo, pango, etc).  You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested, as it is only being used by Michael Wybrow  for official Inkscape release builds.  If you have any troubles using this process then please report them to Michael (mjwybrow on sourceforge).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
        export PREFIX=/your/install/prefix&lt;br /&gt;
        export UNIVERSAL_BUILD=Yes&lt;br /&gt;
        ./build-gtk bootstrap&lt;br /&gt;
        ./build-gtk build inkscape&lt;br /&gt;
&lt;br /&gt;
== Compiling Inkscape as a native application (no X11) ==&lt;br /&gt;
Derek Hinchliffe's text to go here&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Enabling python effects ==&lt;br /&gt;
Many &amp;quot;effects&amp;quot; in the Effect menu of Inkscape use python as a scripting language. Mac OS X ships with python but without some packages that Inkscape uses: [http://pyxml.sourceforge.net/ pyXML] and [http://numpy.scipy.org/ numpy].&lt;br /&gt;
&lt;br /&gt;
=== Binary packages ===&lt;br /&gt;
You can install a binary version compiled by us (thanks to krolco for the Intel version) downloadable with the developement builds of Inkscape:&lt;br /&gt;
:http://inkscape.modevia.com/macosx-snap/?M=D&lt;br /&gt;
or in an official stable package for 0.44.PPC or later (their name contains &amp;quot;+python&amp;quot;). &lt;br /&gt;
You need to copy the folders for pyXML (_xmlplus) and numpy (numpy) to /Library/Python/2.3/site-packages/ (there is a link in the dmg on which the folders can be droped).&lt;br /&gt;
&lt;br /&gt;
=== Compiling from source ===&lt;br /&gt;
If you prefer or if you are on an Intel machine, you can install them from source, it is really easy.&lt;br /&gt;
&lt;br /&gt;
==== pyXML ====&lt;br /&gt;
# download the source code from [http://sourceforge.net/project/showfiles.php?group_id=6473 sourceforge]&lt;br /&gt;
# unpack the &amp;lt;code&amp;gt;.tar.gz&amp;lt;/code&amp;gt; file&lt;br /&gt;
# cd into the newly created directory&lt;br /&gt;
# set the variable &amp;lt;code&amp;gt;MACOSX_DEPLOYMENT_TARGET&amp;lt;/code&amp;gt; to version of your operating system (10.3 for Panther, 10.4 for Tiger, 10.5 for Leopard. It probably won't work on previous systems). In bash syntax this means typing:&amp;lt;pre&amp;gt;export MACOSX_DEPLOYMENT_TARGET=10.?&amp;lt;/pre&amp;gt;&lt;br /&gt;
# move the python files and build C extensions by just typing &amp;lt;pre&amp;gt;python setup.py build&amp;lt;/pre&amp;gt;&lt;br /&gt;
# install (the install is system wide so you need administrator rights)&amp;lt;pre&amp;gt;sudo python setup.py install&amp;lt;/pre&amp;gt;and type your password.&lt;br /&gt;
&lt;br /&gt;
==== numpy ====&lt;br /&gt;
# download the source code from [http://sourceforge.net/project/showfiles.php?group_id=1369&amp;amp;package_id=175103 sourceforge]&lt;br /&gt;
# unpack the &amp;lt;code&amp;gt;.tar.gz&amp;lt;/code&amp;gt; file&lt;br /&gt;
# cd into the newly created directory&lt;br /&gt;
# build C extensions and install (the install is system wide so you need administrator rights)&amp;lt;pre&amp;gt;sudo python setup.py install&amp;lt;/pre&amp;gt;and type your password.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
=== Apple Documentation ===&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
=== Packaging ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=14463</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=14463"/>
		<updated>2007-04-29T23:47:09Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Compiling a universal binary of Inkscape using the all-in-one build script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Requirements ==&lt;br /&gt;
To compile Inkscape from source you will need:&lt;br /&gt;
*Mac OS X 10.4 (10.3 support is on the way, you are welcome to help if you still have a machine running 10.3)&lt;br /&gt;
*XCode 2.3 on OS X 10.4 (i.e. with gcc 4.0.1)&lt;br /&gt;
*Inkscape's source code. You can get the [http://www.inkscape.org/download.php official release source code], a [http://inkscape.modevia.com/svn-snap/?M=D SVN snapshot] or a copy of the [http://www.inkscape.org/svn.php?lang=en SVN repository].&lt;br /&gt;
*Inkscape's dependencies, for example glibmm, gtkmm, lmcs, boehm gc... You can use a package distribution system ([http://www.finkproject.org/ Fink] or [http://www.macports.org/ MacPorts], formerly known as [http://darwinports.opendarwin.org/ DarwinPorts]) or Inkscape all-in-one universal build script to install them. Inkscape requires a recent version of gtk, hence only MacPorts can be used at the moment. Once Fink updates gtk it should not be a problem to use it.&lt;br /&gt;
&lt;br /&gt;
== Compiling Inkscape using Mac/DarwinPorts ==&lt;br /&gt;
&lt;br /&gt;
=== Installing dependencies ===&lt;br /&gt;
You can use DarwinPorts to list Inkscape dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;port deps inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some are mandatory and you can install them with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install boehmgc gtkmm gnome-vfs intltool libxslt lcms popt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Others provide additional functionality to Inkscape:&lt;br /&gt;
* &amp;lt;code&amp;gt;aspell&amp;lt;/code&amp;gt; : check spelling of text elements [Note: I have never seen it working on OS X]&lt;br /&gt;
* &amp;lt;code&amp;gt;boost&amp;lt;/code&amp;gt; : auto-organisation of connectors [Note: is boost still needed?]&lt;br /&gt;
* &amp;lt;code&amp;gt;libgnomeprintui&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth&amp;lt;/code&amp;gt; : jabber library used by InkBoard&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port install aspell boost libgnomeprintui loudmouth&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== For the impatient ===&lt;br /&gt;
There is an automated build script for Mac OS X included with Inkscape source code, in the directory packaging/macosx. It has builtin help:&lt;br /&gt;
&amp;lt;pre&amp;gt; cd packaging/macosx/&lt;br /&gt;
./osx-build.sh help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Basically to configure, build, install and package Inkscape into a double clickable app bundle you just need to issue the command&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh conf build install -s package&amp;lt;/pre&amp;gt;&lt;br /&gt;
or more simply&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-build.sh c b i -s p&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step by step instructions ===&lt;br /&gt;
If you want to know what you do or to understand how the build script works, please read the following paragraphs.&lt;br /&gt;
&lt;br /&gt;
==== Setting the build environment ====&lt;br /&gt;
DarwinPorts's hierarchy (/opt/local/) is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. &lt;br /&gt;
&amp;lt;pre&amp;gt;export LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
#  automake seach path&lt;br /&gt;
export CPATH=&amp;quot;$LIBPREFIX/include&amp;quot;&lt;br /&gt;
#  configure search path&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$LIBPREFIX/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot;&lt;br /&gt;
#  compiler arguments&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Ccache ccache]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sudo port install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, add compiler variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuring ====&lt;br /&gt;
If you compile Inkscape for the first time from an svn checkout you probably need to build the configure script. Navigate to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;./autogen.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run configure with the options &amp;lt;code&amp;gt;--disable-static --enable-shared&amp;lt;/code&amp;gt; and  &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; which sets the directory where the build products are placed. It must be somewhere you have write access to.&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --disable-static --enable-shared --prefix=/path/to/build/products/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I you want to package Inkscape into a double-clickable &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application (you probably want to do it), you need to add the option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure {...} --enable-osxapp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have loudmouth installed and you want to enable whiteboard functionality in Inkscape, add &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other configuration options can be set, check the list of options by issuing:&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Building and Installing ====&lt;br /&gt;
Just run:&lt;br /&gt;
&amp;lt;pre&amp;gt;make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Creating an .app bundle ====&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, navigate to Mac OS X packaging directory in Inkscape source code and use the automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd packaging/macosx&lt;br /&gt;
./osx-app.sh -s /path/to/install/prefix/bin/inkscape ../Info.plist macosx&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script copies Inkscape binary and all its dependencies into the app bundle. The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options strips libraries from debugging information (the bundle is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
==== Creating a disk image to distribute Inkscape ====&lt;br /&gt;
Inkscape.app created at the previous step is completely independant from the original location of the librairies and can therefore be distributed. It will only work on one platform though (PPC or Intel): the one you built it on.&lt;br /&gt;
The most widespread way of distributing applications on Mac OS X is via .dmg images. You can created a dmg image of Inkscape, with a nice background, with the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;./osx-dmg.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
in the packaging directory for Mac OS X.&lt;br /&gt;
&lt;br /&gt;
== Compiling a universal binary of Inkscape using the all-in-one build script ==&lt;br /&gt;
&lt;br /&gt;
To build a universal build of Inkscape you also need to build Universal versions of all its dependencies (i.e., gtk+, cairo, pango, etc).  You can do this using the build-gtk.sh script from the Inkscape repository (it's in packaging/macosx/native-gtk/).&lt;br /&gt;
&lt;br /&gt;
This process is relatively untested, as it is only being used by Michael Wybrow  for official Inkscape release builds.  If you have any troubles using this process then please report them to Michael (mjwybrow at users.sf.net).&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
        export PREFIX=/your/install/prefix&lt;br /&gt;
        export UNIVERSAL_BUILD=Yes&lt;br /&gt;
        ./build-gtk bootstrap&lt;br /&gt;
        ./build-gtk build inkscape&lt;br /&gt;
&lt;br /&gt;
== Compiling Inkscape as a native application (no X11) ==&lt;br /&gt;
Derek Hinchliffe's text to go here&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Enabling python effects ==&lt;br /&gt;
Many &amp;quot;effects&amp;quot; in the Effect menu of Inkscape use python as a scripting language. Mac OS X ships with python but without some packages that Inkscape uses: [http://pyxml.sourceforge.net/ pyXML] and [http://numpy.scipy.org/ numpy].&lt;br /&gt;
&lt;br /&gt;
=== Binary packages ===&lt;br /&gt;
You can install a binary version compiled by us (thanks to krolco for the Intel version) downloadable with the developement builds of Inkscape:&lt;br /&gt;
:http://inkscape.modevia.com/macosx-snap/?M=D&lt;br /&gt;
or in an official stable package for 0.44.PPC or later (their name contains &amp;quot;+python&amp;quot;). &lt;br /&gt;
You need to copy the folders for pyXML (_xmlplus) and numpy (numpy) to /Library/Python/2.3/site-packages/ (there is a link in the dmg on which the folders can be droped).&lt;br /&gt;
&lt;br /&gt;
=== Compiling from source ===&lt;br /&gt;
If you prefer or if you are on an Intel machine, you can install them from source, it is really easy.&lt;br /&gt;
&lt;br /&gt;
==== pyXML ====&lt;br /&gt;
# download the source code from [http://sourceforge.net/project/showfiles.php?group_id=6473 sourceforge]&lt;br /&gt;
# unpack the &amp;lt;code&amp;gt;.tar.gz&amp;lt;/code&amp;gt; file&lt;br /&gt;
# cd into the newly created directory&lt;br /&gt;
# set the variable &amp;lt;code&amp;gt;MACOSX_DEPLOYMENT_TARGET&amp;lt;/code&amp;gt; to version of your operating system (10.3 for Panther, 10.4 for Tiger, 10.5 for Leopard. It probably won't work on previous systems). In bash syntax this means typing:&amp;lt;pre&amp;gt;export MACOSX_DEPLOYMENT_TARGET=10.?&amp;lt;/pre&amp;gt;&lt;br /&gt;
# move the python files and build C extensions by just typing &amp;lt;pre&amp;gt;python setup.py build&amp;lt;/pre&amp;gt;&lt;br /&gt;
# install (the install is system wide so you need administrator rights)&amp;lt;pre&amp;gt;sudo python setup.py install&amp;lt;/pre&amp;gt;and type your password.&lt;br /&gt;
&lt;br /&gt;
==== numpy ====&lt;br /&gt;
# download the source code from [http://sourceforge.net/project/showfiles.php?group_id=1369&amp;amp;package_id=175103 sourceforge]&lt;br /&gt;
# unpack the &amp;lt;code&amp;gt;.tar.gz&amp;lt;/code&amp;gt; file&lt;br /&gt;
# cd into the newly created directory&lt;br /&gt;
# build C extensions and install (the install is system wide so you need administrator rights)&amp;lt;pre&amp;gt;sudo python setup.py install&amp;lt;/pre&amp;gt;and type your password.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
=== Apple Documentation ===&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
=== Packaging ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=8326</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=8326"/>
		<updated>2006-09-14T14:09:05Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Creating a more complete .dmg */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Compiling on Mac OS X ==&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
To compile Inkscape from source you will need:&lt;br /&gt;
*Mac OS X 10.3 (Power PC) or higher&lt;br /&gt;
*A full [http://fink.sourceforge.net/faq/usage-fink.php?phpLang=en#unstable unstable fink] installation&lt;br /&gt;
*Inkscape's source code. You can get the [http://www.inkscape.org/download.php official release source code], a [http://www.inkscape.org/cvs-snap/ SVN snapshot] or a copy of the [http://www.inkscape.org/svn.php?lang=en SVN repository].&lt;br /&gt;
*A [http://darwinports.opendarwin.org/ DarwinPorts] install if you want to use inkboard.&lt;br /&gt;
*XCode 2.3 on OS X 10.4 (gcc 4.0.1)&lt;br /&gt;
&lt;br /&gt;
You need to install software on which Inkscape depends, using Fink and/or DarwinPorts.&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
They are necessary for Inkscape to compile. In a Terminal type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fink install \&lt;br /&gt;
        intltool \&lt;br /&gt;
        glib2 glib2-dev glib2-shlibs \&lt;br /&gt;
        gtk+2 gtk+2-shlibs gtk+2-dev \&lt;br /&gt;
        libpng3 libpng3-shlibs \&lt;br /&gt;
        libsigc++2 libsigc++2-shlibs \&lt;br /&gt;
        gtkmm2.4 gtkmm2.4-dev gtkmm2.4-shlibs \&lt;br /&gt;
        libtool14 libtool14-shlibs \&lt;br /&gt;
        libxml2 libxml2-shlibs \&lt;br /&gt;
        popt popt-shlibs \&lt;br /&gt;
        gc gc-shlibs \&lt;br /&gt;
        automake1.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You need version 1.8 of automake 1.8 (and not 1.9, the latest in Fink). Fink installs many packages from source so this is usually long.&lt;br /&gt;
&lt;br /&gt;
You may also need to build popt from source (tested on 10.4): &lt;br /&gt;
[ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.1.x/popt-1.7.tar.gz]&lt;br /&gt;
&lt;br /&gt;
(Since May 2006, the version of sigc++ required when using gcc 4 is 2.0.12 or greater.  For a short time, only 2.0.11 was available in Fink.  The latest version of libsigc++2, version 2.0.17, has now been added to fink unstable so everything should compile normally again.)&lt;br /&gt;
&lt;br /&gt;
=== Optional Features ===&lt;br /&gt;
&lt;br /&gt;
To enable some additional functionality in Inkscape you might want to install:&lt;br /&gt;
* &amp;lt;code&amp;gt;lcms&amp;lt;/code&amp;gt; : color management via LittleCMS&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth &amp;gt;= 1.0&amp;lt;/code&amp;gt; : collaborative whiteboard (only available in DarwinPorts)&lt;br /&gt;
* &amp;lt;code&amp;gt;boost &amp;gt;= 1.32&amp;lt;/code&amp;gt; : auto-organisation of connectors&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-print&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;xft2&amp;lt;/code&amp;gt;&lt;br /&gt;
for each of these you need the developement packages as well (the name ends by &amp;lt;code&amp;gt;-dev&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Easy Compile ===&lt;br /&gt;
&lt;br /&gt;
You can try to download this [http://jo.irisson.free.fr/dropbox/inkscape/makeosx.sh bash script] which automates the processes of updating Inkscape from the svn repository, setting the build environment, building and producing a simple package of Inkscape. Modify it with your favorite text editor in order to set a correct install prefix and to change configuration options.&lt;br /&gt;
&lt;br /&gt;
Check Inkscape source code [http://www.inkscape.org/svn.php?lang=en from svn] and copy the script to the base of your local svn repository. Make it executable:&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod +x makeosx.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
and then simply run it&lt;br /&gt;
&amp;lt;pre&amp;gt;./makeosx.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If something doesn't run smoothly, refer to the indications underneath.&lt;br /&gt;
&lt;br /&gt;
=== Setting the build environment ===&lt;br /&gt;
&lt;br /&gt;
Fink's hierarchy is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. You can create a file named &amp;lt;code&amp;gt;set_env_variables.sh&amp;lt;/code&amp;gt; and copy/paste this inside:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FINK=&amp;quot;/sw&amp;quot;&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$FINK/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$FINK/lib&amp;quot;&lt;br /&gt;
export CPATH=&amp;quot;$FINK/include&amp;quot;&lt;br /&gt;
export PATH=&amp;quot;/usr/X11R6/bin:$PATH&amp;quot;&lt;br /&gt;
export LIBRARY_PATH=&amp;quot;/usr/X11R6/lib:$FINK/lib&amp;quot;&lt;br /&gt;
export PKG_CONFIG_PATH=&amp;quot;$FINK/lib/pkgconfig&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, you must make sure that Inkscape is compiled with the compiler version that Fink uses, otherwise Inkscape will not link properly. To determine which compiler to use type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
head -n 5 $FINK/etc/fink.conf | grep &amp;quot;Distribution&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your fink distribution is 10.4 add:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export CC=&amp;quot;gcc-4.0&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;g++-4.0&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to &amp;lt;code&amp;gt;set_env_variables.sh&amp;lt;/code&amp;gt;, else (10.3, 10.4-transitional) add:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export CC=&amp;quot;gcc-3.3&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;g++-3.3&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;ccache&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;fink install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, modify the compiler lines accordingly:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export CC=&amp;quot;ccache gcc-??&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++-??&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eventually, open a Terminal and, in the directory where you created the file &amp;lt;code&amp;gt;set_env_variables.sh&amp;lt;/code&amp;gt;, type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bash; source set_env_variables.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configuring ===&lt;br /&gt;
&lt;br /&gt;
You might need to build the configure script first (if you compile Inkscape for the first time). Cd to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./autogen.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run the configure script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure --prefix=/path/to/build/products/ --enable-osxapp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; option sets the directory where the build products are placed. It must be somewhere you have write access to. The option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; allows you to package Inkscape into an &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application. Remove this option if you only want to build Inskscape, not to package it afterwards. Of course you can add here classic configuration options such as &amp;lt;code&amp;gt;--enable-lcms&amp;lt;/code&amp;gt; for color management or &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt; for whitboard functionality.&lt;br /&gt;
&lt;br /&gt;
=== Starting the Build ===&lt;br /&gt;
&lt;br /&gt;
Piece of cake:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Packaging Inkscape into an .app bundle ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Creating the .app and a simple .dmg ===&lt;br /&gt;
&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, the process is fully automatized. You just have to open a Terminal, cd to Inkscape's sources directory and type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd packaging&lt;br /&gt;
./osx-app.sh -s /path/to/build/products/bin/inkscape ../Info.plist macosx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options produces an app bundle stripped of debugging information (which is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
Either way, this creates two files in current directory: Inkscape.app that you can copy to your Applications directory and Inkscape.dmg for distribution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Creating a more complete .dmg ===&lt;br /&gt;
&lt;br /&gt;
The steps that used to comprise this section have since been integrated into the official Inkscape.app build script, refered to above.&lt;br /&gt;
&lt;br /&gt;
== Enabling python effects ==&lt;br /&gt;
&lt;br /&gt;
Many &amp;quot;effects&amp;quot; in the Effect menu of Inkscape use python as a scripting language. Mac OS X ships with python but not with pyXML which is needed by Inkscape effects. &lt;br /&gt;
You can install a binary version downloadable with the developement builds of Inkscape:&lt;br /&gt;
&lt;br /&gt;
:http://inkscape.modevia.com/macosx-snap/?M=D&lt;br /&gt;
&lt;br /&gt;
Or you can install it from source:&lt;br /&gt;
# download the source code from [http://sourceforge.net/project/showfiles.php?group_id=6473 sourceforge]&lt;br /&gt;
# unpack the &amp;lt;code&amp;gt;.tar.gz&amp;lt;/code&amp;gt; file&lt;br /&gt;
# cd into the newly created directory&lt;br /&gt;
# set the variable &amp;lt;code&amp;gt;MACOSX_DEPLOYMENT_TARGET&amp;lt;/code&amp;gt; to the number of your operating system (10.3 for Panther, 10.4 for Tiger. It probably won't work on previous systems). In bash syntax this means typing:&amp;lt;pre&amp;gt;export MACOSX_DEPLOYMENT_TARGET=10.?&amp;lt;/pre&amp;gt;&lt;br /&gt;
# move the python files and build C extensions&amp;lt;pre&amp;gt;python setup.py build&amp;lt;/pre&amp;gt;&lt;br /&gt;
# install (the install is system wide so you need administrator rights)&amp;lt;pre&amp;gt;sudo python setup.py install&amp;lt;/pre&amp;gt;and type your password.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
=== Apple Documentation ===&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
=== Packaging ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=6522</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=6522"/>
		<updated>2006-05-26T05:55:47Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Dependencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Compiling on Mac OS X ==&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
To compile Inkscape from source you will need:&lt;br /&gt;
*Mac OS X 10.3 (Power PC) or higher&lt;br /&gt;
*A full [http://fink.sourceforge.net/faq/usage-fink.php?phpLang=en#unstable unstable fink] installation&lt;br /&gt;
*Inkscape's source code. You can get the [http://www.inkscape.org/download.php official release source code], a [http://www.inkscape.org/cvs-snap/ SVN snapshot] or a copy of the [http://www.inkscape.org/svn.php?lang=en SVN repository].&lt;br /&gt;
*A [http://darwinports.opendarwin.org/ DarwinPorts] install if you want to use inkboard.&lt;br /&gt;
*XCode 2.3 on OS X 10.4 (gcc 4.0.1)&lt;br /&gt;
&lt;br /&gt;
You need to install software on which Inkscape depends, using Fink and/or DarwinPorts.&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
They are necessary for Inkscape to compile. In a Terminal type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fink install \&lt;br /&gt;
        intltool \&lt;br /&gt;
        glib2 glib2-dev glib2-shlibs \&lt;br /&gt;
        gtk+2 gtk+2-shlibs gtk+2-dev \&lt;br /&gt;
        libpng3 libpng3-shlibs \&lt;br /&gt;
        libsigc++2 libsigc++2-shlibs \&lt;br /&gt;
        gtkmm2.4 gtkmm2.4-dev gtkmm2.4-shlibs \&lt;br /&gt;
        libtool14 libtool14-shlibs \&lt;br /&gt;
        libxml2 libxml2-shlibs \&lt;br /&gt;
        popt popt-shlibs \&lt;br /&gt;
        gc gc-shlibs \&lt;br /&gt;
        automake1.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You need version 1.8 of automake 1.8 (and not 1.9, the latest in Fink). Fink installs many packages from source so this is usually long.&lt;br /&gt;
&lt;br /&gt;
You may also need to build popt from source (tested on 10.4): &lt;br /&gt;
[ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.1.x/popt-1.7.tar.gz]&lt;br /&gt;
&lt;br /&gt;
(Since May 2006, the version of sigc++ required when using gcc 4 is 2.0.12 or greater.  For a short time, only 2.0.11 was available in Fink.  The latest version of libsigc++2, version 2.0.17, has now been added to fink unstable so everything should compile normally again.)&lt;br /&gt;
&lt;br /&gt;
=== Optional Features ===&lt;br /&gt;
&lt;br /&gt;
To enable some additional functionality in Inkscape you might want to install:&lt;br /&gt;
* &amp;lt;code&amp;gt;lcms&amp;lt;/code&amp;gt; : color management via LittleCMS&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth &amp;gt;= 1.0&amp;lt;/code&amp;gt; : collaborative whiteboard (only available in DarwinPorts)&lt;br /&gt;
* &amp;lt;code&amp;gt;boost &amp;gt;= 1.32&amp;lt;/code&amp;gt; : auto-organisation of connectors&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-print&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;xft2&amp;lt;/code&amp;gt;&lt;br /&gt;
for each of these you need the developement packages as well (the name ends by &amp;lt;code&amp;gt;-dev&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Easy Compile ===&lt;br /&gt;
&lt;br /&gt;
You can try to download this [http://jo.irisson.free.fr/dropbox/inkscape/makeosx.sh bash script] which automates the processes of updating Inkscape from the svn repository, setting the build environment, building and producing a simple package of Inkscape. Modify it with your favorite text editor in order to set a correct install prefix and to change configuration options.&lt;br /&gt;
&lt;br /&gt;
Check Inkscape source code [http://www.inkscape.org/svn.php?lang=en from svn] and copy the script to the base of your local svn repository. Make it executable:&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod +x makeosx.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
and then simply run it&lt;br /&gt;
&amp;lt;pre&amp;gt;./makeosx.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If something does run smoothly, refer to the indications underneath.&lt;br /&gt;
&lt;br /&gt;
=== Setting the build environment ===&lt;br /&gt;
&lt;br /&gt;
Fink's hierarchy is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. You can create a file named &amp;lt;code&amp;gt;set_env_variables.sh&amp;lt;/code&amp;gt; and copy/paste this inside:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FINK=&amp;quot;/sw&amp;quot;&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$FINK/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$FINK/lib&amp;quot;&lt;br /&gt;
export CPATH=&amp;quot;$FINK/include&amp;quot;&lt;br /&gt;
export PATH=&amp;quot;/usr/X11R6/bin:$PATH&amp;quot;&lt;br /&gt;
export LIBRARY_PATH=&amp;quot;/usr/X11R6/lib:$FINK/lib&amp;quot;&lt;br /&gt;
export PKG_CONFIG_PATH=&amp;quot;$FINK/lib/pkgconfig&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, you must make sure that Inkscape is compiled with the compiler version that Fink uses, otherwise Inkscape will not link properly. To determine which compiler to use type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
head -n 5 $FINK/etc/fink.conf | grep &amp;quot;Distribution&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your fink distribution is 10.4 add:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export CC=&amp;quot;gcc-4.0&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;g++-4.0&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to &amp;lt;code&amp;gt;set_env_variables.sh&amp;lt;/code&amp;gt;, else (10.3, 10.4-transitional) add:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export CC=&amp;quot;gcc-3.3&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;g++-3.3&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;ccache&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;fink install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, modify the compiler lines accordingly:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export CC=&amp;quot;ccache gcc-??&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++-??&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eventually, open a Terminal and, in the directory where you created the file &amp;lt;code&amp;gt;set_env_variables.sh&amp;lt;/code&amp;gt;, type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bash; source set_env_variables.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configuring ===&lt;br /&gt;
&lt;br /&gt;
You might need to build the configure script first (if you compile Inkscape for the first time). Cd to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./autogen.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run the configure script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure --prefix=/path/to/build/products/ --enable-osxapp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; option sets the directory where the build products are placed. It must be somewhere you have write access to. The option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; allows you to package Inkscape into an &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application. Remove this option if you only want to build Inskscape, not to package it afterwards. Of course you can add here classic configuration options such as &amp;lt;code&amp;gt;--enable-lcms&amp;lt;/code&amp;gt; for color management or &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt; for whitboard functionality.&lt;br /&gt;
&lt;br /&gt;
=== Starting the Build ===&lt;br /&gt;
&lt;br /&gt;
Piece of cake:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Packaging Inkscape into an .app bundle ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Creating the .app and a simple .dmg ===&lt;br /&gt;
&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, the process is fully automatized. You just have to open a Terminal, cd to Inkscape's sources directory and type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd packaging&lt;br /&gt;
./osx-app.sh -s /path/to/build/products/bin/inkscape ../Info.plist macosx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options produces an app bundle stripped of debugging information (which is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
Either way, this creates two files in current directory: Inkscape.app that you can copy to your Applications directory and Inkscape.dmg for distribution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Creating a more complete .dmg ===&lt;br /&gt;
&lt;br /&gt;
Many Mac OS applications are distributed in a dmg with a background picture and some basic installation instructions. In order to distribute Inkscape this way you first need to create an .app bundle of Inkscape as described above. Then you need to create a read-write disc image big enough to contain the app bundle:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hdiutil create -size 50m -fs HFS+ -volname &amp;quot;Inkscape&amp;quot; RWinkscape.dmg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This step has only to be done once. For next builds you will just have to re-attach the image and copy the new Inkscape .app inside it. To attach the disc image, double click the .dmg or use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hdiutil attach RWinkscape.dmg &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second step is to copy everything you need inside the attached disc image (which is available as a white disc icon named &amp;quot;Inskcape&amp;quot; on your Desktop). You need:&lt;br /&gt;
*the .app bundle&lt;br /&gt;
*an alias to the Applications folder (CTRL+click &amp;quot;Applications&amp;quot; and select &amp;quot;Make Alias&amp;quot;)&lt;br /&gt;
*the [http://jo.irisson.free.fr/dropbox/inkscape/background.png background picture]&lt;br /&gt;
 &lt;br /&gt;
Finally you need to improve the appearance of the disc image. &lt;br /&gt;
&lt;br /&gt;
First you need to set the background image:&lt;br /&gt;
#navigate to the attached disc image with the Finder&lt;br /&gt;
#switch the Finder to Icon's view (View &amp;gt; as Icons)&lt;br /&gt;
#open the View Options window (View &amp;gt; Show View Options)&lt;br /&gt;
#check the radio button to select options for &amp;quot;This window only&amp;quot;&lt;br /&gt;
#in the &amp;quot;Background&amp;quot; section, select &amp;quot;Picture&amp;quot; and choose the background picture you just copied in the disc image.&lt;br /&gt;
You may want to make the background image file invisible to have a cleaner aspect:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/Developer/Tools/SetFile -a V /Volumes/Inkscape/background.png&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The icon of the file should become kind of transparent and you should not see it anymore if you relaunch the Finder.&lt;br /&gt;
&lt;br /&gt;
Then, arrange the Finder window as you want people to see it. You may want to hide the Finder brushed metal skin to have a smaller window (click the elongated transparent button in the top right corner of the Finder window), fit the window to the background image, move Inkscape's icon to be next to the arrow (you may need to deselect some presentation options in View &amp;gt; Show View Options) and center the window in your screen.&lt;br /&gt;
You should end up with a window looking like [http://jo.irisson.free.fr/dropbox/inkscape/inkscape_distrib.png this].&lt;br /&gt;
&lt;br /&gt;
The last step consists in creating a compressed read-only disc image from this read-write disc image:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hdiutil detach /Volumes/Inkscape&lt;br /&gt;
DATE=`date &amp;quot;+%Y%m%d&amp;quot;`&lt;br /&gt;
hdiutil convert -format UDCO -o Inkscape_$DATE.dmg RWinkscape.dmg &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This creates a smaller disc image with a name like Inkscape_20060424.dmg.&lt;br /&gt;
&lt;br /&gt;
Everything is summarized in a [http://jo.irisson.free.fr/dropbox/inkscape/bundleosx.sh bash script].&lt;br /&gt;
&lt;br /&gt;
== Enabling python effects ==&lt;br /&gt;
&lt;br /&gt;
Many &amp;quot;effects&amp;quot; in the Effect menu of Inkscape use python as a scripting language. Mac OS X ships with python but not with pyXML which is needed by Inkscape effects. &lt;br /&gt;
You can install a binary version downloadable with the developement builds of Inkscape:&lt;br /&gt;
&lt;br /&gt;
:http://inkscape.modevia.com/macosx-snap/?M=D&lt;br /&gt;
&lt;br /&gt;
Or you can install it from source:&lt;br /&gt;
# download the source code from [http://sourceforge.net/project/showfiles.php?group_id=6473 sourceforge]&lt;br /&gt;
# unpack the &amp;lt;code&amp;gt;.tar.gz&amp;lt;/code&amp;gt; file&lt;br /&gt;
# cd into the newly created directory&lt;br /&gt;
# set the variable &amp;lt;code&amp;gt;[[MACOSX_DEPLOYMENT_TARGET]]&amp;lt;/code&amp;gt; to the number of your operating system (10.3 for Panther, 10.4 for Tiger. It probably won't work on previous systems). In bash syntax this means typing:&amp;lt;pre&amp;gt;export MACOSX_DEPLOYMENT_TARGET=10.?&amp;lt;/pre&amp;gt;&lt;br /&gt;
# move the python files and build C extensions&amp;lt;pre&amp;gt;python setup.py build&amp;lt;/pre&amp;gt;&lt;br /&gt;
# install (the install is system wide so you need administrator rights)&amp;lt;pre&amp;gt;sudo python setup.py install&amp;lt;/pre&amp;gt;and type your password.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
=== Apple Documentation ===&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
=== Packaging ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=6521</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=6521"/>
		<updated>2006-05-26T05:50:21Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Dependencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Compiling on Mac OS X ==&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
To compile Inkscape from source you will need:&lt;br /&gt;
*Mac OS X 10.3 (Power PC) or higher&lt;br /&gt;
*A full [http://fink.sourceforge.net/faq/usage-fink.php?phpLang=en#unstable unstable fink] installation&lt;br /&gt;
*Inkscape's source code. You can get the [http://www.inkscape.org/download.php official release source code], a [http://www.inkscape.org/cvs-snap/ SVN snapshot] or a copy of the [http://www.inkscape.org/svn.php?lang=en SVN repository].&lt;br /&gt;
*A [http://darwinports.opendarwin.org/ DarwinPorts] install if you want to use inkboard.&lt;br /&gt;
*XCode 2.3 on OS X 10.4 (gcc 4.0.1)&lt;br /&gt;
&lt;br /&gt;
You need to install software on which Inkscape depends, using Fink and/or DarwinPorts.&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
They are necessary for Inkscape to compile. In a Terminal type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fink install \&lt;br /&gt;
        intltool \&lt;br /&gt;
        glib2 glib2-dev glib2-shlibs \&lt;br /&gt;
        gtk+2 gtk+2-shlibs gtk+2-dev \&lt;br /&gt;
        libpng3 libpng3-shlibs \&lt;br /&gt;
        libsigc++2 libsigc++2-shlibs \&lt;br /&gt;
        gtkmm2.4 gtkmm2.4-dev gtkmm2.4-shlibs \&lt;br /&gt;
        libtool14 libtool14-shlibs \&lt;br /&gt;
        libxml2 libxml2-shlibs \&lt;br /&gt;
        popt popt-shlibs \&lt;br /&gt;
        gc gc-shlibs \&lt;br /&gt;
        automake1.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You need version 1.8 of automake 1.8 (and not 1.9, the latest in Fink). Fink installs many packages from source so this is usually long.&lt;br /&gt;
&lt;br /&gt;
You may also need to build popt from source (tested on 10.4): &lt;br /&gt;
[ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.1.x/popt-1.7.tar.gz]&lt;br /&gt;
&lt;br /&gt;
(Since May 2006, the version of sigc++ required when using gcc 4 is 2.0.12 (or greater).  For a short time, onlt 2.0.11 was available in Fink.  The newest version of libsigc++2, version 2.0.17, was added to fink unstable on May 26th, 2006 so everything should compile normally again.)&lt;br /&gt;
&lt;br /&gt;
=== Optional Features ===&lt;br /&gt;
&lt;br /&gt;
To enable some additional functionality in Inkscape you might want to install:&lt;br /&gt;
* &amp;lt;code&amp;gt;lcms&amp;lt;/code&amp;gt; : color management via LittleCMS&lt;br /&gt;
* &amp;lt;code&amp;gt;loudmouth &amp;gt;= 1.0&amp;lt;/code&amp;gt; : collaborative whiteboard (only available in DarwinPorts)&lt;br /&gt;
* &amp;lt;code&amp;gt;boost &amp;gt;= 1.32&amp;lt;/code&amp;gt; : auto-organisation of connectors&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-vfs&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;gnome-print&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;xft2&amp;lt;/code&amp;gt;&lt;br /&gt;
for each of these you need the developement packages as well (the name ends by &amp;lt;code&amp;gt;-dev&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Easy Compile ===&lt;br /&gt;
&lt;br /&gt;
You can try to download this [http://jo.irisson.free.fr/dropbox/inkscape/makeosx.sh bash script] which automates the processes of updating Inkscape from the svn repository, setting the build environment, building and producing a simple package of Inkscape. Modify it with your favorite text editor in order to set a correct install prefix and to change configuration options.&lt;br /&gt;
&lt;br /&gt;
Check Inkscape source code [http://www.inkscape.org/svn.php?lang=en from svn] and copy the script to the base of your local svn repository. Make it executable:&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod +x makeosx.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
and then simply run it&lt;br /&gt;
&amp;lt;pre&amp;gt;./makeosx.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If something does run smoothly, refer to the indications underneath.&lt;br /&gt;
&lt;br /&gt;
=== Setting the build environment ===&lt;br /&gt;
&lt;br /&gt;
Fink's hierarchy is not searched for libraries by default. Therefore, before the configuration starts, some environment variables need to be set. The environment variables are presented in bash syntax here. You can create a file named &amp;lt;code&amp;gt;set_env_variables.sh&amp;lt;/code&amp;gt; and copy/paste this inside:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FINK=&amp;quot;/sw&amp;quot;&lt;br /&gt;
export CFLAGS=&amp;quot;-O3 -Wall&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;$CFLAGS&amp;quot;&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$FINK/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$FINK/lib&amp;quot;&lt;br /&gt;
export CPATH=&amp;quot;$FINK/include&amp;quot;&lt;br /&gt;
export PATH=&amp;quot;/usr/X11R6/bin:$PATH&amp;quot;&lt;br /&gt;
export LIBRARY_PATH=&amp;quot;/usr/X11R6/lib:$FINK/lib&amp;quot;&lt;br /&gt;
export PKG_CONFIG_PATH=&amp;quot;$FINK/lib/pkgconfig&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, you must make sure that Inkscape is compiled with the compiler version that Fink uses, otherwise Inkscape will not link properly. To determine which compiler to use type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
head -n 5 $FINK/etc/fink.conf | grep &amp;quot;Distribution&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your fink distribution is 10.4 add:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export CC=&amp;quot;gcc-4.0&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;g++-4.0&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to &amp;lt;code&amp;gt;set_env_variables.sh&amp;lt;/code&amp;gt;, else (10.3, 10.4-transitional) add:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export CC=&amp;quot;gcc-3.3&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;g++-3.3&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;ccache&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;fink install ccache&amp;lt;/code&amp;gt;) to speed up the compilation a bit. To do so, modify the compiler lines accordingly:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export CC=&amp;quot;ccache gcc-??&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++-??&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eventually, open a Terminal and, in the directory where you created the file &amp;lt;code&amp;gt;set_env_variables.sh&amp;lt;/code&amp;gt;, type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bash; source set_env_variables.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configuring ===&lt;br /&gt;
&lt;br /&gt;
You might need to build the configure script first (if you compile Inkscape for the first time). Cd to Inkscape's source directory and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./autogen.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run the configure script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure --prefix=/path/to/build/products/ --enable-osxapp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;--prefix&amp;lt;/code&amp;gt; option sets the directory where the build products are placed. It must be somewhere you have write access to. The option &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; allows you to package Inkscape into an &amp;lt;code&amp;gt;.app&amp;lt;/code&amp;gt; bundle in order to access it like a regular OS X application. Remove this option if you only want to build Inskscape, not to package it afterwards. Of course you can add here classic configuration options such as &amp;lt;code&amp;gt;--enable-lcms&amp;lt;/code&amp;gt; for color management or &amp;lt;code&amp;gt;--enable-inkboard&amp;lt;/code&amp;gt; for whitboard functionality.&lt;br /&gt;
&lt;br /&gt;
=== Starting the Build ===&lt;br /&gt;
&lt;br /&gt;
Piece of cake:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Packaging Inkscape into an .app bundle ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Creating the .app and a simple .dmg ===&lt;br /&gt;
&lt;br /&gt;
Assuming that you have used the &amp;lt;code&amp;gt;--enable-osxapp&amp;lt;/code&amp;gt; option during &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;, the process is fully automatized. You just have to open a Terminal, cd to Inkscape's sources directory and type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd packaging&lt;br /&gt;
./osx-app.sh -s /path/to/build/products/bin/inkscape ../Info.plist macosx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; options produces an app bundle stripped of debugging information (which is therefore smaller). Omit this option if you want to keep debugging info.&lt;br /&gt;
&lt;br /&gt;
Either way, this creates two files in current directory: Inkscape.app that you can copy to your Applications directory and Inkscape.dmg for distribution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Creating a more complete .dmg ===&lt;br /&gt;
&lt;br /&gt;
Many Mac OS applications are distributed in a dmg with a background picture and some basic installation instructions. In order to distribute Inkscape this way you first need to create an .app bundle of Inkscape as described above. Then you need to create a read-write disc image big enough to contain the app bundle:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hdiutil create -size 50m -fs HFS+ -volname &amp;quot;Inkscape&amp;quot; RWinkscape.dmg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This step has only to be done once. For next builds you will just have to re-attach the image and copy the new Inkscape .app inside it. To attach the disc image, double click the .dmg or use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hdiutil attach RWinkscape.dmg &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second step is to copy everything you need inside the attached disc image (which is available as a white disc icon named &amp;quot;Inskcape&amp;quot; on your Desktop). You need:&lt;br /&gt;
*the .app bundle&lt;br /&gt;
*an alias to the Applications folder (CTRL+click &amp;quot;Applications&amp;quot; and select &amp;quot;Make Alias&amp;quot;)&lt;br /&gt;
*the [http://jo.irisson.free.fr/dropbox/inkscape/background.png background picture]&lt;br /&gt;
 &lt;br /&gt;
Finally you need to improve the appearance of the disc image. &lt;br /&gt;
&lt;br /&gt;
First you need to set the background image:&lt;br /&gt;
#navigate to the attached disc image with the Finder&lt;br /&gt;
#switch the Finder to Icon's view (View &amp;gt; as Icons)&lt;br /&gt;
#open the View Options window (View &amp;gt; Show View Options)&lt;br /&gt;
#check the radio button to select options for &amp;quot;This window only&amp;quot;&lt;br /&gt;
#in the &amp;quot;Background&amp;quot; section, select &amp;quot;Picture&amp;quot; and choose the background picture you just copied in the disc image.&lt;br /&gt;
You may want to make the background image file invisible to have a cleaner aspect:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/Developer/Tools/SetFile -a V /Volumes/Inkscape/background.png&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The icon of the file should become kind of transparent and you should not see it anymore if you relaunch the Finder.&lt;br /&gt;
&lt;br /&gt;
Then, arrange the Finder window as you want people to see it. You may want to hide the Finder brushed metal skin to have a smaller window (click the elongated transparent button in the top right corner of the Finder window), fit the window to the background image, move Inkscape's icon to be next to the arrow (you may need to deselect some presentation options in View &amp;gt; Show View Options) and center the window in your screen.&lt;br /&gt;
You should end up with a window looking like [http://jo.irisson.free.fr/dropbox/inkscape/inkscape_distrib.png this].&lt;br /&gt;
&lt;br /&gt;
The last step consists in creating a compressed read-only disc image from this read-write disc image:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hdiutil detach /Volumes/Inkscape&lt;br /&gt;
DATE=`date &amp;quot;+%Y%m%d&amp;quot;`&lt;br /&gt;
hdiutil convert -format UDCO -o Inkscape_$DATE.dmg RWinkscape.dmg &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This creates a smaller disc image with a name like Inkscape_20060424.dmg.&lt;br /&gt;
&lt;br /&gt;
Everything is summarized in a [http://jo.irisson.free.fr/dropbox/inkscape/bundleosx.sh bash script].&lt;br /&gt;
&lt;br /&gt;
== Enabling python effects ==&lt;br /&gt;
&lt;br /&gt;
Many &amp;quot;effects&amp;quot; in the Effect menu of Inkscape use python as a scripting language. Mac OS X ships with python but not with pyXML which is needed by Inkscape effects. &lt;br /&gt;
You can install a binary version downloadable with the developement builds of Inkscape:&lt;br /&gt;
&lt;br /&gt;
:http://inkscape.modevia.com/macosx-snap/?M=D&lt;br /&gt;
&lt;br /&gt;
Or you can install it from source:&lt;br /&gt;
# download the source code from [http://sourceforge.net/project/showfiles.php?group_id=6473 sourceforge]&lt;br /&gt;
# unpack the &amp;lt;code&amp;gt;.tar.gz&amp;lt;/code&amp;gt; file&lt;br /&gt;
# cd into the newly created directory&lt;br /&gt;
# set the variable &amp;lt;code&amp;gt;[[MACOSX_DEPLOYMENT_TARGET]]&amp;lt;/code&amp;gt; to the number of your operating system (10.3 for Panther, 10.4 for Tiger. It probably won't work on previous systems). In bash syntax this means typing:&amp;lt;pre&amp;gt;export MACOSX_DEPLOYMENT_TARGET=10.?&amp;lt;/pre&amp;gt;&lt;br /&gt;
# move the python files and build C extensions&amp;lt;pre&amp;gt;python setup.py build&amp;lt;/pre&amp;gt;&lt;br /&gt;
# install (the install is system wide so you need administrator rights)&amp;lt;pre&amp;gt;sudo python setup.py install&amp;lt;/pre&amp;gt;and type your password.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
=== Apple Documentation ===&lt;br /&gt;
* [http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html Introduction to Runtime Configuration] Covers the Info.plist files, Preferences, Environment variables and has a list of the most important Properties that the Property List should contain.&lt;br /&gt;
&lt;br /&gt;
=== Packaging ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.sveinbjorn.org/platypus Sveinbjorn Thordarson's Website] The author of Platypus, the Script Exec wrapper that launches the Inkscape binary.&lt;br /&gt;
* [http://freespace.ausgamers.com/2005/02/creating-os-x-application-bundles-step.html  Creating OS X application bundles step by step] Covers the bundle concepts, copying libraries into the bundle, editing libraries with the install_name_tool, the Info.plist file and adding an icon.&lt;br /&gt;
* [http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3/ Bringing your Java Application to Mac OS X] I would regard this a little dated, and the detail is (unsurprisingly) Java-related, but it is a gentle introduction to the role of the .app bundle and give a most clear account of how to create one.&lt;br /&gt;
* The [http://gimp-app.sourceforge.net/gimp.app.howto.txt Gimp .app Howto] This is a very bare document, and would be of little help to you if you were new to making packages. Note that it seems to refer to a more mature Clipboard technique and Online help than we currently have; and we ought to move to parity in these areas.&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.44&amp;diff=6414</id>
		<title>Release notes/0.44</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.44&amp;diff=6414"/>
		<updated>2006-05-12T11:17:44Z</updated>

		<summary type="html">&lt;p&gt;Mjwybrow: /* Connectors and automatic layout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Inkscape 0.44: overview ==&lt;br /&gt;
&lt;br /&gt;
Bigger and better.&lt;br /&gt;
&lt;br /&gt;
* Not directly related to Inkscape, but important nevertheless: since our last release, [http://www.mozilla.com/firefox/ Firefox 1.5] was released with SVG support enabled by default. This means that you can now view any Inkscape document right in your Firefox window without any format conversions or installing any plugins!&lt;br /&gt;
&lt;br /&gt;
= Performance =&lt;br /&gt;
&lt;br /&gt;
== Outline mode ==&lt;br /&gt;
&lt;br /&gt;
An Outline (&amp;quot;wireframe&amp;quot;) display mode is implemented. Use the &amp;lt;i&amp;gt;View &amp;gt; Display Mode &amp;gt; Outline&amp;lt;/i&amp;gt; to activate it. In this mode:&lt;br /&gt;
&lt;br /&gt;
* all paths and shapes are rendered as &amp;lt;b&amp;gt;inverse&amp;lt;/b&amp;gt; (black on light background and vice versa) &amp;lt;b&amp;gt;outlines&amp;lt;/b&amp;gt; of constant width (1 screen pixel regardless of zoom), without fill;&lt;br /&gt;
&lt;br /&gt;
* text is painted by inverse fill, without stroke; &lt;br /&gt;
&lt;br /&gt;
* bitmaps are shown as is;&lt;br /&gt;
&lt;br /&gt;
* any opacity and gradients are ignored.&lt;br /&gt;
&lt;br /&gt;
The outline mode is usually not drastically faster than regular mode (usually 10% to 50% faster), and in some special cases it may even be slower. However, the value of the outline mode is not only in its speed; it is a good way to get an idea of the structure and objects of your document, and it is convenient for precision node editing and for finding &amp;quot;stray objects&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
In addition to the Outline mode which makes it much easier to work with complex drawings, this version of Inkscape also provides significant speed improvements in many areas.&lt;br /&gt;
&lt;br /&gt;
* Thanks to &amp;lt;b&amp;gt;optimizations in the renderer&amp;lt;/b&amp;gt;, Inkscape's screen redraw is &amp;lt;b&amp;gt;faster by at least 10%&amp;lt;/b&amp;gt;, and in some cases (such as complex stroked/dashed paths at high zooms) &amp;lt;b&amp;gt;up to three times faster&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Optimizations in the Node tool&amp;lt;/b&amp;gt; resulted in noticeable speed gains for node editing. Thus, switching to and from the Node tool (with a path selected), as well as selecting nodes in that tool, are now &amp;lt;b&amp;gt;at least ten times faster&amp;lt;/b&amp;gt; than before. Other operations, including curve and node dragging and move/scale/rotate operations on multiple selected nodes, are much faster as well. This is especially important when working with complex paths; with these optimizations, paths containing several thousand nodes, though still slow, are much more usable.&lt;br /&gt;
&lt;br /&gt;
* An optimization in the attribute setting method made operations such as moving multiple objects with arrow keys at least &amp;lt;b&amp;gt;30% faster&amp;lt;/b&amp;gt; compared to 0.43. This is especially noticeable when you are moving clones selected together with their original (e.g. a clone tiling), in which case Inkscape now works &amp;lt;b&amp;gt;three to four times faster&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Interface icons&amp;lt;/b&amp;gt; are now rendered in the background (from SVG source in &amp;lt;code&amp;gt;share/icons/icons.svg&amp;lt;/code&amp;gt;) when Inkscape is idle, rather than waiting for all the icons in a menu to render the first time you pull it up. This eliminates the annoying delay when opening menus for the first time.&lt;br /&gt;
&lt;br /&gt;
* Previously, zooming in to view a small portion of a path (especially big and complex path), there was a very noticeable slowdown and memory use increased dramatically. We optimized the renderer to &amp;lt;b&amp;gt;only process the visible part of a path&amp;lt;/b&amp;gt;, and as a result the rendering speed is now almost the same at any zoom up to the maximum, providing up to 10-40 times speedup compared to the previous version (the closer is the zoom, the greater is the gain).&lt;br /&gt;
&lt;br /&gt;
= Interface =&lt;br /&gt;
&lt;br /&gt;
== Selected style indicator ==&lt;br /&gt;
&lt;br /&gt;
A new control in the left end of the statusbar lets you quickly view and change the &amp;lt;b&amp;gt;fill and stroke of the selected objects&amp;lt;/b&amp;gt;. When you have a text selection in Text tool or a gradient handle selected in the Gradient tool, this indicator displays and changes the style of the text fragment or gradient stop, instead of the entire object (it's the same behavior as the Fill&amp;amp;amp;Stroke dialog.)&lt;br /&gt;
&lt;br /&gt;
* The two indicators, labelled &amp;lt;b&amp;gt;F:&amp;lt;/b&amp;gt; (top) and &amp;lt;b&amp;gt;S:&amp;lt;/b&amp;gt; (bottom), display fill and stroke of the selected object(s) correspondingly. (For gradient handles, they always display the same style.)&lt;br /&gt;
&lt;br /&gt;
* Each fill/stroke indicator can display either a &amp;lt;b&amp;gt;color+opacity swatch&amp;lt;/b&amp;gt; (the opacity shown here is the fill opacity or stroke opacity, not the master opacity) or a text label specifying &amp;lt;b&amp;gt;N/A&amp;lt;/b&amp;gt; (nothing selected), &amp;lt;b&amp;gt;None&amp;lt;/b&amp;gt; (no fill/stroke), &amp;lt;b&amp;gt;Unset&amp;lt;/b&amp;gt; (unset fill/stroke), &amp;lt;b&amp;gt;L Gradient&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;R Gradient&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Pattern&amp;lt;/b&amp;gt; (corresponding fill/stroke types), or &amp;lt;b&amp;gt;Different&amp;lt;/b&amp;gt; (selected objects have different fill/stroke types).&lt;br /&gt;
&lt;br /&gt;
* Additionally, each indicator may be accompanied by one of two flags, &amp;lt;b&amp;gt;m&amp;lt;/b&amp;gt; (&amp;quot;multiple&amp;quot;, meaning there are two or more objects all with the same fill/stroke) or &amp;lt;b&amp;gt;a&amp;lt;/b&amp;gt; (&amp;quot;averaged&amp;quot;, meaning there are two or more objects with different flat colors in fill/stroke, and the indicator shows the average of these colors).&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Left-click&amp;lt;/b&amp;gt; on an indicator opens or activates the Fill&amp;amp;Stroke dialog with the corresponding tab (Fill or Stroke) active.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Right-click&amp;lt;/b&amp;gt; on an indicator opens a popup menu with the following items:&lt;br /&gt;
** &amp;lt;b&amp;gt;Edit fill/stroke...&amp;lt;/b&amp;gt;: Opens or activates the Fill&amp;amp;Stroke dialog with the corresponding tab selected. (Same as left-click.)&lt;br /&gt;
** &amp;lt;b&amp;gt;Last set color&amp;lt;/b&amp;gt;: Applies to the selected objects the fill/stroke color that was last applied to anythig.&lt;br /&gt;
** &amp;lt;b&amp;gt;Last selected color&amp;lt;/b&amp;gt;: Applies to the selected objects the fill/stroke color that was last displayed in this indicator. (Allows you to easily copy fill/stroke color between objects: select source, select destination, apply &amp;quot;last selected color&amp;quot;.)&lt;br /&gt;
**  &amp;lt;b&amp;gt;Invert&amp;lt;/b&amp;gt;: Sets the fill or stroke to the inverse of the current color (does not affect opacity).&lt;br /&gt;
**  &amp;lt;b&amp;gt;White&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Black&amp;lt;/b&amp;gt;: Sets the fill or stroke to the corresponding color (fully opaque).&lt;br /&gt;
** &amp;lt;b&amp;gt;Copy color&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Paste color&amp;lt;/b&amp;gt;: Copies or pastes the fill or stroke color (when it's color) to/from the system clipboard, as text in the &amp;lt;code&amp;gt;#rrggbb&amp;lt;/code&amp;gt; hex format.&lt;br /&gt;
** &amp;lt;b&amp;gt;Swap fill and stroke&amp;lt;/b&amp;gt;: Exchanges fill and stroke (both their types and colors, if any). &lt;br /&gt;
** &amp;lt;b&amp;gt;Make fill/stroke opaque&amp;lt;/b&amp;gt;: Removes fill or stroke transparency (not master transparency!).&lt;br /&gt;
** &amp;lt;b&amp;gt;Unset fill/stroke&amp;lt;/b&amp;gt;: Unsets fill or stroke from selected objects.&lt;br /&gt;
** &amp;lt;b&amp;gt;Remove fill/stroke&amp;lt;/b&amp;gt;: Removes fill or stroke from the selected objects.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Middle-click&amp;lt;/b&amp;gt; on a fill/stroke indicator removes fill/stroke from selected objects; if it is already removed (i.e. if the indicator displays &amp;quot;None&amp;quot;), it does the same as the &amp;quot;Last set color&amp;quot; command from the popup menu.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Drag and Drop&amp;lt;/b&amp;gt; of colors onto a fil/stroke indicator sets the fill and stroke of the selected object(s) correspondingly.&lt;br /&gt;
&lt;br /&gt;
* The Stroke indicator also displays the &amp;lt;b&amp;gt;stroke width&amp;lt;/b&amp;gt; of selection (averaged if there are multiple objects selected with different stroke widths), located to the right of the stroke color/transparency swatch. Left-clicking on it opens the Fill&amp;amp;Stroke dialog with the Stroke Style tab selected. Right-clicking on it opens a popup menu which allows you to choose the units for displaying the stroke width, as well as choose one of the presets to assign to selection.&lt;br /&gt;
&lt;br /&gt;
* To the right of the fill/stroke indicators, the &amp;lt;b&amp;gt;Opacity&amp;lt;/b&amp;gt; numeric field (labelled &amp;quot;O:&amp;quot;) shows and allows you to change the master opacity of the selected object (or the averaged opacity of several selected objects). &amp;lt;b&amp;gt;Right-clicking &amp;lt;/b&amp;gt; the numeric field opens a popup menu with preset opacity levels. &amp;lt;b&amp;gt;Middle-clicking&amp;lt;/b&amp;gt; on the &amp;quot;O:&amp;quot; label cycles the opacity through the values of 0 (transparent), 0.5, and 1 (opaque).&lt;br /&gt;
&lt;br /&gt;
The zoom field and the cursor coordinates indicator have been rearranged for compactness and moved to the right end of the statusbar. There's also a window resize handle added at the very end of the statusbar.&lt;br /&gt;
&lt;br /&gt;
== Tool style indicators ==&lt;br /&gt;
&lt;br /&gt;
For each object-creating tool (shapes, Pen/Pencil, Calligraphic, Text), the Controls bar (above the canvas) now includes a &amp;lt;b&amp;gt;style indicator&amp;lt;/b&amp;gt; on the right. This indicator shows you which style the newly created object will have. The indicator correctly displays whichever style the tool is set to use - the global &amp;quot;last set&amp;quot; style or that tool's fixed style. For example, clicking on a palette swatch (even with nothing selected) changes the &amp;quot;last set&amp;quot; color and, if your tool is set to use the last set color, its indicator is updated, giving you an idea of your &amp;quot;brush&amp;quot; before you start to draw.&lt;br /&gt;
&lt;br /&gt;
== Docked color palette ==&lt;br /&gt;
&lt;br /&gt;
Previously, color swatches could only be used from a floating palette (Ctrl+Shift+W).&lt;br /&gt;
&lt;br /&gt;
* The color swatches palette can be viewed embedded in the main UI (between the canvas and the statusbar). Use &amp;lt;i&amp;gt;View &amp;gt; Show/Hide &amp;gt; Palette&amp;lt;/i&amp;gt; to enable or disable it. The docked palette has the same functionality as the floating one; use a button in the top right corner to access the swatches menu.&lt;br /&gt;
&lt;br /&gt;
* All standard sizes of the swatches (Tiny, Small, Medium, Large) are made smaller overall,&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Drag and Drop&amp;lt;/b&amp;gt; of &amp;lt;b&amp;gt;colors&amp;lt;/b&amp;gt; has been enabled.&lt;br /&gt;
** Dragging colors from a palette now includes UI feedback of the color being dragged.&lt;br /&gt;
** Drag and Drop of colors onto the fill/stroke indicator in the statusbar sets the fill and stroke of the selected object(s) correspondingly.&lt;br /&gt;
** Colors can be &amp;lt;b&amp;gt;dropped&amp;lt;/b&amp;gt; directly on to objects on canvas to set their &amp;lt;b&amp;gt;fill&amp;lt;/b&amp;gt;.&lt;br /&gt;
** Colors can be &amp;lt;b&amp;gt;shift+dropped&amp;lt;/b&amp;gt; on to objects on canvas to set their &amp;lt;b&amp;gt;stroke&amp;lt;/b&amp;gt;.&lt;br /&gt;
** Colors can be dragged to and from other applications.&lt;br /&gt;
&lt;br /&gt;
== Inkscape Preferences dialog ==&lt;br /&gt;
&lt;br /&gt;
Not only was the Inkscape Preferences dialog completely rewritten and redesigned, it is now also &amp;lt;b&amp;gt;fully GNOME-HIG compliant&amp;lt;/b&amp;gt;. Numerous &amp;lt;b&amp;gt;bugs&amp;lt;/b&amp;gt; were taken care of with the rewrite. As a new feature, the &amp;lt;b&amp;gt;Simplify threshold&amp;lt;/b&amp;gt; can now be set with more precision.&lt;br /&gt;
&lt;br /&gt;
== Document Properties / Metadata dialogs ==&lt;br /&gt;
&lt;br /&gt;
* The Document Preferences dialog is now named &amp;lt;b&amp;gt;Document Properties&amp;lt;/b&amp;gt;, and it was split in two: metadata were extracted into the &amp;lt;b&amp;gt;Document Metadata&amp;lt;/b&amp;gt; dialog; metadata widgets are now also spread over two pages.&lt;br /&gt;
&lt;br /&gt;
* A button was added to &amp;lt;b&amp;gt;fit the canvas to the current selection&amp;lt;/b&amp;gt; or, if there's no selection, to the entire drawing. The button resizes the canvas and, if necessary, moves the drawing into place. It is now very easy to size the canvas to an illustration after it is ready.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;New controls&amp;lt;/b&amp;gt;: the new object snapping features required their own property widgets, and you can set the snapping sensitivity with a slider, or let it snap regardless of distance (grid only).&lt;br /&gt;
&lt;br /&gt;
* Rearrangements within &amp;lt;b&amp;gt;Document Properties&amp;lt;/b&amp;gt;: everything snapping-related was collected on one page; Grid and Guide widgets are on their own, the same page. For better HIG compliance, all widgets were categorized; especially the widgets on the Page page were completely rearranged in the General/Format/Border categories.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Bug fixes&amp;lt;/b&amp;gt;: grayed out license URI had too low contrast, so it's no longer grayed out; the proprietary license didn't clean the license URI; spinbuttons had no tooltips, and minor grid quirks were removed; data was not updated when a new file replaced another in the same window.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;HIG compliance&amp;lt;/b&amp;gt;: much work went into that, and now only a few details are missing from full Gnome-HIG compliance.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Updated Creative Commons Licenses&amp;lt;/b&amp;gt;: Updated CC licenses to the latest 2.5 versions by default in the license tab of the metadata dialog.&lt;br /&gt;
&lt;br /&gt;
== Menus ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Zoom&amp;lt;/b&amp;gt; commands in the View menu are moved to a submenu; the &amp;lt;i&amp;gt;Zoom In&amp;lt;/i&amp;gt; and &amp;lt;i&amp;gt;Zoom Out&amp;lt;/i&amp;gt; commands are added to that submenu.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Clone&amp;lt;/b&amp;gt; commands are moved into a submenu in Edit menu and given more descriptive names and tips.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Pattern&amp;lt;/b&amp;gt; commands (&amp;lt;i&amp;gt;Objects to Pattern&amp;lt;/i&amp;gt; and &amp;lt;i&amp;gt;Pattern to Objects&amp;lt;/i&amp;gt;) are moved into a submenu in Object menu, under the new Clip and Mask submenus.&lt;br /&gt;
&lt;br /&gt;
* The contents of the &amp;lt;b&amp;gt;Effects menu&amp;lt;/b&amp;gt; are categorized into submenus, and several effects are renamed to use more intuitive names. &lt;br /&gt;
&lt;br /&gt;
== Statusbar ==&lt;br /&gt;
&lt;br /&gt;
* In Selector, for multiple selected objects, the statusbar now reports their types. For example, if 5 groups are selected, it displays&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;b&amp;gt;5&amp;lt;/b&amp;gt; objects of type &amp;lt;b&amp;gt;Group&amp;lt;/b&amp;gt; in layer &amp;lt;b&amp;gt;LayerName&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:instead of just &amp;quot;5 objects selected&amp;quot; as before. If there are up to 3 types in the selection, they will be listed, for example:&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;b&amp;gt;5&amp;lt;/b&amp;gt; objects of types &amp;lt;b&amp;gt;Group&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Path&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Rectangle&amp;lt;/b&amp;gt; in layer &amp;lt;b&amp;gt;LayerName&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:The order of the list will correspond to the order in which the objects were added to selection. If there are 4 or more types in selection, only the number of types is reported, for example:&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;b&amp;gt;5&amp;lt;/b&amp;gt; objects of &amp;lt;b&amp;gt;4&amp;lt;/b&amp;gt; types in layer &amp;lt;b&amp;gt;LayerName&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* In Selector, objects selected in groups are now identified as such, and the group ID is given, for example:&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;b&amp;gt;Rectangle&amp;lt;/b&amp;gt; in group &amp;lt;i&amp;gt;g212&amp;lt;/i&amp;gt; (layer &amp;lt;b&amp;gt;content&amp;lt;/b&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
:If selected objects have different parents within one layer (for example, if one is selected in a group and another outside it), the number of parents is reported:&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt; objects of types &amp;lt;b&amp;gt;Rectangle&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Path&amp;lt;/b&amp;gt; in &amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt; parents (layer &amp;lt;b&amp;gt;content&amp;lt;/b&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
:If objects are in different layers, only the number of layers is reported since this also implies different parents:&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt; objects of types &amp;lt;b&amp;gt;Rectangle&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Path&amp;lt;/b&amp;gt; in &amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt; layers&lt;br /&gt;
&lt;br /&gt;
* The contents of the &amp;lt;b&amp;gt;statusbar message&amp;lt;/b&amp;gt; are now duplicated as a &amp;lt;b&amp;gt;tooltip&amp;lt;/b&amp;gt; that is shown when you hover the mouse over the statusbar. [TODO: need to strip markup from the tooltips.] &lt;br /&gt;
&lt;br /&gt;
* The statusbar text is now no longer just cut off if there is insufficient room, but an ellipsis (...) is inserted at the end to show there's more (only with Gtk 2.6 and newer).&lt;br /&gt;
&lt;br /&gt;
== Theme ==&lt;br /&gt;
&lt;br /&gt;
* Inkscape has a &amp;lt;b&amp;gt;new default icon set&amp;lt;/b&amp;gt; titled &amp;quot;Crispy&amp;quot; provided by Andre Sousa. The new icons are intended to add a more professional and cohesive look to our application, as well as to make the functions the icons represent more self-evident.&lt;br /&gt;
&lt;br /&gt;
* [new mouse cursors are coloured and antialiased - scislac]&lt;br /&gt;
&lt;br /&gt;
= Clipping and masking =&lt;br /&gt;
&lt;br /&gt;
Inkscape now provides some UI for using &amp;lt;b&amp;gt;clipping paths and masks&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
* Any object can be non-destructively intersected with a path (called a &amp;lt;i&amp;gt;clipping path&amp;lt;/i&amp;gt;) so that only the intersected portion of the object is visible. &lt;br /&gt;
** &amp;lt;b&amp;gt;To apply clipping&amp;lt;/b&amp;gt;, select the objects to be clipped and the clipping path object, make sure the clipping path is above the other objects in z-order, and do &amp;lt;i&amp;gt;Object &amp;gt; Clip &amp;gt; Set&amp;lt;/i&amp;gt;.&lt;br /&gt;
** You can &amp;lt;b&amp;gt;transform, edit, or style&amp;lt;/b&amp;gt; the clipped objects as usual. The clipping remains applied and transforms together with each clipped object.&lt;br /&gt;
** To &amp;lt;b&amp;gt;remove the clipping&amp;lt;/b&amp;gt;, do &amp;lt;i&amp;gt;Object &amp;gt; Clip &amp;gt; Release&amp;lt;/i&amp;gt;. The clipping path is returned to the drawing as a regular object; it is inserted on top of the unclipped object in z-order. &lt;br /&gt;
&lt;br /&gt;
* Any object can be non-destructively masked by another object (called &amp;lt;i&amp;gt;mask&amp;lt;/i&amp;gt;) so that: the mask's black or transparent areas become fully transparent in the masked object; mask's opaque white areas become fully opaque; and all intermediate colors translate into intermediate levels of opacity in the masked object. This allows you to apply, for example, arbitrary transparency gradients to objects.&lt;br /&gt;
** To &amp;lt;b&amp;gt;apply a mask&amp;lt;/b&amp;gt;, select the objects to be masked and the mask object, make sure the mask is above the other objects in z-order, and do &amp;lt;i&amp;gt;Object &amp;gt; Mask &amp;gt; Set&amp;lt;/i&amp;gt;.&lt;br /&gt;
** You can &amp;lt;b&amp;gt;transform, edit, or style&amp;lt;/b&amp;gt; the masked objects as usual. The mask remains applied and transforms together with each masked object.&lt;br /&gt;
** To &amp;lt;b&amp;gt;remove the masking&amp;lt;/b&amp;gt;, do &amp;lt;i&amp;gt;Object &amp;gt; Mask &amp;gt; Release&amp;lt;/i&amp;gt;. The mask is returned to the drawing as a regular object; it is inserted on top of the unmasked object in z-order. &lt;br /&gt;
&lt;br /&gt;
* Objects with clippath show their bounding box intersected with the bounding box of the clippath, instead of the original unclipped bbox as before. (However, this does not apply to objects without clippath of their own which are clipped by being inside a clipped group.)&lt;br /&gt;
&lt;br /&gt;
* Clipped or masked objects display &amp;quot;&amp;lt;i&amp;gt;clipped&amp;lt;/i&amp;gt;&amp;quot; or &amp;quot;&amp;lt;i&amp;gt;masked&amp;lt;/i&amp;gt;&amp;quot;, correspondingly, in their statusbar descriptions.&lt;br /&gt;
&lt;br /&gt;
* Although Inkscape had render-only support for clipping paths and masks for quite some time, in this release we fixed a number of bugs which may affect the display of your documents using clippaths or masks.&lt;br /&gt;
** Clippaths and masks with objectBoundingBox units are now shown correctly upon loading of the document.&lt;br /&gt;
** Clippaths without fill didn't work, this is now fixed.&lt;br /&gt;
** Objects with clippaths or masks are correctly copied/pasted between documents.&lt;br /&gt;
&lt;br /&gt;
= SVG conformance =&lt;br /&gt;
&lt;br /&gt;
== Color profile support ==&lt;br /&gt;
&lt;br /&gt;
Inkscape now includes base ICC profile functionality. If compiled with LittleCMS support (if you run &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;--enable-lcms&amp;lt;/code&amp;gt; switch), Inkscape passes the [http://www.w3.org/Graphics/SVG/Test/20030813/htmlframe/full-color-prof-01-f.html ICC color profile test] by W3C. The &amp;amp;lt;color-profile&amp;amp;gt; element has been implemented along with the &amp;quot;color-profile&amp;quot; attribute for &amp;amp;lt;image&amp;amp;gt; elements.&lt;br /&gt;
&lt;br /&gt;
== &amp;amp;lt;switch&amp;amp;gt; support ==&lt;br /&gt;
&lt;br /&gt;
SVG 1.1 '''Conditional Processing Module''' rendering support is implemented, including ''switch'' element, ''requiredFeatures'', ''requiredExtensions'', ''systemLanguage'' attributes. Inkscape passes the Conditional processing tests ([http://www.w3.org/Graphics/SVG/Test/20030813/htmlframe/full-struct-cond-01-t.html] and [http://www.w3.org/Graphics/SVG/Test/20030813/htmlframe/full-struct-cond-02-t.html]) by W3C.&lt;br /&gt;
&lt;br /&gt;
== SVG output ==&lt;br /&gt;
&lt;br /&gt;
* In Inkscape's SVG documents, &amp;lt;b&amp;gt;colors&amp;lt;/b&amp;gt; are now expressed by name (‘white’) or three-digit form (‘&amp;lt;tt&amp;gt;#f3c&amp;lt;/tt&amp;gt;’) when possible.&lt;br /&gt;
&lt;br /&gt;
* The numeric values in &amp;lt;code&amp;gt;transform&amp;lt;/code&amp;gt; attributes are written without insignificant trailing zeros, and anything less than that 1e-8 by absolute value (usually caused by rounding errors) is written as 0 to reduce clutter.&lt;br /&gt;
&lt;br /&gt;
= Transformations =&lt;br /&gt;
&lt;br /&gt;
== Transform dialog ==&lt;br /&gt;
&lt;br /&gt;
Fixes and improvements in the Transform dialog (Ctrl+Shift+M):&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;Apply to each object separately&amp;lt;/b&amp;gt; checkbox is added, allowing you to scale/rotate/skew each selected object by the same amount, around that object's center. When off (by default), the selection is transformed as a whole. The status of this checkbox is remembered across sessions. (It has no effect on Move and Matrix tabs).&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;Clear&amp;lt;/b&amp;gt; button resets the values on the current tab to defaults.&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;Scale&amp;lt;/b&amp;gt; tab now allows you to specify horizontal or vertical size increments in percentage or absolute units. Also, there's a &amp;lt;b&amp;gt;Scale proportionally&amp;lt;/b&amp;gt; checkbox which ensures that scaling preserves the width/height ratio. (If you are scaling several objects proportionally with &amp;quot;Apply to each object separately&amp;quot;, you can only use the % unit to specify the scaling; otherwise each object's scale increments will have the width/height ratio of the entire selection, not of that specific object.)&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;Skew&amp;lt;/b&amp;gt; tab can now specify the skew as an &amp;lt;b&amp;gt;absolute displacement&amp;lt;/b&amp;gt; (e.g. for horizontal skewing of a rectangle, that means the shift of the top rectangle side relative to the bottom), as &amp;lt;b&amp;gt;percentage displacement&amp;lt;/b&amp;gt; (e.g. a 1% horizontal skew of a rectangle means shifting the top side by 1% of the rectangle height), or as an &amp;lt;b&amp;gt;angle&amp;lt;/b&amp;gt; (e.g. horizontal skew by 15 degrees results in the sides of a rectangle being rotated to that angle, while the top and bottom remain horizontal).&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;Matrix&amp;lt;/b&amp;gt; tab (previously called &amp;quot;Transform&amp;quot;) can either edit the current &amp;lt;code&amp;gt;transform=&amp;lt;/code&amp;gt; matrix of an object, or post-multiply the &amp;lt;code&amp;gt;transform=&amp;lt;/code&amp;gt; with the matrix you specify, depending on the &amp;lt;b&amp;gt;Edit current matrix&amp;lt;/b&amp;gt; checkbox. (As it is now redundant, the transformation matrix in the Object Properties dialog is removed.)&lt;br /&gt;
&lt;br /&gt;
* The dialog now correctly &amp;lt;b&amp;gt;watches selection changes&amp;lt;/b&amp;gt; in the active document window and updates its values accordingly.&lt;br /&gt;
&lt;br /&gt;
* The layout of the dialog is simplified, tooltips and mnemonics added for better usability.&lt;br /&gt;
&lt;br /&gt;
* Many bugs are fixed, especially in value conversions between units.&lt;br /&gt;
&lt;br /&gt;
== Persistent rotation centers ==&lt;br /&gt;
&lt;br /&gt;
* The position of the center (axis) of rotation and skewing used by Selector is now &amp;lt;b&amp;gt;remembered&amp;lt;/b&amp;gt; for all objects and restored when you select those objects again (even after saving and reopening the document). When you move or scale an object, its rotation center is moved or scaled too, so its position relative to the object always remains the same unless you move it explicitly.&lt;br /&gt;
&lt;br /&gt;
* When you have several objects selected, they use the rotation center of the &amp;lt;b&amp;gt;first selected object&amp;lt;/b&amp;gt;. If the first object does not have center set (i.e. if it's in a default central position), then several objects will rotate around the geometric center of their common bounding box (as before).&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Shift+click&amp;lt;/b&amp;gt; on the rotation center resets it back to the center of the object's box.&lt;br /&gt;
&lt;br /&gt;
* Consequently, dragging the rotation center is now &amp;lt;b&amp;gt;an undoable action&amp;lt;/b&amp;gt;; you can press Ctrl+Z to undo the drag.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Keyboard rotation&amp;lt;/b&amp;gt; by [, ] keys with various modifiers, as well as the Rotate tab in the &amp;lt;b&amp;gt;Transform dialog&amp;lt;/b&amp;gt;, work around the selected object's rotation center (for multi-object selection, the rotation center of the first selected object).&lt;br /&gt;
&lt;br /&gt;
* Rotation centers are &amp;lt;b&amp;gt;preserved&amp;lt;/b&amp;gt; when duplicating, cloning (including clone tiler), grouping/ungrouping, and converting to path.&lt;br /&gt;
&lt;br /&gt;
[TODO: &lt;br /&gt;
- make it work smartly for groups: if a group has center not set, return the center of the first object inside group with the center set&lt;br /&gt;
&lt;br /&gt;
- a separate tab in the Transform dialog, with 9 buttons in the square grid (for setting it to object's corners, sides, and center) as well as x/y fields for setting center to any position&lt;br /&gt;
&lt;br /&gt;
- make center snap to grid/guides/objects and to other centers&lt;br /&gt;
&lt;br /&gt;
- make objects snap with their center to grid/guides/objects]&lt;br /&gt;
&lt;br /&gt;
== Pasting size ==&lt;br /&gt;
&lt;br /&gt;
A number of commands are added to easily scale selected objects to match the size of the object(s) previously copied to the clipboard. They are all in the Paste Size submenu in Edit menu:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Paste Size&amp;lt;/b&amp;gt; scales the whole selection to match the overall size of the clipboard object(s).&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Paste Width&amp;lt;/b&amp;gt;/&amp;lt;b&amp;gt;Paste Height&amp;lt;/b&amp;gt; scale the whole selection horizontally/vertically so that it matches the width/height of the clipboard object(s). These commands honor the scale ratio lock on the Selector controls bar (between W and H fields), so that when that lock is pressed, the other dimension of the selected object is scaled in the same proportion; otherwise the other dimension is unchanged.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Paste Size Separately&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Paste Width Separately&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Paste Height Separately&amp;lt;/b&amp;gt; work similarly to the above described commands, except that they scale &amp;lt;i&amp;gt;each selected object&amp;lt;/i&amp;gt; separately to make it match the size/width/height of the clipboard object(s).&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
&lt;br /&gt;
== Node tool ==&lt;br /&gt;
&lt;br /&gt;
* In Node tool, &amp;lt;b&amp;gt;deleting node(s)&amp;lt;/b&amp;gt; by Del/Backspace keys or by Ctrl+Alt+clicking a node now &amp;lt;b&amp;gt;tries to preserve, as much as possible, the current shape of the path&amp;lt;/b&amp;gt;. This means that the nodes adjacent to those being deleted have their handles adjusted to approximate the form that the path had before deletion. For example, if you Ctrl+Alt+click a path twice, once to add a new node and then to delete it, the path will not change at all (or change very slightly). The old deletion behavior without adjusting handles is still available via &amp;lt;b&amp;gt;Ctrl+Del&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;Ctrl+Backspace&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* When you &amp;lt;b&amp;gt;switch the type&amp;lt;/b&amp;gt; of the selected node to Smooth or Symmetric by pressing Shift+S/Shift+Y, you can now &amp;lt;b&amp;gt;preserve the position&amp;lt;/b&amp;gt; of one of the two handles by hovering your mouse over it, so that only the other handle is rotated/scaled to match.&lt;br /&gt;
&lt;br /&gt;
* Similarly, when you &amp;lt;b&amp;gt;join endnodes&amp;lt;/b&amp;gt; by pressing Shift+J, you can &amp;lt;b&amp;gt;preserve the position&amp;lt;/b&amp;gt; of one of the two nodes by hovering your mouse over it, so that only the other node is moved. &lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;!&amp;lt;/b&amp;gt; key &amp;lt;b&amp;gt;inverts node selection&amp;lt;/b&amp;gt; in the current subpath(s) (i.e. subpaths with at least one selected node); &amp;lt;b&amp;gt;Alt+!&amp;lt;/b&amp;gt; inverts in the entire path. (This is similar to how these keys work in Selector, with current subpath(s) instead of the current layer.)&lt;br /&gt;
&lt;br /&gt;
* The keyboard shortcut for &amp;quot;Make selected segments curves&amp;quot; in Node tool is changed from Shift+K to &amp;lt;b&amp;gt;Shift+U&amp;lt;/b&amp;gt; for better mnemonics.&lt;br /&gt;
&lt;br /&gt;
== Calligraphic pen ==&lt;br /&gt;
&lt;br /&gt;
* Even when using a graphics tablet with pressure sensitivity, the Calligraphy pen's strokes often look too smooth and artificial. To enable a more natural look, the new &amp;lt;b&amp;gt;Tremor&amp;lt;/b&amp;gt; parameter is added to the Calligraphy tool in this version. Adjustable in the Controls bar from 0.0 to 1.0, it will affect your strokes producing anything from slight unevenness to wild blotches and splotches. This significantly expands the creative range of the tool.&lt;br /&gt;
&lt;br /&gt;
* In all previous versions, pen width depended on zoom in such a way that the strokes &amp;lt;i&amp;gt;appeared&amp;lt;/i&amp;gt; the same visible width at any zoom, but were in fact narrower at zoom-in and wider at zoom-out. This behavior makes sense if you want to keep the same &amp;quot;feel&amp;quot; of the pen regardless of zoom; for example, if you zoomed in to make a small fix to your drawing, it's natural that your pen becomes physically smaller but feels the same to you. So, this behavior is kept as the default, but now we also added an alternative mode where your &amp;lt;b&amp;gt;pen width is constant in absolute units&amp;lt;/b&amp;gt; regardless of zoom. To switch to this mode, use the checkbox on the tool's Preferences page (you can open it by double-clicking the tool button).&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;Width&amp;lt;/b&amp;gt; field in the tool's controls bar now changes &amp;lt;b&amp;gt;from 1 to 100&amp;lt;/b&amp;gt;, which corresponds to the range from 0.01 to 1.0 in the previous version. If the &amp;quot;width in absolute units&amp;quot; mode is turned on, the value in this fields gives the width of the stroke in px units. In the default mode, the value of 100 gives 100px wide strokes only at 100% zoom, and strokes are correspondingly narrower or wider at other zoom levels.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Esc&amp;lt;/b&amp;gt; deselects selected objects in Calligraphic, as in most other tools.&lt;br /&gt;
&lt;br /&gt;
== Pen tool ==&lt;br /&gt;
&lt;br /&gt;
* While drawing a path, you can now &amp;lt;b&amp;gt;move the last node you created&amp;lt;/b&amp;gt; by the same keys as in Node tool - that is, arrows, with Shift (for 10x displacement) or Alt (screen pixel displacement) modifiers. &lt;br /&gt;
&lt;br /&gt;
* Also, you can switch the not-yet-finalized (red) segment of the path being drawn from curve to line (&amp;lt;b&amp;gt;Shift+L&amp;lt;/b&amp;gt;) or back to curve (&amp;lt;b&amp;gt;Shift+U&amp;lt;/b&amp;gt;), again the same shortcuts as in the Node tool.&lt;br /&gt;
&lt;br /&gt;
* By popular demand, if a new path is being drawn but not yet finished, &amp;lt;b&amp;gt;Ctrl+Z cancels&amp;lt;/b&amp;gt; that unfinished path (i.e. does the same as Esc), instead of undoing the previous action.&lt;br /&gt;
&lt;br /&gt;
* In Pen tool, &amp;lt;b&amp;gt;Del&amp;lt;/b&amp;gt; works the same as Backspace to delete the last created point on the unfinished path.&lt;br /&gt;
&lt;br /&gt;
= Connectors and automatic layout =&lt;br /&gt;
&lt;br /&gt;
* There have been numerous bugfixes and several improvements to the behaviour of &amp;lt;b&amp;gt;connectors&amp;lt;/b&amp;gt; and the &amp;lt;b&amp;gt;connector tool&amp;lt;/b&amp;gt;:&lt;br /&gt;
** Connectors moved as part of a selection will now stay attached to other objects in the selection, rather than becoming detached from them.&lt;br /&gt;
** By default, the Connector tool will not attach connectors to text objects.  There is a new checkbox in the connector preferences to control this setting.&lt;br /&gt;
** The &amp;lt;b&amp;gt;margins around avoided shapes&amp;lt;/b&amp;gt; (used for autorouting connectors) can now be adjusted via the &amp;quot;Spacing&amp;quot; control on the controls bar.&lt;br /&gt;
&lt;br /&gt;
* Automatic Diagram Layout - A new button is available in the alignment and distribution dialogue that performs automatic layout of diagrams involving a network of shapes and connectors.  Layout is accomplished using force-directed graph layout based on the Kamada-Kawai algorithm.  This algorithm treats edges as if they are springs such that the distance between nodes will be proportional to the path length---number of connectors---between them.  Disconnected components (where not every shape is connected) will be arranged around the circumference of a circle.&lt;br /&gt;
&lt;br /&gt;
* There is a new &amp;lt;b&amp;gt;Remove Overlaps&amp;lt;/b&amp;gt; button to move the selected objects enough that they don't overlap each other.  A minimum spacing between the boundaries of objects can be specifiedTogether with the automatic layout tool, described above, this should be a significant addition to Inkscape's usability for diagramming. [Consider expanding this, comparing with existing Unclump and Distribute edge-to-edge buttons. - pjrm]&lt;br /&gt;
&lt;br /&gt;
= Selective tracing with SIOX =&lt;br /&gt;
&lt;br /&gt;
[ishmal]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Path effects =&lt;br /&gt;
&lt;br /&gt;
[acspike]&lt;br /&gt;
&lt;br /&gt;
= Snapping =&lt;br /&gt;
&lt;br /&gt;
* [object snap - carl]&lt;br /&gt;
&lt;br /&gt;
* [highlight - mtou]&lt;br /&gt;
&lt;br /&gt;
* [only to visible gridlines - mtou]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Guidelines&amp;lt;/b&amp;gt; are made easier to pick: now you don't need to position mouse &amp;lt;i&amp;gt;exactly&amp;lt;/i&amp;gt; over a guideline to activate it, instead there's a small position tolerance (1 screen pixel on each side of the guideline).&lt;br /&gt;
&lt;br /&gt;
= Sublayers =&lt;br /&gt;
&lt;br /&gt;
Previously, it was only possible to make a group a temporary sublayer by entering that group. Now Inkscape supports creating and using true persistent sublayers within a layer.&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;Add layer&amp;lt;/b&amp;gt; dialog allows you to place the new layer above, below, or inside the current layer.&lt;br /&gt;
&lt;br /&gt;
* Extended &amp;quot;Select All&amp;quot; option - now there is an option for &amp;quot;Select All&amp;quot; and TAB browsing to work in current layer with it's sublayers.&lt;br /&gt;
&lt;br /&gt;
= Extensions =&lt;br /&gt;
&lt;br /&gt;
* [enabled by default?]&lt;br /&gt;
&lt;br /&gt;
* [python extensions to work out of the box on windows? - ishmal]&lt;br /&gt;
&lt;br /&gt;
* [extension manager - gouldtj]&lt;br /&gt;
&lt;br /&gt;
* [xslt effects - gouldtj]&lt;br /&gt;
&lt;br /&gt;
* A new Python effect, &amp;lt;b&amp;gt;Render &amp;gt; LaTeX formula&amp;lt;/b&amp;gt;, allows you to type in any LaTeX formula and get a vector object with the TeX rendition of this formula inserted into your document. You need to have &amp;lt;b&amp;gt;latex&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;dvips&amp;lt;/b&amp;gt;, and &amp;lt;b&amp;gt;pstoedit&amp;lt;/b&amp;gt; installed and in PATH for this to work.&lt;br /&gt;
&lt;br /&gt;
* A new Python effect, &amp;lt;b&amp;gt;Flatten Path&amp;lt;/b&amp;gt;, flattens paths in the current selection, approximating each path with a polyline whose segments meet the specified criteria for flatness.&lt;br /&gt;
&lt;br /&gt;
* A new Python effect, &amp;lt;b&amp;gt;Measure Path&amp;lt;/b&amp;gt;, attaches a text label to each path in the selection giving the length of that path (in px units).&lt;br /&gt;
&lt;br /&gt;
* The Radius Randomize effect has a new parameter which enables &amp;lt;b&amp;gt;normal distribution&amp;lt;/b&amp;gt; of random displacements instead of uniform as before, which gives a more natural feel to the randomized path.&lt;br /&gt;
&lt;br /&gt;
= Formats =&lt;br /&gt;
&lt;br /&gt;
* [save zip with images - mipmip] collects the svg file and all linked images into a zip archive for distribution.&lt;br /&gt;
&lt;br /&gt;
* An output format for &amp;lt;b&amp;gt;desktop cutting plotters&amp;lt;/b&amp;gt;, such as the Wishblade and Craftrobo, was added. This format is a very minimalist DXF file with appropriate scaling and translation applied. This output format should not be expected to operate as a generalized DXF output.&lt;br /&gt;
&lt;br /&gt;
* [xfig]&lt;br /&gt;
&lt;br /&gt;
* [odg - ishmal]&lt;br /&gt;
&lt;br /&gt;
* The new &amp;lt;b&amp;gt;XCF output extension&amp;lt;/b&amp;gt; exports all top-level elements (i.e. layers and objects directly under root) as PNGs and assembles them into an XCF for procesing in the Gimp. Requires Python, PyXML and Gimp. Gimp 2.2.x or above must be in the path and be named &amp;lt;code&amp;gt;gimp&amp;lt;/code&amp;gt;. A version of Inkscape 0.44 or above must be accessible from the path. Does not function in Windows.&lt;br /&gt;
&lt;br /&gt;
= Configurable keyboard =&lt;br /&gt;
&lt;br /&gt;
Inkscape's &amp;lt;b&amp;gt;keyboard shortcuts are now configurable!&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
At this time, not all Inkscape actions can have their shortcuts customized. However, the majority of actions, including everything you see in the menus, are already configurable, and we're working on making more actions configurable. &lt;br /&gt;
&lt;br /&gt;
On startup, Inkscape reads its keyboard shortcuts from &amp;lt;code&amp;gt;share/keys/default.xml&amp;lt;/code&amp;gt;. That file is a copy of &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt; in the same directory, which also contains keyboard emulation profiles for other vector editors:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;xara.xml&amp;lt;/code&amp;gt;: Xara X/Xara Xtreme/Xara LX keys&lt;br /&gt;
&lt;br /&gt;
You can copy any of these over default.xml to use that profile. In all profiles, those keys which are not used by the corresponding program still have their Inkscape bindings. If you can contribute a profile for some vector editor that we don't yet have, we will appreciate that. The files have a simple XML-based format described in &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
You can also &amp;lt;b&amp;gt;customize some of your keybindings&amp;lt;/b&amp;gt; without overwriting the main &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;. If your profile directory (&amp;lt;code&amp;gt;~/.inkscape&amp;lt;/code&amp;gt; on Linux) contains a &amp;lt;code&amp;gt;keys&amp;lt;/code&amp;gt; subdirectory with a &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; file, the keybindings from that file will overlay (i.e. add to, and override in case of a conflict) the default bindings. The format of your own &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; is the same as that of the main &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Miscellaneous shortcuts =&lt;br /&gt;
&lt;br /&gt;
* Now you can use &amp;lt;b&amp;gt;Shift+middle button drag&amp;lt;/b&amp;gt;, in any tool, to zoom into an area. This works the same as simple drag in Zoom tool, but is faster because it does not require switching away from your current tool. Together with &amp;lt;b&amp;gt;middle button drag&amp;lt;/b&amp;gt; (panning), &amp;lt;b&amp;gt;middle button click&amp;lt;/b&amp;gt; (zoom in) and &amp;lt;b&amp;gt;Shift+middle button click&amp;lt;/b&amp;gt; (zoom out), this completes the set of canvas navigation shortcuts available in any tool or context.&lt;br /&gt;
&lt;br /&gt;
* In Gradient tool, &amp;lt;b&amp;gt;Shift+R reverses the gradient definition&amp;lt;/b&amp;gt; (i.e. mirrors the stop positions) without moving the gradient handles. For example, an elliptic gradient with blue center and red periphery becomes red in the center and blue in the periphery. This works on the gradient(s) of the currently selected gradient handle or, if no handle is selected, on all selected objects' gradients. (Compare with the Node tool where Shift+R reverses the direction of the selected path.) This is especially convenient for elliptic gradients which, unlike linear, you cannot simply rotate by 180 degrees for the same result.&lt;br /&gt;
&lt;br /&gt;
* In Selector, &amp;lt;b&amp;gt;Ctrl+Enter&amp;lt;/b&amp;gt; enters the selected group (making it a temporary layer). &amp;lt;b&amp;gt;Ctrl+Backspace&amp;lt;/b&amp;gt; leaves the current layer and goes one layer up in the hierarchy (but not to root).&lt;br /&gt;
&lt;br /&gt;
= Miscellaneous improvements =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Document templates&amp;lt;/b&amp;gt; (listed in &amp;lt;i&amp;gt;File &amp;amp;gt; New&amp;lt;/i&amp;gt;) are now first searched in the &amp;lt;code&amp;gt;templates&amp;lt;/code&amp;gt; subdirectory of the user's profile directory (on Linux it's &amp;lt;code&amp;gt;~/.inkscape/templates&amp;lt;/code&amp;gt;), then in the system-wide Inkscape templates directory. This allows you to add your own templates on top of the list of standard templates, as well as override the default template with your own one (the &amp;lt;code&amp;gt;default.svg&amp;lt;/code&amp;gt; in the profile directory has priority over the system-wide one).&lt;br /&gt;
&lt;br /&gt;
* When toggling one of the &amp;quot;transform with object&amp;quot; buttons (for stroke width, rounded rectangle corners, gradients, or patterns), a &amp;lt;b&amp;gt;message&amp;lt;/b&amp;gt; is displayed in the statusbar explaining what has changed in the program's behavior. Hopefully this will reduce the number of complaints from users who had accidentally toggled one of these and were surprised by the result.&lt;br /&gt;
&lt;br /&gt;
* Whole thousands above 2000 in the rulers are now displayed as &amp;lt;b&amp;gt;2k, 3k, 4k&amp;lt;/b&amp;gt; etc.&lt;br /&gt;
&lt;br /&gt;
* In the Document Preferences dialog, the new object style for each tool is now shown as a &amp;lt;b&amp;gt;style swatch&amp;lt;/b&amp;gt; (displaying fill/stroke colors and opacity, stroke width, and master opacity), similar in design to the selected style indicator in the statusbar.&lt;br /&gt;
&lt;br /&gt;
* In the Grid Arrange dialog, row/column spacing can now be negative. &lt;br /&gt;
&lt;br /&gt;
* The installation default is now to scale the &amp;lt;b&amp;gt;rounded rectangle corners&amp;lt;/b&amp;gt; with the rectangles themselves (the previous default mode, still available as an option, was to keep rounding radii unchanged when scaling rectangles). &lt;br /&gt;
&lt;br /&gt;
* Added a new &amp;lt;code&amp;gt;--export-area-canvas&amp;lt;/code&amp;gt; command line parameter that causes the exported PNG to contain the full canvas. This option as well as &amp;lt;code&amp;gt;--export-area-drawing&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--export-area&amp;lt;/code&amp;gt; can now be used along with &amp;lt;code&amp;gt;--export-id&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--export-id-only&amp;lt;/code&amp;gt; for greater flexibility.&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;code&amp;gt;--query-*&amp;lt;/code&amp;gt; command line parameters now return the true SVG bounding box of the object instead of the Inkscape coordinate system bbox (with inverted Y axis). The new behavior makes more sense for scripting use of Inkscape.&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;dpi&amp;lt;/b&amp;gt; value in the Export dialog has had its range extended; now possible values are from 0.01 to 100000. &lt;br /&gt;
&lt;br /&gt;
* Individual &amp;lt;b&amp;gt;&amp;amp;lt;tspan&amp;amp;gt;s&amp;lt;/b&amp;gt; within text objects (including line tspans) can now be selected via the XML editor to view their bounding boxes (though per SVG, you cannot transform them). Also, you can use the &amp;lt;code&amp;gt;--query-*&amp;lt;/code&amp;gt; command line parameters to find out the bounding boxes of tspans from a script. (Individual strings within or between tspans are still not selectable, and they cannot have an ID for querying anyway.)&lt;br /&gt;
&lt;br /&gt;
* The placeholder image which is shown when a bitmap file was no longer accessible reads now &amp;quot;&amp;lt;b&amp;gt;Linked image not found&amp;lt;/b&amp;gt;&amp;quot; instead of the confusing &amp;quot;Broken image&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Cloning multiple selected objects&amp;lt;/b&amp;gt; now works as expected (i.e. each selected object is cloned separately, similar to the Duplicate command). Previously you could only clone a single selected object. &lt;br /&gt;
&lt;br /&gt;
* The separate &amp;quot;license&amp;quot; and &amp;quot;contributors&amp;quot; dialogs have been merged into tabs  on the About dialog.  The about dialog now correctly sizes itself to fit the size of the splash SVG (while remaining resizable), and the rendering area is now cropped to the correct aspect ratio when the dialog is resized.  The dialog also now displays the build information in the upper right corner.&lt;br /&gt;
&lt;br /&gt;
* [new cursors - scislac]&lt;br /&gt;
&lt;br /&gt;
* In the Transform dialog / Rotate tab, the icon was flipped horizontally to be in line with the direction of positive rotation; the change was applied to the default (now crispy) and legacy icon sets.&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;scale ratio lock button&amp;lt;/b&amp;gt; on the Selector controls bar shows a closed lock when pressed and open lock otherwise (same as the layer lock in the statusbar).&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;Browse&amp;lt;/b&amp;gt; button on Export dialog now opens the new file chooser, same as those used by Open and Save.&lt;br /&gt;
&lt;br /&gt;
* A new &amp;lt;b&amp;gt;RazorWire&amp;lt;/b&amp;gt; path marker was added. By applying it as a mid-marker you can get a good approximation of a razor wire.&lt;br /&gt;
&lt;br /&gt;
= Miscellaneous bugfixes =&lt;br /&gt;
&lt;br /&gt;
* More document memory is now freed when documents are closed.&lt;br /&gt;
&lt;br /&gt;
* Reading a document with an incorrect namespace URI could pollute Inkscape's internal namespace table, resulting in an &amp;quot;infection&amp;quot; of subsequently saved documents by the incorrect namespace.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Scaling of objects with stroke&amp;lt;/b&amp;gt; in Selector used to cause undesired shifts of the scaled object, as well as scaling it in the dimension which was intended to remain untouched (e.g. slight change in width when you scale only height). All these problems are now fixed, both for interactive scaling by mouse and for numeric scaling via the Controls bar, and for both values of the &amp;quot;Scale stroke with objects&amp;quot; option. Among other things, this means that stroked objects no longer lose snapping on scale, and that the &amp;quot;Default scale origin&amp;quot; option in the Selector tool preferences finally works as designed. Caveat: There may still be problems if you scale a selection that contains objects with different stroke widths.&lt;br /&gt;
&lt;br /&gt;
* Scaling of stroke now works for objects that didn't specify stroke-width; before, they always ended up with the default 1px stroke.&lt;br /&gt;
&lt;br /&gt;
* The bounding box for text and flowed text objects did not include stroke width.  This has been fixed.&lt;br /&gt;
&lt;br /&gt;
* Stroke miterlimit on text objects was misinterpreted in absolute units instead of multiplies of stroke width (resulting in miter joins rendered as bevel). &lt;br /&gt;
&lt;br /&gt;
* The unfinished path in Pen tool is now cancelled, not finalized, when you switch away from the Pen tool. Apart from being more intuitively correct, this also fixes a crash when you quit Inkscape with the unfinished path in Pen tool.&lt;br /&gt;
&lt;br /&gt;
* Fonts on Win32 now use the native font mapper, meaning that Inkscape's font list is the same as other Windows programs, and the (potentially) very long delay experienced when using fonts for the first time in each session is gone.&lt;br /&gt;
&lt;br /&gt;
* Setting dash pattern was broken for transformed objects, and copy/paste of style with dash pattern did not apply correctly to objects with transforms.&lt;br /&gt;
&lt;br /&gt;
* An error caused a complete extra screen redraw after each zoom operation. That is, after you press &amp;quot;+&amp;quot; in a complex drawing, Inkscape redraws, but for some time after that it remains still unresponsive because it does that second redraw (invisibly for you, i.e. nothing changes on the screen). This is fixed.&lt;br /&gt;
&lt;br /&gt;
* Gradient rendering was off by one pixel, which often resulted in visibly wrong gradient rendering for small objects or in zoom-out. &lt;br /&gt;
&lt;br /&gt;
* The SVG path parser could not handle fractional numbers with the initial dot. &lt;br /&gt;
&lt;br /&gt;
* Several pattern rendering bugs are fixed, discovered by working with SVG files exported from Adobe Illustrator.&lt;br /&gt;
&lt;br /&gt;
* Inkscape on Mac OS X will now notice fonts in your ~/Library/Fonts directory, in addition to the other standard places.&lt;br /&gt;
&lt;br /&gt;
* Inkscape couldn't be compiled with libxml versions &amp;lt;= 2.6.9, and we now bumped the requirements from 2.6.0 up to &amp;lt;b&amp;gt;libxml &amp;gt;= 2.6.11&amp;lt;/b&amp;gt;, which is the earliest you can get officially, anyway.&lt;br /&gt;
&lt;br /&gt;
* Inkscape no longer crashes when presented with a defective inx file for extensions.&lt;br /&gt;
&lt;br /&gt;
* There was a regression in 0.43 that caused several minor, though annoying bugs; knots and handles remained highlighted after the mouse was released, and the rubberband selection rectangle stayed visible if the selection was ended over a node while in the node tool.  This regression has been fixed.         &lt;br /&gt;
&lt;br /&gt;
* The connector routing code would previously sometimes confuse objects between multiple documents resulting in strange routing behaviour.  This has been fixed.&lt;br /&gt;
&lt;br /&gt;
* There existed a bug in 0.43's Inkboard code that allowed a malicious outsider to very easily disrupt an Inkboard session.  This has been fixed.&lt;br /&gt;
&lt;br /&gt;
* There existed a bug in 0.43's Inkboard code that would cause deadlocks in the case that two users attempted to invite each other at the same time (see bug #[https://sourceforge.net/tracker/?func=detail&amp;amp;atid=604306&amp;amp;aid=1352522&amp;amp;group_id=93438 1352522] for further details).  This should be fixed, although the fix has not been widely tested.&lt;br /&gt;
&lt;br /&gt;
* There existed a bug in 0.43's Inkboard code that would cause session invitations to not appear on the invitee's screen.  This was the result of a mistake in handling GDK modifier flags, and has been fixed.&lt;br /&gt;
&lt;br /&gt;
= Translations =&lt;br /&gt;
&lt;br /&gt;
* INX files (containing the UI of the external effects) now allow the user visible strings to be translated.  This means that effect dialogs, file type selections, and extension names can all be translated by translators.&lt;br /&gt;
&lt;br /&gt;
= Internal =&lt;br /&gt;
&lt;br /&gt;
* The Document Properties Dialog code was completely gtkmmified, which lead to dramatic reduction of code size due to usage of widget objects. The used widget objects should be reusable by other dialogs, too, and the code is much more readable.&lt;br /&gt;
&lt;br /&gt;
* Work on optimizing includes in all cpp files started, using the purgeincludes tool specifically written for that purpose, and ended with 40% of include lines removed!&lt;br /&gt;
&lt;br /&gt;
= Known problems =&lt;br /&gt;
&lt;br /&gt;
* Previous versions of inkscape sometimes silently saved documents with the wrong namespaces.  This has been fixed, but such corrupted documents will no longer load successfully.  Such documents may require their namespace declarations to be fixed by hand.&lt;br /&gt;
&lt;br /&gt;
=== Beware: defective themes on Linux ===&lt;br /&gt;
&lt;br /&gt;
* Inkscape and other Gtk programs can crash on any Linux, when the &amp;lt;b&amp;gt;gtk2-engines-smooth / libsmooth&amp;lt;/b&amp;gt; package is installed. We have filed a bug against libsmooth which is now in gtk-engine and part of gnome. Removing the package resolves the problem, however, but it would be nice if you as affected user would inform the gtk-engines maintainers of the problem. See especially http://bugzilla.gnome.org/show_bug.cgi?id=312115 (thanks to Thomas Wood)&lt;br /&gt;
* A similar crash happens if the &amp;lt;b&amp;gt;KDE Baghira&amp;lt;/b&amp;gt; theme or the package &amp;lt;b&amp;gt;gtk_qt_engine&amp;lt;/b&amp;gt; are installed. If you experience Inkscape crashes on KDE, please try to install a different theme from Baghira, or uninstall the gtk_qt_engine package from your system. Both problems also affect older versions of Inkscape.&lt;br /&gt;
&lt;br /&gt;
= Previous releases =&lt;br /&gt;
&lt;br /&gt;
* ReleaseNotes043 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes043)&lt;br /&gt;
* ReleaseNotes042 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes042)&lt;br /&gt;
* ReleaseNotes041 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes041)&lt;br /&gt;
* ReleaseNotes040 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes040)&lt;br /&gt;
* ReleaseNotes039 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes039)&lt;br /&gt;
* ReleaseNotes038 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes038)&lt;br /&gt;
* ReleaseNotes037 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes037)&lt;br /&gt;
* ReleaseNotes036 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes036)&lt;br /&gt;
* ReleaseNotes035 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes035)&lt;/div&gt;</summary>
		<author><name>Mjwybrow</name></author>
	</entry>
</feed>