https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&user=Cilix&feedformat=atomInkscape Wiki - User contributions [en]2024-03-28T09:59:50ZUser contributionsMediaWiki 1.36.1https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.91&diff=66379Release notes/0.912010-12-22T16:50:41Z<p>Cilix: /* Tools */ Expain new cycle-select feature</p>
<hr />
<div>==Inkscape 0.49==<br />
<br />
'''(not released yet - [[AnnouncePlanning049]])'''<br />
<br />
==Release highlights==<br />
<br />
TODO<br />
<br />
==Tools==<br />
<br />
=== Selection tool ===<br />
<br />
It is now easier to select "hidden" items: use Alt+mouse wheel scroll to cycle through all items that are stacked on top of each other at the location of the mouse pointer (use Shift+Alt+mouse wheel scroll to add to the existing selection). At present, groups are not honoured, i.e., only individual items within groups are considered.<br />
<br />
==Import/Export==<br />
* New Flash XML Graphics (FXG) export format.<br />
===Gimp XCF improvements===<br />
* The "Save Background" option allows users to choose if the page background is saved with each Gimp layer.<br />
* The exported layers now use the label attribute or, if not set, the id attribute.<br />
* New help tab.<br />
* Some bugs and warnings fixed.<br />
<br />
==Extensions==<br />
* Some extension parameters (enum items, radiobutton options, description and groupheader) can now be translated with context (add msgctxt attribute with the context as value). Other parameters in progress, but apparently, intltool-extract doesn't support context on attributes (only on element values). --[[User:JazzyNico|JazzyNico]] 07:18, 9 October 2010 (UTC)<br />
* The new guillotine extension is used for exporting png slices from a drawing. The slice rectangles are defined by adding horizontal and vertical guides within the canvas boundary, the canvas boundary serves as the outside of the sliced area.<br />
* Number nodes. New parameters allowing users to choose the starting dot number and the numbering step between two nodes.<br />
* The new G-code tools extension converts paths to G-code (using circular interpolation), makes offset paths and engraves sharp corners using cone cutters.<br />
<br />
==Live Path Effects==<br />
===PowerStroke===<br />
Here a list of the current state; note that this is very much work in progress and '''anything can change'''. I think this is the most efficient place of keeping track how the powerstroke LPE works.<br />
* stroke knots are purple diamonds<br />
* when first applied, 3 stroke knots are added one at start, one at end, one somewhere in the middle along the path.<br />
* adding nodes: ctrl+click purple knot, unselect object, reselect it.<br />
* "sort points" reorders the stroke knots according to where they lie along the path (where they are closest to the path), instead of keeping them in original order.<br />
<br />
[http://imgh.us/powerstroke-ell.png example screenshot]<br />
<br />
==User interface==<br />
===Translations===<br />
The ''Keyboard and mouse reference'' (inkscape-docs project) and color palettes' labels are now translatable .<br />
<br />
===Menus===<br />
Text and Fond, Fill and Stroke and Check Spelling dialogs added to the text object context menu (right click).<br />
<br />
==Alignement==<br />
New "Exchange position of selected objects" feature. It adds three buttons in the Align and Distribute dialog (rearrange group) that exchange the selected objects position: 1. according to the selection order, 2. according to the stacking order, and 3. clockwise.<br />
<br />
==D-BUS==<br />
<br />
==Notable bug fixes==<br />
<br />
==Known issues==<br />
<br />
==Previous releases==<br />
<br />
* [[ReleaseNotes048]]<br />
* [[ReleaseNotes047]]<br />
* [[ReleaseNotes046]]<br />
* [[ReleaseNotes045]]<br />
* [[ReleaseNotes044]]<br />
* [[ReleaseNotes043]]<br />
* [[ReleaseNotes042]]<br />
* [[ReleaseNotes041]]<br />
* [[ReleaseNotes040]]<br />
* [[ReleaseNotes039]]<br />
* [[ReleaseNotes038]]<br />
* [[ReleaseNotes037]]<br />
* [[ReleaseNotes036]]<br />
* [[ReleaseNotes035]]<br />
<br />
[[Category:Marketing]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Talk:AboutScreenTranslation&diff=54617Talk:AboutScreenTranslation2009-11-01T20:44:06Z<p>Cilix: </p>
<hr />
<div>Topic is the german translation of "draw freely"<br />
<br />
I changed it back to both uppercase ("Frei Zeichnen" instead of "Frei zeichnen") as it can be both lowercase or both uppercase, but not mixed as "Frei" is an adjective here. Both lowercase would be less conservative and ok with me. Both uppercase seems correct as this is a title.<br />
<br />
: ~suv prefers "'''frei zeichnen'''"<br />
: (imho "Frei Zeichnen" isn't correct either - it's "freies Zeichnen" ('frei' as adjective) or "frei zeichnen" ('frei' as adverb), and capitalized as title: "Freies Zeichnen" or "Frei zeichnen" - but I am completely ignorant of the new German spelling rules ;-)<br />
<br />
: ~cilix prefers "'''Freies Zeichnen'''"<br />
: Sorry for changing "zeichnen" to lowercase without discussing first. However, "Frei Zeichnen" is just plain wrong since only the first word and nouns/names get capitalized in German titles, as opposed to English (see http://www.canoo.net/services/GermanSpelling/Regeln/Gross-klein/Titel.html for the first reference that comes up with a Google search). Hence "Frei zeichnen" is the only correct spelling for this formulation (as ~suv pointed out above). I like the suggestion "Freies Zeichnen" quite a lot, since "Frei zeichnen" for some reason sounds more like an anglicism than an idiomatic German phrase to me in this context (which may be a personal opinion, though). BTW, you could argue that for artistic or similiar reasons it's possible to start the whole expression with a lowercase letter. However, ~suv already mentioned that this leaves you with the two options "frei zeichnen" and "freies Zeichnen", both of which don't look too well in a title IMHO (and all other translations are capitalized, too). @~suv: I'm also relatively ignorant of the new spelling rules, but I believe they don't change anything in this case anyway. [[User:Cilix|cilix]] 11:22, 31 October 2009 (UTC)<br />
<br />
Ok, you are right, "freely" is an adverb and german capitalization would have only the frist letter uppercase here. But IMHO _this_ looks very odd. In my case I would have to think twice to agree to this way of writing it, when I would see it first. Not the best way to go for a snappy catchphrase...<br />
I thought about "f/Freies Zeichnen" before I suggested "frei zeichnen". But "freies Zeichnen" is the description of a certain technique of drawing and doesn't have the additional meaning intended here.<br />
I agree that "frei zeichnen" might look a little strange. The meaning however is closer to the original phrase as it can mean "to draw playfully/without rules" and "to draw without any domination". And in this way a little strangeness might even help to get the readers to the point.<br />
<br />
:Okay, on second thought I agree that "[Ff]rei zeichnen" is probably better than "[Ff]reies Zeichnen" (and I wasn't aware of the drawing technique, which basically rules out the second alternative). Regarding capitalization, all lowercase really looks strange at first, but once you get used to it it's actually not that bad - and you have a point that it might catch the reader's attention. So perhaps "freies zeichnen" is indeed the "best" (as in "least bad" :-) ) option. [[User:Cilix|cilix]] 20:44, 1 November 2009 (UTC)</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Talk:AboutScreenTranslation&diff=54609Talk:AboutScreenTranslation2009-10-31T11:22:23Z<p>Cilix: Add explanation</p>
<hr />
<div>Topic is the german translation of "draw freely"<br />
<br />
I changed it back to both uppercase ("Frei Zeichnen" instead of "Frei zeichnen") as it can be both lowercase or both uppercase, but not mixed as "Frei" is an adjective here. Both lowercase would be less conservative and ok with me. Both uppercase seems correct as this is a title.<br />
<br />
: ~suv prefers "'''frei zeichnen'''"<br />
: (imho "Frei Zeichnen" isn't correct either - it's "freies Zeichnen" ('frei' as adjective) or "frei zeichnen" ('frei' as adverb), and capitalized as title: "Freies Zeichnen" or "Frei zeichnen" - but I am completely ignorant of the new German spelling rules ;-)<br />
<br />
: ~cilix prefers "'''Freies Zeichnen'''"<br />
: Sorry for changing "zeichnen" to lowercase without discussing first. However, "Frei Zeichnen" is just plain wrong since only the first word and nouns/names get capitalized in German titles, as opposed to English (see http://www.canoo.net/services/GermanSpelling/Regeln/Gross-klein/Titel.html for the first reference that comes up with a Google search). Hence "Frei zeichnen" is the only correct spelling for this formulation (as ~suv pointed out above). I like the suggestion "Freies Zeichnen" quite a lot, since "Frei zeichnen" for some reason sounds more like an anglicism than an idiomatic German phrase to me in this context (which may be a personal opinion, though). BTW, you could argue that for artistic or similiar reasons it's possible to start the whole expression with a lowercase letter. However, ~suv already mentioned that this leaves you with the two options "frei zeichnen" and "freies Zeichnen", both of which don't look too well in a title IMHO (and all other translations are capitalized, too). @~suv: I'm also relatively ignorant of the new spelling rules, but I believe they don't change anything in this case anyway. [[User:Cilix|cilix]] 11:22, 31 October 2009 (UTC)</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=AboutScreenTranslation&diff=54591AboutScreenTranslation2009-10-31T00:01:37Z<p>Cilix: Changed 'zeichnen' in German translation to lowercase</p>
<hr />
<div>"Draw Freely" about screen translations:<br />
<br />
*about.be.svg -> Рысуй вольна<br />
*about.bg.svg -> РИϹУВАЙ ϹВОБОДНО (!)<br />
*about.br.svg -> Tresit Dinask (0.47)<br />
*about.cz.svg -> Kreslí svobodně (!)<br />
*about.de.svg -> Frei zeichnen<br />
*about.es.svg -> Dibuja en libertad<br />
*about.fi.svg -> Piirrä vapaasti<br />
*about.fr.svg -> Dessiner librement (0.47)<br />
*about.gl.svg -> Debuxa con liberdade<br />
*about.hu.svg -> Rajzoljon szabadon<br />
*about.it.svg -> Disegna in Libertà (0.47)<br />
*about.nl.svg -> Vrij tekenen (0.47)<br />
*about.pl.svg -> Rysuj swobodnie<br />
*about.pt_BR.svg -> Desenhe Livremente (!) (0.47)<br />
*about.ru.svg -> Рисуй свободно (!) (0.47)<br />
*about.sk.svg -> Kreslite slobodne<br />
*about.sl.svg -> Rišite svobodno<br />
*about.sr@latin.svg -> Slobodno crtaj (!)<br />
*about.sr.svg -> Слободно цртај (!)<br />
*about.uk.svg -> Малюй вільно<br />
<br />
(!) To be confirmed<br />
(0.47) Screen translated in 0.47.</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Roadmap_revised&diff=54235Roadmap revised2009-10-15T10:46:45Z<p>Cilix: /* Milestone 14 - Inkscape 0.48 - Infrastructure and Bugfixing (Short Cycle, Point Releases) */</p>
<hr />
<div>=== Milestone 14 - Inkscape 0.48 - Infrastructure and Bugfixing (Short Cycle, Point Releases) ===<br />
<br />
Infrastructure<br />
* Switch to DVCS<br />
* Complete lib2geom integration<br />
* Continue Cairoification (in new branch)<br />
<br />
Tools:<br />
* Text tool<br />
** [https://bugs.launchpad.net/inkscape/+bug/sf904962 correct handling of multiple font faces] by Text tool<br />
** Ability of setting other units than pixels<br />
** Better inline style editing<br />
** Hyphenation<br />
* [http://article.gmane.org/gmane.comp.graphics.inkscape.devel/16938/ Filters tool]<br />
Finish autoswatches<br />
<br />
Finish Maximilian's patch for guides selection<br />
* Aligning objects to a selected guideline<br />
* Distribution of guides<br />
Update LPEs that can take advantage of the new node tool (e.g. envelope)<br />
<br />
<br />
Merge GSoC work<br />
* Spray tool<br />
<br />
Image links management<br />
* Better management of image links (manage absolute and relative links properly)<br />
* Simple UI to fix broken links or relink images<br />
* Proper interpretation of the resolution of the imported images (i.e.: if the document's default units are cm or inches, read the resolution value of the image and scale it to fit the proper size))<br />
<br />
Color Management<br />
* Support for icc profiles<br />
* Color managed view<br />
* Use recently added color management in poppler based PDF/AI import plug-in<br />
Guides<br />
<br />
Desktop Integration Effort:<br />
* [PARTIALLY DONE] Inter-application cut-and-paste<br />
* Inter-application drag-and-drop<br />
<br />
Extension Effort:<br />
* Unification of the way to display help on extensions<br />
* Localizable help of bundled extensions<br />
* Effect extensions browser<br />
<br />
File Import/Export:<br />
* File dialogues<br />
** Put all the non svg formats into export/import<br />
* Uniconvertor that can handle text<br />
* PDF Import/Export<br />
** Choice of PDF spec. (PDF/X-1a, PDF/X-3)<br />
** Add file info/comments<br />
** Generate multipage PDF documents<br />
** Define bleed and slug areas for offset printing<br />
** Add crop, bleed and registration marks<br />
** Add color bars<br />
* [[MicrosoftVisio|Visio]] support<br />
** Add extension for use of [[VDX2SVG]] (http://vdxtosvg.sourceforge.net/)<br />
<br />
=== Milestone 15 - Inkscape 0.49 - Code Refactoring (Long Cycle) ===<br />
<br />
Libraries<br />
* GDL - submit patches upstream, switch to dependency on upstream library<br />
* Finish Cairoification<br />
* Extract lib2geom, libavoid and libcoroco - switch to dependency as separate libraries<br />
<br />
Extensions<br />
* Make extensions more modular (groundwork for 3rd party extensions)<br />
<br />
Switch to the usual coordinates system<br />
<br />
Change build system<br />
<br />
GUI<br />
* Support for creating dock items with named icons<br />
<br />
SP tree<br />
<br />
Improve quality and speed of rendering</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Roadmap_revised&diff=54091Roadmap revised2009-10-03T07:34:15Z<p>Cilix: formatting nit</p>
<hr />
<div>=== Milestone 14 - Inkscape 0.48 - Infrastructure and Bugfixing (Short Cycle, Point Releases) ===<br />
<br />
Infrastructure<br />
* Change DVCS<br />
* Complete lib2geom integration<br />
* Continue Cairoification (in new branch)<br />
<br />
Tools:<br />
* Text tool<br />
** [https://bugs.launchpad.net/inkscape/+bug/sf904962 correct handling of multiple font faces] by Text tool<br />
** Ability of setting other units than pixels<br />
** Better inline style editing<br />
** Hyphenation<br />
* [http://article.gmane.org/gmane.comp.graphics.inkscape.devel/16938/ Filters tool]<br />
Finish autoswatches<br />
<br />
Finish Maximilian's patch for guides selection<br />
* Aligning objects to a selected guideline<br />
* Distribution of guides<br />
Update LPEs that can take advantage of the new node tool (e.g. envelope)<br />
<br />
<br />
Merge GSoC work<br />
* Spray tool<br />
<br />
Image links management<br />
* Better management of image links (manage absolute and relative links properly)<br />
* Simple UI to fix broken links or relink images<br />
* Proper interpretation of the resolution of the imported images (i.e.: if the document's default units are cm or inches, read the resolution value of the image and scale it to fit the proper size))<br />
<br />
Color Management<br />
* Support for icc profiles<br />
* Color managed view<br />
* Use recently added color management in poppler based PDF/AI import plug-in<br />
Guides<br />
<br />
Desktop Integration Effort:<br />
* [PARTIALLY DONE] Inter-application cut-and-paste<br />
* Inter-application drag-and-drop<br />
<br />
Extension Effort:<br />
* Unification of the way to display help on extensions<br />
* Localizable help of bundled extensions<br />
* Effect extensions browser<br />
<br />
File Import/Export:<br />
* File dialogues<br />
** Put all the non svg formats into export/import<br />
* Uniconvertor that can handle text<br />
* PDF Import/Export<br />
** Choice of PDF spec. (PDF/X-1a, PDF/X-3)<br />
** Add file info/comments<br />
** Generate multipage PDF documents<br />
** Define bleed and slug areas for offset printing<br />
** Add crop, bleed and registration marks<br />
** Add color bars<br />
* [[MicrosoftVisio|Visio]] support<br />
** Add extension for use of [[VDX2SVG]] (http://vdxtosvg.sourceforge.net/)<br />
<br />
=== Milestone 15 - Inkscape 0.49 - Code Refactoring (Long Cycle) ===<br />
<br />
Libraries<br />
* GDL - submit patches upstream, switch to dependency on upstream library<br />
* Finish Cairoification<br />
* Extract lib2geom, libavoid and libcoroco - switch to dependency as separate libraries<br />
<br />
Extensions<br />
* Make extensions more modular (groundwork for 3rd party extensions)<br />
<br />
Switch to the usual coordinates system<br />
<br />
Change build system<br />
<br />
GUI<br />
* Support for creating dock items with named icons<br />
<br />
SP tree<br />
<br />
Improve quality and speed of rendering</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&diff=53395Release notes/0.472009-07-16T15:41:33Z<p>Cilix: /* Guides */ Describe new behaviour of keyboard modifiers</p>
<hr />
<div>==Inkscape 0.47==<br />
'''(not released yet - [[AnnouncePlanning047]])'''<br />
<br />
==Refactoring effort==<br />
<br />
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.<br />
<br />
===Migration to lib2geom===<br />
Many parts of the code have been changed to use the 2Geom library for geometrical calculations instead of the old libnr and Livarot libraries.<br />
<br />
===Preferences===<br />
Instead of global functions directly manipulating an XML document, the preferences API is now exposed through the <code>Inkscape::Preferences</code> 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.<br />
<br />
==Tools==<br />
<br />
===Node tool===<br />
<br />
* 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.<br />
* 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).<br />
* Snapping has been improved (more details in Snapping below)<br />
* 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).<br />
* The behavior of the buttons/shortcuts that make a node smooth or cusp has been improved:<br />
** 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.<br />
** 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. '''IS THE FOLLOWING CORRECT?''' 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.<br />
*'''Auto smooth nodes''': a new "auto" 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.<br />
<br />
===Tweak tool===<br />
<br />
Several new modes are added to the Tweak tool for transforming, duplicating, and deleting selected objects using the same "soft brush" metaphor that the path editing and coloring modes use. Using these new modes, it is easy to "sculpt" scatterings of small objects, such as clone tilings, into complex and naturalistic textures.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''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. <br />
<br />
* '''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). <br />
<br />
*'''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. <br />
<br />
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:<br />
<br />
Shift+m, Shift+0 move mode<br />
Shift+i, Shift+1 attract/repel objects mode<br />
Shift+z, Shift+2 jitter mode<br />
Shift+<, Shift+>, Shift+3 scale mode<br />
Shift+[, Shift+], Shift+4 rotate mode<br />
Shift+d, Shift+5 duplicate/delete mode<br />
Shift+p, Shift+6 push path mode<br />
Shift+s, Shift+7 shrink/grow path mode<br />
Shift+a, Shift+8 attract/repel path mode<br />
Shift+r, Shift+9 roughen mode<br />
Shift+c paint mode<br />
Shift+j color jitter mode<br />
Shift+b blur mode<br />
<br />
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).<br />
<br />
===Calligraphy tool===<br />
<br />
* The tool's settings can now be saved and restored as presets.<br />
<br />
* 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.<br />
<br />
* The behavior of the tool when tracking a guide (drawing with Ctrl) has been improved:<br />
<br />
** The initial "jerk" when you start drawing is suppressed.<br />
<br />
** The undesired flipping of the stroke to the other side of the guide path, when drawing along closed paths, is fixed. <br />
<br />
** 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.<br />
<br />
===Paint Bucket tool===<br />
* Paint Bucket is now more tightly integrated with potrace. As a result, memory and CPU usage on each fill operation have been reduced significantly.<br />
<br />
===Eraser Tool===<br />
A new eraser tool has been added. Its shortcut is Shift+E. It has two main modes:<br />
<br />
* Delete Objects mode where any shape touched by the tool is deleted completely. This operation is in line with "vector" editing.<br />
* Cut mode where erasing acts similar to erasing in a standard bitmap editor. It acts on all objects in the current layer.<br />
<br />
===Pen and Pencil===<br />
<br />
Apart from the regular Bezier mode, the pen tool now provides several new modes:<br />
<br />
* '''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.<br />
<br />
* '''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).<br />
<br />
* '''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).<br />
<br />
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].<br />
<br />
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.<br />
<br />
====Pencil sketch mode====<br />
[johan]<br />
Press alt and sketch away, release alt to finalize result.<br />
<br />
===Text tool===<br />
<br />
* 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).<br />
<br />
* 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). <br />
<br />
: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.<br />
<br />
==Path effects==<br />
===Notable bug fixes and effect changes===<br />
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:<br />
<br />
* The Pattern Along Path effect:<br />
**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. <br />
** Successive copies of the pattern can now be fused into continuous paths (using the new "fuse nearby ends" feature) so that "filling" the result works as expected.<br />
<br />
===New effects===<br />
<br />
* '''Sketch''': Simulates hand-drawn lines. A set of parameters lets you tune the effect. They are all summarized in this [[:Image:SketchParameters.png|picture]].<br />
<br />
:[[Image:SketchExemple.png|300px]]<br />
<br />
* '''Hatches''' Fills the given shape with rough, configurable and randomized hatches, simulating a quick hand drawing.<br />
:[[Image:hatches-lpe.png|300px]].<br />
<br />
* '''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 "reference" path (a line segment) and a "generating" 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].<br />
:[[Image:VonKochExample.png|300px]]<br />
<br />
:''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.<br />
<br />
* '''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 "sign" of each crossing can be set independantly. <br />
:[[Image:KnotExample.png|300px]]<br />
<br />
:''Warning'': Should not be applied to groups yet, unless you don't want to edit the crossing signs.<br />
<br />
* '''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]<br />
<br />
* '''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.<br />
<br />
: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. <br />
<br />
:To create a Spiro path, select any path and assign the "Spiro spline" 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:<br />
<br />
:* 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.<br />
<br />
:* 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.<br />
<br />
:* Half-smooth nodes - those with one Bezier handle collinear with a straight line segment on the other hand - become "left" or "right" 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.<br />
<br />
: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. <br />
<br />
:Some configurations of points do not converge and produce wild loops and spirals instead of a smooth curve. According to Raph, "The spline solver in this release is _not_ numerically robust. When you start drawing random points, you'll quickly run into divergence. However, "sensible" plates based on real fonts usually converge." Avoid too sharp changes in direction between points to prevent divergence. Hopefully, the robustness of the algorithm will be improved in future releases.<br />
<br />
: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. <br />
<br />
: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.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''Ruler''': [max]<br />
<br />
* '''Interpolate Subpaths''': [Johan]<br />
<br />
<!-- These effects are still hidden or under developpement. unhide them when they are added...<br />
<br />
* '''Lattice Deformation''' allows you to deform an object (or a group of objects) by moving 16 control points.<br />
<br />
* '''Perpendicular bisector''' [max]<br />
<br />
* '''Angle bisector''' [max]<br />
<br />
* '''Tangent to a curve''' [max]<br />
<br />
* '''Circle through 3 points''' [max]<br />
<br />
* '''Circle with radius''' [max]<br />
<br />
* '''Freehand Shape''': [max]<br />
<br />
* '''Path Length''': [max]<br />
<br />
* '''Text Label''': [max]<br />
--><br />
<br />
===New features===<br />
* 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.<br />
<br />
* A new command, '''Remove Path effect''' removes any path effects from all selected objects, going recursively into groups if necessary. <br />
<br />
* 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.<br />
<br />
* Live path effects can now be assigned to the sides of a 3D box (use Ctrl+click to select individual sides).<br />
<br />
* 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.<br />
<br />
* Path type parameters can now link to existing shapes <b>and text</b>, like clones do. Now it is possible to use text as input for the Pattern Along Path effect for example!<br />
<br />
* 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]<br />
<br />
===Live Path Effects for groups===<br />
<br />
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. <br />
<br />
*You can as usual enter the group by double-clicking on it. <br />
*It applies recursively, this means that a LPE can be assigned to groups of groups <br />
*The Effect can be applied definitively with "Convert Object to path"<br />
<br />
===Live Path Effects stacking===<br />
<br />
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.<br />
<br />
==Import/Export==<br />
===PostScript and EPS import===<br />
<br />
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 <code>ps2pdf</code> 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.<br />
<br />
===PDF import===<br />
<br />
* 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 "TimesNewRomanPSMT" and you have "Times New Roman" installed, that font will be used, which will likely give you a more correct appearance than the unknown font "TimesNewRomanPSMT" 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. <br />
<br />
* Importing PDF files now works '''from the command line'''. For example,<br />
<br />
inkscape file.pdf --export-plain-svg=file.svg<br />
<br />
: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 <code>--export</code> command, it will show the import options dialog as before and open the file in the UI.<br />
<br />
===PDF, PostScript, and EPS export===<br />
<br />
The new Cairo-based PS and EPS exporter provides a much better support for various vector features, including clipping paths, patterns, and non-ASCII characters. Those features that are not supported by the target formats are exported via embedded rasters that preserve the appearance; in particular:<br />
<br />
* '''transparency''' is always rasterized in PS or EPS but not PDF, as PDF supports vector transparency;<br />
<br />
* '''filters''', such as blur, are by default rasterized in all three formats (PS, EPS, PDF), but this can be turned off by unchecking the "Rasterize filter effects" option in the UI or adding the --export-ignore-filters option via the command line, in which case filtered objects are rendered as vectors without filters and without rasterization.<br />
<br />
* The '''resolution''' for rasterizing the filters can be set in the UI as "Resolution for rasterization (dpi)" 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 (that only affects on-screen rendering). For example,<br />
<br />
inkscape --export-pdf=out.pdf --export-dpi=300 file.svg<br />
<br />
: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 on anything.)<br />
<br />
All of PS, EPS, and PDF export formats uniformly support the export area options (canvas or drawing) and the new export-id option: <br />
<br />
* 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 "Limit export to the object with ID" 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 at all). The BoundingBox (page size) of the exported PS/EPS/PDF file will correspond to the bounding box of that object; you can override that with "Export area is whole canvas" (GUI) or '''--export-area-canvas''' (command line) option which forces the output to have the size of the SVG document's canvas (this may not be possible with EPS, see below).<br />
<br />
* The "Export area is whole canvas" (GUI) or '''--export-area-canvas''' (command line) option forces the output to have the size of the SVG document's canvas. This is the default for PS and PDF but not for EPS. <br />
<br />
**Note that for EPS, the specification of the format does not allow its bounding box to extend beyond its content. This means that when --export-area-canvas is used with EPS export, the canvas 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.<br />
<br />
** The <b>--export-bbox-page</b> command line parameter is removed; use <b>--export-area-canvas</b> instead. <br />
<br />
* The "Export area is the drawing" (GUI) or '''--export-area-drawing''' (command line) option forces the output to have the size of the exported objects' bounding box, regardless of canvas 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. <br />
<br />
* The <b>--export-embed-fonts</b> option is removed; now Inkscape always embeds and subsets all fonts used in the document when exporting PS, EPS, or PDF.<br />
<br />
===UniConvertor-based import and export===<br />
<br />
Inkscape can now use UniConvertor to import files of the following types:<br />
<br />
* Corel DRAW Compressed Exchange files (CCX)<br />
* Corel DRAW 7-X4 document files (CDR)<br />
* Corel DRAW 7-X4 Template files (CDT)<br />
* Corel DRAW Presentation Exchange files (CMX)<br />
* sK1 files (SK1)<br />
* Computer Graphics Metafiles (CGM)<br />
* Windows Metafiles (WMF)<br />
* AutoCAD Plot files (PLT)<br />
<br />
Inkscape can now use UniConvertor to export files of the following types:<br />
<br />
* Windows Metafiles (WMF)<br />
* sK1 files (SK1)<br />
* AutoCAD Plot files (PLT)<br />
<br />
Text objects are not supported as of UniConvertor 1.1.4.<br />
<br />
On Windows, UniConvertor is included with Inkscape distribution and does not require separate installation.<br />
<br />
===HPGL export===<br />
<br />
Inkscape can now export to HPGL (Hewlett-Packard Graphics Language). It is a file format that is used for various cutters/plotters.<br />
<br />
===JavaFX export===<br />
<br />
[]<br />
<br />
===DXF import and export===<br />
<br />
DXF export 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.<br />
<br />
DXF import is new. It supports a number of the simpler DXF shapes: line, Bezier spline, ellipse, circular arc, text.<br />
<br />
===PNG export===<br />
<br />
* If you specify a relative path for exported PNG file (e.g. <code>../</code>) it will now be resolved relative to the current document's location.<br />
<br />
* PNG export has been updated to include metadata if present in the source SVG.<br />
<br />
==Autosave==<br />
<br />
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).<br />
<br />
==Extensions==<br />
<br />
* 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. <br />
<br />
===New and improved extensions===<br />
<br />
* The new '''Arrange > 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.).<br />
* The improved '''Modify Path > Add Nodes''' extension now also allows segments to be divided into a given number of subsegments.<br />
* The new '''Render > 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.<br />
* The new '''Render > 3D Polyhedron''' extension allows drawing polyhedrons from scratch and render them from OBJ files.<br />
* The new '''Render > 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.<br />
* The new '''Render > 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.<br />
* The new '''Render > 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.<br />
* The new '''Render > 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.<br />
* The new '''Render > 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.<br />
* The new '''Render > Calendar''' extension draws a calendar for a given year with localizable month/weekday names, colors, and other options.<br />
* The new '''Text > 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.<br />
* The new '''Render > Foldable Box''' extension helps to design and construct paper boxes.<br />
* The new '''Modify Path > 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.<br />
<br />
===API changes===<br />
<br />
While the "Live preview" checkbox is useful for most effects, for some it just does not make sense. Now, you can add the attribute <code>needs-live-preview="false"</code> in the <code>effect</code> element in the .inx file of the effect to suppress this checkbox for your effect.<br />
<br />
Parameters passed to extensions (via the <param> element) now have a new boolean attribute - <code>gui-hidden</code> 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.<br />
<br />
All '''.inx''' files are now properly formatted XML files with its own namespace of: <code><nowiki>http://www.inkscape.org/namespace/inkscape/extension</nowiki></code> and a Relax NG schema to define it. More information can be found in the [[Extensions]] Article.<br />
<br />
==Filters==<br />
<br />
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.<br />
<br />
===Preset filters===<br />
<br />
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 "..." 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.<br />
<br />
You can easily add your own filters to these menus. Simply place any SVG file with the filters to the <code>filters</code> subdirectory of your config directory (<code>~/.config/Inkscape/</code> on Linux) and the filters will be picked up. By default, they will be placed in the Personal submenu under Effects > Filters. If you want to control this, add the following attributes to the <code>filter</code> element:<br />
<br />
inkscape:label is the command label<br />
inkscape:menu is the submenu to place the command into<br />
inkscape:menu-tooltip is the tooltip (displayed in the statusbar <br />
as you select the command)<br />
<br />
===''No Filters'' rendering mode===<br />
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 "normal" and "outline" view modes.<br />
<br />
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.<br />
<br />
===Filter quality setting===<br />
<br />
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.<br />
<br />
==SVG support==<br />
<br />
===Optimized CSS properties===<br />
<br />
* As a file size optimization, Inkscape does not write into SVG some of the stroke properties if the object has <code>stroke:none</code> and some of the fill properties when it has <code>fill:none</code>. 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. <br />
<br />
: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.<br />
<br />
:Specifically, if stroke:none, the following properties do not get written to SVG:<br />
<br />
stroke-width<br />
stroke-linecap<br />
stroke-linejoin<br />
stroke-miterlimit<br />
stroke-opacity<br />
stroke-dasharray<br />
stroke-dashoffset<br />
<br />
:Note that this does not include marker properties, which means you can still have markers on a path without visible stroke.<br />
<br />
:If fill:none, the following properties do not get written to SVG:<br />
<br />
fill-opacity<br />
fill-rule<br />
<br />
*The <code>opacity</code> 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).<br />
<br />
*The <code>marker-start</code>, <code>marker-mid</code>, and <code>marker-end</code> properties are not written if the <code>marker</code> property is already present with the same value.<br />
<br />
===Optimized path data===<br />
<br />
In this version, the size of the path data written in the <code>d=</code> attribute of <code>path</code> elements is reduced by about 10%. Inkscape generates the shortest possible path strings by avoiding repeated operators and using relative coordinates (when it helps).<br />
<br />
This is controlled by the '''SVG output''' page of Inkscape Preferences dialog, as well as the following attributes in <code>group id="svgoutput"</code> in your preferences.xml file:<br />
<br />
* allowrelativecoordinates (default 1) to switch relative coordinates on (1) or off (0)<br />
* forcerepeatcommands (default 0) to force repeating operators (1) or allow use of the more compact representation without repeated operators (0)<br />
<br />
===No more explicit closing line segment===<br />
Inkscape used to always explicitly write the closing line segment to SVG for closed paths. For example: "M 0,0 L 1,0 L 1,1 L 0,1 L 0,0 z". With the improved SVG path data writing, Inkscape no longer generates this closing line segment, resulting in "M 0,0 L 1,0 L 1,1 L 0,1 z".<br />
When SVG path data input contains this explicit closing segment, it is maintained throughout transformations, but is removed after using the node edit tool.<br />
[this seems no longer to be true, fix it!!! -johan]<br />
<br />
===Horizontal and vertical path segments===<br />
<br />
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.<br />
<br />
===<script> tag preserved===<br />
<br />
While Inkscape does not yet support SVG scripting via the <script> element, this element is now preserved after editing the file in Inkscape.<br />
<br />
===Initial SVG Fonts support===<br />
<br />
As a SoC 2008 project, JucaBlues implemented initial parsing and rendering of [http://www.w3.org/TR/SVG11/fonts.html SVG Fonts].<br />
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. <br />
<br />
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.<br />
<br />
You can open the SVG Font dialog through Text->SVG Fonts menu option.<br />
<br />
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 "missing glyph" 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.<br />
<br />
So, an example of workflow would be:<br />
<br />
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.<br />
<br />
2. Draw something for your desired missing glyph<br />
<br />
3. Click '''Missing Glyph: From selection...'''<br />
<br />
4. Draw a glyph for the "a" character (character matching is case sensitive)<br />
<br />
5. On the '''Glyphs''' tab, click '''Add glyph'''<br />
<br />
6. Type "a" in the '''Matching String''' column (at the moment, handling of the glyph-name attribute is not implemented)<br />
<br />
7. With the row selected, click '''Get curves from selection...'''<br />
<br />
8. Now you will probably see the "a" glyph in the preview rendering, if the preview text contains it. You can freely edit the preview text as needed to view different characters.<br />
<br />
Repeat steps 4 through 7 for every other glyph you wish to add to your font.<br />
<br />
===SVG Test Suite Compliance===<br />
<br />
[describe what has been improved over 0.46 and point to recent test result website]<br />
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.<br />
<br />
List of render test changes with respect to 0.46:<br />
...[files which failed on 0.46 and now pass, and vice versa]<br />
<br />
==Editing Aids==<br />
<br />
===Grids===<br />
* The dotted rectangular grid now shows small crosses at the intersection points of emphasis lines.<br />
<br />
===Guides===<br />
<br />
* Guides can now be rotated using the mouse. Each guide has an anchor (visible as a little circle) around which it can rotate.<br />
:*'''Drag''' a guide anywhere to move it.<br />
:*'''Shift+drag''' to rotate a guide about its anchor (additionally press '''Ctrl''' to constrain the rotation angle to multiples of 15 degrees).<br />
:*'''Ctrl+drag''' to move the anchor along the guide.<br />
:*Press '''Del''' while hovering the mouse over the guide to delete it.<br />
<br />
* 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).<br />
<br />
===Snapping===<br />
<br />
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.<br />
<br />
There is a new toolbar to control the snapping options and modes. Use View > Show/Hide > 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:<br />
* '''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<br />
* '''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. <br />
* 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.<br />
* 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.<br />
<br />
Other improvements are:<br />
* 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.<br />
* In the document properties dialog, the checkbox for "always snap" has been replaced by two radiobuttons; this should eliminate most of the confusion surrounding this option.<br />
* Holding the Shift key now also disables snapping while dragging node handles, and while creating single dots<br />
* During constrained drawing (using Ctrl), Inkscape will now only snap to the points on the constrained line.<br />
* In the selector tool, snapping while skewing or moving with a constraint (with Ctrl) has been improved.<br />
<br />
Inkscape now also considers the following objects for snapping:<br />
* Clipping paths and masks<br />
* Midpoints of line segments<br />
* Midpoints of bounding box edges<br />
* Page border<br />
* Intersections of any kind of paths<br />
* Smooth nodes<br />
* Cusp nodes<br />
* Each of the handle points when creating new shapes<br />
* Radius handles of rectangles<br />
* Single dots<br />
<br />
==Other features==<br />
<br />
===Spell checker===<br />
<br />
There's now a built-in spell checker. Press '''Ctrl+Alt+K''' or choose ''Text > 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. <br />
<br />
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.<br />
<br />
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<br />
document. <br />
<br />
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. <br />
<br />
===Desktop integration improvements===<br />
<br />
* '''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).<br />
<br />
* '''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).<br />
<br />
* '''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]].<br />
<br />
===Shell mode===<br />
<br />
If you run inkscape with <code>--shell</code>, 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:<br />
<br />
$ inkscape --shell<br />
Inkscape 0.46+devel interactive shell mode. Type 'quit' to quit.<br />
>file.svg --export-pdf=file.pdf<br />
>otherfile.svg --export-png=bitmap.png<br />
Background RRGGBBAA: ffffff00<br />
Area 0:0:744.094:1052.36 exported to 744 x 1052 pixels (90 dpi)<br />
Bitmap saved as: bitmap.png<br />
>quit<br />
<br />
===Gesture-based stroke width adjustment===<br />
<br />
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.<br />
<br />
===Enhanced tablet support===<br />
<br />
====Input device tool switching====<br />
<br />
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.<br />
<br />
====Extended input device configuration====<br />
<br />
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.<br />
<br />
Additionally hardware setup itself has been separated from general settings to allow for easier dynamic switching of settings appropriate to the task at hand.<br />
<br />
===Layers===<br />
<br />
The Layers dialog now allows for hiding or showing all layers other than the current layer. This "solo" feature allows for faster switching between working layers and for quick checking with and without others shown.<br />
<br />
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.<br />
<br />
The New Layer dialog can be opened with '''Ctrl+Shift+N''' shortcut.<br />
<br />
Layer names can now be non-unique.<br />
<br />
Several layer-handling inconsistencies have been fixed.<br />
<br />
===Linked bitmaps===<br />
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.<br />
<br />
===Command for relinking clones===<br />
<br />
A new command, '''Relink Clone to Copied''' in ''Edit > 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.<br />
<br />
===Automatic relinking of clones on Duplicate===<br />
<br />
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.<br />
<br />
===Pattern editing===<br />
<br />
When editing pattern fills:<br />
* The pattern origin and scale handles now snap.<br />
* The pattern scaling can now be different in X and Y direction. Press '''Ctrl''' to have a fixed 1:1 ratio scaling (old behavior).<br />
* 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.<br />
<br />
===Transform dialog: spacing out option===<br />
<br />
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 "Relative move" is on, each object is shifted relative to the closest selected object on the left (for X) or below (for Y). <br />
<br />
For example, if you have a horizontal row of objects and you move them relatively by x = 5 px with "Apply to each object separately" 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).<br />
<br />
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.<br />
<br />
===Converting text to path produces a group===<br />
<br />
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.<br />
<br />
===Combine works on groups===<br />
<br />
The Combine command now works transparently on groups, i.e. combines paths inside selected groups at any level of grouping.<br />
<br />
===Path exclusion===<br />
The Exclusion boolean operation can now operate on an arbitrary number of paths.<br />
<br />
==User interface==<br />
<br />
===Inkscape Preferences dialog===<br />
<br />
* 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). <br />
<br />
* 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.<br />
<br />
* '''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.<br />
<br />
* The application's interface language can be set from the preferences dialog. You'll have to restart Inkscape to see the changes.<br />
<br />
===Toolbars===<br />
<br />
* 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.<br />
* 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.<br />
* 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.<br />
* 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.<br />
<br />
===Clone/original visualization===<br />
<br />
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.<br />
<br />
===Miscellaneous===<br />
* The Windows builds of Inkscape now have Windows-native file dialogs to keep consistency with other Windows applications.<br />
* The file dialogs have 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.<br />
* 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).<br />
* The confusing icons on buttons in the controls bar of the Dropper tool (pick/assign opacity) are replaced by text labels.<br />
* The Document Properties dialog now has a Color Management tab. In this new tab, you can declare multiple ICC color profiles for the current document.<br />
* 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.<br />
* Title and Description fields in the Object Properties dialog [sas]<br />
* Interactivity attributes in the Object Properties dialog<br />
<br />
==Notable bug fixes==<br />
<br />
* 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. <br />
<br />
* Inkscape is now able to handle paths with only 'movetos', i.e. "M 0,0 M 1,1 M 2,2". These kind of paths can be used to only show markers on a path without the rest of the path visible.<br />
<br />
* 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 "Filter general settings" tab of the Filter Effects dialog.<br />
<br />
: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.<br />
<br />
* Bounding box calculation does not include the invisible objects. [https://bugs.launchpad.net/inkscape/+bug/252547 bug #252547]<br />
<br />
* Several fixes allows Inkscape to correctly render and edit SVG files that use <code>currentColor</code> in objects' style (this includes files created by gnuplot).<br />
<br />
* '''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.<br />
<br />
* File dialogs remember last visited directory.<br />
<br />
* The --vacuum-defs command line parameter erroneously deleted markers which are in use.<br />
<br />
* No more garbage lines in outline mode.<br />
<br />
* No more artifacts left by the circle cursor in Tweak tool.<br />
<br />
* The Live Path Effects '''Bend Path''' and '''Pattern along Path''' now work correctly with closed paths.<br />
<br />
* Several '''[[ViewBoxToDo|viewBox]]''' related bugs fixed<br />
** 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]<br />
** Resizing the page adjusts viewBox. [https://bugs.launchpad.net/inkscape/+bug/167682 bug #167682]<br />
** preserveAspectRatio parsing code fixed. [https://bugs.launchpad.net/inkscape/+bug/166885 bug #166885]<br />
<br />
* 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'')<br />
<br />
* The shorthand 'marker' property is now correctly interpreted (SVG test suite ''painting-marker-03-f.svg'')<br />
<br />
* Coordinates and lengths specified in percentages are now correctly interpreted (SVG test suite ''coords-units-02-b.svg'')<br />
<br />
* 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.<br />
<br />
* 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].<br />
<br />
==Previous releases==<br />
<br />
* [[ReleaseNotes046]]<br />
* [[ReleaseNotes045]]<br />
* [[ReleaseNotes044]]<br />
* [[ReleaseNotes043]]<br />
* [[ReleaseNotes042]]<br />
* [[ReleaseNotes041]]<br />
* [[ReleaseNotes040]]<br />
* [[ReleaseNotes039]]<br />
* [[ReleaseNotes038]]<br />
* [[ReleaseNotes037]]<br />
* [[ReleaseNotes036]]<br />
* [[ReleaseNotes035]]<br />
<br />
[[Category:Marketing]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&diff=42464Release notes/0.472009-01-26T14:39:03Z<p>Cilix: /* Guides */</p>
<hr />
<div>=Inkscape 0.47= <br />
'''(not released yet)'''<br />
<br />
=Refactoring effort=<br />
<br />
- many instances of SP_ACTIVE_DESKTOP were eliminated (although there still remain quite a lot to be removed)<br />
<br />
[mention the 'main' goal of 0.47 and list which things have been refactored and the benefits/new features/different workflow? --johan]<br />
<br />
- ratio of code lines and comment lines (difference with 0.46)<br />
<br />
- number of fixme's and todo's (difference with 0.46)<br />
<br />
- cairo<br />
<br />
- speed improvement? (LPE? bootup?)<br />
<br />
=Tools=<br />
<br />
==Node tool==<br />
<br />
* [helper path display, flashing - johan]<br />
* 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).<br />
* Snapping has been improved (more details in Snapping below)<br />
* When dragging a node '''handle with Ctrl''', 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).<br />
* The behavior of the buttons/shortucts that make a node smooth or cusp has been improved:<br />
:* If a node is already 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.<br />
:* 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.<br />
*'''Auto smooth nodes''': a new "auto" 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.<br />
<br />
==Tweak tool==<br />
<br />
Several new modes are added to the Tweak tool for transforming, duplicating, and deleting selected objects using the same "soft brush" metaphor that the path editing and coloring modes use. Using these new modes, it is easy to "sculpt" scatterings of small objects, such as clone tilings, into complex and naturalistic textures.<br />
<br />
* '''Move 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.<br />
<br />
* '''Move in/out 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.<br />
<br />
* '''Move 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.<br />
<br />
* '''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.<br />
<br />
* '''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. <br />
<br />
* '''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. As with regular Duplicate command, duplicating with Tweak tool places the copies right over the originals, and you may need to use the Move jitter mode to ruffle them apart. <br />
<br />
: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). <br />
<br />
*'''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. <br />
<br />
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:<br />
<br />
Shift+m, Shift+0 move mode<br />
Shift+i, Shift+1 move in/out mode<br />
Shift+z, Shift+2 move jitter mode<br />
Shift+<, Shift+>, Shift+3 scale mode<br />
Shift+[, Shift+], Shift+4 rotate mode<br />
Shift+d, Shift+5 duplicate/delete mode<br />
Shift+p, Shift+6 push path mode<br />
Shift+s, Shift+7 shrink/grow path mode<br />
Shift+a, Shift+8 attract/repel path mode<br />
Shift+r, Shift+9 roughen mode<br />
Shift+c color paint mode<br />
Shift+j color jitter mode<br />
Shift+b blur mode<br />
<br />
In Color Paint mode, painting with Shift inverts the color you're applying (e.g. when painting with white, Shift will switch applied color to black; blue, to yellow, etc.).<br />
<br />
==Calligraphy tool ==<br />
<br />
* [presets - Aubanel]<br />
<br />
* The behavior of the tool when tracking a guide (drawing with Ctrl) has been improved:<br />
<br />
:* The initial "jerk" when you start drawing is suppressed.<br />
<br />
:* The undesired flipping of the stroke to the other side of the guide path, when drawing along closed paths, is fixed. <br />
<br />
:* 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 prevent jerks.<br />
<br />
==Paint Bucket tool==<br />
* Paint Bucket is now more tightly integrated with potrace. As a result, memory and CPU usage on each fill operation have been reduced significantly.<br />
<br />
==Eraser Tool==<br />
A new eraser tool has been added. It has two main modes:<br />
<br />
* Delete-mode where any shape touched by the tool is deleted completely. This operation is in line with "vector" editing.<br />
* Cut mode where erasing acts similar to erasing in a standard bitmap editor.<br />
<br />
Cut mode works for both selected and not selected objects.<br />
<br />
Shortcuts:<br />
<br />
* '''Shift+E''' enables the tool<br />
<br />
==Pen and Pencil==<br />
<br />
Apart from the regular Bezier mode, the pen tool now provides several new modes:<br />
<br />
* '''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.<br />
<br />
* '''Zigzag mode''': This mode makes it easy to draw many straight line segments in quick succession by disallowing curves (even when the user drags with the mouse).<br />
<br />
* '''Paraxial mode''': In this mode, the user can only 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).<br />
<br />
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].<br />
<br />
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.)<br />
<br />
===Pencil sketch mode===<br />
[johan]<br />
Press alt and sketch away, release alt to finalize result.<br />
<br />
==Text tool==<br />
<br />
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).<br />
<br />
<br />
=Live path effects=<br />
== Notable bug fixes and effect changes==<br />
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:<br />
<br />
* The Pattern Along Path effect:<br />
**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 applied the effect separately to each. <br />
** Successive copies of the pattern can now be fused into continuous paths (using the new "fuse nearby ends" feature) so that "filling" the result works as expected.<br />
<br />
==New effects==<br />
<br />
* '''Sketch''': Simulates hand-drawn lines. A set of parameters let you tune the effect. They are all summarized in this [[:Image:SketchParameters.png|picture]].[jfb] <br />
<br />
:[[Image:SketchExemple.png|300px]]<br />
<br />
* '''Hatches''' Fills the given shape with rough, configurable and randomized, hatches, simulating quick hand-drawn hatches.[jfb]<br />
:[[Image:hatches-lpe.png|300px]].<br />
<br />
* '''von Koch''': This effect creates fractal pictures (example). To the input shape are added some transformed (rotated/scaled/slanted) copies of it, and then copies of the copies, etc... to get the final shape. The transforms are defined via a path.<br />
:[[Image:VonKochExample.png|300px]]<br />
<br />
:''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.[jfb]<br />
<br />
* '''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 "sign" of each crossing can be set independantly. <br />
:[[Image:KnotExample.png|300px]]<br />
<br />
:''Known limitation'': can not be applied to groups nor be shared by different objects.[jfb]<br />
<br />
* '''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]<br />
<br />
* '''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.<br />
<br />
: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. <br />
<br />
:To create a Spiro path, select any path and assign the "Spiro spline" 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:<br />
<br />
:* 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.<br />
<br />
:* 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.<br />
<br />
:* Half-smooth nodes - those with one Bezier handle collinear with a straight line segment on the other hand - become "left" or "right" 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.<br />
<br />
: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. <br />
<br />
:Some configurations of points do not converge and produce wild loops and spirals instead of a smooth curve. According to Raph, "The spline solver in this release is _not_ numerically robust. When you start drawing random points, you'll quickly run into divergence. However, "sensible" plates based on real fonts usually converge." Avoid too sharp changes in direction between points to prevent divergence. Hopefully, the robustness of the algorithm will be improved in future releases.<br />
<br />
: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 as it is a distraction. 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. <br />
<br />
: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.<br />
<br />
* '''Construct Grid''' [johan]<br />
<br />
* '''Perpendicular bisector''' [max]<br />
<br />
* '''AngleBisector''' [max]<br />
<br />
* '''Tangent to a curve''' [max]<br />
<br />
* '''Circle through 3 points''' [max]<br />
<br />
* '''Circle with radius''' [max]<br />
<br />
* '''Envelope Deformation''' allows the user to deform an object (or a group of object) by deforming its sides. Modifications are done by deforming the 4 Path parameters : Top and Bottom, Left and Right.<br />
<br />
* '''Lattice Deformation''' allows the user to deform an object (or a group of object) by moving 16 control points.<br />
<br />
* '''Ruler''': [max]<br />
<br />
* '''Freehand Shape''': [max]<br />
<br />
* '''Interpolate Subpaths''': [Johan]<br />
<br />
* '''Path Length''': [max]<br />
<br />
* '''Text Label''': [max]<br />
<br />
==New features==<br />
* 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.<br />
<br />
* A new command, '''Remove path effect''' removes any path effects from all selected objects, going recursively into groups if necessary. <br />
<br />
* 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.<br />
<br />
* Live path effects can now be assigned to the sides of a 3D box (use Ctrl+click to select individual sides).<br />
<br />
* 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.<br />
<br />
* Path type parameters can now link to existing shapes <b>and text</b>, like clones do. Now it is possible to use text as input for the Pattern Along Path effect for example!<br />
<br />
* 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]<br />
<br />
==Live Path Effects for groups==<br />
<br />
LPE can now be assigned to a group. For most LPE, the effect is applied recursively but for Bend Path or Deformations the result is more powerful : the distortion applies on the whole group. <br />
<br />
*You can as usual enter the group by double-clicking on it. <br />
*It applies recursively, this means that a LPE can be assigned to groups of groups <br />
*The Effect can be applied definitively with "Convert Object to path"<br />
<br />
==Live Path Effects stacking==<br />
<br />
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.<br />
<br />
=Import/Export=<br />
==PostScript and EPS import==<br />
<br />
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 <code>ps2pdf</code> 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.<br />
<br />
==PDF import from the command line==<br />
<br />
Now you can use, for example,<br />
<br />
inkscape file.pdf --export-plain-svg=file.svg<br />
<br />
It will take the first page of the PDF and all the default import options, and save the result to SVG. (Before, it crashed because it tried to open the PDF import preferences dialog and could not do it in the command line mode.) If you try to import PDF without an <code>--export</code> command, it will show the prefs dialog as before and open the file in the UI.<br />
<br />
==PDF, PostScript, and EPS export==<br />
<br />
The new cairo-based PS and EPS exporter provides a much better support for various vector features, including '''clipping paths''', '''patterns''', and '''non-ASCII characters'''. Those features that are not supported by the target formats are exported via embedded rasters that preserve the appearance; in particular:<br />
<br />
* transparency is always rasterized in PS or EPS (but not PDF, as PDF supports vector transparency);<br />
<br />
* filters, such as blur, is by default rasterized in all three formats (PS, EPS, PDF), but this can be turned off by unchecking the "Rasterize filter effects" option in the UI or adding the --export-ignore-filters option via the command line, in which case filtered objects are rendered as vectors without filters and without rasterization.<br />
<br />
All of PS, EPS, and PDF export formats uniformly support the export area options (canvas or drawing) and the new export-id option: <br />
<br />
* 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 "Limit export to the object with ID" 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 at all). The BoundingBox (page size) of the exported PS/EPS/PDF file will correspond to the bounding box of that object; you can override that with "Export area is whole canvas" (GUI) or '''--export-area-canvas''' (command line) option which forces the output to have the size of the SVG document's canvas (this may not be possible with EPS, see below).<br />
<br />
* The "Export area is whole canvas" (GUI) or '''--export-area-canvas''' (command line) option forces the output to have the size of the SVG document's canvas. This is the default for PS and PDF but not for EPS. <br />
<br />
:*Note that for EPS, the specification of the format does not allow its bounding box to extend beyond its content. This means that when --export-area-canvas is used with EPS export, the canvas 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.<br />
<br />
:* The <b>--export-bbox-page</b> command line parameter is removed; use <b>--export-area-canvas</b> instead. <br />
<br />
* The "Export area is the drawing" (GUI) or '''--export-area-drawing''' (command line) option forces the output to have the size of the exported objects' bounding box, regardless of canvas 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. <br />
<br />
* The <b>--export-embed-fonts</b> option is removed; now Inkscape always embeds and subsets all fonts used in the document when exporting PS, EPS, or PDF.<br />
<br />
==Corel DRAW files import==<br />
<br />
Now Inkscape can import more Corel DRAW files of following types:<br />
<br />
* Corel DRAW Compressed Exchange files (CCX)<br />
* Corel DRAW 7-X4 Template files (CDT)<br />
* Corel DRAW Presentation Exchange files (CMX)<br />
<br />
Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==sK1 files import==<br />
<br />
Inkscape uses UniConvertor to import sK1 files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==CGM import==<br />
<br />
Inkscape uses UniConvertor to import Computer Graphics Metafile (CGM) files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==HPGL export==<br />
<br />
Inkscape can now export to HPGL (Hewlett-Packard Graphics Language). It is a file format that is used for various cutters/plotters.<br />
<br />
==JavaFX export==<br />
<br />
[]<br />
<br />
==DXF export==<br />
<br />
DXF export is much faster than in previous versions.<br />
<br />
==PNG export==<br />
<br />
* If you specify a relative path for exported PNG file (e.g. <code>../</code>) it will now be resolved relative to the current document's location.<br />
<br />
* PNG export has been updated to include metadata if present in the source SVG.<br />
<br />
= Autosave =<br />
<br />
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).<br />
<br />
=Extension effects=<br />
==New and improved effects==<br />
<br />
* The new '''Arrange > 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.).<br />
* The improved '''Modify Path > Add Nodes''' extension now also allows segments to be divided into a given number of subsegments.<br />
* The new '''Printing > Add cut marks''' extension add cut marks and color bars required by printing bureaus. You can either manually define margins by which cut marks are created, or use a rectangle for that.<br />
* The new '''Render > 3D Polyhedron''' extension allows drawing polyhedrons from scratch and render them from OBJ files.<br />
* The new '''Render > 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.<br />
* The new '''Render > 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.<br />
* The new '''Render > 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.<br />
* The new '''Render > 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.<br />
* The new '''Render > 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.<br />
* A collection of effects for creating SVG filters was added in the Filters submenu (see the section on SVG Filters).<br />
* The new '''Text > 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.<br />
<br />
==API changes==<br />
<br />
While the "Live preview" checkbox is useful for most effects, for some it just does not make sense. Now, you can add the attribute <code>needs-live-preview="false"</code> in the <code>effect</code> element in the .inx file of the effect to suppress this checkbox for your effect.<br />
<br />
Parameters passed to extensions (via the <param> element) now have a new boolean attribute - <code>gui-hidden</code> 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.<br />
<br />
All '''.inx''' files are now properly formatted XML files with its own namespace of: <code><nowiki>http://www.inkscape.org/namespace/inkscape/extension</nowiki></code> and a Relax NG schema to define it. More information can be found in the [[Extensions]] Article.<br />
<br />
=Filters=<br />
<br />
==One-command filters via extensions==<br />
<br />
The Filter Effects dialog is powerful, but can be quite cumbersome. There is now a way to add complex predefined filters to the selected objects by a single command by choosing it from Effects > Filters submenu. Further submenus categorize the filters by function. 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 "..." at the end of the command in the menu). If the selected object already has some filter applied, the chosen filter will be merged with the existing filter for combined effect. <br />
<br />
You can easily add your own filters to these menus. Simply place any SVG file with the filters to the <code>filters</code> subdirectory of your config directory (<code>~/.config/Inkscape/</code> on Linux) and the filters will be picked up. By default, they will be placed in the Personal submenu under Effects > Filters. If you want to control this, add the following attributes to the <code>filter</code> element:<br />
<br />
inkscape:label is the command label<br />
inkscape:menu is the submenu to place the command into<br />
inkscape:menu-tooltip is the tooltip (displayed in the statusbar <br />
as you select the command)<br />
<br />
==Filters can be disabled==<br />
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 "normal" and "outline" view modes.<br />
<br />
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.<br />
<br />
==Filter quality setting==<br />
<br />
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.<br />
<br />
=SVG output=<br />
<br />
==Optimized CSS properties==<br />
<br />
* As a file size optimization, Inkscape does not write into SVG some of the stroke properties if the object has <code>stroke:none</code> and some of the fill properties when it has <code>fill:none</code>. 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. <br />
<br />
: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.<br />
<br />
:Specifically, if stroke:none, the following properties do not get written to SVG:<br />
<br />
stroke-width<br />
stroke-linecap<br />
stroke-linejoin<br />
stroke-miterlimit<br />
stroke-opacity<br />
stroke-dasharray<br />
stroke-dashoffset<br />
<br />
:Note that this does not include marker properties, which means you can still have markers on a path without visible stroke.<br />
<br />
:If fill:none, the following properties do not get written to SVG:<br />
<br />
fill-opacity<br />
fill-rule<br />
<br />
*The <code>opacity</code> 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).<br />
<br />
*The <code>marker-start</code>, <code>marker-mid</code>, and <code>marker-end</code> properties are not written if the <code>marker</code> property is already present with the same value.<br />
<br />
==Optimized path data==<br />
<br />
In this version, the size of the path data written in the <code>d=</code> attribute of <code>path</code> elements is reduced by about 10%. Inkscape generates the shortest possible path strings by avoiding repeated operators and using relative coordinates (when it helps).<br />
<br />
This is controlled by the '''SVG output''' page of Inkscape Preferences dialog, as well as the following attributes in <code>group id="svgoutput"</code> in your preferences.xml file:<br />
<br />
* allowrelativecoordinates (default 1) to switch relative coordinates on (1) or off (0)<br />
* forcerepeatcommands (default 0) to force repeating operators (1) or allow use of the more compact representation without repeated operators (0)<br />
<br />
==No more explicit closing line segment==<br />
Inkscape used to always explicitly write the closing line segment to SVG for closed paths. For example: "M 0,0 L 1,0 L 1,1 L 0,1 L 0,0 z". With the improved SVG path data writing, Inkscape no longer generates this closing line segment, resulting in "M 0,0 L 1,0 L 1,1 L 0,1 z".<br />
When SVG path data input contains this explicit closing segment, it is maintained throughout transformations, but is removed after using the node edit tool.<br />
[this seems no longer to be true, fix it!!! -johan]<br />
<br />
==Horizontal and vertical path segments==<br />
<br />
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.<br />
<br />
==<script> support==<br />
<br />
While Inkscape does not yet support SVG scripting via the <script> element, this element is now preserved after editing the file in Inkscape.<br />
<br />
==Initial SVG Fonts support==<br />
<br />
As a SoC 2008 project, JucaBlues implemented initial parsing and rendering of [http://www.w3.org/TR/SVG11/fonts.html SVG Fonts].<br />
The user can design fonts within Inkscape, but using these to render on canvas is not yet supported. Currently the main benefit of this feature is to improve the font design workflow when working with FontForge.<br />
<br />
You can open the SVG Font dialog through Text->SVG Fonts menu option.<br />
<br />
===Better font design workflow when using FontForge===<br />
Now we only need to create one SVG file containing an SVGFont and import it in FontForge instead of the several files (one SVG for each glyph) that were needed in 0.46 (before SVGFonts support).<br />
<br />
=SVG Test Suite Compliance=<br />
<br />
[describe what has been improved over 0.46 and point to recent test result website]<br />
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.<br />
<br />
List of render test changes with respect to 0.46:<br />
...[files which failed on 0.46 and now pass, and vice versa]<br />
<br />
=Other features=<br />
<br />
==Desktop integration improvements==<br />
<br />
* '''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).<br />
<br />
* '''Open Recent menu''' now integrates with Windows recent documents management as well as Gnome and Xfce recent document lists.<br />
<br />
==Shell mode==<br />
<br />
If you run inkscape with <code>--shell</code>, it will enter an interactive command line 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:<br />
<br />
$ inkscape --shell<br />
Inkscape 0.46+devel interactive shell mode. Type 'quit' to quit.<br />
>file.svg --export-pdf=file.pdf<br />
>otherfile.svg --export-png=bitmap.png<br />
Background RRGGBBAA: ffffff00<br />
Area 0:0:744.094:1052.36 exported to 744 x 1052 pixels (90 dpi)<br />
Bitmap saved as: bitmap.png<br />
>quit<br />
<br />
==Masks and clipping paths==<br />
<br />
[editable in node tool - johan]<br />
<br />
==Stroke width changeable by dragging==<br />
<br />
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.<br />
<br />
==Enhanced tablet support==<br />
<br />
===Input device tool switching===<br />
<br />
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.<br />
<br />
===Extended input device configuration===<br />
<br />
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.<br />
<br />
Additionally hardware setup itself has been separated from general settings to allow for easier dynamic switching of settings appropriate to the task at hand.<br />
<br />
==Layers==<br />
<br />
===Show/hide other layers===<br />
<br />
The Layers dialog now allows for hiding or showing all layers other than the current layer. This "solo" feature allows for faster switching between working layers and for quick checking with and without others shown.<br />
<br />
===Duplicate Layer command===<br />
<br />
A new command, '''Duplicate Layer''', has been added to the Layers menus to allow for duplicating an existing layer with all of its objects.<br />
<br />
===New Layer shortcut===<br />
<br />
The New Layer dialog can be opened with '''Ctrl+Shift+N''' shortcut.<br />
<br />
==External image editing and reload==<br />
<br />
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 can be controlled by user preferences.<br />
<br />
==Command for relinking clones==<br />
<br />
A new command, '''Relink Clone to Copied''' in ''Edit > 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.<br />
<br />
==Auto relinking clones on Duplicate==<br />
<br />
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.<br />
<br />
==Pattern editing==<br />
<br />
When editing pattern fills:<br />
* The pattern origin and scale handles now snap.<br />
* The pattern scaling can now be different in X and Y direction. Press '''Ctrl''' to have a fixed 1:1 ratio scaling (old behavior).<br />
* 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.<br />
<br />
==Transform dialog: spacing out option==<br />
<br />
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 "Relative move" is on, each object is shifted relative to the closest selected object on the left (for X) or below (for Y). <br />
<br />
For example, if you have a horizontal row of objects and you move them relatively by X=5px with "Apply to each object separately" 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). <br />
<br />
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.<br />
<br />
==Converting text to path produces a group==<br />
<br />
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.<br />
<br />
==Combine works on groups==<br />
<br />
The Combine command now works transparently on groups, i.e. combines paths inside selected groups at any level of grouping.<br />
<br />
=User interface=<br />
<br />
==Native file dialogs for Windows==<br />
The windows builds of inkscape now have Windows-native file dialogs to keep consistency with other windows applications.<br />
<br />
==Inkscape Preferences dialog==<br />
<br />
* 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). <br />
<br />
* 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.<br />
<br />
* There is a new option on the Interface tab, '''Zoom correction factor''', which displays an adjustable ruler. Move the slider until the ruler's on-screen size matches its true size. The resulting conversion factor is used internally when zooming to 1:1 etc. such that objects are displayed in their true size.<br />
<br />
* There is an other new option on the Interface tab, '''language''', which changes the language of the user interface (menus and number formats) regardless the system settings. A combo-box presents all possible Inkscape translations. A change requires a restart of Inkscape.<br />
<br />
* On the Interface tab, there's a button to clear the list of files in File > Open Recent submenu.<br />
<br />
* The list of recently opened files can be cleared on the Interface tab.<br />
<br />
== Align and Distribute dialog ==<br />
<br />
There is now an option to treat all selected objects as a group when aligning (this spares the user the trouble to manually group them, align, and ungroup afterwards).<br />
<br />
==Dropper tool==<br />
<br />
The confusing icons on buttons in the controls bar of the Dropper tool (pick/assign opacity) are replaced by text labels.<br />
<br />
==Swatches==<br />
<br />
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 to show a tool tip is difficult.<br />
<br />
==Toolbars==<br />
<br />
* The toolbar icon sizes for the three main toolbars are now separately configurable and to a few different sizes. This allows users to get a smaller UI on certain systems, including Ubuntu.<br />
<br />
* 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.<br />
<br />
* When torn off, toolbars now keep the size they last had in the main window. They can be resized by docking, sizing the main window, and then undocking agin.<br />
<br />
* 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.<br />
<br />
==Title and Description==<br />
<br />
* [the Title and Description fields on the Object Properties dialog - sas]<br />
<br />
==Clone/original visualization==<br />
<br />
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.<br />
<br />
==SVG Fonts dialog==<br />
<br />
New SVG Fonts dialog. See [[ReleaseNotes047#Initial_SVG_Fonts_support]]<br />
<br />
==Document Properties dialog==<br />
===Color Management tab===<br />
In this new tab, the user can declare multiple ICC color profiles for the current document.<br />
<br />
=Grids, guides, snapping=<br />
<br />
==Grids==<br />
* The dotted rectangular grid now shows small crosses at the intersection points of emphasis lines.<br />
<br />
==Guides==<br />
<br />
Guides can now be rotated and their anchors be adjusted by mouse.<br />
<br />
There is now an option to treat groups as single objects during conversion to guides (as opposed to converting each object inside the group separately).<br />
<br />
==Snapping==<br />
<br />
The code relating to the snapping mechanisms has undergone '''major refactoring''' to make it more reliable and easier to use from a developer's perspective. Besides, snapping to objects now invokes routines from the '''2geom libraries''', which are actively maintained and are less error prone than the old Livarot libraries. This fixes at least two known snapping bugs. A new and very noticeable feature is the '''toolbar''' to control the snapping options and modes. (Use View > Show/Hide > 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:<br />
* A '''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<br />
* A '''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. <br />
* Inkscape can be forced to only try snapping the (source) node that is '''closest to the mouse pointer''', à la Coreldraw. 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.<br />
* 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 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.<br />
<br />
Other improvements are:<br />
* 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.<br />
* In the document properties dialog, the checkbox for ''' 'always snap' ''' has been replaced by two radiobuttons; this should eliminate most of the confusion surrounding this option.<br />
* Holding the Shift key now also disables snapping while dragging '''node-handles''', and while creating single dots<br />
* While drawing and '''constraining to specific angles''' (using CTRL), Inkscape will now only snap to points on the constrained line.<br />
* In the selector tool, snapping while '''skewing ''' or '''constrained translating''' has been improved.<br />
* When '''pasting''', previously aligned originals will stay aligned to the grid. The code for this had to be reinvented due to the refactoring.<br />
<br />
Inkscape now also snaps or snaps to:<br />
* Clipping paths and masks<br />
* Midpoints of line segments and bounding box' edges<br />
* Page border<br />
* Intersections of any kind of paths<br />
* Smooth and/or cusp nodes (configurable)<br />
* Each of the handle points when creating new shapes<br />
* Single dots<br />
<br />
=Localization and documentation=<br />
<br />
* Hebrew localization complete now<br />
<br />
<br />
<br />
=Notable bug fixes=<br />
<br />
* 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. <br />
<br />
* Inkscape is now able to handle paths with only 'movetos', i.e. "M 0,0 M 1,1 M 2,2". These kind of paths can be used to only show markers on a path without the rest of the path visible.<br />
<br />
* 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 "Filter general settings" tab of the Filter Effects dialog.<br />
<br />
: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 bbox for selection of the export area; this means that you can now export a blurred object to bitmap without any clipping of the blur.<br />
<br />
* Bounding box calculation does not include the invisible objects. (#252547)<br />
<br />
* Several fixes allows Inkscape to correctly render and edit SVG files that use <code>currentColor</code> in objects' style (this includes files created by gnuplot).<br />
<br />
* '''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.<br />
<br />
* File dialogs remember last visited directory.<br />
<br />
* The --vacuum-defs command line parameter erroneously deleted markers which are in use.<br />
<br />
* No more garbage lines in outline mode.<br />
<br />
* No more artifacts left by the circle cursor in Tweak tool.<br />
<br />
* The Live Path Effects '''Bend Path''' and '''Pattern along Path''' now work correctly with closed paths.<br />
<br />
* several '''[[ViewBoxToDo|viewBox]]''' related bugs fixed<br />
** Documents with viewBox are now editable without transformation defects. In particular this affected documents created with pstoedit for example ([https://bugs.launchpad.net/inkscape/+bug/168370 #168370])<br />
** resizing page adjusts viewBox ([https://bugs.launchpad.net/inkscape/+bug/167682 #167682])<br />
** preserveAspectRatio parsing code fixed ([https://bugs.launchpad.net/inkscape/+bug/166885 #166885])<br />
<br />
* 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)<br />
<br />
* The shorthand 'marker' property is now correctly interpreted (SVG test suite ''painting-marker-03-f.svg'')<br />
<br />
* Coordinates and lengths specified in percentages are now correctly interpreted (SVG test suite ''coords-units-02-b.svg'')<br />
<br />
= Previous releases =<br />
<br />
* [[ReleaseNotes046]]<br />
* [[ReleaseNotes045]]<br />
* [[ReleaseNotes044]]<br />
* [[ReleaseNotes043]]<br />
* [[ReleaseNotes042]]<br />
* [[ReleaseNotes041]]<br />
* [[ReleaseNotes040]]<br />
* [[ReleaseNotes039]]<br />
* [[ReleaseNotes038]]<br />
* [[ReleaseNotes037]]<br />
* [[ReleaseNotes036]]<br />
* [[ReleaseNotes035]]<br />
<br />
[[Category:Marketing]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&diff=35754Release notes/0.472008-09-13T15:36:53Z<p>Cilix: /* User interface */</p>
<hr />
<div>=Inkscape 0.47= <br />
'''(not released yet)'''<br />
<br />
=Refactoring effort=<br />
<br />
- many instances of SP_ACTIVE_DESKTOP were eliminated (although there still remain quite a lot to be removed)<br />
<br />
[mention the 'main' goal of 0.47 and list which things have been refactored and the benefits/new features/different workflow? --johan]<br />
<br />
- ratio of code lines and comment lines (difference with 0.46)<br />
<br />
- number of fixme's and todo's (difference with 0.46)<br />
<br />
- cairo<br />
<br />
- speed improvement? (LPE? bootup?)<br />
<br />
=Tools=<br />
<br />
==Node tool==<br />
<br />
* [helper path display, flashing - johan]<br />
* 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).<br />
* Snapping has been improved (more details in Snapping below)<br />
* When dragging a node '''handle with Ctrl''', 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).<br />
* The behavior of the buttons/shortucts that make a node smooth or cusp has been improved:<br />
:* If a node is already 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.<br />
:* 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.<br />
<br />
==Calligraphy tool ==<br />
<br />
[presets - Aubanel]<br />
<br />
==Paint Bucket tool==<br />
* Paint Bucket is now more tightly integrated with potrace. As a result, memory and CPU usage on each fill operation have been reduced significantly.<br />
<br />
==Eraser Tool==<br />
A new eraser tool has been added. It has two main modes:<br />
<br />
* Delete-mode where any shape touched by the tool is deleted completely. This operation is in line with "vector" editing.<br />
* Cut mode where erasing acts similar to erasing in a standard bitmap editor.<br />
<br />
Cut mode works for both selected and not selected objects.<br />
<br />
==Pen and Pencil==<br />
<br />
Apart from the regular Bezier mode, the pen tool now provides several new modes:<br />
<br />
* '''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.<br />
<br />
* '''Zigzag mode''': This mode makes it easy to draw many straight line segments in quick succession by disallowing curves (even when the user drags with the mouse).<br />
<br />
* '''Paraxial mode''': In this mode, the user can only 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).<br />
<br />
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].<br />
<br />
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.)<br />
<br />
==Text tool==<br />
<br />
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).<br />
<br />
<br />
=Live path effects=<br />
== Notable bug fixes and effect changes==<br />
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:<br />
<br />
* The Pattern Along Path effect used to stretch the pattern across discontinuities. This has been fixed; now it treats a discontinuous path as a group of continuous paths and applied the effect separately to each.<br />
<br />
==New effects==<br />
<br />
* '''Sketch''': [JF Barraud]<br />
<br />
* '''von Koch''': [JF Barraud]<br />
<br />
* '''Knot''': [JF Barraud]<br />
<br />
* '''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]<br />
<br />
* '''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.<br />
<br />
: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. <br />
<br />
:To create a Spiro path, select any path and assign the "Spiro spline" 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:<br />
<br />
:* 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.<br />
<br />
:* 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.<br />
<br />
:* Half-smooth nodes - those with one Bezier handle collinear with a straight line segment on the other hand - become "left" or "right" 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.<br />
<br />
: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. <br />
<br />
:Some configurations of points do not converge and produce wild loops and spirals instead of a smooth curve. According to Raph, "The spline solver in this release is _not_ numerically robust. When you start drawing random points, you'll quickly run into divergence. However, "sensible" plates based on real fonts usually converge." Avoid too sharp changes in direction between points to prevent divergence. Hopefully, the robustness of the algorithm will be improved in future releases.<br />
<br />
: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 as it is a distraction. 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. <br />
<br />
: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.<br />
<br />
* '''Construct Grid''' [johan]<br />
<br />
* '''Perpendicular bisector''' [max]<br />
<br />
* '''AngleBisector''' [max]<br />
<br />
* '''Tangent to a curve''' [max]<br />
<br />
* '''Circle through 3 points''' [max]<br />
<br />
* '''Circle with radius''' [max]<br />
<br />
* '''Envelope Deformation''' allows the user to deform an object (or a group of object) by deforming its sides. Modifications are done by deforming the 4 Path parameters : Top and Bottom, Left and Right.<br />
<br />
* '''Lattice Deformation''' allows the user to deform an object (or a group of object) by moving 16 control points.<br />
<br />
* '''Ruler''': [max]<br />
<br />
* '''Freehand Shape''': [max]<br />
<br />
* '''Interpolate Subpaths''': [Johan]<br />
<br />
* '''Path Length''': [max]<br />
<br />
* '''Text Label''': [max]<br />
<br />
==New features==<br />
* 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.<br />
<br />
* A new command, '''Remove path effect''' removes any path effects from all selected objects, going recursively into groups if necessary. <br />
<br />
* 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.<br />
<br />
* Live path effects can now be assigned to the sides of a 3D box (use Ctrl+click to select individual sides).<br />
<br />
* 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.<br />
<br />
* Path type parameters can now link to existing shapes <b>and text</b>, like clones do. Now it is possible to use text as input for the Pattern Along Path effect for example!<br />
<br />
* 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]<br />
<br />
==Live Path Effects for groups==<br />
<br />
LPE can now be assigned to a group. For most LPE, the effect is applied recursively but for Bend Path or Deformations the result is more powerful : the distortion applies on the whole group. <br />
<br />
*You can as usual enter the group by double-clicking on it. <br />
*It applies recursively, this means that a LPE can be assigned to groups of groups <br />
*The Effect can be applied definitively with "Convert Object to path"<br />
<br />
==Live Path Effects stacking==<br />
<br />
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.<br />
<br />
=Import/Export=<br />
==PostScript and EPS import==<br />
<br />
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 ps2pdf from Ghostscript installation is in your PATH. On opening, you will see a preferences dialog which, for multipage PS files, allows you to select the page to open.<br />
<br />
==PostScript and EPS export==<br />
<br />
The new PS and EPS exporter uses cairo and provides a much better support for various vector features, including '''clipping paths''', '''patterns''', and '''non-ASCII characters'''. Those features that are not supported by the Postscript language, such as transparency, are exported via rasters embedded into Postscript.<br />
<br />
==Corel DRAW files import==<br />
<br />
Now Inkscape can import more Corel DRAW files of following types:<br />
<br />
* Corel DRAW Compressed Exchange files (CCX)<br />
* Corel DRAW 7-X4 Template files (CDT)<br />
* Corel DRAW Presentation Exchange files (CMX)<br />
<br />
Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==sK1 files import==<br />
<br />
Inkscape uses UniConvertor to import sK1 files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==CGM import==<br />
<br />
Inkscape uses UniConvertor to import Computer Graphics Metafile (CGM) files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==PDF export==<br />
<br />
The new PDF exporter correctly translates into PDF '''clipping paths''' and '''patterns''' (requires a recent version of cairo).<br />
<br />
With PDF export, it is now possible to make the PDF page the size of the entire drawing, instead of the same as SVG page as before, by the "Export drawing, not page" checkbox in PDF export options. Also, you can export a single object from a complex document to PDF if you specify the ID of that object in the "Limit export to the object with ID" field; the page of such PDF will be the same size as the bounding box of that object and will show only that object (all others will be hidden).<br />
<br />
The same capabilities are available from the command line by using <code>--export-area-drawing</code> and <code>--export-id=ID</code> parameters with <code>--export-pdf</code> (previously, they only worked for PNG export).<br />
<br />
==PDF import from the command line==<br />
<br />
Now you can use, for example,<br />
<br />
inkscape file.pdf --export-plain-svg=file.svg<br />
<br />
It will take the first page of the PDF and all the default import options, and save the result to SVG. (Before, it crashed because it tried to open the PDF import preferences dialog and could not do it in the command line mode.) If you try to import PDF without an <code>--export</code> command, it will show the prefs dialog as before and open the file in the UI.<br />
<br />
==HPGL export==<br />
<br />
Inkscape can now export to HPGL (Hewlett-Packard Graphics Language). It is a file format that is used for various cutters/plotters.<br />
<br />
==JavaFX export==<br />
<br />
[]<br />
<br />
==DXF export==<br />
<br />
DXF export is much faster than in previous versions.<br />
<br />
= Autosave =<br />
<br />
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).<br />
<br />
=Extension effects=<br />
==New and improved effects==<br />
<br />
* The new '''Arrange > 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.).<br />
* The improved '''Modify Path > Add Nodes''' extension now also allows segments to be divided into a given number of subsegments.<br />
* The new '''Render > Alphabet Soup''' extension is a vector rework of Matt Chrisholm's GPLed script [http://www.theory.org/artprojects/alphabetsoup/main.html]. Alphabet Soup randomly mashes glyph-elements together to make exotic looking text.<br />
* The new '''Render > 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.<br />
* The new '''Render > 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.<br />
* The new '''Text > Convert to Braille''' extension recodes English (or just Latin letters) text to [http://en.wikipedia.org/wiki/Braille Braille] code created for visually impaired people.<br />
* [preset filter effects]<br />
<br />
==API changes==<br />
<br />
While the "Live preview" checkbox is useful for most effects, for some it just does not make sense. Now, you can add the attribute <code>needs-live-preview="false"</code> in the <code>effect</code> element in the .inx file of the effect to suppress this checkbox for your effect.<br />
<br />
Parameters passed to extensions (via the <param> element) now have a new boolean attribute - <code>gui-hidden</code> 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.<br />
<br />
All '''.inx''' files are now properly formatted XML files with its own namespace of: <code><nowiki>http://www.inkscape.org/namespace/inkscape/extension</nowiki></code> and a Relax NG schema to define it. More information can be found in the [[Extensions]] Article.<br />
<br />
=SVG output=<br />
<br />
==Optimized CSS properties==<br />
<br />
As a file size optimization, Inkscape does not write into SVG some of the stroke properties if the object has stroke:none and some of the fill properties when it has fill:none. The only situation where this might affect you is if you remove stroke from an object and then turn it back on - the object will get the default stroke instead of the same it had before. <br />
<br />
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.<br />
<br />
Specifically, if stroke:none, the following properties do not get written to SVG:<br />
<br />
stroke-width<br />
stroke-linecap<br />
stroke-linejoin<br />
stroke-miterlimit<br />
stroke-opacity<br />
stroke-dasharray<br />
stroke-dashoffset<br />
<br />
Note that this does not include marker properties, which means you can still have markers on a path without visible stroke.<br />
<br />
If fill:none, the following properties do not get written to SVG:<br />
<br />
fill-opacity<br />
fill-rule<br />
<br />
==Optimized path data==<br />
<br />
In this version, the size of the path data written in the <code>d=</code> attribute of <code>path</code> elements is reduced by about 10%. Inkscape generates the shortest possible path strings by avoiding repeated operators and using relative coordinates (when it helps).<br />
<br />
This is controlled by the '''SVG output''' page of Inkscape Preferences dialog, as well as the following attributes in <code>group id="svgoutput"</code> in your preferences.xml file:<br />
<br />
* allowrelativecoordinates (default 1) to switch relative coordinates on (1) or off (0)<br />
* forcerepeatcommands (default 0) to force repeating operators (1) or allow use of the more compact representation without repeated operators (0)<br />
<br />
==No more explicit closing line segment==<br />
Inkscape used to always explicitly write the closing line segment to SVG for closed paths. For example: "M 0,0 L 1,0 L 1,1 L 0,1 L 0,0 z". With the improved SVG path data writing, Inkscape no longer generates this closing line segment, resulting in "M 0,0 L 1,0 L 1,1 L 0,1 z".<br />
When SVG path data input contains this explicit closing segment, it is maintained throughout transformations, but is removed after using the node edit tool.<br />
[this seems no longer to be true, fix it!!! -johan]<br />
<br />
==Horizontal and vertical path segments==<br />
<br />
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.<br />
<br />
==<script> support==<br />
<br />
While Inkscape does not yet support SVG scripting via the <script> element, this element is now preserved after editing the file in Inkscape.<br />
<br />
=Other features=<br />
<br />
==Clipboard enhancements==<br />
<br />
The clipboard used by Inkscape is now system-wide instead of being confined to a single instance of the application. Copied elements are exported to the clipboard using all the available output formats. SVG data can be pasted into other applications supporting one of Inkscape's output formats, and SVG data provided by other applications can be pasted into Inkscape.<br />
<br />
If you copy a string that can be interpreted as a hexadecimal color specification, i.e. 2f7ab4 or #014522b0, and then paste it into Inkscape, the fill of the selected objects will change to the given color. This is especially useful when working with HTML pages.<br />
<br />
==Masks and clipping paths==<br />
<br />
[editable in node tool - johan]<br />
<br />
==Stroke width changeable by dragging==<br />
<br />
[bbyak]<br />
<br />
==Enhanced tablet support==<br />
<br />
===Input device tool switching===<br />
<br />
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.<br />
<br />
===Extended input device configuration===<br />
<br />
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.<br />
<br />
Additionally hardware setup itself has been separated from general settings to allow for easier dynamic switching of settings appropriate to the task at hand.<br />
<br />
==Layers==<br />
<br />
===Show/hide other layers===<br />
<br />
The layers dialog now allows for hiding or showing all layers other than the current layer. This "solo" feature allows for faster switching between working layers and for quick checking with and without others shown.<br />
<br />
===Duplicate Layer command===<br />
<br />
A new command has been added to the layers menus to allow for duplicating an existing layer with all of its objects.<br />
<br />
==External image editing and reload==<br />
<br />
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 can be controlled by user preferences.<br />
<br />
==Command for relinking clones==<br />
<br />
A new command, '''Relink Clone to Copied''' in ''Edit > 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.<br />
<br />
==Auto relinking clones on Duplicate==<br />
<br />
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.<br />
<br />
==Pattern editing==<br />
<br />
When editing pattern fills:<br />
* The pattern origin and scale handles now snap.<br />
* The pattern scaling can now be different in X and Y direction. Press '''Ctrl''' to have a fixed 1:1 ratio scaling (old behavior).<br />
* 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.<br />
<br />
==Transform dialog: spacing out option==<br />
<br />
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 "Relative move" is on, each object is shifted relative to the closest selected object on the left (for X) or below (for Y). <br />
<br />
For example, if you have a horizontal row of objects and you move them relatively by X=5px with "Apply to each object separately" 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). <br />
<br />
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.<br />
<br />
<br />
=User interface=<br />
<br />
==Filters can be disabled==<br />
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 "normal" and "outline" view modes.<br />
<br />
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.<br />
<br />
==Native file dialogs for Windows==<br />
The windows builds of inkscape now have Windows-native file dialogs to keep consistency with other windows applications.<br />
<br />
==Inkscape Preferences dialog==<br />
<br />
This dialog has been rearranged for more logical grouping of options. New pages has 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). <br />
<br />
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.<br />
<br />
There is a new option on the Interface tab, '''Zoom correction factor''', which displays an adjustable ruler. Move the slider until the ruler's on-screen size matches its true size. The resulting conversion factor is used internally when zooming to 1:1 etc. such that objects are displayed in their true size.<br />
<br />
== Align and Distribute dialog ==<br />
<br />
There is now an option to treat all selected objects as a group when aligning (this spares the user the trouble to manually group them, align, and ungroup afterwards).<br />
<br />
==Dropper tool==<br />
<br />
The confusing icons on buttons in the controls bar of the Dropper tool (pick/assign opacity) are replaced by text labels.<br />
<br />
==Swatches==<br />
<br />
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 to show a tool tip is difficult.<br />
<br />
==Toolbars==<br />
<br />
* The toolbar icon sizes for the three main toolbars are now separately configurable and to a few different sizes. This allows users to get a smaller UI on certain systems, including Ubuntu.<br />
<br />
* 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.<br />
<br />
* When torn off, toolbars now keep the size they last had in the main window. They can be resized by docking, sizing the main window, and then undocking agin.<br />
<br />
* 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.<br />
<br />
==Title and Description==<br />
<br />
* [the Title and Description fields on the Object Properties dialog - sas]<br />
<br />
==Clone/original visualization==<br />
<br />
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.<br />
<br />
=Grids, guides, snapping=<br />
<br />
==Grids==<br />
* The dotted rectangular grid now shows small crosses at the intersection points of emphasis lines.<br />
<br />
==Guides==<br />
<br />
There is now an option to treat groups as single objects during conversion to guides (as opposed to converting each object inside the group separately).<br />
<br />
==Snapping==<br />
Snapping has been implemented or improved in these areas:<br />
* The '''node tool''' now snaps to any unselected node (cusp or smooth) within the path that's being edited, and to cusp nodes of other paths. It also snaps to the path itself, but only to the stationary segments in between two unselected nodes. It is now also possible to snap while moving nodes along a vertical or horizontal constraint<br />
* '''Clipping paths and masks''' are now also snappable<br />
* The object snapper now also allows to snap to the '''page border'''<br />
* It is now possible to snap to '''intersections of paths''' (were we previously only snapped to intersections of line-segments)<br />
* In the selector tool, snapping while '''skewing ''' or '''constrained translating''' have been improved<br />
* When creating '''new shapes''', all of their handle points now snap<br />
* In the document properties dialog, the checkbox for ''' 'always'''' snap has been replaced by two radiobuttons; this should eliminate most of the confusion surrounding this option<br />
* Holding the shift-key now also disables snapping while dragging '''node-handles'''<br />
* The code relating to the snapping mechanisms has undergone '''major refactoring''' to make it more reliable and easier to use from a developer's perspective<br />
* Snapping to objects now uses routines from the '''2geom libraries''', which are actively maintained and are less error prone than the old Livarot libraries. This fixes at least two known snapping bugs<br />
* While drawing and '''constraining to specific angles''' (using CTRL), Inkscape should now only snap to points on the constrained line.<br />
* When '''pasting''', previously aligned originals will stay aligned to the grid. The code for this had to be reinvented due to the refactoring<br />
<br />
==Snap indicator==<br />
When snapping has occurred, an indicator is displayed at that specific position. For now that indicator is just a cross that disappears in a second. In the future the shape of the indicator will be related to the type of target that has been snapped to. The snapping indicator can be disabled in the Document Properties dialog.<br />
<br />
=Notable bug fixes=<br />
<br />
* Inkscape is now able to handle paths with only 'movetos', i.e. "M 0,0 M 1,1 M 2,2". These kind of paths can be used to only show markers on a path without the rest of the path visible.<br />
<br />
* 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 "Filter general settings" tab of the Filter Effects dialog.<br />
<br />
: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 bbox for selection of the export area; this means that you can now export a blurred object to bitmap without any clipping of the blur.<br />
<br />
* Bounding box calculation does not include the invisible objects. (#252547)<br />
<br />
* Several fixes allows Inkscape to correctly render and edit SVG files that use <code>currentColor</code> in objects' style (this includes files created by gnuplot).<br />
<br />
* '''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.<br />
<br />
* '''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).<br />
<br />
* File dialogs remember last visited directory<br />
<br />
* No more garbage lines in outline mode <br />
<br />
* No more artifacts left by the circle cursor in Tweak tool<br />
<br />
* The Live Path Effects '''Bend Path''' and '''Pattern along Path''' now work correctly with closed paths.<br />
<br />
= Previous releases =<br />
<br />
* [[ReleaseNotes046]]<br />
* [[ReleaseNotes045]]<br />
* [[ReleaseNotes044]]<br />
* [[ReleaseNotes043]]<br />
* [[ReleaseNotes042]]<br />
* [[ReleaseNotes041]]<br />
* [[ReleaseNotes040]]<br />
* [[ReleaseNotes039]]<br />
* [[ReleaseNotes038]]<br />
* [[ReleaseNotes037]]<br />
* [[ReleaseNotes036]]<br />
* [[ReleaseNotes035]]<br />
<br />
[[Category:Marketing]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&diff=35634Release notes/0.472008-09-05T18:56:06Z<p>Cilix: /* Refactoring effort */</p>
<hr />
<div>=Inkscape 0.47= <br />
'''(not released yet)'''<br />
<br />
=Refactoring effort=<br />
<br />
- many instances of SP_ACTIVE_DESKTOP were eliminated (although there still remain quite a lot to be removed)<br />
<br />
[mention the 'main' goal of 0.47 and list which things have been refactored and the benefits/new features/different workflow? --johan]<br />
<br />
- ratio of code lines and comment lines (difference with 0.46)<br />
<br />
- number of fixme's and todo's (difference with 0.46)<br />
<br />
- cairo<br />
<br />
- speed improvement? (LPE? bootup?)<br />
<br />
=Tools=<br />
<br />
==Node tool==<br />
<br />
* [helper path display, flashing - johan]<br />
* 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).<br />
* Snapping has been improved (more details in Snapping below)<br />
* When dragging a node '''handle with Ctrl''', 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).<br />
* The behavior of the buttons/shortucts that make a node smooth or cusp has been improved:<br />
:* If a node is already 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.<br />
:* 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.<br />
<br />
==Calligraphy tool ==<br />
<br />
[presets - Aubanel]<br />
<br />
==Paint Bucket tool==<br />
* Paint Bucket is now more tightly integrated with potrace. As a result, memory and CPU usage on each fill operation have been reduced significantly.<br />
<br />
==Eraser Tool==<br />
A new eraser tool has been added. It has two main modes:<br />
<br />
* Delete-mode where any shape touched by the tool is deleted completely. This operation is in line with "vector" editing.<br />
* Cut mode where erasing acts similar to erasing in a standard bitmap editor.<br />
<br />
Cut mode works for both selected and not selected objects.<br />
<br />
==Pen and Pencil==<br />
<br />
Apart from the regular Bezier mode, the pen tool now provides several new modes:<br />
<br />
* '''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.<br />
<br />
* '''Zigzag mode''': This mode makes it easy to draw many straight line segments in quick succession by disallowing curves (even when the user drags with the mouse).<br />
<br />
* '''Paraxial mode''': In this mode, the user can only 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).<br />
<br />
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].<br />
<br />
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.)<br />
<br />
==Text tool==<br />
<br />
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).<br />
<br />
<br />
=Live path effects=<br />
== Notable bug fixes and effect changes==<br />
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:<br />
<br />
* The Pattern Along Path effect used to stretch the pattern across discontinuities. This has been fixed; now it treats a discontinuous path as a group of continuous paths and applied the effect separately to each.<br />
<br />
==New effects==<br />
<br />
* '''Sketch''': [JF Barraud]<br />
<br />
* '''von Koch''': [JF Barraud]<br />
<br />
* '''Knot''': [JF Barraud]<br />
<br />
* '''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]<br />
<br />
* '''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.<br />
<br />
: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. <br />
<br />
:To create a Spiro path, select any path and assign the "Spiro spline" 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:<br />
<br />
:* 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.<br />
<br />
:* 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.<br />
<br />
:* Half-smooth nodes - those with one Bezier handle collinear with a straight line segment on the other hand - become "left" or "right" 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.<br />
<br />
: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. <br />
<br />
:Some configurations of points do not converge and produce wild loops and spirals instead of a smooth curve. According to Raph, "The spline solver in this release is _not_ numerically robust. When you start drawing random points, you'll quickly run into divergence. However, "sensible" plates based on real fonts usually converge." Avoid too sharp changes in direction between points to prevent divergence. Hopefully, the robustness of the algorithm will be improved in future releases.<br />
<br />
: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 as it is a distraction. 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. <br />
<br />
: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.<br />
<br />
* '''Construct Grid''' [johan]<br />
<br />
* '''Perpendicular bisector''' [max]<br />
<br />
* '''AngleBisector''' [max]<br />
<br />
* '''Tangent to a curve''' [max]<br />
<br />
* '''Circle through 3 points''' [max]<br />
<br />
* '''Circle with radius''' [max]<br />
<br />
* '''Envelope Deformation''' allows the user to deform an object (or a group of object) by deforming its sides. Modifications are done by deforming the 4 Path parameters : Top and Bottom, Left and Right.<br />
<br />
* '''Lattice Deformation''' allows the user to deform an object (or a group of object) by moving 16 control points.<br />
<br />
* '''Ruler''': [max]<br />
<br />
* '''Freehand Shape''': [max]<br />
<br />
* '''Interpolate Subpaths''': [Johan]<br />
<br />
* '''Path Length''': [max]<br />
<br />
* '''Text Label''': [max]<br />
<br />
==New features==<br />
* 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.<br />
<br />
* A new command, '''Remove path effect''' removes any path effects from all selected objects, going recursively into groups if necessary. <br />
<br />
* 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.<br />
<br />
* Live path effects can now be assigned to the sides of a 3D box (use Ctrl+click to select individual sides).<br />
<br />
* 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.<br />
<br />
* Path type parameters can now link to existing shapes <b>and text</b>, like clones do. Now it is possible to use text as input for the Pattern Along Path effect for example!<br />
<br />
* 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]<br />
<br />
==Live Path Effects for groups==<br />
<br />
LPE can now be assigned to a group. For most LPE, the effect is applied recursively but for Bend Path or Deformations the result is more powerful : the distortion applies on the whole group. <br />
<br />
*You can as usual enter the group by double-clicking on it. <br />
*It applies recursively, this means that a LPE can be assigned to groups of groups <br />
*The Effect can be applied definitively with "Convert Object to path"<br />
<br />
==Live Path Effects stacking==<br />
<br />
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.<br />
<br />
=Import/Export=<br />
==PostScript and EPS import==<br />
<br />
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 ps2pdf from Ghostscript installation is in your PATH. On opening, you will see a preferences dialog which, for multipage PS files, allows you to select the page to open.<br />
<br />
==PostScript and EPS export==<br />
<br />
The new PS and EPS exporter uses cairo and provides a much better support for various vector features, including '''clipping paths''', '''patterns''', and '''non-ASCII characters'''. Those features that are not supported by the Postscript language, such as transparency, are exported via rasters embedded into Postscript.<br />
<br />
==Corel DRAW files import==<br />
<br />
Now Inkscape can import more Corel DRAW files of following types:<br />
<br />
* Corel DRAW Compressed Exchange files (CCX)<br />
* Corel DRAW 7-X4 Template files (CDT)<br />
* Corel DRAW Presentation Exchange files (CMX)<br />
<br />
Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==sK1 files import==<br />
<br />
Inkscape uses UniConvertor to import sK1 files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==CGM import==<br />
<br />
Inkscape uses UniConvertor to import Computer Graphics Metafile (CGM) files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==PDF export==<br />
<br />
The new PDF exporter correctly translates into PDF '''clipping paths''' and '''patterns''' (requires a recent version of cairo).<br />
<br />
With PDF export, it is now possible to make the PDF page the size of the entire drawing, instead of the same as SVG page as before, by the "Export drawing, not page" checkbox in PDF export options. Also, you can export a single object from a complex document to PDF if you specify the ID of that object in the "Limit export to the object with ID" field; the page of such PDF will be the same size as the bounding box of that object and will show only that object (all others will be hidden).<br />
<br />
The same capabilities are available from the command line by using <code>--export-area-drawing</code> and <code>--export-id=ID</code> parameters with <code>--export-pdf</code> (previously, they only worked for PNG export).<br />
<br />
==PDF import from the command line==<br />
<br />
Now you can use, for example,<br />
<br />
inkscape file.pdf --export-plain-svg=file.svg<br />
<br />
It will take the first page of the PDF and all the default import options, and save the result to SVG. (Before, it crashed because it tried to open the PDF import preferences dialog and could not do it in the command line mode.) If you try to import PDF without an <code>--export</code> command, it will show the prefs dialog as before and open the file in the UI.<br />
<br />
==HPGL export==<br />
<br />
Inkscape can now export to HPGL (Hewlett-Packard Graphics Language). It is a file format that is used for various cutters/plotters.<br />
<br />
==JavaFX export==<br />
<br />
[]<br />
<br />
==DXF export==<br />
<br />
DXF export is much faster than in previous versions.<br />
<br />
= Autosave =<br />
<br />
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).<br />
<br />
=Extension effects=<br />
==New and improved effects==<br />
<br />
* The new '''Arrange > 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.).<br />
* The improved '''Modify Path > Add Nodes''' extension now also allows segments to be divided into a given number of subsegments.<br />
* The new '''Render > Alphabet Soup''' extension is a vector rework of Matt Chrisholm's GPLed script [http://www.theory.org/artprojects/alphabetsoup/main.html]. Alphabet Soup randomly mashes glyph-elements together to make exotic looking text.<br />
* The new '''Render > 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.<br />
* The new '''Render > 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.<br />
* The new '''Text > Convert to Braille''' extension recodes English (or just Latin letters) text to [http://en.wikipedia.org/wiki/Braille Braille] code created for visually impaired people.<br />
* [preset filter effects]<br />
<br />
==API changes==<br />
<br />
While the "Live preview" checkbox is useful for most effects, for some it just does not make sense. Now, you can add the attribute <code>needs-live-preview="false"</code> in the <code>effect</code> element in the .inx file of the effect to suppress this checkbox for your effect.<br />
<br />
Parameters passed to extensions (via the <param> element) now have a new boolean attribute - <code>gui-hidden</code> 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.<br />
<br />
All '''.inx''' files are now properly formatted XML files with its own namespace of: <code><nowiki>http://www.inkscape.org/namespace/inkscape/extension</nowiki></code> and a Relax NG schema to define it. More information can be found in the [[Extensions]] Article.<br />
<br />
=SVG output=<br />
<br />
==Optimized CSS properties==<br />
<br />
As a file size optimization, Inkscape does not write into SVG some of the stroke properties if the object has stroke:none and some of the fill properties when it has fill:none. The only situation where this might affect you is if you remove stroke from an object and then turn it back on - the object will get the default stroke instead of the same it had before. <br />
<br />
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.<br />
<br />
Specifically, if stroke:none, the following properties do not get written to SVG:<br />
<br />
stroke-width<br />
stroke-linecap<br />
stroke-linejoin<br />
stroke-miterlimit<br />
stroke-opacity<br />
stroke-dasharray<br />
stroke-dashoffset<br />
<br />
Note that this does not include marker properties, which means you can still have markers on a path without visible stroke.<br />
<br />
If fill:none, the following properties do not get written to SVG:<br />
<br />
fill-opacity<br />
fill-rule<br />
<br />
==Optimized path data==<br />
<br />
In this version, the size of the path data written in the <code>d=</code> attribute of <code>path</code> elements is reduced by about 10%. Inkscape generates the shortest possible path strings by avoiding repeated operators and using relative coordinates (when it helps).<br />
<br />
This is controlled by the '''SVG output''' page of Inkscape Preferences dialog, as well as the following attributes in <code>group id="svgoutput"</code> in your preferences.xml file:<br />
<br />
* allowrelativecoordinates (default 1) to switch relative coordinates on (1) or off (0)<br />
* forcerepeatcommands (default 0) to force repeating operators (1) or allow use of the more compact representation without repeated operators (0)<br />
<br />
==No more explicit closing line segment==<br />
Inkscape used to always explicitly write the closing line segment to SVG for closed paths. For example: "M 0,0 L 1,0 L 1,1 L 0,1 L 0,0 z". With the improved SVG path data writing, Inkscape no longer generates this closing line segment, resulting in "M 0,0 L 1,0 L 1,1 L 0,1 z".<br />
When SVG path data input contains this explicit closing segment, it is maintained throughout transformations, but is removed after using the node edit tool.<br />
[this seems no longer to be true, fix it!!! -johan]<br />
<br />
==Horizontal and vertical path segments==<br />
<br />
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.<br />
<br />
==<script> support==<br />
<br />
While Inkscape does not yet support SVG scripting via the <script> element, this element is now preserved after editing the file in Inkscape.<br />
<br />
=Other features=<br />
<br />
==Clipboard enhancements==<br />
<br />
The clipboard used by Inkscape is now system-wide instead of being confined to a single instance of the application. Copied elements are exported to the clipboard using all the available output formats. SVG data can be pasted into other applications supporting one of Inkscape's output formats, and SVG data provided by other applications can be pasted into Inkscape.<br />
<br />
If you copy a string that can be interpreted as a hexadecimal color specification, i.e. 2f7ab4 or #014522b0, and then paste it into Inkscape, the fill of the selected objects will change to the given color. This is especially useful when working with HTML pages.<br />
<br />
==Masks and clipping paths==<br />
<br />
[editable in node tool - johan]<br />
<br />
==Stroke width changeable by dragging==<br />
<br />
[bbyak]<br />
<br />
==Enhanced tablet support==<br />
<br />
===Input device tool switching===<br />
<br />
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.<br />
<br />
===Extended input device configuration===<br />
<br />
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.<br />
<br />
Additionally hardware setup itself has been separated from general settings to allow for easier dynamic switching of settings appropriate to the task at hand.<br />
<br />
==Layers==<br />
<br />
===Show/hide other layers===<br />
<br />
The layers dialog now allows for hiding or showing all layers other than the current layer. This "solo" feature allows for faster switching between working layers and for quick checking with and without others shown.<br />
<br />
===Duplicate Layer command===<br />
<br />
A new command has been added to the layers menus to allow for duplicating an existing layer with all of its objects.<br />
<br />
==External image editing and reload==<br />
<br />
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 can be controlled by user preferences.<br />
<br />
==Command for relinking clones==<br />
<br />
A new command, '''Relink Clone to Copied''' in ''Edit > 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.<br />
<br />
==Auto relinking clones on Duplicate==<br />
<br />
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.<br />
<br />
==Pattern editing==<br />
<br />
When editing pattern fills:<br />
* The pattern origin and scale handles now snap.<br />
* The pattern scaling can now be different in X and Y direction. Press '''Ctrl''' to have a fixed 1:1 ratio scaling (old behavior).<br />
* 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.<br />
<br />
==Transform dialog: spacing out option==<br />
<br />
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 "Relative move" is on, each object is shifted relative to the closest selected object on the left (for X) or below (for Y). <br />
<br />
For example, if you have a horizontal row of objects and you move them relatively by X=5px with "Apply to each object separately" 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). <br />
<br />
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.<br />
<br />
<br />
=User interface=<br />
<br />
==Filters can be disabled==<br />
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 "normal" and "outline" view modes.<br />
<br />
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.<br />
<br />
==Native file dialogs for Windows==<br />
The windows builds of inkscape now have Windows-native file dialogs to keep consistency with other windows applications.<br />
<br />
==Inkscape Preferences dialog==<br />
<br />
This dialog has been rearranged for more logical grouping of options. New pages has 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). <br />
<br />
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.<br />
<br />
There is a new option on the Interface tab, '''Zoom correction factor''', which displays an adjustable ruler. Move the slider until the ruler's on-screen size matches its true size. The resulting conversion factor is used internally when zooming to 1:1 etc. such that objects are displayed in their true size.<br />
<br />
==Dropper tool==<br />
<br />
The confusing icons on buttons in the controls bar of the Dropper tool (pick/assign opacity) are replaced by text labels.<br />
<br />
==Swatches==<br />
<br />
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 to show a tool tip is difficult.<br />
<br />
==Toolbars==<br />
<br />
* The toolbar icon sizes for the three main toolbars are now separately configurable and to a few different sizes. This allows users to get a smaller UI on certain systems, including Ubuntu.<br />
<br />
* 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.<br />
<br />
* When torn off, toolbars now keep the size they last had in the main window. They can be resized by docking, sizing the main window, and then undocking agin.<br />
<br />
* 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.<br />
<br />
==Title and Description==<br />
<br />
* [the Title and Description fields on the Object Properties dialog - sas]<br />
<br />
==Clone/original visualization==<br />
<br />
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.<br />
<br />
=Grids, guides, snapping=<br />
<br />
==Grids==<br />
* The dotted rectangular grid now shows small crosses at the intersection points of emphasis lines.<br />
<br />
==Guides==<br />
<br />
There is now an option to treat groups as single objects during conversion to guides (as opposed to converting each object inside the group separately).<br />
<br />
==Snapping==<br />
Snapping has been implemented or improved in these areas:<br />
* The '''node tool''' now snaps to any unselected node (cusp or smooth) within the path that's being edited, and to cusp nodes of other paths. It also snaps to the path itself, but only to the stationary segments in between two unselected nodes. It is now also possible to snap while moving nodes along a vertical or horizontal constraint<br />
* '''Clipping paths and masks''' are now also snappable<br />
* The object snapper now also allows to snap to the '''page border'''<br />
* It is now possible to snap to '''intersections of paths''' (were we previously only snapped to intersections of line-segments)<br />
* In the selector tool, snapping while '''skewing ''' or '''constrained translating''' have been improved<br />
* When creating '''new shapes''', all of their handle points now snap<br />
* In the document properties dialog, the checkbox for ''' 'always'''' snap has been replaced by two radiobuttons; this should eliminate most of the confusion surrounding this option<br />
* Holding the shift-key now also disables snapping while dragging '''node-handles'''<br />
* The code relating to the snapping mechanisms has undergone '''major refactoring''' to make it more reliable and easier to use from a developer's perspective<br />
* Snapping to objects now uses routines from the '''2geom libraries''', which are actively maintained and are less error prone than the old Livarot libraries. This fixes at least two known snapping bugs<br />
* While drawing and '''constraining to specific angles''' (using CTRL), Inkscape should now only snap to points on the constrained line.<br />
* When '''pasting''', previously aligned originals will stay aligned to the grid. The code for this had to be reinvented due to the refactoring<br />
<br />
==Snap indicator==<br />
When snapping has occurred, an indicator is displayed at that specific position. For now that indicator is just a cross that disappears in a second. In the future the shape of the indicator will be related to the type of target that has been snapped to. The snapping indicator can be disabled in the Document Properties dialog.<br />
<br />
=Notable bug fixes=<br />
<br />
* Inkscape is now able to handle paths with only 'movetos', i.e. "M 0,0 M 1,1 M 2,2". These kind of paths can be used to only show markers on a path without the rest of the path visible.<br />
<br />
* 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 "Filter general settings" tab of the Filter Effects dialog.<br />
<br />
: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 bbox for selection of the export area; this means that you can now export a blurred object to bitmap without any clipping of the blur.<br />
<br />
* Bounding box calculation does not include the invisible objects. (#252547)<br />
<br />
* Several fixes allows Inkscape to correctly render and edit SVG files that use <code>currentColor</code> in objects' style (this includes files created by gnuplot).<br />
<br />
* '''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.<br />
<br />
* '''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).<br />
<br />
* File dialogs remember last visited directory<br />
<br />
* No more garbage lines in outline mode <br />
<br />
* No more artifacts left by the circle cursor in Tweak tool<br />
<br />
* The Live Path Effects '''Bend Path''' and '''Pattern along Path''' now work correctly with closed paths.<br />
<br />
= Previous releases =<br />
<br />
* [[ReleaseNotes046]]<br />
* [[ReleaseNotes045]]<br />
* [[ReleaseNotes044]]<br />
* [[ReleaseNotes043]]<br />
* [[ReleaseNotes042]]<br />
* [[ReleaseNotes041]]<br />
* [[ReleaseNotes040]]<br />
* [[ReleaseNotes039]]<br />
* [[ReleaseNotes038]]<br />
* [[ReleaseNotes037]]<br />
* [[ReleaseNotes036]]<br />
* [[ReleaseNotes035]]<br />
<br />
[[Category:Marketing]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&diff=35574Release notes/0.472008-09-04T17:03:36Z<p>Cilix: /* Inkscape Preferences dialog */</p>
<hr />
<div>=Inkscape 0.47= <br />
'''(not released yet)'''<br />
<br />
=Refactoring effort=<br />
[mention the 'main' goal of 0.47 and list which things have been refactored and the benefits/new features/different workflow? --johan]<br />
<br />
- ratio of code lines and comment lines (difference with 0.46)<br />
<br />
- number of fixme's and todo's (difference with 0.46)<br />
<br />
- cairo<br />
<br />
- speed improvement? (LPE? bootup?)<br />
<br />
=Tools=<br />
<br />
==Node tool==<br />
<br />
* [helper path display, flashing - johan]<br />
* 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).<br />
* Snapping has been improved (more details in Snapping below)<br />
* When dragging a node '''handle with Ctrl''', 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).<br />
* The behavior of the buttons/shortucts that make a node smooth or cusp has been improved:<br />
:* If a node is already 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.<br />
:* 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.<br />
<br />
==Calligraphy tool ==<br />
<br />
[presets - Aubanel]<br />
<br />
==Paint Bucket tool==<br />
* Paint Bucket is now more tightly integrated with potrace. As a result, memory and CPU usage on each fill operation have been reduced significantly.<br />
<br />
==Eraser Tool==<br />
A new eraser tool has been added. It has two main modes:<br />
<br />
* Delete-mode where any shape touched by the tool is deleted completely. This operation is in line with "vector" editing.<br />
* Cut mode where erasing acts similar to erasing in a standard bitmap editor.<br />
<br />
Cut mode works for both selected and not selected objects.<br />
<br />
==Pen and Pencil==<br />
<br />
Apart from the regular Bezier mode, the pen tool now provides several new modes:<br />
<br />
* '''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.<br />
<br />
* '''Zigzag mode''': This mode makes it easy to draw many straight line segments in quick succession by disallowing curves (even when the user drags with the mouse).<br />
<br />
* '''Paraxial mode''': In this mode, the user can only 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).<br />
<br />
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].<br />
<br />
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.)<br />
<br />
==Text tool==<br />
<br />
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).<br />
<br />
<br />
=Live path effects=<br />
== Notable bug fixes and effect changes==<br />
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:<br />
<br />
* The Pattern Along Path effect used to stretch the pattern across discontinuities. This has been fixed; now it treats a discontinuous path as a group of continuous paths and applied the effect separately to each.<br />
<br />
==New effects==<br />
<br />
* '''Sketch''': [JF Barraud]<br />
<br />
* '''von Koch''': [JF Barraud]<br />
<br />
* '''Knot''': [JF Barraud]<br />
<br />
* '''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]<br />
<br />
* '''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.<br />
<br />
: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. <br />
<br />
:To create a Spiro path, select any path and assign the "Spiro spline" 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:<br />
<br />
:* 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.<br />
<br />
:* 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.<br />
<br />
:* Half-smooth nodes - those with one Bezier handle collinear with a straight line segment on the other hand - become "left" or "right" 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.<br />
<br />
: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. <br />
<br />
:Some configurations of points do not converge and produce wild loops and spirals instead of a smooth curve. According to Raph, "The spline solver in this release is _not_ numerically robust. When you start drawing random points, you'll quickly run into divergence. However, "sensible" plates based on real fonts usually converge." Avoid too sharp changes in direction between points to prevent divergence. Hopefully, the robustness of the algorithm will be improved in future releases.<br />
<br />
: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 as it is a distraction. 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. <br />
<br />
: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.<br />
<br />
* '''Construct Grid''' [johan]<br />
<br />
* '''Perpendicular bisector''' [max]<br />
<br />
* '''AngleBisector''' [max]<br />
<br />
* '''Tangent to a curve''' [max]<br />
<br />
* '''Circle through 3 points''' [max]<br />
<br />
* '''Circle with radius''' [max]<br />
<br />
* '''Envelope Deformation''' allows the user to deform an object (or a group of object) by deforming its sides. Modifications are done by deforming the 4 Path parameters : Top and Bottom, Left and Right.<br />
<br />
* '''Lattice Deformation''' allows the user to deform an object (or a group of object) by moving 16 control points.<br />
<br />
* '''Ruler''': [max]<br />
<br />
* '''Freehand Shape''': [max]<br />
<br />
* '''Interpolate Subpaths''': [Johan]<br />
<br />
* '''Path Length''': [max]<br />
<br />
* '''Text Label''': [max]<br />
<br />
==New features==<br />
* 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.<br />
<br />
* A new command, '''Remove path effect''' removes any path effects from all selected objects, going recursively into groups if necessary. <br />
<br />
* 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.<br />
<br />
* Live path effects can now be assigned to the sides of a 3D box (use Ctrl+click to select individual sides).<br />
<br />
* 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.<br />
<br />
* Path type parameters can now link to existing shapes <b>and text</b>, like clones do. Now it is possible to use text as input for the Pattern Along Path effect for example!<br />
<br />
* 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]<br />
<br />
==Live Path Effects for groups==<br />
<br />
LPE can now be assigned to a group. For most LPE, the effect is applied recursively but for Bend Path or Deformations the result is more powerful : the distortion applies on the whole group. <br />
<br />
*You can as usual enter the group by double-clicking on it. <br />
*It applies recursively, this means that a LPE can be assigned to groups of groups <br />
*The Effect can be applied definitively with "Convert Object to path"<br />
<br />
==Live Path Effects stacking==<br />
<br />
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.<br />
<br />
=Import/Export=<br />
==PostScript and EPS import==<br />
<br />
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 ps2pdf from Ghostscript installation is in your PATH. On opening, you will see a preferences dialog which, for multipage PS files, allows you to select the page to open.<br />
<br />
==PostScript and EPS export==<br />
<br />
The new PS and EPS exporter uses cairo and provides a much better support for various vector features, including '''clipping paths''', '''patterns''', and '''non-ASCII characters'''. Those features that are not supported by the Postscript language, such as transparency, are exported via rasters embedded into Postscript.<br />
<br />
==Corel DRAW files import==<br />
<br />
Now Inkscape can import more Corel DRAW files of following types:<br />
<br />
* Corel DRAW Compressed Exchange files (CCX)<br />
* Corel DRAW 7-X4 Template files (CDT)<br />
* Corel DRAW Presentation Exchange files (CMX)<br />
<br />
Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==sK1 files import==<br />
<br />
Inkscape uses UniConvertor to import sK1 files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==CGM import==<br />
<br />
Inkscape uses UniConvertor to import Computer Graphics Metafile (CGM) files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==PDF export==<br />
<br />
The new PDF exporter correctly translates into PDF '''clipping paths''' and '''patterns''' (requires a recent version of cairo).<br />
<br />
With PDF export, it is now possible to make the PDF page the size of the entire drawing, instead of the same as SVG page as before, by the "Export drawing, not page" checkbox in PDF export options. Also, you can export a single object from a complex document to PDF if you specify the ID of that object in the "Limit export to the object with ID" field; the page of such PDF will be the same size as the bounding box of that object and will show only that object (all others will be hidden).<br />
<br />
The same capabilities are available from the command line by using <code>--export-area-drawing</code> and <code>--export-id=ID</code> parameters with <code>--export-pdf</code> (previously, they only worked for PNG export).<br />
<br />
==PDF import from the command line==<br />
<br />
Now you can use, for example,<br />
<br />
inkscape file.pdf --export-plain-svg=file.svg<br />
<br />
It will take the first page of the PDF and all the default import options, and save the result to SVG. (Before, it crashed because it tried to open the PDF import preferences dialog and could not do it in the command line mode.) If you try to import PDF without an <code>--export</code> command, it will show the prefs dialog as before and open the file in the UI.<br />
<br />
==HPGL export==<br />
<br />
Inkscape can now export to HPGL (Hewlett-Packard Graphics Language). It is a file format that is used for various cutters/plotters.<br />
<br />
==JavaFX export==<br />
<br />
[]<br />
<br />
==DXF export==<br />
<br />
DXF export is much faster than in previous versions.<br />
<br />
= Autosave =<br />
<br />
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).<br />
<br />
=Extension effects=<br />
==New and improved effects==<br />
<br />
* The new '''Arrange > 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.).<br />
* The improved '''Modify Path > Add Nodes''' extension now also allows segments to be divided into a given number of subsegments.<br />
* The new '''Render > Alphabet Soup''' extension is a vector rework of Matt Chrisholm's GPLed script [http://www.theory.org/artprojects/alphabetsoup/main.html]. Alphabet Soup randomly mashes glyph-elements together to make exotic looking text.<br />
* The new '''Render > 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.<br />
* The new '''Render > 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.<br />
* The new '''Text > Convert to Braille''' extension recodes English (or just Latin letters) text to [http://en.wikipedia.org/wiki/Braille Braille] code created for visually impaired people.<br />
* [preset filter effects]<br />
<br />
==API changes==<br />
<br />
While the "Live preview" checkbox is useful for most effects, for some it just does not make sense. Now, you can add the attribute <code>needs-live-preview="false"</code> in the <code>effect</code> element in the .inx file of the effect to suppress this checkbox for your effect.<br />
<br />
Parameters passed to extensions (via the <param> element) now have a new boolean attribute - <code>gui-hidden</code> 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.<br />
<br />
All '''.inx''' files are now properly formatted XML files with its own namespace of: <code><nowiki>http://www.inkscape.org/namespace/inkscape/extension</nowiki></code> and a Relax NG schema to define it. More information can be found in the [[Extensions]] Article.<br />
<br />
=SVG output=<br />
<br />
==Optimized CSS properties==<br />
<br />
As a file size optimization, Inkscape does not write into SVG some of the stroke properties if the object has stroke:none and some of the fill properties when it has fill:none. The only situation where this might affect you is if you remove stroke from an object and then turn it back on - the object will get the default stroke instead of the same it had before. <br />
<br />
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.<br />
<br />
Specifically, if stroke:none, the following properties do not get written to SVG:<br />
<br />
stroke-width<br />
stroke-linecap<br />
stroke-linejoin<br />
stroke-miterlimit<br />
stroke-opacity<br />
stroke-dasharray<br />
stroke-dashoffset<br />
<br />
Note that this does not include marker properties, which means you can still have markers on a path without visible stroke.<br />
<br />
If fill:none, the following properties do not get written to SVG:<br />
<br />
fill-opacity<br />
fill-rule<br />
<br />
==Optimized path data==<br />
<br />
In this version, the size of the path data written in the <code>d=</code> attribute of <code>path</code> elements is reduced by about 10%. Inkscape generates the shortest possible path strings by avoiding repeated operators and using relative coordinates (when it helps).<br />
<br />
This is controlled by the '''SVG output''' page of Inkscape Preferences dialog, as well as the following attributes in <code>group id="svgoutput"</code> in your preferences.xml file:<br />
<br />
* allowrelativecoordinates (default 1) to switch relative coordinates on (1) or off (0)<br />
* forcerepeatcommands (default 0) to force repeating operators (1) or allow use of the more compact representation without repeated operators (0)<br />
<br />
==No more explicit closing line segment==<br />
Inkscape used to always explicitly write the closing line segment to SVG for closed paths. For example: "M 0,0 L 1,0 L 1,1 L 0,1 L 0,0 z". With the improved SVG path data writing, Inkscape no longer generates this closing line segment, resulting in "M 0,0 L 1,0 L 1,1 L 0,1 z".<br />
When SVG path data input contains this explicit closing segment, it is maintained throughout transformations, but is removed after using the node edit tool.<br />
[this seems no longer to be true, fix it!!! -johan]<br />
<br />
==Horizontal and vertical path segments==<br />
<br />
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.<br />
<br />
==<script> support==<br />
<br />
While Inkscape does not yet support SVG scripting via the <script> element, this element is now preserved after editing the file in Inkscape.<br />
<br />
=Other features=<br />
<br />
==Clipboard enhancements==<br />
<br />
The clipboard used by Inkscape is now system-wide instead of being confined to a single instance of the application. Copied elements are exported to the clipboard using all the available output formats. SVG data can be pasted into other applications supporting one of Inkscape's output formats, and SVG data provided by other applications can be pasted into Inkscape.<br />
<br />
If you copy a string that can be interpreted as a hexadecimal color specification, i.e. 2f7ab4 or #014522b0, and then paste it into Inkscape, the fill of the selected objects will change to the given color. This is especially useful when working with HTML pages.<br />
<br />
==Masks and clipping paths==<br />
<br />
[editable in node tool - johan]<br />
<br />
==Stroke width changeable by dragging==<br />
<br />
[bbyak]<br />
<br />
==Enhanced tablet support==<br />
<br />
===Input device tool switching===<br />
<br />
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.<br />
<br />
===Extended input device configuration===<br />
<br />
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.<br />
<br />
Additionally hardware setup itself has been separated from general settings to allow for easier dynamic switching of settings appropriate to the task at hand.<br />
<br />
==Layers==<br />
<br />
===Show/hide other layers===<br />
<br />
The layers dialog now allows for hiding or showing all layers other than the current layer. This "solo" feature allows for faster switching between working layers and for quick checking with and without others shown.<br />
<br />
===Duplicate Layer command===<br />
<br />
A new command has been added to the layers menus to allow for duplicating an existing layer with all of its objects.<br />
<br />
==External image editing and reload==<br />
<br />
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 can be controlled by user preferences.<br />
<br />
==Command for relinking clones==<br />
<br />
A new command, '''Relink Clone to Copied''' in ''Edit > 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.<br />
<br />
==Auto relinking clones on Duplicate==<br />
<br />
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.<br />
<br />
==Pattern editing==<br />
<br />
When editing pattern fills:<br />
* The pattern origin and scale handles now snap.<br />
* The pattern scaling can now be different in X and Y direction. Press '''Ctrl''' to have a fixed 1:1 ratio scaling (old behavior).<br />
* 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.<br />
<br />
==Transform dialog: spacing out option==<br />
<br />
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 "Relative move" is on, each object is shifted relative to the closest selected object on the left (for X) or below (for Y). <br />
<br />
For example, if you have a horizontal row of objects and you move them relatively by X=5px with "Apply to each object separately" 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). <br />
<br />
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.<br />
<br />
<br />
=User interface=<br />
<br />
==Filters can be disabled==<br />
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 "normal" and "outline" view modes.<br />
<br />
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.<br />
<br />
==Native file dialogs for Windows==<br />
The windows builds of inkscape now have Windows-native file dialogs to keep consistency with other windows applications.<br />
<br />
==Inkscape Preferences dialog==<br />
<br />
This dialog has been rearranged for more logical grouping of options. New pages has 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). <br />
<br />
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.<br />
<br />
There is a new option on the Interface tab, '''Zoom correction factor''', which displays an adjustable ruler. Move the slider until the ruler's on-screen size matches its true size. The resulting conversion factor is used internally when zooming to 1:1 etc. such that objects are displayed in their true size.<br />
<br />
==Dropper tool==<br />
<br />
The confusing icons on buttons in the controls bar of the Dropper tool (pick/assign opacity) are replaced by text labels.<br />
<br />
==Swatches==<br />
<br />
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 to show a tool tip is difficult.<br />
<br />
==Toolbars==<br />
<br />
* The toolbar icon sizes for the three main toolbars are now separately configurable and to a few different sizes. This allows users to get a smaller UI on certain systems, including Ubuntu.<br />
<br />
* 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.<br />
<br />
* When torn off, toolbars now keep the size they last had in the main window. They can be resized by docking, sizing the main window, and then undocking agin.<br />
<br />
* 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.<br />
<br />
==Title and Description==<br />
<br />
* [the Title and Description fields on the Object Properties dialog - sas]<br />
<br />
==Clone/original visualization==<br />
<br />
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.<br />
<br />
=Grids, guides, snapping=<br />
<br />
==Grids==<br />
* The dotted rectangular grid now shows small crosses at the intersection points of emphasis lines.<br />
<br />
==Guides==<br />
<br />
There is now an option to treat groups as single objects during conversion to guides (as opposed to converting each object inside the group separately).<br />
<br />
==Snapping==<br />
Snapping has been implemented or improved in these areas:<br />
* The '''node tool''' now snaps to any unselected node (cusp or smooth) within the path that's being edited, and to cusp nodes of other paths. It also snaps to the path itself, but only to the stationary segments in between two unselected nodes. It is now also possible to snap while moving nodes along a vertical or horizontal constraint<br />
* '''Clipping paths and masks''' are now also snappable<br />
* The object snapper now also allows to snap to the '''page border'''<br />
* It is now possible to snap to '''intersections of paths''' (were we previously only snapped to intersections of line-segments)<br />
* In the selector tool, snapping while '''skewing ''' or '''constrained translating''' have been improved<br />
* When creating '''new shapes''', all of their handle points now snap<br />
* In the document properties dialog, the checkbox for ''' 'always'''' snap has been replaced by two radiobuttons; this should eliminate most of the confusion surrounding this option<br />
* Holding the shift-key now also disables snapping while dragging '''node-handles'''<br />
* The code relating to the snapping mechanisms has undergone '''major refactoring''' to make it more reliable and easier to use from a developer's perspective<br />
* Snapping to objects now uses routines from the '''2geom libraries''', which are actively maintained and are less error prone than the old Livarot libraries. This fixes at least two known snapping bugs<br />
* While drawing and '''constraining to specific angles''' (using CTRL), Inkscape should now only snap to points on the constrained line.<br />
* When '''pasting''', previously aligned originals will stay aligned to the grid. The code for this had to be reinvented due to the refactoring<br />
<br />
==Snap indicator==<br />
When snapping has occurred, an indicator is displayed at that specific position. For now that indicator is just a cross that disappears in a second. In the future the shape of the indicator will be related to the type of target that has been snapped to. The snapping indicator can be disabled in the Document Properties dialog.<br />
<br />
=Notable bug fixes=<br />
<br />
* Inkscape is now able to handle paths with only 'movetos', i.e. "M 0,0 M 1,1 M 2,2". These kind of paths can be used to only show markers on a path without the rest of the path visible.<br />
<br />
* 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 "Filter general settings" tab of the Filter Effects dialog.<br />
<br />
: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 bbox for selection of the export area; this means that you can now export a blurred object to bitmap without any clipping of the blur.<br />
<br />
* Bounding box calculation does not include the invisible objects. (#252547)<br />
<br />
* Several fixes allows Inkscape to correctly render and edit SVG files that use <code>currentColor</code> in objects' style (this includes files created by gnuplot).<br />
<br />
* '''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.<br />
<br />
* '''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).<br />
<br />
* File dialogs remember last visited directory<br />
<br />
* No more garbage lines in outline mode <br />
<br />
* No more artifacts left by the circle cursor in Tweak tool<br />
<br />
* The Live Path Effects '''Bend Path''' and '''Pattern along Path''' now work correctly with closed paths.<br />
<br />
= Previous releases =<br />
<br />
* [[ReleaseNotes046]]<br />
* [[ReleaseNotes045]]<br />
* [[ReleaseNotes044]]<br />
* [[ReleaseNotes043]]<br />
* [[ReleaseNotes042]]<br />
* [[ReleaseNotes041]]<br />
* [[ReleaseNotes040]]<br />
* [[ReleaseNotes039]]<br />
* [[ReleaseNotes038]]<br />
* [[ReleaseNotes037]]<br />
* [[ReleaseNotes036]]<br />
* [[ReleaseNotes035]]<br />
<br />
[[Category:Marketing]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Working_with_2Geom_FAQ&diff=34654Working with 2Geom FAQ2008-08-18T11:19:36Z<p>Cilix: /* How to convert from Path to pwd2 to d2pw to path and back? */</p>
<hr />
<div>== Introduction ==<br />
<br />
Questions that arise during coding with 2geom are put here. To see other 2geom related questions go to the general [[lib2geom FAQ]]. Bugs can be reported at SF: [http://sourceforge.net/tracker/?group_id=167845&atid=844560 2geom bug tracker].<br />
<br />
== Questions ==<br />
<br />
===How to create a straight line (for types: Path, pwd2, d2pw)?===<br />
Path p;<br />
p.appendNew<LineSegment>(a, b);<br />
<br />
Piecewise<D2<SBasis> > pwd2 = Piecewise<D2<SBasis> >(D2<SBasis>(Linear(a[X], b[X]), Linear(a[Y], b[Y])));<br />
<br />
===How to convert from Path (or PathVector) to pwd2 to d2pw to path and back?===<br />
<br />
D2<Piecewise<SBasis> > y;<br />
Piecewise<D2<SBasis> > x;<br />
Path p;<br />
PathVector pvec;<br />
//Assume the above vars are initialized<br />
x = p.toPwSb();<br />
y = make_cuts_independant(x); // pwd2 -> d2pw<br />
x = sectionize(y); // d2pw -> pwd2<br />
p = path_from_piecewise(x, tolerance); // pw2d -> path<br />
x = paths_to_pw(pvec); // pathvector -> pwd2<br />
<br />
How do i convert from d2pw to path?<br />
<br />
===How do I calculate the bounding box of a path?===<br />
<br />
Rect r = path.boundsFast(); <br />
or<br />
Rect r = path.boundsExact();<br />
<br />
===How do I convert 2geom to svgd and back?===<br />
#include "live_effects/n-art-bpath-2geom.h"<br />
...<br />
std::vector<Geom::Path> path_2geom;<br />
gchar * svgd = SVGD_from_2GeomPath( path_2geom );<br />
std::vector<Geom::Path> newpath_2geom = SVGD_to_2GeomPath(svgd);<br />
g_free(svgd);<br />
<br />
<br />
===How do I convert from Inkscape paths to 2geom paths?===<br />
#include "live_effects/n-art-bpath-2geom.h"<br />
...<br />
NArtBpath * path_in;<br />
std::vector<Geom::Path> path_2geom = BPath_to_2GeomPath(path_in);<br />
NArtBpath *new_bpath = BPath_from_2GeomPath(path_2geom);<br />
<br />
===How do I convert from Inkscape points to 2geom points?===<br />
Geom::Point p_2geom(NR_HUGE, NR_HUGE);<br />
NR::Point t(p_2geom);<br />
Geom::Point pother_2geom = t.to_2geom();<br />
<br />
===What does "compose" do?===<br />
[http://en.wikipedia.org/wiki/Function_composition Compose] is the mathematical operation f(?) o g(?) = f(g(?)). Any transformation, be it translation or mesh distort, can be considered a composition of the original path P(t)->(u,v) and a function T(u,v)->(x,y) which takes each point in the plane to a new point. We write this transformation as compose(T, P). For examples of such composition at work look at the toys<br />
<br />
* '2dsb2d', which composes the path with a polynomial mesh function called a coons patch<br />
* 'plane3d', which composes the path with a 3d projection onto a plane surface<br />
* 'center-warp', which shows how repeated composition produces the tweak tool effect<br />
* 'path-along-path' which shows how composition allows mapping a shape along a path<br />
<br />
===A dot product ?===<br />
the dot() function is here for you.<br />
point1 = Geom::Point(10,2);<br />
point2 = Geom::Point(0,1);<br />
dot(point1,point2); // = 2<br />
<br />
<br />
2Geom provides various compose operations for functions representable using piecewise sbasis functions, as well the ability to compose arbitrary functions defined directly in code. All the mathematics is performed in sbasis space.</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&diff=33744Release notes/0.472008-08-06T14:56:08Z<p>Cilix: /* Pen and Pencil */</p>
<hr />
<div>=Inkscape 0.47= <br />
'''(not released yet)'''<br />
<br />
=Refactoring effort=<br />
[mention the 'main' goal of 0.47 and list which things have been refactored and the benefits/new features/different workflow? --johan]<br />
<br />
- ratio of code lines and comment lines (difference with 0.46)<br />
<br />
- number of fixme's and todo's (difference with 0.46)<br />
<br />
- cairo<br />
<br />
- speed improvement? (LPE? bootup?)<br />
<br />
=Tools=<br />
<br />
==Node tool==<br />
<br />
* [helper path display, flashing - johan]<br />
* 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).<br />
* Snapping has been improved (more details in Snapping below)<br />
* When dragging a node '''handle with Ctrl''', 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).<br />
* The behavior of the buttons/shortucts that make a node smooth or cusp has been improved:<br />
:* If a node is already 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.<br />
:* 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.<br />
<br />
==Calligraphy tool ==<br />
<br />
[presets - Aubanel]<br />
<br />
==Paint Bucket tool==<br />
* Paint Bucket is now more tightly integrated with potrace. As a result, memory and CPU usage on each fill operation have been reduced significantly.<br />
<br />
==Eraser Tool==<br />
A new eraser tool has been added. It has two main modes:<br />
<br />
* Delete-mode where any shape touched by the tool is deleted completely. This operation is in line with "vector" editing.<br />
* Cut mode where erasing acts similar to erasing in a standard bitmap editor.<br />
<br />
Cut mode works for both selected and not selected objects.<br />
<br />
==Pen and Pencil==<br />
<br />
Apart from the regular Bezier mode, the pen tool now provides several new modes:<br />
<br />
* '''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.<br />
<br />
* '''Zigzag mode''': This mode makes it easy to draw many straight line segments in quick succession by disallowing curves (even when the user drags with the mouse).<br />
<br />
* '''Paraxial mode''': In this mode, the user can only 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).<br />
<br />
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].<br />
<br />
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.)<br />
<br />
==Text tool==<br />
<br />
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).<br />
<br />
<br />
=Live path effects=<br />
== Notable bug fixes and effect changes==<br />
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:<br />
<br />
* The Pattern Along Path effect used to stretch the pattern across discontinuities. This has been fixed; now it treats a discontinuous path as a group of continuous paths and applied the effect separately to each.<br />
<br />
==New effects==<br />
<br />
* '''Sketch''': [JF Barraud]<br />
<br />
* '''von Koch''': [JF Barraud]<br />
<br />
* '''Knot''': [JF Barraud]<br />
<br />
* '''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]<br />
<br />
* '''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.<br />
<br />
: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. <br />
<br />
:To create a Spiro path, select any path and assign the "Spiro spline" 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:<br />
<br />
:* 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.<br />
<br />
:* 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.<br />
<br />
:* Half-smooth nodes - those with one Bezier handle collinear with a straight line segment on the other hand - become "left" or "right" 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.<br />
<br />
: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. <br />
<br />
:Some configurations of points do not converge and produce wild loops and spirals instead of a smooth curve. According to Raph, "The spline solver in this release is _not_ numerically robust. When you start drawing random points, you'll quickly run into divergence. However, "sensible" plates based on real fonts usually converge." Avoid too sharp changes in direction between points to prevent divergence. Hopefully, the robustness of the algorithm will be improved in future releases.<br />
<br />
: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 as it is a distraction. 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. <br />
<br />
: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.<br />
<br />
* '''Construct Grid''' [johan]<br />
<br />
* '''Perpendicular bisector''' [max]<br />
<br />
* '''AngleBisector''' [max]<br />
<br />
* '''Tangent to a curve''' [max]<br />
<br />
* '''Circle through 3 points''' [max]<br />
<br />
* '''Circle with radius''' [max]<br />
<br />
* '''Envelope Deformation''' allows the user to deform an object (or a group of object) by deforming its sides. Modifications are done by deforming the 4 Path parameters : Top and Bottom, Left and Right.<br />
<br />
* '''Lattice Deformation''' allows the user to deform an object (or a group of object) by moving 16 control points.<br />
<br />
* '''Ruler''': [max]<br />
<br />
* '''Freehand Shape''': [max]<br />
<br />
* '''Interpolate Subpaths''': [Johan]<br />
<br />
* '''Path Length''': [max]<br />
<br />
* '''Text Label''': [max]<br />
<br />
==New features==<br />
* 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.<br />
<br />
* A new command, '''Remove path effect''' removes any path effects from all selected objects, going recursively into groups if necessary. <br />
<br />
* 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.<br />
<br />
* Live path effects can now be assigned to the sides of a 3D box (use Ctrl+click to select individual sides).<br />
<br />
* 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.<br />
<br />
* Path type parameters can now link to existing shapes <b>and text</b>, like clones do. Now it is possible to use text as input for the Pattern Along Path effect for example!<br />
<br />
* 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]<br />
<br />
==Live Path Effects for groups==<br />
<br />
LPE can now be assigned to a group. For most LPE, the effect is applied recursively but for Bend Path or Deformations the result is more powerful : the distortion applies on the whole group. <br />
<br />
*You can as usual enter the group by double-clicking on it. <br />
*It applies recursively, this means that a LPE can be assigned to groups of groups <br />
*The Effect can be applied definitively with "Convert Object to path"<br />
<br />
==Live Path Effects stacking==<br />
<br />
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.<br />
<br />
=Import/Export=<br />
==PostScript and EPS import==<br />
<br />
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 ps2pdf from Ghostscript installation is in your PATH. On opening, you will see a preferences dialog which, for multipage PS files, allows you to select the page to open. <br />
<br />
==Corel DRAW files import==<br />
<br />
Now Inkscape can import more Corel DRAW files of following types:<br />
<br />
* Corel DRAW Compressed Exchange files (CCX)<br />
* Corel DRAW 7-X4 Template files (CDT)<br />
* Corel DRAW Presentation Exchange files (CMX)<br />
<br />
Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==sK1 files import==<br />
<br />
Inkscape uses UniConvertor to import sK1 files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==CGM import==<br />
<br />
Inkscape uses UniConvertor to import Computer Graphics Metafile (CGM) files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==PDF export==<br />
<br />
With PDF export, it is now possible to make the PDF page the size of the entire drawing, instead of the same as SVG page as before by the "Export drawing, not page" checkbox in PDF export options. Also, you can export a single object from a complex document to PDF if you specify the ID of that object in the "Limit export to the object with ID" field; the page of such PDF will be the same size as the bounding box of that object and will show only that object (all others will be hidden).<br />
<br />
The same capabilities are available from the command line by using <code>--export-area-drawing</code> and <code>--export-id=ID</code> parameters with <code>--export-pdf</code> (previously, they only worked for PNG export).<br />
<br />
==PDF import from the command line==<br />
<br />
Now you can use, for example,<br />
<br />
inkscape file.pdf --export-plain-svg=file.svg<br />
<br />
It will take the first page of the PDF and all the default import options, and save the result to SVG. (Before, it crashed because it tried to open the PDF import preferences dialog and could not do it in the command line mode.) If you try to import PDF without an <code>--export</code> command, it will show the prefs dialog as before and open the file in the UI.<br />
<br />
==HPGL export==<br />
<br />
Inkscape can now export to HPGL (Hewlett-Packard Graphics Language). It is a file format that is used for various cutters/plotters.<br />
<br />
==JavaFX export==<br />
<br />
[]<br />
<br />
==DXF export==<br />
<br />
DXF export is much faster than in previous versions.<br />
<br />
= Autosave =<br />
<br />
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).<br />
<br />
=Extension effects=<br />
==New and improved effects==<br />
<br />
* The new '''Arrange > 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.).<br />
* The improved '''Modify Path > Add Nodes''' extension now also allows segments to be divided into a given number of subsegments.<br />
* The new '''Render > Alphabet Soup''' extension is a vector rework of Matt Chrisholm's GPLed script [http://www.theory.org/artprojects/alphabetsoup/main.html]. Alphabet Soup randomly mashes glyph-elements together to make exotic looking text.<br />
* The new '''Render > 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.<br />
* The new '''Render > 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.<br />
* The new '''Text > Convert to Braille''' extension recodes English (or just Latin letters) text to [http://en.wikipedia.org/wiki/Braille Braille] code created for visually impaired people.<br />
* [preset filter effects]<br />
<br />
==API changes==<br />
<br />
While the "Live preview" checkbox is useful for most effects, for some it just does not make sense. Now, you can add the attribute <code>needs-live-preview="false"</code> in the <code>effect</code> element in the .inx file of the effect to suppress this checkbox for your effect.<br />
<br />
Parameters passed to extensions (via the <param> element) now have a new boolean attribute - <code>gui-hidden</code> 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.<br />
<br />
All '''.inx''' files are now properly formatted XML files with its own namespace of: <code><nowiki>http://www.inkscape.org/namespace/inkscape/extension</nowiki></code> and a Relax NG schema to define it. More information can be found in the [[Extensions]] Article.<br />
<br />
=SVG output=<br />
<br />
==Optimized CSS properties==<br />
<br />
As a file size optimization, Inkscape does not write into SVG some of the stroke properties if the object has stroke:none and some of the fill properties when it has fill:none. The only situation where this might affect you is if you remove stroke from an object and then turn it back on - the object will get the default stroke instead of the same it had before. <br />
<br />
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.<br />
<br />
Specifically, if stroke:none, the following properties do not get written to SVG:<br />
<br />
stroke-width<br />
stroke-linecap<br />
stroke-linejoin<br />
stroke-miterlimit<br />
stroke-opacity<br />
stroke-dasharray<br />
stroke-dashoffset<br />
<br />
Note that this does not include marker properties, which means you can still have markers on a path without visible stroke.<br />
<br />
If fill:none, the following properties do not get written to SVG:<br />
<br />
fill-opacity<br />
fill-rule<br />
<br />
==Optimized path data==<br />
<br />
In this version, the size of the path data written in the <code>d=</code> attribute of <code>path</code> elements is reduced by about 10%. Inkscape generates the shortest possible path strings by avoiding repeated operators and using relative coordinates (when it helps).<br />
<br />
This is controlled by the '''SVG output''' page of Inkscape Preferences dialog, as well as the following attributes in <code>group id="svgoutput"</code> in your preferences.xml file:<br />
<br />
* allowrelativecoordinates (default 1) to switch relative coordinates on (1) or off (0)<br />
* forcerepeatcommands (default 0) to force repeating operators (1) or allow use of the more compact representation without repeated operators (0)<br />
<br />
==No more explicit closing line segment==<br />
Inkscape used to always explicitly write the closing line segment to SVG for closed paths. For example: "M 0,0 L 1,0 L 1,1 L 0,1 L 0,0 z". With the improved SVG path data writing, Inkscape no longer generates this closing line segment, resulting in "M 0,0 L 1,0 L 1,1 L 0,1 z".<br />
When SVG path data input contains this explicit closing segment, it is maintained throughout transformations, but is removed after using the node edit tool.<br />
<br />
==Horizontal and vertical path segments==<br />
<br />
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.<br />
<br />
==<script> support==<br />
<br />
While Inkscape does not yet support SVG scripting via the <script> element, this element is now preserved after editing the file in Inkscape.<br />
<br />
=Other features=<br />
<br />
==Clipboard enhancements==<br />
<br />
The clipboard used by Inkscape is now system-wide instead of being confined to a single instance of the application. Copied elements are exported to the clipboard using all the available output formats. SVG data can be pasted into other applications supporting one of Inkscape's output formats, and SVG data provided by other applications can be pasted into Inkscape.<br />
<br />
If you copy a string that can be interpreted as a hexadecimal color specification, i.e. 2f7ab4 or #014522b0, and then paste it into Inkscape, the fill of the selected objects will change to the given color. This is especially useful when working with HTML pages.<br />
<br />
==Masks and clipping paths==<br />
<br />
[editable in node tool - johan]<br />
<br />
==Stroke width changeable by dragging==<br />
<br />
[bbyak]<br />
<br />
==Enhanced tablet support==<br />
<br />
===Input device tool switching===<br />
<br />
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.<br />
<br />
===Extended input device configuration===<br />
<br />
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.<br />
<br />
Additionally hardware setup itself has been separated from general settings to allow for easier dynamic switching of settings appropriate to the task at hand.<br />
<br />
==Layers==<br />
<br />
===Show/hide other layers===<br />
<br />
The layers dialog now allows for hiding or showing all layers other than the current layer. This "solo" feature allows for faster switching between working layers and for quick checking with and without others shown.<br />
<br />
===Duplicate Layer command===<br />
<br />
A new command has been added to the layers menus to allow for duplicating an existing layer with all of its objects.<br />
<br />
==External image editing and reload==<br />
<br />
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 can be controlled by user preferences.<br />
<br />
==Command for relinking clones==<br />
<br />
A new command, '''Relink Clone to Copied''' in ''Edit > 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.<br />
<br />
==Auto relinking clones on Duplicate==<br />
<br />
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.<br />
<br />
==Pattern editing==<br />
<br />
When editing pattern fills:<br />
* The pattern origin and scale handles now snap.<br />
* The pattern scaling can now be different in X and Y direction. Press '''Ctrl''' to have a fixed 1:1 ratio scaling (old behavior).<br />
* 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.<br />
<br />
==Transform dialog: spacing out option==<br />
<br />
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 "Relative move" is on, each object is shifted relative to the closest selected object on the left (for X) or below (for Y). <br />
<br />
For example, if you have a horizontal row of objects and you move them relatively by X=5px with "Apply to each object separately" 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). <br />
<br />
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.<br />
<br />
<br />
=User interface=<br />
<br />
==Filters can be disabled==<br />
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 "normal" and "outline" view modes.<br />
<br />
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.<br />
<br />
==Native file dialogs for Windows==<br />
The windows builds of inkscape now have Windows-native file dialogs to keep consistency with other windows applications.<br />
<br />
==Inkscape Preferences dialog==<br />
<br />
This dialog has been rearranged for more logical grouping of options. New pages has 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). <br />
<br />
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.<br />
<br />
==Dropper tool==<br />
<br />
The confusing icons on buttons in the controls bar of the Dropper tool (pick/assign opacity) are replaced by text labels.<br />
<br />
==Swatches==<br />
<br />
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 to show a tool tip is difficult.<br />
<br />
==Toolbars==<br />
<br />
* The toolbar icon sizes for the three main toolbars are now separately configurable and to a few different sizes. This allows users to get a smaller UI on certain systems, including Ubuntu.<br />
<br />
* 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.<br />
<br />
* When torn off, toolbars now keep the size they last had in the main window. They can be resized by docking, sizing the main window, and then undocking agin.<br />
<br />
* 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.<br />
<br />
==Title and Description==<br />
<br />
* [the Title and Description fields on the Object Properties dialog - sas]<br />
<br />
==Clone/original visualization==<br />
<br />
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.<br />
<br />
=Grids, guides, snapping=<br />
<br />
==Grids==<br />
* The dotted rectangular grid now shows small crosses at the intersection points of emphasis lines.<br />
<br />
==Guides==<br />
<br />
There is now an option to treat groups as single objects during conversion to guides (as opposed to converting each object inside the group separately).<br />
<br />
==Snapping==<br />
Snapping has been implemented or improved in these areas:<br />
* The '''node tool''' now snaps to any unselected node (cusp or smooth) within the path that's being edited, and to cusp nodes of other paths. It also snaps to the path itself, but only to the stationary segments in between two unselected nodes. It is now also possible to snap while moving nodes along a vertical or horizontal constraint<br />
* '''Clipping paths and masks''' are now also snappable<br />
* The object snapper now also allows to snap to the '''page border'''<br />
* In the selector tool, snapping while '''skewing ''' or '''constrained translating''' have been improved<br />
* When creating '''new shapes''', all of their handle points now snap<br />
* In the document properties dialog, the checkbox for ''' 'always'''' snap has been replaced by two radiobuttons; this should eliminate most of the confusion surrounding this option<br />
* Holding the shift-key now also disables snapping while dragging '''node-handles'''<br />
* The code relating to the snapping mechanisms has undergone '''major refactoring''' to make it more reliable and easier to use from a developer's perspective<br />
* Snapping to objects now uses routines from the '''2geom libraries''', which are actively maintained and are less error prone than the old Livarot libraries. This fixes at least two known snapping bugs<br />
* While drawing and '''constraining to specific angles''' (using CTRL), Inkscape should now only snap to points on the constrained line.<br />
<br />
==Snap indicator==<br />
When snapping has occurred, an indicator is displayed at that specific position. For now that indicator is just a cross that disappears in a second. In the future the shape of the indicator will be related to the type of target that has been snapped to. The snapping indicator can be disabled in the Document Properties dialog.<br />
<br />
=Notable bug fixes=<br />
<br />
* 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 "Filter general settings" tab of the Filter Effects dialog.<br />
<br />
: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 bbox for selection of the export area; this means that you can now export a blurred object to bitmap without any clipping of the blur.<br />
<br />
* Several fixes allows Inkscape to correctly render and edit SVG files that use <code>currentColor</code> in objects' style (this includes files created by gnuplot).<br />
<br />
* '''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.<br />
<br />
* '''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).<br />
<br />
* File dialogs remember last visited directory<br />
<br />
* No more garbage lines in outline mode <br />
<br />
* No more artifacts left by the circle cursor in Tweak tool<br />
<br />
* The Live Path Effects '''Bend Path''' and '''Pattern along Path''' now work correctly with closed paths.<br />
<br />
= Previous releases =<br />
<br />
* [[ReleaseNotes046]]<br />
* [[ReleaseNotes045]]<br />
* [[ReleaseNotes044]]<br />
* [[ReleaseNotes043]]<br />
* [[ReleaseNotes042]]<br />
* [[ReleaseNotes041]]<br />
* [[ReleaseNotes040]]<br />
* [[ReleaseNotes039]]<br />
* [[ReleaseNotes038]]<br />
* [[ReleaseNotes037]]<br />
* [[ReleaseNotes036]]<br />
* [[ReleaseNotes035]]<br />
<br />
[[Category:Marketing]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&diff=33724Release notes/0.472008-08-06T12:50:20Z<p>Cilix: /* Pen and Pencil */</p>
<hr />
<div>=Inkscape 0.47= <br />
'''(not released yet)'''<br />
<br />
=Refactoring effort=<br />
[mention the 'main' goal of 0.47 and list which things have been refactored and the benefits/new features/different workflow? --johan]<br />
<br />
- ratio of code lines and comment lines (difference with 0.46)<br />
<br />
- number of fixme's and todo's (difference with 0.46)<br />
<br />
- cairo<br />
<br />
- speed improvement? (LPE? bootup?)<br />
<br />
=Tools=<br />
<br />
==Node tool==<br />
<br />
* [helper path display, flashing - johan]<br />
* 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).<br />
* Snapping has been improved (more details in Snapping below)<br />
* When dragging a node '''handle with Ctrl''', 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).<br />
* The behavior of the buttons/shortucts that make a node smooth or cusp has been improved:<br />
:* If a node is already 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.<br />
:* 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.<br />
<br />
==Calligraphy tool ==<br />
<br />
[presets - Aubanel]<br />
<br />
==Paint Bucket tool==<br />
* Paint Bucket is now more tightly integrated with potrace. As a result, memory and CPU usage on each fill operation have been reduced significantly.<br />
<br />
==Eraser Tool==<br />
A new eraser tool has been added. It has two main modes:<br />
<br />
* Delete-mode where any shape touched by the tool is deleted completely. This operation is in line with "vector" editing.<br />
* Cut mode where erasing acts similar to erasing in a standard bitmap editor.<br />
<br />
Cut mode works for both selected and not selected objects.<br />
<br />
==Pen and Pencil==<br />
<br />
[spiro mode, straight line mode in pen]<br />
<br />
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].<br />
<br />
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.)<br />
<br />
==Text tool==<br />
<br />
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).<br />
<br />
<br />
=Live path effects=<br />
== Notable bug fixes and effect changes==<br />
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:<br />
<br />
* The Pattern Along Path effect used to stretch the pattern across discontinuities. This has been fixed; now it treats a discontinuous path as a group of continuous paths and applied the effect separately to each.<br />
<br />
==New effects==<br />
<br />
* '''Sketch''': [JF Barraud]<br />
<br />
* '''von Koch''': [JF Barraud]<br />
<br />
* '''Knot''': [JF Barraud]<br />
<br />
* '''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]<br />
<br />
* '''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.<br />
<br />
: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. <br />
<br />
:To create a Spiro path, select any path and assign the "Spiro spline" 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:<br />
<br />
:* 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.<br />
<br />
:* 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.<br />
<br />
:* Half-smooth nodes - those with one Bezier handle collinear with a straight line segment on the other hand - become "left" or "right" 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.<br />
<br />
: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. <br />
<br />
:Some configurations of points do not converge and produce wild loops and spirals instead of a smooth curve. According to Raph, "The spline solver in this release is _not_ numerically robust. When you start drawing random points, you'll quickly run into divergence. However, "sensible" plates based on real fonts usually converge." Avoid too sharp changes in direction between points to prevent divergence. Hopefully, the robustness of the algorithm will be improved in future releases.<br />
<br />
: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 as it is a distraction. 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. <br />
<br />
: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.<br />
<br />
* '''Construct Grid''' [johan]<br />
<br />
* '''Perpendicular bisector''' [max]<br />
<br />
* '''AngleBisector''' [max]<br />
<br />
* '''Tangent to a curve''' [max]<br />
<br />
* '''Circle through 3 points''' [max]<br />
<br />
* '''Circle with radius''' [max]<br />
<br />
* '''Envelope Deformation''' allows the user to deform an object (or a group of object) by deforming its sides. Modifications are done by deforming the 4 Path parameters : Top and Bottom, Left and Right.<br />
<br />
* '''Lattice Deformation''' allows the user to deform an object (or a group of object) by moving 16 control points.<br />
<br />
* '''Ruler''': [max]<br />
<br />
* '''Freehand Shape''': [max]<br />
<br />
* '''Interpolate Subpaths''': [Johan]<br />
<br />
* '''Path Length''': [max]<br />
<br />
* '''Text Label''': [max]<br />
<br />
==New features==<br />
* 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.<br />
<br />
* A new command, '''Remove path effect''' removes any path effects from all selected objects, going recursively into groups if necessary. <br />
<br />
* 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.<br />
<br />
* Live path effects can now be assigned to the sides of a 3D box (use Ctrl+click to select individual sides).<br />
<br />
* 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.<br />
<br />
* Path type parameters can now link to existing shapes <b>and text</b>, like clones do. Now it is possible to use text as input for the Pattern Along Path effect for example!<br />
<br />
* 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]<br />
<br />
==Live Path Effects for groups==<br />
<br />
LPE can now be assigned to a group. For most LPE, the effect is applied recursively but for Bend Path or Deformations the result is more powerful : the distortion applies on the whole group. <br />
<br />
*You can as usual enter the group by double-clicking on it. <br />
*It applies recursively, this means that a LPE can be assigned to groups of groups <br />
*The Effect can be applied definitively with "Convert Object to path"<br />
<br />
==Live Path Effects stacking==<br />
<br />
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.<br />
<br />
=Import/Export=<br />
==PostScript and EPS import==<br />
<br />
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 ps2pdf from Ghostscript installation is in your PATH. On opening, you will see a preferences dialog which, for multipage PS files, allows you to select the page to open. <br />
<br />
==Corel DRAW files import==<br />
<br />
Now Inkscape can import more Corel DRAW files of following types:<br />
<br />
* Corel DRAW Compressed Exchange files (CCX)<br />
* Corel DRAW 7-X4 Template files (CDT)<br />
* Corel DRAW Presentation Exchange files (CMX)<br />
<br />
Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==sK1 files import==<br />
<br />
Inkscape uses UniConvertor to import sK1 files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==CGM import==<br />
<br />
Inkscape uses UniConvertor to import Computer Graphics Metafile (CGM) files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==PDF export==<br />
<br />
With PDF export, it is now possible to make the PDF page the size of the entire drawing, instead of the same as SVG page as before by the "Export drawing, not page" checkbox in PDF export options. Also, you can export a single object from a complex document to PDF if you specify the ID of that object in the "Limit export to the object with ID" field; the page of such PDF will be the same size as the bounding box of that object and will show only that object (all others will be hidden).<br />
<br />
The same capabilities are available from the command line by using <code>--export-area-drawing</code> and <code>--export-id=ID</code> parameters with <code>--export-pdf</code> (previously, they only worked for PNG export).<br />
<br />
==PDF import from the command line==<br />
<br />
Now you can use, for example,<br />
<br />
inkscape file.pdf --export-plain-svg=file.svg<br />
<br />
It will take the first page of the PDF and all the default import options, and save the result to SVG. (Before, it crashed because it tried to open the PDF import preferences dialog and could not do it in the command line mode.) If you try to import PDF without an <code>--export</code> command, it will show the prefs dialog as before and open the file in the UI.<br />
<br />
==HPGL export==<br />
<br />
Inkscape can now export to HPGL (Hewlett-Packard Graphics Language). It is a file format that is used for various cutters/plotters.<br />
<br />
==JavaFX export==<br />
<br />
[]<br />
<br />
==DXF export==<br />
<br />
DXF export is much faster than in previous versions.<br />
<br />
= Autosave =<br />
<br />
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).<br />
<br />
=Extension effects=<br />
==New and improved effects==<br />
<br />
* The new '''Arrange > 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.).<br />
* The improved '''Modify Path > Add Nodes''' extension now also allows segments to be divided into a given number of subsegments.<br />
* The new '''Render > Alphabet Soup''' extension is a vector rework of Matt Chrisholm's GPLed script [http://www.theory.org/artprojects/alphabetsoup/main.html]. Alphabet Soup randomly mashes glyph-elements together to make exotic looking text.<br />
* The new '''Render > 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.<br />
* The new '''Render > 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.<br />
* The new '''Text > Convert to Braille''' extension recodes English (or just Latin letters) text to [http://en.wikipedia.org/wiki/Braille Braille] code created for visually impaired people.<br />
* [preset filter effects]<br />
<br />
==API changes==<br />
<br />
While the "Live preview" checkbox is useful for most effects, for some it just does not make sense. Now, you can add the attribute <code>needs-live-preview="false"</code> in the <code>effect</code> element in the .inx file of the effect to suppress this checkbox for your effect.<br />
<br />
Parameters passed to extensions (via the <param> element) now have a new boolean attribute - <code>gui-hidden</code> 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.<br />
<br />
All '''.inx''' files are now properly formatted XML files with its own namespace of: <code><nowiki>http://www.inkscape.org/namespace/inkscape/extension</nowiki></code> and a Relax NG schema to define it. More information can be found in the [[Extensions]] Article.<br />
<br />
=SVG output=<br />
<br />
==Optimized CSS properties==<br />
<br />
As a file size optimization, Inkscape does not write into SVG some of the stroke properties if the object has stroke:none and some of the fill properties when it has fill:none. The only situation where this might affect you is if you remove stroke from an object and then turn it back on - the object will get the default stroke instead of the same it had before. <br />
<br />
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.<br />
<br />
Specifically, if stroke:none, the following properties do not get written to SVG:<br />
<br />
stroke-width<br />
stroke-linecap<br />
stroke-linejoin<br />
stroke-miterlimit<br />
stroke-opacity<br />
stroke-dasharray<br />
stroke-dashoffset<br />
<br />
Note that this does not include marker properties, which means you can still have markers on a path without visible stroke.<br />
<br />
If fill:none, the following properties do not get written to SVG:<br />
<br />
fill-opacity<br />
fill-rule<br />
<br />
==Optimized path data==<br />
<br />
In this version, the size of the path data written in the <code>d=</code> attribute of <code>path</code> elements is reduced by about 10%. Inkscape generates the shortest possible path strings by avoiding repeated operators and using relative coordinates (when it helps).<br />
<br />
This is controlled by the '''SVG output''' page of Inkscape Preferences dialog, as well as the following attributes in <code>group id="svgoutput"</code> in your preferences.xml file:<br />
<br />
* allowrelativecoordinates (default 1) to switch relative coordinates on (1) or off (0)<br />
* forcerepeatcommands (default 0) to force repeating operators (1) or allow use of the more compact representation without repeated operators (0)<br />
<br />
==No more explicit closing line segment==<br />
Inkscape used to always explicitly write the closing line segment to SVG for closed paths. For example: "M 0,0 L 1,0 L 1,1 L 0,1 L 0,0 z". With the improved SVG path data writing, Inkscape no longer generates this closing line segment, resulting in "M 0,0 L 1,0 L 1,1 L 0,1 z".<br />
When SVG path data input contains this explicit closing segment, it is maintained throughout transformations, but is removed after using the node edit tool.<br />
<br />
==Horizontal and vertical path segments==<br />
<br />
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.<br />
<br />
==<script> support==<br />
<br />
While Inkscape does not yet support SVG scripting via the <script> element, this element is now preserved after editing the file in Inkscape.<br />
<br />
=Other features=<br />
<br />
==Clipboard enhancements==<br />
<br />
The clipboard used by Inkscape is now system-wide instead of being confined to a single instance of the application. Copied elements are exported to the clipboard using all the available output formats. SVG data can be pasted into other applications supporting one of Inkscape's output formats, and SVG data provided by other applications can be pasted into Inkscape.<br />
<br />
If you copy a string that can be interpreted as a hexadecimal color specification, i.e. 2f7ab4 or #014522b0, and then paste it into Inkscape, the fill of the selected objects will change to the given color. This is especially useful when working with HTML pages.<br />
<br />
==Masks and clipping paths==<br />
<br />
[editable in node tool - johan]<br />
<br />
==Stroke width changeable by dragging==<br />
<br />
[bbyak]<br />
<br />
==Enhanced tablet support==<br />
<br />
===Input device tool switching===<br />
<br />
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.<br />
<br />
===Extended input device configuration===<br />
<br />
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.<br />
<br />
Additionally hardware setup itself has been separated from general settings to allow for easier dynamic switching of settings appropriate to the task at hand.<br />
<br />
==Layers==<br />
<br />
===Show/hide other layers===<br />
<br />
The layers dialog now allows for hiding or showing all layers other than the current layer. This "solo" feature allows for faster switching between working layers and for quick checking with and without others shown.<br />
<br />
===Duplicate Layer command===<br />
<br />
A new command has been added to the layers menus to allow for duplicating an existing layer with all of its objects.<br />
<br />
==External image editing and reload==<br />
<br />
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 can be controlled by user preferences.<br />
<br />
==Command for relinking clones==<br />
<br />
A new command, '''Relink Clone to Copied''' in ''Edit > 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.<br />
<br />
==Auto relinking clones on Duplicate==<br />
<br />
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.<br />
<br />
==Pattern editing==<br />
<br />
When editing pattern fills:<br />
* The pattern origin and scale handles now snap.<br />
* The pattern scaling can now be different in X and Y direction. Press '''Ctrl''' to have a fixed 1:1 ratio scaling (old behavior).<br />
* 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.<br />
<br />
==Transform dialog: spacing out option==<br />
<br />
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 "Relative move" is on, each object is shifted relative to the closest selected object on the left (for X) or below (for Y). <br />
<br />
For example, if you have a horizontal row of objects and you move them relatively by X=5px with "Apply to each object separately" 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). <br />
<br />
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.<br />
<br />
<br />
=User interface=<br />
<br />
==Filters can be disabled==<br />
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 "normal" and "outline" view modes.<br />
<br />
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.<br />
<br />
==Native file dialogs for Windows==<br />
The windows builds of inkscape now have Windows-native file dialogs to keep consistency with other windows applications.<br />
<br />
==Inkscape Preferences dialog==<br />
<br />
This dialog has been rearranged for more logical grouping of options. New pages has 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). <br />
<br />
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.<br />
<br />
==Dropper tool==<br />
<br />
The confusing icons on buttons in the controls bar of the Dropper tool (pick/assign opacity) are replaced by text labels.<br />
<br />
==Swatches==<br />
<br />
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 to show a tool tip is difficult.<br />
<br />
==Toolbars==<br />
<br />
* The toolbar icon sizes for the three main toolbars are now separately configurable and to a few different sizes. This allows users to get a smaller UI on certain systems, including Ubuntu.<br />
<br />
* 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.<br />
<br />
* When torn off, toolbars now keep the size they last had in the main window. They can be resized by docking, sizing the main window, and then undocking agin.<br />
<br />
* 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.<br />
<br />
==Title and Description==<br />
<br />
* [the Title and Description fields on the Object Properties dialog - sas]<br />
<br />
==Clone/original visualization==<br />
<br />
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.<br />
<br />
=Grids, guides, snapping=<br />
<br />
==Grids==<br />
* The dotted rectangular grid now shows small crosses at the intersection points of emphasis lines.<br />
<br />
==Guides==<br />
<br />
There is now an option to treat groups as single objects during conversion to guides (as opposed to converting each object inside the group separately).<br />
<br />
==Snapping==<br />
Snapping has been implemented or improved in these areas:<br />
* The '''node tool''' now snaps to any unselected node (cusp or smooth) within the path that's being edited, and to cusp nodes of other paths. It also snaps to the path itself, but only to the stationary segments in between two unselected nodes. It is now also possible to snap while moving nodes along a vertical or horizontal constraint<br />
* '''Clipping paths and masks''' are now also snappable<br />
* The object snapper now also allows to snap to the '''page border'''<br />
* In the selector tool, snapping while '''skewing ''' or '''constrained translating''' have been improved<br />
* When creating '''new shapes''', all of their handle points now snap<br />
* In the document properties dialog, the checkbox for ''' 'always'''' snap has been replaced by two radiobuttons; this should eliminate most of the confusion surrounding this option<br />
* Holding the shift-key now also disables snapping while dragging '''node-handles'''<br />
* The code relating to the snapping mechanisms has undergone '''major refactoring''' to make it more reliable and easier to use from a developer's perspective<br />
* Snapping to objects now uses routines from the '''2geom libraries''', which are actively maintained and are less error prone than the old Livarot libraries. This fixes at least two known snapping bugs<br />
* While drawing and '''constraining to specific angles''' (using CTRL), Inkscape should now only snap to points on the constrained line.<br />
<br />
==Snap indicator==<br />
When snapping has occurred, an indicator is displayed at that specific position. For now that indicator is just a cross that disappears in a second. In the future the shape of the indicator will be related to the type of target that has been snapped to. The snapping indicator can be disabled in the Document Properties dialog.<br />
<br />
=Notable bug fixes=<br />
<br />
* 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 "Filter general settings" tab of the Filter Effects dialog.<br />
<br />
: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 bbox for selection of the export area; this means that you can now export a blurred object to bitmap without any clipping of the blur.<br />
<br />
* Several fixes allows Inkscape to correctly render and edit SVG files that use <code>currentColor</code> in objects' style (this includes files created by gnuplot).<br />
<br />
* '''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.<br />
<br />
* '''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).<br />
<br />
* File dialogs remember last visited directory<br />
<br />
* No more garbage lines in outline mode <br />
<br />
* No more artifacts left by the circle cursor in Tweak tool<br />
<br />
* The Live Path Effects '''Bend Path''' and '''Pattern along Path''' now work correctly with closed paths.<br />
<br />
= Previous releases =<br />
<br />
* [[ReleaseNotes046]]<br />
* [[ReleaseNotes045]]<br />
* [[ReleaseNotes044]]<br />
* [[ReleaseNotes043]]<br />
* [[ReleaseNotes042]]<br />
* [[ReleaseNotes041]]<br />
* [[ReleaseNotes040]]<br />
* [[ReleaseNotes039]]<br />
* [[ReleaseNotes038]]<br />
* [[ReleaseNotes037]]<br />
* [[ReleaseNotes036]]<br />
* [[ReleaseNotes035]]<br />
<br />
[[Category:Marketing]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&diff=33404Release notes/0.472008-08-02T16:38:25Z<p>Cilix: /* Pen and Pencil */</p>
<hr />
<div>=Inkscape 0.47= <br />
'''(not released yet)'''<br />
<br />
=Refactoring effort=<br />
[mention the 'main' goal of 0.47 and list which things have been refactored and the benefits/new features/different workflow? --johan]<br />
<br />
- ratio of code lines and comment lines (difference with 0.46)<br />
<br />
- number of fixme's and todo's (difference with 0.46)<br />
<br />
- cairo<br />
<br />
- speed improvement? (LPE? bootup?)<br />
<br />
=Tools=<br />
<br />
==Node tool==<br />
<br />
* [helper path display, flashing - johan]<br />
* 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).<br />
* Snapping has been improved (more details in Snapping below)<br />
* When dragging a node '''handle with Ctrl''', 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).<br />
* The behavior of the buttons/shortucts that make a node smooth or cusp has been improved:<br />
:* If a node is already 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.<br />
:* 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.<br />
* Pattern editing<br />
:* The pattern origin and scale nodes now snap.<br />
:* The pattern scaling can now be different in X and Y direction.<br />
:* The nodes now display the outline of the unit cell, instead of only a quarter of that cell. So now, a rectangle filled with pattern will have all of the pattern knots in the corners, making it harder to manipulate them. However, the nodes can be dragged outside the rectangle by moving the pattern's origin point.<br />
<br />
==Calligraphy tool ==<br />
<br />
[presets - Aubanel]<br />
<br />
==Paint Bucket tool==<br />
* Paint Bucket is now more tightly integrated with potrace. As a result, memory and CPU usage on each fill operation have been reduced significantly.<br />
<br />
==Eraser Tool==<br />
A new eraser tool has been added. It has two main modes:<br />
<br />
* Delete-mode where any shape touched by the tool is deleted completely. This operation is in line with "vector" editing.<br />
* Cut mode where erasing acts similar to erasing in a standard bitmap editor.<br />
<br />
Cut mode works for both selected and not selected objects.<br />
<br />
==Pen and Pencil==<br />
<br />
[spiro mode, straight line mode in pen]<br />
<br />
It is now possible to automatically apply predefined vector brushes to path strokes in pen and pencil tools. This is a first step towards the following blueprint: [[http://wiki.inkscape.org/wiki/index.php/Vector-brushes]]<br />
<br />
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.)<br />
<br />
==Text tool==<br />
<br />
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).<br />
<br />
=Transform dialog=<br />
<br />
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 "Relative move" is on, each object is shifted relative to the closest selected object on the left (for X) or below (for Y). <br />
<br />
For example, if you have a horizontal row of objects and you move them relatively by X=5px with "Apply to each object separately" 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). <br />
<br />
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.<br />
<br />
=Live path effects=<br />
== Notable bug fixes and effect changes==<br />
We try to refrain from changing the behavior of LPE's, because it will change appearance in old files when opened in Inkscape¹. But when an effect is really broken, we have to fix it.<br />
<br />
[¹ fixme: Shouldn't the above say "it will change editing behaviour in old files" ? If it changes the appearance, then that's a bug: inkscape should always save SVG that represents the appearance, and should display according to the SVG rather than any inkscape:blah annotations. --pjrm <br><br />
What is meant is the following. Files with LPEs opened in a random viewer will always look the same, regardless of Inkscape version. However, when viewed in Inkscape, the LPE is recalculated. When LPE behavior changes, the appearance will change. --johan]<br />
<br />
* The Pattern Along Path effect used to stretch the pattern across discontinuities. This has been fixed; now it treats a discontinuous path as a group of continuous paths and applied the effect separately to each.<br />
<br />
==New effects==<br />
<br />
* '''Sketch''': [Johan Engelen]<br />
<br />
* '''von Koch''': [JF Barraud]<br />
<br />
* '''Knot''': [JF Barraud]<br />
<br />
* '''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]<br />
<br />
* '''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.<br />
<br />
: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. <br />
<br />
:To create a Spiro path, select any path and assign the "Spiro spline" 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:<br />
<br />
:* 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.<br />
<br />
:* 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.<br />
<br />
:* Half-smooth nodes - those with one Bezier handle collinear with a straight line segment on the other hand - become "left" or "right" 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.<br />
<br />
: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. <br />
<br />
:Some configurations of points do not converge and produce wild loops and spirals instead of a smooth curve. According to Raph, "The spline solver in this release is _not_ numerically robust. When you start drawing random points, you'll quickly run into divergence. However, "sensible" plates based on real fonts usually converge." Avoid too sharp changes in direction between points to prevent divergence. Hopefully, the robustness of the algorithm will be improved in future releases.<br />
<br />
: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 as it is a distraction. 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. <br />
<br />
: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.<br />
<br />
* '''Construct Grid''' [johan]<br />
<br />
* '''Perpendicular bisector''' [max]<br />
<br />
* '''AngleBisector''' [max]<br />
<br />
* '''Tangent to a curve''' [max]<br />
<br />
* '''Circle through 3 points''' [max]<br />
<br />
* '''Circle with radius''' [max]<br />
<br />
* '''Envelope Deformation''' allows the user to deform an object (or a group of object) by deforming its sides. Modifications are done by deforming the 4 Path parameters : Top and Bottom, Left and Right.<br />
<br />
* '''Lattice Deformation''' allows the user to deform an object (or a group of object) by moving 16 control points.<br />
<br />
* '''Ruler''': [max]<br />
<br />
* '''Freehand Shape''': [max]<br />
<br />
* '''Interpolate Subpaths''': [Johan]<br />
<br />
* '''Path Length''': [max]<br />
<br />
* '''Text Label''': [max]<br />
<br />
==New features==<br />
* 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.<br />
<br />
* A new command, '''Remove path effect''' removes any path effects from all selected objects, going recursively into groups if necessary. <br />
<br />
* 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.<br />
<br />
* Live path effects can now be assigned to the sides of a 3D box (use Ctrl+click to select individual sides).<br />
<br />
* 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.<br />
<br />
* Path type parameters can now link to existing shapes <b>and text</b>, like clones do. Now it is possible to use text as input for the Pattern Along Path effect for example!<br />
<br />
* 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]<br />
<br />
==Live Path Effects for groups==<br />
<br />
LPE can now be assigned to a group. For most LPE, the effect is applied recursively but for Bend Path or Deformations the result is more powerful : the distortion applies on the whole group. <br />
<br />
*You can as usual enter the group by double-clicking on it. <br />
*It applies recursively, this means that a LPE can be assigned to groups of groups <br />
*The Effect can be applied definitively with "Convert Object to path"<br />
<br />
==Live Path Effects stacking==<br />
<br />
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.<br />
<br />
=Import/Export=<br />
==PostScript and EPS import==<br />
<br />
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 ps2pdf from Ghostscript installation is in your PATH. On opening, you will see a preferences dialog which, for multipage PS files, allows you to select the page to open. <br />
<br />
==Corel DRAW files import==<br />
<br />
Now Inkscape can import more Corel DRAW files of following types:<br />
<br />
* Corel DRAW Compressed Exchange files (CCX)<br />
* Corel DRAW 7-X4 Template files (CDT)<br />
* Corel DRAW Presentation Exchange files (CMX)<br />
<br />
Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==sK1 files import==<br />
<br />
Inkscape uses UniConvertor to import sK1 files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==CGM import==<br />
<br />
Inkscape uses UniConvertor to import Computer Graphics Metafile (CGM) files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==PDF export==<br />
<br />
With PDF export, it is now possible to make the PDF page the size of the entire drawing, instead of the same as SVG page as before by the "Export drawing, not page" checkbox in PDF export options. Also, you can export a single object from a complex document to PDF if you specify the ID of that object in the "Limit export to the object with ID" field; the page of such PDF will be the same size as the bounding box of that object and will show only that object (all others will be hidden).<br />
<br />
The same capabilities are available from the command line by using <code>--export-area-drawing</code> and <code>--export-id=ID</code> parameters with <code>--export-pdf</code> (previously, they only worked for PNG export).<br />
<br />
==PDF import from the command line==<br />
<br />
Now you can use, for example,<br />
<br />
inkscape file.pdf --export-plain-svg=file.svg<br />
<br />
It will take the first page of the PDF and all the default import options, and save the result to SVG. (Before, it crashed because it tried to open the PDF import preferences dialog and could not do it in the command line mode.) If you try to import PDF without an <code>--export</code> command, it will show the prefs dialog as before and open the file in the UI.<br />
<br />
==HPGL export==<br />
<br />
Inkscape can now export to HPGL (Hewlett-Packard Graphics Language). It is a file format that is used for various cutters/plotters.<br />
<br />
==JavaFX export==<br />
<br />
[]<br />
<br />
==DXF export==<br />
<br />
DXF export is much faster than in previous versions.<br />
<br />
= Autosave =<br />
<br />
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).<br />
<br />
=Extension effects=<br />
==New and improved effects==<br />
<br />
* The new '''Arrange > 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.).<br />
* The improved '''Modify Path > Add Nodes''' extension now also allows segments to be divided into a given number of subsegments.<br />
* The new '''Render > Alphabet Soup''' extension is a vector rework of Matt Chrisholm's GPLed script [http://www.theory.org/artprojects/alphabetsoup/main.html]. Alphabet Soup randomly mashes glyph-elements together to make exotic looking text.<br />
* The new '''Render > 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.<br />
* The new '''Render > 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.<br />
* The new '''Text > Convert to Braille''' extension recodes English (or just Latin letters) text to [http://en.wikipedia.org/wiki/Braille Braille] code created for visually impaired people.<br />
* [preset filter effects]<br />
<br />
==API changes==<br />
<br />
While the "Live preview" checkbox is useful for most effects, for some it just does not make sense. Now, you can add the attribute <code>needs-live-preview="false"</code> in the <code>effect</code> element in the .inx file of the effect to suppress this checkbox for your effect.<br />
<br />
Parameters passed to extensions (via the <param> element) now have a new boolean attribute - <code>gui-hidden</code> 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.<br />
<br />
All '''.inx''' files are now properly formatted XML files with its own namespace of: <code><nowiki>http://www.inkscape.org/namespace/inkscape/extension</nowiki></code> and a Relax NG schema to define it. More information can be found in the [[Extensions]] Article.<br />
<br />
=SVG output=<br />
<br />
==Optimized CSS properties==<br />
<br />
As a file size optimization, Inkscape does not write into SVG some of the stroke properties if the object has stroke:none and some of the fill properties when it has fill:none. The only situation where this might affect you is if you remove stroke from an object and then turn it back on - the object will get the default stroke instead of the same it had before. <br />
<br />
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.<br />
<br />
Specifically, if stroke:none, the following properties do not get written to SVG:<br />
<br />
stroke-width<br />
stroke-linecap<br />
stroke-linejoin<br />
stroke-miterlimit<br />
stroke-opacity<br />
stroke-dasharray<br />
stroke-dashoffset<br />
<br />
Note that this does not include marker properties, which means you can still have markers on a path without visible stroke.<br />
<br />
If fill:none, the following properties do not get written to SVG:<br />
<br />
fill-opacity<br />
fill-rule<br />
<br />
==Optimized path data==<br />
<br />
In this version, the size of the path data written in the <code>d=</code> attribute of <code>path</code> elements is reduced by about 10%. Inkscape generates the shortest possible path strings by avoiding repeated operators and using relative coordinates (when it helps).<br />
<br />
This is controlled by the '''SVG output''' page of Inkscape Preferences dialog, as well as the following attributes in <code>group id="svgoutput"</code> in your preferences.xml file:<br />
<br />
* allowrelativecoordinates (default 1) to switch relative coordinates on (1) or off (0)<br />
* forcerepeatcommands (default 0) to force repeating operators (1) or allow use of the more compact representation without repeated operators (0)<br />
<br />
==No more explicit closing line segment==<br />
Inkscape used to always explicitly write the closing line segment to SVG for closed paths. For example: "M 0,0 L 1,0 L 1,1 L 0,1 L 0,0 z". With the improved SVG path data writing, Inkscape no longer generates this closing line segment, resulting in "M 0,0 L 1,0 L 1,1 L 0,1 z".<br />
When SVG path data input contains this explicit closing segment, it is maintained throughout transformations, but is removed after using the node edit tool.<br />
<br />
==Horizontal and vertical path segments==<br />
<br />
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.<br />
<br />
==<script> support==<br />
<br />
While Inkscape does not yet support SVG scripting via the <script> element, this element is now preserved after editing the file in Inkscape.<br />
<br />
=Other features=<br />
<br />
==Clipboard enhancements==<br />
<br />
The clipboard used by Inkscape is now system-wide instead of being confined to a single instance of the application. Copied elements are exported to the clipboard using all the available output formats. SVG data can be pasted into other applications supporting one of Inkscape's output formats, and SVG data provided by other applications can be pasted into Inkscape.<br />
<br />
If you copy a string that can be interpreted as a hexadecimal color specification, i.e. 2f7ab4 or #014522b0, and then paste it into Inkscape, the fill of the selected objects will change to the given color. This is especially useful when working with HTML pages.<br />
<br />
==Masks and clipping paths==<br />
<br />
[editable in node tool - johan]<br />
<br />
==Stroke width changeable by dragging==<br />
<br />
[bbyak]<br />
<br />
==Enhanced Tablet Support==<br />
<br />
===Input device tool switching===<br />
<br />
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.<br />
<br />
===Extended input device configuration===<br />
<br />
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.<br />
<br />
Additionally hardware setup itself has been separated from general settings to allow for easier dynamic switching of settings appropriate to the task at hand.<br />
<br />
==Layers==<br />
<br />
===Show/hide other layers===<br />
<br />
The layers dialog now allows for hiding or showing all layers other than the current layer. This "solo" feature allows for faster switching between working layers and for quick checking with and without others shown.<br />
<br />
===Duplicate layer===<br />
<br />
Commands have been added to the layers menus to allow for duplicating an existing layer.<br />
<br />
==External image editing and reload==<br />
<br />
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 can be controlled by user preferences.<br />
<br />
==Relinking clones==<br />
<br />
A new command, '''Relink Clone to Copied''' in ''Edit > 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.<br />
<br />
=User interface=<br />
<br />
==Filters can be disabled==<br />
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 "normal" and "outline" view modes.<br />
<br />
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.<br />
<br />
==Native file dialogs for Windows==<br />
The windows builds of inkscape now have Windows-native file dialogs to keep consistency with other windows applications.<br />
<br />
==Inkscape Preferences dialog==<br />
<br />
This dialog has been rearranged for more logical grouping of options. New pages has 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). <br />
<br />
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.<br />
<br />
==Dropper tool==<br />
<br />
The confusing icons on buttons in the controls bar of the Dropper tool (pick/assign opacity) are replaced by text labels.<br />
<br />
==Swatches==<br />
<br />
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 to show a tool tip is difficult.<br />
<br />
==Toolbars==<br />
<br />
* The toolbar icon sizes for the three main toolbars are now separately configurable and to a few different sizes. This allows users to get a smaller UI on certain systems, including Ubuntu.<br />
<br />
* 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.<br />
<br />
* When torn off, toolbars now keep the size they last had in the main window. They can be resized by docking, sizing the main window, and then undocking agin.<br />
<br />
* 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.<br />
<br />
* [the Title and Description fields on the Object Properties dialog - sas]<br />
<br />
=Grids, guides, snapping=<br />
<br />
==Grids==<br />
* The dotted rectangular grid now shows small crosses at the intersection points of emphasis lines.<br />
<br />
==Guides==<br />
<br />
There is now an option to treat groups as single objects during conversion to guides (as opposed to converting each object inside the group separately).<br />
<br />
==Snapping==<br />
Snapping has been implemented or improved in these areas:<br />
* The '''node tool''' now snaps to any unselected node (cusp or smooth) within the path that's being edited, and to cusp nodes of other paths. It also snaps to the path itself, but only to the stationary segments in between two unselected nodes. It is now also possible to snap while moving nodes along a vertical or horizontal constraint<br />
* '''Clipping paths and masks''' are now also snappable<br />
* The object snapper now also allows to snap to the '''page border'''<br />
* In the selector tool, snapping while '''skewing ''' or '''constrained translating''' have been improved<br />
* When creating '''new shapes''', all of their handle points now snap<br />
* In the document properties dialog, the checkbox for ''' 'always'''' snap has been replaced by two radiobuttons; this should eliminate most of the confusion surrounding this option<br />
* Holding the shift-key now also disables snapping while dragging '''node-handles'''<br />
* The code relating to the snapping mechanisms has undergone '''major refactoring''' to make it more reliable and easier to use from a developer's perspective<br />
<br />
==Snap indicator==<br />
When snapping has occurred, an indicator is displayed at that specific position. For now that indicator is just a cross that disappears in a second. In the future the shape of the indicator will be related to the type of target that has been snapped to. The snapping indicator can be disabled in the Document Properties dialog.<br />
<br />
=Notable bug fixes=<br />
<br />
* 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 "Filter general settings" tab of the Filter Effects dialog.<br />
<br />
: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 bbox for selection of the export area; this means that you can now export a blurred object to bitmap without any clipping of the blur.<br />
<br />
* Several fixes allows Inkscape to correctly render and edit SVG files that use <code>currentColor</code> in objects' style (this includes files created by gnuplot).<br />
<br />
* '''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.<br />
<br />
* '''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).<br />
<br />
* File dialogs remember last visited directory<br />
<br />
* No more garbage lines in outline mode <br />
<br />
* No more artifacts left by the circle cursor in Tweak tool<br />
<br />
= Previous releases =<br />
<br />
* [[ReleaseNotes046]]<br />
* [[ReleaseNotes045]]<br />
* [[ReleaseNotes044]]<br />
* [[ReleaseNotes043]]<br />
* [[ReleaseNotes042]]<br />
* [[ReleaseNotes041]]<br />
* [[ReleaseNotes040]]<br />
* [[ReleaseNotes039]]<br />
* [[ReleaseNotes038]]<br />
* [[ReleaseNotes037]]<br />
* [[ReleaseNotes036]]<br />
* [[ReleaseNotes035]]<br />
<br />
[[Category:Marketing]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Working_with_2Geom_FAQ&diff=31194Working with 2Geom FAQ2008-07-01T17:05:49Z<p>Cilix: /* How to convert from Path to pwd2 to d2pw to path and back? */</p>
<hr />
<div>== Introduction ==<br />
<br />
Questions that arise during coding with 2geom are put here. To see other 2geom related questions go to the general [[lib2geom FAQ]]. Bugs can be reported at SF: [http://sourceforge.net/tracker/?group_id=167845&atid=844560 2geom bug tracker].<br />
<br />
== Questions ==<br />
<br />
===How to create a straight line (for types: Path, pwd2, d2pw)?===<br />
Path p;<br />
p.appendNew<LineSegment>(a, b);<br />
<br />
Piecewise<D2<SBasis> > pwd2 = Piecewise<D2<SBasis> >(D2<SBasis>(Linear(a[X], b[X]), Linear(a[Y], b[Y])));<br />
<br />
===How to convert from Path to pwd2 to d2pw to path and back?===<br />
<br />
D2<Piecewise<SBasis> > y;<br />
Piecewise<D2<SBasis> > x;<br />
Path p;<br />
//Assume the above vars are initialized<br />
x = p.toPwSb();<br />
y = make_cuts_independant(x); // pwd2 -> d2pw<br />
x = sectionize(y); // d2pw -> pwd2<br />
p = path_from_piecewise(x, tolerance); // pw2d -> path<br />
<br />
How do i convert from d2pw to path?<br />
<br />
===How do I calculate the bounding box of a path?===<br />
<br />
Rect r = path.boundsFast(); <br />
or<br />
Rect r = path.boundsExact();<br />
<br />
===How do I convert 2geom to svgd and back?===<br />
#include "live_effects/n-art-bpath-2geom.h"<br />
...<br />
std::vector<Geom::Path> path_2geom;<br />
gchar * svgd = SVGD_from_2GeomPath( path_2geom );<br />
std::vector<Geom::Path> newpath_2geom = SVGD_to_2GeomPath(svgd);<br />
g_free(svgd);<br />
<br />
<br />
===How do I convert from Inkscape paths to 2geom paths?===<br />
#include "live_effects/n-art-bpath-2geom.h"<br />
...<br />
NArtBpath * path_in;<br />
std::vector<Geom::Path> path_2geom = BPath_to_2GeomPath(path_in);<br />
NArtBpath *new_bpath = BPath_from_2GeomPath(path_2geom);<br />
<br />
===How do I convert from Inkscape points to 2geom points?===<br />
Geom::Point p_2geom(NR_HUGE, NR_HUGE);<br />
NR::Point t(p_2geom);<br />
Geom::Point pother_2geom = t.to_2geom();<br />
<br />
===What does "compose" do?===<br />
[http://en.wikipedia.org/wiki/Function_composition Compose] is the mathematical operation f(?) o g(?) = f(g(?)). Any transformation, be it translation or mesh distort, can be considered a composition of the original path P(t)->(u,v) and a function T(u,v)->(x,y) which takes each point in the plane to a new point. We write this transformation as compose(T, P). For examples of such composition at work look at the toys<br />
<br />
* '2dsb2d', which composes the path with a polynomial mesh function called a coons patch<br />
* 'plane3d', which composes the path with a 3d projection onto a plane surface<br />
* 'center-warp', which shows how repeated composition produces the tweak tool effect<br />
* 'path-along-path' which shows how composition allows mapping a shape along a path<br />
<br />
===A dot product ?===<br />
the dot() function is here for you.<br />
point1 = Geom::Point(10,2);<br />
point2 = Geom::Point(0,1);<br />
dot(point1,point2); // = 2<br />
<br />
<br />
2Geom provides various compose operations for functions representable using piecewise sbasis functions, as well the ability to compose arbitrary functions defined directly in code. All the mathematics is performed in sbasis space.</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Lpe-blueprint&diff=30414Lpe-blueprint2008-06-08T18:21:28Z<p>Cilix: /* Perspective */</p>
<hr />
<div>''''Live path effects' blue print proposal.'''<br />
<br />
----<br />
<br />
This page aims at gathering propositions about what the (eventually long term) future of live path effects could be. The goal is to have better view of what could be done, what is hard, what is easy, what is worth and what is not,<br />
list possible alternatives, etc...<br />
Please add your comment and propositions!<br />
<br />
Some of this already exists : see the great [http://wiki.inkscape.org/wiki/index.php/MakingLivePathEffects#Current_Projects projects] currently under developpement!<br />
<br />
<br />
==Live Path Effect alias Modifier stack==<br />
This is a rather long term proposition, formulated from the Features and UI point of view. The basic observation is that it is natural to have several successive live path effects applied to the same object, leading to an effect stack. The proposition below mimics the modifier stack found in most 3D software. <br />
As it is also natural to allow sophisticated objects (groups, or objects carrying effects on their own) as input, edition of nested effects can become tricky (consider for instance non destructive boolean operation of two objects, both carrying effects). This proposition tries to address this point.<br />
<br />
To end this introduction, consider the two baby cases below, trying to illustrate the need of "rich objects" (i.e. full svg data) both as input paramters and output.<br />
<br />
<center>[[Image:lpe_need_rich_input.png]]</center><br />
<br />
The first example shows a boolean operation (difference) of two objects, but the second one recieves a small offset before doing the difference. This kind of "outline" appears frequently in logo design. Notice that both operand carry an effect. For this operation to be non destructive, stacking of effects should be possible not only on one root object, but also on input parameters. Suppose it's not the case: should the sun be the main input of a "boolean-operation" effect, would the offset width be lost (i.e. not editable anymore); should it be the cloud would the pattern-along-path be lost. <br />
<br />
<center>[[Image:lpe_need_rich_output.png]]</center><br />
<br />
This second example is about lpe output: alowing full svg data would widely enlarge the range of possibilities, for instance deforming colorfull objects (notice this already possible using [http://wiki.inkscape.org/wiki/index.php/LPE_for_groups lpe on groups]!!), or interpolate between styles at the same time as shapes. <br />
<br />
<br />
<br />
===Effect stack: features and UI===<br />
<br />
Steren : A team of french students is currently implementing this, see [[LPE_stacking]].<br />
<br />
====General usage====<br />
A side panel is dedicated to the effect stack. On the top is displayed <br />
the stack itself, and below the parameters of particular effects.<br />
The picture below summerizes the main features of the stack area.<br />
<br />
A side panel is dedicated to the effect stack. On the top is displayed <br />
the stack itself, and below the parameters of particular effects.<br />
The picture below summerizes the main features of the stack area. <br />
<br />
[[Image:lpestack.png]]<br />
<br />
The full stack can be navigated and any effect in the stack can be selected to <br />
become active. The pannel below the stack displays the active effects <br />
parameters. In the main window (the canvas), the output of the active effect <br />
is displayed (ideally, a button near the stack toggles wether the stack is<br />
blocked at the active level, or runs to its end)<br />
<br />
*The stack can be collapsed (1) from the active effect to the original shape. The output of the active effect becomes the new original shape.<br />
*Each effect can be temporariliy (4) bypassed to save performance and interactivity<br />
*Effects can be draged and droped to reorganize the stack<br />
*Effects can copied, pasted, cloned (i.e. shared) between objects (6). Shared effects can be made unique (3).<br />
*Effects names (i.e. svg id attribute) can be edited.<br />
<br />
====Sublevel navigation====<br />
<br />
Some effect use other objects (paths, groups...) as parameters. In this case, <br />
the line of the effect in the stack can be expanded to show the list of all <br />
object parameters (see fig. 2).<br />
<br />
[[Image:lpestackeditmode.png]]<br />
<br />
As such objects might be "virtual" (i.e. not available on the canvas) and<br />
complex (typically groups of objects carrying effects on their own),<br />
an edit mode is needed for such objects that goes beyond the node editor: <br />
all operations (style, z-order, path effects...) should be availble. <br />
<br />
To this end, selecting an object parameter in the effect stack enters edit mode<br />
for that object: its own effect stack is inserted in the global stack(bracketed<br />
with easily identified color), and each level of it can be edited normally (in particular, deeper object parameters might be recursively edited). <br />
<br />
Edit mode exits when the effect is not active anymore, i.e.<br />
*another object parameter is selected, <br />
*the list of object parameters is closed, <br />
*another effect is selected, <br />
*the object is deselected. <br />
(for convenience, a level in the stack could be pined, to avoid non intentional exits).<br />
<br />
'''Note:''' For groups, the first line in the stack should be a "group" pseudo effect, meant to allow selection of objects within the group.<br />
<br />
===An alternative: effect stack within object browser===<br />
Sooner or later, we will have an object browser (more user oriented than the xml browser). If we manage to make it effect-aware, all this should be in fact included in the object browser...<br />
Object carrying effects would have a special icon as child; clicking it would expand the effect stack, and in turn, each effect would have its parameter objects as childs... <br />
<br />
<br />
===Generic effect: features and UI===<br />
This section describes the general features desired for lpes.<br />
<br />
*input:<br />
**use any object as input(s): groups, clones, text... </li> (Steren : the french students are currently implementing this, see [[LPE_for_groups]]).<br />
**check restrictions for input, and eventually warn the user (eg. accept only connected paths...)<br />
**object paramters are picked with the mouse, and copied, cloned, or moved into the effect according to user choice (see fig. 1).<br />
**be aware of the style of the inputs.<br />
*output:<br />
**can output full svg data,<br />
**recieves an extra selection of the input (a list of objects, path componenents or nodes(?) of the input) to restrict, if possible, the effect to this selection. Outputs the relevant selection, for the eventual next effect.<br />
*interaction:<br />
**can perform all inkscape operations on the active object (node-edition, z-order, insert new lpe, etc...)<br />
**pick buttons<br />
**fancy "tools": can display it's own temporary objects for user interaction purpose, and define how to react to selection/edition of such objects with the node tool.<br />
<br />
===Particular effects: per effect specifications===<br />
<br />
====Boolean operation====<br />
Non destructive operation are usefull. Use Mgsloan work on 2geom-intersection here!<br />
<br />
====Transform effect====<br />
Applies a transform matrix to the object; automatically added before a new <br />
effect if the object has a non empty transform attribute. This is needed since<br />
transforms and effects do not commute in general...<br />
<br />
====Style effect====<br />
Applies a given style to the object; added automatically when a new style is<br />
applied to an object with non empty stack. Usefull to overwrite the default <br />
style produced by other effects. Should allow to set the priority of each<br />
style component (replace old style, replace only if not set...)<br />
<br />
====Selector====<br />
This effect selects a part of the input. It has 3 modes:<br />
*object level: selects object(s) within a group.<br />
*path level: selects component(s) within a path.<br />
*[node level: selects node(s) within a path.](? --- delicate)<br />
<br />
The subsequent effects should work on this selection, and leave everything else <br />
unchanged. (usefull to apply different effects to different step of an interpolate effect for instance)<br />
<br />
Notice that whenever the stack is modified before this effect, the user should be warned that this modifier depends on the "topology" of the input...<br />
<br />
====Pattern along path====<br />
*Take a group as pattern, and set the style of the output according to it, to allow color full pattern stroke.<br />
*Allow space between copies, normal and tangential offsets.<br />
*Add an option to fuse nearby ends (to allow gluing of the successive patterns into a single connected path for instance)(?)<br />
*Option to leave the original shape in the output(?) (to allow filling of the area)<br />
*Use another pattern for the "corners"(?) <br />
<br />
====Offset====<br />
Dynmical offset could naturally be turned into an effect (it is not compatible with lpe at the moment).<br />
<br />
====Fillet/champfer====<br />
Add specification here!<br />
<br />
====Thick/Thin strokes====<br />
Add specification here!<br />
<br />
====Interpolate====<br />
Intermediate shapes could follow a distorted path instead of a straight line...<br />
Add specification here!<br />
<br />
====Knotting effect====<br />
click on a crossing to flip it. The UI should have a node tool button labeled "flip crossings". When this is selected, small red circles are drawn at each crossing. A a click in such an area flips the coresponding crossing...<br />
<br />
====So many more!!====<br />
All the effects we have as extensions can become live effects rather easily.<br />
Please add your propositions here!<br />
<br />
====Dynamic drop shadow====<br />
Currently doable with blur, blur+clip path, or with an array of filters, and probably some more ways but not so nice to make and re-edit (especially re-edit) and it would be good to have an on-canvas real time editing effect like this. Numerical parameters could include: opacity, size (complete size of the shadow), extension (how the intensity of the shadow decay, could be related to a blur factor), color, angle and distance.<br />
<br />
Angle and distance should be editable numerically on the effect dialog and those values linked to the canvas position of the shadow and its angle, so its easy to adjust both manually or numerically.<br />
<br />
Color could be a plain color or a gradient.<br />
<br />
The shadow could have a turbulence/convolution filter applied to it.<br />
--[[User:Pajarico|Pajarico]] 01:30, 1 March 2008 (UTC)<br />
<br />
====Perspective====<br />
<br />
Same as the one in ''Effects->Modify Path'' but editable on-canvas. The editable part is a square bounding box which has four pullable corners to do the perspective (or this is an envelope? I tend to get these two confused...)<br />
<br />
If this spec gets approved, a shadow could be rendered in perspective chaining a dynamic drop shadow and a perspective effects together.<br />
--[[User:Pajarico|Pajarico]] 01:30, 1 March 2008 (UTC)<br />
<br />
A first version of a perspective LPE has been in SVN for a while now, although it still lacks a lot of interactivity. This will be improved after this year's Summer of Code when LPEs will be a lot better integrated (e.g., when handle management is added). (Max, 08 June 2008)<br />
<br />
====Deformation Envelope====<br />
Steren : French Students are working on this too : see [[Deformation_Envelope_LPE]]<br />
<br />
====Bevel====<br />
Adds a bevel to an object. Some of the options could be:<br />
* Bevel extension.<br />
* Bevel height. The height is simulated with the luminosity of the sides of the bevel.<br />
* Sharpness, i. e.: how rounded/hard should the corners be.<br />
* Direction of light (in degrees).<br />
* Distance from the light to the object.<br />
* Color of the light.<br />
* Shape of the bevel.<br />
* Any other? Add it here.<br />
<br />
The bevel should be simulated with multiples facets, each one having a varying shade of light according to light parameters and the object's own color. The extension and light position should be editable on canvas.<br />
I will try to do a full fledged blueprint on the following days.<br />
<br />
==SVG representation==<br />
<br />
<br />
==API design==</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=BlueprintGeometricAndTechDrawing&diff=29234BlueprintGeometricAndTechDrawing2008-05-21T15:44:36Z<p>Cilix: /* More advanced or less important */</p>
<hr />
<div>== Summary ==<br />
<br />
This blueprint accompanies the GSoC'08 project "Geometric & Tech Drawing Abilities for Inkscape" by Maximilian Albert. It collects ideas from the community regarding desired features and their implementation (with no warranty that any of them will be included in the project :)). Feel free to add your thoughts here.<br />
<br />
The aim of the project is to create a new tool consisting of a number of "subtools"/"modules" which facilitate geometric constructions and technical drawings.<br />
<br />
== Typical Workflow ==<br />
<br />
To perform a geometric construction (e.g., create a circle through 3 points), the corresponding "module" is activated in the toolbar, either by clicking on its icon or via a shortcut. Then the items on which this construction relies (i.e., the three points) are clicked. This creates the desired geometric object (in this case a circle passing through the points).<br />
<br />
[[Image:td_typical_workflow.png|left]]<br />
<br />
<br />
== Desired Constructions/Other Features ==<br />
<br />
=== Basic ===<br />
<br />
Some constructions that should be possible with the new tool:<br />
<br />
[[Image:td_constructions.png|left]]<br />
<br />
<br />
=== More advanced or less important ===<br />
<br />
* "Preserve angles" mode for node editing of polygons (mockup courtesy of Johan Engelen) [[Image:td_preserve_angles_mode.png|left]]<br />
<br />
* Marker improvements:<br />
** Apply the color of the current stroke to markers, too (long-standing bug: LP #165865)<br />
** The left image shows how a marker currently looks like when applied to a curve with a sharp turn. Of course, it should look like the one on the right (also note the above-mentioned bug that the marker doesn't take the curve's stroke color). [[Image:td_marker.png|left]]<br />
** Automatic path shortening when a marker is applied<br />
** Smarter way of guessing a suitable marker size (not only based on stroke width but maybe also on the length of the path)<br />
<br />
* Tangent snapping: [[Image:td_tangent_snapping.png|left]]<br />
<br />
== Details & Internals ==<br />
<br />
=== User Interface ===<br />
<br />
All constructions should be accomplishable by mouse input only. E.g., points can be specified by mouse clicks, their position can be adapted by dragging, as can angles of lines, radii of circles, etc. But since for technical drawings the ability to use exact values is indispensable, each of these values can also be set by using numeric input fields (e.g., in the secondary toolbar). <br />
<br />
<br />
=== Code ===<br />
The tool will be implemented as a collection of "Live Path Effects" (LPEs). See [http://wiki.inkscape.org/wiki/index.php/MakingLivePathEffects here] for a technical description. The algorithms will be provided by the [http://lib2geom.sourceforge.net/ 2geom] library which is intended to become Inkscape's core library in the near future. There are separate GSoC proposals for 2geom integration into Inkscape.<br />
<br />
As part of the project, it is intended to integrate LPEs much more tightly into Inkscape's UI, e.g., by providing handles for parameter adaption or making their controls available in toolbars (not only in the LPE dialog).</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=BlueprintGeometricAndTechDrawing&diff=29224BlueprintGeometricAndTechDrawing2008-05-21T15:43:18Z<p>Cilix: /* More advanced or less important */</p>
<hr />
<div>== Summary ==<br />
<br />
This blueprint accompanies the GSoC'08 project "Geometric & Tech Drawing Abilities for Inkscape" by Maximilian Albert. It collects ideas from the community regarding desired features and their implementation (with no warranty that any of them will be included in the project :)). Feel free to add your thoughts here.<br />
<br />
The aim of the project is to create a new tool consisting of a number of "subtools"/"modules" which facilitate geometric constructions and technical drawings.<br />
<br />
== Typical Workflow ==<br />
<br />
To perform a geometric construction (e.g., create a circle through 3 points), the corresponding "module" is activated in the toolbar, either by clicking on its icon or via a shortcut. Then the items on which this construction relies (i.e., the three points) are clicked. This creates the desired geometric object (in this case a circle passing through the points).<br />
<br />
[[Image:td_typical_workflow.png|left]]<br />
<br />
<br />
== Desired Constructions/Other Features ==<br />
<br />
=== Basic ===<br />
<br />
Some constructions that should be possible with the new tool:<br />
<br />
[[Image:td_constructions.png|left]]<br />
<br />
<br />
=== More advanced or less important ===<br />
<br />
* "Preserve angles" mode for node editing of polygons (mockup courtesy of Johan Engelen)<br />
<br />
[[Image:td_preserve_angles_mode.png|left]]<br />
<br />
* Marker improvements:<br />
** Apply the color of the current stroke to markers, too (long-standing bug: LP #165865)<br />
** The left image shows how a marker currently looks like when applied to a curve with a sharp turn. Of course, it should look like the one on the right (also note the above-mentioned bug that the marker doesn't take the curve's stroke color). [[Image:td_marker.png|left]]<br />
** Automatic path shortening when a marker is applied<br />
** Smarter way of guessing a suitable marker size (not only based on stroke width but maybe also on the length of the path)<br />
<br />
* Tangent snapping: [[Image:td_tangent_snapping.png|left]]<br />
<br />
== Details & Internals ==<br />
<br />
=== User Interface ===<br />
<br />
All constructions should be accomplishable by mouse input only. E.g., points can be specified by mouse clicks, their position can be adapted by dragging, as can angles of lines, radii of circles, etc. But since for technical drawings the ability to use exact values is indispensable, each of these values can also be set by using numeric input fields (e.g., in the secondary toolbar). <br />
<br />
<br />
=== Code ===<br />
The tool will be implemented as a collection of "Live Path Effects" (LPEs). See [http://wiki.inkscape.org/wiki/index.php/MakingLivePathEffects here] for a technical description. The algorithms will be provided by the [http://lib2geom.sourceforge.net/ 2geom] library which is intended to become Inkscape's core library in the near future. There are separate GSoC proposals for 2geom integration into Inkscape.<br />
<br />
As part of the project, it is intended to integrate LPEs much more tightly into Inkscape's UI, e.g., by providing handles for parameter adaption or making their controls available in toolbars (not only in the LPE dialog).</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=File:Td_tangent_snapping.png&diff=29214File:Td tangent snapping.png2008-05-21T15:43:10Z<p>Cilix: </p>
<hr />
<div></div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=File:Td_marker.png&diff=29204File:Td marker.png2008-05-21T15:30:54Z<p>Cilix: </p>
<hr />
<div></div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=File:Td_preserve_angles_mode.png&diff=29194File:Td preserve angles mode.png2008-05-21T15:22:38Z<p>Cilix: Illustration for tech drawing blueprint: "preserve angles" mode for node editing</p>
<hr />
<div>Illustration for tech drawing blueprint: "preserve angles" mode for node editing</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=BlueprintGeometricAndTechDrawing&diff=29184BlueprintGeometricAndTechDrawing2008-05-21T15:22:19Z<p>Cilix: /* Desired Constructions and Other Features */</p>
<hr />
<div>== Summary ==<br />
<br />
This blueprint accompanies the GSoC'08 project "Geometric & Tech Drawing Abilities for Inkscape" by Maximilian Albert. It collects ideas from the community regarding desired features and their implementation (with no warranty that any of them will be included in the project :)). Feel free to add your thoughts here.<br />
<br />
The aim of the project is to create a new tool consisting of a number of "subtools"/"modules" which facilitate geometric constructions and technical drawings.<br />
<br />
== Typical Workflow ==<br />
<br />
To perform a geometric construction (e.g., create a circle through 3 points), the corresponding "module" is activated in the toolbar, either by clicking on its icon or via a shortcut. Then the items on which this construction relies (i.e., the three points) are clicked. This creates the desired geometric object (in this case a circle passing through the points).<br />
<br />
[[Image:td_typical_workflow.png|left]]<br />
<br />
<br />
== Desired Constructions/Other Features ==<br />
<br />
=== Basic ===<br />
<br />
Some constructions that should be possible with the new tool:<br />
<br />
[[Image:td_constructions.png|left]]<br />
<br />
<br />
=== More advanced or less important ===<br />
<br />
* "Preserve angles" mode for node editing of polygons (mockup courtesy of Johan Engelen)<br />
<br />
[[Image:td_preserve_angles_mode|left]]<br />
<br />
== Details & Internals ==<br />
<br />
=== User Interface ===<br />
<br />
All constructions should be accomplishable by mouse input only. E.g., points can be specified by mouse clicks, their position can be adapted by dragging, as can angles of lines, radii of circles, etc. But since for technical drawings the ability to use exact values is indispensable, each of these values can also be set by using numeric input fields (e.g., in the secondary toolbar). <br />
<br />
<br />
=== Code ===<br />
The tool will be implemented as a collection of "Live Path Effects" (LPEs). See [http://wiki.inkscape.org/wiki/index.php/MakingLivePathEffects here] for a technical description. The algorithms will be provided by the [http://lib2geom.sourceforge.net/ 2geom] library which is intended to become Inkscape's core library in the near future. There are separate GSoC proposals for 2geom integration into Inkscape.<br />
<br />
As part of the project, it is intended to integrate LPEs much more tightly into Inkscape's UI, e.g., by providing handles for parameter adaption or making their controls available in toolbars (not only in the LPE dialog).</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=BlueprintGeometricAndTechDrawing&diff=29174BlueprintGeometricAndTechDrawing2008-05-21T15:07:20Z<p>Cilix: /* Desired Constructions and Other Features */</p>
<hr />
<div>== Summary ==<br />
<br />
This blueprint accompanies the GSoC'08 project "Geometric & Tech Drawing Abilities for Inkscape" by Maximilian Albert. It collects ideas from the community regarding desired features and their implementation (with no warranty that any of them will be included in the project :)). Feel free to add your thoughts here.<br />
<br />
The aim of the project is to create a new tool consisting of a number of "subtools"/"modules" which facilitate geometric constructions and technical drawings.<br />
<br />
== Typical Workflow ==<br />
<br />
To perform a geometric construction (e.g., create a circle through 3 points), the corresponding "module" is activated in the toolbar, either by clicking on its icon or via a shortcut. Then the items on which this construction relies (i.e., the three points) are clicked. This creates the desired geometric object (in this case a circle passing through the points).<br />
<br />
[[Image:td_typical_workflow.png|left]]<br />
<br />
<br />
== Desired Constructions and Other Features ==<br />
<br />
Some constructions that should be possible with the new tool:<br />
<br />
[[Image:td_constructions.png|left]]<br />
<br />
<br />
== Details & Internals ==<br />
<br />
=== User Interface ===<br />
<br />
All constructions should be accomplishable by mouse input only. E.g., points can be specified by mouse clicks, their position can be adapted by dragging, as can angles of lines, radii of circles, etc. But since for technical drawings the ability to use exact values is indispensable, each of these values can also be set by using numeric input fields (e.g., in the secondary toolbar). <br />
<br />
<br />
=== Code ===<br />
The tool will be implemented as a collection of "Live Path Effects" (LPEs). See [http://wiki.inkscape.org/wiki/index.php/MakingLivePathEffects here] for a technical description. The algorithms will be provided by the [http://lib2geom.sourceforge.net/ 2geom] library which is intended to become Inkscape's core library in the near future. There are separate GSoC proposals for 2geom integration into Inkscape.<br />
<br />
As part of the project, it is intended to integrate LPEs much more tightly into Inkscape's UI, e.g., by providing handles for parameter adaption or making their controls available in toolbars (not only in the LPE dialog).</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=BlueprintGeometricAndTechDrawing&diff=29164BlueprintGeometricAndTechDrawing2008-05-21T14:55:10Z<p>Cilix: /* Summary */</p>
<hr />
<div>== Summary ==<br />
<br />
This blueprint accompanies the GSoC'08 project "Geometric & Tech Drawing Abilities for Inkscape" by Maximilian Albert. It collects ideas from the community regarding desired features and their implementation (with no warranty that any of them will be included in the project :)). Feel free to add your thoughts here.<br />
<br />
The aim of the project is to create a new tool consisting of a number of "subtools"/"modules" which facilitate geometric constructions and technical drawings.<br />
<br />
== Typical Workflow ==<br />
<br />
To perform a geometric construction (e.g., create a circle through 3 points), the corresponding "module" is activated in the toolbar, either by clicking on its icon or via a shortcut. Then the items on which this construction relies (i.e., the three points) are clicked. This creates the desired geometric object (in this case a circle passing through the points).<br />
<br />
[[Image:td_typical_workflow.png|left]]<br />
<br />
<br />
== Desired Constructions and Other Features ==<br />
<br />
Some constructions that should be possible with the new tool:<br />
<br />
[[Image:td_constructions.png|left]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=BlueprintGeometricAndTechDrawing&diff=29154BlueprintGeometricAndTechDrawing2008-05-21T14:53:29Z<p>Cilix: Constructions</p>
<hr />
<div>== Summary ==<br />
<br />
This blueprint accompanies the GSoC'08 project "Geometric & Tech Drawing Abilities for Inkscape" by Maximilian Albert. It collects ideas from the community regarding desired features and their implementation (with no warranty that any of them will be included in the project :)). Feel free to add your thoughts here.<br />
<br />
<br />
== Typical Workflow ==<br />
<br />
To perform a geometric construction (e.g., create a circle through 3 points), the corresponding "module" is activated in the toolbar, either by clicking on its icon or via a shortcut. Then the items on which this construction relies (i.e., the three points) are clicked. This creates the desired geometric object (in this case a circle passing through the points).<br />
<br />
[[Image:td_typical_workflow.png|left]]<br />
<br />
<br />
== Desired Constructions and Other Features ==<br />
<br />
Some constructions that should be possible with the new tool:<br />
<br />
[[Image:td_constructions.png|left]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=File:Td_constructions.png&diff=29144File:Td constructions.png2008-05-21T14:52:43Z<p>Cilix: Illustration for tech drawing blueprint: constructions</p>
<hr />
<div>Illustration for tech drawing blueprint: constructions</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=BlueprintGeometricAndTechDrawing&diff=29134BlueprintGeometricAndTechDrawing2008-05-21T14:47:32Z<p>Cilix: Typical Workflow</p>
<hr />
<div>== Summary ==<br />
<br />
This blueprint accompanies the GSoC'08 project "Geometric & Tech Drawing Abilities for Inkscape" by Maximilian Albert. It collects ideas from the community regarding desired features and their implementation (with no warranty that any of them will be included in the project :)). Feel free to add your thoughts here.<br />
<br />
<br />
== Typical Workflow ==<br />
<br />
To perform a geometric construction (e.g., create a circle through 3 points), the corresponding "module" is activated in the toolbar, either by clicking on its icon or via a shortcut. Then the items on which this construction relies (i.e., the three points) are clicked. This creates the desired geometric object (in this case a circle passing through the points).<br />
<br />
[[Image:td_typical_workflow.png|left]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=File:Td_typical_workflow.png&diff=29124File:Td typical workflow.png2008-05-21T14:44:35Z<p>Cilix: Illustration for tech drawing blueprint: Typical workflow</p>
<hr />
<div>Illustration for tech drawing blueprint: Typical workflow</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=SpecGuidesImprovement&diff=29114SpecGuidesImprovement2008-05-21T13:59:00Z<p>Cilix: /* Summary */ Sorry, the last edit should have been done in another wiki page :-/</p>
<hr />
<div>Launchpad Entry:<br />
https://blueprints.launchpad.net/inkscape/+spec/guides-improvement<br />
<br />
== Summary ==<br />
<br />
This specs provides a comprehensive way of managing guides and guidesets (which are groups of guides).<br />
<br />
== Release Note ==<br />
== Rationale ==<br />
Guides are one of the stronger workhorses of any vector editing application. Inkscape has a powerful set of options but I feel the way to manage guides is mainly focused on a per-guide basis and has lagged a bit behind the overall quality of the software. My points for this argument are:<br />
* The current dialog for manually setting guides properties is not as good as it should be since it tops the main window and the user has to pop-up the guides dialog for every editing, breaking the workflow. Also, is inconsistent with the way dock tabs work (much less obstructive).<br />
* The user can't change the color on a per-guide basis.<br />
* This spec adds basic managing operations such as add, remove, copy, visible/invisible and lock/unlock for guides.<br />
** Lock /unlock lets the user specify if the guides should be selectable along the objects or not.<br />
* It also deploys a complete UI framework for fitting the current types of guides (horizontal, vertical and angled) and adding other types of guides (see [https://blueprints.launchpad.net/inkscape/+spec/composition-guides composition guides], or others to come).<br />
* This spec introduces the concept of a '''Guideset''' (or just '''Set'''). This is a bunch of guides that are grouped, having common managing options (copy, delete, visible/invisible, move and rotate).<br />
** If the user selects a set, all of the guides inside it are edited homogeneously.<br />
** Sets allows the user to arrange his guides in a comprehensive way (specially important when there are dozens of guides on the document).<br />
* Right now, for angled guides, the user can edit the angle and center of the guide numerically but not on-canvas. I try to improve this too.<br />
<br />
== Design ==<br />
=== UI ===<br />
Pretty self-explanatory...<br />
<br />
[[Image:Guides-mockup.png|left]]<br />
<br />
The guides shown inside the viewer contains from left to right: visible/invisible, ID (name), and icon for type.<br />
<br />
Using the drop-down menu we can select the type of composition guide:<br />
<br />
[[Image:Guides_selector.png]]<br />
<br />
=== On-canvas editing ===<br />
The guides can be edited on canvas with only mouse and some key modifiers. These modifiers try to mimic the current behavior when transforming objects (the first three actions are already implemented).<br />
<br />
[[Image:Guide_editing_mockup.png]]<br />
<br />
The rotation can be snapped as any other node to grids or other guides.<br />
<br />
=== Usage ===<br />
* The IDs of the newly created guides should have more meaningful names like ''guide001'', ''guide002'', ''guide003'', etc. More appropriate would be to have the names being "smart", i.e.: the name has some resemblance to the name of the guideset it is attached to. So if you have a guideset called ''left eye'' the guides are named ''left eye001'', ''left eye002'', etc. A guideset called ''right eye'' would have guides named ''right eye001'', ''right eye 002'', etc.<br />
<br />
* '''How does lock/unlock work?''':<br />
** A ''locked guide'' can be moved and rotated on-canvas the same as an ''unlocked guide''. However, the ''un''locked one '''is selectable along the objects''' with the selector tool (both dragging a square and touch selection), '''and moving and rotating the object does the same for the guides'''.<br />
<br />
* '''Guidesets:'''<br />
** This is an usage example: imagine you are working on the design of a complex drawing such as a book cover or a product label, you will end with many elements on the page: text, vector figures, lines, bitmaps... and grids, lots of grids. Till now, the guides are hard hard to tell apart when there are a lot of them. However, is quite probably that you can break them into groups so you would have '''sets''' and '''guides''' such as:<br />
*** ''text guides''<br />
**** ''main title''<br />
**** ''subtitle''<br />
**** ''name of the author''<br />
*** ''barcode and copyright''<br />
**** ''barcode bound1''<br />
**** ''barcode bound2''<br />
**** ''barcode bound3''<br />
**** ''barcode bound4''<br />
**** ''copyright text''<br />
*** ''cover design''<br />
**** ''guide1''<br />
**** ''guideN''<br />
<br />
Thus, and using different colors, the layout of the grids should be clearer and more usable.<br />
<br />
=== SVG representation ===<br />
<br />
== TODO ==<br />
<br />
== Discussion ==<br />
I'm unsure about these ideas. Please, discuss below.<br />
<br />
* IDEA: Add '''snap''' option for every guide or every set, so the user is able to decide if snappable elements should snap to it or not.<br />
* IDEA: Add '''attach''' option so a guide or guideset can be attached to an object, so selecting and transforming the object automatically moves and transforms the guides.<br />
<br />
* REMINDER: '''Lock/unlock''' feature requires guides '''to be selectable along the objects''' (which I don't think they are right now). This is aimed to future developers.</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=BlueprintGeometricAndTechDrawing&diff=29104BlueprintGeometricAndTechDrawing2008-05-21T13:56:31Z<p>Cilix: /* Summary */</p>
<hr />
<div>== Summary ==<br />
<br />
This blueprint accompanies the GSoC'08 project "Geometric & Tech Drawing Abilities for Inkscape" by Maximilian Albert. It collects ideas from the community regarding desired features and their implementation (with no warranty that any of them will be included in the project :)). Feel free to add your thoughts here.</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=BlueprintGeometricAndTechDrawing&diff=29094BlueprintGeometricAndTechDrawing2008-05-21T13:56:04Z<p>Cilix: /* Summary */</p>
<hr />
<div>== Summary ==<br />
<br />
This blueprint accompanies the GSoC'08 project "Geometric & Tech Drawing Abilities for Inkscape" by Maximilian Albert. It is meant to collect ideas from the community regarding desired features and their implementation (with no warranty that any of them will be included in the project :)). Feel free to add your thoughts here.</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=BlueprintGeometricAndTechDrawing&diff=29084BlueprintGeometricAndTechDrawing2008-05-21T13:49:53Z<p>Cilix: New page: == Summary ==</p>
<hr />
<div>== Summary ==</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=SpecGuidesImprovement&diff=29074SpecGuidesImprovement2008-05-21T13:36:22Z<p>Cilix: /* Summary */</p>
<hr />
<div>Launchpad Entry:<br />
https://blueprints.launchpad.net/inkscape/+spec/guides-improvement<br />
<br />
== Summary ==<br />
<br />
This wiki page accompanies the GSoC'08 project "Tech Drawing Abilities for Inkscape" by Maximilian Albert. It is meant to collect of ideas from the community regarding desired features and their implementation (with no guarantee that any of them will be included in the project :)). Feel free to add your thoughts here.<br />
<br />
== Release Note ==<br />
== Rationale ==<br />
Guides are one of the stronger workhorses of any vector editing application. Inkscape has a powerful set of options but I feel the way to manage guides is mainly focused on a per-guide basis and has lagged a bit behind the overall quality of the software. My points for this argument are:<br />
* The current dialog for manually setting guides properties is not as good as it should be since it tops the main window and the user has to pop-up the guides dialog for every editing, breaking the workflow. Also, is inconsistent with the way dock tabs work (much less obstructive).<br />
* The user can't change the color on a per-guide basis.<br />
* This spec adds basic managing operations such as add, remove, copy, visible/invisible and lock/unlock for guides.<br />
** Lock /unlock lets the user specify if the guides should be selectable along the objects or not.<br />
* It also deploys a complete UI framework for fitting the current types of guides (horizontal, vertical and angled) and adding other types of guides (see [https://blueprints.launchpad.net/inkscape/+spec/composition-guides composition guides], or others to come).<br />
* This spec introduces the concept of a '''Guideset''' (or just '''Set'''). This is a bunch of guides that are grouped, having common managing options (copy, delete, visible/invisible, move and rotate).<br />
** If the user selects a set, all of the guides inside it are edited homogeneously.<br />
** Sets allows the user to arrange his guides in a comprehensive way (specially important when there are dozens of guides on the document).<br />
* Right now, for angled guides, the user can edit the angle and center of the guide numerically but not on-canvas. I try to improve this too.<br />
<br />
== Design ==<br />
=== UI ===<br />
Pretty self-explanatory...<br />
<br />
[[Image:Guides-mockup.png|left]]<br />
<br />
The guides shown inside the viewer contains from left to right: visible/invisible, ID (name), and icon for type.<br />
<br />
Using the drop-down menu we can select the type of composition guide:<br />
<br />
[[Image:Guides_selector.png]]<br />
<br />
=== On-canvas editing ===<br />
The guides can be edited on canvas with only mouse and some key modifiers. These modifiers try to mimic the current behavior when transforming objects (the first three actions are already implemented).<br />
<br />
[[Image:Guide_editing_mockup.png]]<br />
<br />
The rotation can be snapped as any other node to grids or other guides.<br />
<br />
=== Usage ===<br />
* The IDs of the newly created guides should have more meaningful names like ''guide001'', ''guide002'', ''guide003'', etc. More appropriate would be to have the names being "smart", i.e.: the name has some resemblance to the name of the guideset it is attached to. So if you have a guideset called ''left eye'' the guides are named ''left eye001'', ''left eye002'', etc. A guideset called ''right eye'' would have guides named ''right eye001'', ''right eye 002'', etc.<br />
<br />
* '''How does lock/unlock work?''':<br />
** A ''locked guide'' can be moved and rotated on-canvas the same as an ''unlocked guide''. However, the ''un''locked one '''is selectable along the objects''' with the selector tool (both dragging a square and touch selection), '''and moving and rotating the object does the same for the guides'''.<br />
<br />
* '''Guidesets:'''<br />
** This is an usage example: imagine you are working on the design of a complex drawing such as a book cover or a product label, you will end with many elements on the page: text, vector figures, lines, bitmaps... and grids, lots of grids. Till now, the guides are hard hard to tell apart when there are a lot of them. However, is quite probably that you can break them into groups so you would have '''sets''' and '''guides''' such as:<br />
*** ''text guides''<br />
**** ''main title''<br />
**** ''subtitle''<br />
**** ''name of the author''<br />
*** ''barcode and copyright''<br />
**** ''barcode bound1''<br />
**** ''barcode bound2''<br />
**** ''barcode bound3''<br />
**** ''barcode bound4''<br />
**** ''copyright text''<br />
*** ''cover design''<br />
**** ''guide1''<br />
**** ''guideN''<br />
<br />
Thus, and using different colors, the layout of the grids should be clearer and more usable.<br />
<br />
=== SVG representation ===<br />
<br />
== TODO ==<br />
<br />
== Discussion ==<br />
I'm unsure about these ideas. Please, discuss below.<br />
<br />
* IDEA: Add '''snap''' option for every guide or every set, so the user is able to decide if snappable elements should snap to it or not.<br />
* IDEA: Add '''attach''' option so a guide or guideset can be attached to an object, so selecting and transforming the object automatically moves and transforms the guides.<br />
<br />
* REMINDER: '''Lock/unlock''' feature requires guides '''to be selectable along the objects''' (which I don't think they are right now). This is aimed to future developers.</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&diff=29044Release notes/0.472008-05-20T12:32:24Z<p>Cilix: /* New effects */</p>
<hr />
<div>=Inkscape 0.47=<br />
'''(not released yet)'''<br />
<br />
=Refactoring effort=<br />
[mention the 'main' goal of 0.47 and list which things have been refactored and the benefits/new features/different workflow? --johan]<br />
<br />
=Tools=<br />
<br />
==Node tool==<br />
<br />
* [helper path display, flashing - johan]<br />
* 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).<br />
* Snapping has been improved (more details in Snapping below)<br />
* When dragging a node '''handle with Ctrl''', 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).<br />
* The behavior of the buttons/shortucts that make a node smooth or cusp has been improved:<br />
:* If a node is already 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.<br />
:* 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.<br />
<br />
==Calligraphy tool ==<br />
Added 4 preset buttons for dip, pen, brush and reed in the toolbox. Clicking one button sets the calligraphic tool with the matching presets.<br />
<br />
==Paint Bucket tool==<br />
* Paint Bucket is now more tightly integrated with potrace. As a result, memory and CPU usage on each fill operation have been reduced significantly.<br />
<br />
==Eraser Tool==<br />
A new eraser tool has been added. It has two main modes:<br />
* Delete-mode where any shape touched by the tool is deleted completely. This operation is in line with "vector" editing.<br />
* Cut mode where erasing acts similar to erasing in a standard bitmap editor.<br />
Erasing is also limited to the currently selected objects if there are any selected.<br />
<br />
=Transform dialog=<br />
<br />
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 "Relative move" is on, each object is shifted relative to the closest selected object on the left (for X) or below (for Y). <br />
<br />
For example, if you have a horizontal row of objects and you move them relatively by X=5px with "Apply to each object separately" 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). <br />
<br />
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.<br />
<br />
=Live path effects=<br />
== Notable bug fixes and effect changes==<br />
We try to refrain from changing the behavior of LPE's, because it will change appearance in old files when opened in Inkscape¹. But when an effect is really broken, we have to fix it.<br />
<br />
[¹ fixme: Shouldn't the above say "it will change editing behaviour in old files" ? If it changes the appearance, then that's a bug: inkscape should always save SVG that represents the appearance, and should display according to the SVG rather than any inkscape:blah annotations. --pjrm <br><br />
What is meant is the following. Files with LPEs opened in a random viewer will always look the same, regardless of Inkscape version. However, when viewed in Inkscape, the LPE is recalculated. When LPE behavior changes, the appearance will change. --johan]<br />
<br />
* The Pattern Along Path effect used to stretch the pattern across discontinuities. This has been fixed; now it treats a discontinuous path as a group of continuous paths and applied the effect separately to each.<br />
<br />
==New effects==<br />
[new: sketch, von koch, knot]<br />
<br />
* '''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]<br />
<br />
* '''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.<br />
<br />
: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. <br />
<br />
:To create a Spiro path, select any path and assign the "Spiro spline" 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:<br />
<br />
:* 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.<br />
<br />
:* 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.<br />
<br />
:* Half-smooth nodes - those with one Bezier handle collinear with a straight line segment on the other hand - become "left" or "right" 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.<br />
<br />
: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. <br />
<br />
:Some configurations of points do not converge and produce wild loops and spirals instead of a smooth curve. According to Raph, "The spline solver in this release is _not_ numerically robust. When you start drawing random points, you'll quickly run into divergence. However, "sensible" plates based on real fonts usually converge." Avoid too sharp changes in direction between points to prevent divergence. Hopefully, the robustness of the algorithm will be improved in future releases.<br />
<br />
: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 as it is a distraction. 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. <br />
<br />
: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.<br />
<br />
* '''Construct Grid''' [johan]<br />
<br />
* '''Perpendicular bisector''' [max]<br />
<br />
* '''Tangent to a curve''' [max]<br />
<br />
==New features==<br />
* 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.<br />
<br />
* A new command, '''Remove path effect''' removes any path effects from all selected objects, going recursively into groups if necessary. <br />
<br />
* 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.<br />
<br />
* Live path effects can now be assigned to the sides of a 3D box (use Ctrl+click to select individual sides).<br />
<br />
* 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.<br />
<br />
* Path type parameters can now link to existing shapes <b>and text</b>, like clones do. Now it is possible to use text as input for the Pattern Along Path effect for example!<br />
<br />
* Lib2geom now has an implementation for SVGEllipticalArc. 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]<br />
<br />
==Live Path Effect for groups==<br />
<br />
LPE can now be assigned to a group. For most LPE, the effect is applied recursively but for Bend Path the result is more powerful : the distortion applies on the whole group. <br />
<br />
*Original path of the group can as usual be edited by double-clicking. <br />
*It applies recursively, this means that a LPE can be assigned to groups of groups <br />
*The Effect can be applied definitively with "Convert Object to path"<br />
<br />
=Import/Export=<br />
==Corel DRAW files import==<br />
<br />
Now Inkscape can import more Corel DRAW files of following types:<br />
<br />
* Corel DRAW Compressed Exchange files (CCX)<br />
* Corel DRAW 7-X4 Template files (CDT)<br />
* Corel DRAW Presentation Exchange files (CMX)<br />
<br />
Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==sK1 files import==<br />
<br />
Inkscape uses UniConvertor to import sK1 files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==CGM import==<br />
<br />
Inkscape uses UniConvertor to import Computer Graphics Metafile (CGM) files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==PDF export==<br />
<br />
With PDF export, it is now possible to make the PDF page the size of the entire drawing, instead of the same as SVG page as before by the "Export drawing, not page" checkbox in PDF export options. Also, you can export a single object from a complex document to PDF if you specify the ID of that object in the "Limit export to the object with ID" field; the page of such PDF will be the same size as the bounding box of that object and will show only that object (all others will be hidden).<br />
<br />
The same capabilities are available from the command line by using <code>--export-area-drawing</code> and <code>--export-id=ID</code> parameters with <code>--export-pdf</code> (previously, they only worked for PNG export).<br />
<br />
=Extension effects=<br />
==New and improved effects==<br />
<br />
* The new '''Arrange > 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.).<br />
* The improved '''Modify Path > Add Nodes''' extension now also allows segments to be divided into a given number of subsegments.<br />
* The new '''Render > Alphabet Soup''' extension is a vector rework of Matt Chrisholm's GPLed script [http://www.theory.org/artprojects/alphabetsoup/main.html]. Alphabet Soup randomly mashes glyph-elements together to make exotic looking text.<br />
* The new '''Render > 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.<br />
* The new '''Render > 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.<br />
* The new '''Text > Convert to Braille''' extension recodes English (or just Latin letters) text to [http://en.wikipedia.org/wiki/Braille Braille] code created for visually impaired people.<br />
<br />
==API changes==<br />
<br />
While the "Live preview" checkbox is useful for most effects, for some it just does not make sense. Now, you can add the attribute <code>needs-live-preview="false"</code> in the <code>effect</code> element in the .inx file of the effect to suppress this checkbox for your effect.<br />
<br />
Parameters passed to extensions (via the <param> element) now have a new boolean attribute - <code>gui-hidden</code> 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.<br />
<br />
All '''.inx''' files are now properly formatted XML files with its own namespace of: <code><nowiki>http://www.inkscape.org/namespace/inkscape/extension</nowiki></code> and a Relax NG schema to define it. More information can be found in the [[Extensions]] Article.<br />
<br />
=SVG output=<br />
<br />
==Optimized CSS properties==<br />
<br />
As a file size optimization, Inkscape does not write into SVG some of the stroke properties if the object has stroke:none and some of the fill properties when it has fill:none. The only situation where this might affect you is if you remove stroke from an object and then turn it back on - the object will get the default stroke instead of the same it had before. <br />
<br />
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.<br />
<br />
Specifically, if stroke:none, the following properties do not get written to SVG:<br />
<br />
stroke-width<br />
stroke-linecap<br />
stroke-linejoin<br />
stroke-miterlimit<br />
stroke-opacity<br />
stroke-dasharray<br />
stroke-dashoffset<br />
<br />
Note that this does not include marker properties, which means you can still have markers on a path without visible stroke.<br />
<br />
If fill:none, the following properties do not get written to SVG:<br />
<br />
fill-opacity<br />
fill-rule<br />
<br />
==Optimized path data==<br />
<br />
In this version, the size of the path data written in the <code>d=</code> attribute of <code>path</code> elements is reduced by about 10%. Inkscape generates the shortest possible path strings by avoiding repeated operators and using relative coordinates (when it helps).<br />
<br />
This is controlled by the following attributes in <code>group id="svgoutput"</code> in your preferences.xml file:<br />
<br />
* allowrelativecoordinates (default 1) to switch relative coordinates on (1) or off (0)<br />
* forcerepeatcommands (default 0) to force repeating operators (1) or allow use of the more compact representation without repeated operators (0)<br />
<br />
=User interface=<br />
==Filters can be disabled==<br />
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 "normal" and "outline" view modes.<br />
<br />
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.<br />
<br />
==Native file dialogs for Windows==<br />
The windows builds of inkscape now have Windows-native file dialogs to keep consistency with other windows applications.<br />
<br />
==Clipboard enhancements==<br />
<br />
The clipboard used by Inkscape is now system-wide instead of being confined to a single instance of the application. Copied elements are exported to the clipboard using all the available output formats. SVG data can be pasted into other applications supporting one of Inkscape's output formats, and SVG data provided by other applications can be pasted into Inkscape.<br />
<br />
If you copy a string that can be interpreted as a hexadecimal color specification, i.e. 2f7ab4 or #014522b0, and then paste it into Inkscape, the fill of the selected objects will change to the given color. This is especially useful when working with HTML pages.<br />
<br />
==Masks and clipping paths==<br />
<br />
[editable in node tool - johan]<br />
<br />
==Stroke width changeable by dragging==<br />
<br />
[bbyak]<br />
<br />
==Enhanced Tablet Support==<br />
<br />
===Input device tool switching===<br />
<br />
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.<br />
<br />
===Extended input device configuration===<br />
<br />
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.<br />
<br />
Additionally hardware setup itself has been separated from general settings to allow for easier dynamic switching of settings appropriate to the task at hand.<br />
<br />
==Dropper tool==<br />
<br />
The confusing icons on buttons in the controls bar of the Dropper tool (pick/assign opacity) are replaced by text labels.<br />
<br />
==Swatches==<br />
<br />
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 to show a tool tip is difficult.<br />
<br />
==Toolbars==<br />
<br />
The toolbar icon sizes for the three main toolbars are now separately configurable and to a few different sizes. This allows users to get a smaller UI on certain systems, including Ubuntu.<br />
<br />
==External Image Editing and Reload==<br />
<br />
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 can be controlled by user preferences.<br />
<br />
=Grids, guides, snapping=<br />
<br />
==Grids==<br />
* The dotted rectangular grid now shows small crosses at the intersection points of emphasis lines.<br />
<br />
==Guides==<br />
<br />
There is now an option to treat groups as single objects during conversion to guides (as opposed to converting each object inside the group separately).<br />
<br />
==Snapping==<br />
Snapping has been implemented or improved in these areas:<br />
* The '''node tool''' now snaps to any unselected node (cusp or smooth) within the path that's being edited, and to cusp nodes of other paths. It also snaps to the path itself, but only to the stationary segments in between two unselected nodes.<br />
* The object snapper now also allows to snap to the '''page border'''<br />
* Snapping while '''skewing has''' been improved<br />
<br />
==Snap indicator==<br />
When snapping has occurred, an indicator is displayed at that specific position. For now that indicator is just a cross that disappears in a second. In the future the shape of the indicator will be related to the type of target that has been snapped to. The snapping indicator can be enabled in the Document Properties dialog.<br />
<br />
=Notable bug fixes=<br />
<br />
* 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 "Filter general settings" tab of the Filter Effects dialog.<br />
<br />
: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 bbox for selection of the export area; this means that you can now export a blurred object to bitmap without any clipping of the blur.<br />
<br />
* Several fixes allows Inkscape to correctly render and edit SVG files that use <code>currentColor</code> in objects' style (this includes files created by gnuplot).<br />
<br />
= Previous releases =<br />
<br />
* [[ReleaseNotes046]]<br />
* [[ReleaseNotes045]]<br />
* [[ReleaseNotes044]]<br />
* [[ReleaseNotes043]]<br />
* [[ReleaseNotes042]]<br />
* [[ReleaseNotes041]]<br />
* [[ReleaseNotes040]]<br />
* [[ReleaseNotes039]]<br />
* [[ReleaseNotes038]]<br />
* [[ReleaseNotes037]]<br />
* [[ReleaseNotes036]]<br />
* [[ReleaseNotes035]]<br />
<br />
[[Category:Marketing]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&diff=29034Release notes/0.472008-05-18T20:55:55Z<p>Cilix: /* New effects */</p>
<hr />
<div>=Inkscape 0.47=<br />
'''(not released yet)'''<br />
<br />
=Refactoring effort=<br />
[mention the 'main' goal of 0.47 and list which things have been refactored and the benefits/new features/different workflow? --johan]<br />
<br />
=Tools=<br />
<br />
==Node tool==<br />
<br />
* [helper path display, flashing - johan]<br />
* 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).<br />
* Snapping has been improved (more details in Snapping below)<br />
* When dragging a node '''handle with Ctrl''', 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).<br />
* The behavior of the buttons/shortucts that make a node smooth or cusp has been improved:<br />
:* If a node is already 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.<br />
:* 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.<br />
<br />
==Calligraphy tool ==<br />
Added 4 preset buttons for dip, pen, brush and reed in the toolbox. Clicking one button sets the calligraphic tool with the matching presets.<br />
<br />
==Paint Bucket tool==<br />
* Paint Bucket is now more tightly integrated with potrace. As a result, memory and CPU usage on each fill operation have been reduced significantly.<br />
<br />
==Eraser Tool==<br />
A new eraser tool has been added. It has two main modes:<br />
* Delete-mode where any shape touched by the tool is deleted completely. This operation is in line with "vector" editing.<br />
* Cut mode where erasing acts similar to erasing in a standard bitmap editor.<br />
Erasing is also limited to the currently selected objects if there are any selected.<br />
<br />
=Transform dialog=<br />
<br />
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 "Relative move" is on, each object is shifted relative to the closest selected object on the left (for X) or below (for Y). <br />
<br />
For example, if you have a horizontal row of objects and you move them relatively by X=5px with "Apply to each object separately" 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). <br />
<br />
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.<br />
<br />
=Live path effects=<br />
== Notable bug fixes and effect changes==<br />
We try to refrain from changing the behavior of LPE's, because it will change appearance in old files when opened in Inkscape¹. But when an effect is really broken, we have to fix it.<br />
<br />
[¹ fixme: Shouldn't the above say "it will change editing behaviour in old files" ? If it changes the appearance, then that's a bug: inkscape should always save SVG that represents the appearance, and should display according to the SVG rather than any inkscape:blah annotations. --pjrm <br><br />
What is meant is the following. Files with LPEs opened in a random viewer will always look the same, regardless of Inkscape version. However, when viewed in Inkscape, the LPE is recalculated. When LPE behavior changes, the appearance will change. --johan]<br />
<br />
* The Pattern Along Path effect used to stretch the pattern across discontinuities. This has been fixed; now it treats a discontinuous path as a group of continuous paths and applied the effect separately to each.<br />
<br />
==New effects==<br />
[new: sketch, von koch, knot]<br />
<br />
* '''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]<br />
<br />
* '''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.<br />
<br />
: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. <br />
<br />
:To create a Spiro path, select any path and assign the "Spiro spline" 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:<br />
<br />
:* 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.<br />
<br />
:* 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.<br />
<br />
:* Half-smooth nodes - those with one Bezier handle collinear with a straight line segment on the other hand - become "left" or "right" 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.<br />
<br />
: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. <br />
<br />
:Some configurations of points do not converge and produce wild loops and spirals instead of a smooth curve. According to Raph, "The spline solver in this release is _not_ numerically robust. When you start drawing random points, you'll quickly run into divergence. However, "sensible" plates based on real fonts usually converge." Avoid too sharp changes in direction between points to prevent divergence. Hopefully, the robustness of the algorithm will be improved in future releases.<br />
<br />
: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 as it is a distraction. 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. <br />
<br />
: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.<br />
<br />
* '''Construct Grid''' [johan]<br />
<br />
* '''Perpendicular bisector''' [max]<br />
<br />
==New features==<br />
* 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.<br />
<br />
* A new command, '''Remove path effect''' removes any path effects from all selected objects, going recursively into groups if necessary. <br />
<br />
* 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.<br />
<br />
* Live path effects can now be assigned to the sides of a 3D box (use Ctrl+click to select individual sides).<br />
<br />
* 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.<br />
<br />
* Path type parameters can now link to existing shapes <b>and text</b>, like clones do. Now it is possible to use text as input for the Pattern Along Path effect for example!<br />
<br />
* Lib2geom now has an implementation for SVGEllipticalArc. 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]<br />
<br />
==Live Path Effect for groups==<br />
<br />
LPE can now be assigned to a group. For most LPE, the effect is applied recursively but for Bend Path the result is more powerful : the distortion applies on the whole group. <br />
<br />
*Original path of the group can as usual be edited by double-clicking. <br />
*It applies recursively, this means that a LPE can be assigned to groups of groups <br />
*The Effect can be applied definitively with "Convert Object to path"<br />
<br />
=Import/Export=<br />
==Corel DRAW files import==<br />
<br />
Now Inkscape can import more Corel DRAW files of following types:<br />
<br />
* Corel DRAW Compressed Exchange files (CCX)<br />
* Corel DRAW 7-X4 Template files (CDT)<br />
* Corel DRAW Presentation Exchange files (CMX)<br />
<br />
Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==sK1 files import==<br />
<br />
Inkscape uses UniConvertor to import sK1 files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==CGM import==<br />
<br />
Inkscape uses UniConvertor to import Computer Graphics Metafile (CGM) files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==PDF export==<br />
<br />
With PDF export, it is now possible to make the PDF page the size of the entire drawing, instead of the same as SVG page as before by the "Export drawing, not page" checkbox in PDF export options. Also, you can export a single object from a complex document to PDF if you specify the ID of that object in the "Limit export to the object with ID" field; the page of such PDF will be the same size as the bounding box of that object and will show only that object (all others will be hidden).<br />
<br />
The same capabilities are available from the command line by using <code>--export-area-drawing</code> and <code>--export-id=ID</code> parameters with <code>--export-pdf</code> (previously, they only worked for PNG export).<br />
<br />
=Extension effects=<br />
==New and improved effects==<br />
<br />
* The new '''Arrange > 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.).<br />
* The improved '''Modify Path > Add Nodes''' extension now also allows segments to be divided into a given number of subsegments.<br />
* The new '''Render > Alphabet Soup''' extension is a vector rework of Matt Chrisholm's GPLed script [http://www.theory.org/artprojects/alphabetsoup/main.html]. Alphabet Soup randomly mashes glyph-elements together to make exotic looking text.<br />
* The new '''Render > 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.<br />
* The new '''Render > 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.<br />
* The new '''Text > Convert to Braille''' extension recodes English (or just Latin letters) text to [http://en.wikipedia.org/wiki/Braille Braille] code created for visually impaired people.<br />
<br />
==API changes==<br />
<br />
While the "Live preview" checkbox is useful for most effects, for some it just does not make sense. Now, you can add the attribute <code>needs-live-preview="false"</code> in the <code>effect</code> element in the .inx file of the effect to suppress this checkbox for your effect.<br />
<br />
Parameters passed to extensions (via the <param> element) now have a new boolean attribute - <code>gui-hidden</code> 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.<br />
<br />
All '''.inx''' files are now properly formatted XML files with its own namespace of: <code><nowiki>http://www.inkscape.org/namespace/inkscape/extension</nowiki></code> and a Relax NG schema to define it. More information can be found in the [[Extensions]] Article.<br />
<br />
=SVG output=<br />
<br />
==Optimized CSS properties==<br />
<br />
As a file size optimization, Inkscape does not write into SVG some of the stroke properties if the object has stroke:none and some of the fill properties when it has fill:none. The only situation where this might affect you is if you remove stroke from an object and then turn it back on - the object will get the default stroke instead of the same it had before. <br />
<br />
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.<br />
<br />
Specifically, if stroke:none, the following properties do not get written to SVG:<br />
<br />
stroke-width<br />
stroke-linecap<br />
stroke-linejoin<br />
stroke-miterlimit<br />
stroke-opacity<br />
stroke-dasharray<br />
stroke-dashoffset<br />
<br />
Note that this does not include marker properties, which means you can still have markers on a path without visible stroke.<br />
<br />
If fill:none, the following properties do not get written to SVG:<br />
<br />
fill-opacity<br />
fill-rule<br />
<br />
==Optimized path data==<br />
<br />
In this version, the size of the path data written in the <code>d=</code> attribute of <code>path</code> elements is reduced by about 10%. Inkscape generates the shortest possible path strings by avoiding repeated operators and using relative coordinates (when it helps).<br />
<br />
This is controlled by the following attributes in <code>group id="svgoutput"</code> in your preferences.xml file:<br />
<br />
* allowrelativecoordinates (default 1) to switch relative coordinates on (1) or off (0)<br />
* forcerepeatcommands (default 0) to force repeating operators (1) or allow use of the more compact representation without repeated operators (0)<br />
<br />
=User interface=<br />
==Filters can be disabled==<br />
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 "normal" and "outline" view modes.<br />
<br />
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.<br />
<br />
==Native file dialogs for Windows==<br />
The windows builds of inkscape now have Windows-native file dialogs to keep consistency with other windows applications.<br />
<br />
==Clipboard enhancements==<br />
<br />
The clipboard used by Inkscape is now system-wide instead of being confined to a single instance of the application. Copied elements are exported to the clipboard using all the available output formats. SVG data can be pasted into other applications supporting one of Inkscape's output formats, and SVG data provided by other applications can be pasted into Inkscape.<br />
<br />
If you copy a string that can be interpreted as a hexadecimal color specification, i.e. 2f7ab4 or #014522b0, and then paste it into Inkscape, the fill of the selected objects will change to the given color. This is especially useful when working with HTML pages.<br />
<br />
==Masks and clipping paths==<br />
<br />
[editable in node tool - johan]<br />
<br />
==Stroke width changeable by dragging==<br />
<br />
[bbyak]<br />
<br />
==Enhanced Tablet Support==<br />
<br />
===Input device tool switching===<br />
<br />
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.<br />
<br />
===Extended input device configuration===<br />
<br />
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.<br />
<br />
Additionally hardware setup itself has been separated from general settings to allow for easier dynamic switching of settings appropriate to the task at hand.<br />
<br />
==Dropper tool==<br />
<br />
The confusing icons on buttons in the controls bar of the Dropper tool (pick/assign opacity) are replaced by text labels.<br />
<br />
==Swatches==<br />
<br />
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 to show a tool tip is difficult.<br />
<br />
==Toolbars==<br />
<br />
The toolbar icon sizes for the three main toolbars are now separately configurable and to a few different sizes. This allows users to get a smaller UI on certain systems, including Ubuntu.<br />
<br />
==External Image Editing and Reload==<br />
<br />
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 can be controlled by user preferences.<br />
<br />
=Grids, guides, snapping=<br />
<br />
==Grids==<br />
* The dotted rectangular grid now shows small crosses at the intersection points of emphasis lines.<br />
<br />
==Guides==<br />
<br />
There is now an option to treat groups as single objects during conversion to guides (as opposed to converting each object inside the group separately).<br />
<br />
==Snapping==<br />
Snapping has been implemented or improved in these areas:<br />
* The '''node tool''' now snaps to any unselected node (cusp or smooth) within the path that's being edited, and to cusp nodes of other paths. It also snaps to the path itself, but only to the stationary segments in between two unselected nodes.<br />
* The object snapper now also allows to snap to the '''page border'''<br />
* Snapping while '''skewing has''' been improved<br />
<br />
==Snap indicator==<br />
When snapping has occurred, an indicator is displayed at that specific position. For now that indicator is just a cross that disappears in a second. In the future the shape of the indicator will be related to the type of target that has been snapped to. The snapping indicator can be enabled in the Document Properties dialog.<br />
<br />
=Notable bug fixes=<br />
<br />
* 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 "Filter general settings" tab of the Filter Effects dialog.<br />
<br />
: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 bbox for selection of the export area; this means that you can now export a blurred object to bitmap without any clipping of the blur.<br />
<br />
* Several fixes allows Inkscape to correctly render and edit SVG files that use <code>currentColor</code> in objects' style (this includes files created by gnuplot).<br />
<br />
= Previous releases =<br />
<br />
* [[ReleaseNotes046]]<br />
* [[ReleaseNotes045]]<br />
* [[ReleaseNotes044]]<br />
* [[ReleaseNotes043]]<br />
* [[ReleaseNotes042]]<br />
* [[ReleaseNotes041]]<br />
* [[ReleaseNotes040]]<br />
* [[ReleaseNotes039]]<br />
* [[ReleaseNotes038]]<br />
* [[ReleaseNotes037]]<br />
* [[ReleaseNotes036]]<br />
* [[ReleaseNotes035]]<br />
<br />
[[Category:Marketing]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&diff=29024Release notes/0.472008-05-18T20:52:52Z<p>Cilix: /* New effects */</p>
<hr />
<div>=Inkscape 0.47=<br />
'''(not released yet)'''<br />
<br />
=Refactoring effort=<br />
[mention the 'main' goal of 0.47 and list which things have been refactored and the benefits/new features/different workflow? --johan]<br />
<br />
=Tools=<br />
<br />
==Node tool==<br />
<br />
* [helper path display, flashing - johan]<br />
* 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).<br />
* Snapping has been improved (more details in Snapping below)<br />
* When dragging a node '''handle with Ctrl''', 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).<br />
* The behavior of the buttons/shortucts that make a node smooth or cusp has been improved:<br />
:* If a node is already 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.<br />
:* 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.<br />
<br />
==Calligraphy tool ==<br />
Added 4 preset buttons for dip, pen, brush and reed in the toolbox. Clicking one button sets the calligraphic tool with the matching presets.<br />
<br />
==Paint Bucket tool==<br />
* Paint Bucket is now more tightly integrated with potrace. As a result, memory and CPU usage on each fill operation have been reduced significantly.<br />
<br />
==Eraser Tool==<br />
A new eraser tool has been added. It has two main modes:<br />
* Delete-mode where any shape touched by the tool is deleted completely. This operation is in line with "vector" editing.<br />
* Cut mode where erasing acts similar to erasing in a standard bitmap editor.<br />
Erasing is also limited to the currently selected objects if there are any selected.<br />
<br />
=Transform dialog=<br />
<br />
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 "Relative move" is on, each object is shifted relative to the closest selected object on the left (for X) or below (for Y). <br />
<br />
For example, if you have a horizontal row of objects and you move them relatively by X=5px with "Apply to each object separately" 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). <br />
<br />
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.<br />
<br />
=Live path effects=<br />
== Notable bug fixes and effect changes==<br />
We try to refrain from changing the behavior of LPE's, because it will change appearance in old files when opened in Inkscape¹. But when an effect is really broken, we have to fix it.<br />
<br />
[¹ fixme: Shouldn't the above say "it will change editing behaviour in old files" ? If it changes the appearance, then that's a bug: inkscape should always save SVG that represents the appearance, and should display according to the SVG rather than any inkscape:blah annotations. --pjrm <br><br />
What is meant is the following. Files with LPEs opened in a random viewer will always look the same, regardless of Inkscape version. However, when viewed in Inkscape, the LPE is recalculated. When LPE behavior changes, the appearance will change. --johan]<br />
<br />
* The Pattern Along Path effect used to stretch the pattern across discontinuities. This has been fixed; now it treats a discontinuous path as a group of continuous paths and applied the effect separately to each.<br />
<br />
==New effects==<br />
[new: sketch, von koch, knot]<br />
<br />
* 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]<br />
<br />
* '''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.<br />
<br />
: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. <br />
<br />
:To create a Spiro path, select any path and assign the "Spiro spline" 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:<br />
<br />
:* 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.<br />
<br />
:* 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.<br />
<br />
:* Half-smooth nodes - those with one Bezier handle collinear with a straight line segment on the other hand - become "left" or "right" 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.<br />
<br />
: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. <br />
<br />
:Some configurations of points do not converge and produce wild loops and spirals instead of a smooth curve. According to Raph, "The spline solver in this release is _not_ numerically robust. When you start drawing random points, you'll quickly run into divergence. However, "sensible" plates based on real fonts usually converge." Avoid too sharp changes in direction between points to prevent divergence. Hopefully, the robustness of the algorithm will be improved in future releases.<br />
<br />
: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 as it is a distraction. 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. <br />
<br />
: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.<br />
<br />
* '''Construct Grid''' [johan]<br />
<br />
* '''Perpendicular bisector''' [max]<br />
<br />
==New features==<br />
* 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.<br />
<br />
* A new command, '''Remove path effect''' removes any path effects from all selected objects, going recursively into groups if necessary. <br />
<br />
* 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.<br />
<br />
* Live path effects can now be assigned to the sides of a 3D box (use Ctrl+click to select individual sides).<br />
<br />
* 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.<br />
<br />
* Path type parameters can now link to existing shapes <b>and text</b>, like clones do. Now it is possible to use text as input for the Pattern Along Path effect for example!<br />
<br />
* Lib2geom now has an implementation for SVGEllipticalArc. 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]<br />
<br />
==Live Path Effect for groups==<br />
<br />
LPE can now be assigned to a group. For most LPE, the effect is applied recursively but for Bend Path the result is more powerful : the distortion applies on the whole group. <br />
<br />
*Original path of the group can as usual be edited by double-clicking. <br />
*It applies recursively, this means that a LPE can be assigned to groups of groups <br />
*The Effect can be applied definitively with "Convert Object to path"<br />
<br />
=Import/Export=<br />
==Corel DRAW files import==<br />
<br />
Now Inkscape can import more Corel DRAW files of following types:<br />
<br />
* Corel DRAW Compressed Exchange files (CCX)<br />
* Corel DRAW 7-X4 Template files (CDT)<br />
* Corel DRAW Presentation Exchange files (CMX)<br />
<br />
Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==sK1 files import==<br />
<br />
Inkscape uses UniConvertor to import sK1 files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==CGM import==<br />
<br />
Inkscape uses UniConvertor to import Computer Graphics Metafile (CGM) files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==PDF export==<br />
<br />
With PDF export, it is now possible to make the PDF page the size of the entire drawing, instead of the same as SVG page as before by the "Export drawing, not page" checkbox in PDF export options. Also, you can export a single object from a complex document to PDF if you specify the ID of that object in the "Limit export to the object with ID" field; the page of such PDF will be the same size as the bounding box of that object and will show only that object (all others will be hidden).<br />
<br />
The same capabilities are available from the command line by using <code>--export-area-drawing</code> and <code>--export-id=ID</code> parameters with <code>--export-pdf</code> (previously, they only worked for PNG export).<br />
<br />
=Extension effects=<br />
==New and improved effects==<br />
<br />
* The new '''Arrange > 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.).<br />
* The improved '''Modify Path > Add Nodes''' extension now also allows segments to be divided into a given number of subsegments.<br />
* The new '''Render > Alphabet Soup''' extension is a vector rework of Matt Chrisholm's GPLed script [http://www.theory.org/artprojects/alphabetsoup/main.html]. Alphabet Soup randomly mashes glyph-elements together to make exotic looking text.<br />
* The new '''Render > 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.<br />
* The new '''Render > 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.<br />
* The new '''Text > Convert to Braille''' extension recodes English (or just Latin letters) text to [http://en.wikipedia.org/wiki/Braille Braille] code created for visually impaired people.<br />
<br />
==API changes==<br />
<br />
While the "Live preview" checkbox is useful for most effects, for some it just does not make sense. Now, you can add the attribute <code>needs-live-preview="false"</code> in the <code>effect</code> element in the .inx file of the effect to suppress this checkbox for your effect.<br />
<br />
Parameters passed to extensions (via the <param> element) now have a new boolean attribute - <code>gui-hidden</code> 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.<br />
<br />
All '''.inx''' files are now properly formatted XML files with its own namespace of: <code><nowiki>http://www.inkscape.org/namespace/inkscape/extension</nowiki></code> and a Relax NG schema to define it. More information can be found in the [[Extensions]] Article.<br />
<br />
=SVG output=<br />
<br />
==Optimized CSS properties==<br />
<br />
As a file size optimization, Inkscape does not write into SVG some of the stroke properties if the object has stroke:none and some of the fill properties when it has fill:none. The only situation where this might affect you is if you remove stroke from an object and then turn it back on - the object will get the default stroke instead of the same it had before. <br />
<br />
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.<br />
<br />
Specifically, if stroke:none, the following properties do not get written to SVG:<br />
<br />
stroke-width<br />
stroke-linecap<br />
stroke-linejoin<br />
stroke-miterlimit<br />
stroke-opacity<br />
stroke-dasharray<br />
stroke-dashoffset<br />
<br />
Note that this does not include marker properties, which means you can still have markers on a path without visible stroke.<br />
<br />
If fill:none, the following properties do not get written to SVG:<br />
<br />
fill-opacity<br />
fill-rule<br />
<br />
==Optimized path data==<br />
<br />
In this version, the size of the path data written in the <code>d=</code> attribute of <code>path</code> elements is reduced by about 10%. Inkscape generates the shortest possible path strings by avoiding repeated operators and using relative coordinates (when it helps).<br />
<br />
This is controlled by the following attributes in <code>group id="svgoutput"</code> in your preferences.xml file:<br />
<br />
* allowrelativecoordinates (default 1) to switch relative coordinates on (1) or off (0)<br />
* forcerepeatcommands (default 0) to force repeating operators (1) or allow use of the more compact representation without repeated operators (0)<br />
<br />
=User interface=<br />
==Filters can be disabled==<br />
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 "normal" and "outline" view modes.<br />
<br />
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.<br />
<br />
==Native file dialogs for Windows==<br />
The windows builds of inkscape now have Windows-native file dialogs to keep consistency with other windows applications.<br />
<br />
==Clipboard enhancements==<br />
<br />
The clipboard used by Inkscape is now system-wide instead of being confined to a single instance of the application. Copied elements are exported to the clipboard using all the available output formats. SVG data can be pasted into other applications supporting one of Inkscape's output formats, and SVG data provided by other applications can be pasted into Inkscape.<br />
<br />
If you copy a string that can be interpreted as a hexadecimal color specification, i.e. 2f7ab4 or #014522b0, and then paste it into Inkscape, the fill of the selected objects will change to the given color. This is especially useful when working with HTML pages.<br />
<br />
==Masks and clipping paths==<br />
<br />
[editable in node tool - johan]<br />
<br />
==Stroke width changeable by dragging==<br />
<br />
[bbyak]<br />
<br />
==Enhanced Tablet Support==<br />
<br />
===Input device tool switching===<br />
<br />
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.<br />
<br />
===Extended input device configuration===<br />
<br />
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.<br />
<br />
Additionally hardware setup itself has been separated from general settings to allow for easier dynamic switching of settings appropriate to the task at hand.<br />
<br />
==Dropper tool==<br />
<br />
The confusing icons on buttons in the controls bar of the Dropper tool (pick/assign opacity) are replaced by text labels.<br />
<br />
==Swatches==<br />
<br />
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 to show a tool tip is difficult.<br />
<br />
==Toolbars==<br />
<br />
The toolbar icon sizes for the three main toolbars are now separately configurable and to a few different sizes. This allows users to get a smaller UI on certain systems, including Ubuntu.<br />
<br />
==External Image Editing and Reload==<br />
<br />
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 can be controlled by user preferences.<br />
<br />
=Grids, guides, snapping=<br />
<br />
==Grids==<br />
* The dotted rectangular grid now shows small crosses at the intersection points of emphasis lines.<br />
<br />
==Guides==<br />
<br />
There is now an option to treat groups as single objects during conversion to guides (as opposed to converting each object inside the group separately).<br />
<br />
==Snapping==<br />
Snapping has been implemented or improved in these areas:<br />
* The '''node tool''' now snaps to any unselected node (cusp or smooth) within the path that's being edited, and to cusp nodes of other paths. It also snaps to the path itself, but only to the stationary segments in between two unselected nodes.<br />
* The object snapper now also allows to snap to the '''page border'''<br />
* Snapping while '''skewing has''' been improved<br />
<br />
==Snap indicator==<br />
When snapping has occurred, an indicator is displayed at that specific position. For now that indicator is just a cross that disappears in a second. In the future the shape of the indicator will be related to the type of target that has been snapped to. The snapping indicator can be enabled in the Document Properties dialog.<br />
<br />
=Notable bug fixes=<br />
<br />
* 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 "Filter general settings" tab of the Filter Effects dialog.<br />
<br />
: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 bbox for selection of the export area; this means that you can now export a blurred object to bitmap without any clipping of the blur.<br />
<br />
* Several fixes allows Inkscape to correctly render and edit SVG files that use <code>currentColor</code> in objects' style (this includes files created by gnuplot).<br />
<br />
= Previous releases =<br />
<br />
* [[ReleaseNotes046]]<br />
* [[ReleaseNotes045]]<br />
* [[ReleaseNotes044]]<br />
* [[ReleaseNotes043]]<br />
* [[ReleaseNotes042]]<br />
* [[ReleaseNotes041]]<br />
* [[ReleaseNotes040]]<br />
* [[ReleaseNotes039]]<br />
* [[ReleaseNotes038]]<br />
* [[ReleaseNotes037]]<br />
* [[ReleaseNotes036]]<br />
* [[ReleaseNotes035]]<br />
<br />
[[Category:Marketing]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&diff=27154Release notes/0.472008-04-02T12:37:58Z<p>Cilix: /* New effects */ Perspective paths</p>
<hr />
<div>=Inkscape 0.47=<br />
'''(not released yet)'''<br />
<br />
=Tools=<br />
<br />
==Node tool==<br />
<br />
* [helper path display, flashing - johan]<br />
* 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).<br />
* snapping has been improved (more details in Snapping below)<br />
<br />
==Calligraphy tool ==<br />
Added 4 preset buttons for dip, pen, brush and reed in the toolbox. Clicking one button sets the calligraphic tool with the matching presets.<br />
<br />
=Live path effects=<br />
==New effects==<br />
[new: sketch, von koch, knot]<br />
<br />
* 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).<br />
<br />
==New features==<br />
* 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.<br />
<br />
* A new command, '''Remove path effect''' removes any path effects from all selected objects, going recursively into groups if necessary. <br />
<br />
* 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.<br />
<br />
* Live path effects can now be assigned to the sides of a 3D box (use Ctrl+click to select individual sides).<br />
<br />
* 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.<br />
<br />
==Live Path Effect for groups==<br />
<br />
LPE can now be assigned to a group. For most LPE, the effect is applied recursively but for Bend Path the result is more powerful : the distortion applies on the whole group. <br />
<br />
*Original path of the group can as usual be edited by double-clicking. <br />
*It applies recursively, this means that a LPE can be assigned to groups of groups <br />
*The Effect can be applied definitively with "Convert Object to path"<br />
<br />
=Import/Export=<br />
==Corel DRAW files import==<br />
<br />
Now Inkscape can import more Corel DRAW files of following types:<br />
<br />
* Corel DRAW Compressed Exchange files (CCX)<br />
* Corel DRAW 7-X4 Template files (CDT)<br />
* Corel DRAW Presentation Exchange files (CMX)<br />
<br />
Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==sK1 files import==<br />
<br />
Inkscape uses UniConvertor to import sK1 files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==CGM import==<br />
<br />
Inkscape uses UniConvertor to import Computer Graphics Metafile (CGM) files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==PDF export==<br />
<br />
With PDF export, it is now possible to make the PDF page the size of the entire drawing, instead of the same as SVG page as before by the "Export drawing, not page" checkbox in PDF export options. Also, you can export a single object from a complex document to PDF if you specify the ID of that object in the "Limit export to the object with ID" field; the page of such PDF will be the same size as the bounding box of that object and will show only that object (all others will be hidden).<br />
<br />
The same capabilities are available from the command line by using <code>--export-area-drawing</code> and <code>--export-id=ID</code> parameters with <code>--export-pdf</code> (previously, they only worked for PNG export).<br />
<br />
=Extension effects=<br />
==New and improved effects==<br />
<br />
* The new '''Text > Convert to Braille''' extension recodes English (or just Latin letters) text to [http://en.wikipedia.org/wiki/Braille Braille] code created for visually impaired people.<br />
* The new '''Render > Alphabet Soup''' extension is a vector rework of Matt Chrisholm's GPLed script [http://www.theory.org/artprojects/alphabetsoup/main.html]. Alphabet Soup randomly mashes glyph-elements together to make exotic looking text.<br />
<br />
=SVG output=<br />
<br />
==Optimized CSS properties==<br />
<br />
As a file size optimization, Inkscape does not write into SVG some of the stroke properties if the object has stroke:none and some of the fill properties when it has fill:none. The only situation where this might affect you is if you remove stroke from an object and then turn it back on - the object will get the default stroke instead of the same it had before. <br />
<br />
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.<br />
<br />
Specifically, if stroke:none, the following properties do not get written to SVG:<br />
<br />
stroke-width<br />
stroke-linecap<br />
stroke-linejoin<br />
stroke-miterlimit<br />
stroke-opacity<br />
stroke-dasharray<br />
stroke-dashoffset<br />
<br />
Note that this does not include marker properties, which means you can still have markers on a path without visible stroke.<br />
<br />
If fill:none, the following properties do not get written to SVG:<br />
<br />
fill-opacity<br />
fill-rule<br />
<br />
==Optimized path data==<br />
<br />
In this version, the size of the path data written in the <code>d=</code> attribute of <code>path</code> elements is reduced by about 10%. Inkscape generates the shortest possible path strings by avoiding repeated operators and using relative coordinates (when it helps).<br />
<br />
This is controlled by the following attributes in <code>group id="svgoutput"</code> in your preferences.xml file:<br />
<br />
* allowrelativecoordinates (default 1) to switch relative coordinates on (1) or off (0)<br />
* forcerepeatcommands (default 0) to force repeating operators (1) or allow use of the more compact representation without repeated operators (0)<br />
<br />
=User interface=<br />
==Filters can be disabled==<br />
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 "normal" and "outline" view modes.<br />
<br />
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.<br />
<br />
==Native file dialogs for Windows==<br />
The windows builds of inkscape now have Windows-native file dialogs to keep consistency with other windows applications.<br />
<br />
==Clipboard enhancements==<br />
<br />
The clipboard used by Inkscape is now system-wide instead of being confined to a single instance of the application. Copied elements are exported to the clipboard using all the available output formats. SVG data can be pasted into other applications supporting one of Inkscape's output formats, and SVG data provided by other applications can be pasted into Inkscape.<br />
<br />
If you copy a string that can be interpreted as a hexadecimal color specification, i.e. 2f7ab4 or #014522b0, and then paste it into Inkscape, the fill of the selected objects will change to the given color. This is especially useful when working with HTML pages.<br />
<br />
==Masks and clipping paths==<br />
<br />
[johan]<br />
<br />
==Enhanced Tablet Support==<br />
<br />
===Input device tool switching===<br />
<br />
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.<br />
<br />
===Extended input device configuration===<br />
<br />
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.<br />
<br />
Additionally hardware setup itself has been separated from general settings to allow for easier dynamic switching of settings appropriate to the task at hand.<br />
<br />
==Dropper tool==<br />
<br />
The confusing icons on buttons in the controls bar of the Dropper tool (pick/assign opacity) are replaced by text labels.<br />
<br />
=Grids, guides, snapping=<br />
<br />
==Guides==<br />
<br />
There is now an option to treat groups as single objects during conversion to guides (as opposed to converting each object inside the group separately).<br />
<br />
==Snapping==<br />
Snapping has been implemented or improved in these areas:<br />
* The '''node tool''' now snaps to any unselected node (cusp or smooth) within the path that's being edited, and to cusp nodes of other paths. It also snaps to the path itself, but only to the stationary segments in between two unselected nodes.<br />
* The object snapper now also allows to snap to the '''page border'''<br />
<br />
=Notable bug fixes=<br />
<br />
* 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 "Filter general settings" tab of the Filter Effects dialog.<br />
<br />
: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 bbox for selection export area; this means that you can now export a blurred object to bitmap without any clipping of the blur.<br />
<br />
= Previous releases =<br />
<br />
* [[ReleaseNotes046]]<br />
* [[ReleaseNotes045]]<br />
* [[ReleaseNotes044]]<br />
* [[ReleaseNotes043]]<br />
* [[ReleaseNotes042]]<br />
* [[ReleaseNotes041]]<br />
* [[ReleaseNotes040]]<br />
* [[ReleaseNotes039]]<br />
* [[ReleaseNotes038]]<br />
* [[ReleaseNotes037]]<br />
* [[ReleaseNotes036]]<br />
* [[ReleaseNotes035]]<br />
<br />
[[Category:Marketing]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Startseite&diff=25824Startseite2008-03-21T00:14:33Z<p>Cilix: link zu Summer of Code berichtigt</p>
<hr />
<div>__NOTOC__<br />
__NOEDITSECTION__<br />
<br />
== Deutsches Inkscape-Wiki ==<br />
<br />
Hier hat jeder die Freiheit mitzuarbeiten (mehr zur [[WikiSyntax]]) oder sich einfach nur zu informieren. Dies ist eine Übersetzung der [[Main_Page|englischen Originalseite]].<br />
<br />
'''Kubuntu-Benutzer: Inkscape auf deutsch erhält man durch Installieren des Pakets "language-pack-gnome-de"!'''<br />
<br />
<table cellspacing="11" width="100%"><tr valign="top"><br />
<td style="width:33%;background-color: #E6E6E6; padding:.5em;"><br />
<br />
=== Über Inkscape ===<br />
<br />
* [http://www.inkscape.org/ Inkscape-Webpräsenz]<br />
* [[UeberInkscape|Über Inkscape]]<br />
* [[Inkscapes Leistungsumfang]] (InkscapeFeatures)<br />
* [[DeFAQ|FAQ]] - Häufig gestellte Fragen<br />
* [http://inkscape.org/cgi-bin/wiki.pl?ProjectInfo Projekt-Info]<br />
* [[UnterstuetzteBetriebssysteme|Unterstützte Betriebssysteme]]<br />
* [[Werkzeuge]] - Nützliche Werkzeuge und Hilfen im Umgang mit SVG<br />
* [[BenutzerGalerien]] <br />
* [http://inkscape.org/cgi-bin/wiki.pl?ArticlesAndPresentations Artikel und Präsentationen]<br />
* TestimonialComments<br />
* [[InkscapePopularitaet|Inkscape Popularität]]<br />
* [[ContactInfo]] (engl.) Unsere Helden :)<br />
<br />
</td><td style="width:33%;background-color: white; padding:.5em;"><br />
<br />
=== Benutzerdokumentation ===<br />
<br />
* [[GermanTerminology| Inkscape-Terminologie]]<br />
* [[Benutzer-Handbuch]]<br />
* [http://de.wikibooks.org/wiki/Inkscape Deutsches Wikibuch]<br />
* [http://www.inkscape.org/doc/ Tutorien]<br />
* InkscapeSVG vs. [http://inkscape.org/cgi-bin/wiki.pl?PlainSVG Standard-SVG]<br />
* [[DesignPrinzipien]]<br />
* [[Formate|Arbeiten mit anderen Formaten]]<br />
* GettingEffectsWorking<br />
* [http://inkscape.org/cgi-bin/wiki.pl?UsingTheConnectorTool Arbeiten mit dem Verbinder-Werkzeug]<br />
* [[Schriften_Als_Benutzer_Installieren]]<br />
* [[ReleaseNotes047| (engl.) für zukünftige Version 0.47]]<br />
* [[ReleaseNotes046| (engl.) für zukünftige Version 0.46]]<br />
* [[ReleaseNotes045| (engl.) für Version 0.45]]<br />
* [[ReleaseNotes044| (engl.) für Version 0.44 und älter]]<br />
* PressRelease (engl.) für Version 0.43 und älter<br />
<br />
* [[ReleaseAnnounce044-de| Release Ankündigung Ver. 0.44]]<br />
</td><br />
<br />
<td style="width:33%;background-color: #E6E6E6; padding:.5em;"><br />
<br />
=== Inkscape unterstützen - ohne zu programmieren === <br />
<br />
* [[HelpWanted|Hilfe gesucht]]<br />
* [[CreatingDists|Binärpakete erstellen]]<br />
* [[WebsiteEditing]]<br />
* [[NachrichtenSchreiben]]<br />
* [[UpdatingTrackerItems]]<br />
* [[TutorialIdeen|Tutorial Ideen]]<br />
* [[How_To_Start_A_Page|Wiki verbessern]]<br />
* [[InkscapeTesten]]<br />
<br />
</td></tr></table><br />
<br />
<table cellspacing="0" width="100%" style="background-color: white; border-width:1px; border-style:solid; border-color:#62C012"><br />
<br />
<tr valign="top" style="padding:11px 0em 0em 11px"><br />
<th colspan="2" align="left" style="padding:.5em 0em 0em .5em"><br />
<br />
=== Entwicklerdokumentation ===<br />
</th></tr><tr valign="top" align="left"><td style="width:50%;padding:.5em"><br />
<br />
==== Allgemein ====<br />
<br />
* [[DeveloperManual]]<br />
* [[CompilingInkscape]]<br />
* WorkingWithCVS<br />
* HandlingPreferences: creating and using preference values<br />
* AddSPObject: how to add a new SPObject type<br />
* ReprListeners: responding to XML doc changes<br />
* ErrorsAndWarnings: wie man mit Fehlern, Warnungen, und anderen Mitteilungen des compilers umgeht.<br />
* DebuggingTips: random tips to help debug problems<br />
* [[Amtsbezeichnungen]]: Bezeichnungen der Ämter von Inkscape<br />
* [[InkscapeJanitors]]: (engl.)kleine Aufgaben die erledigt werden müssen<br />
* [http://livarot.sourceforge.net/ Livarot]: for boolean ops<br />
<br />
</td><td style="width:50%;padding:.5em"><br />
<br />
==== Diskussionen zur Entwicklung ====<br />
<br />
* [[Plauderecke]]<br />
* [[Roadmap]]: Der Entwicklungsstand<br />
* [[NewFeatureProposals]]<br />
* [[ExtensionArchitectureProposals]]<br />
* [[Coding Style|Coding Style Discussion]]<br />
* [[FileTypes]]<br />
* [[Icons]] (Application + Interface)<br />
* [[ApplicationIcons]] ( more application + interface )<br />
* [[InkscapeColor]]<br />
* [[PrintingSubsystem]]<br />
* [[SVG Competitors Plan]] - MS WVG vs SVG, etc<br />
* [[SVG Tiny Compliance]]<br />
* [[EinhaltungsCheck]] - W3C Test auf SVG konformität<br />
* [[CSS Support]]<br />
* [[OpenVG Standard]] (draft)<br />
* [[OpenDocument proposal]]<br />
* [http://wiki.inkscape.org/wiki/index.php/Googles_Summer_Of_Code Googles Summer of Code]<br />
<br />
</td></tr><tr valign="top" align="left"><td style="width:50%;padding:.5em"><br />
<br />
==== User-Interface Diskussionen ====<br />
<br />
* [[Informationen_Zu_Uebersetzungen|Informationen zu Übersetzungen]]<br />
* [[AccessibleGraphics]]<br />
* [[ObjectManager]]<br />
* [[DialogsReorganization]]<br />
* [[DialogReplacement]]<br />
* [[ModalInterfaces]]<br />
* [[TextUsability]]: text tool /dialog dialog<br />
* [[KeyboardShortcutsToDo]]<br />
** KeyboardProfiles: how you can help <br />
* [[StatusbarAPI]]<br />
* [[Animation-(Timeline)]]<br />
* [[Free Desktop Graphic Suite]]<br />
<br />
</td><td style="width:50%;padding:.5em"><br />
<br />
==== Diskussionen zu Architekturänderungen ====<br />
<br />
* [[SubsystemRearchitecture]]<br />
* [[CPlusPlus]]: Convert to C++<br />
* [[Pangoification]]: replace font rendering subsystem<br />
* GtkMMification: replace C boilerplate with gtkmm objects<br />
* [[PathRepresentation]]<br />
* [[Cairoification]]<br />
* [[ScribusInteroperability]]<br />
<br />
</td></tr></table><br />
<br />
* [[WikiAttic]]: (engl.) Seiten, die keiner mehr braucht, aber die der Nachwelt unbedingt erhalten bleiben müssen. ;)<br />
[[Category:User Documentation]]<br />
[[Category:German]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&diff=25544Release notes/0.472008-03-19T15:02:57Z<p>Cilix: /* Grids, guides, snapping */</p>
<hr />
<div>=Inkscape 0.47=<br />
'''(not released yet)'''<br />
<br />
=Tools=<br />
<br />
==Node tool==<br />
<br />
* [helper path display, flashing - johan]<br />
* 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).<br />
* snapping has been improved (more details in Snapping below)<br />
<br />
==Calligraphy tool ==<br />
Added 4 preset buttons for dip, pen, brush and reed in the toolbox. Clicking one button sets the calligraphic tool with the matching presets.<br />
<br />
=Live path effects=<br />
<br />
[sketch, von koch, knot]<br />
<br />
=Import/Export=<br />
==Corel DRAW files import==<br />
<br />
Now Inkscape can import more Corel DRAW files of following types:<br />
<br />
* Corel DRAW Compressed Exchange files (CCX)<br />
* Corel DRAW 7-X4 Template files (CDT)<br />
* Corel DRAW Presentation Exchange files (CMX)<br />
<br />
Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==sK1 files import==<br />
<br />
Inkscape uses UniConvertor to import sK1 files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==CGM import==<br />
<br />
Inkscape uses UniConvertor to import Computer Graphics Metafile (CGM) files. Text objects are not supported as of UniConvertor 1.1.1.<br />
<br />
==PDF export==<br />
<br />
With PDF export, it is now possible to make the PDF page the size of the entire drawing, instead of the same as SVG page as before by the "Export drawing, not page" checkbox in PDF export options. Also, you can export a single object from a complex document to PDF if you specify the ID of that object in the "Limit export to the object with ID" field; the page of such PDF will be the same size as the bounding box of that object and will show only that object (all others will be hidden).<br />
<br />
The same capabilities are available from the command line by using <code>--export-area-drawing</code> and <code>--export-id=ID</code> parameters with <code>--export-pdf</code> (previously, they only worked for PNG export).<br />
<br />
=Extension effects=<br />
==New and improved effects==<br />
<br />
* The new '''Text > Convert to Braille''' extension recodes English (or just Latin letters) text to [http://en.wikipedia.org/wiki/Braille Braille] code created for visually impaired people.<br />
* The new '''Render > Alphabet Soup''' extension is a vector rework of Matt Chrisholm's GPLed script [http://www.theory.org/artprojects/alphabetsoup/main.html]. Alphabet Soup randomly mashes glyph-elements together to make exotic looking text.<br />
<br />
=SVG output=<br />
<br />
==Optimized CSS properties==<br />
<br />
As a file size optimization, Inkscape does not write into SVG some of the stroke properties if the object has stroke:none and some of the fill properties when it has fill:none. The only situation where this might affect you is if you remove stroke from an object and then turn it back on - the object will get the default stroke instead of the same it had before. <br />
<br />
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.<br />
<br />
Specifically, if stroke:none, the following properties do not get written to SVG:<br />
<br />
stroke-width<br />
stroke-linecap<br />
stroke-linejoin<br />
stroke-miterlimit<br />
stroke-opacity<br />
stroke-dasharray<br />
stroke-dashoffset<br />
<br />
Note that this does not include marker properties, which means you can still have markers on a path without visible stroke.<br />
<br />
If fill:none, the following properties do not get written to SVG:<br />
<br />
fill-opacity<br />
fill-rule<br />
<br />
==Optimized path data==<br />
<br />
In this version, the size of the path data written in the <code>d=</code> attribute of <code>path</code> elements is reduced by about 10%. Inkscape generates the shortest possible path strings by avoiding repeated operators and using relative coordinates (when it helps).<br />
<br />
This is controlled by the following attributes in <code>group id="svgoutput"</code> in your preferences.xml file:<br />
<br />
* allowrelativecoordinates (default 1) to switch relative coordinates on (1) or off (0)<br />
* forcerepeatcommands (default 0) to force repeating operators (1) or allow use of the more compact representation without repeated operators (0)<br />
<br />
=Live path effects=<br />
<br />
* 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.<br />
<br />
* A new command, '''Remove path effect''' removes any path effects from all selected objects, going recursively into groups if necessary. <br />
<br />
* 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.<br />
<br />
=User interface=<br />
==Native File Dialogs for Windows==<br />
The windows builds of inkscape now have Windows-native file dialogs to keep consistency with other windows applications.<br />
<br />
==Masks and clipping paths==<br />
<br />
[johan]<br />
<br />
==Dropper tool==<br />
<br />
The confusing icons on buttons in the controls bar of the Dropper tool (pick/assign opacity) are replaced by text labels.<br />
<br />
=Grids, guides, snapping=<br />
<br />
==Guides==<br />
<br />
There is now an option to treat groups as single objects during conversion to guides (as opposed to converting each object inside the group separately).<br />
<br />
==Snapping==<br />
Snapping has been implemented or improved in these areas:<br />
* The '''node tool''' now snaps to any unselected node (cusp or smooth) within the path that's being edited, and to cusp nodes of other paths. It also snaps to the path itself, but only to the stationary segments in between two unselected nodes.<br />
* The object snapper now also allows to snap to the '''page border'''<br />
<br />
=Notable bug fixes=<br />
<br />
* Live path effects can now be assigned to the sides of a 3D box (use Ctrl+click to select individual sides).<br />
<br />
= Previous releases =<br />
<br />
* [[ReleaseNotes046]]<br />
* [[ReleaseNotes045]]<br />
* [[ReleaseNotes044]]<br />
* [[ReleaseNotes043]]<br />
* [[ReleaseNotes042]]<br />
* [[ReleaseNotes041]]<br />
* [[ReleaseNotes040]]<br />
* [[ReleaseNotes039]]<br />
* [[ReleaseNotes038]]<br />
* [[ReleaseNotes037]]<br />
* [[ReleaseNotes036]]<br />
* [[ReleaseNotes035]]<br />
<br />
[[Category:Marketing]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=SpecGuidesImprovement&diff=25474SpecGuidesImprovement2008-03-18T23:27:24Z<p>Cilix: /* Rationale */</p>
<hr />
<div>Launchpad Entry:<br />
https://blueprints.launchpad.net/inkscape/+spec/guides-improvement<br />
<br />
== Summary ==<br />
This specs provides a comprehensive way of managing guides and guidesets (which are groups of guides).<br />
<br />
== Release Note ==<br />
== Rationale ==<br />
Guides are one of the stronger workhorses of any vector editing application. Inkscape has a powerful set of options but I feel the way to manage guides is mainly focused on a per-guide basis and has lagged a bit behind the overall quality of the software. My points for this argument are:<br />
* The current dialog for manually setting guides properties is not as good as it should be since it tops the main window and the user has to pop-up the guides dialog for every editing, breaking the workflow. Also, is inconsistent with the way dock tabs work (much less obstructive).<br />
* The user can't change the color on a per-guide basis.<br />
* This spec adds basic managing operations such as add, remove, copy, visible/invisible and lock/unlock for guides.<br />
** Lock /unlock lets the user specify if the guides should be selectable along the objects or not.<br />
* It also deploys a complete UI framework for fitting the current types of guides (horizontal, vertical and angled) and adding other types of guides (see [https://blueprints.launchpad.net/inkscape/+spec/composition-guides composition guides], or others to come).<br />
* This spec introduces the concept of a '''Guideset''' (or just '''Set'''). This is a bunch of guides that are grouped, having common managing options (copy, delete, visible/invisible, move and rotate).<br />
** If the user selects a set, all of the guides inside it are edited homogeneously.<br />
** Sets allows the user to arrange his guides in a comprehensive way (specially important when there are dozens of guides on the document).<br />
* Right now, for angled guides, the user can edit the angle and center of the guide numerically but not on-canvas. I try to improve this too.<br />
<br />
== Design ==<br />
=== UI ===<br />
Pretty self-explanatory...<br />
<br />
[[Image:Guides-mockup.png|left]]<br />
<br />
The guides shown inside the viewer contains from left to right: visible/invisible, ID (name), and icon for type.<br />
<br />
=== On-canvas editing ===<br />
The guides can be edited on canvas with only mouse and some key modifiers. These modifiers try to mimic the current behavior when transforming objects.<br />
<br />
[[Image:Guide_editing_mockup.png]]<br />
<br />
The rotation can be snapped as any other node to grids or other guides.<br />
<br />
=== Usage ===<br />
* The IDs of the newly created guides should have more meaningful names like ''guide001'', ''guide002'', ''guide003'', etc. More appropriate would be to have the names being "smart", i.e.: the name has some resemblance to the name of the guideset it is attached to. So if you have a guideset called ''left eye'' the guides are named ''left eye001'', ''left eye002'', etc. A guideset called ''right eye'' would have guides named ''right eye001'', ''right eye 002'', etc.<br />
<br />
* '''How does lock/unlock work?''':<br />
** A ''locked guide'' can be moved and rotated on-canvas the same as an ''unlocked guide''. However, the ''un''locked one will be selectable along the objects with the selector tool (both dragging a square and touch selection), and moving and rotating the object will do the same to the guides.<br />
<br />
* '''Guidesets:'''<br />
<br />
=== SVG representation ===<br />
<br />
== TODO ==<br />
* Detail how to use it: Sets like "text" and inside them guides like "text", "title1", "footnote", etc.<br />
<br />
== Discussion ==<br />
I'm unsure about these ideas. Please, discuss below.<br />
<br />
* IDEA: Add '''snap''' option for every guide or every set, so the user is able to decide if snappable elements should snap to it or not.<br />
* IDEA: Add '''attach''' option so a guide or guideset can be attached to an object, so selecting and transforming the object automatically moves and transforms the guides.</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=TeamInterview046&diff=23804TeamInterview0462008-03-10T23:27:05Z<p>Cilix: /* Maximilian Albert */</p>
<hr />
<div>= Interview with the team on Inkscape 0.46 =<br />
<br />
With almost 50 contributors out of 111 registered at SourceForge, and even more, if you count those who just sent a patch via patches tracker, it's no really possible to talk to everyone who participated at the preparation of the shiny new Inkscape 0.46 release.<br />
<br />
Below is the interview with several Google Summer of Code 2007 students and several Inkscape developers.<br />
<br />
== Maximilian Albert ==<br />
<br />
'''Info''': Heidelberg, Germany. Aiming for a "Diplom" degree in mathematics (currently in the middle of his final examinations), singing in various choirs & vocal groups and coding for Inkscape.<br />
<br />
''When you started 3D box tool, did you have in mind just drawing a 3D box or did you think about it as of first step to functionality like extrusion?''<br />
<br />
I certainly also had extrusion in mind, as well as a couple of other things (in particular, I would have loved if the opportunity had arisen to include more "geometric" functionality; see the link below). You may want to have a look at the original proposal, especially at the section "further ideas":<br />
<br />
http://www.rzuser.uni-heidelberg.de/~malbert/<br />
<br />
And never mind that with hindsight the proposal turned out too ambitious :-/ Unfortunately the internal refactoring of the tool that was necessary after the end of SoC has kept me from completing a lot of these things in the meantime. Since I'm in the middle of my final examinations right now and do not yet know what will come afterwards, I'm not sure when I will get to resuming my work on it (other than providing a couple of improvements here and there). But hope dies last :)<br />
<br />
The good news is that the refactoring has brought extrusion very much within reach. It was only after SoC that I truly discovered lib2geom, but while playing around with it, it was only a matter of one night's work to produce a kind of LPE which draws a given arbitrary shape in a certain perspective :) However, integrating this into Inkscape itself will still be a challenge and require a lot of work (especially on the UI side). But the first attempts look promising.<br />
<br />
''While extrusion looks like natural next step, what more could be done based on current code?''<br />
<br />
Well, the above-mentioned draw-a-path-in-perspective thingy (which is actually tightly connected to extrusion) is definitely one thing that could and should be done. I believe that 3D box-based grids would also prove rather easy to do.<br />
<br />
Other than that, most things are likely to require a good deal of more infrastructure or interoperability with other parts of the code, and I don't have a concrete idea in mind what would be most natural thing to do. Of course, there also remains a huge deal to improve about the tool itself, its features and user-friendliness, so there probably won't be time to tackle great new tasks in the near future anyway.<br />
<br />
== Johan Engelen ==<br />
<br />
'''Info''': Enschede, The Netherlands. Working on tiny electrical machines for his PhD, playing guitar, drums and sax, and working on Inkscape 1.0.<br />
<br />
''Live Path Effects definitely bring Inkscape to a new level of flexibility. Could you please explain in few words how they "tick"?''<br />
<br />
Basically, Inkscape stores the original path in an "inkscape:original-d" attribute of a path. When it encounters such an attribute, it applies the effect refered to in the "inkscape:path-effect" attribute and outputs the result to the SVG "d" attribute. This way, LPE is 100% valid SVG and the result should look the same in all SVG viewers. Inkscape sees the "inkscape:original-d" attribute, but viewers and other editors will just ignore it and use the normal SVG "d" attribute.<br />
<br />
"inkscape:original-d" => LPE calculation => "d"<br />
<br />
Because the original path data is stored, Inkscape can perform node editing on it and recalculate the effect (and the result is again stored in the "d" attribute).<br />
<br />
Most effects will need parameters to modify their behavior. Those parameters are stored in the <defs> section of the SVG file. Probably it is best to start Inkscape, apply an effect and see what the SVG looks like in the XML Editor!<br />
<br />
The mathematics is done using lib2geom, or 2geom as we call it. Although this library is still in Alpha phase, it is already very powerful and greatly simplifies the programming effort on path data. This helped me a lot in writing the LPEs and it would have been much harder without it. We are planning on rewriting most of Inkscape to use 2geom functions.<br />
<br />
''Can new live effects easily be plugged into Inkscape?''<br />
<br />
One of the goals of my GSoC project was to make a framework for LPEs, so that developers can easily add new effects, without knowing much of the internals of Inkscape. I think I have succeeded in that goal, although all present effects are written by me. Better hopes for 0.47!<br />
<br />
Right now, Live Path Effects are built into the Inkscape executable, unlike the Python extensions. So it is not possible to, say, download a new effect from internet and use it in Inkscape. In the future, I intend to work on a plug-in system for LPEs, that would enable this downloading of new effects.<br />
<br />
''What great new effects could be done using LPE?''<br />
<br />
At the moment we already have a couple of powerful LPEs in Inkscape, displaying the possibilities. Live boolean operations could also be done with LPE.<br />
<br />
Right now, I am mentoring a group of French students who are working on an envelope distortion LPE. When that is working, the next step could be mesh distortion...<br />
<br />
== Gail Carmichael ==<br />
<br />
'''Info''': Becoming a Master of Computer Science in Ottawa, kicking butt in Taekwon Do, and trying to contribute to Inkscape with what time is left in between.<br />
<br />
''Text related changes that your GSoC projects brings to codebase in 0.46 are probably not quite user visible. Do they provide some groundwork for future versions? Could you please elaborate on that a little?''<br />
<br />
It is true that a lot of my work isn't as obvious or exciting to users as, say, the new 3D box tool. But that's exactly why the text tool can be so easily neglected, and one reason I wanted to jump on board with it and work on some improvements for the Summer of Code.<br />
<br />
The two areas that I worked on last summer included adding support for the <tref> element and adding a new font specification attribute to text elements. Thanks to the latter project, users will no longer be frustrated with duplicate or unselectable font choices in the font dialog. This also laid the groundwork for being able to change how we list the font families and styles in the dialog (that is, we can separate the names from the styles however we wish), and to support fonts that CSS can't describe. Hopefully I will be able to see this extra work through some day.<br />
<br />
''You had two internships in Corel before entering GSoC in 2007. How exactly different does it feel to work/research for an open source project? :)''<br />
<br />
It's a whole new experience to work with a team you can't see or talk to in person. (Though I was fortunate enough to meet a few key Inkscapers at the LGM in Montreal before the summer coding began.) The freedom you have when working on an open source project is quite nice, because you can work on pretty much whatever you want to. It's also quite interesting to see that all software projects, open source or commercial, can suffer from the same problems. For example, whether you belong to a corporate development team or contribute to an open source project, you are bound to produce bugs. What may differ is how these bugs are reported, triaged, and fixed. In open source, the user community participates in the process much more.<br />
<br />
== Bryce Harrington ==<br />
<br />
'''Info''': Portland, OR. I work at Canonical as the Ubuntu X.org maintainer, enjoy woodworking, and these focus on release coordination for Inkscape.<br />
<br />
''One sad fact about Inkscape is that it can be dead slow on complex documents. It was proclaimed that 0.47 will undergo a significant refactoring of the code base. Will it be just getting rid of code duplications and the like, or will it also bring various speed/memory optimizations, thread safety etc. to make Inkscape as robust and low-fat as possible?''<br />
<br />
Rather than performance, 0.47 will be focusing on getting rid of code duplications, correcting style inconsistencies, fixing object referencing issues, organizing source files better, breaking out libraries and sub-packages, continuing more C-to-C++ work, and completing various architectural reworking efforts that have been delayed by other priorities in the past.<br />
<br />
In theory, this should greatly help improve our situation with respect to thread safety. Performance improvements will probably be accidental, but hopefully with a cleaner codebase, performance improvements should become more obvious and simpler to do.<br />
<br />
However, often performance issues are algorithmic limitations, requiring shifting to different data structures or alternative logic, yet cannot be done due to the quantity of refactoring this would entail. 0.47 would be the ideal time to undertake such work, so I'm hopeful to see some ideas for these kind of improvements on the todo list.<br />
<br />
The refactoring will also get us into a better shape for switching out our renderer to Cairo. At that point, we'll be able to leverage the cairo team to help attain performance boosts on complex documents.<br />
<br />
''Are there any plans to implement optional use of GPU (e.g. through cairo-glitz)?''<br />
<br />
Exactly; once we have transitioned fully over to Cairo (post-0.47), this will be an important goal for us. It will take quite a bit of testing and working with the Cairo community to ensure we get maximum benefit of this.<br />
<br />
''Some Inkscape developers are known to create pet projects that might or might not be used by the core project later. Live Path Effects that entered 0.46 are largely based on 2geom — a library for computational geometry, though its integration was planned rather for 0.47. Can you name other subprojects that are in the queue for further inclusion? Adaptagrams maybe?''<br />
<br />
A lot of people are excited about the potential 2geom brings. I'm very enthusiastic to see it finish its alpha phase and be released in a form that we can start linking to as a normal dependency. Transitioning fully to 2geom will help remove a lot of core logic from Inkscape into a form that is easier for experts to maintain and optimize.<br />
<br />
One of the cool things about Inkscape is having people (often new contributors) bringing these new ideas into the project. Leveraging other people's code is one of the greatest features of being open source.<br />
<br />
We've also seen some great work with extensions and LPE's, and in 0.47/0.48 I'm hoping we can see plug-in type features be more formally handled in Inkscape, so that people can develop and install new extensions independently of the main Inkscape releases. This could both stimulate new subprojects, and remove code from the inkscape core to reduce its weight and better distribute the maintenance efforts.<br />
<br />
Inkboard is another sub-project which has received a lot of work but is not yet formally included by default in Inkscape. Unfortunately, it is not being maintained as actively as needed, and it's got a number of critical bugs that makes it difficult to use at the moment; this would be a great project for someone to build a subproject around.<br />
<br />
I expect one day we'll also have an animation sub-project. It's a popular feature request. While there's been discussion on the mailing list about it, we're still waiting on some proof of concept implementations of the various ideas and approaches. I think this would be rich and fruitful area for people with ample time and the need for a fun coding challenge to take stabs at.<br />
<br />
== John Bintz ==<br />
<br />
'''Info''': works and plays in Baltimore, MD. When he's not at his day job as a Web programmer, he's usually doing something comic related (most like working on "A Moment of Clarity," his all-ages comic), and his work on Inkscape is aimed toward making it the best tool for drawing, illustration, and comics. When he's not staring at a computer monitor, he drinks beer and thinks about making comics.<br />
<br />
''The new and shiny Inkscape 0.46 features a versatile bucket fill tool that traces any closed shape (bitmap or raster) to a path filled with a user defined color. In the past we've already seen Adobe dropping its standalone vectorization tool in favour of Live Trace in CS2. Might it be that Bucket Fill tool will obsolete the potrace-based tracer in the future? Or will the tracer become a interactive tool as well (considering that e.g. its SIOX related part still has room to enhancements)?''<br />
<br />
Honestly, I don't know. :) My experience with using potrace for bitmap tracing is limited to only what I needed to get the Bucket Fill tool working. The touch-fill functionality of the tool would be perfect for performing SIOX-like selections of areas to trace into appropriately-colored vector objects. I can still see the need for converting an entire imported image to vector in one swipe, say a logo, without needing to switch to a different tool to do so. Also, I don't have enough experience with Live Trace to know just how it operates.<br />
<br />
''I've seen the first contribution from you in the development tree around autumn 2003, at the very beginning of the project. But you wrote the Bucket Fill tool only last year. Might it mean that Inkscape just has become THE tool for your comics work? :)''<br />
<br />
Well that first contribution, which fixed a few small UI issues in Sodipodi, was done years before I even thought about doing "A Moment of Clarity," let alone doing the inking and coloring for it in vector. I didn't start using Inkscape seriously for my illustration work until 0.44, when the Calligraphy tool became solid enough for my style of inking, and when layer support was improved. Even then, there were many stability issues that made the drawing process frustrating. Between myself and other Inkscape devs, those issues were fixed in very short order. The Bucket Fill and Tweak tools were the final pieces of the puzzle that gave Inkscape a huge advantage over other drawing tools. Except for scanning in the original pencil artwork in The GIMP, and exporting the Web- and print-ready artwork using ImageMagick, the final comics you see are done entirely in Inkscape.<br />
<br />
Now, with the release of 0.46, I feel very comfortable recommending the software to other comic artists who are interested in working in vector and don't like the approach that other vector tools take when it comes to hand-drawn illustration work. I've shown development builds of the software to a few other artists and, with few exceptions, they immediately asked when the final version (0.46) would be out. :)<br />
<br />
== Ted Gould ==<br />
<br />
'''Info''': Los Angeles, California. I work for Canonical on Ubuntu and enjoy photography, hiking and graphics.<br />
<br />
''The new version is a major leap to a better support for SVG features thanks to our "filters" and "text" people. What could be the next big thing feature-wise in 0.47? I think I saw a writing on the wall, and it mentioned SVG Fonts for sure... :-)''<br />
<br />
I try not to predict the "biggest" until the release is frozen, it's amazing what surprises people bring to the table. But if you're talking about SVG features I think the last major feature we need is fonts, so if that gets done for 0.47 it'll be big. But, we're hoping to have a lot of cleanup being the focus for the next little while, so hopefully the biggest features will be more polish and stability.<br />
<br />
''Raster effects that are available in 0.46 thanks to a GSoC student and ImageMagick (and you :-)) are destructive, while SVG Filters in the very same 0.46 are non-destructive. Do you see a way to unify them in one UI or, at least, make both non-destructive?''<br />
<br />
I don't like to think of anything as destructive as we still support the full undo buffer and user's data is never lost.<br />
<br />
But, as far as effects keeping the original shapes, I would like to see that. I hope that as the live-path-effects can be merged into the extensions system that additional code would allow for keeping data. I doubt that the UIs would be merged between SVG filters and effects, they're doing distinctly different operations, one is changing properties of the renderer while the other is changing the document.<br />
<br />
== bulia byak ==<br />
<br />
'''Info''': a non-programmer from Canada who suddenly found himself in charge of a lot of things in Inkscape<br />
<br />
''Once you mentioned that one of the reasons for creating engraver's toolbox in 0.46 was your love for old books illustrations. Did you mean illustration like the ones by Paul Gustave Doré? :) What further changes to the toolbox do you envision?''<br />
<br />
I wouldn't cite any single name — I'm just enchanted by the style in general. From high art to clumsy kitsch, any old engravings have something that a lot of modern art utterly lacks: a thoroughly handmade feel in every tiny detail. This is what I want to make possible again. Technology has made a lot of things obsolete - but it also has a potential to resurrect them at a new level, and that's what I'm interested in.<br />
<br />
However stupid the current copyright laws may be, they have one unintended positive side effect: they force us to look closer at the old stuff which has by now reached the safe harbor of public domain. I think Encyclopedia Britannica's 1911 edition has had more keen readers than any of the subsequent editions, due to its reuse in Wikipedia. The same thing is at work for graphics: a lot of clip art these days is scans from century-old publications, and most of these scans are black-and-white engravings. So this visual style is suddenly relevant again, but we cannot live off the old stock forever - we need modern tools that would allow us to continue and develop the old technique. I want Inkscape to become one of such tools.<br />
<br />
As for my future plans, time and resource permitting, I definitely want to expand this functionality, make it more robust and add features. I'm looking in two directions at once: I want it to be _more_ automatic in the way it is done, yet at the same time _less_ automatic - more handmade - in the way it looks. How far I will be able to go in these directions is hard to say, but I do have ideas to explore.<br />
<br />
''From what I remember, being one of key developers, you are also end-user of Inkscape. Is it the main drive behind your contributions?''<br />
<br />
Of course. I have always wanted to have a vector editor that does what I want in the way I want. That's what led me to Inkscape and what keeps me in the project to this day.<br />
<br />
<br />
----<br />
Interviewed by Alexandre Prokoudine</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.46&diff=18814Release notes/0.462008-01-27T14:17:34Z<p>Cilix: /* Creating guidelines from objects */</p>
<hr />
<div>=Inkscape 0.46=<br />
'''(not released yet)'''<br />
<br />
Highlights in this release:<br />
<br />
* Paintbucket tool<br />
<br />
* Tweak tool<br />
<br />
* 3D Box tool<br />
<br />
* Live path effects<br />
<br />
* Color management<br />
<br />
* New SVG filters and UI<br />
<br />
* Native PDF and AI import<br />
<br />
* XAML import/export<br />
<br />
* Open Clip Art Library integration (import/export)<br />
<br />
* Stock patterns<br />
<br />
* Bitmap editing extension effects<br />
<br />
* Full on-canvas gradient editing<br />
<br />
* Engraver's Toolbox in the Calligraphic tool<br />
<br />
* Touch selection<br />
<br />
* Dockable dialogs<br />
<br />
* Command-line access to verbs<br />
<br />
* Snapping made usable<br />
<br />
* "3D" / axonometric grid<br />
<br />
* Angled guidelines<br />
<br />
* Conversion of objects to guidelines<br />
<br />
* Significant speed and interactivity improvements<br />
<br />
* Hundreds of smaller features and bugfixes<br />
<br />
=Speed and interactivity=<br />
<br />
* 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. <br />
<br />
* '''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.<br />
<br />
* '''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). <br />
<br />
:'''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. <br />
<br />
* Minor improvements have been made to gradient rendering performance.<br />
<br />
* '''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. <br />
<br />
* '''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. <br />
<br />
* '''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.<br />
<br />
* Several improvements make '''canvas panning and scrolling''' smoother and more interactive in complex slow-rendering documents:<br />
<br />
:* 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 "dirty" but the '''panning is smoother than before''', with few if any "hiccups".<br />
<br />
:* '''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.<br />
<br />
:* 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.<br />
<br />
:* 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. <br />
<br />
:* The default '''starting speed and acceleration''' of Ctrl+arrows scrolling are slightly increased. (They are both settable in Preferences.)<br />
<br />
* Better responsiveness and more visual feedback in user interface: <br />
<br />
:*When you zoom, the '''zoom control''' on the right end of the statusbar now updates immediately, not after screen redraw as before. <br />
<br />
:*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. "Saving document...") while they work. <br />
<br />
:*The '''statusbar messages''' displayed while you're drawing a shape or a path in Pen tool do not lag behind the mouse movements.<br />
<br />
* '''Combine''' and '''Convert to paths''' commands are now orders of magnitude faster when applied to a selection with hundreds or thousands of objects.<br />
<br />
* 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.<br />
<br />
=Tools=<br />
<br />
==Paint Bucket tool==<br />
<br />
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 "fills in" the area in which you clicked. <br />
<br />
===How it works===<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
It places the rendered path onto the current layer, so you can have a layer on top (for example, "Inks") and select the layer below ("Colors") and do the fills so that they always appear below the Inks.<br />
<br />
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).<br />
<br />
===Style===<br />
<br />
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.<br />
<br />
===Controls===<br />
<br />
In the tool's '''Controls bar''':<br />
<br />
* 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:<br />
** Red<br />
** Green<br />
** Blue<br />
** Hue<br />
** Saturation<br />
** Lightness<br />
** Alpha<br />
<br />
* 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%.<br />
<br />
* 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.<br />
<br />
* 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:<br />
** None<br />
** Small (close gaps up to 2 pixels in size)<br />
** Medium (4 pixels)<br />
** Large (6 pixels)<br />
:Note that setting this parameter to other than None may slow down noticeably the filling of large areas.<br />
<br />
===Shortcuts===<br />
<br />
The tool's '''shortcuts''' are:<br />
<br />
* '''Single click''' performs filling from the click point.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
==Tweak tool==<br />
<br />
The Tweak tool is an exciting new way to edit drawings which largely blurs the<br />
distinction between vector and raster editing. Instead of meticulously selecting some<br />
objects and then performing an action on the selection, you can now select ''all''<br />
objects (or all objects you are interested in) and apply the Tweak tool's brush to<br />
smoothly and naturally change the shape or style of only those objects (or parts<br />
thereof) ''that the brush touches''.<br />
<br />
The area of the tool's action - its ''brush'' - is marked by an orange-colored circular<br />
outline that moves with your mouse cursor. However, that area actually has no sharp<br />
boundaries; the power of the tool's action falls off gradually, following a smooth<br />
bell-shaped profile. This makes the tool act softly and smoothly.<br />
<br />
The tool will work on any number of selected objects; for example, you can select all<br />
(Ctrl+A) and "smear" your entire drawing by Push mode or paint it by Color Paint<br />
mode. You can also apply it to groups of objects; it will go into groups and act on<br />
individual objects inside groups. If you're trying to use it without anything selected,<br />
it will remind you by a statusbar message to select some objects.<br />
<br />
===Width===<br />
<br />
The width of the tool's brush, in the range from 1 to 100, can be changed by the<br />
'''Width''' control in the tool's controls bar above the canvas. You can also change<br />
width by '''Left''' and '''Right''' arrow keys (same as in the Calligraphy tool) at any<br />
time (including during action) as well as '''Home''' and '''End'''. Also, as in Calligraphy<br />
tool, the visible width of the brush is independent of zoom; simply zooming in or out is<br />
often easier than adjusting the width if you want to cover a smaller or larger area of<br />
the drawing.<br />
<br />
===Force===<br />
<br />
The next control is '''Force''' which adjusts the power of the action, also in the<br />
range from 1 to 100. You can also change width by '''Up''' and '''Down''' arrow keys at<br />
any time (including during action).<br />
<br />
If you have a pressure-sensitive tablet and your "Use pressure" button on the right-hand<br />
end of the controls bar is on, then the force will also depend on how hard you actually<br />
press your pen into your tablet, changing in the range from zero to whatever you set in<br />
the Force control. If all you have is a mouse, then the force will be constant but still<br />
settable by the Force control. <br />
<br />
===Path editing modes===<br />
<br />
The Tweak tool has a number of '''modes''', selectable by toggle buttons in the tool's<br />
Controls bar and by keyboard shortcuts. Some of these modes change the shapes of <br />
paths while others affect the colors of objects. All these modes share the Width and<br />
Force controls but otherwise are quite different. Let's look at the path editing modes<br />
first.<br />
<br />
Unlike the Node tool, to edit paths with the Tweak tool you don't need to worry about<br />
where the nodes of a path are and how to manipulate them. You just apply the tool's<br />
brush to any point, and the selected paths at that point will reshape smoothly and<br />
naturally - as if made of soft jelly - regardless of where its nodes lie. If applied to<br />
a shape or text object, the tool converts them to paths automatically.<br />
<br />
While not very useful for technical drawings, tweaking paths will be indispensable for<br />
artistic uses of Inkscape - cartoons, drawings, sketches, anime, etc. This new<br />
functionality is somewhat similar to the tools such as "Pucker" and "Bloat" in the<br />
latest versions of Adobe Illustrator. <br />
<br />
There are currently six path editing modes in the Tweak tool: '''Push''', '''Shrink''',<br />
'''Grow''', '''Attract''', '''Repel''', and '''Roughen'''.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
: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).<br />
<br />
: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 Inflating and carving holes with Melting. Unlike the "node sculpting" mode in the Node tool, however, this does not require adding new nodes to the shape.<br />
<br />
* 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 ; you can use them for various central-symmetric distortions in parts of your paths.<br />
<br />
* The '''Roughen''' mode does exactly this: roughens the edge of the path without changing its overall shape. Slight roughening simply makes the edge crooked and uneven; strong roughening tears and explodes the edge into random blobs and splotches. Note that this operation, especially with high Fidelity, adds a lot of nodes which increases the size of your SVG document and may slow down Inkscape considerably. In particular, pushing/melting/inflating 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.<br />
<br />
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.<br />
<br />
====Fidelity====<br />
<br />
Any tweaking of a path slightly distorts the entire path, including even those parts<br />
that you didn't touch. These distortions are similar to those that a Simplify command<br />
produces. The '''Fidelity''' value (also in the range from 1 to 100, default is 50)<br />
allows you to control the amount of these distortions. With a higher fidelity, the<br />
distortions are less noticeable, but the path may end up having a lot of nodes which<br />
inflates up the SVG size and slows down Inkscape.<br />
<br />
The best value of Fidelity depends on the nature of your artwork. If you're sculpting an<br />
amorphous blob, you can do with low fidelity of about 20. If, however, you are pushing<br />
or inflating a text string (as a single path) and want the letters outside the distorted<br />
area to remain crisp and clean, you will need to raise fidelity to 80 or more. <br />
<br />
====Known problems====<br />
<br />
Known problems with the path editing modes in Tweak tool:<br />
<br />
# they don't work on open paths (an open path becomes closed if you tweak it);<br />
# they are rather slow; <br />
# they quickly eat memory; and <br />
# they are sometimes buggy - thin calligraphic strokes may suddenly disappear or change their shape drastically as you're melting or inflating them.<br />
<br />
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. <br />
<br />
Also, sometimes after roughening, further tweaking of a path becomes impossible with this diagnostic:<br />
<br />
WARNING **: Shape error in ConvertToShape: directedEulerian(a) == false<br />
<br />
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.<br />
<br />
===Color editing modes===<br />
<br />
The '''Color Paint''' and '''Color Jitter''' modes, unlike the path editing modes,<br />
change the colors of objects instead of their shapes. Yet they share enough common<br />
features with the path editing modes to be part of the same tool: These modes also use<br />
a circular soft-edged brush controlled by the Width and Force parameters on the Controls<br />
bar and affected by the pen pressure (if you have a pressure-sensitive tablet).<br />
<br />
* '''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.)<br />
<br />
: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).<br />
<br />
: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.<br />
<br />
* '''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.<br />
<br />
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.)<br />
<br />
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.<br />
<br />
<br />
====Channels====<br />
<br />
Color Paint and Color Jitter honor the '''Channels''' control. This control comprises<br />
the four buttons: '''H''', '''S''', '''L''', and '''O''', which allow you to turn on and off<br />
the tool's action on the object's hue, saturation, lightness, and opacity,<br />
correspondingly. For example, if you want to raise the saturation of some part of your<br />
drawing without changing the hue, select some maximum-saturation color (e.g. pure red)<br />
and turn off all Channels buttons except S. Similarly, you can replace the hues without<br />
affecting saturation or lightness (only H pressed), or lighten/darken all colors without<br />
changing their hues and saturation (only L pressed). Pressing O allows you to apply the<br />
master opacity from the tool's style to the master opacity of objects (but not fill or<br />
stroke opacity).<br />
<br />
====Usage notes====<br />
<br />
Color painting with Tweak tool is similar, but not exactly analogous to bitmap<br />
painting. Even though the tool itself works as a soft brush, it still applies its color<br />
to vector objects, which behave as vector objects usually do. For example, if you want<br />
to change the tint of the face in your drawing, and if a hand in the drawing is part of<br />
the same object as the face, that hand will change its tint too even if it's located far<br />
from the point you are painting. (We foresee a "fracture" command in one of the next<br />
versions of Inkscape which will help you turn a monolithic object into a mosaic of small<br />
fragments that will be then easy to paint with Tweak tool.) Still, even with this<br />
limitation, color painting is a novel way of dealing with vector drawings which allows<br />
you to quickly and intuitively make adjustments which would be awkward and slow with<br />
traditional approach.<br />
<br />
Drawings containing patterns or scatterings of small independent objects are best suited<br />
for color painting with Tweak tool. Examples include:<br />
<br />
* freehand drawings with Calligraphy pen, consisting of many separate strokes;<br />
<br />
* 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);<br />
<br />
* text converted to paths and with Break Apart command applied so that each letter is a separate path;<br />
<br />
* 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.<br />
<br />
Moreover, color tweaking can be useful for compositions with a few objects or even for<br />
single objects. Unlike all other color selection methods, painting with the Tweak tool<br />
implements the ''color mixing'' metaphor which is much more familiar to traditional<br />
artists than RGB sliders or even the color wheel. For example, start with a rectagle of<br />
pure blue color; then, pick different colors by Color Paint and apply light touches with<br />
minimum Force and minimum pen pressure: add a little green, a little brown, a little<br />
yellow, etc. until you have the exact hue you need. Similarly, you can whiten or blacken<br />
any hue by admixing white or black.<br />
<br />
You can also use color tweaking to add a tint, darken/lighten, saturate/desaturate, or<br />
color jitter your entire drawing. Just select all in all layers, zoom out, choose a<br />
large brush width so it covers all of the drawing, and apply a little color tweaking<br />
(with minimum Force) that will therefore affect all visible objects.<br />
<br />
===Keyboard shortcuts===<br />
<br />
* '''W''', '''Shift+F2''': switch to the Tweak tool<br />
<br />
* '''Shift+P''': switch to the Push mode<br />
<br />
* '''Shift+S''': switch to the Shrink mode<br />
<br />
* '''Shift+G''': switch to the Grow mode<br />
<br />
* '''Shift+A''': switch to the Attract mode<br />
<br />
* '''Shift+E''': switch to the Repel mode<br />
<br />
* '''Shift+R''': switch to the Roughen mode<br />
<br />
* '''Shift+C''': switch to the Color Paint mode<br />
<br />
* '''Shift+J''': switch to the Color Jitter mode<br />
<br />
* '''Left, Right, Home, End''': change width<br />
<br />
* '''Up, Down''': change force<br />
<br />
* '''mouse drag''': act on selected path in the current mode<br />
<br />
* '''Ctrl+mouse drag''': temporarily switch to Shrink (while Ctrl is down)<br />
<br />
* '''Shift+Ctrl+mouse drag''': temporarily switch to Grow (while Shift+Ctrl is down)<br />
<br />
==3D Box tool==<br />
<br />
Inkscape is a two-dimensional drawing tool. However, very often it is used to draw three-dimensional objects. The new '''3D box tool''' helps you create such 3D drawings by automating the most common operation: creating a three-dimensional box in a given perspective. The tool automatically ensures that all sides of the box lie on the corresponding perspective lines. We're not going to compete with Blender - but even simple things can go a long way.<br />
<br />
Currently in the 3D box tool you can:<br />
<br />
* draw a 3D box by dragging on canvas (use Shift+dragging without releasing the mouse button to extrude in z direction)<br />
<br />
* adjust any of its 3 dimensions by handles<br />
<br />
* move a 3D box "in perspective" 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<br />
<br />
* adjust the vanishing points of a perspective by dragging them across the canvas (see below) or toggling their states; all boxes sharing this perspective are transformed accordingly<br />
<br />
In SVG, a 3D box is represented as a '''group''' (svg:g) with a special extension attribute (in inkscape namespace); this group contains the 6 quadrilateral '''paths''' representing the sides of the box. Only the 3D box tool treats this object as a box; for all other tools it is just a group, so you can select any of the paths by Ctrl+click, apply any style to it, delete it, etc. You can of course transform the entire box or any face in it using Selector or Node tools.<br />
<br />
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 "dragger". 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.<br />
<br />
===Keyboard shortcuts===<br />
<br />
* '''X''', '''Alt+F4''': switch to the 3D box tool<br />
<br />
* 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.<br />
<br />
* When the 3D box tool is active, '''Shift+X''', '''Shift+Y''', and '''Shift+Z''' toggle perspective lines in the corresponding direction between "converging" and "parallel".<br />
<br />
<br />
[max]<br />
<br />
==Gradient Tool==<br />
===Selecting multiple stops===<br />
'''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. <br />
* Add a stop to the selected stops by '''Shift+click'''.<br />
* Press '''Ctrl+A''' to select all stops in the selected objects.<br />
* '''Shift+drag''' around stops to add them to selection.<br />
Multiple selected stops:<br />
*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.<br />
*Can be deleted at the same time by pressing '''Del'''.<br />
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.<br />
<br />
===Editing intermediate stops===<br />
'''Intermediate stops''' in gradients can be added, deleted, and edited on canvas (previously this was only possible in the Gradient Editor dialog).<br />
*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.<br />
*When two or more adjacent stops are selected, pressing '''Ins''' adds stops in the middles of all selected stop intervals.<br />
*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). <br />
:*Dragging with '''Ctrl''' moves the selected stops snapping them to 1/10 fractions of the available range.<br />
:*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.<br />
*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).<br />
*Stops can be deleted by '''Ctrl+Alt+Click''' on a stop or by the '''Del''' key for all the selected stop(s).<br />
:*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).<br />
:*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 & opacity of the remaining stop.<br />
*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.<br />
<br />
===Style of gradient stops===<br />
*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&Stroke dialog. Previously, opacity of a gradient handle was reflected as fill-opacity and stroke-opacity; now it is reflected as '''master opacity''' (the "O:" spinbutton in the selected style indicator, the "Master opacity" slider in Fill&Stroke). This makes it much easier to view and change opacity of gradient handles using only the selected style indicator in the statusbar.<br />
:*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.<br />
*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''').<br />
*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 "L Gradient" or "R Gradient" text labels as before). Also, this and other similar widget now use italic font face to indicate <i>None</i> and bold to indicate <b>Unset</b>.<br />
<br />
===Automatic duplication of gradients===<br />
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. <br />
<br />
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.<br />
<br />
==Calligraphy tool: Engraver's Toolbox ==<br />
<br />
Several new features were added to the Calligraphic pen to make<br />
Inkscape capable of the ancient art of '''line<br />
engraving'''. Traditional engraving is a very labour-intensive<br />
process, and while for a long time it was the only practical way<br />
of reproducing lifelike images in black-and-white print, about a<br />
century ago it was almost completely displaced by automatic<br />
halftone screens. However, line engravings have their<br />
characteristic charm, and there's no reason not to try to<br />
resurrect this art form with the help of Inkscape.<br />
<br />
A brief visual guide to the new functionality can be seen on<br />
these screenshots:<br />
<br />
http://inkscape.org/screenshots/gallery/inkscape-0.46-engraving1.png<br />
<br />
http://inkscape.org/screenshots/gallery/inkscape-0.46-engraving2.png<br />
<br />
<br />
===Tracking a guide path with Ctrl===<br />
<br />
One of the most common operations in line engraving is<br />
'''hatching''' (or sometimes ''cross-hatching'' when several<br />
hatching grids cross): filling a space with many parallel<br />
straight or variously curved lines (usually of varying width to<br />
represent a gradual shading). You could try to achieve a similar<br />
effect with e.g. path interpolation (blending), but it is rather<br />
cumbersome and limited; manual drawing of hatch lines, on the<br />
other hand, is tedious and nearly impossible to do<br />
uniformly. Now Inkscape provides "assisted hatching" by<br />
'''tracking a guide path''', allowing you to hatch quickly and<br />
uniformly and at the same time giving you sufficient manual<br />
control over the process.<br />
<br />
Here's how to do this. First, select the '''guide path''' that<br />
you will track. It may be another calligraphic stroke, any path<br />
or shape, or even a letter of a text object. Then switch to<br />
Calligraphic pen, select the desired parameters (line width,<br />
angle, fixation etc.) and, before starting to draw, press<br />
Ctrl. You will see a gray '''track circle''' centered at your<br />
mouse pointer and touching the closest point on the selected<br />
guide path. (If you have no guide path selected, a statusbar<br />
message will tell you to select it.)<br />
<br />
Now move your mouse close to the guide path, so that the track<br />
circle radius is equal to the desired spacing of your hatch<br />
pattern, and start drawing along the guide path. At that moment,<br />
the radius of the circle gets locked; now the circle slides<br />
along the guide path - and the actual stroke is drawn by the<br />
center of the tracking circle, ''not'' by your mouse point. As<br />
a result, you are getting a smooth stroke going parallel to the<br />
guide path and always at the same distance from it.<br />
<br />
When the stroke is ready, release your mouse button (or lift<br />
your tablet pen) but '''do not let go of the Ctrl key''' because<br />
as long as you have it pressed, the tool remembers the hatch<br />
spacing you set when you started drawing. Now, you have just<br />
created a new stroke and, as usual with Inkscape tools, it gets<br />
selected instead of what was selected before. In our case, this<br />
means that the newly drawn stroke itself becomes the new guide<br />
path. Next, you can draw a second stroke along the first one,<br />
then a third one along the second, etc. Eventually you can fill<br />
any desired space with uniform hatching.<br />
<br />
Alternatively, if you uncheck "Select new path" 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. <br />
<br />
The attachment to the guide path is not absolute. If you stray<br />
your mouse pointer far enough from the guide path, you will be<br />
able to tear it off (the track circle turns from green to red)<br />
and move freely. This is intentional; this feature allows you,<br />
for example, to continue drawing a stroke past the end of a<br />
guide stroke, thus making your hatching cover a wider area than<br />
the initial guide path. Special care is taken to make such<br />
tearing off as smooth as possible and to suppress violent jerks,<br />
but this is not always possible; the general advice is to not<br />
try to hatch too fast. If jerking and unintended tearoffs still<br />
bother you, try increasing the Mass parameter.<br />
<br />
Also, special code is in place to prevent flipovers - accidental<br />
jumps to the other side of the guide path. Brief flipovers are<br />
suppressed, but if you intentionally go over to the other side<br />
and stay there, eventually Inkscape will obey and your tracking<br />
stroke will also flip over to follow you.<br />
<br />
Tracking a guide also allows some slight feedback by gradually<br />
changing the tracking distance in response to your drawing<br />
behavior. Thus, if you're consistently trying to draw closer or<br />
farther from the guide than the current tracking distance, the<br />
distance will correspondingly decrease or increase, so you will<br />
get a hatching that is slightly spacing in or out. (The effect<br />
is very slight, however, so as not to become a nuisance.) Also,<br />
note that since tracking follows the edge of the stroke, strokes<br />
of varying width (such as those tracing background, see below)<br />
will result in gradual bending of the hatching pattern as you<br />
proceed.<br />
<br />
===Tracing background by stroke width===<br />
<br />
There is a new toggle button on the Calligraphy tool's controls<br />
bar, '''Trace background'''. When on, the width of your pen<br />
depends on the lightness of the background under the stroke in<br />
each point, so that white translates into the minimum stoke<br />
width (1) and black translates to the maximum (which is set by the<br />
Width parameter). This can work alone or in combination with<br />
pressure sensitivity, depending on whether the "Use pressure" button<br />
is also toggled.<br />
<br />
This feature allows you to not only hatch over an imported<br />
bitmap image or any drawing, but to do so automatically<br />
reproducing the highlights and shades of the background with<br />
your strokes becoming lighter and heavier as needed.<br />
<br />
===Misc features===<br />
<br />
* 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. <br />
<br />
* 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.)<br />
<br />
==Selector==<br />
<br />
* 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. <br />
<br />
: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.<br />
<br />
* 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.<br />
<br />
* Draging the '''scale handles with Alt''' now scales selection by an integer factor, i.e. up to '''2''', '''3''', '''4''', etc. times the original size or down to '''1/2'''. '''1/3''', '''1/4''', etc. of the original size (in any of the two dimensions independently). This way you can, for example, mirror any object around one of the edges of its box. (This replaces the old and rarely used "slow" scaling mode with Alt.)<br />
<br />
* '''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.<br />
<br />
* '''Objects to Marker''' was added to the objects menu, which converts the current selection to a marker, with the center point of the selection being set to the center of the marker.<br />
<br />
==Node tool==<br />
<br />
* 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 ('<' and '>' 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.<br />
<br />
* [helper path display - johan]<br />
** this is deactivated for normal paths now. only paths with LPE applied will show it. should there be a button to turn it on for normal paths aswell?<br />
<br />
* As a long-requested feature, two entry fields are added to the toolbar which allow precise editing of the coordinates of selected nodes.<br />
<br />
==Rectangle Tool==<br />
<br />
* '''Ctrl+dragging''' now also allows the creation of rectangles with sides constrained to the '''golden ratio''' (approx. 1 : 1.618034), not only integer ratios.<br />
<br />
==Ellipse Tool==<br />
<br />
* 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.<br />
<br />
* '''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.<br />
<br />
==Pen/Pencil Tool==<br />
<br />
It is now easy to create '''single dots''' in pen and pencil tool by simply '''Ctrl+clicking''' 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). In addition, holding '''Shift''' while creating multiple dots slightly varies their size randomly so that the result is less monotone when creating many dots in a sequence.<br />
<br />
==Text tool==<br />
* [text toolbar - deadchip?]<br />
* If text contains a tref element, the text tool's behavior may not be as expected. Please see [[#The tref Element]]<br />
<br />
==Dropper Tool==<br />
<br />
The shortcut 'D' is now used to <i>toggle</i> (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.<br />
<br />
=SVG features=<br />
<br />
==The tref element==<br />
<br />
Inkscape can now correctly open files with '''tref''' elements, and new tref elements can be created manually in the XML editor.<br />
<br />
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'''.<br />
<br />
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'''.<br />
<br />
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.<br />
<br />
Existing tref elements can be converted into tspan elements with '''Edit > Clone > 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'''.<br />
<br />
A '''tref''' element can be mixed with any other elements allowed to be contained by a text element.<br />
<br />
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'''.<br />
<br />
==SVG filters==<br />
<br />
===New filters supported===<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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]<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
See also wiki page [[Filter Effects]] for more info on filters in Inkscape in general.<br />
<br />
===Filters UI===<br />
<br />
* New dialog for creating and modifying filter effects ('''Object>Filter Effects...''')<br />
* The list at the left of the dialog displays all filters currently in the document.<br />
** New filters can be added with the '''Add''' button beneath the list<br />
** Right-clicking a filter for the pop-up menu allows duplicating or removing a filter.<br />
** Double-clicking a filter will apply it to all selected objects<br />
** 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.<br />
* The second list, at the left of the dialog, displays the '''filter primitives''' that are contained within the currently-selected filter.<br />
** New primitives can be added by selecting the primitive type from the combo box beneath the list, and then pressing the '''Add''' button.<br />
** Right-clicking a primitive for the pop-up menu allows duplicating or removing a primitive.<br />
** Primitives can be rearranged by clicking and dragging any filter in the list.<br />
** 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.<br />
** The "in" and "in2" 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.<br />
*** 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.<br />
*** 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.<br />
*** 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.<br />
*** 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.<br />
*** Merge inputs have an empty input at the end. Dragging a connection from this input will add a new input to the primitive.<br />
<br />
=Live Path Effects (LPE)=<br />
<br />
'''Live path effects''' (not to be confused with extension effects or SVG filters) are a new way to <b>non-destructively modify path and shape objects</b>. 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. <br />
<br />
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.<br />
<br />
Live path effects were developed by Johan Engelen as part of the GSoC 2007.<br />
<br />
==Details about operation==<br />
The following schematic tries to explain how LPE work.<br />
<br />
original style ------------> output style<br />
original path --> LPE --> output path<br />
^<br />
|<br />
parameters<br />
<br />
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 <b>output style equals original style</b>.<br />
<br />
The parameters can be paths, numbers, points, text, in principle anything.<br />
<br />
<br />
==Applying effects==<br />
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.<br />
<br />
When a path with a path effect applied is selected, the statusbar description mentions that, for example "'''Path''' (4 nodes, path effect)".<br />
<br />
There is a special Paste Path Effect command (Ctrl+7) that can be used to copy effects from one path to another.<br />
<br />
==Editing effect parameters==<br />
When switching to the node edit tool (<b>F2</b>), the <b>original path</b> can be edited. The original path is shown as a red helper path. Normal path operations, like simplify, still work.<br />
<br />
Some parameters of effects can be edited on-canvas. For example, path parameters can be node-edited, by pressing the "edit on-canvas" button in the Path Effects dialog. <b>Press "7" to cycle through the different on-canvas editable parameters.</b> 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.<br />
<br />
==Available effects==<br />
<br />
===Path along path===<br />
The <b>Path along Path</b> 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 <b>on-canvas</b> and the result is <b>updated live</b>. This provides a direct equivalent of "vector brushes" or "skeletal strokes" features in other vector editors. <br />
<br />
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'.<br />
<br />
Example file: live-path-effects-pathalongpath.svg<br />
<br />
===Pattern along path===<br />
The <b>Pattern along Path</b> 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 <b>on-canvas</b> and the result is <b>updated live</b>. This provides a direct equivalent of "vector brushes" or "skeletal strokes" features in other vector editors. <br />
<br />
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.<br />
<br />
Example file: live-path-effects-pathalongpath.svg<br />
<br />
===Stitch Subcurves===<br />
The <b>Stitch Subcurves</b> effect connects points from two subpaths of the path with straight line or curved segments, i.e. the <i>stitches</i>. It looks a lot like the Effect Lines from Expression 3. The result is also referred to as "String Art". For some examples of string art, see http://members.shaw.ca/jillbritton/string_art/jbstringart.htm. <br />
<br />
The <b>shape</b> of the <b>connecting paths</b> can controlled by the <b>stroke path</b> parameter. This could be used to draw 'hair-shaped' connecting paths with sharp end-tips. Other controls include the <b>number of paths</b>, the variation in spacing between the connecting paths (<b>clustering</b>) and also whether the start and end points of the stitches should like exactly on the original subcurves or can <b>stray randomly</b> around them. Finally the width of the stroke path can be varied.<br />
<br />
Note that this effect can only be applied to a path with two subpaths in it, hence '<b>sub</b>curve' in the name. Use Path > Combine to create such a path from two separate paths.<br />
<br />
Example file: live-path-effects-curvestitch.svg<br />
<br />
Example file showing cooperation between Stitch Subcurves and Path along Path: live-path-effects-curvestitch-hair.svg<br />
<br />
===Gears===<br />
The <b>Gears</b> 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. <br />
<br />
Example file: live-path-effects-gears.svg<br />
<br />
==Development of new effects==<br />
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!<br />
<br />
[johan]<br />
<br />
=Extension effects=<br />
<br />
== Live preview ==<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''Progress dialog''': While an extension is working on a document, a small dialog is shown allowing the user to cancel the execution.<br />
<br />
== New and improved effects ==<br />
<br />
* The new '''Modify Path > Edge 3D''' extension creates black, grey and white paths around a shape, then blurs and clips them for a 3D effect.<br />
<br />
* The new '''Render > 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. <br />
<br />
* The new '''Render > 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.<br />
<br />
* The new '''Render > [[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]).<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* 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.<br />
<br />
*The new '''Color > 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.<br />
<br />
*The '''Whirl''' extension uses the center of view as the center of whirl, so you don't have to enter the center coordinates numerically.<br />
<br />
*The '''Render > Grid''' extension has got an extended range of grid spacings, from 0.1 to 1000 px.<br />
<br />
*The '''Render > Function Plotter''' extension can now plot using polar coordinates.<br />
<br />
*The '''Generate Template > 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.<br />
<br />
== XSLT effects ==<br />
<br />
* '''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.<br />
<br />
== ImageMagick effects ==<br />
<br />
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. <br />
<br />
* '''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.<br />
<br />
* '''Add Noise''' adds random noise of certain types to the bitmap.<br />
<br />
* '''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.)<br />
<br />
* '''Channel''' extracts the specified channel from the bitmap.<br />
<br />
* '''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.<br />
<br />
* '''Colorize''' overlays the bitmap with a given color at a given intensity.<br />
<br />
* '''Contrast''' lightly enhances the contrast (difference between lights and darks) of a bitmap.<br />
<br />
* '''Cycle Colormap''' cycles the colormap of a bitmap.<br />
<br />
* '''Despeckle''' reduce the speckle noise in a bitmap.<br />
<br />
* '''Edge''' hilights edges in a bitmap.<br />
<br />
* '''Emboss''' embosses a bitmap, hilighting edges with 3D effect.<br />
<br />
* '''Enhance''' enhance a bitmap, minimizing noise.<br />
<br />
* '''Equalize''' equalizes a bitmap. Histogram equalization.<br />
<br />
* '''Flop''' mirrors a bitmap, reflecting each scanline in the horizontal direction.<br />
<br />
* '''Gaussian Blur''' blurs a bitmap, more strongly than regular blur.<br />
<br />
* '''Implode''' sucks everything towards the center of the bitmap.<br />
<br />
* '''Level''' scales values falling between the given '''Black Point''' to '''White Point''' range to the full color range.<br />
<br />
* '''Level Channel''' acts the same way as level but for only one channel.<br />
<br />
* '''Median Filter''' filters a a bitmap by replacing each pixel component with the median color in a circular neighborhood<br />
<br />
* '''Modulate''' adjusts the percent hue, saturation, and brightness of a bitmap.<br />
<br />
* '''Negate''' takes the inverse of a bitmap.<br />
<br />
* '''Normalize''' normalizes a bitmap, expanding color range to the full possible range of color.<br />
<br />
* '''Oil Paint''' stylizes a bitmap so that it appears to be painted with oils.<br />
<br />
* '''Opacity''' modifies the opacity channel of a bitmap.<br />
<br />
* '''Raise''' alters the lightness of the edges of a bitmap to create a raised appearance, much like a frame.<br />
<br />
* '''Reduce Noise''' reduces noise in a bitmap by using a noise peak elimination filter.<br />
<br />
* '''Shade''' shades a bitmap by simulating a distant light source<br />
<br />
* '''Sharpen''' sharpens a bitmap.<br />
<br />
* '''Solarize''' solarizes a bitmap, like overexposing photographic film.<br />
<br />
* '''Spread''' randomly spread pixels in a bitmap within the radius of '''amount'''.<br />
<br />
* '''Swirl''' swirls the bitmap around the center point.<br />
<br />
* '''Threshold''' thresholds a bitmap.<br />
<br />
* '''Unsharpmask''' sharpens a bitmap using an unsharp mask algorithm.<br />
<br />
* '''Wave''' alters a bitmap along the sine wave.<br />
<br />
These effects are part of the Google Summer of Code 2007, coded by Christopher Brown.<br />
<br />
== Misc ==<br />
<br />
* All Python effects are switched from the old and unmaintained PyXML library to the new powerful [http://codespeak.net/lxml/ lxml] library.<br />
<br />
* 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.<br />
<br />
= Stock patterns =<br />
<br />
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&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:<br />
<br />
*A selection of plain '''stripes''' differing by the ratio of the stripe width to gap width (for example, the "Stripes 1:2" 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).<br />
<br />
*Two '''checkerboard''' patterns with black and white odd squares (even squares are transparent)<br />
<br />
*'''Packed circles''': a hexagonal pattern of black circles with transparent gaps.<br />
<br />
*'''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).<br />
<br />
*'''Wavy''' is a pattern of wavy lines.<br />
<br />
*'''Camouflage''' is a green-toned protective pattern such as that used by the military.<br />
<br />
*'''Ermine''' is the traditional heraldic pattern representing stylized stoat furs with black tails.<br />
<br />
*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 "texturize" them. <br />
<br />
After applying a stock pattern, switch to Node tool to edit the location, scale, and rotation of the pattern via on-canvas handles.<br />
<br />
All stock patterns are stored in the file <code>patterns/patterns.svg</code> in Inkscape's <code>share</code> directory (typically <code>/usr/share/inkscape</code> on Linux, <code><i>inkscape-dir</i>/share</code> on Windows). You can add your own patterns to this file or replace it with any other SVG file containing the patterns you need.<br />
<br />
=Color management=<br />
<br />
== Calibrated SVG color including CMYK ==<br />
<br />
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<br />
optional "icc-color(...)" paint components as described in section 11.2 "Specifying paint" of the SVG 1.1 specification<br />
[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.<br />
<br />
The new CMS color selector tab allows these colors to be edited.<br />
<br />
== Display adjustment ==<br />
<br />
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.<br />
<br />
=== Per-window adjustment ===<br />
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.<br />
<br />
=== XICC Support ===<br />
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.<br />
<br />
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.<br />
<br />
=== Multi-monitor aware ===<br />
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.<br />
<br />
== Soft Proofing ==<br />
<br />
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.<br />
<br />
=Snapping=<br />
<br />
* Snapping has been implemented or improved for:<br />
<br />
:* '''Newly created shapes'''<br />
<br />
:* '''Skewing''' of objects<br />
<br />
:* '''Handles''' of objects, incl. '''gradients'''<br />
<br />
:* '''Images''', '''ellipses''', and '''clones'''<br />
<br />
:* Text boxes, which snap to '''text baselines''' again<br />
<br />
:* Objects, for which snapping now optionally considers the '''rotation center'''<br />
<br />
:* Objects, which now allow for '''constrained snapping'''<br />
<br />
:* '''Guides''', which now snap while dragging them<br />
<br />
:* '''Axonometric grids'''<br />
<br />
:* '''Angled guide lines'''<br />
<br />
:* '''Bounding boxes''', of which now all four corners snap<br />
<br />
<br />
<br />
* Other snapping fixes and improvements include:<br />
<br />
:* It is now possible to snap to '''intersections''' of e.g. gridlines with guidelines, and of line segments. <br />
<br />
:* The '''snapping preferences dialog''' has been restyled to make it more intuitive. <br />
<br />
:* Inkscape now has a global snapping toggle, which has been added to the view-menu and is accessible through a shortcut<br />
<br />
:* Inkscape now allows for controlling the snapping per grid when multiple grids are being used<br />
<br />
:* Snapping distance is now set in screen pixels and is therefore '''independent of zoom'''. <br />
<br />
:* Snapping of objects has been made more clean, by only snapping '''bounding box corners to bounding boxes''', and '''nodes to other nodes and paths'''.<br />
<br />
:* The time it takes to snap to objects using the selector tool has been reduced significantly.<br />
<br />
:* The bug where "node-to-node" snapping caused jerky movement of nodes is fixed.<br />
<br />
:* The '''aspect ratio''' is correctly preserved while scaling objects with snapping turned on.<br />
<br />
:* Only nodes at '''non-smooth parts''' of a path now snap.<br />
<br />
:* The confusing "Default transformations origin" 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).<br />
<br />
:* 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).<br />
<br />
=Grids=<br />
Grids have undergone some big changes under-the-hood. These are the visible changes:<br />
* There is a <b>new 3D/axonometric grid</b>!<br />
* A new tab in the document properties dialog, solely meant for grids; the former grid/guide tab is now solely for guides. I envision a list of guides there in the future, for easier deletion of guides etc.<br />
* More than one grid can be active at the same time<br />
** Each grid can be enabled/disabled separately from the document properties dialog.<br />
* One can make grids invisible by unchecking the "Visible" checkbox in the grid's tab in the document properties dialog. Snapping is still enabled even for invisible grids!<br />
* Multiple views on the same document share the same grids, but the grid can be turned off for each view separately. For example: one could have an overview view without 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. (sorry i am not able to explain more clearly, perhaps someone else can?)<br />
* Grid information is now stored in SVG as a child of sodipodi:namedview. Old files will be converted to this new format automatically<br />
* The rectangular grid now has an option to show dots on gridline intersections instead of solid lines<br />
<br />
From developer perspective:<br />
<br />
* Implementation of new grids is much easier now; subclassing CanvasGrid and adding an entry in the is enough. Have a peek at how the rectangular grid is implemented (CanvasXYGrid).<br />
* Note that there is no longer "the grid", there might be several grids active now!<br />
<br />
A side effect of removal of old gridcode: apparantly the origin of the desktop rules used to be set to the origin of the grid. I find this strange: specifying a grid origin of (2,2) would have me think the origin would be at ruler location (2,2) instead of (0,0) as it is in 0.45.1.<br />
I have commented the grid-origin correction to the ruler range, because now there is not a single grid anymore to correct it for. Isn't there a control somewhere to define the documents origin? Now the ruler origin is set to (0,0)<br />
<br />
--johan<br />
<br />
=Angled guidelines=<br />
<br />
Now, Inkscape also provides angled guidelines! Double click on a guide to set its angle.<br />
<br />
* When dragging a guideline off the rulers close to the edge, the guideline will automatically be angled. The angle is set depending on the grid.<br />
** For the rectangular grid, the angle is 45 degrees.<br />
** For the axonometric grid, the angle is matched to the grid. When the Ctrl-key is pressed, the angle is perpendicular to the grid lines (useful for aligning gradients).<br />
<br />
=Creating guidelines from objects=<br />
<br />
* Selected objects can now be converted to guidelines. To do this, either use the menu command '''"Object->Object to guides"''' 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.<br />
<br />
* 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. <br />
<br />
* '''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.<br />
<br />
* For all other objects, conversion usually happens by placing the guidelines around the object's bounding box (use the corresponding checkbox in the "Tools" page of Inkscape Preferences to switch between geometric and visual bounding box).<br />
<br />
*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.<br />
<br />
=Import/Export=<br />
<br />
==PDF and AI import==<br />
<br />
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). <br />
<br />
'''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. <br />
<br />
'''PDF import settings''': After opening a PDF or AI document, the PDF Import Settings dialog shows up. Here you can select:<br />
<br />
* the '''page''' to be imported from a multipage PDF;<br />
<br />
* 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.);<br />
<br />
* 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;<br />
<br />
* a checkbox controlling whether the '''images''' should be '''embedded''' into the resulting SVG document or saved on the current path;<br />
<br />
* 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).<br />
<br />
'''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.)<br />
<br />
To work around this, select the text object you want to edit and use '''Text > 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. <br />
<br />
Note that there is a way to select even a single line in a text block. For this, open the XML editor, expand the <svg:text> tree branch corresponding to your text, and select any of the <svg:tspan> 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+> or Alt+<).<br />
<br />
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.<br />
<br />
==PDF export==<br />
<br />
* A new cairo-based PDF exporter has been added to Inkscape (marked as "Cairo PDF" in the export format list). Inkscape 0.46 can export shapes, strokes, transparency, gradients, patterns, text, and images correctly to cairo. While clipping paths and masks are known to be faulty or missing. 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.<br />
<br />
* A new cairo-based PostScript exporter has been added (marked as "Cairo PS" 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.<br />
<br />
==CDR (CorelDraw) import==<br />
<br />
Inkscape can use [http://www.sk1project.org/modules.php?name=Products&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 (since UniConvertor is Unix-only) and requires that you have Python and UniConvertor installed. As of UniConvertor 1.0rc2, only versions from 7 to X3 of the CDR format are supported, and text objects are not converted. <br />
<br />
==XAML import/export==<br />
<br />
* Inkscape can import vector graphics portions of XAML documents, as well as export its documents to XAML.<br />
<br />
==Adobe Illustrator SVG clean import==<br />
<br />
* 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.<br />
<br />
==Bitmap export==<br />
<br />
* '''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.<br />
<br />
: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 "export" layer. In that layer, "slice" 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 "export" layer, select all in that layer (Ctrl+A), and export with the ''Batch export selected objects'' checkbox on.<br />
<br />
* '''Hide all except selected''': A new checkbox allows you to hide in the exported image everything except selected object(s).<br />
<br />
* The Export dialog automatically appends the '''.png''' extension to the export filename you specify.<br />
<br />
== Open Clip Art Library import and export ==<br />
<br />
{rejon}<br />
<br />
=Command line=<br />
<br />
Several new command line options are added that make Inkscape even more scriptable and automatable than before.<br />
<br />
* --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.<br />
<br />
* --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.<br />
<br />
* --select followed by a node ID will allow you to add a node to the list of selected objects.<br />
<br />
* --query-all produces a comma delimited listing of all objects in the document, with their x, y, height, and width values.<br />
<br />
These options can be used, for example, for performance testing. You could do something like this:<br />
<br />
$ time inkscape --verb=FileClose my_complex_file.svg<br />
<br />
to measure the time it takes to load and display the file.<br />
<br />
Of course, with the ability to select objects, it can be much more useful than<br />
that. You can call extension effects, or any other verb, then FileSave and<br />
FileClose to automate all kinds of operations on your drawings.<br />
<br />
=User interface=<br />
<br />
== Dockable dialogs ==<br />
<br />
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.<br />
<br />
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&mdash;this allows other dialogs to be dragged and dropped on it to form a floating group of dialogs.<br />
<br />
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'' > ''Dialog behavior'' in the Inkscape preferences dialog.<br />
<br />
====Known issues====<br />
<br />
* Some of Inkscape's dialogs are yet to be adapted to allow docking, these include the "Text and Font" dialog, the "Tiled clones" dialog, the "XML editor" and the "Object properties" dialog.<br />
<br />
* Floating dialogs that are closed and later reopened might reappear on positions slightly different than their original ones.<br />
<br />
* Resizing dialogs that are placed in the dock can be a bit slow and quirky.<br />
<br />
* 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.<br />
<br />
====Settings====<br />
<br />
Three settings that control dockable dialogs behavior are present in the <code>preferences.xml</code> file under a <code>options</code> group called <code>dock</code>:<br />
<br />
* <code>cancenterdock</code>: controls if dialogs are allowed to be stacked on top of each other to be ordered in groups. Valid values are <code>"0"</code> and <code>"1"</code>.<br />
<br />
* <code>dockbarstyle</code>: controls what information is shown for iconified dockable dialogs. <code>"0"</code> = icons only, <code>"1"</code> = text only, <code>"2"</code> = both icons and text. <br />
<br />
* <code>switcherstyle</code>: controls what information is shown for grouped dockable dialogs. <code>"0"</code> = icons only, <code>"1"</code> = text only, <code>"2"</code> = both icons and text.<br />
<br />
== [toolbars - [[JonCruz]]] ==<br />
<br />
'''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.<br />
<br />
[calligraphy: menus, tooltips; star; ...]<br />
<br />
Switched to stock GTK+ toolbars.<br />
<br />
Extra magic secret sauce added.<br />
<br />
== [filedialogs - [[JonCruz]]] ==<br />
<br />
== Swatches panel, color drag-and-drop ==<br />
<br />
* Right-clicking a color swatch now opens a context menu which allows you to apply the color to the fill or stroke of selection.<br />
<br />
* Dragging colors from the color palette has been fixed and improved:<br />
<br />
:* 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.)<br />
<br />
:* 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.)<br />
<br />
:* 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.<br />
<br />
==Color gestures==<br />
<br />
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 "None", "N/A", 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.<br />
<br />
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'''.<br />
<br />
The adjustment is done by '''"rotating"''' the color swatch away from the original direction which is assumed to be '''NE at 45 degrees''' (i.e. from<br />
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.<br />
<br />
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.<br />
<br />
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. <br />
<br />
You can '''switch channels while you drag'''. That is, you don't need to <br />
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.<br />
<br />
The '''Alt''' modifier is special. Pressing Alt means "do nothing"; 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.<br />
<br />
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.<br />
<br />
Apart from precise adjustments, you can use color gestures to very quickly perform some common color transformations:<br />
<br />
* Ctrl+drag the swatch to the right and down to paint all selected objects black.<br />
<br />
* Ctrl+drag the swatch upwards and to the left to paint all selected objects white.<br />
<br />
* Shift+drag the swatch to the right and down to desaturate the color of selected objects.<br />
<br />
* Shift+drag the swatch upwards and to the left to maximize saturation of the color of selected objects. <br />
<br />
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.<br />
<br />
This new technique requires some getting used to, but once you get the idea it is quite convenient, fast, and precise.<br />
<br />
== Print dialog integration == <br />
<br />
* '''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.<br />
<br />
== Saving window geometry globally ==<br />
<br />
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 "Save geometry to preferences" 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).<br />
<br />
== Preserving zoom/view of reverted documents ==<br />
<br />
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.<br />
<br />
== Bounding box option moved ==<br />
<br />
The preferences option to select between "visual" and "geometric" bounding box was moved in Inkscape Preferences dialog from the "Selector" page to "Tools" page (since it applies more globally than just in Selector tool).<br />
<br />
== New ways to scroll and zoom ==<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* In the Zoom tool, right mouse button always zooms out instead of calling the context menu (which is rather useless in this tool anyway).<br />
<br />
== Using other keys in place of Alt ==<br />
<br />
* 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 <code>mapalt</code> in the <code>options</code> 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 "Modifiers" when the mouse is held over a key on the main display.<br />
<br />
== GTK theme on OS X ==<br />
<br />
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 "Appearance" and "Highlight Color" set in System Preferences > Appearance.<br />
<br />
=Other changes and improvements=<br />
<br />
* '''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.<br />
<br />
* 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. <br />
<br />
* The somewhat cryptic "F:" and "S:" 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.<br />
<br />
* 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. "Style of new rectangles", "Style of new calligraphic strokes", etc.)<br />
<br />
* 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. <br />
<br />
* After dragging a curve segment in Node tool, Inkscape no longer selects the two adjacent nodes if they were not selected before. <br />
<br />
* 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. <br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.)<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* 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 <code>default.svg</code>, 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 > New submenu).<br />
<br />
* 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.<br />
<br />
* 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 "slideshow mode" of the main inkscape application (-s or --slideshow command line option) is removed; use inkview instead.<br />
<br />
* In Document Metadata dialog, updated '''Creative Commons Licenses''' to version '''3.0'''.<br />
<br />
* Preferences have been added for setting the default metadata and licenses, so this information can be automatically filled in with new documents.<br />
<br />
* The built-in '''Potrace''' tracing engine is upgraded to version '''1.8''' with some minor bugs fixed.<br />
<br />
* File dialog windows (open/save) now have an '''Enable preview''' checkbox which allows you to disable the preview pane.<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* The option '''Import bitmap as <image>''' 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 <image> element.<br />
<br />
* 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 & stroke dialog.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* Add some new '''UML markers''', including filled and hollow diamonds and triangles.<br />
<br />
* 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'''.<br />
<br />
=Notable bugfixes=<br />
<br />
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]].<br />
<br />
* The '''sodipodi:docbase''' attribute is no longer added to the root <svg> 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.<br />
<br />
* 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. <br />
<br />
* Inkscape now properly quotes <code>font-family</code> values and therefore can use '''fonts''' with various '''nonalphanumeric characters''' in their names, which previously failed. <br />
<br />
* 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.<br />
<br />
* 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).<br />
<br />
* 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).<br />
<br />
* '''Stock markers''' now appear in the "recently used markers" section of the marker selector dropdowns in the Fill & Stroke dialog. Before, any markers with stock id's (including markers modified by the user) were hidden, making it difficult to work with modified stock markers.<br />
<br />
* 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.<br />
<br />
* Previously, if there was a single '''invalid property''' in a <code>style</code> 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.<br />
<br />
* 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. <br />
<br />
* Master opacity did not apply to stroke '''markers''' as it should; fixed.<br />
<br />
* '''Creative Commons Public Domain Declaration URI''' points to the right location now.<br />
<br />
* Text objects didn't display the '''pattern editing handles'''; fixed.<br />
<br />
* 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.<br />
<br />
* Clones were wrongly unlinked when their original was moved to another layer; fixed.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* In Tile Clones dialog, the PMG symmetry group was created incorrectly, which is now fixed.<br />
<br />
= Previous releases =<br />
<br />
* [[ReleaseNotes045]]<br />
* [[ReleaseNotes044]]<br />
* [[ReleaseNotes043]]<br />
* [[ReleaseNotes042]]<br />
* [[ReleaseNotes041]]<br />
* [[ReleaseNotes040]]<br />
* [[ReleaseNotes039]]<br />
* [[ReleaseNotes038]]<br />
* [[ReleaseNotes037]]<br />
* [[ReleaseNotes036]]<br />
* [[ReleaseNotes035]]<br />
<br />
[[Category:Marketing]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.46&diff=18809Release notes/0.462008-01-27T14:06:26Z<p>Cilix: /* Creating guidelines from objects */</p>
<hr />
<div>=Inkscape 0.46=<br />
'''(not released yet)'''<br />
<br />
Highlights in this release:<br />
<br />
* Paintbucket tool<br />
<br />
* Tweak tool<br />
<br />
* 3D Box tool<br />
<br />
* Live path effects<br />
<br />
* Color management<br />
<br />
* New SVG filters and UI<br />
<br />
* Native PDF and AI import<br />
<br />
* XAML import/export<br />
<br />
* Open Clip Art Library integration (import/export)<br />
<br />
* Stock patterns<br />
<br />
* Bitmap editing extension effects<br />
<br />
* Full on-canvas gradient editing<br />
<br />
* Engraver's Toolbox in the Calligraphic tool<br />
<br />
* Touch selection<br />
<br />
* Dockable dialogs<br />
<br />
* Command-line access to verbs<br />
<br />
* Snapping made usable<br />
<br />
* "3D" / axonometric grid<br />
<br />
* Angled guidelines<br />
<br />
* Conversion of objects to guidelines<br />
<br />
* Significant speed and interactivity improvements<br />
<br />
* Hundreds of smaller features and bugfixes<br />
<br />
=Speed and interactivity=<br />
<br />
* 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. <br />
<br />
* '''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.<br />
<br />
* '''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). <br />
<br />
:'''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. <br />
<br />
* Minor improvements have been made to gradient rendering performance.<br />
<br />
* '''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. <br />
<br />
* '''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. <br />
<br />
* '''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.<br />
<br />
* Several improvements make '''canvas panning and scrolling''' smoother and more interactive in complex slow-rendering documents:<br />
<br />
:* 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 "dirty" but the '''panning is smoother than before''', with few if any "hiccups".<br />
<br />
:* '''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.<br />
<br />
:* 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.<br />
<br />
:* 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. <br />
<br />
:* The default '''starting speed and acceleration''' of Ctrl+arrows scrolling are slightly increased. (They are both settable in Preferences.)<br />
<br />
* Better responsiveness and more visual feedback in user interface: <br />
<br />
:*When you zoom, the '''zoom control''' on the right end of the statusbar now updates immediately, not after screen redraw as before. <br />
<br />
:*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. "Saving document...") while they work. <br />
<br />
:*The '''statusbar messages''' displayed while you're drawing a shape or a path in Pen tool do not lag behind the mouse movements.<br />
<br />
* '''Combine''' and '''Convert to paths''' commands are now orders of magnitude faster when applied to a selection with hundreds or thousands of objects.<br />
<br />
* 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.<br />
<br />
=Tools=<br />
<br />
==Paint Bucket tool==<br />
<br />
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 "fills in" the area in which you clicked. <br />
<br />
===How it works===<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
It places the rendered path onto the current layer, so you can have a layer on top (for example, "Inks") and select the layer below ("Colors") and do the fills so that they always appear below the Inks.<br />
<br />
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).<br />
<br />
===Style===<br />
<br />
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.<br />
<br />
===Controls===<br />
<br />
In the tool's '''Controls bar''':<br />
<br />
* 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:<br />
** Red<br />
** Green<br />
** Blue<br />
** Hue<br />
** Saturation<br />
** Lightness<br />
** Alpha<br />
<br />
* 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%.<br />
<br />
* 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.<br />
<br />
* 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:<br />
** None<br />
** Small (close gaps up to 2 pixels in size)<br />
** Medium (4 pixels)<br />
** Large (6 pixels)<br />
:Note that setting this parameter to other than None may slow down noticeably the filling of large areas.<br />
<br />
===Shortcuts===<br />
<br />
The tool's '''shortcuts''' are:<br />
<br />
* '''Single click''' performs filling from the click point.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
==Tweak tool==<br />
<br />
The Tweak tool is an exciting new way to edit drawings which largely blurs the<br />
distinction between vector and raster editing. Instead of meticulously selecting some<br />
objects and then performing an action on the selection, you can now select ''all''<br />
objects (or all objects you are interested in) and apply the Tweak tool's brush to<br />
smoothly and naturally change the shape or style of only those objects (or parts<br />
thereof) ''that the brush touches''.<br />
<br />
The area of the tool's action - its ''brush'' - is marked by an orange-colored circular<br />
outline that moves with your mouse cursor. However, that area actually has no sharp<br />
boundaries; the power of the tool's action falls off gradually, following a smooth<br />
bell-shaped profile. This makes the tool act softly and smoothly.<br />
<br />
The tool will work on any number of selected objects; for example, you can select all<br />
(Ctrl+A) and "smear" your entire drawing by Push mode or paint it by Color Paint<br />
mode. You can also apply it to groups of objects; it will go into groups and act on<br />
individual objects inside groups. If you're trying to use it without anything selected,<br />
it will remind you by a statusbar message to select some objects.<br />
<br />
===Width===<br />
<br />
The width of the tool's brush, in the range from 1 to 100, can be changed by the<br />
'''Width''' control in the tool's controls bar above the canvas. You can also change<br />
width by '''Left''' and '''Right''' arrow keys (same as in the Calligraphy tool) at any<br />
time (including during action) as well as '''Home''' and '''End'''. Also, as in Calligraphy<br />
tool, the visible width of the brush is independent of zoom; simply zooming in or out is<br />
often easier than adjusting the width if you want to cover a smaller or larger area of<br />
the drawing.<br />
<br />
===Force===<br />
<br />
The next control is '''Force''' which adjusts the power of the action, also in the<br />
range from 1 to 100. You can also change width by '''Up''' and '''Down''' arrow keys at<br />
any time (including during action).<br />
<br />
If you have a pressure-sensitive tablet and your "Use pressure" button on the right-hand<br />
end of the controls bar is on, then the force will also depend on how hard you actually<br />
press your pen into your tablet, changing in the range from zero to whatever you set in<br />
the Force control. If all you have is a mouse, then the force will be constant but still<br />
settable by the Force control. <br />
<br />
===Path editing modes===<br />
<br />
The Tweak tool has a number of '''modes''', selectable by toggle buttons in the tool's<br />
Controls bar and by keyboard shortcuts. Some of these modes change the shapes of <br />
paths while others affect the colors of objects. All these modes share the Width and<br />
Force controls but otherwise are quite different. Let's look at the path editing modes<br />
first.<br />
<br />
Unlike the Node tool, to edit paths with the Tweak tool you don't need to worry about<br />
where the nodes of a path are and how to manipulate them. You just apply the tool's<br />
brush to any point, and the selected paths at that point will reshape smoothly and<br />
naturally - as if made of soft jelly - regardless of where its nodes lie. If applied to<br />
a shape or text object, the tool converts them to paths automatically.<br />
<br />
While not very useful for technical drawings, tweaking paths will be indispensable for<br />
artistic uses of Inkscape - cartoons, drawings, sketches, anime, etc. This new<br />
functionality is somewhat similar to the tools such as "Pucker" and "Bloat" in the<br />
latest versions of Adobe Illustrator. <br />
<br />
There are currently six path editing modes in the Tweak tool: '''Push''', '''Shrink''',<br />
'''Grow''', '''Attract''', '''Repel''', and '''Roughen'''.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
: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).<br />
<br />
: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 Inflating and carving holes with Melting. Unlike the "node sculpting" mode in the Node tool, however, this does not require adding new nodes to the shape.<br />
<br />
* 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 ; you can use them for various central-symmetric distortions in parts of your paths.<br />
<br />
* The '''Roughen''' mode does exactly this: roughens the edge of the path without changing its overall shape. Slight roughening simply makes the edge crooked and uneven; strong roughening tears and explodes the edge into random blobs and splotches. Note that this operation, especially with high Fidelity, adds a lot of nodes which increases the size of your SVG document and may slow down Inkscape considerably. In particular, pushing/melting/inflating 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.<br />
<br />
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.<br />
<br />
====Fidelity====<br />
<br />
Any tweaking of a path slightly distorts the entire path, including even those parts<br />
that you didn't touch. These distortions are similar to those that a Simplify command<br />
produces. The '''Fidelity''' value (also in the range from 1 to 100, default is 50)<br />
allows you to control the amount of these distortions. With a higher fidelity, the<br />
distortions are less noticeable, but the path may end up having a lot of nodes which<br />
inflates up the SVG size and slows down Inkscape.<br />
<br />
The best value of Fidelity depends on the nature of your artwork. If you're sculpting an<br />
amorphous blob, you can do with low fidelity of about 20. If, however, you are pushing<br />
or inflating a text string (as a single path) and want the letters outside the distorted<br />
area to remain crisp and clean, you will need to raise fidelity to 80 or more. <br />
<br />
====Known problems====<br />
<br />
Known problems with the path editing modes in Tweak tool:<br />
<br />
# they don't work on open paths (an open path becomes closed if you tweak it);<br />
# they are rather slow; <br />
# they quickly eat memory; and <br />
# they are sometimes buggy - thin calligraphic strokes may suddenly disappear or change their shape drastically as you're melting or inflating them.<br />
<br />
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. <br />
<br />
Also, sometimes after roughening, further tweaking of a path becomes impossible with this diagnostic:<br />
<br />
WARNING **: Shape error in ConvertToShape: directedEulerian(a) == false<br />
<br />
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.<br />
<br />
===Color editing modes===<br />
<br />
The '''Color Paint''' and '''Color Jitter''' modes, unlike the path editing modes,<br />
change the colors of objects instead of their shapes. Yet they share enough common<br />
features with the path editing modes to be part of the same tool: These modes also use<br />
a circular soft-edged brush controlled by the Width and Force parameters on the Controls<br />
bar and affected by the pen pressure (if you have a pressure-sensitive tablet).<br />
<br />
* '''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.)<br />
<br />
: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).<br />
<br />
: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.<br />
<br />
* '''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.<br />
<br />
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.)<br />
<br />
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.<br />
<br />
<br />
====Channels====<br />
<br />
Color Paint and Color Jitter honor the '''Channels''' control. This control comprises<br />
the four buttons: '''H''', '''S''', '''L''', and '''O''', which allow you to turn on and off<br />
the tool's action on the object's hue, saturation, lightness, and opacity,<br />
correspondingly. For example, if you want to raise the saturation of some part of your<br />
drawing without changing the hue, select some maximum-saturation color (e.g. pure red)<br />
and turn off all Channels buttons except S. Similarly, you can replace the hues without<br />
affecting saturation or lightness (only H pressed), or lighten/darken all colors without<br />
changing their hues and saturation (only L pressed). Pressing O allows you to apply the<br />
master opacity from the tool's style to the master opacity of objects (but not fill or<br />
stroke opacity).<br />
<br />
====Usage notes====<br />
<br />
Color painting with Tweak tool is similar, but not exactly analogous to bitmap<br />
painting. Even though the tool itself works as a soft brush, it still applies its color<br />
to vector objects, which behave as vector objects usually do. For example, if you want<br />
to change the tint of the face in your drawing, and if a hand in the drawing is part of<br />
the same object as the face, that hand will change its tint too even if it's located far<br />
from the point you are painting. (We foresee a "fracture" command in one of the next<br />
versions of Inkscape which will help you turn a monolithic object into a mosaic of small<br />
fragments that will be then easy to paint with Tweak tool.) Still, even with this<br />
limitation, color painting is a novel way of dealing with vector drawings which allows<br />
you to quickly and intuitively make adjustments which would be awkward and slow with<br />
traditional approach.<br />
<br />
Drawings containing patterns or scatterings of small independent objects are best suited<br />
for color painting with Tweak tool. Examples include:<br />
<br />
* freehand drawings with Calligraphy pen, consisting of many separate strokes;<br />
<br />
* 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);<br />
<br />
* text converted to paths and with Break Apart command applied so that each letter is a separate path;<br />
<br />
* 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.<br />
<br />
Moreover, color tweaking can be useful for compositions with a few objects or even for<br />
single objects. Unlike all other color selection methods, painting with the Tweak tool<br />
implements the ''color mixing'' metaphor which is much more familiar to traditional<br />
artists than RGB sliders or even the color wheel. For example, start with a rectagle of<br />
pure blue color; then, pick different colors by Color Paint and apply light touches with<br />
minimum Force and minimum pen pressure: add a little green, a little brown, a little<br />
yellow, etc. until you have the exact hue you need. Similarly, you can whiten or blacken<br />
any hue by admixing white or black.<br />
<br />
You can also use color tweaking to add a tint, darken/lighten, saturate/desaturate, or<br />
color jitter your entire drawing. Just select all in all layers, zoom out, choose a<br />
large brush width so it covers all of the drawing, and apply a little color tweaking<br />
(with minimum Force) that will therefore affect all visible objects.<br />
<br />
===Keyboard shortcuts===<br />
<br />
* '''W''', '''Shift+F2''': switch to the Tweak tool<br />
<br />
* '''Shift+P''': switch to the Push mode<br />
<br />
* '''Shift+S''': switch to the Shrink mode<br />
<br />
* '''Shift+G''': switch to the Grow mode<br />
<br />
* '''Shift+A''': switch to the Attract mode<br />
<br />
* '''Shift+E''': switch to the Repel mode<br />
<br />
* '''Shift+R''': switch to the Roughen mode<br />
<br />
* '''Shift+C''': switch to the Color Paint mode<br />
<br />
* '''Shift+J''': switch to the Color Jitter mode<br />
<br />
* '''Left, Right, Home, End''': change width<br />
<br />
* '''Up, Down''': change force<br />
<br />
* '''mouse drag''': act on selected path in the current mode<br />
<br />
* '''Ctrl+mouse drag''': temporarily switch to Shrink (while Ctrl is down)<br />
<br />
* '''Shift+Ctrl+mouse drag''': temporarily switch to Grow (while Shift+Ctrl is down)<br />
<br />
==3D Box tool==<br />
<br />
Inkscape is a two-dimensional drawing tool. However, very often it is used to draw three-dimensional objects. The new '''3D box tool''' helps you create such 3D drawings by automating the most common operation: creating a three-dimensional box in a given perspective. The tool automatically ensures that all sides of the box lie on the corresponding perspective lines. We're not going to compete with Blender - but even simple things can go a long way.<br />
<br />
Currently in the 3D box tool you can:<br />
<br />
* draw a 3D box by dragging on canvas (use Shift+dragging without releasing the mouse button to extrude in z direction)<br />
<br />
* adjust any of its 3 dimensions by handles<br />
<br />
* move a 3D box "in perspective" 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<br />
<br />
* adjust the vanishing points of a perspective by dragging them across the canvas (see below) or toggling their states; all boxes sharing this perspective are transformed accordingly<br />
<br />
In SVG, a 3D box is represented as a '''group''' (svg:g) with a special extension attribute (in inkscape namespace); this group contains the 6 quadrilateral '''paths''' representing the sides of the box. Only the 3D box tool treats this object as a box; for all other tools it is just a group, so you can select any of the paths by Ctrl+click, apply any style to it, delete it, etc. You can of course transform the entire box or any face in it using Selector or Node tools.<br />
<br />
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 "dragger". 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.<br />
<br />
===Keyboard shortcuts===<br />
<br />
* '''X''', '''Alt+F4''': switch to the 3D box tool<br />
<br />
* 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.<br />
<br />
* When the 3D box tool is active, '''Shift+X''', '''Shift+Y''', and '''Shift+Z''' toggle perspective lines in the corresponding direction between "converging" and "parallel".<br />
<br />
<br />
[max]<br />
<br />
==Gradient Tool==<br />
===Selecting multiple stops===<br />
'''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. <br />
* Add a stop to the selected stops by '''Shift+click'''.<br />
* Press '''Ctrl+A''' to select all stops in the selected objects.<br />
* '''Shift+drag''' around stops to add them to selection.<br />
Multiple selected stops:<br />
*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.<br />
*Can be deleted at the same time by pressing '''Del'''.<br />
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.<br />
<br />
===Editing intermediate stops===<br />
'''Intermediate stops''' in gradients can be added, deleted, and edited on canvas (previously this was only possible in the Gradient Editor dialog).<br />
*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.<br />
*When two or more adjacent stops are selected, pressing '''Ins''' adds stops in the middles of all selected stop intervals.<br />
*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). <br />
:*Dragging with '''Ctrl''' moves the selected stops snapping them to 1/10 fractions of the available range.<br />
:*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.<br />
*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).<br />
*Stops can be deleted by '''Ctrl+Alt+Click''' on a stop or by the '''Del''' key for all the selected stop(s).<br />
:*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).<br />
:*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 & opacity of the remaining stop.<br />
*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.<br />
<br />
===Style of gradient stops===<br />
*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&Stroke dialog. Previously, opacity of a gradient handle was reflected as fill-opacity and stroke-opacity; now it is reflected as '''master opacity''' (the "O:" spinbutton in the selected style indicator, the "Master opacity" slider in Fill&Stroke). This makes it much easier to view and change opacity of gradient handles using only the selected style indicator in the statusbar.<br />
:*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.<br />
*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''').<br />
*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 "L Gradient" or "R Gradient" text labels as before). Also, this and other similar widget now use italic font face to indicate <i>None</i> and bold to indicate <b>Unset</b>.<br />
<br />
===Automatic duplication of gradients===<br />
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. <br />
<br />
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.<br />
<br />
==Calligraphy tool: Engraver's Toolbox ==<br />
<br />
Several new features were added to the Calligraphic pen to make<br />
Inkscape capable of the ancient art of '''line<br />
engraving'''. Traditional engraving is a very labour-intensive<br />
process, and while for a long time it was the only practical way<br />
of reproducing lifelike images in black-and-white print, about a<br />
century ago it was almost completely displaced by automatic<br />
halftone screens. However, line engravings have their<br />
characteristic charm, and there's no reason not to try to<br />
resurrect this art form with the help of Inkscape.<br />
<br />
A brief visual guide to the new functionality can be seen on<br />
these screenshots:<br />
<br />
http://inkscape.org/screenshots/gallery/inkscape-0.46-engraving1.png<br />
<br />
http://inkscape.org/screenshots/gallery/inkscape-0.46-engraving2.png<br />
<br />
<br />
===Tracking a guide path with Ctrl===<br />
<br />
One of the most common operations in line engraving is<br />
'''hatching''' (or sometimes ''cross-hatching'' when several<br />
hatching grids cross): filling a space with many parallel<br />
straight or variously curved lines (usually of varying width to<br />
represent a gradual shading). You could try to achieve a similar<br />
effect with e.g. path interpolation (blending), but it is rather<br />
cumbersome and limited; manual drawing of hatch lines, on the<br />
other hand, is tedious and nearly impossible to do<br />
uniformly. Now Inkscape provides "assisted hatching" by<br />
'''tracking a guide path''', allowing you to hatch quickly and<br />
uniformly and at the same time giving you sufficient manual<br />
control over the process.<br />
<br />
Here's how to do this. First, select the '''guide path''' that<br />
you will track. It may be another calligraphic stroke, any path<br />
or shape, or even a letter of a text object. Then switch to<br />
Calligraphic pen, select the desired parameters (line width,<br />
angle, fixation etc.) and, before starting to draw, press<br />
Ctrl. You will see a gray '''track circle''' centered at your<br />
mouse pointer and touching the closest point on the selected<br />
guide path. (If you have no guide path selected, a statusbar<br />
message will tell you to select it.)<br />
<br />
Now move your mouse close to the guide path, so that the track<br />
circle radius is equal to the desired spacing of your hatch<br />
pattern, and start drawing along the guide path. At that moment,<br />
the radius of the circle gets locked; now the circle slides<br />
along the guide path - and the actual stroke is drawn by the<br />
center of the tracking circle, ''not'' by your mouse point. As<br />
a result, you are getting a smooth stroke going parallel to the<br />
guide path and always at the same distance from it.<br />
<br />
When the stroke is ready, release your mouse button (or lift<br />
your tablet pen) but '''do not let go of the Ctrl key''' because<br />
as long as you have it pressed, the tool remembers the hatch<br />
spacing you set when you started drawing. Now, you have just<br />
created a new stroke and, as usual with Inkscape tools, it gets<br />
selected instead of what was selected before. In our case, this<br />
means that the newly drawn stroke itself becomes the new guide<br />
path. Next, you can draw a second stroke along the first one,<br />
then a third one along the second, etc. Eventually you can fill<br />
any desired space with uniform hatching.<br />
<br />
Alternatively, if you uncheck "Select new path" 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. <br />
<br />
The attachment to the guide path is not absolute. If you stray<br />
your mouse pointer far enough from the guide path, you will be<br />
able to tear it off (the track circle turns from green to red)<br />
and move freely. This is intentional; this feature allows you,<br />
for example, to continue drawing a stroke past the end of a<br />
guide stroke, thus making your hatching cover a wider area than<br />
the initial guide path. Special care is taken to make such<br />
tearing off as smooth as possible and to suppress violent jerks,<br />
but this is not always possible; the general advice is to not<br />
try to hatch too fast. If jerking and unintended tearoffs still<br />
bother you, try increasing the Mass parameter.<br />
<br />
Also, special code is in place to prevent flipovers - accidental<br />
jumps to the other side of the guide path. Brief flipovers are<br />
suppressed, but if you intentionally go over to the other side<br />
and stay there, eventually Inkscape will obey and your tracking<br />
stroke will also flip over to follow you.<br />
<br />
Tracking a guide also allows some slight feedback by gradually<br />
changing the tracking distance in response to your drawing<br />
behavior. Thus, if you're consistently trying to draw closer or<br />
farther from the guide than the current tracking distance, the<br />
distance will correspondingly decrease or increase, so you will<br />
get a hatching that is slightly spacing in or out. (The effect<br />
is very slight, however, so as not to become a nuisance.) Also,<br />
note that since tracking follows the edge of the stroke, strokes<br />
of varying width (such as those tracing background, see below)<br />
will result in gradual bending of the hatching pattern as you<br />
proceed.<br />
<br />
===Tracing background by stroke width===<br />
<br />
There is a new toggle button on the Calligraphy tool's controls<br />
bar, '''Trace background'''. When on, the width of your pen<br />
depends on the lightness of the background under the stroke in<br />
each point, so that white translates into the minimum stoke<br />
width (1) and black translates to the maximum (which is set by the<br />
Width parameter). This can work alone or in combination with<br />
pressure sensitivity, depending on whether the "Use pressure" button<br />
is also toggled.<br />
<br />
This feature allows you to not only hatch over an imported<br />
bitmap image or any drawing, but to do so automatically<br />
reproducing the highlights and shades of the background with<br />
your strokes becoming lighter and heavier as needed.<br />
<br />
===Misc features===<br />
<br />
* 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. <br />
<br />
* 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.)<br />
<br />
==Selector==<br />
<br />
* 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. <br />
<br />
: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.<br />
<br />
* 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.<br />
<br />
* Draging the '''scale handles with Alt''' now scales selection by an integer factor, i.e. up to '''2''', '''3''', '''4''', etc. times the original size or down to '''1/2'''. '''1/3''', '''1/4''', etc. of the original size (in any of the two dimensions independently). This way you can, for example, mirror any object around one of the edges of its box. (This replaces the old and rarely used "slow" scaling mode with Alt.)<br />
<br />
* '''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.<br />
<br />
* '''Objects to Marker''' was added to the objects menu, which converts the current selection to a marker, with the center point of the selection being set to the center of the marker.<br />
<br />
==Node tool==<br />
<br />
* 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 ('<' and '>' 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.<br />
<br />
* [helper path display - johan]<br />
** this is deactivated for normal paths now. only paths with LPE applied will show it. should there be a button to turn it on for normal paths aswell?<br />
<br />
* As a long-requested feature, two entry fields are added to the toolbar which allow precise editing of the coordinates of selected nodes.<br />
<br />
==Rectangle Tool==<br />
<br />
* '''Ctrl+dragging''' now also allows the creation of rectangles with sides constrained to the '''golden ratio''' (approx. 1 : 1.618034), not only integer ratios.<br />
<br />
==Ellipse Tool==<br />
<br />
* 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.<br />
<br />
* '''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.<br />
<br />
==Pen/Pencil Tool==<br />
<br />
It is now easy to create '''single dots''' in pen and pencil tool by simply '''Ctrl+clicking''' 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). In addition, holding '''Shift''' while creating multiple dots slightly varies their size randomly so that the result is less monotone when creating many dots in a sequence.<br />
<br />
==Text tool==<br />
* [text toolbar - deadchip?]<br />
* If text contains a tref element, the text tool's behavior may not be as expected. Please see [[#The tref Element]]<br />
<br />
==Dropper Tool==<br />
<br />
The shortcut 'D' is now used to <i>toggle</i> (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.<br />
<br />
=SVG features=<br />
<br />
==The tref element==<br />
<br />
Inkscape can now correctly open files with '''tref''' elements, and new tref elements can be created manually in the XML editor.<br />
<br />
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'''.<br />
<br />
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'''.<br />
<br />
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.<br />
<br />
Existing tref elements can be converted into tspan elements with '''Edit > Clone > 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'''.<br />
<br />
A '''tref''' element can be mixed with any other elements allowed to be contained by a text element.<br />
<br />
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'''.<br />
<br />
==SVG filters==<br />
<br />
===New filters supported===<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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]<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
See also wiki page [[Filter Effects]] for more info on filters in Inkscape in general.<br />
<br />
===Filters UI===<br />
<br />
* New dialog for creating and modifying filter effects ('''Object>Filter Effects...''')<br />
* The list at the left of the dialog displays all filters currently in the document.<br />
** New filters can be added with the '''Add''' button beneath the list<br />
** Right-clicking a filter for the pop-up menu allows duplicating or removing a filter.<br />
** Double-clicking a filter will apply it to all selected objects<br />
** 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.<br />
* The second list, at the left of the dialog, displays the '''filter primitives''' that are contained within the currently-selected filter.<br />
** New primitives can be added by selecting the primitive type from the combo box beneath the list, and then pressing the '''Add''' button.<br />
** Right-clicking a primitive for the pop-up menu allows duplicating or removing a primitive.<br />
** Primitives can be rearranged by clicking and dragging any filter in the list.<br />
** 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.<br />
** The "in" and "in2" 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.<br />
*** 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.<br />
*** 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.<br />
*** 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.<br />
*** 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.<br />
*** Merge inputs have an empty input at the end. Dragging a connection from this input will add a new input to the primitive.<br />
<br />
=Live Path Effects (LPE)=<br />
<br />
'''Live path effects''' (not to be confused with extension effects or SVG filters) are a new way to <b>non-destructively modify path and shape objects</b>. 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. <br />
<br />
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.<br />
<br />
Live path effects were developed by Johan Engelen as part of the GSoC 2007.<br />
<br />
==Details about operation==<br />
The following schematic tries to explain how LPE work.<br />
<br />
original style ------------> output style<br />
original path --> LPE --> output path<br />
^<br />
|<br />
parameters<br />
<br />
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 <b>output style equals original style</b>.<br />
<br />
The parameters can be paths, numbers, points, text, in principle anything.<br />
<br />
<br />
==Applying effects==<br />
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.<br />
<br />
When a path with a path effect applied is selected, the statusbar description mentions that, for example "'''Path''' (4 nodes, path effect)".<br />
<br />
There is a special Paste Path Effect command (Ctrl+7) that can be used to copy effects from one path to another.<br />
<br />
==Editing effect parameters==<br />
When switching to the node edit tool (<b>F2</b>), the <b>original path</b> can be edited. The original path is shown as a red helper path. Normal path operations, like simplify, still work.<br />
<br />
Some parameters of effects can be edited on-canvas. For example, path parameters can be node-edited, by pressing the "edit on-canvas" button in the Path Effects dialog. <b>Press "7" to cycle through the different on-canvas editable parameters.</b> 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.<br />
<br />
==Available effects==<br />
<br />
===Path along path===<br />
The <b>Path along Path</b> 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 <b>on-canvas</b> and the result is <b>updated live</b>. This provides a direct equivalent of "vector brushes" or "skeletal strokes" features in other vector editors. <br />
<br />
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'.<br />
<br />
Example file: live-path-effects-pathalongpath.svg<br />
<br />
===Pattern along path===<br />
The <b>Pattern along Path</b> 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 <b>on-canvas</b> and the result is <b>updated live</b>. This provides a direct equivalent of "vector brushes" or "skeletal strokes" features in other vector editors. <br />
<br />
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.<br />
<br />
Example file: live-path-effects-pathalongpath.svg<br />
<br />
===Stitch Subcurves===<br />
The <b>Stitch Subcurves</b> effect connects points from two subpaths of the path with straight line or curved segments, i.e. the <i>stitches</i>. It looks a lot like the Effect Lines from Expression 3. The result is also referred to as "String Art". For some examples of string art, see http://members.shaw.ca/jillbritton/string_art/jbstringart.htm. <br />
<br />
The <b>shape</b> of the <b>connecting paths</b> can controlled by the <b>stroke path</b> parameter. This could be used to draw 'hair-shaped' connecting paths with sharp end-tips. Other controls include the <b>number of paths</b>, the variation in spacing between the connecting paths (<b>clustering</b>) and also whether the start and end points of the stitches should like exactly on the original subcurves or can <b>stray randomly</b> around them. Finally the width of the stroke path can be varied.<br />
<br />
Note that this effect can only be applied to a path with two subpaths in it, hence '<b>sub</b>curve' in the name. Use Path > Combine to create such a path from two separate paths.<br />
<br />
Example file: live-path-effects-curvestitch.svg<br />
<br />
Example file showing cooperation between Stitch Subcurves and Path along Path: live-path-effects-curvestitch-hair.svg<br />
<br />
===Gears===<br />
The <b>Gears</b> 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. <br />
<br />
Example file: live-path-effects-gears.svg<br />
<br />
==Development of new effects==<br />
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!<br />
<br />
[johan]<br />
<br />
=Extension effects=<br />
<br />
== Live preview ==<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''Progress dialog''': While an extension is working on a document, a small dialog is shown allowing the user to cancel the execution.<br />
<br />
== New and improved effects ==<br />
<br />
* The new '''Modify Path > Edge 3D''' extension creates black, grey and white paths around a shape, then blurs and clips them for a 3D effect.<br />
<br />
* The new '''Render > 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. <br />
<br />
* The new '''Render > 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.<br />
<br />
* The new '''Render > [[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]).<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* 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.<br />
<br />
*The new '''Color > 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.<br />
<br />
*The '''Whirl''' extension uses the center of view as the center of whirl, so you don't have to enter the center coordinates numerically.<br />
<br />
*The '''Render > Grid''' extension has got an extended range of grid spacings, from 0.1 to 1000 px.<br />
<br />
*The '''Render > Function Plotter''' extension can now plot using polar coordinates.<br />
<br />
*The '''Generate Template > 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.<br />
<br />
== XSLT effects ==<br />
<br />
* '''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.<br />
<br />
== ImageMagick effects ==<br />
<br />
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. <br />
<br />
* '''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.<br />
<br />
* '''Add Noise''' adds random noise of certain types to the bitmap.<br />
<br />
* '''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.)<br />
<br />
* '''Channel''' extracts the specified channel from the bitmap.<br />
<br />
* '''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.<br />
<br />
* '''Colorize''' overlays the bitmap with a given color at a given intensity.<br />
<br />
* '''Contrast''' lightly enhances the contrast (difference between lights and darks) of a bitmap.<br />
<br />
* '''Cycle Colormap''' cycles the colormap of a bitmap.<br />
<br />
* '''Despeckle''' reduce the speckle noise in a bitmap.<br />
<br />
* '''Edge''' hilights edges in a bitmap.<br />
<br />
* '''Emboss''' embosses a bitmap, hilighting edges with 3D effect.<br />
<br />
* '''Enhance''' enhance a bitmap, minimizing noise.<br />
<br />
* '''Equalize''' equalizes a bitmap. Histogram equalization.<br />
<br />
* '''Flop''' mirrors a bitmap, reflecting each scanline in the horizontal direction.<br />
<br />
* '''Gaussian Blur''' blurs a bitmap, more strongly than regular blur.<br />
<br />
* '''Implode''' sucks everything towards the center of the bitmap.<br />
<br />
* '''Level''' scales values falling between the given '''Black Point''' to '''White Point''' range to the full color range.<br />
<br />
* '''Level Channel''' acts the same way as level but for only one channel.<br />
<br />
* '''Median Filter''' filters a a bitmap by replacing each pixel component with the median color in a circular neighborhood<br />
<br />
* '''Modulate''' adjusts the percent hue, saturation, and brightness of a bitmap.<br />
<br />
* '''Negate''' takes the inverse of a bitmap.<br />
<br />
* '''Normalize''' normalizes a bitmap, expanding color range to the full possible range of color.<br />
<br />
* '''Oil Paint''' stylizes a bitmap so that it appears to be painted with oils.<br />
<br />
* '''Opacity''' modifies the opacity channel of a bitmap.<br />
<br />
* '''Raise''' alters the lightness of the edges of a bitmap to create a raised appearance, much like a frame.<br />
<br />
* '''Reduce Noise''' reduces noise in a bitmap by using a noise peak elimination filter.<br />
<br />
* '''Shade''' shades a bitmap by simulating a distant light source<br />
<br />
* '''Sharpen''' sharpens a bitmap.<br />
<br />
* '''Solarize''' solarizes a bitmap, like overexposing photographic film.<br />
<br />
* '''Spread''' randomly spread pixels in a bitmap within the radius of '''amount'''.<br />
<br />
* '''Swirl''' swirls the bitmap around the center point.<br />
<br />
* '''Threshold''' thresholds a bitmap.<br />
<br />
* '''Unsharpmask''' sharpens a bitmap using an unsharp mask algorithm.<br />
<br />
* '''Wave''' alters a bitmap along the sine wave.<br />
<br />
These effects are part of the Google Summer of Code 2007, coded by Christopher Brown.<br />
<br />
== Misc ==<br />
<br />
* All Python effects are switched from the old and unmaintained PyXML library to the new powerful [http://codespeak.net/lxml/ lxml] library.<br />
<br />
* 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.<br />
<br />
= Stock patterns =<br />
<br />
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&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:<br />
<br />
*A selection of plain '''stripes''' differing by the ratio of the stripe width to gap width (for example, the "Stripes 1:2" 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).<br />
<br />
*Two '''checkerboard''' patterns with black and white odd squares (even squares are transparent)<br />
<br />
*'''Packed circles''': a hexagonal pattern of black circles with transparent gaps.<br />
<br />
*'''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).<br />
<br />
*'''Wavy''' is a pattern of wavy lines.<br />
<br />
*'''Camouflage''' is a green-toned protective pattern such as that used by the military.<br />
<br />
*'''Ermine''' is the traditional heraldic pattern representing stylized stoat furs with black tails.<br />
<br />
*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 "texturize" them. <br />
<br />
After applying a stock pattern, switch to Node tool to edit the location, scale, and rotation of the pattern via on-canvas handles.<br />
<br />
All stock patterns are stored in the file <code>patterns/patterns.svg</code> in Inkscape's <code>share</code> directory (typically <code>/usr/share/inkscape</code> on Linux, <code><i>inkscape-dir</i>/share</code> on Windows). You can add your own patterns to this file or replace it with any other SVG file containing the patterns you need.<br />
<br />
=Color management=<br />
<br />
== Calibrated SVG color including CMYK ==<br />
<br />
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<br />
optional "icc-color(...)" paint components as described in section 11.2 "Specifying paint" of the SVG 1.1 specification<br />
[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.<br />
<br />
The new CMS color selector tab allows these colors to be edited.<br />
<br />
== Display adjustment ==<br />
<br />
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.<br />
<br />
=== Per-window adjustment ===<br />
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.<br />
<br />
=== XICC Support ===<br />
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.<br />
<br />
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.<br />
<br />
=== Multi-monitor aware ===<br />
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.<br />
<br />
== Soft Proofing ==<br />
<br />
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.<br />
<br />
=Snapping=<br />
<br />
* Snapping has been implemented or improved for:<br />
<br />
:* '''Newly created shapes'''<br />
<br />
:* '''Skewing''' of objects<br />
<br />
:* '''Handles''' of objects, incl. '''gradients'''<br />
<br />
:* '''Images''', '''ellipses''', and '''clones'''<br />
<br />
:* Text boxes, which snap to '''text baselines''' again<br />
<br />
:* Objects, for which snapping now optionally considers the '''rotation center'''<br />
<br />
:* Objects, which now allow for '''constrained snapping'''<br />
<br />
:* '''Guides''', which now snap while dragging them<br />
<br />
:* '''Axonometric grids'''<br />
<br />
:* '''Angled guide lines'''<br />
<br />
:* '''Bounding boxes''', of which now all four corners snap<br />
<br />
<br />
<br />
* Other snapping fixes and improvements include:<br />
<br />
:* It is now possible to snap to '''intersections''' of e.g. gridlines with guidelines, and of line segments. <br />
<br />
:* The '''snapping preferences dialog''' has been restyled to make it more intuitive. <br />
<br />
:* Inkscape now has a global snapping toggle, which has been added to the view-menu and is accessible through a shortcut<br />
<br />
:* Inkscape now allows for controlling the snapping per grid when multiple grids are being used<br />
<br />
:* Snapping distance is now set in screen pixels and is therefore '''independent of zoom'''. <br />
<br />
:* Snapping of objects has been made more clean, by only snapping '''bounding box corners to bounding boxes''', and '''nodes to other nodes and paths'''.<br />
<br />
:* The time it takes to snap to objects using the selector tool has been reduced significantly.<br />
<br />
:* The bug where "node-to-node" snapping caused jerky movement of nodes is fixed.<br />
<br />
:* The '''aspect ratio''' is correctly preserved while scaling objects with snapping turned on.<br />
<br />
:* Only nodes at '''non-smooth parts''' of a path now snap.<br />
<br />
:* The confusing "Default transformations origin" 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).<br />
<br />
:* 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).<br />
<br />
=Grids=<br />
Grids have undergone some big changes under-the-hood. These are the visible changes:<br />
* There is a <b>new 3D/axonometric grid</b>!<br />
* A new tab in the document properties dialog, solely meant for grids; the former grid/guide tab is now solely for guides. I envision a list of guides there in the future, for easier deletion of guides etc.<br />
* More than one grid can be active at the same time<br />
** Each grid can be enabled/disabled separately from the document properties dialog.<br />
* One can make grids invisible by unchecking the "Visible" checkbox in the grid's tab in the document properties dialog. Snapping is still enabled even for invisible grids!<br />
* Multiple views on the same document share the same grids, but the grid can be turned off for each view separately. For example: one could have an overview view without 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. (sorry i am not able to explain more clearly, perhaps someone else can?)<br />
* Grid information is now stored in SVG as a child of sodipodi:namedview. Old files will be converted to this new format automatically<br />
* The rectangular grid now has an option to show dots on gridline intersections instead of solid lines<br />
<br />
From developer perspective:<br />
<br />
* Implementation of new grids is much easier now; subclassing CanvasGrid and adding an entry in the is enough. Have a peek at how the rectangular grid is implemented (CanvasXYGrid).<br />
* Note that there is no longer "the grid", there might be several grids active now!<br />
<br />
A side effect of removal of old gridcode: apparantly the origin of the desktop rules used to be set to the origin of the grid. I find this strange: specifying a grid origin of (2,2) would have me think the origin would be at ruler location (2,2) instead of (0,0) as it is in 0.45.1.<br />
I have commented the grid-origin correction to the ruler range, because now there is not a single grid anymore to correct it for. Isn't there a control somewhere to define the documents origin? Now the ruler origin is set to (0,0)<br />
<br />
--johan<br />
<br />
=Angled guidelines=<br />
<br />
Now, Inkscape also provides angled guidelines! Double click on a guide to set its angle.<br />
<br />
* When dragging a guideline off the rulers close to the edge, the guideline will automatically be angled. The angle is set depending on the grid.<br />
** For the rectangular grid, the angle is 45 degrees.<br />
** For the axonometric grid, the angle is matched to the grid. When the Ctrl-key is pressed, the angle is perpendicular to the grid lines (useful for aligning gradients).<br />
<br />
=Creating guidelines from objects=<br />
<br />
* Selected objects can now be converted to guidelines. To do this, either use the menu command '''"Object->Object to guides"''' 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.<br />
<br />
* 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. <br />
<br />
* '''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.<br />
<br />
* For all other objects, conversion usually happens by placing the guidelines around the object's bounding box (use the corresponding checkbox in the "Tools" page of Inkscape Preferences to switch between geometric and visual bounding box).<br />
<br />
*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.<br />
<br />
=Import/Export=<br />
<br />
==PDF and AI import==<br />
<br />
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). <br />
<br />
'''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. <br />
<br />
'''PDF import settings''': After opening a PDF or AI document, the PDF Import Settings dialog shows up. Here you can select:<br />
<br />
* the '''page''' to be imported from a multipage PDF;<br />
<br />
* 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.);<br />
<br />
* 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;<br />
<br />
* a checkbox controlling whether the '''images''' should be '''embedded''' into the resulting SVG document or saved on the current path;<br />
<br />
* 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).<br />
<br />
'''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.)<br />
<br />
To work around this, select the text object you want to edit and use '''Text > 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. <br />
<br />
Note that there is a way to select even a single line in a text block. For this, open the XML editor, expand the <svg:text> tree branch corresponding to your text, and select any of the <svg:tspan> 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+> or Alt+<).<br />
<br />
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.<br />
<br />
==PDF export==<br />
<br />
* A new cairo-based PDF exporter has been added to Inkscape (marked as "Cairo PDF" in the export format list). Inkscape 0.46 can export shapes, strokes, transparency, gradients, patterns, text, and images correctly to cairo. While clipping paths and masks are known to be faulty or missing. 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.<br />
<br />
* A new cairo-based PostScript exporter has been added (marked as "Cairo PS" 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.<br />
<br />
==CDR (CorelDraw) import==<br />
<br />
Inkscape can use [http://www.sk1project.org/modules.php?name=Products&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 (since UniConvertor is Unix-only) and requires that you have Python and UniConvertor installed. As of UniConvertor 1.0rc2, only versions from 7 to X3 of the CDR format are supported, and text objects are not converted. <br />
<br />
==XAML import/export==<br />
<br />
* Inkscape can import vector graphics portions of XAML documents, as well as export its documents to XAML.<br />
<br />
==Adobe Illustrator SVG clean import==<br />
<br />
* 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.<br />
<br />
==Bitmap export==<br />
<br />
* '''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.<br />
<br />
: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 "export" layer. In that layer, "slice" 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 "export" layer, select all in that layer (Ctrl+A), and export with the ''Batch export selected objects'' checkbox on.<br />
<br />
* '''Hide all except selected''': A new checkbox allows you to hide in the exported image everything except selected object(s).<br />
<br />
* The Export dialog automatically appends the '''.png''' extension to the export filename you specify.<br />
<br />
== Open Clip Art Library import and export ==<br />
<br />
{rejon}<br />
<br />
=Command line=<br />
<br />
Several new command line options are added that make Inkscape even more scriptable and automatable than before.<br />
<br />
* --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.<br />
<br />
* --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.<br />
<br />
* --select followed by a node ID will allow you to add a node to the list of selected objects.<br />
<br />
* --query-all produces a comma delimited listing of all objects in the document, with their x, y, height, and width values.<br />
<br />
These options can be used, for example, for performance testing. You could do something like this:<br />
<br />
$ time inkscape --verb=FileClose my_complex_file.svg<br />
<br />
to measure the time it takes to load and display the file.<br />
<br />
Of course, with the ability to select objects, it can be much more useful than<br />
that. You can call extension effects, or any other verb, then FileSave and<br />
FileClose to automate all kinds of operations on your drawings.<br />
<br />
=User interface=<br />
<br />
== Dockable dialogs ==<br />
<br />
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.<br />
<br />
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&mdash;this allows other dialogs to be dragged and dropped on it to form a floating group of dialogs.<br />
<br />
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'' > ''Dialog behavior'' in the Inkscape preferences dialog.<br />
<br />
====Known issues====<br />
<br />
* Some of Inkscape's dialogs are yet to be adapted to allow docking, these include the "Text and Font" dialog, the "Tiled clones" dialog, the "XML editor" and the "Object properties" dialog.<br />
<br />
* Floating dialogs that are closed and later reopened might reappear on positions slightly different than their original ones.<br />
<br />
* Resizing dialogs that are placed in the dock can be a bit slow and quirky.<br />
<br />
* 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.<br />
<br />
====Settings====<br />
<br />
Three settings that control dockable dialogs behavior are present in the <code>preferences.xml</code> file under a <code>options</code> group called <code>dock</code>:<br />
<br />
* <code>cancenterdock</code>: controls if dialogs are allowed to be stacked on top of each other to be ordered in groups. Valid values are <code>"0"</code> and <code>"1"</code>.<br />
<br />
* <code>dockbarstyle</code>: controls what information is shown for iconified dockable dialogs. <code>"0"</code> = icons only, <code>"1"</code> = text only, <code>"2"</code> = both icons and text. <br />
<br />
* <code>switcherstyle</code>: controls what information is shown for grouped dockable dialogs. <code>"0"</code> = icons only, <code>"1"</code> = text only, <code>"2"</code> = both icons and text.<br />
<br />
== [toolbars - [[JonCruz]]] ==<br />
<br />
'''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.<br />
<br />
[calligraphy: menus, tooltips; star; ...]<br />
<br />
Switched to stock GTK+ toolbars.<br />
<br />
Extra magic secret sauce added.<br />
<br />
== [filedialogs - [[JonCruz]]] ==<br />
<br />
== Swatches panel, color drag-and-drop ==<br />
<br />
* Right-clicking a color swatch now opens a context menu which allows you to apply the color to the fill or stroke of selection.<br />
<br />
* Dragging colors from the color palette has been fixed and improved:<br />
<br />
:* 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.)<br />
<br />
:* 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.)<br />
<br />
:* 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.<br />
<br />
==Color gestures==<br />
<br />
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 "None", "N/A", 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.<br />
<br />
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'''.<br />
<br />
The adjustment is done by '''"rotating"''' the color swatch away from the original direction which is assumed to be '''NE at 45 degrees''' (i.e. from<br />
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.<br />
<br />
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.<br />
<br />
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. <br />
<br />
You can '''switch channels while you drag'''. That is, you don't need to <br />
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.<br />
<br />
The '''Alt''' modifier is special. Pressing Alt means "do nothing"; 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.<br />
<br />
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.<br />
<br />
Apart from precise adjustments, you can use color gestures to very quickly perform some common color transformations:<br />
<br />
* Ctrl+drag the swatch to the right and down to paint all selected objects black.<br />
<br />
* Ctrl+drag the swatch upwards and to the left to paint all selected objects white.<br />
<br />
* Shift+drag the swatch to the right and down to desaturate the color of selected objects.<br />
<br />
* Shift+drag the swatch upwards and to the left to maximize saturation of the color of selected objects. <br />
<br />
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.<br />
<br />
This new technique requires some getting used to, but once you get the idea it is quite convenient, fast, and precise.<br />
<br />
== Print dialog integration == <br />
<br />
* '''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.<br />
<br />
== Saving window geometry globally ==<br />
<br />
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 "Save geometry to preferences" 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).<br />
<br />
== Preserving zoom/view of reverted documents ==<br />
<br />
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.<br />
<br />
== Bounding box option moved ==<br />
<br />
The preferences option to select between "visual" and "geometric" bounding box was moved in Inkscape Preferences dialog from the "Selector" page to "Tools" page (since it applies more globally than just in Selector tool).<br />
<br />
== New ways to scroll and zoom ==<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* In the Zoom tool, right mouse button always zooms out instead of calling the context menu (which is rather useless in this tool anyway).<br />
<br />
== Using other keys in place of Alt ==<br />
<br />
* 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 <code>mapalt</code> in the <code>options</code> 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 "Modifiers" when the mouse is held over a key on the main display.<br />
<br />
== GTK theme on OS X ==<br />
<br />
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 "Appearance" and "Highlight Color" set in System Preferences > Appearance.<br />
<br />
=Other changes and improvements=<br />
<br />
* '''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.<br />
<br />
* 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. <br />
<br />
* The somewhat cryptic "F:" and "S:" 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.<br />
<br />
* 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. "Style of new rectangles", "Style of new calligraphic strokes", etc.)<br />
<br />
* 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. <br />
<br />
* After dragging a curve segment in Node tool, Inkscape no longer selects the two adjacent nodes if they were not selected before. <br />
<br />
* 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. <br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.)<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* 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 <code>default.svg</code>, 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 > New submenu).<br />
<br />
* 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.<br />
<br />
* 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 "slideshow mode" of the main inkscape application (-s or --slideshow command line option) is removed; use inkview instead.<br />
<br />
* In Document Metadata dialog, updated '''Creative Commons Licenses''' to version '''3.0'''.<br />
<br />
* Preferences have been added for setting the default metadata and licenses, so this information can be automatically filled in with new documents.<br />
<br />
* The built-in '''Potrace''' tracing engine is upgraded to version '''1.8''' with some minor bugs fixed.<br />
<br />
* File dialog windows (open/save) now have an '''Enable preview''' checkbox which allows you to disable the preview pane.<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* The option '''Import bitmap as <image>''' 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 <image> element.<br />
<br />
* 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 & stroke dialog.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* Add some new '''UML markers''', including filled and hollow diamonds and triangles.<br />
<br />
* 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'''.<br />
<br />
=Notable bugfixes=<br />
<br />
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]].<br />
<br />
* The '''sodipodi:docbase''' attribute is no longer added to the root <svg> 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.<br />
<br />
* 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. <br />
<br />
* Inkscape now properly quotes <code>font-family</code> values and therefore can use '''fonts''' with various '''nonalphanumeric characters''' in their names, which previously failed. <br />
<br />
* 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.<br />
<br />
* 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).<br />
<br />
* 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).<br />
<br />
* '''Stock markers''' now appear in the "recently used markers" section of the marker selector dropdowns in the Fill & Stroke dialog. Before, any markers with stock id's (including markers modified by the user) were hidden, making it difficult to work with modified stock markers.<br />
<br />
* 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.<br />
<br />
* Previously, if there was a single '''invalid property''' in a <code>style</code> 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.<br />
<br />
* 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. <br />
<br />
* Master opacity did not apply to stroke '''markers''' as it should; fixed.<br />
<br />
* '''Creative Commons Public Domain Declaration URI''' points to the right location now.<br />
<br />
* Text objects didn't display the '''pattern editing handles'''; fixed.<br />
<br />
* 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.<br />
<br />
* Clones were wrongly unlinked when their original was moved to another layer; fixed.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* In Tile Clones dialog, the PMG symmetry group was created incorrectly, which is now fixed.<br />
<br />
= Previous releases =<br />
<br />
* [[ReleaseNotes045]]<br />
* [[ReleaseNotes044]]<br />
* [[ReleaseNotes043]]<br />
* [[ReleaseNotes042]]<br />
* [[ReleaseNotes041]]<br />
* [[ReleaseNotes040]]<br />
* [[ReleaseNotes039]]<br />
* [[ReleaseNotes038]]<br />
* [[ReleaseNotes037]]<br />
* [[ReleaseNotes036]]<br />
* [[ReleaseNotes035]]<br />
<br />
[[Category:Marketing]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.46&diff=18679Release notes/0.462008-01-20T00:00:01Z<p>Cilix: /* Tools */</p>
<hr />
<div>=Inkscape 0.46=<br />
'''(not released yet)'''<br />
<br />
Highlights in this release:<br />
<br />
* Paintbucket tool<br />
<br />
* Tweak tool<br />
<br />
* 3D Box tool<br />
<br />
* Live path effects<br />
<br />
* Color management<br />
<br />
* New SVG filters and UI<br />
<br />
* Native PDF and AI import<br />
<br />
* XAML import/export<br />
<br />
* Open Clip Art Library integration (import/export)<br />
<br />
* Stock patterns<br />
<br />
* Bitmap editing extension effects<br />
<br />
* Full on-canvas gradient editing<br />
<br />
* Engraver's Toolbox in the Calligraphic tool<br />
<br />
* Touch selection<br />
<br />
* Dockable dialogs<br />
<br />
* Command-line access to verbs<br />
<br />
* Snapping made usable<br />
<br />
* "3D" / axonometric grid<br />
<br />
* Angled guidelines<br />
<br />
* Conversion of objects to guidelines<br />
<br />
* Significant speed and interactivity improvements<br />
<br />
* Hundreds of smaller features and bugfixes<br />
<br />
=Speed and interactivity=<br />
<br />
* 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. <br />
<br />
* '''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.<br />
<br />
* '''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). <br />
<br />
:'''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. <br />
<br />
* Minor improvements have been made to gradient rendering performance.<br />
<br />
* '''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. <br />
<br />
* '''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. <br />
<br />
* '''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.<br />
<br />
* Several improvements make '''canvas panning and scrolling''' smoother and more interactive in complex slow-rendering documents:<br />
<br />
:* 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 "dirty" but the '''panning is smoother than before''', with few if any "hiccups".<br />
<br />
:* '''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.<br />
<br />
:* 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.<br />
<br />
:* 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. <br />
<br />
:* The default '''starting speed and acceleration''' of Ctrl+arrows scrolling are slightly increased. (They are both settable in Preferences.)<br />
<br />
* Better responsiveness and more visual feedback in user interface: <br />
<br />
:*When you zoom, the '''zoom control''' on the right end of the statusbar now updates immediately, not after screen redraw as before. <br />
<br />
:*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. "Saving document...") while they work. <br />
<br />
:*The '''statusbar messages''' displayed while you're drawing a shape or a path in Pen tool do not lag behind the mouse movements.<br />
<br />
* '''Combine''' and '''Convert to paths''' commands are now orders of magnitude faster when applied to a selection with hundreds or thousands of objects.<br />
<br />
* 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.<br />
<br />
=Tools=<br />
<br />
==Paint Bucket tool==<br />
<br />
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 "fills in" the area in which you clicked. <br />
<br />
===How it works===<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
It places the rendered path onto the current layer, so you can have a layer on top (for example, "Inks") and select the layer below ("Colors") and do the fills so that they always appear below the Inks.<br />
<br />
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).<br />
<br />
===Style===<br />
<br />
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.<br />
<br />
===Controls===<br />
<br />
In the tool's '''Controls bar''':<br />
<br />
* 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:<br />
** Red<br />
** Green<br />
** Blue<br />
** Hue<br />
** Saturation<br />
** Lightness<br />
** Alpha<br />
<br />
* 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%.<br />
<br />
* 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.<br />
<br />
* 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:<br />
** None<br />
** Small (close gaps up to 2 pixels in size)<br />
** Medium (4 pixels)<br />
** Large (6 pixels)<br />
:Note that setting this parameter to other than None may slow down noticeably the filling of large areas.<br />
<br />
===Shortcuts===<br />
<br />
The tool's '''shortcuts''' are:<br />
<br />
* '''Single click''' performs filling from the click point.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
==Tweak tool==<br />
<br />
The Tweak tool is an exciting new way to edit drawings which largely blurs the<br />
distinction between vector and raster editing. Instead of meticulously selecting some<br />
objects and then performing an action on the selection, you can now select ''all''<br />
objects (or all objects you are interested in) and apply the Tweak tool's brush to<br />
smoothly and naturally change the shape or style of only those objects (or parts<br />
thereof) ''that the brush touches''.<br />
<br />
The area of the tool's action - its ''brush'' - is marked by an orange-colored circular<br />
outline that moves with your mouse cursor. However, that area actually has no sharp<br />
boundaries; the power of the tool's action falls off gradually, following a smooth<br />
bell-shaped profile. This makes the tool act softly and smoothly.<br />
<br />
The tool will work on any number of selected objects; for example, you can select all<br />
(Ctrl+A) and "smear" your entire drawing by Push mode or paint it by Color Paint<br />
mode. You can also apply it to groups of objects; it will go into groups and act on<br />
individual objects inside groups. If you're trying to use it without anything selected,<br />
it will remind you by a statusbar message to select some objects.<br />
<br />
===Width===<br />
<br />
The width of the tool's brush, in the range from 1 to 100, can be changed by the<br />
'''Width''' control in the tool's controls bar above the canvas. You can also change<br />
width by '''Left''' and '''Right''' arrow keys (same as in the Calligraphy tool) at any<br />
time (including during action) as well as '''Home''' and '''End'''. Also, as in Calligraphy<br />
tool, the visible width of the brush is independent of zoom; simply zooming in or out is<br />
often easier than adjusting the width if you want to cover a smaller or larger area of<br />
the drawing.<br />
<br />
===Force===<br />
<br />
The next control is '''Force''' which adjusts the power of the action, also in the<br />
range from 1 to 100. You can also change width by '''Up''' and '''Down''' arrow keys at<br />
any time (including during action).<br />
<br />
If you have a pressure-sensitive tablet and your "Use pressure" button on the right-hand<br />
end of the controls bar is on, then the force will also depend on how hard you actually<br />
press your pen into your tablet, changing in the range from zero to whatever you set in<br />
the Force control. If all you have is a mouse, then the force will be constant but still<br />
settable by the Force control. <br />
<br />
===Path editing modes===<br />
<br />
The Tweak tool has a number of '''modes''', selectable by toggle buttons in the tool's<br />
Controls bar and by keyboard shortcuts. Some of these modes change the shapes of <br />
paths while others affect the colors of objects. All these modes share the Width and<br />
Force controls but otherwise are quite different. Let's look at the path editing modes<br />
first.<br />
<br />
Unlike the Node tool, to edit paths with the Tweak tool you don't need to worry about<br />
where the nodes of a path are and how to manipulate them. You just apply the tool's<br />
brush to any point, and the selected paths at that point will reshape smoothly and<br />
naturally - as if made of soft jelly - regardless of where its nodes lie. If applied to<br />
a shape or text object, the tool converts them to paths automatically.<br />
<br />
While not very useful for technical drawings, tweaking paths will be indispensable for<br />
artistic uses of Inkscape - cartoons, drawings, sketches, anime, etc. This new<br />
functionality is somewhat similar to the tools such as "Pucker" and "Bloat" in the<br />
latest versions of Adobe Illustrator. <br />
<br />
There are currently six path editing modes in the Tweak tool: '''Push''', '''Shrink''',<br />
'''Grow''', '''Attract''', '''Repel''', and '''Roughen'''.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
: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).<br />
<br />
: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 Inflating and carving holes with Melting. Unlike the "node sculpting" mode in the Node tool, however, this does not require adding new nodes to the shape.<br />
<br />
* 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 ; you can use them for various central-symmetric distortions in parts of your paths.<br />
<br />
* The '''Roughen''' mode does exactly this: roughens the edge of the path without changing its overall shape. Slight roughening simply makes the edge crooked and uneven; strong roughening tears and explodes the edge into random blobs and splotches. Note that this operation, especially with high Fidelity, adds a lot of nodes which increases the size of your SVG document and may slow down Inkscape considerably. In particular, pushing/melting/inflating 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.<br />
<br />
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.<br />
<br />
====Fidelity====<br />
<br />
Any tweaking of a path slightly distorts the entire path, including even those parts<br />
that you didn't touch. These distortions are similar to those that a Simplify command<br />
produces. The '''Fidelity''' value (also in the range from 1 to 100, default is 50)<br />
allows you to control the amount of these distortions. With a higher fidelity, the<br />
distortions are less noticeable, but the path may end up having a lot of nodes which<br />
inflates up the SVG size and slows down Inkscape.<br />
<br />
The best value of Fidelity depends on the nature of your artwork. If you're sculpting an<br />
amorphous blob, you can do with low fidelity of about 20. If, however, you are pushing<br />
or inflating a text string (as a single path) and want the letters outside the distorted<br />
area to remain crisp and clean, you will need to raise fidelity to 80 or more. <br />
<br />
====Known problems====<br />
<br />
Known problems with the path editing modes in Tweak tool:<br />
<br />
# they don't work on open paths (an open path becomes closed if you tweak it);<br />
# they are rather slow; <br />
# they quickly eat memory; and <br />
# they are sometimes buggy - thin calligraphic strokes may suddenly disappear or change their shape drastically as you're melting or inflating them.<br />
<br />
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. <br />
<br />
Also, sometimes after roughening, further tweaking of a path becomes impossible with this diagnostic:<br />
<br />
WARNING **: Shape error in ConvertToShape: directedEulerian(a) == false<br />
<br />
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.<br />
<br />
===Color editing modes===<br />
<br />
The '''Color Paint''' and '''Color Jitter''' modes, unlike the path editing modes,<br />
change the colors of objects instead of their shapes. Yet they share enough common<br />
features with the path editing modes to be part of the same tool: These modes also use<br />
a circular soft-edged brush controlled by the Width and Force parameters on the Controls<br />
bar and affected by the pen pressure (if you have a pressure-sensitive tablet).<br />
<br />
* '''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.)<br />
<br />
: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).<br />
<br />
: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.<br />
<br />
* '''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.<br />
<br />
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.)<br />
<br />
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.<br />
<br />
<br />
====Channels====<br />
<br />
Color Paint and Color Jitter honor the '''Channels''' control. This control comprises<br />
the four buttons: '''H''', '''S''', '''L''', and '''O''', which allow you to turn on and off<br />
the tool's action on the object's hue, saturation, lightness, and opacity,<br />
correspondingly. For example, if you want to raise the saturation of some part of your<br />
drawing without changing the hue, select some maximum-saturation color (e.g. pure red)<br />
and turn off all Channels buttons except S. Similarly, you can replace the hues without<br />
affecting saturation or lightness (only H pressed), or lighten/darken all colors without<br />
changing their hues and saturation (only L pressed). Pressing O allows you to apply the<br />
master opacity from the tool's style to the master opacity of objects (but not fill or<br />
stroke opacity).<br />
<br />
====Usage notes====<br />
<br />
Color painting with Tweak tool is similar, but not exactly analogous to bitmap<br />
painting. Even though the tool itself works as a soft brush, it still applies its color<br />
to vector objects, which behave as vector objects usually do. For example, if you want<br />
to change the tint of the face in your drawing, and if a hand in the drawing is part of<br />
the same object as the face, that hand will change its tint too even if it's located far<br />
from the point you are painting. (We foresee a "fracture" command in one of the next<br />
versions of Inkscape which will help you turn a monolithic object into a mosaic of small<br />
fragments that will be then easy to paint with Tweak tool.) Still, even with this<br />
limitation, color painting is a novel way of dealing with vector drawings which allows<br />
you to quickly and intuitively make adjustments which would be awkward and slow with<br />
traditional approach.<br />
<br />
Drawings containing patterns or scatterings of small independent objects are best suited<br />
for color painting with Tweak tool. Examples include:<br />
<br />
* freehand drawings with Calligraphy pen, consisting of many separate strokes;<br />
<br />
* 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);<br />
<br />
* text converted to paths and with Break Apart command applied so that each letter is a separate path;<br />
<br />
* 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.<br />
<br />
Moreover, color tweaking can be useful for compositions with a few objects or even for<br />
single objects. Unlike all other color selection methods, painting with the Tweak tool<br />
implements the ''color mixing'' metaphor which is much more familiar to traditional<br />
artists than RGB sliders or even the color wheel. For example, start with a rectagle of<br />
pure blue color; then, pick different colors by Color Paint and apply light touches with<br />
minimum Force and minimum pen pressure: add a little green, a little brown, a little<br />
yellow, etc. until you have the exact hue you need. Similarly, you can whiten or blacken<br />
any hue by admixing white or black.<br />
<br />
You can also use color tweaking to add a tint, darken/lighten, saturate/desaturate, or<br />
color jitter your entire drawing. Just select all in all layers, zoom out, choose a<br />
large brush width so it covers all of the drawing, and apply a little color tweaking<br />
(with minimum Force) that will therefore affect all visible objects.<br />
<br />
===Keyboard shortcuts===<br />
<br />
* '''W''', '''Shift+F2''': switch to the Tweak tool<br />
<br />
* '''Shift+P''': switch to the Push mode<br />
<br />
* '''Shift+S''': switch to the Shrink mode<br />
<br />
* '''Shift+G''': switch to the Grow mode<br />
<br />
* '''Shift+A''': switch to the Attract mode<br />
<br />
* '''Shift+E''': switch to the Repel mode<br />
<br />
* '''Shift+R''': switch to the Roughen mode<br />
<br />
* '''Shift+C''': switch to the Color Paint mode<br />
<br />
* '''Shift+J''': switch to the Color Jitter mode<br />
<br />
* '''Left, Right, Home, End''': change width<br />
<br />
* '''Up, Down''': change force<br />
<br />
* '''mouse drag''': act on selected path in the current mode<br />
<br />
* '''Ctrl+mouse drag''': temporarily switch to Shrink (while Ctrl is down)<br />
<br />
* '''Shift+Ctrl+mouse drag''': temporarily switch to Grow (while Shift+Ctrl is down)<br />
<br />
==3D Box tool==<br />
<br />
Inkscape is a two-dimensional drawing tool. However, very often it is used to draw three-dimensional objects. The new '''3D box tool''' helps you create such 3D drawings by automating the most common operation: creating a three-dimensional box in a given perspective. The tool automatically ensures that all sides of the box lie on the corresponding perspective lines. We're not going to compete with Blender - but even simple things can go a long way.<br />
<br />
Currently in the 3D box tool you can:<br />
<br />
* draw a 3D box by dragging on canvas (use Shift+dragging without releasing the mouse button to extrude in z direction)<br />
<br />
* adjust any of its 3 dimensions by handles<br />
<br />
* move a 3D box "in perspective" 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<br />
<br />
* adjust the vanishing points of a perspective by dragging them across the canvas (see below) or toggling their states; all boxes sharing this perspective are transformed accordingly<br />
<br />
In SVG, a 3D box is represented as a '''group''' (svg:g) with a special extension attribute (in inkscape namespace); this group contains the 6 quadrilateral '''paths''' representing the sides of the box. Only the 3D box tool treats this object as a box; for all other tools it is just a group, so you can select any of the paths by Ctrl+click, apply any style to it, delete it, etc. You can of course transform the entire box or any face in it using Selector or Node tools.<br />
<br />
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 "dragger". 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.<br />
<br />
===Keyboard shortcuts===<br />
<br />
* '''X''', '''Alt+F4''': switch to the 3D box tool<br />
<br />
* 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.<br />
<br />
* When the 3D box tool is active, '''Shift+X''', '''Shift+Y''', and '''Shift+Z''' toggle perspective lines in the corresponding direction between "converging" and "parallel".<br />
<br />
<br />
[max]<br />
<br />
==Gradient Tool==<br />
===Selecting multiple stops===<br />
'''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. <br />
* Add a stop to the selected stops by '''Shift+click'''.<br />
* Press '''Ctrl+A''' to select all stops in the selected objects.<br />
* '''Shift+drag''' around stops to add them to selection.<br />
Multiple selected stops:<br />
*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.<br />
*Can be deleted at the same time by pressing '''Del'''.<br />
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.<br />
<br />
===Editing intermediate stops===<br />
'''Intermediate stops''' in gradients can be added, deleted, and edited on canvas (previously this was only possible in the Gradient Editor dialog).<br />
*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.<br />
*When two or more adjacent stops are selected, pressing '''Ins''' adds stops in the middles of all selected stop intervals.<br />
*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). <br />
:*Dragging with '''Ctrl''' moves the selected stops snapping them to 1/10 fractions of the available range.<br />
:*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.<br />
*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).<br />
*Stops can be deleted by '''Ctrl+Alt+Click''' on a stop or by the '''Del''' key for all the selected stop(s).<br />
:*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).<br />
:*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 & opacity of the remaining stop.<br />
*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.<br />
<br />
===Style of gradient stops===<br />
*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&Stroke dialog. Previously, opacity of a gradient handle was reflected as fill-opacity and stroke-opacity; now it is reflected as '''master opacity''' (the "O:" spinbutton in the selected style indicator, the "Master opacity" slider in Fill&Stroke). This makes it much easier to view and change opacity of gradient handles using only the selected style indicator in the statusbar.<br />
:*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.<br />
*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''').<br />
*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 "L Gradient" or "R Gradient" text labels as before). Also, this and other similar widget now use italic font face to indicate <i>None</i> and bold to indicate <b>Unset</b>.<br />
<br />
===Automatic duplication of gradients===<br />
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. <br />
<br />
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.<br />
<br />
==Calligraphy tool: Engraver's Toolbox ==<br />
<br />
Several new features were added to the Calligraphic pen to make<br />
Inkscape capable of the ancient art of '''line<br />
engraving'''. Traditional engraving is a very labour-intensive<br />
process, and while for a long time it was the only practical way<br />
of reproducing lifelike images in black-and-white print, about a<br />
century ago it was almost completely displaced by automatic<br />
halftone screens. However, line engravings have their<br />
characteristic charm, and there's no reason not to try to<br />
resurrect this art form with the help of Inkscape.<br />
<br />
A brief visual guide to the new functionality can be seen on<br />
these screenshots:<br />
<br />
http://inkscape.org/screenshots/gallery/inkscape-0.46-engraving1.png<br />
<br />
http://inkscape.org/screenshots/gallery/inkscape-0.46-engraving2.png<br />
<br />
<br />
===Tracking a guide path with Ctrl===<br />
<br />
One of the most common operations in line engraving is<br />
'''hatching''' (or sometimes ''cross-hatching'' when several<br />
hatching grids cross): filling a space with many parallel<br />
straight or variously curved lines (usually of varying width to<br />
represent a gradual shading). You could try to achieve a similar<br />
effect with e.g. path interpolation (blending), but it is rather<br />
cumbersome and limited; manual drawing of hatch lines, on the<br />
other hand, is tedious and nearly impossible to do<br />
uniformly. Now Inkscape provides "assisted hatching" by<br />
'''tracking a guide path''', allowing you to hatch quickly and<br />
uniformly and at the same time giving you sufficient manual<br />
control over the process.<br />
<br />
Here's how to do this. First, select the '''guide path''' that<br />
you will track. It may be another calligraphic stroke, any path<br />
or shape, or even a letter of a text object. Then switch to<br />
Calligraphic pen, select the desired parameters (line width,<br />
angle, fixation etc.) and, before starting to draw, press<br />
Ctrl. You will see a gray '''track circle''' centered at your<br />
mouse pointer and touching the closest point on the selected<br />
guide path. (If you have no guide path selected, a statusbar<br />
message will tell you to select it.)<br />
<br />
Now move your mouse close to the guide path, so that the track<br />
circle radius is equal to the desired spacing of your hatch<br />
pattern, and start drawing along the guide path. At that moment,<br />
the radius of the circle gets locked; now the circle slides<br />
along the guide path - and the actual stroke is drawn by the<br />
center of the tracking circle, ''not'' by your mouse point. As<br />
a result, you are getting a smooth stroke going parallel to the<br />
guide path and always at the same distance from it.<br />
<br />
When the stroke is ready, release your mouse button (or lift<br />
your tablet pen) but '''do not let go of the Ctrl key''' because<br />
as long as you have it pressed, the tool remembers the hatch<br />
spacing you set when you started drawing. Now, you have just<br />
created a new stroke and, as usual with Inkscape tools, it gets<br />
selected instead of what was selected before. In our case, this<br />
means that the newly drawn stroke itself becomes the new guide<br />
path. Next, you can draw a second stroke along the first one,<br />
then a third one along the second, etc. Eventually you can fill<br />
any desired space with uniform hatching.<br />
<br />
Alternatively, if you uncheck "Select new path" 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. <br />
<br />
The attachment to the guide path is not absolute. If you stray<br />
your mouse pointer far enough from the guide path, you will be<br />
able to tear it off (the track circle turns from green to red)<br />
and move freely. This is intentional; this feature allows you,<br />
for example, to continue drawing a stroke past the end of a<br />
guide stroke, thus making your hatching cover a wider area than<br />
the initial guide path. Special care is taken to make such<br />
tearing off as smooth as possible and to suppress violent jerks,<br />
but this is not always possible; the general advice is to not<br />
try to hatch too fast. If jerking and unintended tearoffs still<br />
bother you, try increasing the Mass parameter.<br />
<br />
Also, special code is in place to prevent flipovers - accidental<br />
jumps to the other side of the guide path. Brief flipovers are<br />
suppressed, but if you intentionally go over to the other side<br />
and stay there, eventually Inkscape will obey and your tracking<br />
stroke will also flip over to follow you.<br />
<br />
Tracking a guide also allows some slight feedback by gradually<br />
changing the tracking distance in response to your drawing<br />
behavior. Thus, if you're consistently trying to draw closer or<br />
farther from the guide than the current tracking distance, the<br />
distance will correspondingly decrease or increase, so you will<br />
get a hatching that is slightly spacing in or out. (The effect<br />
is very slight, however, so as not to become a nuisance.) Also,<br />
note that since tracking follows the edge of the stroke, strokes<br />
of varying width (such as those tracing background, see below)<br />
will result in gradual bending of the hatching pattern as you<br />
proceed.<br />
<br />
===Tracing background by stroke width===<br />
<br />
There is a new toggle button on the Calligraphy tool's controls<br />
bar, '''Trace background'''. When on, the width of your pen<br />
depends on the lightness of the background under the stroke in<br />
each point, so that white translates into the minimum stoke<br />
width (1) and black translates to the maximum (which is set by the<br />
Width parameter). This can work alone or in combination with<br />
pressure sensitivity, depending on whether the "Use pressure" button<br />
is also toggled.<br />
<br />
This feature allows you to not only hatch over an imported<br />
bitmap image or any drawing, but to do so automatically<br />
reproducing the highlights and shades of the background with<br />
your strokes becoming lighter and heavier as needed.<br />
<br />
===Misc features===<br />
<br />
* 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. <br />
<br />
* 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.)<br />
<br />
==Selector==<br />
<br />
* 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. <br />
<br />
: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.<br />
<br />
* 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.<br />
<br />
* Draging the '''scale handles with Alt''' now scales selection by an integer factor, i.e. up to '''2''', '''3''', '''4''', etc. times the original size or down to '''1/2'''. '''1/3''', '''1/4''', etc. of the original size (in any of the two dimensions independently). This way you can, for example, mirror any object around one of the edges of its box. (This replaces the old and rarely used "slow" scaling mode with Alt.)<br />
<br />
* '''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.<br />
<br />
* '''Objects to Marker''' was added to the objects menu, which converts the current selection to a marker, with the center point of the selection being set to the center of the marker.<br />
<br />
==Node tool==<br />
<br />
* 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 ('<' and '>' 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.<br />
<br />
* [helper path display - johan]<br />
** this is deactivated for normal paths now. only paths with LPE applied will show it. should there be a button to turn it on for normal paths aswell?<br />
<br />
* As a long-requested feature, two entry fields are added to the toolbar which allow precise editing of the coordinates of selected nodes.<br />
<br />
==Rectangle Tool==<br />
<br />
* '''Ctrl+dragging''' now also allows the creation of rectangles with sides constrained to the '''golden ratio''' (approx. 1 : 1.618034), not only integer ratios.<br />
<br />
==Ellipse Tool==<br />
<br />
* 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.<br />
<br />
* '''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.<br />
<br />
==Pen/Pencil Tool==<br />
<br />
It is now easy to create '''single dots''' in pen and pencil tool by simply '''Ctrl+clicking''' 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). In addition, holding '''Shift''' while creating multiple dots slightly varies their size randomly so that the result is less monotone when creating many dots in a sequence.<br />
<br />
==Text tool==<br />
* [text toolbar - deadchip?]<br />
* If text contains a tref element, the text tool's behavior may not be as expected. Please see [[#The tref Element]]<br />
<br />
==Dropper Tool==<br />
<br />
The shortcut 'D' is now used to <i>toggle</i> (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.<br />
<br />
=SVG features=<br />
<br />
==The tref element==<br />
<br />
Inkscape can now correctly open files with '''tref''' elements, and new tref elements can be created manually in the XML editor.<br />
<br />
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'''.<br />
<br />
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'''.<br />
<br />
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.<br />
<br />
Existing tref elements can be converted into tspan elements with '''Edit > Clone > 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'''.<br />
<br />
A '''tref''' element can be mixed with any other elements allowed to be contained by a text element.<br />
<br />
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'''.<br />
<br />
==SVG filters==<br />
<br />
===New filters supported===<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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]<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
<!--<br />
* 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.<br />
--><br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
See also wiki page [[Filter Effects]] for more info on filters in Inkscape in general.<br />
<br />
===Filters UI===<br />
<br />
* New dialog for creating and modifying filter effects ('''Object>Filter Effects...''')<br />
* The list at the left of the dialog displays all filters currently in the document.<br />
** New filters can be added with the '''Add''' button beneath the list<br />
** Right-clicking a filter for the pop-up menu allows duplicating or removing a filter.<br />
** Double-clicking a filter will apply it to all selected objects<br />
** 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.<br />
* The second list, at the left of the dialog, displays the '''filter primitives''' that are contained within the currently-selected filter.<br />
** New primitives can be added by selecting the primitive type from the combo box beneath the list, and then pressing the '''Add''' button.<br />
** Right-clicking a primitive for the pop-up menu allows duplicating or removing a primitive.<br />
** Primitives can be rearranged by clicking and dragging any filter in the list.<br />
** 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.<br />
** The "in" and "in2" 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.<br />
*** 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.<br />
*** 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.<br />
*** 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.<br />
*** 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.<br />
*** Merge inputs have an empty input at the end. Dragging a connection from this input will add a new input to the primitive.<br />
<br />
=Live Path Effects (LPE)=<br />
<br />
'''Live path effects''' (not to be confused with extension effects or SVG filters) are a new way to <b>non-destructively modify path and shape objects</b>. 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. <br />
<br />
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.<br />
<br />
Live path effects were developed by Johan Engelen as part of the GSoC 2007.<br />
<br />
==Details about operation==<br />
The following schematic tries to explain how LPE work.<br />
<br />
original style ------------> output style<br />
original path --> LPE --> output path<br />
^<br />
|<br />
parameters<br />
<br />
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 <b>output style equals original style</b>.<br />
<br />
The parameters can be paths, numbers, points, text, in principle anything.<br />
<br />
<br />
==Applying effects==<br />
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.<br />
<br />
When a path with a path effect applied is selected, the statusbar description mentions that, for example "'''Path''' (4 nodes, path effect)".<br />
<br />
There is a special Paste Path Effect command (Ctrl+7) that can be used to copy effects from one path to another.<br />
<br />
==Editing effect parameters==<br />
When switching to the node edit tool (<b>F2</b>), the <b>original path</b> can be edited. The original path is shown as a red helper path. Normal path operations, like simplify, still work.<br />
<br />
Some parameters of effects can be edited on-canvas. For example, path parameters can be node-edited, by pressing the "edit on-canvas" button in the Path Effects dialog. <b>Press "7" to cycle through the different on-canvas editable parameters.</b> 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.<br />
<br />
==Available effects==<br />
<br />
===Path along path===<br />
The <b>Path along Path</b> 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 <b>on-canvas</b> and the result is <b>updated live</b>. This provides a direct equivalent of "vector brushes" or "skeletal strokes" features in other vector editors. <br />
<br />
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'.<br />
<br />
Example file: live-path-effects-pathalongpath.svg<br />
<br />
===Pattern along path===<br />
The <b>Pattern along Path</b> 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 <b>on-canvas</b> and the result is <b>updated live</b>. This provides a direct equivalent of "vector brushes" or "skeletal strokes" features in other vector editors. <br />
<br />
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.<br />
<br />
Example file: live-path-effects-pathalongpath.svg<br />
<br />
===Stitch Subcurves===<br />
The <b>Stitch Subcurves</b> effect connects points from two subpaths of the path with straight line or curved segments, i.e. the <i>stitches</i>. It looks a lot like the Effect Lines from Expression 3. The result is also referred to as "String Art". For some examples of string art, see http://members.shaw.ca/jillbritton/string_art/jbstringart.htm. <br />
<br />
The <b>shape</b> of the <b>connecting paths</b> can controlled by the <b>stroke path</b> parameter. This could be used to draw 'hair-shaped' connecting paths with sharp end-tips. Other controls include the <b>number of paths</b>, the variation in spacing between the connecting paths (<b>clustering</b>) and also whether the start and end points of the stitches should like exactly on the original subcurves or can <b>stray randomly</b> around them. Finally the width of the stroke path can be varied.<br />
<br />
Note that this effect can only be applied to a path with two subpaths in it, hence '<b>sub</b>curve' in the name. Use Path > Combine to create such a path from two separate paths.<br />
<br />
Example file: live-path-effects-curvestitch.svg<br />
<br />
Example file showing cooperation between Stitch Subcurves and Path along Path: live-path-effects-curvestitch-hair.svg<br />
<br />
===Gears===<br />
The <b>Gears</b> 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. <br />
<br />
Example file: live-path-effects-gears.svg<br />
<br />
==Development of new effects==<br />
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!<br />
<br />
[johan]<br />
<br />
=Extension effects=<br />
<br />
== Live preview ==<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''Progress dialog''': While an extension is working on a document, a small dialog is shown allowing the user to cancel the execution.<br />
<br />
== New and improved effects ==<br />
<br />
* The new '''Modify Path > Edge 3D''' extension creates black, grey and white paths around a shape, then blurs and clips them for a 3D effect.<br />
<br />
* The new '''Render > 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. <br />
<br />
* The new '''Render > 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.<br />
<br />
* The new '''Render > [[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]).<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* 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.<br />
<br />
*The new '''Color > 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.<br />
<br />
*The '''Whirl''' extension uses the center of view as the center of whirl, so you don't have to enter the center coordinates numerically.<br />
<br />
*The '''Render > Grid''' extension has got an extended range of grid spacings, from 0.1 to 1000 px.<br />
<br />
*The '''Render > Function Plotter''' extension can now plot using polar coordinates.<br />
<br />
*The '''Generate Template > 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.<br />
<br />
== XSLT effects ==<br />
<br />
* '''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.<br />
<br />
== ImageMagick effects ==<br />
<br />
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. <br />
<br />
* '''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.<br />
<br />
* '''Add Noise''' adds random noise of certain types to the bitmap.<br />
<br />
* '''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.)<br />
<br />
* '''Channel''' extracts the specified channel from the bitmap.<br />
<br />
* '''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.<br />
<br />
* '''Colorize''' overlays the bitmap with a given color at a given intensity.<br />
<br />
* '''Contrast''' lightly enhances the contrast (difference between lights and darks) of a bitmap.<br />
<br />
* '''Cycle Colormap''' cycles the colormap of a bitmap.<br />
<br />
* '''Despeckle''' reduce the speckle noise in a bitmap.<br />
<br />
* '''Edge''' hilights edges in a bitmap.<br />
<br />
* '''Emboss''' embosses a bitmap, hilighting edges with 3D effect.<br />
<br />
* '''Enhance''' enhance a bitmap, minimizing noise.<br />
<br />
* '''Equalize''' equalizes a bitmap. Histogram equalization.<br />
<br />
* '''Flop''' mirrors a bitmap, reflecting each scanline in the horizontal direction.<br />
<br />
* '''Gaussian Blur''' blurs a bitmap, more strongly than regular blur.<br />
<br />
* '''Implode''' sucks everything towards the center of the bitmap.<br />
<br />
* '''Level''' scales values falling between the given '''Black Point''' to '''White Point''' range to the full color range.<br />
<br />
* '''Level Channel''' acts the same way as level but for only one channel.<br />
<br />
* '''Median Filter''' filters a a bitmap by replacing each pixel component with the median color in a circular neighborhood<br />
<br />
* '''Modulate''' adjusts the percent hue, saturation, and brightness of a bitmap.<br />
<br />
* '''Negate''' takes the inverse of a bitmap.<br />
<br />
* '''Normalize''' normalizes a bitmap, expanding color range to the full possible range of color.<br />
<br />
* '''Oil Paint''' stylizes a bitmap so that it appears to be painted with oils.<br />
<br />
* '''Opacity''' modifies the opacity channel of a bitmap.<br />
<br />
* '''Raise''' alters the lightness of the edges of a bitmap to create a raised appearance, much like a frame.<br />
<br />
* '''Reduce Noise''' reduces noise in a bitmap by using a noise peak elimination filter.<br />
<br />
* '''Shade''' shades a bitmap by simulating a distant light source<br />
<br />
* '''Sharpen''' sharpens a bitmap.<br />
<br />
* '''Solarize''' solarizes a bitmap, like overexposing photographic film.<br />
<br />
* '''Spread''' randomly spread pixels in a bitmap within the radius of '''amount'''.<br />
<br />
* '''Swirl''' swirls the bitmap around the center point.<br />
<br />
* '''Threshold''' thresholds a bitmap.<br />
<br />
* '''Unsharpmask''' sharpens a bitmap using an unsharp mask algorithm.<br />
<br />
* '''Wave''' alters a bitmap along the sine wave.<br />
<br />
These effects are part of the Google Summer of Code 2007, coded by Christopher Brown.<br />
<br />
== Misc ==<br />
<br />
* All Python effects are switched from the old and unmaintained PyXML library to the new powerful [http://codespeak.net/lxml/ lxml] library.<br />
<br />
* 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.<br />
<br />
= Stock patterns =<br />
<br />
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&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:<br />
<br />
*A selection of plain '''stripes''' differing by the ratio of the stripe width to gap width (for example, the "Stripes 1:2" 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).<br />
<br />
*Two '''checkerboard''' patterns with black and white odd squares (even squares are transparent)<br />
<br />
*'''Packed circles''': a hexagonal pattern of black circles with transparent gaps.<br />
<br />
*'''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).<br />
<br />
*'''Wavy''' is a pattern of wavy lines.<br />
<br />
*'''Camouflage''' is a green-toned protective pattern such as that used by the military.<br />
<br />
*'''Ermine''' is the traditional heraldic pattern representing stylized stoat furs with black tails.<br />
<br />
*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 "texturize" them. <br />
<br />
After applying a stock pattern, switch to Node tool to edit the location, scale, and rotation of the pattern via on-canvas handles.<br />
<br />
All stock patterns are stored in the file <code>patterns/patterns.svg</code> in Inkscape's <code>share</code> directory (typically <code>/usr/share/inkscape</code> on Linux, <code><i>inkscape-dir</i>/share</code> on Windows). You can add your own patterns to this file or replace it with any other SVG file containing the patterns you need.<br />
<br />
=Color management=<br />
<br />
== Calibrated SVG color including CMYK ==<br />
<br />
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<br />
optional "icc-color(...)" paint components as described in section 11.2 "Specifying paint" of the SVG 1.1 specification<br />
[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.<br />
<br />
The new CMS color selector tab allows these colors to be edited.<br />
<br />
== Display adjustment ==<br />
<br />
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.<br />
<br />
=== Per-window adjustment ===<br />
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.<br />
<br />
=== XICC Support ===<br />
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.<br />
<br />
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.<br />
<br />
=== Multi-monitor aware ===<br />
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.<br />
<br />
== Soft Proofing ==<br />
<br />
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.<br />
<br />
=Snapping=<br />
<br />
* Snapping has been implemented or improved for:<br />
<br />
:* '''Newly created shapes'''<br />
<br />
:* '''Skewing''' of objects<br />
<br />
:* '''Handles''' of objects, incl. '''gradients'''<br />
<br />
:* '''Images''', '''ellipses''', and '''clones'''<br />
<br />
:* Text boxes, which snap to '''text baselines''' again<br />
<br />
:* Objects, for which snapping now optionally considers the '''rotation center'''<br />
<br />
:* Objects, which now allow for '''constrained snapping'''<br />
<br />
:* '''Guides''', which now snap while dragging them<br />
<br />
:* '''Axonometric grids'''<br />
<br />
:* '''Angled guide lines'''<br />
<br />
:* '''Bounding boxes''', of which now all four corners snap<br />
<br />
<br />
<br />
* Other snapping fixes and improvements include:<br />
<br />
:* It is now possible to snap to '''intersections''' of e.g. gridlines with guidelines, and of line segments. <br />
<br />
:* The '''snapping preferences dialog''' has been restyled to make it more intuitive. <br />
<br />
:* Inkscape now has a global snapping toggle, which has been added to the view-menu and is accessible through a shortcut<br />
<br />
:* Inkscape now allows for controlling the snapping per grid when multiple grids are being used<br />
<br />
:* Snapping distance is now set in screen pixels and is therefore '''independent of zoom'''. <br />
<br />
:* Snapping of objects has been made more clean, by only snapping '''bounding box corners to bounding boxes''', and '''nodes to other nodes and paths'''.<br />
<br />
:* The time it takes to snap to objects using the selector tool has been reduced significantly.<br />
<br />
:* The bug where "node-to-node" snapping caused jerky movement of nodes is fixed.<br />
<br />
:* The '''aspect ratio''' is correctly preserved while scaling objects with snapping turned on.<br />
<br />
:* Only nodes at '''non-smooth parts''' of a path now snap.<br />
<br />
:* The confusing "Default transformations origin" 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).<br />
<br />
:* 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).<br />
<br />
=Grids=<br />
Grids have undergone some big changes under-the-hood. These are the visible changes:<br />
* There is a <b>new 3D/axonometric grid</b>!<br />
* A new tab in the document properties dialog, solely meant for grids; the former grid/guide tab is now solely for guides. I envision a list of guides there in the future, for easier deletion of guides etc.<br />
* More than one grid can be active at the same time<br />
** Each grid can be enabled/disabled separately from the document properties dialog.<br />
* One can make grids invisible by unchecking the "Visible" checkbox in the grid's tab in the document properties dialog. Snapping is still enabled even for invisible grids!<br />
* Multiple views on the same document share the same grids, but the grid can be turned off for each view separately. For example: one could have an overview view without 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. (sorry i am not able to explain more clearly, perhaps someone else can?)<br />
* Grid information is now stored in SVG as a child of sodipodi:namedview. Old files will be converted to this new format automatically<br />
* The rectangular grid now has an option to show dots on gridline intersections instead of solid lines<br />
<br />
From developer perspective:<br />
<br />
* Implementation of new grids is much easier now; subclassing CanvasGrid and adding an entry in the is enough. Have a peek at how the rectangular grid is implemented (CanvasXYGrid).<br />
* Note that there is no longer "the grid", there might be several grids active now!<br />
<br />
A side effect of removal of old gridcode: apparantly the origin of the desktop rules used to be set to the origin of the grid. I find this strange: specifying a grid origin of (2,2) would have me think the origin would be at ruler location (2,2) instead of (0,0) as it is in 0.45.1.<br />
I have commented the grid-origin correction to the ruler range, because now there is not a single grid anymore to correct it for. Isn't there a control somewhere to define the documents origin? Now the ruler origin is set to (0,0)<br />
<br />
--johan<br />
<br />
=Angled guidelines=<br />
<br />
Now, Inkscape also provides angled guidelines! Double click on a guide to set its angle.<br />
<br />
* When dragging a guideline off the rulers close to the edge, the guideline will automatically be angled. The angle is set depending on the grid.<br />
** For the rectangular grid, the angle is 45 degrees.<br />
** For the axonometric grid, the angle is matched to the grid. When the Ctrl-key is pressed, the angle is perpendicular to the grid lines (useful for aligning gradients).<br />
<br />
=Creating guidelines from objects=<br />
<br />
* Selected objects can now be converted to guidelines. To do this, either use the menu command '''"Object->Object to guides"''' 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.<br />
<br />
* '''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.<br />
<br />
* For all other objects, conversion usually happens by placing the guidelines around the object's bounding box (use the corresponding checkbox in the "Tools" page of Inkscape Preferences to switch between geometric and visual bounding box).<br />
<br />
*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.<br />
<br />
=Import/Export=<br />
<br />
==PDF and AI import==<br />
<br />
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). <br />
<br />
'''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. <br />
<br />
'''PDF import settings''': After opening a PDF or AI document, the PDF Import Settings dialog shows up. Here you can select:<br />
<br />
* the '''page''' to be imported from a multipage PDF;<br />
<br />
* 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.);<br />
<br />
* 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;<br />
<br />
* a checkbox controlling whether the '''images''' should be '''embedded''' into the resulting SVG document or saved on the current path;<br />
<br />
* 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).<br />
<br />
'''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.)<br />
<br />
To work around this, select the text object you want to edit and use '''Text > 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. <br />
<br />
Note that there is a way to select even a single line in a text block. For this, open the XML editor, expand the <svg:text> tree branch corresponding to your text, and select any of the <svg:tspan> 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+> or Alt+<).<br />
<br />
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.<br />
<br />
==PDF export==<br />
<br />
* A new cairo-based PDF exporter has been added to Inkscape (marked as "Cairo PDF" in the export format list). Inkscape 0.46 can export shapes, strokes, transparency, gradients, patterns, text, and images correctly to cairo. While clipping paths and masks are known to be faulty or missing. 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.<br />
<br />
* A new cairo-based PostScript exporter has been added (marked as "Cairo PS" 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.<br />
<br />
==CDR (CorelDraw) import==<br />
<br />
Inkscape can use [http://www.sk1project.org/modules.php?name=Products&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 (since UniConvertor is Unix-only) and requires that you have Python and UniConvertor installed. As of UniConvertor 1.0rc2, only versions from 7 to X3 of the CDR format are supported, and text objects are not converted. <br />
<br />
==XAML import/export==<br />
<br />
* Inkscape can import vector graphics portions of XAML documents, as well as export its documents to XAML.<br />
<br />
==Adobe Illustrator SVG clean import==<br />
<br />
* 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.<br />
<br />
==Bitmap export==<br />
<br />
* '''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.<br />
<br />
: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 "export" layer. In that layer, "slice" 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 "export" layer, select all in that layer (Ctrl+A), and export with the ''Batch export selected objects'' checkbox on.<br />
<br />
* '''Hide all except selected''': A new checkbox allows you to hide in the exported image everything except selected object(s).<br />
<br />
* The Export dialog automatically appends the '''.png''' extension to the export filename you specify.<br />
<br />
== Open Clip Art Library import and export ==<br />
<br />
{rejon}<br />
<br />
=Command line=<br />
<br />
Several new command line options are added that make Inkscape even more scriptable and automatable than before.<br />
<br />
* --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.<br />
<br />
* --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.<br />
<br />
* --select followed by a node ID will allow you to add a node to the list of selected objects.<br />
<br />
* --query-all produces a comma delimited listing of all objects in the document, with their x, y, height, and width values.<br />
<br />
These options can be used, for example, for performance testing. You could do something like this:<br />
<br />
$ time inkscape --verb=FileClose my_complex_file.svg<br />
<br />
to measure the time it takes to load and display the file.<br />
<br />
Of course, with the ability to select objects, it can be much more useful than<br />
that. You can call extension effects, or any other verb, then FileSave and<br />
FileClose to automate all kinds of operations on your drawings.<br />
<br />
=User interface=<br />
<br />
== Dockable dialogs ==<br />
<br />
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.<br />
<br />
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&mdash;this allows other dialogs to be dragged and dropped on it to form a floating group of dialogs.<br />
<br />
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'' > ''Dialog behavior'' in the Inkscape preferences dialog.<br />
<br />
====Known issues====<br />
<br />
* Some of Inkscape's dialogs are yet to be adapted to allow docking, these include the "Text and Font" dialog, the "Tiled clones" dialog, the "XML editor" and the "Object properties" dialog.<br />
<br />
* Floating dialogs that are closed and later reopened might reappear on positions slightly different than their original ones.<br />
<br />
* Resizing dialogs that are placed in the dock can be a bit slow and quirky.<br />
<br />
* 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.<br />
<br />
====Settings====<br />
<br />
Three settings that control dockable dialogs behavior are present in the <code>preferences.xml</code> file under a <code>options</code> group called <code>dock</code>:<br />
<br />
* <code>cancenterdock</code>: controls if dialogs are allowed to be stacked on top of each other to be ordered in groups. Valid values are <code>"0"</code> and <code>"1"</code>.<br />
<br />
* <code>dockbarstyle</code>: controls what information is shown for iconified dockable dialogs. <code>"0"</code> = icons only, <code>"1"</code> = text only, <code>"2"</code> = both icons and text. <br />
<br />
* <code>switcherstyle</code>: controls what information is shown for grouped dockable dialogs. <code>"0"</code> = icons only, <code>"1"</code> = text only, <code>"2"</code> = both icons and text.<br />
<br />
== [toolbars - [[JonCruz]]] ==<br />
<br />
'''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.<br />
<br />
[calligraphy: menus, tooltips; star; ...]<br />
<br />
Switched to stock GTK+ toolbars.<br />
<br />
Extra magic secret sauce added.<br />
<br />
== [filedialogs - [[JonCruz]]] ==<br />
<br />
== Swatches panel, color drag-and-drop ==<br />
<br />
* Right-clicking a color swatch now opens a context menu which allows you to apply the color to the fill or stroke of selection.<br />
<br />
* Dragging colors from the color palette has been fixed and improved:<br />
<br />
:* 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.)<br />
<br />
:* 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.)<br />
<br />
:* 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.<br />
<br />
==Color gestures==<br />
<br />
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 "None", "N/A", 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.<br />
<br />
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'''.<br />
<br />
The adjustment is done by '''"rotating"''' the color swatch away from the original direction which is assumed to be '''NE at 45 degrees''' (i.e. from<br />
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.<br />
<br />
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.<br />
<br />
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. <br />
<br />
You can '''switch channels while you drag'''. That is, you don't need to <br />
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.<br />
<br />
The '''Alt''' modifier is special. Pressing Alt means "do nothing"; 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.<br />
<br />
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.<br />
<br />
Apart from precise adjustments, you can use color gestures to very quickly perform some common color transformations:<br />
<br />
* Ctrl+drag the swatch to the right and down to paint all selected objects black.<br />
<br />
* Ctrl+drag the swatch upwards and to the left to paint all selected objects white.<br />
<br />
* Shift+drag the swatch to the right and down to desaturate the color of selected objects.<br />
<br />
* Shift+drag the swatch upwards and to the left to maximize saturation of the color of selected objects. <br />
<br />
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.<br />
<br />
This new technique requires some getting used to, but once you get the idea it is quite convenient, fast, and precise.<br />
<br />
== Print dialog integration == <br />
<br />
* '''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.<br />
<br />
== Saving window geometry globally ==<br />
<br />
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 "Save geometry to preferences" 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).<br />
<br />
== Preserving zoom/view of reverted documents ==<br />
<br />
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.<br />
<br />
== Bounding box option moved ==<br />
<br />
The preferences option to select between "visual" and "geometric" bounding box was moved in Inkscape Preferences dialog from the "Selector" page to "Tools" page (since it applies more globally than just in Selector tool).<br />
<br />
== New ways to scroll and zoom ==<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* In the Zoom tool, right mouse button always zooms out instead of calling the context menu (which is rather useless in this tool anyway).<br />
<br />
== Using other keys in place of Alt ==<br />
<br />
* 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 <code>mapalt</code> in the <code>options</code> 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 "Modifiers" when the mouse is held over a key on the main display.<br />
<br />
== GTK theme on OS X ==<br />
<br />
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 "Appearance" and "Highlight Color" set in System Preferences > Appearance.<br />
<br />
=Other changes and improvements=<br />
<br />
* '''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.<br />
<br />
* 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. <br />
<br />
* The somewhat cryptic "F:" and "S:" 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.<br />
<br />
* 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. "Style of new rectangles", "Style of new calligraphic strokes", etc.)<br />
<br />
* 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. <br />
<br />
* After dragging a curve segment in Node tool, Inkscape no longer selects the two adjacent nodes if they were not selected before. <br />
<br />
* 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. <br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.)<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* 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 <code>default.svg</code>, 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 > New submenu).<br />
<br />
* 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.<br />
<br />
* 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 "slideshow mode" of the main inkscape application (-s or --slideshow command line option) is removed; use inkview instead.<br />
<br />
* In Document Metadata dialog, updated '''Creative Commons Licenses''' to version '''3.0'''.<br />
<br />
* Preferences have been added for setting the default metadata and licenses, so this information can be automatically filled in with new documents.<br />
<br />
* The built-in '''Potrace''' tracing engine is upgraded to version '''1.8''' with some minor bugs fixed.<br />
<br />
* File dialog windows (open/save) now have an '''Enable preview''' checkbox which allows you to disable the preview pane.<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* The option '''Import bitmap as <image>''' 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 <image> element.<br />
<br />
* 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 & stroke dialog.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* Add some new '''UML markers''', including filled and hollow diamonds and triangles.<br />
<br />
* 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'''.<br />
<br />
=Notable bugfixes=<br />
<br />
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]].<br />
<br />
* The '''sodipodi:docbase''' attribute is no longer added to the root <svg> 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.<br />
<br />
* 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. <br />
<br />
* Inkscape now properly quotes <code>font-family</code> values and therefore can use '''fonts''' with various '''nonalphanumeric characters''' in their names, which previously failed. <br />
<br />
* 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.<br />
<br />
* 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).<br />
<br />
* 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).<br />
<br />
* '''Stock markers''' now appear in the "recently used markers" section of the marker selector dropdowns in the Fill & Stroke dialog. Before, any markers with stock id's (including markers modified by the user) were hidden, making it difficult to work with modified stock markers.<br />
<br />
* 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.<br />
<br />
* Previously, if there was a single '''invalid property''' in a <code>style</code> 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.<br />
<br />
* 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. <br />
<br />
* Master opacity did not apply to stroke '''markers''' as it should; fixed.<br />
<br />
* '''Creative Commons Public Domain Declaration URI''' points to the right location now.<br />
<br />
* Text objects didn't display the '''pattern editing handles'''; fixed.<br />
<br />
* 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.<br />
<br />
* Clones were wrongly unlinked when their original was moved to another layer; fixed.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* In Tile Clones dialog, the PMG symmetry group was created incorrectly, which is now fixed.<br />
<br />
= Previous releases =<br />
<br />
* [[ReleaseNotes045]]<br />
* [[ReleaseNotes044]]<br />
* [[ReleaseNotes043]]<br />
* [[ReleaseNotes042]]<br />
* [[ReleaseNotes041]]<br />
* [[ReleaseNotes040]]<br />
* [[ReleaseNotes039]]<br />
* [[ReleaseNotes038]]<br />
* [[ReleaseNotes037]]<br />
* [[ReleaseNotes036]]<br />
* [[ReleaseNotes035]]<br />
<br />
[[Category:Marketing]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.46&diff=18594Release notes/0.462008-01-16T10:46:37Z<p>Cilix: /* Keyboard shortcuts */</p>
<hr />
<div>=Inkscape 0.46=<br />
'''(not released yet)'''<br />
<br />
Highlights in this release:<br />
<br />
* Paintbucket tool<br />
<br />
* Tweak tool<br />
<br />
* 3D Box tool<br />
<br />
* Live path effects<br />
<br />
* Color management<br />
<br />
* New SVG filters and UI<br />
<br />
* Native PDF and AI import<br />
<br />
* XAML import/export<br />
<br />
* Open Clip Art Library integration (import/export)<br />
<br />
* Stock patterns<br />
<br />
* Bitmap editing extension effects<br />
<br />
* Full on-canvas gradient editing<br />
<br />
* Engraver's Toolbox in the Calligraphic tool<br />
<br />
* Touch selection<br />
<br />
* Dockable dialogs<br />
<br />
* Command-line access to verbs<br />
<br />
* Snapping made usable<br />
<br />
* "3D" / axonometric grid<br />
<br />
* Angled guidelines<br />
<br />
* Conversion of objects to guidelines<br />
<br />
* Significant speed and interactivity improvements<br />
<br />
* Hundreds of smaller features and bugfixes<br />
<br />
=Speed and interactivity=<br />
<br />
* 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. <br />
<br />
* '''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.<br />
<br />
* '''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). <br />
<br />
:'''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. <br />
<br />
* Minor improvements have been made to gradient rendering performance.<br />
<br />
* '''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. <br />
<br />
* '''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. <br />
<br />
* '''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.<br />
<br />
* Several improvements make '''canvas panning and scrolling''' smoother and more interactive in complex slow-rendering documents:<br />
<br />
:* 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 "dirty" but the '''panning is smoother than before''', with few if any "hiccups".<br />
<br />
:* '''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.<br />
<br />
:* 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.<br />
<br />
:* 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. <br />
<br />
:* The default '''starting speed and acceleration''' of Ctrl+arrows scrolling are slightly increased. (They are both settable in Preferences.)<br />
<br />
* Better responsiveness and more visual feedback in user interface: <br />
<br />
:*When you zoom, the '''zoom control''' on the right end of the statusbar now updates immediately, not after screen redraw as before. <br />
<br />
:*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. "Saving document...") while they work. <br />
<br />
:*The '''statusbar messages''' displayed while you're drawing a shape or a path in Pen tool do not lag behind the mouse movements.<br />
<br />
* '''Combine''' and '''Convert to paths''' commands are now orders of magnitude faster when applied to a selection with hundreds or thousands of objects.<br />
<br />
* 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.<br />
<br />
=Tools=<br />
<br />
==Paint Bucket tool==<br />
<br />
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 "fills in" the area in which you clicked. <br />
<br />
===How it works===<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
It places the rendered path onto the current layer, so you can have a layer on top (for example, "Inks") and select the layer below ("Colors") and do the fills so that they always appear below the Inks.<br />
<br />
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).<br />
<br />
===Style===<br />
<br />
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.<br />
<br />
===Controls===<br />
<br />
In the tool's '''Controls bar''':<br />
<br />
* 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:<br />
** Red<br />
** Green<br />
** Blue<br />
** Hue<br />
** Saturation<br />
** Lightness<br />
** Alpha<br />
<br />
* 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%.<br />
<br />
* 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.<br />
<br />
* 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:<br />
** None<br />
** Small (close gaps up to 2 pixels in size)<br />
** Medium (4 pixels)<br />
** Large (6 pixels)<br />
:Note that setting this parameter to other than None may slow down noticeably the filling of large areas.<br />
<br />
===Shortcuts===<br />
<br />
The tool's '''shortcuts''' are:<br />
<br />
* '''Single click''' performs filling from the click point.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
==Tweak tool==<br />
<br />
The Tweak tool is an exciting new way to edit drawings which largely blurs the<br />
distinction between vector and raster editing. Instead of meticulously selecting some<br />
objects and then performing an action on the selection, you can now select ''all''<br />
objects (or all objects you are interested in) and apply the Tweak tool's brush to<br />
smoothly and naturally change the shape or style of only those objects (or parts<br />
thereof) ''that the brush touches''.<br />
<br />
The area of the tool's action - its ''brush'' - is marked by an orange-colored circular<br />
outline that moves with your mouse cursor. However, that area actually has no sharp<br />
boundaries; the power of the tool's action falls off gradually, following a smooth<br />
bell-shaped profile. This makes the tool act softly and smoothly.<br />
<br />
The tool will work on any number of selected objects; for example, you can select all<br />
(Ctrl+A) and "smear" your entire drawing by Push mode or paint it by Color Paint<br />
mode. You can also apply it to groups of objects; it will go into groups and act on<br />
individual objects inside groups. If you're trying to use it without anything selected,<br />
it will remind you by a statusbar message to select some objects.<br />
<br />
===Width===<br />
<br />
The width of the tool's brush, in the range from 1 to 100, can be changed by the<br />
'''Width''' control in the tool's controls bar above the canvas. You can also change<br />
width by '''Left''' and '''Right''' arrow keys (same as in the Calligraphy tool) at any<br />
time (including during action) as well as '''Home''' and '''End'''. Also, as in Calligraphy<br />
tool, the visible width of the brush is independent of zoom; simply zooming in or out is<br />
often easier than adjusting the width if you want to cover a smaller or larger area of<br />
the drawing.<br />
<br />
===Force===<br />
<br />
The next control is '''Force''' which adjusts the power of the action, also in the<br />
range from 1 to 100. You can also change width by '''Up''' and '''Down''' arrow keys at<br />
any time (including during action).<br />
<br />
If you have a pressure-sensitive tablet and your "Use pressure" button on the right-hand<br />
end of the controls bar is on, then the force will also depend on how hard you actually<br />
press your pen into your tablet, changing in the range from zero to whatever you set in<br />
the Force control. If all you have is a mouse, then the force will be constant but still<br />
settable by the Force control. <br />
<br />
===Path editing modes===<br />
<br />
The Tweak tool has a number of '''modes''', selectable by toggle buttons in the tool's<br />
Controls bar and by keyboard shortcuts. Some of these modes change the shapes of <br />
paths while others affect the colors of objects. All these modes share the Width and<br />
Force controls but otherwise are quite different. Let's look at the path editing modes<br />
first.<br />
<br />
Unlike the Node tool, to edit paths with the Tweak tool you don't need to worry about<br />
where the nodes of a path are and how to manipulate them. You just apply the tool's<br />
brush to any point, and the selected paths at that point will reshape smoothly and<br />
naturally - as if made of soft jelly - regardless of where its nodes lie. If applied to<br />
a shape or text object, the tool converts them to paths automatically.<br />
<br />
While not very useful for technical drawings, tweaking paths will be indispensable for<br />
artistic uses of Inkscape - cartoons, drawings, sketches, anime, etc. This new<br />
functionality is somewhat similar to the tools such as "Pucker" and "Bloat" in the<br />
latest versions of Adobe Illustrator. <br />
<br />
There are currently six path editing modes in the Tweak tool: '''Push''', '''Shrink''',<br />
'''Grow''', '''Attract''', '''Repel''', and '''Roughen'''.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
: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).<br />
<br />
: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 Inflating and carving holes with Melting. Unlike the "node sculpting" mode in the Node tool, however, this does not require adding new nodes to the shape.<br />
<br />
* 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 ; you can use them for various central-symmetric distortions in parts of your paths.<br />
<br />
* The '''Roughen''' mode does exactly this: roughens the edge of the path without changing its overall shape. Slight roughening simply makes the edge crooked and uneven; strong roughening tears and explodes the edge into random blobs and splotches. Note that this operation, especially with high Fidelity, adds a lot of nodes which increases the size of your SVG document and may slow down Inkscape considerably. In particular, pushing/melting/inflating 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.<br />
<br />
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.<br />
<br />
====Fidelity====<br />
<br />
Any tweaking of a path slightly distorts the entire path, including even those parts<br />
that you didn't touch. These distortions are similar to those that a Simplify command<br />
produces. The '''Fidelity''' value (also in the range from 1 to 100, default is 50)<br />
allows you to control the amount of these distortions. With a higher fidelity, the<br />
distortions are less noticeable, but the path may end up having a lot of nodes which<br />
inflates up the SVG size and slows down Inkscape.<br />
<br />
The best value of Fidelity depends on the nature of your artwork. If you're sculpting an<br />
amorphous blob, you can do with low fidelity of about 20. If, however, you are pushing<br />
or inflating a text string (as a single path) and want the letters outside the distorted<br />
area to remain crisp and clean, you will need to raise fidelity to 80 or more. <br />
<br />
====Known problems====<br />
<br />
Known problems with the path editing modes in Tweak tool:<br />
<br />
# they don't work on open paths (an open path becomes closed if you tweak it);<br />
# they are rather slow; <br />
# they quickly eat memory; and <br />
# they are sometimes buggy - thin calligraphic strokes may suddenly disappear or change their shape drastically as you're melting or inflating them.<br />
<br />
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. <br />
<br />
Also, sometimes after roughening, further tweaking of a path becomes impossible with this diagnostic:<br />
<br />
WARNING **: Shape error in ConvertToShape: directedEulerian(a) == false<br />
<br />
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.<br />
<br />
===Color editing modes===<br />
<br />
The '''Color Paint''' and '''Color Jitter''' modes, unlike the path editing modes,<br />
change the colors of objects instead of their shapes. Yet they share enough common<br />
features with the path editing modes to be part of the same tool: These modes also use<br />
a circular soft-edged brush controlled by the Width and Force parameters on the Controls<br />
bar and affected by the pen pressure (if you have a pressure-sensitive tablet).<br />
<br />
* '''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.)<br />
<br />
: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).<br />
<br />
: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.<br />
<br />
* '''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.<br />
<br />
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.)<br />
<br />
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.<br />
<br />
<br />
====Channels====<br />
<br />
Color Paint and Color Jitter honor the '''Channels''' control. This control comprises<br />
the four buttons: '''H''', '''S''', '''L''', and '''O''', which allow you to turn on and off<br />
the tool's action on the object's hue, saturation, lightness, and opacity,<br />
correspondingly. For example, if you want to raise the saturation of some part of your<br />
drawing without changing the hue, select some maximum-saturation color (e.g. pure red)<br />
and turn off all Channels buttons except S. Similarly, you can replace the hues without<br />
affecting saturation or lightness (only H pressed), or lighten/darken all colors without<br />
changing their hues and saturation (only L pressed). Pressing O allows you to apply the<br />
master opacity from the tool's style to the master opacity of objects (but not fill or<br />
stroke opacity).<br />
<br />
====Usage notes====<br />
<br />
Color painting with Tweak tool is similar, but not exactly analogous to bitmap<br />
painting. Even though the tool itself works as a soft brush, it still applies its color<br />
to vector objects, which behave as vector objects usually do. For example, if you want<br />
to change the tint of the face in your drawing, and if a hand in the drawing is part of<br />
the same object as the face, that hand will change its tint too even if it's located far<br />
from the point you are painting. (We foresee a "fracture" command in one of the next<br />
versions of Inkscape which will help you turn a monolithic object into a mosaic of small<br />
fragments that will be then easy to paint with Tweak tool.) Still, even with this<br />
limitation, color painting is a novel way of dealing with vector drawings which allows<br />
you to quickly and intuitively make adjustments which would be awkward and slow with<br />
traditional approach.<br />
<br />
Drawings containing patterns or scatterings of small independent objects are best suited<br />
for color painting with Tweak tool. Examples include:<br />
<br />
* freehand drawings with Calligraphy pen, consisting of many separate strokes;<br />
<br />
* 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);<br />
<br />
* text converted to paths and with Break Apart command applied so that each letter is a separate path;<br />
<br />
* 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.<br />
<br />
Moreover, color tweaking can be useful for compositions with a few objects or even for<br />
single objects. Unlike all other color selection methods, painting with the Tweak tool<br />
implements the ''color mixing'' metaphor which is much more familiar to traditional<br />
artists than RGB sliders or even the color wheel. For example, start with a rectagle of<br />
pure blue color; then, pick different colors by Color Paint and apply light touches with<br />
minimum Force and minimum pen pressure: add a little green, a little brown, a little<br />
yellow, etc. until you have the exact hue you need. Similarly, you can whiten or blacken<br />
any hue by admixing white or black.<br />
<br />
You can also use color tweaking to add a tint, darken/lighten, saturate/desaturate, or<br />
color jitter your entire drawing. Just select all in all layers, zoom out, choose a<br />
large brush width so it covers all of the drawing, and apply a little color tweaking<br />
(with minimum Force) that will therefore affect all visible objects.<br />
<br />
===Keyboard shortcuts===<br />
<br />
* '''W''', '''Shift+F2''': switch to the Tweak tool<br />
<br />
* '''Shift+P''': switch to the Push mode<br />
<br />
* '''Shift+S''': switch to the Shrink mode<br />
<br />
* '''Shift+G''': switch to the Grow mode<br />
<br />
* '''Shift+A''': switch to the Attract mode<br />
<br />
* '''Shift+E''': switch to the Repel mode<br />
<br />
* '''Shift+R''': switch to the Roughen mode<br />
<br />
* '''Shift+C''': switch to the Color Paint mode<br />
<br />
* '''Shift+J''': switch to the Color Jitter mode<br />
<br />
* '''Left, Right, Home, End''': change width<br />
<br />
* '''Up, Down''': change force<br />
<br />
* '''mouse drag''': act on selected path in the current mode<br />
<br />
* '''Ctrl+mouse drag''': temporarily switch to Shrink (while Ctrl is down)<br />
<br />
* '''Shift+Ctrl+mouse drag''': temporarily switch to Grow (while Shift+Ctrl is down)<br />
<br />
==3D Box tool==<br />
<br />
Inkscape is a two-dimensional drawing tool. However, very often it is used to draw three-dimensional objects. The new '''3D box tool''' helps you create such 3D drawings by automating the most common operation: creating a three-dimensional box in a given perspective. The tool automatically ensures that all sides of the box lie on the corresponding perspective lines. We're not going to compete with Blender - but even simple things can go a long way.<br />
<br />
Currently in the 3D box tool you can:<br />
<br />
* draw a 3D box by dragging on canvas (use Shift+dragging without releasing the mouse button to extrude in z direction)<br />
<br />
* adjust any of its 3 dimensions by handles<br />
<br />
* move a 3D box "in perspective" 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<br />
<br />
* adjust the vanishing points of a perspective by dragging them across the canvas (see below) or toggling their states; all boxes sharing this perspective are transformed accordingly<br />
<br />
In SVG, a 3D box is represented as a '''group''' (svg:g) with a special extension attribute (in inkscape namespace); this group contains the 6 quadrilateral '''paths''' representing the sides of the box. Only the 3D box tool treats this object as a box; for all other tools it is just a group, so you can select any of the paths by Ctrl+click, apply any style to it, delete it, etc. You can of course transform the entire box or any face in it using Selector or Node tools.<br />
<br />
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 "dragger". 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.<br />
<br />
===Keyboard shortcuts===<br />
<br />
* '''X''', '''Alt+F4''': switch to the 3D box tool<br />
<br />
* 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.<br />
<br />
* When the 3D box tool is active, '''Shift+X''', '''Shift+Y''', and '''Shift+Z''' toggle perspective lines in the corresponding direction between "converging" and "parallel".<br />
<br />
<br />
[max]<br />
<br />
==Gradient Tool==<br />
===Selecting multiple stops===<br />
'''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. <br />
* Add a stop to the selected stops by '''Shift+click'''.<br />
* Press '''Ctrl+A''' to select all stops in the selected objects.<br />
* '''Shift+drag''' around stops to add them to selection.<br />
Multiple selected stops:<br />
*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.<br />
*Can be deleted at the same time by pressing '''Del'''.<br />
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.<br />
<br />
===Editing intermediate stops===<br />
'''Intermediate stops''' in gradients can be added, deleted, and edited on canvas (previously this was only possible in the Gradient Editor dialog).<br />
*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.<br />
*When two or more adjacent stops are selected, pressing '''Ins''' adds stops in the middles of all selected stop intervals.<br />
*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). <br />
:*Dragging with '''Ctrl''' moves the selected stops snapping them to 1/10 fractions of the available range.<br />
:*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.<br />
*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).<br />
*Stops can be deleted by '''Ctrl+Alt+Click''' on a stop or by the '''Del''' key for all the selected stop(s).<br />
:*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).<br />
:*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 & opacity of the remaining stop.<br />
*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.<br />
<br />
===Style of gradient stops===<br />
*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&Stroke dialog. Previously, opacity of a gradient handle was reflected as fill-opacity and stroke-opacity; now it is reflected as '''master opacity''' (the "O:" spinbutton in the selected style indicator, the "Master opacity" slider in Fill&Stroke). This makes it much easier to view and change opacity of gradient handles using only the selected style indicator in the statusbar.<br />
:*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.<br />
*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''').<br />
*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 "L Gradient" or "R Gradient" text labels as before). Also, this and other similar widget now use italic font face to indicate <i>None</i> and bold to indicate <b>Unset</b>.<br />
<br />
===Automatic duplication of gradients===<br />
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. <br />
<br />
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.<br />
<br />
==Calligraphy tool: Engraver's Toolbox ==<br />
<br />
Several new features were added to the Calligraphic pen to make<br />
Inkscape capable of the ancient art of '''line<br />
engraving'''. Traditional engraving is a very labour-intensive<br />
process, and while for a long time it was the only practical way<br />
of reproducing lifelike images in black-and-white print, about a<br />
century ago it was almost completely displaced by automatic<br />
halftone screens. However, line engravings have their<br />
characteristic charm, and there's no reason not to try to<br />
resurrect this art form with the help of Inkscape.<br />
<br />
A brief visual guide to the new functionality can be seen on<br />
these screenshots:<br />
<br />
http://inkscape.org/screenshots/gallery/inkscape-0.46-engraving1.png<br />
<br />
http://inkscape.org/screenshots/gallery/inkscape-0.46-engraving2.png<br />
<br />
<br />
===Tracking a guide path with Ctrl===<br />
<br />
One of the most common operations in line engraving is<br />
'''hatching''' (or sometimes ''cross-hatching'' when several<br />
hatching grids cross): filling a space with many parallel<br />
straight or variously curved lines (usually of varying width to<br />
represent a gradual shading). You could try to achieve a similar<br />
effect with e.g. path interpolation (blending), but it is rather<br />
cumbersome and limited; manual drawing of hatch lines, on the<br />
other hand, is tedious and nearly impossible to do<br />
uniformly. Now Inkscape provides "assisted hatching" by<br />
'''tracking a guide path''', allowing you to hatch quickly and<br />
uniformly and at the same time giving you sufficient manual<br />
control over the process.<br />
<br />
Here's how to do this. First, select the '''guide path''' that<br />
you will track. It may be another calligraphic stroke, any path<br />
or shape, or even a letter of a text object. Then switch to<br />
Calligraphic pen, select the desired parameters (line width,<br />
angle, fixation etc.) and, before starting to draw, press<br />
Ctrl. You will see a gray '''track circle''' centered at your<br />
mouse pointer and touching the closest point on the selected<br />
guide path. (If you have no guide path selected, a statusbar<br />
message will tell you to select it.)<br />
<br />
Now move your mouse close to the guide path, so that the track<br />
circle radius is equal to the desired spacing of your hatch<br />
pattern, and start drawing along the guide path. At that moment,<br />
the radius of the circle gets locked; now the circle slides<br />
along the guide path - and the actual stroke is drawn by the<br />
center of the tracking circle, ''not'' by your mouse point. As<br />
a result, you are getting a smooth stroke going parallel to the<br />
guide path and always at the same distance from it.<br />
<br />
When the stroke is ready, release your mouse button (or lift<br />
your tablet pen) but '''do not let go of the Ctrl key''' because<br />
as long as you have it pressed, the tool remembers the hatch<br />
spacing you set when you started drawing. Now, you have just<br />
created a new stroke and, as usual with Inkscape tools, it gets<br />
selected instead of what was selected before. In our case, this<br />
means that the newly drawn stroke itself becomes the new guide<br />
path. Next, you can draw a second stroke along the first one,<br />
then a third one along the second, etc. Eventually you can fill<br />
any desired space with uniform hatching.<br />
<br />
Alternatively, if you uncheck "Select new path" 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. <br />
<br />
The attachment to the guide path is not absolute. If you stray<br />
your mouse pointer far enough from the guide path, you will be<br />
able to tear it off (the track circle turns from green to red)<br />
and move freely. This is intentional; this feature allows you,<br />
for example, to continue drawing a stroke past the end of a<br />
guide stroke, thus making your hatching cover a wider area than<br />
the initial guide path. Special care is taken to make such<br />
tearing off as smooth as possible and to suppress violent jerks,<br />
but this is not always possible; the general advice is to not<br />
try to hatch too fast. If jerking and unintended tearoffs still<br />
bother you, try increasing the Mass parameter.<br />
<br />
Also, special code is in place to prevent flipovers - accidental<br />
jumps to the other side of the guide path. Brief flipovers are<br />
suppressed, but if you intentionally go over to the other side<br />
and stay there, eventually Inkscape will obey and your tracking<br />
stroke will also flip over to follow you.<br />
<br />
Tracking a guide also allows some slight feedback by gradually<br />
changing the tracking distance in response to your drawing<br />
behavior. Thus, if you're consistently trying to draw closer or<br />
farther from the guide than the current tracking distance, the<br />
distance will correspondingly decrease or increase, so you will<br />
get a hatching that is slightly spacing in or out. (The effect<br />
is very slight, however, so as not to become a nuisance.) Also,<br />
note that since tracking follows the edge of the stroke, strokes<br />
of varying width (such as those tracing background, see below)<br />
will result in gradual bending of the hatching pattern as you<br />
proceed.<br />
<br />
===Tracing background by stroke width===<br />
<br />
There is a new toggle button on the Calligraphy tool's controls<br />
bar, '''Trace background'''. When on, the width of your pen<br />
depends on the lightness of the background under the stroke in<br />
each point, so that white translates into the minimum stoke<br />
width (1) and black translates to the maximum (which is set by the<br />
Width parameter). This can work alone or in combination with<br />
pressure sensitivity, depending on whether the "Use pressure" button<br />
is also toggled.<br />
<br />
This feature allows you to not only hatch over an imported<br />
bitmap image or any drawing, but to do so automatically<br />
reproducing the highlights and shades of the background with<br />
your strokes becoming lighter and heavier as needed.<br />
<br />
===Misc features===<br />
<br />
* 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. <br />
<br />
* 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.)<br />
<br />
==Selector==<br />
<br />
* 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. <br />
<br />
: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.<br />
<br />
* 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.<br />
<br />
* Draging the '''scale handles with Alt''' now scales selection by an integer factor, i.e. up to '''2''', '''3''', '''4''', etc. times the original size or down to '''1/2'''. '''1/3''', '''1/4''', etc. of the original size (in any of the two dimensions independently). This way you can, for example, mirror any object around one of the edges of its box. (This replaces the old and rarely used "slow" scaling mode with Alt.)<br />
<br />
* '''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.<br />
<br />
* '''Objects to Marker''' was added to the objects menu, which converts the current selection to a marker, with the center point of the selection being set to the center of the marker.<br />
<br />
==Node tool==<br />
<br />
* 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 ('<' and '>' 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.<br />
<br />
* [helper path display - johan]<br />
** this is deactivated for normal paths now. only paths with LPE applied will show it. should there be a button to turn it on for normal paths aswell?<br />
<br />
* As a long-requested feature, two entry fields are added to the toolbar which allow precise editing of the coordinates of selected nodes.<br />
<br />
==Rectangle Tool==<br />
<br />
* '''Ctrl+dragging''' now also allows the creation of rectangles with sides constrained to the '''golden ratio''' (approx. 1 : 1.618034), not only integer ratios.<br />
<br />
==Ellipse Tool==<br />
<br />
* 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.<br />
<br />
* '''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.<br />
<br />
==Text tool==<br />
* [text toolbar - deadchip?]<br />
* If text contains a tref element, the text tool's behavior may not be as expected. Please see [[#The tref Element]]<br />
<br />
==Dropper Tool==<br />
<br />
The shortcut 'D' is now used to <i>toggle</i> (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.<br />
<br />
=SVG features=<br />
<br />
==The tref element==<br />
<br />
Inkscape can now correctly open files with '''tref''' elements, and new tref elements can be created manually in the XML editor.<br />
<br />
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'''.<br />
<br />
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'''.<br />
<br />
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.<br />
<br />
Existing tref elements can be converted into tspan elements with '''Edit > Clone > 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'''.<br />
<br />
A '''tref''' element can be mixed with any other elements allowed to be contained by a text element.<br />
<br />
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'''.<br />
<br />
==SVG filters==<br />
<br />
===New filters supported===<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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]<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
See also wiki page [[Filter Effects]] for more info on filters in Inkscape in general.<br />
<br />
===Filters UI===<br />
<br />
* New dialog for creating and modifying filter effects ('''Object>Filter Effects...''')<br />
* The list at the left of the dialog displays all filters currently in the document.<br />
** New filters can be added with the '''Add''' button beneath the list<br />
** Right-clicking a filter for the pop-up menu allows duplicating or removing a filter.<br />
** Double-clicking a filter will apply it to all selected objects<br />
** 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.<br />
* The second list, at the left of the dialog, displays the '''filter primitives''' that are contained within the currently-selected filter.<br />
** New primitives can be added by selecting the primitive type from the combo box beneath the list, and then pressing the '''Add''' button.<br />
** Right-clicking a primitive for the pop-up menu allows duplicating or removing a primitive.<br />
** Primitives can be rearranged by clicking and dragging any filter in the list.<br />
** 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.<br />
** The "in" and "in2" 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.<br />
*** 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.<br />
*** 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.<br />
*** 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.<br />
*** 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.<br />
*** Merge inputs have an empty input at the end. Dragging a connection from this input will add a new input to the primitive.<br />
<br />
=Live Path Effects (LPE)=<br />
<br />
'''Live path effects''' (not to be confused with extension effects or SVG filters) are a new way to <b>non-destructively modify path and shape objects</b>. 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. <br />
<br />
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.<br />
<br />
Live path effects were developed by Johan Engelen as part of the GSoC 2007.<br />
<br />
==Details about operation==<br />
The following schematic tries to explain how LPE work.<br />
<br />
original style ------------> output style<br />
original path --> LPE --> output path<br />
^<br />
|<br />
parameters<br />
<br />
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 <b>output style equals original style</b>.<br />
<br />
The parameters can be paths, numbers, points, text, in principle anything.<br />
<br />
<br />
==Applying effects==<br />
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.<br />
<br />
When a path with a path effect applied is selected, the statusbar description mentions that, for example "'''Path''' (4 nodes, path effect)".<br />
<br />
There is a special Paste Path Effect command (Ctrl+7) that can be used to copy effects from one path to another.<br />
<br />
==Editing effect parameters==<br />
When switching to the node edit tool (<b>F2</b>), the <b>original path</b> can be edited. The original path is shown as a red helper path. Normal path operations, like simplify, still work.<br />
<br />
Some parameters of effects can be edited on-canvas. For example, path parameters can be node-edited, by pressing the "edit on-canvas" button in the Path Effects dialog. <b>Press "7" to cycle through the different on-canvas editable parameters.</b> 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.<br />
<br />
==Available effects==<br />
<br />
===Path along path===<br />
The <b>Path along Path</b> 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 <b>on-canvas</b> and the result is <b>updated live</b>. This provides a direct equivalent of "vector brushes" or "skeletal strokes" features in other vector editors. <br />
<br />
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'.<br />
<br />
Example file: live-path-effects-pathalongpath.svg<br />
<br />
===Pattern along path===<br />
The <b>Pattern along Path</b> 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 <b>on-canvas</b> and the result is <b>updated live</b>. This provides a direct equivalent of "vector brushes" or "skeletal strokes" features in other vector editors. <br />
<br />
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.<br />
<br />
Example file: live-path-effects-pathalongpath.svg<br />
<br />
===Stitch Subcurves===<br />
The <b>Stitch Subcurves</b> effect connects points from two subpaths of the path with straight line or curved segments, i.e. the <i>stitches</i>. It looks a lot like the Effect Lines from Expression 3. The result is also referred to as "String Art". For some examples of string art, see http://members.shaw.ca/jillbritton/string_art/jbstringart.htm. <br />
<br />
The <b>shape</b> of the <b>connecting paths</b> can controlled by the <b>stroke path</b> parameter. This could be used to draw 'hair-shaped' connecting paths with sharp end-tips. Other controls include the <b>number of paths</b>, the variation in spacing between the connecting paths (<b>clustering</b>) and also whether the start and end points of the stitches should like exactly on the original subcurves or can <b>stray randomly</b> around them. Finally the width of the stroke path can be varied.<br />
<br />
Note that this effect can only be applied to a path with two subpaths in it, hence '<b>sub</b>curve' in the name. Use Path > Combine to create such a path from two separate paths.<br />
<br />
Example file: live-path-effects-curvestitch.svg<br />
<br />
Example file showing cooperation between Stitch Subcurves and Path along Path: live-path-effects-curvestitch-hair.svg<br />
<br />
===Gears===<br />
The <b>Gears</b> 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. <br />
<br />
Example file: live-path-effects-gears.svg<br />
<br />
==Development of new effects==<br />
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!<br />
<br />
[johan]<br />
<br />
=Extension effects=<br />
<br />
== Live preview ==<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''Progress dialog''': While an extension is working on a document, a small dialog is shown allowing the user to cancel the execution.<br />
<br />
== New and improved effects ==<br />
<br />
* The new '''Modify Path > Edge 3D''' extension creates black, grey and white paths around a shape, then blurs and clips them for a 3D effect.<br />
<br />
* The new '''Render > 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. <br />
<br />
* The new '''Render > 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.<br />
<br />
* The new '''Render > [[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]).<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* 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.<br />
<br />
*The new '''Color > 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.<br />
<br />
*The '''Whirl''' extension uses the center of view as the center of whirl, so you don't have to enter the center coordinates numerically.<br />
<br />
*The '''Render > Grid''' extension has got an extended range of grid spacings, from 0.1 to 1000 px.<br />
<br />
*The '''Render > Function Plotter''' extension can now plot using polar coordinates.<br />
<br />
*The '''Generate Template > 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.<br />
<br />
== XSLT effects ==<br />
<br />
* '''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.<br />
<br />
== ImageMagick effects ==<br />
<br />
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. <br />
<br />
* '''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.<br />
<br />
* '''Add Noise''' adds random noise of certain types to the bitmap.<br />
<br />
* '''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.)<br />
<br />
* '''Channel''' extracts the specified channel from the bitmap.<br />
<br />
* '''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.<br />
<br />
* '''Colorize''' overlays the bitmap with a given color at a given intensity.<br />
<br />
* '''Contrast''' lightly enhances the contrast (difference between lights and darks) of a bitmap.<br />
<br />
* '''Cycle Colormap''' cycles the colormap of a bitmap.<br />
<br />
* '''Despeckle''' reduce the speckle noise in a bitmap.<br />
<br />
* '''Edge''' hilights edges in a bitmap.<br />
<br />
* '''Emboss''' embosses a bitmap, hilighting edges with 3D effect.<br />
<br />
* '''Enhance''' enhance a bitmap, minimizing noise.<br />
<br />
* '''Equalize''' equalizes a bitmap. Histogram equalization.<br />
<br />
* '''Flop''' mirrors a bitmap, reflecting each scanline in the horizontal direction.<br />
<br />
* '''Gaussian Blur''' blurs a bitmap, more strongly than regular blur.<br />
<br />
* '''Implode''' sucks everything towards the center of the bitmap.<br />
<br />
* '''Level''' scales values falling between the given '''Black Point''' to '''White Point''' range to the full color range.<br />
<br />
* '''Level Channel''' acts the same way as level but for only one channel.<br />
<br />
* '''Median Filter''' filters a a bitmap by replacing each pixel component with the median color in a circular neighborhood<br />
<br />
* '''Modulate''' adjusts the percent hue, saturation, and brightness of a bitmap.<br />
<br />
* '''Negate''' takes the inverse of a bitmap.<br />
<br />
* '''Normalize''' normalizes a bitmap, expanding color range to the full possible range of color.<br />
<br />
* '''Oil Paint''' stylizes a bitmap so that it appears to be painted with oils.<br />
<br />
* '''Opacity''' modifies the opacity channel of a bitmap.<br />
<br />
* '''Raise''' alters the lightness of the edges of a bitmap to create a raised appearance, much like a frame.<br />
<br />
* '''Reduce Noise''' reduces noise in a bitmap by using a noise peak elimination filter.<br />
<br />
* '''Shade''' shades a bitmap by simulating a distant light source<br />
<br />
* '''Sharpen''' sharpens a bitmap.<br />
<br />
* '''Solarize''' solarizes a bitmap, like overexposing photographic film.<br />
<br />
* '''Spread''' randomly spread pixels in a bitmap within the radius of '''amount'''.<br />
<br />
* '''Swirl''' swirls the bitmap around the center point.<br />
<br />
* '''Threshold''' thresholds a bitmap.<br />
<br />
* '''Unsharpmask''' sharpens a bitmap using an unsharp mask algorithm.<br />
<br />
* '''Wave''' alters a bitmap along the sine wave.<br />
<br />
These effects are part of the Google Summer of Code 2007, coded by Christopher Brown.<br />
<br />
== Misc ==<br />
<br />
* All Python effects are switched from the old and unmaintained PyXML library to the new powerful [http://codespeak.net/lxml/ lxml] library.<br />
<br />
* 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.<br />
<br />
= Stock patterns =<br />
<br />
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&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:<br />
<br />
*A selection of plain '''stripes''' differing by the ratio of the stripe width to gap width (for example, the "Stripes 1:2" 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).<br />
<br />
*Two '''checkerboard''' patterns with black and white odd squares (even squares are transparent)<br />
<br />
*'''Packed circles''': a hexagonal pattern of black circles with transparent gaps.<br />
<br />
*'''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).<br />
<br />
*'''Wavy''' is a pattern of wavy lines.<br />
<br />
*'''Camouflage''' is a green-toned protective pattern such as that used by the military.<br />
<br />
*'''Ermine''' is the traditional heraldic pattern representing stylized stoat furs with black tails.<br />
<br />
*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 "texturize" them. <br />
<br />
After applying a stock pattern, switch to Node tool to edit the location, scale, and rotation of the pattern via on-canvas handles.<br />
<br />
All stock patterns are stored in the file <code>patterns/patterns.svg</code> in Inkscape's <code>share</code> directory (typically <code>/usr/share/inkscape</code> on Linux, <code><i>inkscape-dir</i>/share</code> on Windows). You can add your own patterns to this file or replace it with any other SVG file containing the patterns you need.<br />
<br />
=Color management=<br />
<br />
== Calibrated SVG color including CMYK ==<br />
<br />
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<br />
optional "icc-color(...)" paint components as described in section 11.2 "Specifying paint" of the SVG 1.1 specification<br />
[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.<br />
<br />
The new CMS color selector tab allows these colors to be edited.<br />
<br />
== Display adjustment ==<br />
<br />
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.<br />
<br />
=== Per-window adjustment ===<br />
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.<br />
<br />
=== XICC Support ===<br />
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.<br />
<br />
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.<br />
<br />
=== Multi-monitor aware ===<br />
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.<br />
<br />
== Soft Proofing ==<br />
<br />
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.<br />
<br />
=Snapping=<br />
<br />
* Snapping has been implemented or improved for:<br />
<br />
:* '''Newly created shapes'''<br />
<br />
:* '''Skewing''' of objects<br />
<br />
:* '''Handles''' of objects, incl. '''gradients'''<br />
<br />
:* '''Images''', '''ellipses''', and '''clones'''<br />
<br />
:* Text boxes, which snap to '''text baselines''' again<br />
<br />
:* Objects, for which snapping now optionally considers the '''rotation center'''<br />
<br />
:* Objects, which now allow for '''constrained snapping'''<br />
<br />
:* '''Guides''', which now snap while dragging them<br />
<br />
:* '''Axonometric grids'''<br />
<br />
:* '''Angled guide lines'''<br />
<br />
:* '''Bounding boxes''', of which now all four corners snap<br />
<br />
<br />
<br />
* Other snapping fixes and improvements include:<br />
<br />
:* It is now possible to snap to '''intersections''' of e.g. gridlines with guidelines, and of line segments. <br />
<br />
:* The '''snapping preferences dialog''' has been restyled to make it more intuitive. <br />
<br />
:* Inkscape now has a global snapping toggle, which has been added to the view-menu and is accessible through a shortcut<br />
<br />
:* Inkscape now allows for controlling the snapping per grid when multiple grids are being used<br />
<br />
:* Snapping distance is now set in screen pixels and is therefore '''independent of zoom'''. <br />
<br />
:* Snapping of objects has been made more clean, by only snapping '''bounding box corners to bounding boxes''', and '''nodes to other nodes and paths'''.<br />
<br />
:* The time it takes to snap to objects using the selector tool has been reduced significantly.<br />
<br />
:* The bug where "node-to-node" snapping caused jerky movement of nodes is fixed.<br />
<br />
:* The '''aspect ratio''' is correctly preserved while scaling objects with snapping turned on.<br />
<br />
:* Only nodes at '''non-smooth parts''' of a path now snap.<br />
<br />
:* The confusing "Default transformations origin" 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).<br />
<br />
:* 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).<br />
<br />
=Grids=<br />
Grids have undergone some big changes under-the-hood. These are the visible changes:<br />
* There is a <b>new 3D/axonometric grid</b>!<br />
* A new tab in the document properties dialog, solely meant for grids; the former grid/guide tab is now solely for guides. I envision a list of guides there in the future, for easier deletion of guides etc.<br />
* More than one grid can be active at the same time<br />
** Each grid can be enabled/disabled separately from the document properties dialog.<br />
* One can make grids invisible by unchecking the "Visible" checkbox in the grid's tab in the document properties dialog. Snapping is still enabled even for invisible grids!<br />
* Multiple views on the same document share the same grids, but the grid can be turned off for each view separately. For example: one could have an overview view without 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. (sorry i am not able to explain more clearly, perhaps someone else can?)<br />
* Grid information is now stored in SVG as a child of sodipodi:namedview. Old files will be converted to this new format automatically<br />
* The rectangular grid now has an option to show dots on gridline intersections instead of solid lines<br />
<br />
From developer perspective:<br />
<br />
* Implementation of new grids is much easier now; subclassing CanvasGrid and adding an entry in the is enough. Have a peek at how the rectangular grid is implemented (CanvasXYGrid).<br />
* Note that there is no longer "the grid", there might be several grids active now!<br />
<br />
A side effect of removal of old gridcode: apparantly the origin of the desktop rules used to be set to the origin of the grid. I find this strange: specifying a grid origin of (2,2) would have me think the origin would be at ruler location (2,2) instead of (0,0) as it is in 0.45.1.<br />
I have commented the grid-origin correction to the ruler range, because now there is not a single grid anymore to correct it for. Isn't there a control somewhere to define the documents origin? Now the ruler origin is set to (0,0)<br />
<br />
--johan<br />
<br />
=Angled guidelines=<br />
<br />
Now, Inkscape also provides angled guidelines! Double click on a guide to set its angle.<br />
<br />
* When dragging a guideline off the rulers close to the edge, the guideline will automatically be angled. The angle is set depending on the grid.<br />
** For the rectangular grid, the angle is 45 degrees.<br />
** For the axonometric grid, the angle is matched to the grid. When the Ctrl-key is pressed, the angle is perpendicular to the grid lines (useful for aligning gradients).<br />
<br />
=Creating guidelines from objects=<br />
<br />
* Selected objects can now be converted to guidelines. To do this, either use the menu command '''"Object->Object to guides"''' 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.<br />
<br />
* '''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.<br />
<br />
* For all other objects, conversion usually happens by placing the guidelines around the object's bounding box (use the corresponding checkbox in the "Tools" page of Inkscape Preferences to switch between geometric and visual bounding box).<br />
<br />
*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.<br />
<br />
=Import/Export=<br />
<br />
==PDF and AI import==<br />
<br />
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). <br />
<br />
'''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. <br />
<br />
'''PDF import settings''': After opening a PDF or AI document, the PDF Import Settings dialog shows up. Here you can select:<br />
<br />
* the '''page''' to be imported from a multipage PDF;<br />
<br />
* 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.);<br />
<br />
* 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;<br />
<br />
* a checkbox controlling whether the '''images''' should be '''embedded''' into the resulting SVG document or saved on the current path;<br />
<br />
* 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).<br />
<br />
'''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.)<br />
<br />
To work around this, select the text object you want to edit and use '''Text > 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. <br />
<br />
Note that there is a way to select even a single line in a text block. For this, open the XML editor, expand the <svg:text> tree branch corresponding to your text, and select any of the <svg:tspan> 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+> or Alt+<).<br />
<br />
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.<br />
<br />
==PDF export==<br />
<br />
* A new cairo-based PDF exporter has been added to Inkscape (marked as "Cairo PDF" in the export format list). Inkscape 0.46 can export shapes, strokes, transparency, gradients, patterns, text, and images correctly to cairo. While clipping paths and masks are known to be faulty or missing. 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.<br />
<br />
* A new cairo-based PostScript exporter has been added (marked as "Cairo PS" 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.<br />
<br />
==CDR (CorelDraw) import==<br />
<br />
Inkscape can use [http://www.sk1project.org/modules.php?name=Products&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 (since UniConvertor is Unix-only) and requires that you have Python and UniConvertor installed. As of UniConvertor 1.0rc2, only versions from 7 to X3 of the CDR format are supported, and text objects are not converted. <br />
<br />
==XAML import/export==<br />
<br />
* Inkscape can import vector graphics portions of XAML documents, as well as export its documents to XAML.<br />
<br />
==Adobe Illustrator SVG clean import==<br />
<br />
* 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.<br />
<br />
==Bitmap export==<br />
<br />
* '''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.<br />
<br />
: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 "export" layer. In that layer, "slice" 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 "export" layer, select all in that layer (Ctrl+A), and export with the ''Batch export selected objects'' checkbox on.<br />
<br />
* '''Hide all except selected''': A new checkbox allows you to hide in the exported image everything except selected object(s).<br />
<br />
* The Export dialog automatically appends the '''.png''' extension to the export filename you specify.<br />
<br />
== Open Clip Art Library import and export ==<br />
<br />
{rejon}<br />
<br />
=Command line=<br />
<br />
Several new command line options are added that make Inkscape even more scriptable and automatable than before.<br />
<br />
* --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.<br />
<br />
* --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.<br />
<br />
* --select followed by a node ID will allow you to add a node to the list of selected objects.<br />
<br />
* --query-all produces a comma delimited listing of all objects in the document, with their x, y, height, and width values.<br />
<br />
These options can be used, for example, for performance testing. You could do something like this:<br />
<br />
$ time inkscape --verb=FileClose my_complex_file.svg<br />
<br />
to measure the time it takes to load and display the file.<br />
<br />
Of course, with the ability to select objects, it can be much more useful than<br />
that. You can call extension effects, or any other verb, then FileSave and<br />
FileClose to automate all kinds of operations on your drawings.<br />
<br />
=User interface=<br />
<br />
== [dockable dialogs - gustav] ==<br />
<br />
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.<br />
<br />
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&mdash;this allows other dialogs to be dragged and dropped on it to form a floating group of dialogs.<br />
<br />
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'' > ''Dialog behavior'' in the Inkscape preferences dialog.<br />
<br />
Known issues:<br />
<br />
* Some of Inkscape's dialogs are yet to be adapted to allow docking, these include the "Text and Font" dialog, the "Tiled clones" dialog, the "XML editor" and the "Object properties" dialog.<br />
<br />
* [Remembered positions of dockable floating dialogs is inexact.] <br />
<br />
[options]<br />
<br />
== [toolbars - [[JonCruz]]] ==<br />
<br />
'''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.<br />
<br />
[calligraphy: menus, tooltips; star; ...]<br />
<br />
Switched to stock GTK+ toolbars.<br />
<br />
Extra magic secret sauce added.<br />
<br />
== [filedialogs - [[JonCruz]]] ==<br />
<br />
== Swatches panel, color drag-and-drop ==<br />
<br />
* Right-clicking a color swatch now opens a context menu which allows you to apply the color to the fill or stroke of selection.<br />
<br />
* Dragging colors from the color palette has been fixed and improved:<br />
<br />
:* 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.)<br />
<br />
:* 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.)<br />
<br />
:* 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.<br />
<br />
==Color gestures==<br />
<br />
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 "None", "N/A", 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.<br />
<br />
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'''.<br />
<br />
The adjustment is done by '''"rotating"''' the color swatch away from the original direction which is assumed to be '''NE at 45 degrees''' (i.e. from<br />
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.<br />
<br />
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.<br />
<br />
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. <br />
<br />
You can '''switch channels while you drag'''. That is, you don't need to <br />
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.<br />
<br />
The '''Alt''' modifier is special. Pressing Alt means "do nothing"; 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.<br />
<br />
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.<br />
<br />
Apart from precise adjustments, you can use color gestures to very quickly perform some common color transformations:<br />
<br />
* Ctrl+drag the swatch to the right and down to paint all selected objects black.<br />
<br />
* Ctrl+drag the swatch upwards and to the left to paint all selected objects white.<br />
<br />
* Shift+drag the swatch to the right and down to desaturate the color of selected objects.<br />
<br />
* Shift+drag the swatch upwards and to the left to maximize saturation of the color of selected objects. <br />
<br />
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.<br />
<br />
This new technique requires some getting used to, but once you get the idea it is quite convenient, fast, and precise.<br />
<br />
== Print dialog integration == <br />
<br />
* '''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.<br />
<br />
== Saving window geometry globally ==<br />
<br />
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 "Save geometry to preferences" 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).<br />
<br />
== Preserving zoom/view of reverted documents ==<br />
<br />
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.<br />
<br />
== Bounding box option moved ==<br />
<br />
The preferences option to select between "visual" and "geometric" bounding box was moved in Inkscape Preferences dialog from the "Selector" page to "Tools" page (since it applies more globally than just in Selector tool).<br />
<br />
== New ways to scroll and zoom ==<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* In the Zoom tool, right mouse button always zooms out instead of calling the context menu (which is rather useless in this tool anyway).<br />
<br />
== Using other keys in place of Alt ==<br />
<br />
* 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 <code>mapalt</code> in the <code>options</code> 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 "Modifiers" when the mouse is held over a key on the main display.<br />
<br />
== GTK theme on OS X ==<br />
<br />
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 "Appearance" and "Highlight Color" set in System Preferences > Appearance.<br />
<br />
=Other changes and improvements=<br />
<br />
* '''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.<br />
<br />
* 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. <br />
<br />
* The somewhat cryptic "F:" and "S:" 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.<br />
<br />
* 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. "Style of new rectangles", "Style of new calligraphic strokes", etc.)<br />
<br />
* 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. <br />
<br />
* After dragging a curve segment in Node tool, Inkscape no longer selects the two adjacent nodes if they were not selected before. <br />
<br />
* 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. <br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.)<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* 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 <code>default.svg</code>, 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 > New submenu).<br />
<br />
* 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.<br />
<br />
* 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 "slideshow mode" of the main inkscape application (-s or --slideshow command line option) is removed; use inkview instead.<br />
<br />
* In Document Metadata dialog, updated '''Creative Commons Licenses''' to version '''3.0'''.<br />
<br />
* Preferences have been added for setting the default metadata and licenses, so this information can be automatically filled in with new documents.<br />
<br />
* The built-in '''Potrace''' tracing engine is upgraded to version '''1.8''' with some minor bugs fixed.<br />
<br />
* File dialog windows (open/save) now have an '''Enable preview''' checkbox which allows you to disable the preview pane.<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* The option '''Import bitmap as <image>''' 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 <image> element.<br />
<br />
* 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 & stroke dialog.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* Add some new '''UML markers''', including filled and hollow diamonds and triangles.<br />
<br />
* 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'''.<br />
<br />
=Notable bugfixes=<br />
<br />
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]].<br />
<br />
* The '''sodipodi:docbase''' attribute is no longer added to the root <svg> 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.<br />
<br />
* 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. <br />
<br />
* Inkscape now properly quotes <code>font-family</code> values and therefore can use '''fonts''' with various '''nonalphanumeric characters''' in their names, which previously failed. <br />
<br />
* 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.<br />
<br />
* 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).<br />
<br />
* 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).<br />
<br />
* '''Stock markers''' now appear in the "recently used markers" section of the marker selector dropdowns in the Fill & Stroke dialog. Before, any markers with stock id's (including markers modified by the user) were hidden, making it difficult to work with modified stock markers.<br />
<br />
* 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.<br />
<br />
* Previously, if there was a single '''invalid property''' in a <code>style</code> 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.<br />
<br />
* 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. <br />
<br />
* Master opacity did not apply to stroke '''markers''' as it should; fixed.<br />
<br />
* '''Creative Commons Public Domain Declaration URI''' points to the right location now.<br />
<br />
* Text objects didn't display the '''pattern editing handles'''; fixed.<br />
<br />
* 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.<br />
<br />
* Clones were wrongly unlinked when their original was moved to another layer; fixed.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* In Tile Clones dialog, the PMG symmetry group was created incorrectly, which is now fixed.<br />
<br />
= Previous releases =<br />
<br />
* [[ReleaseNotes045]]<br />
* [[ReleaseNotes044]]<br />
* [[ReleaseNotes043]]<br />
* [[ReleaseNotes042]]<br />
* [[ReleaseNotes041]]<br />
* [[ReleaseNotes040]]<br />
* [[ReleaseNotes039]]<br />
* [[ReleaseNotes038]]<br />
* [[ReleaseNotes037]]<br />
* [[ReleaseNotes036]]<br />
* [[ReleaseNotes035]]<br />
<br />
[[Category:Marketing]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.46&diff=18584Release notes/0.462008-01-16T10:25:30Z<p>Cilix: /* User interface */</p>
<hr />
<div>=Inkscape 0.46=<br />
'''(not released yet)'''<br />
<br />
Highlights in this release:<br />
<br />
* Paintbucket tool<br />
<br />
* Tweak tool<br />
<br />
* 3D Box tool<br />
<br />
* Live path effects<br />
<br />
* Color management<br />
<br />
* New SVG filters and UI<br />
<br />
* Native PDF and AI import<br />
<br />
* XAML import/export<br />
<br />
* Open Clip Art Library integration (import/export)<br />
<br />
* Stock patterns<br />
<br />
* Bitmap editing extension effects<br />
<br />
* Full on-canvas gradient editing<br />
<br />
* Engraver's Toolbox in the Calligraphic tool<br />
<br />
* Touch selection<br />
<br />
* Dockable dialogs<br />
<br />
* Command-line access to verbs<br />
<br />
* Snapping made usable<br />
<br />
* "3D" / axonometric grid<br />
<br />
* Angled guidelines<br />
<br />
* Conversion of objects to guidelines<br />
<br />
* Significant speed and interactivity improvements<br />
<br />
* Hundreds of smaller features and bugfixes<br />
<br />
=Speed and interactivity=<br />
<br />
* 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. <br />
<br />
* '''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.<br />
<br />
* '''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). <br />
<br />
:'''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. <br />
<br />
* Minor improvements have been made to gradient rendering performance.<br />
<br />
* '''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. <br />
<br />
* '''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. <br />
<br />
* '''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.<br />
<br />
* Several improvements make '''canvas panning and scrolling''' smoother and more interactive in complex slow-rendering documents:<br />
<br />
:* 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 "dirty" but the '''panning is smoother than before''', with few if any "hiccups".<br />
<br />
:* '''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.<br />
<br />
:* 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.<br />
<br />
:* 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. <br />
<br />
:* The default '''starting speed and acceleration''' of Ctrl+arrows scrolling are slightly increased. (They are both settable in Preferences.)<br />
<br />
* Better responsiveness and more visual feedback in user interface: <br />
<br />
:*When you zoom, the '''zoom control''' on the right end of the statusbar now updates immediately, not after screen redraw as before. <br />
<br />
:*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. "Saving document...") while they work. <br />
<br />
:*The '''statusbar messages''' displayed while you're drawing a shape or a path in Pen tool do not lag behind the mouse movements.<br />
<br />
* '''Combine''' and '''Convert to paths''' commands are now orders of magnitude faster when applied to a selection with hundreds or thousands of objects.<br />
<br />
* 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.<br />
<br />
=Tools=<br />
<br />
==Paint Bucket tool==<br />
<br />
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 "fills in" the area in which you clicked. <br />
<br />
===How it works===<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
It places the rendered path onto the current layer, so you can have a layer on top (for example, "Inks") and select the layer below ("Colors") and do the fills so that they always appear below the Inks.<br />
<br />
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).<br />
<br />
===Style===<br />
<br />
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.<br />
<br />
===Controls===<br />
<br />
In the tool's '''Controls bar''':<br />
<br />
* 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:<br />
** Red<br />
** Green<br />
** Blue<br />
** Hue<br />
** Saturation<br />
** Lightness<br />
** Alpha<br />
<br />
* 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%.<br />
<br />
* 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.<br />
<br />
* 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:<br />
** None<br />
** Small (close gaps up to 2 pixels in size)<br />
** Medium (4 pixels)<br />
** Large (6 pixels)<br />
:Note that setting this parameter to other than None may slow down noticeably the filling of large areas.<br />
<br />
===Shortcuts===<br />
<br />
The tool's '''shortcuts''' are:<br />
<br />
* '''Single click''' performs filling from the click point.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
==Tweak tool==<br />
<br />
The Tweak tool is an exciting new way to edit drawings which largely blurs the<br />
distinction between vector and raster editing. Instead of meticulously selecting some<br />
objects and then performing an action on the selection, you can now select ''all''<br />
objects (or all objects you are interested in) and apply the Tweak tool's brush to<br />
smoothly and naturally change the shape or style of only those objects (or parts<br />
thereof) ''that the brush touches''.<br />
<br />
The area of the tool's action - its ''brush'' - is marked by an orange-colored circular<br />
outline that moves with your mouse cursor. However, that area actually has no sharp<br />
boundaries; the power of the tool's action falls off gradually, following a smooth<br />
bell-shaped profile. This makes the tool act softly and smoothly.<br />
<br />
The tool will work on any number of selected objects; for example, you can select all<br />
(Ctrl+A) and "smear" your entire drawing by Push mode or paint it by Color Paint<br />
mode. You can also apply it to groups of objects; it will go into groups and act on<br />
individual objects inside groups. If you're trying to use it without anything selected,<br />
it will remind you by a statusbar message to select some objects.<br />
<br />
===Width===<br />
<br />
The width of the tool's brush, in the range from 1 to 100, can be changed by the<br />
'''Width''' control in the tool's controls bar above the canvas. You can also change<br />
width by '''Left''' and '''Right''' arrow keys (same as in the Calligraphy tool) at any<br />
time (including during action) as well as '''Home''' and '''End'''. Also, as in Calligraphy<br />
tool, the visible width of the brush is independent of zoom; simply zooming in or out is<br />
often easier than adjusting the width if you want to cover a smaller or larger area of<br />
the drawing.<br />
<br />
===Force===<br />
<br />
The next control is '''Force''' which adjusts the power of the action, also in the<br />
range from 1 to 100. You can also change width by '''Up''' and '''Down''' arrow keys at<br />
any time (including during action).<br />
<br />
If you have a pressure-sensitive tablet and your "Use pressure" button on the right-hand<br />
end of the controls bar is on, then the force will also depend on how hard you actually<br />
press your pen into your tablet, changing in the range from zero to whatever you set in<br />
the Force control. If all you have is a mouse, then the force will be constant but still<br />
settable by the Force control. <br />
<br />
===Path editing modes===<br />
<br />
The Tweak tool has a number of '''modes''', selectable by toggle buttons in the tool's<br />
Controls bar and by keyboard shortcuts. Some of these modes change the shapes of <br />
paths while others affect the colors of objects. All these modes share the Width and<br />
Force controls but otherwise are quite different. Let's look at the path editing modes<br />
first.<br />
<br />
Unlike the Node tool, to edit paths with the Tweak tool you don't need to worry about<br />
where the nodes of a path are and how to manipulate them. You just apply the tool's<br />
brush to any point, and the selected paths at that point will reshape smoothly and<br />
naturally - as if made of soft jelly - regardless of where its nodes lie. If applied to<br />
a shape or text object, the tool converts them to paths automatically.<br />
<br />
While not very useful for technical drawings, tweaking paths will be indispensable for<br />
artistic uses of Inkscape - cartoons, drawings, sketches, anime, etc. This new<br />
functionality is somewhat similar to the tools such as "Pucker" and "Bloat" in the<br />
latest versions of Adobe Illustrator. <br />
<br />
There are currently six path editing modes in the Tweak tool: '''Push''', '''Shrink''',<br />
'''Grow''', '''Attract''', '''Repel''', and '''Roughen'''.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
: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).<br />
<br />
: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 Inflating and carving holes with Melting. Unlike the "node sculpting" mode in the Node tool, however, this does not require adding new nodes to the shape.<br />
<br />
* 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 ; you can use them for various central-symmetric distortions in parts of your paths.<br />
<br />
* The '''Roughen''' mode does exactly this: roughens the edge of the path without changing its overall shape. Slight roughening simply makes the edge crooked and uneven; strong roughening tears and explodes the edge into random blobs and splotches. Note that this operation, especially with high Fidelity, adds a lot of nodes which increases the size of your SVG document and may slow down Inkscape considerably. In particular, pushing/melting/inflating 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.<br />
<br />
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.<br />
<br />
====Fidelity====<br />
<br />
Any tweaking of a path slightly distorts the entire path, including even those parts<br />
that you didn't touch. These distortions are similar to those that a Simplify command<br />
produces. The '''Fidelity''' value (also in the range from 1 to 100, default is 50)<br />
allows you to control the amount of these distortions. With a higher fidelity, the<br />
distortions are less noticeable, but the path may end up having a lot of nodes which<br />
inflates up the SVG size and slows down Inkscape.<br />
<br />
The best value of Fidelity depends on the nature of your artwork. If you're sculpting an<br />
amorphous blob, you can do with low fidelity of about 20. If, however, you are pushing<br />
or inflating a text string (as a single path) and want the letters outside the distorted<br />
area to remain crisp and clean, you will need to raise fidelity to 80 or more. <br />
<br />
====Known problems====<br />
<br />
Known problems with the path editing modes in Tweak tool:<br />
<br />
# they don't work on open paths (an open path becomes closed if you tweak it);<br />
# they are rather slow; <br />
# they quickly eat memory; and <br />
# they are sometimes buggy - thin calligraphic strokes may suddenly disappear or change their shape drastically as you're melting or inflating them.<br />
<br />
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. <br />
<br />
Also, sometimes after roughening, further tweaking of a path becomes impossible with this diagnostic:<br />
<br />
WARNING **: Shape error in ConvertToShape: directedEulerian(a) == false<br />
<br />
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.<br />
<br />
===Color editing modes===<br />
<br />
The '''Color Paint''' and '''Color Jitter''' modes, unlike the path editing modes,<br />
change the colors of objects instead of their shapes. Yet they share enough common<br />
features with the path editing modes to be part of the same tool: These modes also use<br />
a circular soft-edged brush controlled by the Width and Force parameters on the Controls<br />
bar and affected by the pen pressure (if you have a pressure-sensitive tablet).<br />
<br />
* '''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.)<br />
<br />
: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).<br />
<br />
: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.<br />
<br />
* '''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.<br />
<br />
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.)<br />
<br />
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.<br />
<br />
<br />
====Channels====<br />
<br />
Color Paint and Color Jitter honor the '''Channels''' control. This control comprises<br />
the four buttons: '''H''', '''S''', '''L''', and '''O''', which allow you to turn on and off<br />
the tool's action on the object's hue, saturation, lightness, and opacity,<br />
correspondingly. For example, if you want to raise the saturation of some part of your<br />
drawing without changing the hue, select some maximum-saturation color (e.g. pure red)<br />
and turn off all Channels buttons except S. Similarly, you can replace the hues without<br />
affecting saturation or lightness (only H pressed), or lighten/darken all colors without<br />
changing their hues and saturation (only L pressed). Pressing O allows you to apply the<br />
master opacity from the tool's style to the master opacity of objects (but not fill or<br />
stroke opacity).<br />
<br />
====Usage notes====<br />
<br />
Color painting with Tweak tool is similar, but not exactly analogous to bitmap<br />
painting. Even though the tool itself works as a soft brush, it still applies its color<br />
to vector objects, which behave as vector objects usually do. For example, if you want<br />
to change the tint of the face in your drawing, and if a hand in the drawing is part of<br />
the same object as the face, that hand will change its tint too even if it's located far<br />
from the point you are painting. (We foresee a "fracture" command in one of the next<br />
versions of Inkscape which will help you turn a monolithic object into a mosaic of small<br />
fragments that will be then easy to paint with Tweak tool.) Still, even with this<br />
limitation, color painting is a novel way of dealing with vector drawings which allows<br />
you to quickly and intuitively make adjustments which would be awkward and slow with<br />
traditional approach.<br />
<br />
Drawings containing patterns or scatterings of small independent objects are best suited<br />
for color painting with Tweak tool. Examples include:<br />
<br />
* freehand drawings with Calligraphy pen, consisting of many separate strokes;<br />
<br />
* 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);<br />
<br />
* text converted to paths and with Break Apart command applied so that each letter is a separate path;<br />
<br />
* 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.<br />
<br />
Moreover, color tweaking can be useful for compositions with a few objects or even for<br />
single objects. Unlike all other color selection methods, painting with the Tweak tool<br />
implements the ''color mixing'' metaphor which is much more familiar to traditional<br />
artists than RGB sliders or even the color wheel. For example, start with a rectagle of<br />
pure blue color; then, pick different colors by Color Paint and apply light touches with<br />
minimum Force and minimum pen pressure: add a little green, a little brown, a little<br />
yellow, etc. until you have the exact hue you need. Similarly, you can whiten or blacken<br />
any hue by admixing white or black.<br />
<br />
You can also use color tweaking to add a tint, darken/lighten, saturate/desaturate, or<br />
color jitter your entire drawing. Just select all in all layers, zoom out, choose a<br />
large brush width so it covers all of the drawing, and apply a little color tweaking<br />
(with minimum Force) that will therefore affect all visible objects.<br />
<br />
===Keyboard shortcuts===<br />
<br />
* '''W''', '''Shift+F2''': switch to the Tweak tool<br />
<br />
* '''Shift+P''': switch to the Push mode<br />
<br />
* '''Shift+S''': switch to the Shrink mode<br />
<br />
* '''Shift+G''': switch to the Grow mode<br />
<br />
* '''Shift+A''': switch to the Attract mode<br />
<br />
* '''Shift+E''': switch to the Repel mode<br />
<br />
* '''Shift+R''': switch to the Roughen mode<br />
<br />
* '''Shift+C''': switch to the Color Paint mode<br />
<br />
* '''Shift+J''': switch to the Color Jitter mode<br />
<br />
* '''Left, Right, Home, End''': change width<br />
<br />
* '''Up, Down''': change force<br />
<br />
* '''mouse drag''': act on selected path in the current mode<br />
<br />
* '''Ctrl+mouse drag''': temporarily switch to Shrink (while Ctrl is down)<br />
<br />
* '''Shift+Ctrl+mouse drag''': temporarily switch to Grow (while Shift+Ctrl is down)<br />
<br />
==3D Box tool==<br />
<br />
Inkscape is a two-dimensional drawing tool. However, very often it is used to draw three-dimensional objects. The new '''3D box tool''' helps you create such 3D drawings by automating the most common operation: creating a three-dimensional box in a given perspective. The tool automatically ensures that all sides of the box lie on the corresponding perspective lines. We're not going to compete with Blender - but even simple things can go a long way.<br />
<br />
Currently in the 3D box tool you can:<br />
<br />
* draw a 3D box by dragging on canvas (use Shift+dragging without releasing the mouse button to extrude in z direction)<br />
<br />
* adjust any of its 3 dimensions by handles<br />
<br />
* move a 3D box "in perspective" 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<br />
<br />
* adjust the vanishing points of a perspective by dragging them across the canvas (see below) or toggling their states; all boxes sharing this perspective are transformed accordingly<br />
<br />
In SVG, a 3D box is represented as a '''group''' (svg:g) with a special extension attribute (in inkscape namespace); this group contains the 6 quadrilateral '''paths''' representing the sides of the box. Only the 3D box tool treats this object as a box; for all other tools it is just a group, so you can select any of the paths by Ctrl+click, apply any style to it, delete it, etc. You can of course transform the entire box or any face in it using Selector or Node tools.<br />
<br />
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 "dragger". 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.<br />
<br />
===Keyboard shortcuts===<br />
<br />
* '''X''', '''Alt+F4''': switch to the 3D box tool<br />
<br />
* 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.<br />
<br />
* '''L''': toggle visibility of perspective lines<br />
<br />
* '''A''': when perspective lines are visible, toggle between "all lines" and "only lines connected to front corners" (this can help to avoid visual clutter)<br />
<br />
[max]<br />
<br />
==Gradient Tool==<br />
===Selecting multiple stops===<br />
'''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. <br />
* Add a stop to the selected stops by '''Shift+click'''.<br />
* Press '''Ctrl+A''' to select all stops in the selected objects.<br />
* '''Shift+drag''' around stops to add them to selection.<br />
Multiple selected stops:<br />
*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.<br />
*Can be deleted at the same time by pressing '''Del'''.<br />
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.<br />
<br />
===Editing intermediate stops===<br />
'''Intermediate stops''' in gradients can be added, deleted, and edited on canvas (previously this was only possible in the Gradient Editor dialog).<br />
*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.<br />
*When two or more adjacent stops are selected, pressing '''Ins''' adds stops in the middles of all selected stop intervals.<br />
*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). <br />
:*Dragging with '''Ctrl''' moves the selected stops snapping them to 1/10 fractions of the available range.<br />
:*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.<br />
*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).<br />
*Stops can be deleted by '''Ctrl+Alt+Click''' on a stop or by the '''Del''' key for all the selected stop(s).<br />
:*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).<br />
:*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 & opacity of the remaining stop.<br />
*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.<br />
<br />
===Style of gradient stops===<br />
*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&Stroke dialog. Previously, opacity of a gradient handle was reflected as fill-opacity and stroke-opacity; now it is reflected as '''master opacity''' (the "O:" spinbutton in the selected style indicator, the "Master opacity" slider in Fill&Stroke). This makes it much easier to view and change opacity of gradient handles using only the selected style indicator in the statusbar.<br />
:*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.<br />
*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''').<br />
*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 "L Gradient" or "R Gradient" text labels as before). Also, this and other similar widget now use italic font face to indicate <i>None</i> and bold to indicate <b>Unset</b>.<br />
<br />
===Automatic duplication of gradients===<br />
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. <br />
<br />
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.<br />
<br />
==Calligraphy tool: Engraver's Toolbox ==<br />
<br />
Several new features were added to the Calligraphic pen to make<br />
Inkscape capable of the ancient art of '''line<br />
engraving'''. Traditional engraving is a very labour-intensive<br />
process, and while for a long time it was the only practical way<br />
of reproducing lifelike images in black-and-white print, about a<br />
century ago it was almost completely displaced by automatic<br />
halftone screens. However, line engravings have their<br />
characteristic charm, and there's no reason not to try to<br />
resurrect this art form with the help of Inkscape.<br />
<br />
A brief visual guide to the new functionality can be seen on<br />
these screenshots:<br />
<br />
http://inkscape.org/screenshots/gallery/inkscape-0.46-engraving1.png<br />
<br />
http://inkscape.org/screenshots/gallery/inkscape-0.46-engraving2.png<br />
<br />
<br />
===Tracking a guide path with Ctrl===<br />
<br />
One of the most common operations in line engraving is<br />
'''hatching''' (or sometimes ''cross-hatching'' when several<br />
hatching grids cross): filling a space with many parallel<br />
straight or variously curved lines (usually of varying width to<br />
represent a gradual shading). You could try to achieve a similar<br />
effect with e.g. path interpolation (blending), but it is rather<br />
cumbersome and limited; manual drawing of hatch lines, on the<br />
other hand, is tedious and nearly impossible to do<br />
uniformly. Now Inkscape provides "assisted hatching" by<br />
'''tracking a guide path''', allowing you to hatch quickly and<br />
uniformly and at the same time giving you sufficient manual<br />
control over the process.<br />
<br />
Here's how to do this. First, select the '''guide path''' that<br />
you will track. It may be another calligraphic stroke, any path<br />
or shape, or even a letter of a text object. Then switch to<br />
Calligraphic pen, select the desired parameters (line width,<br />
angle, fixation etc.) and, before starting to draw, press<br />
Ctrl. You will see a gray '''track circle''' centered at your<br />
mouse pointer and touching the closest point on the selected<br />
guide path. (If you have no guide path selected, a statusbar<br />
message will tell you to select it.)<br />
<br />
Now move your mouse close to the guide path, so that the track<br />
circle radius is equal to the desired spacing of your hatch<br />
pattern, and start drawing along the guide path. At that moment,<br />
the radius of the circle gets locked; now the circle slides<br />
along the guide path - and the actual stroke is drawn by the<br />
center of the tracking circle, ''not'' by your mouse point. As<br />
a result, you are getting a smooth stroke going parallel to the<br />
guide path and always at the same distance from it.<br />
<br />
When the stroke is ready, release your mouse button (or lift<br />
your tablet pen) but '''do not let go of the Ctrl key''' because<br />
as long as you have it pressed, the tool remembers the hatch<br />
spacing you set when you started drawing. Now, you have just<br />
created a new stroke and, as usual with Inkscape tools, it gets<br />
selected instead of what was selected before. In our case, this<br />
means that the newly drawn stroke itself becomes the new guide<br />
path. Next, you can draw a second stroke along the first one,<br />
then a third one along the second, etc. Eventually you can fill<br />
any desired space with uniform hatching.<br />
<br />
Alternatively, if you uncheck "Select new path" 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. <br />
<br />
The attachment to the guide path is not absolute. If you stray<br />
your mouse pointer far enough from the guide path, you will be<br />
able to tear it off (the track circle turns from green to red)<br />
and move freely. This is intentional; this feature allows you,<br />
for example, to continue drawing a stroke past the end of a<br />
guide stroke, thus making your hatching cover a wider area than<br />
the initial guide path. Special care is taken to make such<br />
tearing off as smooth as possible and to suppress violent jerks,<br />
but this is not always possible; the general advice is to not<br />
try to hatch too fast. If jerking and unintended tearoffs still<br />
bother you, try increasing the Mass parameter.<br />
<br />
Also, special code is in place to prevent flipovers - accidental<br />
jumps to the other side of the guide path. Brief flipovers are<br />
suppressed, but if you intentionally go over to the other side<br />
and stay there, eventually Inkscape will obey and your tracking<br />
stroke will also flip over to follow you.<br />
<br />
Tracking a guide also allows some slight feedback by gradually<br />
changing the tracking distance in response to your drawing<br />
behavior. Thus, if you're consistently trying to draw closer or<br />
farther from the guide than the current tracking distance, the<br />
distance will correspondingly decrease or increase, so you will<br />
get a hatching that is slightly spacing in or out. (The effect<br />
is very slight, however, so as not to become a nuisance.) Also,<br />
note that since tracking follows the edge of the stroke, strokes<br />
of varying width (such as those tracing background, see below)<br />
will result in gradual bending of the hatching pattern as you<br />
proceed.<br />
<br />
===Tracing background by stroke width===<br />
<br />
There is a new toggle button on the Calligraphy tool's controls<br />
bar, '''Trace background'''. When on, the width of your pen<br />
depends on the lightness of the background under the stroke in<br />
each point, so that white translates into the minimum stoke<br />
width (1) and black translates to the maximum (which is set by the<br />
Width parameter). This can work alone or in combination with<br />
pressure sensitivity, depending on whether the "Use pressure" button<br />
is also toggled.<br />
<br />
This feature allows you to not only hatch over an imported<br />
bitmap image or any drawing, but to do so automatically<br />
reproducing the highlights and shades of the background with<br />
your strokes becoming lighter and heavier as needed.<br />
<br />
===Misc features===<br />
<br />
* 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. <br />
<br />
* 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.)<br />
<br />
==Selector==<br />
<br />
* 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. <br />
<br />
: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.<br />
<br />
* 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.<br />
<br />
* Draging the '''scale handles with Alt''' now scales selection by an integer factor, i.e. up to '''2''', '''3''', '''4''', etc. times the original size or down to '''1/2'''. '''1/3''', '''1/4''', etc. of the original size (in any of the two dimensions independently). This way you can, for example, mirror any object around one of the edges of its box. (This replaces the old and rarely used "slow" scaling mode with Alt.)<br />
<br />
* '''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.<br />
<br />
* '''Objects to Marker''' was added to the objects menu, which converts the current selection to a marker, with the center point of the selection being set to the center of the marker.<br />
<br />
==Node tool==<br />
<br />
* 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 ('<' and '>' 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.<br />
<br />
* [helper path display - johan]<br />
** this is deactivated for normal paths now. only paths with LPE applied will show it. should there be a button to turn it on for normal paths aswell?<br />
<br />
* As a long-requested feature, two entry fields are added to the toolbar which allow precise editing of the coordinates of selected nodes.<br />
<br />
==Rectangle Tool==<br />
<br />
* '''Ctrl+dragging''' now also allows the creation of rectangles with sides constrained to the '''golden ratio''' (approx. 1 : 1.618034), not only integer ratios.<br />
<br />
==Ellipse Tool==<br />
<br />
* 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.<br />
<br />
* '''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.<br />
<br />
==Text tool==<br />
* [text toolbar - deadchip?]<br />
* If text contains a tref element, the text tool's behavior may not be as expected. Please see [[#The tref Element]]<br />
<br />
==Dropper Tool==<br />
<br />
The shortcut 'D' is now used to <i>toggle</i> (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.<br />
<br />
=SVG features=<br />
<br />
==The tref element==<br />
<br />
Inkscape can now correctly open files with '''tref''' elements, and new tref elements can be created manually in the XML editor.<br />
<br />
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'''.<br />
<br />
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'''.<br />
<br />
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.<br />
<br />
Existing tref elements can be converted into tspan elements with '''Edit > Clone > 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'''.<br />
<br />
A '''tref''' element can be mixed with any other elements allowed to be contained by a text element.<br />
<br />
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'''.<br />
<br />
==SVG filters==<br />
<br />
===New filters supported===<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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]<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
See also wiki page [[Filter Effects]] for more info on filters in Inkscape in general.<br />
<br />
===Filters UI===<br />
<br />
* New dialog for creating and modifying filter effects ('''Object>Filter Effects...''')<br />
* The list at the left of the dialog displays all filters currently in the document.<br />
** New filters can be added with the '''Add''' button beneath the list<br />
** Right-clicking a filter for the pop-up menu allows duplicating or removing a filter.<br />
** Double-clicking a filter will apply it to all selected objects<br />
** 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.<br />
* The second list, at the left of the dialog, displays the '''filter primitives''' that are contained within the currently-selected filter.<br />
** New primitives can be added by selecting the primitive type from the combo box beneath the list, and then pressing the '''Add''' button.<br />
** Right-clicking a primitive for the pop-up menu allows duplicating or removing a primitive.<br />
** Primitives can be rearranged by clicking and dragging any filter in the list.<br />
** 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.<br />
** The "in" and "in2" 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.<br />
*** 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.<br />
*** 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.<br />
*** 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.<br />
*** 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.<br />
*** Merge inputs have an empty input at the end. Dragging a connection from this input will add a new input to the primitive.<br />
<br />
=Live Path Effects (LPE)=<br />
<br />
'''Live path effects''' (not to be confused with extension effects or SVG filters) are a new way to <b>non-destructively modify path and shape objects</b>. 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. <br />
<br />
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.<br />
<br />
Live path effects were developed by Johan Engelen as part of the GSoC 2007.<br />
<br />
==Details about operation==<br />
The following schematic tries to explain how LPE work.<br />
<br />
original style ------------> output style<br />
original path --> LPE --> output path<br />
^<br />
|<br />
parameters<br />
<br />
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 <b>output style equals original style</b>.<br />
<br />
The parameters can be paths, numbers, points, text, in principle anything.<br />
<br />
<br />
==Applying effects==<br />
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.<br />
<br />
When a path with a path effect applied is selected, the statusbar description mentions that, for example "'''Path''' (4 nodes, path effect)".<br />
<br />
There is a special Paste Path Effect command (Ctrl+7) that can be used to copy effects from one path to another.<br />
<br />
==Editing effect parameters==<br />
When switching to the node edit tool (<b>F2</b>), the <b>original path</b> can be edited. The original path is shown as a red helper path. Normal path operations, like simplify, still work.<br />
<br />
Some parameters of effects can be edited on-canvas. For example, path parameters can be node-edited, by pressing the "edit on-canvas" button in the Path Effects dialog. <b>Press "7" to cycle through the different on-canvas editable parameters.</b> 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.<br />
<br />
==Available effects==<br />
<br />
===Path along path===<br />
The <b>Path along Path</b> 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 <b>on-canvas</b> and the result is <b>updated live</b>. This provides a direct equivalent of "vector brushes" or "skeletal strokes" features in other vector editors. <br />
<br />
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'.<br />
<br />
Example file: live-path-effects-pathalongpath.svg<br />
<br />
===Pattern along path===<br />
The <b>Pattern along Path</b> 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 <b>on-canvas</b> and the result is <b>updated live</b>. This provides a direct equivalent of "vector brushes" or "skeletal strokes" features in other vector editors. <br />
<br />
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.<br />
<br />
Example file: live-path-effects-pathalongpath.svg<br />
<br />
===Stitch Subcurves===<br />
The <b>Stitch Subcurves</b> effect connects points from two subpaths of the path with straight line or curved segments, i.e. the <i>stitches</i>. It looks a lot like the Effect Lines from Expression 3. The result is also referred to as "String Art". For some examples of string art, see http://members.shaw.ca/jillbritton/string_art/jbstringart.htm. <br />
<br />
The <b>shape</b> of the <b>connecting paths</b> can controlled by the <b>stroke path</b> parameter. This could be used to draw 'hair-shaped' connecting paths with sharp end-tips. Other controls include the <b>number of paths</b>, the variation in spacing between the connecting paths (<b>clustering</b>) and also whether the start and end points of the stitches should like exactly on the original subcurves or can <b>stray randomly</b> around them. Finally the width of the stroke path can be varied.<br />
<br />
Note that this effect can only be applied to a path with two subpaths in it, hence '<b>sub</b>curve' in the name. Use Path > Combine to create such a path from two separate paths.<br />
<br />
Example file: live-path-effects-curvestitch.svg<br />
<br />
Example file showing cooperation between Stitch Subcurves and Path along Path: live-path-effects-curvestitch-hair.svg<br />
<br />
===Gears===<br />
The <b>Gears</b> 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. <br />
<br />
Example file: live-path-effects-gears.svg<br />
<br />
==Development of new effects==<br />
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!<br />
<br />
[johan]<br />
<br />
=Extension effects=<br />
<br />
== Live preview ==<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''Progress dialog''': While an extension is working on a document, a small dialog is shown allowing the user to cancel the execution.<br />
<br />
== New and improved effects ==<br />
<br />
* The new '''Modify Path > Edge 3D''' extension creates black, grey and white paths around a shape, then blurs and clips them for a 3D effect.<br />
<br />
* The new '''Render > 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. <br />
<br />
* The new '''Render > 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.<br />
<br />
* The new '''Render > [[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]).<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* 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.<br />
<br />
*The new '''Color > 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.<br />
<br />
*The '''Whirl''' extension uses the center of view as the center of whirl, so you don't have to enter the center coordinates numerically.<br />
<br />
*The '''Render > Grid''' extension has got an extended range of grid spacings, from 0.1 to 1000 px.<br />
<br />
*The '''Render > Function Plotter''' extension can now plot using polar coordinates.<br />
<br />
*The '''Generate Template > 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.<br />
<br />
== XSLT effects ==<br />
<br />
* '''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.<br />
<br />
== ImageMagick effects ==<br />
<br />
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. <br />
<br />
* '''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.<br />
<br />
* '''Add Noise''' adds random noise of certain types to the bitmap.<br />
<br />
* '''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.)<br />
<br />
* '''Channel''' extracts the specified channel from the bitmap.<br />
<br />
* '''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.<br />
<br />
* '''Colorize''' overlays the bitmap with a given color at a given intensity.<br />
<br />
* '''Contrast''' lightly enhances the contrast (difference between lights and darks) of a bitmap.<br />
<br />
* '''Cycle Colormap''' cycles the colormap of a bitmap.<br />
<br />
* '''Despeckle''' reduce the speckle noise in a bitmap.<br />
<br />
* '''Edge''' hilights edges in a bitmap.<br />
<br />
* '''Emboss''' embosses a bitmap, hilighting edges with 3D effect.<br />
<br />
* '''Enhance''' enhance a bitmap, minimizing noise.<br />
<br />
* '''Equalize''' equalizes a bitmap. Histogram equalization.<br />
<br />
* '''Flop''' mirrors a bitmap, reflecting each scanline in the horizontal direction.<br />
<br />
* '''Gaussian Blur''' blurs a bitmap, more strongly than regular blur.<br />
<br />
* '''Implode''' sucks everything towards the center of the bitmap.<br />
<br />
* '''Level''' scales values falling between the given '''Black Point''' to '''White Point''' range to the full color range.<br />
<br />
* '''Level Channel''' acts the same way as level but for only one channel.<br />
<br />
* '''Median Filter''' filters a a bitmap by replacing each pixel component with the median color in a circular neighborhood<br />
<br />
* '''Modulate''' adjusts the percent hue, saturation, and brightness of a bitmap.<br />
<br />
* '''Negate''' takes the inverse of a bitmap.<br />
<br />
* '''Normalize''' normalizes a bitmap, expanding color range to the full possible range of color.<br />
<br />
* '''Oil Paint''' stylizes a bitmap so that it appears to be painted with oils.<br />
<br />
* '''Opacity''' modifies the opacity channel of a bitmap.<br />
<br />
* '''Raise''' alters the lightness of the edges of a bitmap to create a raised appearance, much like a frame.<br />
<br />
* '''Reduce Noise''' reduces noise in a bitmap by using a noise peak elimination filter.<br />
<br />
* '''Shade''' shades a bitmap by simulating a distant light source<br />
<br />
* '''Sharpen''' sharpens a bitmap.<br />
<br />
* '''Solarize''' solarizes a bitmap, like overexposing photographic film.<br />
<br />
* '''Spread''' randomly spread pixels in a bitmap within the radius of '''amount'''.<br />
<br />
* '''Swirl''' swirls the bitmap around the center point.<br />
<br />
* '''Threshold''' thresholds a bitmap.<br />
<br />
* '''Unsharpmask''' sharpens a bitmap using an unsharp mask algorithm.<br />
<br />
* '''Wave''' alters a bitmap along the sine wave.<br />
<br />
These effects are part of the Google Summer of Code 2007, coded by Christopher Brown.<br />
<br />
== Misc ==<br />
<br />
* All Python effects are switched from the old and unmaintained PyXML library to the new powerful [http://codespeak.net/lxml/ lxml] library.<br />
<br />
* 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.<br />
<br />
= Stock patterns =<br />
<br />
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&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:<br />
<br />
*A selection of plain '''stripes''' differing by the ratio of the stripe width to gap width (for example, the "Stripes 1:2" 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).<br />
<br />
*Two '''checkerboard''' patterns with black and white odd squares (even squares are transparent)<br />
<br />
*'''Packed circles''': a hexagonal pattern of black circles with transparent gaps.<br />
<br />
*'''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).<br />
<br />
*'''Wavy''' is a pattern of wavy lines.<br />
<br />
*'''Camouflage''' is a green-toned protective pattern such as that used by the military.<br />
<br />
*'''Ermine''' is the traditional heraldic pattern representing stylized stoat furs with black tails.<br />
<br />
*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 "texturize" them. <br />
<br />
After applying a stock pattern, switch to Node tool to edit the location, scale, and rotation of the pattern via on-canvas handles.<br />
<br />
All stock patterns are stored in the file <code>patterns/patterns.svg</code> in Inkscape's <code>share</code> directory (typically <code>/usr/share/inkscape</code> on Linux, <code><i>inkscape-dir</i>/share</code> on Windows). You can add your own patterns to this file or replace it with any other SVG file containing the patterns you need.<br />
<br />
=Color management=<br />
<br />
== Calibrated SVG color including CMYK ==<br />
<br />
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<br />
optional "icc-color(...)" paint components as described in section 11.2 "Specifying paint" of the SVG 1.1 specification<br />
[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.<br />
<br />
The new CMS color selector tab allows these colors to be edited.<br />
<br />
== Display adjustment ==<br />
<br />
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.<br />
<br />
=== Per-window adjustment ===<br />
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.<br />
<br />
=== XICC Support ===<br />
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.<br />
<br />
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.<br />
<br />
=== Multi-monitor aware ===<br />
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.<br />
<br />
== Soft Proofing ==<br />
<br />
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.<br />
<br />
=Snapping=<br />
<br />
* Snapping has been implemented or improved for:<br />
<br />
:* '''Newly created shapes'''<br />
<br />
:* '''Skewing''' of objects<br />
<br />
:* '''Handles''' of objects, incl. '''gradients'''<br />
<br />
:* '''Images''', '''ellipses''', and '''clones'''<br />
<br />
:* Text boxes, which snap to '''text baselines''' again<br />
<br />
:* Objects, for which snapping now optionally considers the '''rotation center'''<br />
<br />
:* Objects, which now allow for '''constrained snapping'''<br />
<br />
:* '''Guides''', which now snap while dragging them<br />
<br />
:* '''Axonometric grids'''<br />
<br />
:* '''Angled guide lines'''<br />
<br />
:* '''Bounding boxes''', of which now all four corners snap<br />
<br />
<br />
<br />
* Other snapping fixes and improvements include:<br />
<br />
:* It is now possible to snap to '''intersections''' of e.g. gridlines with guidelines, and of line segments. <br />
<br />
:* The '''snapping preferences dialog''' has been restyled to make it more intuitive. <br />
<br />
:* Inkscape now has a global snapping toggle, which has been added to the view-menu and is accessible through a shortcut<br />
<br />
:* Inkscape now allows for controlling the snapping per grid when multiple grids are being used<br />
<br />
:* Snapping distance is now set in screen pixels and is therefore '''independent of zoom'''. <br />
<br />
:* Snapping of objects has been made more clean, by only snapping '''bounding box corners to bounding boxes''', and '''nodes to other nodes and paths'''.<br />
<br />
:* The time it takes to snap to objects using the selector tool has been reduced significantly.<br />
<br />
:* The bug where "node-to-node" snapping caused jerky movement of nodes is fixed.<br />
<br />
:* The '''aspect ratio''' is correctly preserved while scaling objects with snapping turned on.<br />
<br />
:* Only nodes at '''non-smooth parts''' of a path now snap.<br />
<br />
:* The confusing "Default transformations origin" 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).<br />
<br />
:* 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).<br />
<br />
=Grids=<br />
Grids have undergone some big changes under-the-hood. These are the visible changes:<br />
* There is a <b>new 3D/axonometric grid</b>!<br />
* A new tab in the document properties dialog, solely meant for grids; the former grid/guide tab is now solely for guides. I envision a list of guides there in the future, for easier deletion of guides etc.<br />
* More than one grid can be active at the same time<br />
** Each grid can be enabled/disabled separately from the document properties dialog.<br />
* One can make grids invisible by unchecking the "Visible" checkbox in the grid's tab in the document properties dialog. Snapping is still enabled even for invisible grids!<br />
* Multiple views on the same document share the same grids, but the grid can be turned off for each view separately. For example: one could have an overview view without 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. (sorry i am not able to explain more clearly, perhaps someone else can?)<br />
* Grid information is now stored in SVG as a child of sodipodi:namedview. Old files will be converted to this new format automatically<br />
* The rectangular grid now has an option to show dots on gridline intersections instead of solid lines<br />
<br />
From developer perspective:<br />
<br />
* Implementation of new grids is much easier now; subclassing CanvasGrid and adding an entry in the is enough. Have a peek at how the rectangular grid is implemented (CanvasXYGrid).<br />
* Note that there is no longer "the grid", there might be several grids active now!<br />
<br />
A side effect of removal of old gridcode: apparantly the origin of the desktop rules used to be set to the origin of the grid. I find this strange: specifying a grid origin of (2,2) would have me think the origin would be at ruler location (2,2) instead of (0,0) as it is in 0.45.1.<br />
I have commented the grid-origin correction to the ruler range, because now there is not a single grid anymore to correct it for. Isn't there a control somewhere to define the documents origin? Now the ruler origin is set to (0,0)<br />
<br />
--johan<br />
<br />
=Angled guidelines=<br />
<br />
Now, Inkscape also provides angled guidelines! Double click on a guide to set its angle.<br />
<br />
* When dragging a guideline off the rulers close to the edge, the guideline will automatically be angled. The angle is set depending on the grid.<br />
** For the rectangular grid, the angle is 45 degrees.<br />
** For the axonometric grid, the angle is matched to the grid. When the Ctrl-key is pressed, the angle is perpendicular to the grid lines (useful for aligning gradients).<br />
<br />
=Creating guidelines from objects=<br />
<br />
* Selected objects can now be converted to guidelines. To do this, either use the menu command '''"Object->Object to guides"''' 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.<br />
<br />
* '''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.<br />
<br />
* For all other objects, conversion usually happens by placing the guidelines around the object's bounding box (use the corresponding checkbox in the "Tools" page of Inkscape Preferences to switch between geometric and visual bounding box).<br />
<br />
*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.<br />
<br />
=Import/Export=<br />
<br />
==PDF and AI import==<br />
<br />
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). <br />
<br />
'''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. <br />
<br />
'''PDF import settings''': After opening a PDF or AI document, the PDF Import Settings dialog shows up. Here you can select:<br />
<br />
* the '''page''' to be imported from a multipage PDF;<br />
<br />
* 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.);<br />
<br />
* 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;<br />
<br />
* a checkbox controlling whether the '''images''' should be '''embedded''' into the resulting SVG document or saved on the current path;<br />
<br />
* 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).<br />
<br />
'''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.)<br />
<br />
To work around this, select the text object you want to edit and use '''Text > 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. <br />
<br />
Note that there is a way to select even a single line in a text block. For this, open the XML editor, expand the <svg:text> tree branch corresponding to your text, and select any of the <svg:tspan> 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+> or Alt+<).<br />
<br />
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.<br />
<br />
==PDF export==<br />
<br />
* A new cairo-based PDF exporter has been added to Inkscape (marked as "Cairo PDF" in the export format list). Inkscape 0.46 can export shapes, strokes, transparency, gradients, patterns, text, and images correctly to cairo. While clipping paths and masks are known to be faulty or missing. 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.<br />
<br />
* A new cairo-based PostScript exporter has been added (marked as "Cairo PS" 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.<br />
<br />
==CDR (CorelDraw) import==<br />
<br />
Inkscape can use [http://www.sk1project.org/modules.php?name=Products&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 (since UniConvertor is Unix-only) and requires that you have Python and UniConvertor installed. As of UniConvertor 1.0rc2, only versions from 7 to X3 of the CDR format are supported, and text objects are not converted. <br />
<br />
==XAML import/export==<br />
<br />
* Inkscape can import vector graphics portions of XAML documents, as well as export its documents to XAML.<br />
<br />
==Adobe Illustrator SVG clean import==<br />
<br />
* 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.<br />
<br />
==Bitmap export==<br />
<br />
* '''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.<br />
<br />
: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 "export" layer. In that layer, "slice" 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 "export" layer, select all in that layer (Ctrl+A), and export with the ''Batch export selected objects'' checkbox on.<br />
<br />
* '''Hide all except selected''': A new checkbox allows you to hide in the exported image everything except selected object(s).<br />
<br />
* The Export dialog automatically appends the '''.png''' extension to the export filename you specify.<br />
<br />
== Open Clip Art Library import and export ==<br />
<br />
{rejon}<br />
<br />
=Command line=<br />
<br />
Several new command line options are added that make Inkscape even more scriptable and automatable than before.<br />
<br />
* --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.<br />
<br />
* --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.<br />
<br />
* --select followed by a node ID will allow you to add a node to the list of selected objects.<br />
<br />
* --query-all produces a comma delimited listing of all objects in the document, with their x, y, height, and width values.<br />
<br />
These options can be used, for example, for performance testing. You could do something like this:<br />
<br />
$ time inkscape --verb=FileClose my_complex_file.svg<br />
<br />
to measure the time it takes to load and display the file.<br />
<br />
Of course, with the ability to select objects, it can be much more useful than<br />
that. You can call extension effects, or any other verb, then FileSave and<br />
FileClose to automate all kinds of operations on your drawings.<br />
<br />
=User interface=<br />
<br />
== [dockable dialogs - gustav] ==<br />
<br />
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.<br />
<br />
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&mdash;this allows other dialogs to be dragged and dropped on it to form a floating group of dialogs.<br />
<br />
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'' > ''Dialog behavior'' in the Inkscape preferences dialog.<br />
<br />
Known issues:<br />
<br />
* Some of Inkscape's dialogs are yet to be adapted to allow docking, these include the "Text and Font" dialog, the "Tiled clones" dialog, the "XML editor" and the "Object properties" dialog.<br />
<br />
* [Remembered positions of dockable floating dialogs is inexact.] <br />
<br />
[options]<br />
<br />
== [toolbars - [[JonCruz]]] ==<br />
<br />
'''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.<br />
<br />
[calligraphy: menus, tooltips; star; ...]<br />
<br />
Switched to stock GTK+ toolbars.<br />
<br />
Extra magic secret sauce added.<br />
<br />
== [filedialogs - [[JonCruz]]] ==<br />
<br />
== Swatches panel, color drag-and-drop ==<br />
<br />
* Right-clicking a color swatch now opens a context menu which allows you to apply the color to the fill or stroke of selection.<br />
<br />
* Dragging colors from the color palette has been fixed and improved:<br />
<br />
:* 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.)<br />
<br />
:* 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.)<br />
<br />
:* 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.<br />
<br />
==Color gestures==<br />
<br />
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 "None", "N/A", 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.<br />
<br />
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'''.<br />
<br />
The adjustment is done by '''"rotating"''' the color swatch away from the original direction which is assumed to be '''NE at 45 degrees''' (i.e. from<br />
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.<br />
<br />
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.<br />
<br />
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. <br />
<br />
You can '''switch channels while you drag'''. That is, you don't need to <br />
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.<br />
<br />
The '''Alt''' modifier is special. Pressing Alt means "do nothing"; 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.<br />
<br />
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.<br />
<br />
Apart from precise adjustments, you can use color gestures to very quickly perform some common color transformations:<br />
<br />
* Ctrl+drag the swatch to the right and down to paint all selected objects black.<br />
<br />
* Ctrl+drag the swatch upwards and to the left to paint all selected objects white.<br />
<br />
* Shift+drag the swatch to the right and down to desaturate the color of selected objects.<br />
<br />
* Shift+drag the swatch upwards and to the left to maximize saturation of the color of selected objects. <br />
<br />
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.<br />
<br />
This new technique requires some getting used to, but once you get the idea it is quite convenient, fast, and precise.<br />
<br />
== Print dialog integration == <br />
<br />
* '''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.<br />
<br />
== Saving window geometry globally ==<br />
<br />
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 "Save geometry to preferences" 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).<br />
<br />
== Preserving zoom/view of reverted documents ==<br />
<br />
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.<br />
<br />
== Bounding box option moved ==<br />
<br />
The preferences option to select between "visual" and "geometric" bounding box was moved in Inkscape Preferences dialog from the "Selector" page to "Tools" page (since it applies more globally than just in Selector tool).<br />
<br />
== New ways to scroll and zoom ==<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* In the Zoom tool, right mouse button always zooms out instead of calling the context menu (which is rather useless in this tool anyway).<br />
<br />
== Using other keys in place of Alt ==<br />
<br />
* 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 <code>mapalt</code> in the <code>options</code> 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 "Modifiers" when the mouse is held over a key on the main display.<br />
<br />
== GTK theme on OS X ==<br />
<br />
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 "Appearance" and "Highlight Color" set in System Preferences > Appearance.<br />
<br />
=Other changes and improvements=<br />
<br />
* '''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.<br />
<br />
* 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. <br />
<br />
* The somewhat cryptic "F:" and "S:" 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.<br />
<br />
* 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. "Style of new rectangles", "Style of new calligraphic strokes", etc.)<br />
<br />
* 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. <br />
<br />
* After dragging a curve segment in Node tool, Inkscape no longer selects the two adjacent nodes if they were not selected before. <br />
<br />
* 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. <br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.)<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* 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 <code>default.svg</code>, 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 > New submenu).<br />
<br />
* 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.<br />
<br />
* 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 "slideshow mode" of the main inkscape application (-s or --slideshow command line option) is removed; use inkview instead.<br />
<br />
* In Document Metadata dialog, updated '''Creative Commons Licenses''' to version '''3.0'''.<br />
<br />
* Preferences have been added for setting the default metadata and licenses, so this information can be automatically filled in with new documents.<br />
<br />
* The built-in '''Potrace''' tracing engine is upgraded to version '''1.8''' with some minor bugs fixed.<br />
<br />
* File dialog windows (open/save) now have an '''Enable preview''' checkbox which allows you to disable the preview pane.<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* The option '''Import bitmap as <image>''' 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 <image> element.<br />
<br />
* 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 & stroke dialog.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* Add some new '''UML markers''', including filled and hollow diamonds and triangles.<br />
<br />
* 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'''.<br />
<br />
=Notable bugfixes=<br />
<br />
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]].<br />
<br />
* The '''sodipodi:docbase''' attribute is no longer added to the root <svg> 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.<br />
<br />
* 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. <br />
<br />
* Inkscape now properly quotes <code>font-family</code> values and therefore can use '''fonts''' with various '''nonalphanumeric characters''' in their names, which previously failed. <br />
<br />
* 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.<br />
<br />
* 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).<br />
<br />
* 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).<br />
<br />
* '''Stock markers''' now appear in the "recently used markers" section of the marker selector dropdowns in the Fill & Stroke dialog. Before, any markers with stock id's (including markers modified by the user) were hidden, making it difficult to work with modified stock markers.<br />
<br />
* 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.<br />
<br />
* Previously, if there was a single '''invalid property''' in a <code>style</code> 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.<br />
<br />
* 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. <br />
<br />
* Master opacity did not apply to stroke '''markers''' as it should; fixed.<br />
<br />
* '''Creative Commons Public Domain Declaration URI''' points to the right location now.<br />
<br />
* Text objects didn't display the '''pattern editing handles'''; fixed.<br />
<br />
* 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.<br />
<br />
* Clones were wrongly unlinked when their original was moved to another layer; fixed.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* In Tile Clones dialog, the PMG symmetry group was created incorrectly, which is now fixed.<br />
<br />
= Previous releases =<br />
<br />
* [[ReleaseNotes045]]<br />
* [[ReleaseNotes044]]<br />
* [[ReleaseNotes043]]<br />
* [[ReleaseNotes042]]<br />
* [[ReleaseNotes041]]<br />
* [[ReleaseNotes040]]<br />
* [[ReleaseNotes039]]<br />
* [[ReleaseNotes038]]<br />
* [[ReleaseNotes037]]<br />
* [[ReleaseNotes036]]<br />
* [[ReleaseNotes035]]<br />
<br />
[[Category:Marketing]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.46&diff=18579Release notes/0.462008-01-16T10:19:52Z<p>Cilix: /* Converting objects to guidelines */</p>
<hr />
<div>=Inkscape 0.46=<br />
'''(not released yet)'''<br />
<br />
Highlights in this release:<br />
<br />
* Paintbucket tool<br />
<br />
* Tweak tool<br />
<br />
* 3D Box tool<br />
<br />
* Live path effects<br />
<br />
* Color management<br />
<br />
* New SVG filters and UI<br />
<br />
* Native PDF and AI import<br />
<br />
* XAML import/export<br />
<br />
* Open Clip Art Library integration (import/export)<br />
<br />
* Stock patterns<br />
<br />
* Bitmap editing extension effects<br />
<br />
* Full on-canvas gradient editing<br />
<br />
* Engraver's Toolbox in the Calligraphic tool<br />
<br />
* Touch selection<br />
<br />
* Dockable dialogs<br />
<br />
* Command-line access to verbs<br />
<br />
* Snapping made usable<br />
<br />
* "3D" / axonometric grid<br />
<br />
* Angled guidelines<br />
<br />
* Conversion of objects to guidelines<br />
<br />
* Significant speed and interactivity improvements<br />
<br />
* Hundreds of smaller features and bugfixes<br />
<br />
=Speed and interactivity=<br />
<br />
* 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. <br />
<br />
* '''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.<br />
<br />
* '''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). <br />
<br />
:'''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. <br />
<br />
* Minor improvements have been made to gradient rendering performance.<br />
<br />
* '''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. <br />
<br />
* '''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. <br />
<br />
* '''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.<br />
<br />
* Several improvements make '''canvas panning and scrolling''' smoother and more interactive in complex slow-rendering documents:<br />
<br />
:* 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 "dirty" but the '''panning is smoother than before''', with few if any "hiccups".<br />
<br />
:* '''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.<br />
<br />
:* 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.<br />
<br />
:* 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. <br />
<br />
:* The default '''starting speed and acceleration''' of Ctrl+arrows scrolling are slightly increased. (They are both settable in Preferences.)<br />
<br />
* Better responsiveness and more visual feedback in user interface: <br />
<br />
:*When you zoom, the '''zoom control''' on the right end of the statusbar now updates immediately, not after screen redraw as before. <br />
<br />
:*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. "Saving document...") while they work. <br />
<br />
:*The '''statusbar messages''' displayed while you're drawing a shape or a path in Pen tool do not lag behind the mouse movements.<br />
<br />
* '''Combine''' and '''Convert to paths''' commands are now orders of magnitude faster when applied to a selection with hundreds or thousands of objects.<br />
<br />
* 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.<br />
<br />
=Tools=<br />
<br />
==Paint Bucket tool==<br />
<br />
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 "fills in" the area in which you clicked. <br />
<br />
===How it works===<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
It places the rendered path onto the current layer, so you can have a layer on top (for example, "Inks") and select the layer below ("Colors") and do the fills so that they always appear below the Inks.<br />
<br />
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).<br />
<br />
===Style===<br />
<br />
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.<br />
<br />
===Controls===<br />
<br />
In the tool's '''Controls bar''':<br />
<br />
* 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:<br />
** Red<br />
** Green<br />
** Blue<br />
** Hue<br />
** Saturation<br />
** Lightness<br />
** Alpha<br />
<br />
* 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%.<br />
<br />
* 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.<br />
<br />
* 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:<br />
** None<br />
** Small (close gaps up to 2 pixels in size)<br />
** Medium (4 pixels)<br />
** Large (6 pixels)<br />
:Note that setting this parameter to other than None may slow down noticeably the filling of large areas.<br />
<br />
===Shortcuts===<br />
<br />
The tool's '''shortcuts''' are:<br />
<br />
* '''Single click''' performs filling from the click point.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
==Tweak tool==<br />
<br />
The Tweak tool is an exciting new way to edit drawings which largely blurs the<br />
distinction between vector and raster editing. Instead of meticulously selecting some<br />
objects and then performing an action on the selection, you can now select ''all''<br />
objects (or all objects you are interested in) and apply the Tweak tool's brush to<br />
smoothly and naturally change the shape or style of only those objects (or parts<br />
thereof) ''that the brush touches''.<br />
<br />
The area of the tool's action - its ''brush'' - is marked by an orange-colored circular<br />
outline that moves with your mouse cursor. However, that area actually has no sharp<br />
boundaries; the power of the tool's action falls off gradually, following a smooth<br />
bell-shaped profile. This makes the tool act softly and smoothly.<br />
<br />
The tool will work on any number of selected objects; for example, you can select all<br />
(Ctrl+A) and "smear" your entire drawing by Push mode or paint it by Color Paint<br />
mode. You can also apply it to groups of objects; it will go into groups and act on<br />
individual objects inside groups. If you're trying to use it without anything selected,<br />
it will remind you by a statusbar message to select some objects.<br />
<br />
===Width===<br />
<br />
The width of the tool's brush, in the range from 1 to 100, can be changed by the<br />
'''Width''' control in the tool's controls bar above the canvas. You can also change<br />
width by '''Left''' and '''Right''' arrow keys (same as in the Calligraphy tool) at any<br />
time (including during action) as well as '''Home''' and '''End'''. Also, as in Calligraphy<br />
tool, the visible width of the brush is independent of zoom; simply zooming in or out is<br />
often easier than adjusting the width if you want to cover a smaller or larger area of<br />
the drawing.<br />
<br />
===Force===<br />
<br />
The next control is '''Force''' which adjusts the power of the action, also in the<br />
range from 1 to 100. You can also change width by '''Up''' and '''Down''' arrow keys at<br />
any time (including during action).<br />
<br />
If you have a pressure-sensitive tablet and your "Use pressure" button on the right-hand<br />
end of the controls bar is on, then the force will also depend on how hard you actually<br />
press your pen into your tablet, changing in the range from zero to whatever you set in<br />
the Force control. If all you have is a mouse, then the force will be constant but still<br />
settable by the Force control. <br />
<br />
===Path editing modes===<br />
<br />
The Tweak tool has a number of '''modes''', selectable by toggle buttons in the tool's<br />
Controls bar and by keyboard shortcuts. Some of these modes change the shapes of <br />
paths while others affect the colors of objects. All these modes share the Width and<br />
Force controls but otherwise are quite different. Let's look at the path editing modes<br />
first.<br />
<br />
Unlike the Node tool, to edit paths with the Tweak tool you don't need to worry about<br />
where the nodes of a path are and how to manipulate them. You just apply the tool's<br />
brush to any point, and the selected paths at that point will reshape smoothly and<br />
naturally - as if made of soft jelly - regardless of where its nodes lie. If applied to<br />
a shape or text object, the tool converts them to paths automatically.<br />
<br />
While not very useful for technical drawings, tweaking paths will be indispensable for<br />
artistic uses of Inkscape - cartoons, drawings, sketches, anime, etc. This new<br />
functionality is somewhat similar to the tools such as "Pucker" and "Bloat" in the<br />
latest versions of Adobe Illustrator. <br />
<br />
There are currently six path editing modes in the Tweak tool: '''Push''', '''Shrink''',<br />
'''Grow''', '''Attract''', '''Repel''', and '''Roughen'''.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
: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).<br />
<br />
: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 Inflating and carving holes with Melting. Unlike the "node sculpting" mode in the Node tool, however, this does not require adding new nodes to the shape.<br />
<br />
* 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 ; you can use them for various central-symmetric distortions in parts of your paths.<br />
<br />
* The '''Roughen''' mode does exactly this: roughens the edge of the path without changing its overall shape. Slight roughening simply makes the edge crooked and uneven; strong roughening tears and explodes the edge into random blobs and splotches. Note that this operation, especially with high Fidelity, adds a lot of nodes which increases the size of your SVG document and may slow down Inkscape considerably. In particular, pushing/melting/inflating 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.<br />
<br />
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.<br />
<br />
====Fidelity====<br />
<br />
Any tweaking of a path slightly distorts the entire path, including even those parts<br />
that you didn't touch. These distortions are similar to those that a Simplify command<br />
produces. The '''Fidelity''' value (also in the range from 1 to 100, default is 50)<br />
allows you to control the amount of these distortions. With a higher fidelity, the<br />
distortions are less noticeable, but the path may end up having a lot of nodes which<br />
inflates up the SVG size and slows down Inkscape.<br />
<br />
The best value of Fidelity depends on the nature of your artwork. If you're sculpting an<br />
amorphous blob, you can do with low fidelity of about 20. If, however, you are pushing<br />
or inflating a text string (as a single path) and want the letters outside the distorted<br />
area to remain crisp and clean, you will need to raise fidelity to 80 or more. <br />
<br />
====Known problems====<br />
<br />
Known problems with the path editing modes in Tweak tool:<br />
<br />
# they don't work on open paths (an open path becomes closed if you tweak it);<br />
# they are rather slow; <br />
# they quickly eat memory; and <br />
# they are sometimes buggy - thin calligraphic strokes may suddenly disappear or change their shape drastically as you're melting or inflating them.<br />
<br />
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. <br />
<br />
Also, sometimes after roughening, further tweaking of a path becomes impossible with this diagnostic:<br />
<br />
WARNING **: Shape error in ConvertToShape: directedEulerian(a) == false<br />
<br />
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.<br />
<br />
===Color editing modes===<br />
<br />
The '''Color Paint''' and '''Color Jitter''' modes, unlike the path editing modes,<br />
change the colors of objects instead of their shapes. Yet they share enough common<br />
features with the path editing modes to be part of the same tool: These modes also use<br />
a circular soft-edged brush controlled by the Width and Force parameters on the Controls<br />
bar and affected by the pen pressure (if you have a pressure-sensitive tablet).<br />
<br />
* '''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.)<br />
<br />
: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).<br />
<br />
: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.<br />
<br />
* '''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.<br />
<br />
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.)<br />
<br />
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.<br />
<br />
<br />
====Channels====<br />
<br />
Color Paint and Color Jitter honor the '''Channels''' control. This control comprises<br />
the four buttons: '''H''', '''S''', '''L''', and '''O''', which allow you to turn on and off<br />
the tool's action on the object's hue, saturation, lightness, and opacity,<br />
correspondingly. For example, if you want to raise the saturation of some part of your<br />
drawing without changing the hue, select some maximum-saturation color (e.g. pure red)<br />
and turn off all Channels buttons except S. Similarly, you can replace the hues without<br />
affecting saturation or lightness (only H pressed), or lighten/darken all colors without<br />
changing their hues and saturation (only L pressed). Pressing O allows you to apply the<br />
master opacity from the tool's style to the master opacity of objects (but not fill or<br />
stroke opacity).<br />
<br />
====Usage notes====<br />
<br />
Color painting with Tweak tool is similar, but not exactly analogous to bitmap<br />
painting. Even though the tool itself works as a soft brush, it still applies its color<br />
to vector objects, which behave as vector objects usually do. For example, if you want<br />
to change the tint of the face in your drawing, and if a hand in the drawing is part of<br />
the same object as the face, that hand will change its tint too even if it's located far<br />
from the point you are painting. (We foresee a "fracture" command in one of the next<br />
versions of Inkscape which will help you turn a monolithic object into a mosaic of small<br />
fragments that will be then easy to paint with Tweak tool.) Still, even with this<br />
limitation, color painting is a novel way of dealing with vector drawings which allows<br />
you to quickly and intuitively make adjustments which would be awkward and slow with<br />
traditional approach.<br />
<br />
Drawings containing patterns or scatterings of small independent objects are best suited<br />
for color painting with Tweak tool. Examples include:<br />
<br />
* freehand drawings with Calligraphy pen, consisting of many separate strokes;<br />
<br />
* 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);<br />
<br />
* text converted to paths and with Break Apart command applied so that each letter is a separate path;<br />
<br />
* 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.<br />
<br />
Moreover, color tweaking can be useful for compositions with a few objects or even for<br />
single objects. Unlike all other color selection methods, painting with the Tweak tool<br />
implements the ''color mixing'' metaphor which is much more familiar to traditional<br />
artists than RGB sliders or even the color wheel. For example, start with a rectagle of<br />
pure blue color; then, pick different colors by Color Paint and apply light touches with<br />
minimum Force and minimum pen pressure: add a little green, a little brown, a little<br />
yellow, etc. until you have the exact hue you need. Similarly, you can whiten or blacken<br />
any hue by admixing white or black.<br />
<br />
You can also use color tweaking to add a tint, darken/lighten, saturate/desaturate, or<br />
color jitter your entire drawing. Just select all in all layers, zoom out, choose a<br />
large brush width so it covers all of the drawing, and apply a little color tweaking<br />
(with minimum Force) that will therefore affect all visible objects.<br />
<br />
===Keyboard shortcuts===<br />
<br />
* '''W''', '''Shift+F2''': switch to the Tweak tool<br />
<br />
* '''Shift+P''': switch to the Push mode<br />
<br />
* '''Shift+S''': switch to the Shrink mode<br />
<br />
* '''Shift+G''': switch to the Grow mode<br />
<br />
* '''Shift+A''': switch to the Attract mode<br />
<br />
* '''Shift+E''': switch to the Repel mode<br />
<br />
* '''Shift+R''': switch to the Roughen mode<br />
<br />
* '''Shift+C''': switch to the Color Paint mode<br />
<br />
* '''Shift+J''': switch to the Color Jitter mode<br />
<br />
* '''Left, Right, Home, End''': change width<br />
<br />
* '''Up, Down''': change force<br />
<br />
* '''mouse drag''': act on selected path in the current mode<br />
<br />
* '''Ctrl+mouse drag''': temporarily switch to Shrink (while Ctrl is down)<br />
<br />
* '''Shift+Ctrl+mouse drag''': temporarily switch to Grow (while Shift+Ctrl is down)<br />
<br />
==3D Box tool==<br />
<br />
Inkscape is a two-dimensional drawing tool. However, very often it is used to draw three-dimensional objects. The new '''3D box tool''' helps you create such 3D drawings by automating the most common operation: creating a three-dimensional box in a given perspective. The tool automatically ensures that all sides of the box lie on the corresponding perspective lines. We're not going to compete with Blender - but even simple things can go a long way.<br />
<br />
Currently in the 3D box tool you can:<br />
<br />
* draw a 3D box by dragging on canvas (use Shift+dragging without releasing the mouse button to extrude in z direction)<br />
<br />
* adjust any of its 3 dimensions by handles<br />
<br />
* move a 3D box "in perspective" 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<br />
<br />
* adjust the vanishing points of a perspective by dragging them across the canvas (see below) or toggling their states; all boxes sharing this perspective are transformed accordingly<br />
<br />
In SVG, a 3D box is represented as a '''group''' (svg:g) with a special extension attribute (in inkscape namespace); this group contains the 6 quadrilateral '''paths''' representing the sides of the box. Only the 3D box tool treats this object as a box; for all other tools it is just a group, so you can select any of the paths by Ctrl+click, apply any style to it, delete it, etc. You can of course transform the entire box or any face in it using Selector or Node tools.<br />
<br />
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 "dragger". 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.<br />
<br />
===Keyboard shortcuts===<br />
<br />
* '''X''', '''Alt+F4''': switch to the 3D box tool<br />
<br />
* 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.<br />
<br />
* '''L''': toggle visibility of perspective lines<br />
<br />
* '''A''': when perspective lines are visible, toggle between "all lines" and "only lines connected to front corners" (this can help to avoid visual clutter)<br />
<br />
[max]<br />
<br />
==Gradient Tool==<br />
===Selecting multiple stops===<br />
'''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. <br />
* Add a stop to the selected stops by '''Shift+click'''.<br />
* Press '''Ctrl+A''' to select all stops in the selected objects.<br />
* '''Shift+drag''' around stops to add them to selection.<br />
Multiple selected stops:<br />
*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.<br />
*Can be deleted at the same time by pressing '''Del'''.<br />
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.<br />
<br />
===Editing intermediate stops===<br />
'''Intermediate stops''' in gradients can be added, deleted, and edited on canvas (previously this was only possible in the Gradient Editor dialog).<br />
*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.<br />
*When two or more adjacent stops are selected, pressing '''Ins''' adds stops in the middles of all selected stop intervals.<br />
*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). <br />
:*Dragging with '''Ctrl''' moves the selected stops snapping them to 1/10 fractions of the available range.<br />
:*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.<br />
*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).<br />
*Stops can be deleted by '''Ctrl+Alt+Click''' on a stop or by the '''Del''' key for all the selected stop(s).<br />
:*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).<br />
:*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 & opacity of the remaining stop.<br />
*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.<br />
<br />
===Style of gradient stops===<br />
*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&Stroke dialog. Previously, opacity of a gradient handle was reflected as fill-opacity and stroke-opacity; now it is reflected as '''master opacity''' (the "O:" spinbutton in the selected style indicator, the "Master opacity" slider in Fill&Stroke). This makes it much easier to view and change opacity of gradient handles using only the selected style indicator in the statusbar.<br />
:*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.<br />
*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''').<br />
*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 "L Gradient" or "R Gradient" text labels as before). Also, this and other similar widget now use italic font face to indicate <i>None</i> and bold to indicate <b>Unset</b>.<br />
<br />
===Automatic duplication of gradients===<br />
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. <br />
<br />
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.<br />
<br />
==Calligraphy tool: Engraver's Toolbox ==<br />
<br />
Several new features were added to the Calligraphic pen to make<br />
Inkscape capable of the ancient art of '''line<br />
engraving'''. Traditional engraving is a very labour-intensive<br />
process, and while for a long time it was the only practical way<br />
of reproducing lifelike images in black-and-white print, about a<br />
century ago it was almost completely displaced by automatic<br />
halftone screens. However, line engravings have their<br />
characteristic charm, and there's no reason not to try to<br />
resurrect this art form with the help of Inkscape.<br />
<br />
A brief visual guide to the new functionality can be seen on<br />
these screenshots:<br />
<br />
http://inkscape.org/screenshots/gallery/inkscape-0.46-engraving1.png<br />
<br />
http://inkscape.org/screenshots/gallery/inkscape-0.46-engraving2.png<br />
<br />
<br />
===Tracking a guide path with Ctrl===<br />
<br />
One of the most common operations in line engraving is<br />
'''hatching''' (or sometimes ''cross-hatching'' when several<br />
hatching grids cross): filling a space with many parallel<br />
straight or variously curved lines (usually of varying width to<br />
represent a gradual shading). You could try to achieve a similar<br />
effect with e.g. path interpolation (blending), but it is rather<br />
cumbersome and limited; manual drawing of hatch lines, on the<br />
other hand, is tedious and nearly impossible to do<br />
uniformly. Now Inkscape provides "assisted hatching" by<br />
'''tracking a guide path''', allowing you to hatch quickly and<br />
uniformly and at the same time giving you sufficient manual<br />
control over the process.<br />
<br />
Here's how to do this. First, select the '''guide path''' that<br />
you will track. It may be another calligraphic stroke, any path<br />
or shape, or even a letter of a text object. Then switch to<br />
Calligraphic pen, select the desired parameters (line width,<br />
angle, fixation etc.) and, before starting to draw, press<br />
Ctrl. You will see a gray '''track circle''' centered at your<br />
mouse pointer and touching the closest point on the selected<br />
guide path. (If you have no guide path selected, a statusbar<br />
message will tell you to select it.)<br />
<br />
Now move your mouse close to the guide path, so that the track<br />
circle radius is equal to the desired spacing of your hatch<br />
pattern, and start drawing along the guide path. At that moment,<br />
the radius of the circle gets locked; now the circle slides<br />
along the guide path - and the actual stroke is drawn by the<br />
center of the tracking circle, ''not'' by your mouse point. As<br />
a result, you are getting a smooth stroke going parallel to the<br />
guide path and always at the same distance from it.<br />
<br />
When the stroke is ready, release your mouse button (or lift<br />
your tablet pen) but '''do not let go of the Ctrl key''' because<br />
as long as you have it pressed, the tool remembers the hatch<br />
spacing you set when you started drawing. Now, you have just<br />
created a new stroke and, as usual with Inkscape tools, it gets<br />
selected instead of what was selected before. In our case, this<br />
means that the newly drawn stroke itself becomes the new guide<br />
path. Next, you can draw a second stroke along the first one,<br />
then a third one along the second, etc. Eventually you can fill<br />
any desired space with uniform hatching.<br />
<br />
Alternatively, if you uncheck "Select new path" 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. <br />
<br />
The attachment to the guide path is not absolute. If you stray<br />
your mouse pointer far enough from the guide path, you will be<br />
able to tear it off (the track circle turns from green to red)<br />
and move freely. This is intentional; this feature allows you,<br />
for example, to continue drawing a stroke past the end of a<br />
guide stroke, thus making your hatching cover a wider area than<br />
the initial guide path. Special care is taken to make such<br />
tearing off as smooth as possible and to suppress violent jerks,<br />
but this is not always possible; the general advice is to not<br />
try to hatch too fast. If jerking and unintended tearoffs still<br />
bother you, try increasing the Mass parameter.<br />
<br />
Also, special code is in place to prevent flipovers - accidental<br />
jumps to the other side of the guide path. Brief flipovers are<br />
suppressed, but if you intentionally go over to the other side<br />
and stay there, eventually Inkscape will obey and your tracking<br />
stroke will also flip over to follow you.<br />
<br />
Tracking a guide also allows some slight feedback by gradually<br />
changing the tracking distance in response to your drawing<br />
behavior. Thus, if you're consistently trying to draw closer or<br />
farther from the guide than the current tracking distance, the<br />
distance will correspondingly decrease or increase, so you will<br />
get a hatching that is slightly spacing in or out. (The effect<br />
is very slight, however, so as not to become a nuisance.) Also,<br />
note that since tracking follows the edge of the stroke, strokes<br />
of varying width (such as those tracing background, see below)<br />
will result in gradual bending of the hatching pattern as you<br />
proceed.<br />
<br />
===Tracing background by stroke width===<br />
<br />
There is a new toggle button on the Calligraphy tool's controls<br />
bar, '''Trace background'''. When on, the width of your pen<br />
depends on the lightness of the background under the stroke in<br />
each point, so that white translates into the minimum stoke<br />
width (1) and black translates to the maximum (which is set by the<br />
Width parameter). This can work alone or in combination with<br />
pressure sensitivity, depending on whether the "Use pressure" button<br />
is also toggled.<br />
<br />
This feature allows you to not only hatch over an imported<br />
bitmap image or any drawing, but to do so automatically<br />
reproducing the highlights and shades of the background with<br />
your strokes becoming lighter and heavier as needed.<br />
<br />
===Misc features===<br />
<br />
* 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. <br />
<br />
* 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.)<br />
<br />
==Selector==<br />
<br />
* 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. <br />
<br />
: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.<br />
<br />
* 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.<br />
<br />
* Draging the '''scale handles with Alt''' now scales selection by an integer factor, i.e. up to '''2''', '''3''', '''4''', etc. times the original size or down to '''1/2'''. '''1/3''', '''1/4''', etc. of the original size (in any of the two dimensions independently). This way you can, for example, mirror any object around one of the edges of its box. (This replaces the old and rarely used "slow" scaling mode with Alt.)<br />
<br />
* '''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.<br />
<br />
* '''Objects to Marker''' was added to the objects menu, which converts the current selection to a marker, with the center point of the selection being set to the center of the marker.<br />
<br />
==Node tool==<br />
<br />
* 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 ('<' and '>' 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.<br />
<br />
* [helper path display - johan]<br />
** this is deactivated for normal paths now. only paths with LPE applied will show it. should there be a button to turn it on for normal paths aswell?<br />
<br />
* As a long-requested feature, two entry fields are added to the toolbar which allow precise editing of the coordinates of selected nodes.<br />
<br />
==Rectangle Tool==<br />
<br />
* '''Ctrl+dragging''' now also allows the creation of rectangles with sides constrained to the '''golden ratio''' (approx. 1 : 1.618034), not only integer ratios.<br />
<br />
==Ellipse Tool==<br />
<br />
* 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.<br />
<br />
* '''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.<br />
<br />
==Text tool==<br />
* [text toolbar - deadchip?]<br />
* If text contains a tref element, the text tool's behavior may not be as expected. Please see [[#The tref Element]]<br />
<br />
==Dropper Tool==<br />
<br />
The shortcut 'D' is now used to <i>toggle</i> (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.<br />
<br />
=SVG features=<br />
<br />
==The tref element==<br />
<br />
Inkscape can now correctly open files with '''tref''' elements, and new tref elements can be created manually in the XML editor.<br />
<br />
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'''.<br />
<br />
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'''.<br />
<br />
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.<br />
<br />
Existing tref elements can be converted into tspan elements with '''Edit > Clone > 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'''.<br />
<br />
A '''tref''' element can be mixed with any other elements allowed to be contained by a text element.<br />
<br />
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'''.<br />
<br />
==SVG filters==<br />
<br />
===New filters supported===<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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]<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
See also wiki page [[Filter Effects]] for more info on filters in Inkscape in general.<br />
<br />
===Filters UI===<br />
<br />
* New dialog for creating and modifying filter effects ('''Object>Filter Effects...''')<br />
* The list at the left of the dialog displays all filters currently in the document.<br />
** New filters can be added with the '''Add''' button beneath the list<br />
** Right-clicking a filter for the pop-up menu allows duplicating or removing a filter.<br />
** Double-clicking a filter will apply it to all selected objects<br />
** 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.<br />
* The second list, at the left of the dialog, displays the '''filter primitives''' that are contained within the currently-selected filter.<br />
** New primitives can be added by selecting the primitive type from the combo box beneath the list, and then pressing the '''Add''' button.<br />
** Right-clicking a primitive for the pop-up menu allows duplicating or removing a primitive.<br />
** Primitives can be rearranged by clicking and dragging any filter in the list.<br />
** 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.<br />
** The "in" and "in2" 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.<br />
*** 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.<br />
*** 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.<br />
*** 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.<br />
*** 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.<br />
*** Merge inputs have an empty input at the end. Dragging a connection from this input will add a new input to the primitive.<br />
<br />
=Live Path Effects (LPE)=<br />
<br />
'''Live path effects''' (not to be confused with extension effects or SVG filters) are a new way to <b>non-destructively modify path and shape objects</b>. 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. <br />
<br />
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.<br />
<br />
Live path effects were developed by Johan Engelen as part of the GSoC 2007.<br />
<br />
==Details about operation==<br />
The following schematic tries to explain how LPE work.<br />
<br />
original style ------------> output style<br />
original path --> LPE --> output path<br />
^<br />
|<br />
parameters<br />
<br />
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 <b>output style equals original style</b>.<br />
<br />
The parameters can be paths, numbers, points, text, in principle anything.<br />
<br />
<br />
==Applying effects==<br />
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.<br />
<br />
When a path with a path effect applied is selected, the statusbar description mentions that, for example "'''Path''' (4 nodes, path effect)".<br />
<br />
There is a special Paste Path Effect command (Ctrl+7) that can be used to copy effects from one path to another.<br />
<br />
==Editing effect parameters==<br />
When switching to the node edit tool (<b>F2</b>), the <b>original path</b> can be edited. The original path is shown as a red helper path. Normal path operations, like simplify, still work.<br />
<br />
Some parameters of effects can be edited on-canvas. For example, path parameters can be node-edited, by pressing the "edit on-canvas" button in the Path Effects dialog. <b>Press "7" to cycle through the different on-canvas editable parameters.</b> 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.<br />
<br />
==Available effects==<br />
<br />
===Path along path===<br />
The <b>Path along Path</b> 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 <b>on-canvas</b> and the result is <b>updated live</b>. This provides a direct equivalent of "vector brushes" or "skeletal strokes" features in other vector editors. <br />
<br />
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'.<br />
<br />
Example file: live-path-effects-pathalongpath.svg<br />
<br />
===Pattern along path===<br />
The <b>Pattern along Path</b> 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 <b>on-canvas</b> and the result is <b>updated live</b>. This provides a direct equivalent of "vector brushes" or "skeletal strokes" features in other vector editors. <br />
<br />
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.<br />
<br />
Example file: live-path-effects-pathalongpath.svg<br />
<br />
===Stitch Subcurves===<br />
The <b>Stitch Subcurves</b> effect connects points from two subpaths of the path with straight line or curved segments, i.e. the <i>stitches</i>. It looks a lot like the Effect Lines from Expression 3. The result is also referred to as "String Art". For some examples of string art, see http://members.shaw.ca/jillbritton/string_art/jbstringart.htm. <br />
<br />
The <b>shape</b> of the <b>connecting paths</b> can controlled by the <b>stroke path</b> parameter. This could be used to draw 'hair-shaped' connecting paths with sharp end-tips. Other controls include the <b>number of paths</b>, the variation in spacing between the connecting paths (<b>clustering</b>) and also whether the start and end points of the stitches should like exactly on the original subcurves or can <b>stray randomly</b> around them. Finally the width of the stroke path can be varied.<br />
<br />
Note that this effect can only be applied to a path with two subpaths in it, hence '<b>sub</b>curve' in the name. Use Path > Combine to create such a path from two separate paths.<br />
<br />
Example file: live-path-effects-curvestitch.svg<br />
<br />
Example file showing cooperation between Stitch Subcurves and Path along Path: live-path-effects-curvestitch-hair.svg<br />
<br />
===Gears===<br />
The <b>Gears</b> 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. <br />
<br />
Example file: live-path-effects-gears.svg<br />
<br />
==Development of new effects==<br />
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!<br />
<br />
[johan]<br />
<br />
=Extension effects=<br />
<br />
== Live preview ==<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''Progress dialog''': While an extension is working on a document, a small dialog is shown allowing the user to cancel the execution.<br />
<br />
== New and improved effects ==<br />
<br />
* The new '''Modify Path > Edge 3D''' extension creates black, grey and white paths around a shape, then blurs and clips them for a 3D effect.<br />
<br />
* The new '''Render > 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. <br />
<br />
* The new '''Render > 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.<br />
<br />
* The new '''Render > [[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]).<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* 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.<br />
<br />
*The new '''Color > 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.<br />
<br />
*The '''Whirl''' extension uses the center of view as the center of whirl, so you don't have to enter the center coordinates numerically.<br />
<br />
*The '''Render > Grid''' extension has got an extended range of grid spacings, from 0.1 to 1000 px.<br />
<br />
*The '''Render > Function Plotter''' extension can now plot using polar coordinates.<br />
<br />
*The '''Generate Template > 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.<br />
<br />
== XSLT effects ==<br />
<br />
* '''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.<br />
<br />
== ImageMagick effects ==<br />
<br />
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. <br />
<br />
* '''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.<br />
<br />
* '''Add Noise''' adds random noise of certain types to the bitmap.<br />
<br />
* '''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.)<br />
<br />
* '''Channel''' extracts the specified channel from the bitmap.<br />
<br />
* '''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.<br />
<br />
* '''Colorize''' overlays the bitmap with a given color at a given intensity.<br />
<br />
* '''Contrast''' lightly enhances the contrast (difference between lights and darks) of a bitmap.<br />
<br />
* '''Cycle Colormap''' cycles the colormap of a bitmap.<br />
<br />
* '''Despeckle''' reduce the speckle noise in a bitmap.<br />
<br />
* '''Edge''' hilights edges in a bitmap.<br />
<br />
* '''Emboss''' embosses a bitmap, hilighting edges with 3D effect.<br />
<br />
* '''Enhance''' enhance a bitmap, minimizing noise.<br />
<br />
* '''Equalize''' equalizes a bitmap. Histogram equalization.<br />
<br />
* '''Flop''' mirrors a bitmap, reflecting each scanline in the horizontal direction.<br />
<br />
* '''Gaussian Blur''' blurs a bitmap, more strongly than regular blur.<br />
<br />
* '''Implode''' sucks everything towards the center of the bitmap.<br />
<br />
* '''Level''' scales values falling between the given '''Black Point''' to '''White Point''' range to the full color range.<br />
<br />
* '''Level Channel''' acts the same way as level but for only one channel.<br />
<br />
* '''Median Filter''' filters a a bitmap by replacing each pixel component with the median color in a circular neighborhood<br />
<br />
* '''Modulate''' adjusts the percent hue, saturation, and brightness of a bitmap.<br />
<br />
* '''Negate''' takes the inverse of a bitmap.<br />
<br />
* '''Normalize''' normalizes a bitmap, expanding color range to the full possible range of color.<br />
<br />
* '''Oil Paint''' stylizes a bitmap so that it appears to be painted with oils.<br />
<br />
* '''Opacity''' modifies the opacity channel of a bitmap.<br />
<br />
* '''Raise''' alters the lightness of the edges of a bitmap to create a raised appearance, much like a frame.<br />
<br />
* '''Reduce Noise''' reduces noise in a bitmap by using a noise peak elimination filter.<br />
<br />
* '''Shade''' shades a bitmap by simulating a distant light source<br />
<br />
* '''Sharpen''' sharpens a bitmap.<br />
<br />
* '''Solarize''' solarizes a bitmap, like overexposing photographic film.<br />
<br />
* '''Spread''' randomly spread pixels in a bitmap within the radius of '''amount'''.<br />
<br />
* '''Swirl''' swirls the bitmap around the center point.<br />
<br />
* '''Threshold''' thresholds a bitmap.<br />
<br />
* '''Unsharpmask''' sharpens a bitmap using an unsharp mask algorithm.<br />
<br />
* '''Wave''' alters a bitmap along the sine wave.<br />
<br />
These effects are part of the Google Summer of Code 2007, coded by Christopher Brown.<br />
<br />
== Misc ==<br />
<br />
* All Python effects are switched from the old and unmaintained PyXML library to the new powerful [http://codespeak.net/lxml/ lxml] library.<br />
<br />
* 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.<br />
<br />
= Stock patterns =<br />
<br />
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&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:<br />
<br />
*A selection of plain '''stripes''' differing by the ratio of the stripe width to gap width (for example, the "Stripes 1:2" 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).<br />
<br />
*Two '''checkerboard''' patterns with black and white odd squares (even squares are transparent)<br />
<br />
*'''Packed circles''': a hexagonal pattern of black circles with transparent gaps.<br />
<br />
*'''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).<br />
<br />
*'''Wavy''' is a pattern of wavy lines.<br />
<br />
*'''Camouflage''' is a green-toned protective pattern such as that used by the military.<br />
<br />
*'''Ermine''' is the traditional heraldic pattern representing stylized stoat furs with black tails.<br />
<br />
*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 "texturize" them. <br />
<br />
After applying a stock pattern, switch to Node tool to edit the location, scale, and rotation of the pattern via on-canvas handles.<br />
<br />
All stock patterns are stored in the file <code>patterns/patterns.svg</code> in Inkscape's <code>share</code> directory (typically <code>/usr/share/inkscape</code> on Linux, <code><i>inkscape-dir</i>/share</code> on Windows). You can add your own patterns to this file or replace it with any other SVG file containing the patterns you need.<br />
<br />
=Color management=<br />
<br />
== Calibrated SVG color including CMYK ==<br />
<br />
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<br />
optional "icc-color(...)" paint components as described in section 11.2 "Specifying paint" of the SVG 1.1 specification<br />
[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.<br />
<br />
The new CMS color selector tab allows these colors to be edited.<br />
<br />
== Display adjustment ==<br />
<br />
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.<br />
<br />
=== Per-window adjustment ===<br />
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.<br />
<br />
=== XICC Support ===<br />
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.<br />
<br />
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.<br />
<br />
=== Multi-monitor aware ===<br />
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.<br />
<br />
== Soft Proofing ==<br />
<br />
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.<br />
<br />
=Snapping=<br />
<br />
* Snapping has been implemented or improved for:<br />
<br />
:* '''Newly created shapes'''<br />
<br />
:* '''Skewing''' of objects<br />
<br />
:* '''Handles''' of objects, incl. '''gradients'''<br />
<br />
:* '''Images''', '''ellipses''', and '''clones'''<br />
<br />
:* Text boxes, which snap to '''text baselines''' again<br />
<br />
:* Objects, for which snapping now optionally considers the '''rotation center'''<br />
<br />
:* Objects, which now allow for '''constrained snapping'''<br />
<br />
:* '''Guides''', which now snap while dragging them<br />
<br />
:* '''Axonometric grids'''<br />
<br />
:* '''Angled guide lines'''<br />
<br />
:* '''Bounding boxes''', of which now all four corners snap<br />
<br />
<br />
<br />
* Other snapping fixes and improvements include:<br />
<br />
:* It is now possible to snap to '''intersections''' of e.g. gridlines with guidelines, and of line segments. <br />
<br />
:* The '''snapping preferences dialog''' has been restyled to make it more intuitive. <br />
<br />
:* Inkscape now has a global snapping toggle, which has been added to the view-menu and is accessible through a shortcut<br />
<br />
:* Inkscape now allows for controlling the snapping per grid when multiple grids are being used<br />
<br />
:* Snapping distance is now set in screen pixels and is therefore '''independent of zoom'''. <br />
<br />
:* Snapping of objects has been made more clean, by only snapping '''bounding box corners to bounding boxes''', and '''nodes to other nodes and paths'''.<br />
<br />
:* The time it takes to snap to objects using the selector tool has been reduced significantly.<br />
<br />
:* The bug where "node-to-node" snapping caused jerky movement of nodes is fixed.<br />
<br />
:* The '''aspect ratio''' is correctly preserved while scaling objects with snapping turned on.<br />
<br />
:* Only nodes at '''non-smooth parts''' of a path now snap.<br />
<br />
:* The confusing "Default transformations origin" 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).<br />
<br />
:* 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).<br />
<br />
=Grids=<br />
Grids have undergone some big changes under-the-hood. These are the visible changes:<br />
* There is a <b>new 3D/axonometric grid</b>!<br />
* A new tab in the document properties dialog, solely meant for grids; the former grid/guide tab is now solely for guides. I envision a list of guides there in the future, for easier deletion of guides etc.<br />
* More than one grid can be active at the same time<br />
** Each grid can be enabled/disabled separately from the document properties dialog.<br />
* One can make grids invisible by unchecking the "Visible" checkbox in the grid's tab in the document properties dialog. Snapping is still enabled even for invisible grids!<br />
* Multiple views on the same document share the same grids, but the grid can be turned off for each view separately. For example: one could have an overview view without 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. (sorry i am not able to explain more clearly, perhaps someone else can?)<br />
* Grid information is now stored in SVG as a child of sodipodi:namedview. Old files will be converted to this new format automatically<br />
* The rectangular grid now has an option to show dots on gridline intersections instead of solid lines<br />
<br />
From developer perspective:<br />
<br />
* Implementation of new grids is much easier now; subclassing CanvasGrid and adding an entry in the is enough. Have a peek at how the rectangular grid is implemented (CanvasXYGrid).<br />
* Note that there is no longer "the grid", there might be several grids active now!<br />
<br />
A side effect of removal of old gridcode: apparantly the origin of the desktop rules used to be set to the origin of the grid. I find this strange: specifying a grid origin of (2,2) would have me think the origin would be at ruler location (2,2) instead of (0,0) as it is in 0.45.1.<br />
I have commented the grid-origin correction to the ruler range, because now there is not a single grid anymore to correct it for. Isn't there a control somewhere to define the documents origin? Now the ruler origin is set to (0,0)<br />
<br />
--johan<br />
<br />
=Angled guidelines=<br />
<br />
Now, Inkscape also provides angled guidelines! Double click on a guide to set its angle.<br />
<br />
* When dragging a guideline off the rulers close to the edge, the guideline will automatically be angled. The angle is set depending on the grid.<br />
** For the rectangular grid, the angle is 45 degrees.<br />
** For the axonometric grid, the angle is matched to the grid. When the Ctrl-key is pressed, the angle is perpendicular to the grid lines (useful for aligning gradients).<br />
<br />
=Creating guidelines from objects=<br />
<br />
* Selected objects can now be converted to guidelines. To do this, either use the menu command '''"Object->Object to guides"''' 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.<br />
<br />
* '''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.<br />
<br />
* For all other objects, conversion usually happens by placing the guidelines around the object's bounding box (use the corresponding checkbox in the "Tools" page of Inkscape Preferences to switch between geometric and visual bounding box).<br />
<br />
*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.<br />
<br />
=Import/Export=<br />
<br />
==PDF and AI import==<br />
<br />
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). <br />
<br />
'''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. <br />
<br />
'''PDF import settings''': After opening a PDF or AI document, the PDF Import Settings dialog shows up. Here you can select:<br />
<br />
* the '''page''' to be imported from a multipage PDF;<br />
<br />
* 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.);<br />
<br />
* 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;<br />
<br />
* a checkbox controlling whether the '''images''' should be '''embedded''' into the resulting SVG document or saved on the current path;<br />
<br />
* 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).<br />
<br />
'''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.)<br />
<br />
To work around this, select the text object you want to edit and use '''Text > 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. <br />
<br />
Note that there is a way to select even a single line in a text block. For this, open the XML editor, expand the <svg:text> tree branch corresponding to your text, and select any of the <svg:tspan> 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+> or Alt+<).<br />
<br />
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.<br />
<br />
==PDF export==<br />
<br />
* A new cairo-based PDF exporter has been added to Inkscape (marked as "Cairo PDF" in the export format list). Inkscape 0.46 can export shapes, strokes, transparency, gradients, patterns, text, and images correctly to cairo. While clipping paths and masks are known to be faulty or missing. 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.<br />
<br />
* A new cairo-based PostScript exporter has been added (marked as "Cairo PS" 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.<br />
<br />
==CDR (CorelDraw) import==<br />
<br />
Inkscape can use [http://www.sk1project.org/modules.php?name=Products&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 (since UniConvertor is Unix-only) and requires that you have Python and UniConvertor installed. As of UniConvertor 1.0rc2, only versions from 7 to X3 of the CDR format are supported, and text objects are not converted. <br />
<br />
==XAML import/export==<br />
<br />
* Inkscape can import vector graphics portions of XAML documents, as well as export its documents to XAML.<br />
<br />
==Adobe Illustrator SVG clean import==<br />
<br />
* 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.<br />
<br />
==Bitmap export==<br />
<br />
* '''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.<br />
<br />
: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 "export" layer. In that layer, "slice" 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 "export" layer, select all in that layer (Ctrl+A), and export with the ''Batch export selected objects'' checkbox on.<br />
<br />
* '''Hide all except selected''': A new checkbox allows you to hide in the exported image everything except selected object(s).<br />
<br />
* The Export dialog automatically appends the '''.png''' extension to the export filename you specify.<br />
<br />
== Open Clip Art Library import and export ==<br />
<br />
{rejon}<br />
<br />
=Command line=<br />
<br />
Several new command line options are added that make Inkscape even more scriptable and automatable than before.<br />
<br />
* --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.<br />
<br />
* --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.<br />
<br />
* --select followed by a node ID will allow you to add a node to the list of selected objects.<br />
<br />
* --query-all produces a comma delimited listing of all objects in the document, with their x, y, height, and width values.<br />
<br />
These options can be used, for example, for performance testing. You could do something like this:<br />
<br />
$ time inkscape --verb=FileClose my_complex_file.svg<br />
<br />
to measure the time it takes to load and display the file.<br />
<br />
Of course, with the ability to select objects, it can be much more useful than<br />
that. You can call extension effects, or any other verb, then FileSave and<br />
FileClose to automate all kinds of operations on your drawings.<br />
<br />
=User interface=<br />
<br />
== [dockable dialogs - gustav] ==<br />
<br />
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.<br />
<br />
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&mdash;this allows other dialogs to be dragged and dropped on it to form a floating group of dialogs.<br />
<br />
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'' > ''Dialog behavior'' in the Inkscape preferences dialog.<br />
<br />
Known issues:<br />
<br />
* Some of Inkscape's dialogs are yet to be adapted to allow docking, these include the "Text and Font" dialog, the "Tiled clones" dialog, the "XML editor" and the "Object properties" dialog.<br />
<br />
* [Remembered positions of dockable floating dialogs is inexact.] <br />
<br />
[options]<br />
<br />
== [toolbars - [[JonCruz]]] ==<br />
<br />
'''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.<br />
<br />
[calligraphy: menus, tooltips; star; ...]<br />
<br />
Switched to stock GTK+ toolbars.<br />
<br />
Extra magic secret sauce added.<br />
<br />
== [filedialogs - [[JonCruz]]] ==<br />
<br />
== Swatches panel, color drag-and-drop ==<br />
<br />
* Right-clicking a color swatch now opens a context menu which allows you to apply the color to the fill or stroke of selection.<br />
<br />
* Dragging colors from the color palette has been fixed and improved:<br />
<br />
:* 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.)<br />
<br />
:* 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.)<br />
<br />
:* 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.<br />
<br />
==Color gestures==<br />
<br />
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 "None", "N/A", 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.<br />
<br />
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'''.<br />
<br />
The adjustment is done by '''"rotating"''' the color swatch away from the original direction which is assumed to be '''NE at 45 degrees''' (i.e. from<br />
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.<br />
<br />
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.<br />
<br />
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. <br />
<br />
You can '''switch channels while you drag'''. That is, you don't need to <br />
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.<br />
<br />
The '''Alt''' modifier is special. Pressing Alt means "do nothing"; 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.<br />
<br />
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.<br />
<br />
Apart from precise adjustments, you can use color gestures to very quickly perform some common color transformations:<br />
<br />
* Ctrl+drag the swatch to the right and down to paint all selected objects black.<br />
<br />
* Ctrl+drag the swatch upwards and to the left to paint all selected objects white.<br />
<br />
* Shift+drag the swatch to the right and down to desaturate the color of selected objects.<br />
<br />
* Shift+drag the swatch upwards and to the left to maximize saturation of the color of selected objects. <br />
<br />
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.<br />
<br />
This new technique requires some getting used to, but once you get the idea it is quite convenient, fast, and precise.<br />
<br />
== Print dialog integration == <br />
<br />
* '''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.<br />
<br />
== Saving window geometry globally ==<br />
<br />
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 "Save geometry to preferences" 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).<br />
<br />
== Preserving zoom/view of reverted documents ==<br />
<br />
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.<br />
<br />
== New ways to scroll and zoom ==<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* In the Zoom tool, right mouse button always zooms out instead of calling the context menu (which is rather useless in this tool anyway).<br />
<br />
== Using other keys in place of Alt ==<br />
<br />
* 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 <code>mapalt</code> in the <code>options</code> 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 "Modifiers" when the mouse is held over a key on the main display.<br />
<br />
== GTK theme on OS X ==<br />
<br />
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 "Appearance" and "Highlight Color" set in System Preferences > Appearance.<br />
<br />
=Other changes and improvements=<br />
<br />
* '''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.<br />
<br />
* 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. <br />
<br />
* The somewhat cryptic "F:" and "S:" 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.<br />
<br />
* 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. "Style of new rectangles", "Style of new calligraphic strokes", etc.)<br />
<br />
* 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. <br />
<br />
* After dragging a curve segment in Node tool, Inkscape no longer selects the two adjacent nodes if they were not selected before. <br />
<br />
* 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. <br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.)<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* 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 <code>default.svg</code>, 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 > New submenu).<br />
<br />
* 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.<br />
<br />
* 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 "slideshow mode" of the main inkscape application (-s or --slideshow command line option) is removed; use inkview instead.<br />
<br />
* In Document Metadata dialog, updated '''Creative Commons Licenses''' to version '''3.0'''.<br />
<br />
* Preferences have been added for setting the default metadata and licenses, so this information can be automatically filled in with new documents.<br />
<br />
* The built-in '''Potrace''' tracing engine is upgraded to version '''1.8''' with some minor bugs fixed.<br />
<br />
* File dialog windows (open/save) now have an '''Enable preview''' checkbox which allows you to disable the preview pane.<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* The option '''Import bitmap as <image>''' 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 <image> element.<br />
<br />
* 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 & stroke dialog.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* Add some new '''UML markers''', including filled and hollow diamonds and triangles.<br />
<br />
* 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'''.<br />
<br />
=Notable bugfixes=<br />
<br />
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]].<br />
<br />
* The '''sodipodi:docbase''' attribute is no longer added to the root <svg> 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.<br />
<br />
* 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. <br />
<br />
* Inkscape now properly quotes <code>font-family</code> values and therefore can use '''fonts''' with various '''nonalphanumeric characters''' in their names, which previously failed. <br />
<br />
* 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.<br />
<br />
* 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).<br />
<br />
* 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).<br />
<br />
* '''Stock markers''' now appear in the "recently used markers" section of the marker selector dropdowns in the Fill & Stroke dialog. Before, any markers with stock id's (including markers modified by the user) were hidden, making it difficult to work with modified stock markers.<br />
<br />
* 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.<br />
<br />
* Previously, if there was a single '''invalid property''' in a <code>style</code> 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.<br />
<br />
* 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. <br />
<br />
* Master opacity did not apply to stroke '''markers''' as it should; fixed.<br />
<br />
* '''Creative Commons Public Domain Declaration URI''' points to the right location now.<br />
<br />
* Text objects didn't display the '''pattern editing handles'''; fixed.<br />
<br />
* 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.<br />
<br />
* Clones were wrongly unlinked when their original was moved to another layer; fixed.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* In Tile Clones dialog, the PMG symmetry group was created incorrectly, which is now fixed.<br />
<br />
= Previous releases =<br />
<br />
* [[ReleaseNotes045]]<br />
* [[ReleaseNotes044]]<br />
* [[ReleaseNotes043]]<br />
* [[ReleaseNotes042]]<br />
* [[ReleaseNotes041]]<br />
* [[ReleaseNotes040]]<br />
* [[ReleaseNotes039]]<br />
* [[ReleaseNotes038]]<br />
* [[ReleaseNotes037]]<br />
* [[ReleaseNotes036]]<br />
* [[ReleaseNotes035]]<br />
<br />
[[Category:Marketing]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.46&diff=18514Release notes/0.462008-01-13T18:20:38Z<p>Cilix: /* Converting objects to guidelines */</p>
<hr />
<div>=Inkscape 0.46=<br />
'''(not released yet)'''<br />
<br />
Highlights in this release:<br />
<br />
* Paintbucket tool<br />
<br />
* Tweak tool<br />
<br />
* 3D Box tool<br />
<br />
* Live path effects<br />
<br />
* Color management<br />
<br />
* New SVG filters and UI<br />
<br />
* Native PDF and AI import<br />
<br />
* XAML import/export<br />
<br />
* Open Clip Art Library integration (import/export)<br />
<br />
* Stock patterns<br />
<br />
* Bitmap editing extension effects<br />
<br />
* Full on-canvas gradient editing<br />
<br />
* Engraver's Toolbox in the Calligraphic tool<br />
<br />
* Touch selection<br />
<br />
* Dockable dialogs<br />
<br />
* Command-line access to verbs<br />
<br />
* Snapping made usable<br />
<br />
* "3D" / axonometric grid<br />
<br />
* Angled guidelines<br />
<br />
* Conversion of objects to guidelines<br />
<br />
* Significant speed and interactivity improvements<br />
<br />
* Hundreds of smaller features and bugfixes<br />
<br />
=Speed and interactivity=<br />
<br />
* 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. <br />
<br />
* '''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.<br />
<br />
* '''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). <br />
<br />
:'''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. <br />
<br />
* Minor improvements have been made to gradient rendering performance.<br />
<br />
* '''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. <br />
<br />
* '''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. <br />
<br />
* '''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.<br />
<br />
* Several improvements make '''canvas panning and scrolling''' smoother and more interactive in complex slow-rendering documents:<br />
<br />
:* 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 "dirty" but the '''panning is smoother than before''', with few if any "hiccups".<br />
<br />
:* '''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.<br />
<br />
:* 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.<br />
<br />
:* 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. <br />
<br />
:* The default '''starting speed and acceleration''' of Ctrl+arrows scrolling are slightly increased. (They are both settable in Preferences.)<br />
<br />
* Better responsiveness and more visual feedback in user interface: <br />
<br />
:*When you zoom, the '''zoom control''' on the right end of the statusbar now updates immediately, not after screen redraw as before. <br />
<br />
:*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. "Saving document...") while they work. <br />
<br />
:*The '''statusbar messages''' displayed while you're drawing a shape or a path in Pen tool do not lag behind the mouse movements.<br />
<br />
* '''Combine''' and '''Convert to paths''' commands are now orders of magnitude faster when applied to a selection with hundreds or thousands of objects.<br />
<br />
* 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.<br />
<br />
=Tools=<br />
<br />
==Paint Bucket tool==<br />
<br />
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 "fills in" the area in which you clicked. <br />
<br />
===How it works===<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
It places the rendered path onto the current layer, so you can have a layer on top (for example, "Inks") and select the layer below ("Colors") and do the fills so that they always appear below the Inks.<br />
<br />
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).<br />
<br />
===Style===<br />
<br />
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.<br />
<br />
===Controls===<br />
<br />
In the tool's '''Controls bar''':<br />
<br />
* 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:<br />
** Red<br />
** Green<br />
** Blue<br />
** Hue<br />
** Saturation<br />
** Lightness<br />
** Alpha<br />
<br />
* 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%.<br />
<br />
* 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.<br />
<br />
* 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:<br />
** None<br />
** Small (close gaps up to 2 pixels in size)<br />
** Medium (4 pixels)<br />
** Large (6 pixels)<br />
:Note that setting this parameter to other than None may slow down noticeably the filling of large areas.<br />
<br />
===Shortcuts===<br />
<br />
The tool's '''shortcuts''' are:<br />
<br />
* '''Single click''' performs filling from the click point.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
==Tweak tool==<br />
<br />
The Tweak tool is an exciting new way to edit drawings which largely blurs the<br />
distinction between vector and raster editing. Instead of meticulously selecting some<br />
objects and then performing an action on the selection, you can now select ''all''<br />
objects (or all objects you are interested in) and apply the Tweak tool's brush to<br />
smoothly and naturally change the shape or style of only those objects (or parts<br />
thereof) ''that the brush touches''.<br />
<br />
The area of the tool's action - its ''brush'' - is marked by an orange-colored circular<br />
outline that moves with your mouse cursor. However, that area actually has no sharp<br />
boundaries; the power of the tool's action falls off gradually, following a smooth<br />
bell-shaped profile. This makes the tool act softly and smoothly.<br />
<br />
The tool will work on any number of selected objects; for example, you can select all<br />
(Ctrl+A) and "smear" your entire drawing by Push mode or paint it by Color Paint<br />
mode. You can also apply it to groups of objects; it will go into groups and act on<br />
individual objects inside groups. If you're trying to use it without anything selected,<br />
it will remind you by a statusbar message to select some objects.<br />
<br />
===Width===<br />
<br />
The width of the tool's brush, in the range from 1 to 100, can be changed by the<br />
'''Width''' control in the tool's controls bar above the canvas. You can also change<br />
width by '''Left''' and '''Right''' arrow keys (same as in the Calligraphy tool) at any<br />
time (including during action) as well as '''Home''' and '''End'''. Also, as in Calligraphy<br />
tool, the visible width of the brush is independent of zoom; simply zooming in or out is<br />
often easier than adjusting the width if you want to cover a smaller or larger area of<br />
the drawing.<br />
<br />
===Force===<br />
<br />
The next control is '''Force''' which adjusts the power of the action, also in the<br />
range from 1 to 100. You can also change width by '''Up''' and '''Down''' arrow keys at<br />
any time (including during action).<br />
<br />
If you have a pressure-sensitive tablet and your "Use pressure" button on the right-hand<br />
end of the controls bar is on, then the force will also depend on how hard you actually<br />
press your pen into your tablet, changing in the range from zero to whatever you set in<br />
the Force control. If all you have is a mouse, then the force will be constant but still<br />
settable by the Force control. <br />
<br />
===Path editing modes===<br />
<br />
The Tweak tool has a number of '''modes''', selectable by toggle buttons in the tool's<br />
Controls bar and by keyboard shortcuts. Some of these modes change the shapes of <br />
paths while others affect the colors of objects. All these modes share the Width and<br />
Force controls but otherwise are quite different. Let's look at the path editing modes<br />
first.<br />
<br />
Unlike the Node tool, to edit paths with the Tweak tool you don't need to worry about<br />
where the nodes of a path are and how to manipulate them. You just apply the tool's<br />
brush to any point, and the selected paths at that point will reshape smoothly and<br />
naturally - as if made of soft jelly - regardless of where its nodes lie. If applied to<br />
a shape or text object, the tool converts them to paths automatically.<br />
<br />
While not very useful for technical drawings, tweaking paths will be indispensable for<br />
artistic uses of Inkscape - cartoons, drawings, sketches, anime, etc. This new<br />
functionality is somewhat similar to the tools such as "Pucker" and "Bloat" in the<br />
latest versions of Adobe Illustrator. <br />
<br />
There are currently six path editing modes in the Tweak tool: '''Push''', '''Shrink''',<br />
'''Grow''', '''Attract''', '''Repel''', and '''Roughen'''.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
: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).<br />
<br />
: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 Inflating and carving holes with Melting. Unlike the "node sculpting" mode in the Node tool, however, this does not require adding new nodes to the shape.<br />
<br />
* 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 ; you can use them for various central-symmetric distortions in parts of your paths.<br />
<br />
* The '''Roughen''' mode does exactly this: roughens the edge of the path without changing its overall shape. Slight roughening simply makes the edge crooked and uneven; strong roughening tears and explodes the edge into random blobs and splotches. Note that this operation, especially with high Fidelity, adds a lot of nodes which increases the size of your SVG document and may slow down Inkscape considerably. In particular, pushing/melting/inflating 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.<br />
<br />
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.<br />
<br />
====Fidelity====<br />
<br />
Any tweaking of a path slightly distorts the entire path, including even those parts<br />
that you didn't touch. These distortions are similar to those that a Simplify command<br />
produces. The '''Fidelity''' value (also in the range from 1 to 100, default is 50)<br />
allows you to control the amount of these distortions. With a higher fidelity, the<br />
distortions are less noticeable, but the path may end up having a lot of nodes which<br />
inflates up the SVG size and slows down Inkscape.<br />
<br />
The best value of Fidelity depends on the nature of your artwork. If you're sculpting an<br />
amorphous blob, you can do with low fidelity of about 20. If, however, you are pushing<br />
or inflating a text string (as a single path) and want the letters outside the distorted<br />
area to remain crisp and clean, you will need to raise fidelity to 80 or more. <br />
<br />
====Known problems====<br />
<br />
Known problems with the path editing modes in Tweak tool:<br />
<br />
# they don't work on open paths (an open path becomes closed if you tweak it);<br />
# they are rather slow; <br />
# they quickly eat memory; and <br />
# they are sometimes buggy - thin calligraphic strokes may suddenly disappear or change their shape drastically as you're melting or inflating them.<br />
<br />
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. <br />
<br />
Also, sometimes after roughening, further tweaking of a path becomes impossible with this diagnostic:<br />
<br />
WARNING **: Shape error in ConvertToShape: directedEulerian(a) == false<br />
<br />
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.<br />
<br />
===Color editing modes===<br />
<br />
The '''Color Paint''' and '''Color Jitter''' modes, unlike the path editing modes,<br />
change the colors of objects instead of their shapes. Yet they share enough common<br />
features with the path editing modes to be part of the same tool: These modes also use<br />
a circular soft-edged brush controlled by the Width and Force parameters on the Controls<br />
bar and affected by the pen pressure (if you have a pressure-sensitive tablet).<br />
<br />
* '''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.)<br />
<br />
: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).<br />
<br />
: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.<br />
<br />
* '''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.<br />
<br />
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.)<br />
<br />
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.<br />
<br />
<br />
====Channels====<br />
<br />
Color Paint and Color Jitter honor the '''Channels''' control. This control comprises<br />
the four buttons: '''H''', '''S''', '''L''', and '''O''', which allow you to turn on and off<br />
the tool's action on the object's hue, saturation, lightness, and opacity,<br />
correspondingly. For example, if you want to raise the saturation of some part of your<br />
drawing without changing the hue, select some maximum-saturation color (e.g. pure red)<br />
and turn off all Channels buttons except S. Similarly, you can replace the hues without<br />
affecting saturation or lightness (only H pressed), or lighten/darken all colors without<br />
changing their hues and saturation (only L pressed). Pressing O allows you to apply the<br />
master opacity from the tool's style to the master opacity of objects (but not fill or<br />
stroke opacity).<br />
<br />
====Usage notes====<br />
<br />
Color painting with Tweak tool is similar, but not exactly analogous to bitmap<br />
painting. Even though the tool itself works as a soft brush, it still applies its color<br />
to vector objects, which behave as vector objects usually do. For example, if you want<br />
to change the tint of the face in your drawing, and if a hand in the drawing is part of<br />
the same object as the face, that hand will change its tint too even if it's located far<br />
from the point you are painting. (We foresee a "fracture" command in one of the next<br />
versions of Inkscape which will help you turn a monolithic object into a mosaic of small<br />
fragments that will be then easy to paint with Tweak tool.) Still, even with this<br />
limitation, color painting is a novel way of dealing with vector drawings which allows<br />
you to quickly and intuitively make adjustments which would be awkward and slow with<br />
traditional approach.<br />
<br />
Drawings containing patterns or scatterings of small independent objects are best suited<br />
for color painting with Tweak tool. Examples include:<br />
<br />
* freehand drawings with Calligraphy pen, consisting of many separate strokes;<br />
<br />
* 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);<br />
<br />
* text converted to paths and with Break Apart command applied so that each letter is a separate path;<br />
<br />
* 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.<br />
<br />
Moreover, color tweaking can be useful for compositions with a few objects or even for<br />
single objects. Unlike all other color selection methods, painting with the Tweak tool<br />
implements the ''color mixing'' metaphor which is much more familiar to traditional<br />
artists than RGB sliders or even the color wheel. For example, start with a rectagle of<br />
pure blue color; then, pick different colors by Color Paint and apply light touches with<br />
minimum Force and minimum pen pressure: add a little green, a little brown, a little<br />
yellow, etc. until you have the exact hue you need. Similarly, you can whiten or blacken<br />
any hue by admixing white or black.<br />
<br />
You can also use color tweaking to add a tint, darken/lighten, saturate/desaturate, or<br />
color jitter your entire drawing. Just select all in all layers, zoom out, choose a<br />
large brush width so it covers all of the drawing, and apply a little color tweaking<br />
(with minimum Force) that will therefore affect all visible objects.<br />
<br />
===Keyboard shortcuts===<br />
<br />
* '''W''', '''Shift+F2''': switch to the Tweak tool<br />
<br />
* '''Shift+P''': switch to the Push mode<br />
<br />
* '''Shift+S''': switch to the Shrink mode<br />
<br />
* '''Shift+G''': switch to the Grow mode<br />
<br />
* '''Shift+A''': switch to the Attract mode<br />
<br />
* '''Shift+E''': switch to the Repel mode<br />
<br />
* '''Shift+R''': switch to the Roughen mode<br />
<br />
* '''Shift+C''': switch to the Color Paint mode<br />
<br />
* '''Shift+J''': switch to the Color Jitter mode<br />
<br />
* '''Left, Right, Home, End''': change width<br />
<br />
* '''Up, Down''': change force<br />
<br />
* '''mouse drag''': act on selected path in the current mode<br />
<br />
* '''Ctrl+mouse drag''': temporarily switch to Shrink (while Ctrl is down)<br />
<br />
* '''Shift+Ctrl+mouse drag''': temporarily switch to Grow (while Shift+Ctrl is down)<br />
<br />
==3D Box tool==<br />
<br />
Inkscape is a two-dimensional drawing tool. However, very often it is used to draw three-dimensional objects. The new '''3D box tool''' helps you create such 3D drawings by automating the most common operation: creating a three-dimensional box in a given perspective. The tool automatically ensures that all sides of the box lie on the corresponding perspective lines. We're not going to compete with Blender - but even simple things can go a long way.<br />
<br />
Currently in the 3D box tool you can:<br />
<br />
* draw a 3D box by dragging on canvas (use Shift+dragging without releasing the mouse button to extrude in z direction)<br />
<br />
* adjust any of its 3 dimensions by handles<br />
<br />
* move a 3D box "in perspective" 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<br />
<br />
* adjust the vanishing points of a perspective by dragging them across the canvas (see below) or toggling their states; all boxes sharing this perspective are transformed accordingly<br />
<br />
In SVG, a 3D box is represented as a '''group''' (svg:g) with a special extension attribute (in inkscape namespace); this group contains the 6 quadrilateral '''paths''' representing the sides of the box. Only the 3D box tool treats this object as a box; for all other tools it is just a group, so you can select any of the paths by Ctrl+click, apply any style to it, delete it, etc. You can of course transform the entire box or any face in it using Selector or Node tools.<br />
<br />
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 "dragger". 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.<br />
<br />
===Keyboard shortcuts===<br />
<br />
* '''X''', '''Alt+F4''': switch to the 3D box tool<br />
<br />
* 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.<br />
<br />
* '''L''': toggle visibility of perspective lines<br />
<br />
* '''A''': when perspective lines are visible, toggle between "all lines" and "only lines connected to front corners" (this can help to avoid visual clutter)<br />
<br />
[max]<br />
<br />
==Gradient Tool==<br />
===Selecting multiple stops===<br />
'''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. <br />
* Add a stop to the selected stops by '''Shift+click'''.<br />
* Press '''Ctrl+A''' to select all stops in the selected objects.<br />
* '''Shift+drag''' around stops to add them to selection.<br />
Multiple selected stops:<br />
*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.<br />
*Can be deleted at the same time by pressing '''Del'''.<br />
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.<br />
<br />
===Editing intermediate stops===<br />
'''Intermediate stops''' in gradients can be added, deleted, and edited on canvas (previously this was only possible in the Gradient Editor dialog).<br />
*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.<br />
*When two or more adjacent stops are selected, pressing '''Ins''' adds stops in the middles of all selected stop intervals.<br />
*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). <br />
:*Dragging with '''Ctrl''' moves the selected stops snapping them to 1/10 fractions of the available range.<br />
:*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.<br />
*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).<br />
*Stops can be deleted by '''Ctrl+Alt+Click''' on a stop or by the '''Del''' key for all the selected stop(s).<br />
:*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).<br />
:*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 & opacity of the remaining stop.<br />
*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.<br />
<br />
===Style of gradient stops===<br />
*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&Stroke dialog. Previously, opacity of a gradient handle was reflected as fill-opacity and stroke-opacity; now it is reflected as '''master opacity''' (the "O:" spinbutton in the selected style indicator, the "Master opacity" slider in Fill&Stroke). This makes it much easier to view and change opacity of gradient handles using only the selected style indicator in the statusbar.<br />
:*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.<br />
*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''').<br />
*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 "L Gradient" or "R Gradient" text labels as before). Also, this and other similar widget now use italic font face to indicate <i>None</i> and bold to indicate <b>Unset</b>.<br />
<br />
===Automatic duplication of gradients===<br />
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. <br />
<br />
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.<br />
<br />
==Calligraphy tool: Engraver's Toolbox ==<br />
<br />
Several new features were added to the Calligraphic pen to make<br />
Inkscape capable of the ancient art of '''line<br />
engraving'''. Traditional engraving is a very labour-intensive<br />
process, and while for a long time it was the only practical way<br />
of reproducing lifelike images in black-and-white print, about a<br />
century ago it was almost completely displaced by automatic<br />
halftone screens. However, line engravings have their<br />
characteristic charm, and there's no reason not to try to<br />
resurrect this art form with the help of Inkscape.<br />
<br />
A brief visual guide to the new functionality can be seen on<br />
these screenshots:<br />
<br />
http://inkscape.org/screenshots/gallery/inkscape-0.46-engraving1.png<br />
<br />
http://inkscape.org/screenshots/gallery/inkscape-0.46-engraving2.png<br />
<br />
<br />
===Tracking a guide path with Ctrl===<br />
<br />
One of the most common operations in line engraving is<br />
'''hatching''' (or sometimes ''cross-hatching'' when several<br />
hatching grids cross): filling a space with many parallel<br />
straight or variously curved lines (usually of varying width to<br />
represent a gradual shading). You could try to achieve a similar<br />
effect with e.g. path interpolation (blending), but it is rather<br />
cumbersome and limited; manual drawing of hatch lines, on the<br />
other hand, is tedious and nearly impossible to do<br />
uniformly. Now Inkscape provides "assisted hatching" by<br />
'''tracking a guide path''', allowing you to hatch quickly and<br />
uniformly and at the same time giving you sufficient manual<br />
control over the process.<br />
<br />
Here's how to do this. First, select the '''guide path''' that<br />
you will track. It may be another calligraphic stroke, any path<br />
or shape, or even a letter of a text object. Then switch to<br />
Calligraphic pen, select the desired parameters (line width,<br />
angle, fixation etc.) and, before starting to draw, press<br />
Ctrl. You will see a gray '''track circle''' centered at your<br />
mouse pointer and touching the closest point on the selected<br />
guide path. (If you have no guide path selected, a statusbar<br />
message will tell you to select it.)<br />
<br />
Now move your mouse close to the guide path, so that the track<br />
circle radius is equal to the desired spacing of your hatch<br />
pattern, and start drawing along the guide path. At that moment,<br />
the radius of the circle gets locked; now the circle slides<br />
along the guide path - and the actual stroke is drawn by the<br />
center of the tracking circle, ''not'' by your mouse point. As<br />
a result, you are getting a smooth stroke going parallel to the<br />
guide path and always at the same distance from it.<br />
<br />
When the stroke is ready, release your mouse button (or lift<br />
your tablet pen) but '''do not let go of the Ctrl key''' because<br />
as long as you have it pressed, the tool remembers the hatch<br />
spacing you set when you started drawing. Now, you have just<br />
created a new stroke and, as usual with Inkscape tools, it gets<br />
selected instead of what was selected before. In our case, this<br />
means that the newly drawn stroke itself becomes the new guide<br />
path. Next, you can draw a second stroke along the first one,<br />
then a third one along the second, etc. Eventually you can fill<br />
any desired space with uniform hatching.<br />
<br />
Alternatively, if you uncheck "Select new path" 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. <br />
<br />
The attachment to the guide path is not absolute. If you stray<br />
your mouse pointer far enough from the guide path, you will be<br />
able to tear it off (the track circle turns from green to red)<br />
and move freely. This is intentional; this feature allows you,<br />
for example, to continue drawing a stroke past the end of a<br />
guide stroke, thus making your hatching cover a wider area than<br />
the initial guide path. Special care is taken to make such<br />
tearing off as smooth as possible and to suppress violent jerks,<br />
but this is not always possible; the general advice is to not<br />
try to hatch too fast. If jerking and unintended tearoffs still<br />
bother you, try increasing the Mass parameter.<br />
<br />
Also, special code is in place to prevent flipovers - accidental<br />
jumps to the other side of the guide path. Brief flipovers are<br />
suppressed, but if you intentionally go over to the other side<br />
and stay there, eventually Inkscape will obey and your tracking<br />
stroke will also flip over to follow you.<br />
<br />
Tracking a guide also allows some slight feedback by gradually<br />
changing the tracking distance in response to your drawing<br />
behavior. Thus, if you're consistently trying to draw closer or<br />
farther from the guide than the current tracking distance, the<br />
distance will correspondingly decrease or increase, so you will<br />
get a hatching that is slightly spacing in or out. (The effect<br />
is very slight, however, so as not to become a nuisance.) Also,<br />
note that since tracking follows the edge of the stroke, strokes<br />
of varying width (such as those tracing background, see below)<br />
will result in gradual bending of the hatching pattern as you<br />
proceed.<br />
<br />
===Tracing background by stroke width===<br />
<br />
There is a new toggle button on the Calligraphy tool's controls<br />
bar, '''Trace background'''. When on, the width of your pen<br />
depends on the lightness of the background under the stroke in<br />
each point, so that white translates into the minimum stoke<br />
width (1) and black translates to the maximum (which is set by the<br />
Width parameter). This can work alone or in combination with<br />
pressure sensitivity, depending on whether the "Use pressure" button<br />
is also toggled.<br />
<br />
This feature allows you to not only hatch over an imported<br />
bitmap image or any drawing, but to do so automatically<br />
reproducing the highlights and shades of the background with<br />
your strokes becoming lighter and heavier as needed.<br />
<br />
===Misc features===<br />
<br />
* 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. <br />
<br />
* 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.)<br />
<br />
==Selector==<br />
<br />
* 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. <br />
<br />
: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.<br />
<br />
* 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.<br />
<br />
* Draging the '''scale handles with Alt''' now scales selection by an integer factor, i.e. up to '''2''', '''3''', '''4''', etc. times the original size or down to '''1/2'''. '''1/3''', '''1/4''', etc. of the original size (in any of the two dimensions independently). This way you can, for example, mirror any object around one of the edges of its box. (This replaces the old and rarely used "slow" scaling mode with Alt.)<br />
<br />
* '''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.<br />
<br />
* '''Objects to Marker''' was added to the objects menu, which converts the current selection to a marker, with the center point of the selection being set to the center of the marker.<br />
<br />
==Node tool==<br />
<br />
* 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 ('<' and '>' 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.<br />
<br />
* [helper path display - johan]<br />
** this is deactivated for normal paths now. only paths with LPE applied will show it. should there be a button to turn it on for normal paths aswell?<br />
<br />
* As a long-requested feature, two entry fields are added to the toolbar which allow precise editing of the coordinates of selected nodes.<br />
<br />
==Rectangle Tool==<br />
<br />
* '''Ctrl+dragging''' now also allows the creation of rectangles with sides constrained to the '''golden ratio''' (approx. 1 : 1.618034), not only integer ratios.<br />
<br />
==Ellipse Tool==<br />
<br />
* 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.<br />
<br />
* '''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.<br />
<br />
==Text tool==<br />
* [text toolbar - deadchip?]<br />
* If text contains a tref element, the text tool's behavior may not be as expected. Please see [[#The tref Element]]<br />
<br />
==Dropper Tool==<br />
<br />
The shortcut 'D' is now used to <i>toggle</i> (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.<br />
<br />
=SVG features=<br />
<br />
==The tref element==<br />
<br />
Inkscape can now correctly open files with '''tref''' elements, and new tref elements can be created manually in the XML editor.<br />
<br />
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'''.<br />
<br />
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'''.<br />
<br />
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.<br />
<br />
Existing tref elements can be converted into tspan elements with '''Edit > Clone > 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'''.<br />
<br />
A '''tref''' element can be mixed with any other elements allowed to be contained by a text element.<br />
<br />
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'''.<br />
<br />
==SVG filters==<br />
<br />
===New filters supported===<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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]<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
See also wiki page [[Filter Effects]] for more info on filters in Inkscape in general.<br />
<br />
===Filters UI===<br />
<br />
* New dialog for creating and modifying filter effects ('''Object>Filter Effects...''')<br />
* The list at the left of the dialog displays all filters currently in the document.<br />
** New filters can be added with the '''Add''' button beneath the list<br />
** Right-clicking a filter for the pop-up menu allows duplicating or removing a filter.<br />
** Double-clicking a filter will apply it to all selected objects<br />
** 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.<br />
* The second list, at the left of the dialog, displays the '''filter primitives''' that are contained within the currently-selected filter.<br />
** New primitives can be added by selecting the primitive type from the combo box beneath the list, and then pressing the '''Add''' button.<br />
** Right-clicking a primitive for the pop-up menu allows duplicating or removing a primitive.<br />
** Primitives can be rearranged by clicking and dragging any filter in the list.<br />
** 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.<br />
** The "in" and "in2" 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.<br />
*** 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.<br />
*** 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.<br />
*** 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.<br />
*** 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.<br />
*** Merge inputs have an empty input at the end. Dragging a connection from this input will add a new input to the primitive.<br />
<br />
=Live Path Effects (LPE)=<br />
<br />
'''Live path effects''' (not to be confused with extension effects or SVG filters) are a new way to <b>non-destructively modify path and shape objects</b>. 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. <br />
<br />
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.<br />
<br />
Live path effects were developed by Johan Engelen as part of the GSoC 2007.<br />
<br />
==Details about operation==<br />
The following schematic tries to explain how LPE work.<br />
<br />
original style ------------> output style<br />
original path --> LPE --> output path<br />
^<br />
|<br />
parameters<br />
<br />
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 <b>output style equals original style</b>.<br />
<br />
The parameters can be paths, numbers, points, text, in principle anything.<br />
<br />
<br />
==Applying effects==<br />
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.<br />
<br />
When a path with a path effect applied is selected, the statusbar description mentions that, for example "'''Path''' (4 nodes, path effect)".<br />
<br />
There is a special Paste Path Effect command (Ctrl+7) that can be used to copy effects from one path to another.<br />
<br />
==Editing effect parameters==<br />
When switching to the node edit tool (<b>F2</b>), the <b>original path</b> can be edited. The original path is shown as a red helper path. Normal path operations, like simplify, still work.<br />
<br />
Some parameters of effects can be edited on-canvas. For example, path parameters can be node-edited, by pressing the "edit on-canvas" button in the Path Effects dialog. <b>Press "7" to cycle through the different on-canvas editable parameters.</b> 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.<br />
<br />
==Available effects==<br />
<br />
===Path along path===<br />
The <b>Path along Path</b> 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 <b>on-canvas</b> and the result is <b>updated live</b>. This provides a direct equivalent of "vector brushes" or "skeletal strokes" features in other vector editors. <br />
<br />
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'.<br />
<br />
Example file: live-path-effects-pathalongpath.svg<br />
<br />
===Pattern along path===<br />
The <b>Pattern along Path</b> 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 <b>on-canvas</b> and the result is <b>updated live</b>. This provides a direct equivalent of "vector brushes" or "skeletal strokes" features in other vector editors. <br />
<br />
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.<br />
<br />
Example file: live-path-effects-pathalongpath.svg<br />
<br />
===Stitch Subcurves===<br />
The <b>Stitch Subcurves</b> effect connects points from two subpaths of the path with straight line or curved segments, i.e. the <i>stitches</i>. It looks a lot like the Effect Lines from Expression 3. The result is also referred to as "String Art". For some examples of string art, see http://members.shaw.ca/jillbritton/string_art/jbstringart.htm. <br />
<br />
The <b>shape</b> of the <b>connecting paths</b> can controlled by the <b>stroke path</b> parameter. This could be used to draw 'hair-shaped' connecting paths with sharp end-tips. Other controls include the <b>number of paths</b>, the variation in spacing between the connecting paths (<b>clustering</b>) and also whether the start and end points of the stitches should like exactly on the original subcurves or can <b>stray randomly</b> around them. Finally the width of the stroke path can be varied.<br />
<br />
Note that this effect can only be applied to a path with two subpaths in it, hence '<b>sub</b>curve' in the name. Use Path > Combine to create such a path from two separate paths.<br />
<br />
Example file: live-path-effects-curvestitch.svg<br />
<br />
Example file showing cooperation between Stitch Subcurves and Path along Path: live-path-effects-curvestitch-hair.svg<br />
<br />
===Gears===<br />
The <b>Gears</b> 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. <br />
<br />
Example file: live-path-effects-gears.svg<br />
<br />
==Development of new effects==<br />
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!<br />
<br />
[johan]<br />
<br />
=Extension effects=<br />
<br />
== Live preview ==<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''Progress dialog''': While an extension is working on a document, a small dialog is shown allowing the user to cancel the execution.<br />
<br />
== New and improved effects ==<br />
<br />
* The new '''Modify Path > Edge 3D''' extension creates black, grey and white paths around a shape, then blurs and clips them for a 3D effect.<br />
<br />
* The new '''Render > 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. <br />
<br />
* The new '''Render > 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.<br />
<br />
* The new '''Render > [[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]).<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* 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.<br />
<br />
*The new '''Color > 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.<br />
<br />
*The '''Whirl''' extension uses the center of view as the center of whirl, so you don't have to enter the center coordinates numerically.<br />
<br />
*The '''Render > Grid''' extension has got an extended range of grid spacings, from 0.1 to 1000 px.<br />
<br />
*The '''Render > Function Plotter''' extension can now plot using polar coordinates.<br />
<br />
*The '''Generate Template > 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.<br />
<br />
== XSLT effects ==<br />
<br />
* '''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.<br />
<br />
== ImageMagick effects ==<br />
<br />
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. <br />
<br />
* '''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.<br />
<br />
* '''Add Noise''' adds random noise of certain types to the bitmap.<br />
<br />
* '''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.)<br />
<br />
* '''Channel''' extracts the specified channel from the bitmap.<br />
<br />
* '''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.<br />
<br />
* '''Colorize''' overlays the bitmap with a given color at a given intensity.<br />
<br />
* '''Contrast''' lightly enhances the contrast (difference between lights and darks) of a bitmap.<br />
<br />
* '''Cycle Colormap''' cycles the colormap of a bitmap.<br />
<br />
* '''Despeckle''' reduce the speckle noise in a bitmap.<br />
<br />
* '''Edge''' hilights edges in a bitmap.<br />
<br />
* '''Emboss''' embosses a bitmap, hilighting edges with 3D effect.<br />
<br />
* '''Enhance''' enhance a bitmap, minimizing noise.<br />
<br />
* '''Equalize''' equalizes a bitmap. Histogram equalization.<br />
<br />
* '''Flop''' mirrors a bitmap, reflecting each scanline in the horizontal direction.<br />
<br />
* '''Gaussian Blur''' blurs a bitmap, more strongly than regular blur.<br />
<br />
* '''Implode''' sucks everything towards the center of the bitmap.<br />
<br />
* '''Level''' scales values falling between the given '''Black Point''' to '''White Point''' range to the full color range.<br />
<br />
* '''Level Channel''' acts the same way as level but for only one channel.<br />
<br />
* '''Median Filter''' filters a a bitmap by replacing each pixel component with the median color in a circular neighborhood<br />
<br />
* '''Modulate''' adjusts the percent hue, saturation, and brightness of a bitmap.<br />
<br />
* '''Negate''' takes the inverse of a bitmap.<br />
<br />
* '''Normalize''' normalizes a bitmap, expanding color range to the full possible range of color.<br />
<br />
* '''Oil Paint''' stylizes a bitmap so that it appears to be painted with oils.<br />
<br />
* '''Opacity''' modifies the opacity channel of a bitmap.<br />
<br />
* '''Raise''' alters the lightness of the edges of a bitmap to create a raised appearance, much like a frame.<br />
<br />
* '''Reduce Noise''' reduces noise in a bitmap by using a noise peak elimination filter.<br />
<br />
* '''Shade''' shades a bitmap by simulating a distant light source<br />
<br />
* '''Sharpen''' sharpens a bitmap.<br />
<br />
* '''Solarize''' solarizes a bitmap, like overexposing photographic film.<br />
<br />
* '''Spread''' randomly spread pixels in a bitmap within the radius of '''amount'''.<br />
<br />
* '''Swirl''' swirls the bitmap around the center point.<br />
<br />
* '''Threshold''' thresholds a bitmap.<br />
<br />
* '''Unsharpmask''' sharpens a bitmap using an unsharp mask algorithm.<br />
<br />
* '''Wave''' alters a bitmap along the sine wave.<br />
<br />
These effects are part of the Google Summer of Code 2007, coded by Christopher Brown.<br />
<br />
== Misc ==<br />
<br />
* All Python effects are switched from the old and unmaintained PyXML library to the new powerful [http://codespeak.net/lxml/ lxml] library.<br />
<br />
* 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.<br />
<br />
= Stock patterns =<br />
<br />
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&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:<br />
<br />
*A selection of plain '''stripes''' differing by the ratio of the stripe width to gap width (for example, the "Stripes 1:2" 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).<br />
<br />
*Two '''checkerboard''' patterns with black and white odd squares (even squares are transparent)<br />
<br />
*'''Packed circles''': a hexagonal pattern of black circles with transparent gaps.<br />
<br />
*'''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).<br />
<br />
*'''Wavy''' is a pattern of wavy lines.<br />
<br />
*'''Camouflage''' is a green-toned protective pattern such as that used by the military.<br />
<br />
*'''Ermine''' is the traditional heraldic pattern representing stylized stoat furs with black tails.<br />
<br />
*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 "texturize" them. <br />
<br />
After applying a stock pattern, switch to Node tool to edit the location, scale, and rotation of the pattern via on-canvas handles.<br />
<br />
All stock patterns are stored in the file <code>patterns/patterns.svg</code> in Inkscape's <code>share</code> directory (typically <code>/usr/share/inkscape</code> on Linux, <code><i>inkscape-dir</i>/share</code> on Windows). You can add your own patterns to this file or replace it with any other SVG file containing the patterns you need.<br />
<br />
=Color management=<br />
<br />
== Calibrated SVG color including CMYK ==<br />
<br />
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<br />
optional "icc-color(...)" paint components as described in section 11.2 "Specifying paint" of the SVG 1.1 specification<br />
[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.<br />
<br />
The new CMS color selector tab allows these colors to be edited.<br />
<br />
== Display adjustment ==<br />
<br />
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.<br />
<br />
=== Per-window adjustment ===<br />
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.<br />
<br />
=== XICC Support ===<br />
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.<br />
<br />
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.<br />
<br />
=== Multi-monitor aware ===<br />
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.<br />
<br />
== Soft Proofing ==<br />
<br />
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.<br />
<br />
=Snapping=<br />
<br />
* Snapping has been implemented or improved for:<br />
<br />
:* '''Newly created shapes'''<br />
<br />
:* '''Skewing''' of objects<br />
<br />
:* '''Handles''' of objects, incl. '''gradients'''<br />
<br />
:* '''Images''', '''ellipses''', and '''clones'''<br />
<br />
:* Text boxes, which snap to '''text baselines''' again<br />
<br />
:* Objects, for which snapping now optionally considers the '''rotation center'''<br />
<br />
:* Objects, which now allow for '''constrained snapping'''<br />
<br />
:* '''Guides''', which now snap while dragging them<br />
<br />
:* '''Axonometric grids'''<br />
<br />
:* '''Angled guide lines'''<br />
<br />
:* '''Bounding boxes''', of which now all four corners snap<br />
<br />
<br />
<br />
* Other snapping fixes and improvements include:<br />
<br />
:* It is now possible to snap to '''intersections''' of e.g. gridlines with guidelines, and of line segments. <br />
<br />
:* The '''snapping preferences dialog''' has been restyled to make it more intuitive. <br />
<br />
:* Inkscape now has a global snapping toggle, which has been added to the view-menu and is accessible through a shortcut<br />
<br />
:* Inkscape now allows for controlling the snapping per grid when multiple grids are being used<br />
<br />
:* Snapping distance is now set in screen pixels and is therefore '''independent of zoom'''. <br />
<br />
:* Snapping of objects has been made more clean, by only snapping '''bounding box corners to bounding boxes''', and '''nodes to other nodes and paths'''.<br />
<br />
:* The time it takes to snap to objects using the selector tool has been reduced significantly.<br />
<br />
:* The bug where "node-to-node" snapping caused jerky movement of nodes is fixed.<br />
<br />
:* The '''aspect ratio''' is correctly preserved while scaling objects with snapping turned on.<br />
<br />
:* Only nodes at '''non-smooth parts''' of a path now snap.<br />
<br />
:* The confusing "Default transformations origin" 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).<br />
<br />
:* 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).<br />
<br />
=Grids=<br />
Grids have undergone some big changes under-the-hood. These are the visible changes:<br />
* There is a <b>new 3D/axonometric grid</b>!<br />
* A new tab in the document properties dialog, solely meant for grids; the former grid/guide tab is now solely for guides. I envision a list of guides there in the future, for easier deletion of guides etc.<br />
* More than one grid can be active at the same time<br />
** Each grid can be enabled/disabled separately from the document properties dialog.<br />
* One can make grids invisible by unchecking the "Visible" checkbox in the grid's tab in the document properties dialog. Snapping is still enabled even for invisible grids!<br />
* Multiple views on the same document share the same grids, but the grid can be turned off for each view separately. For example: one could have an overview view without 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. (sorry i am not able to explain more clearly, perhaps someone else can?)<br />
* Grid information is now stored in SVG as a child of sodipodi:namedview. Old files will be converted to this new format automatically<br />
* The rectangular grid now has an option to show dots on gridline intersections instead of solid lines<br />
<br />
From developer perspective:<br />
<br />
* Implementation of new grids is much easier now; subclassing CanvasGrid and adding an entry in the is enough. Have a peek at how the rectangular grid is implemented (CanvasXYGrid).<br />
* Note that there is no longer "the grid", there might be several grids active now!<br />
<br />
A side effect of removal of old gridcode: apparantly the origin of the desktop rules used to be set to the origin of the grid. I find this strange: specifying a grid origin of (2,2) would have me think the origin would be at ruler location (2,2) instead of (0,0) as it is in 0.45.1.<br />
I have commented the grid-origin correction to the ruler range, because now there is not a single grid anymore to correct it for. Isn't there a control somewhere to define the documents origin? Now the ruler origin is set to (0,0)<br />
<br />
--johan<br />
<br />
=Angled guidelines=<br />
<br />
Now, Inkscape also provides angled guidelines! Double click on a guide to set its angle.<br />
<br />
* When dragging a guideline off the rulers close to the edge, the guideline will automatically be angled. The angle is set depending on the grid.<br />
** For the rectangular grid, the angle is 45 degrees.<br />
** For the axonometric grid, the angle is matched to the grid. When the Ctrl-key is pressed, the angle is perpendicular to the grid lines (useful for aligning gradients).<br />
<br />
=Converting objects to guidelines=<br />
<br />
Selected objects can now be converted to guidelines. To do this, either use the menu command '''"Object->Object to guides"''' or press '''Shift+G''' in Selector tool. The conversion process recurses into groups, i.e. all objects in the current selection are converted regardless if they are grouped or not.<br />
<br />
Usually, conversion happens by placing the guidelines around the object's '''bounding box''' (use the corresponding checkbox in the preferences for Selector tool to switch between geometric and visual bounding box).<br />
<br />
For '''rectangles''' and '''3D boxes''' there is a special option in their preferences pages (checked by default) which 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.<br />
<br />
=Import/Export=<br />
<br />
==PDF and AI import==<br />
<br />
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). <br />
<br />
'''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. <br />
<br />
'''PDF import settings''': After opening a PDF or AI document, the PDF Import Settings dialog shows up. Here you can select:<br />
<br />
* the '''page''' to be imported from a multipage PDF;<br />
<br />
* 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.);<br />
<br />
* 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;<br />
<br />
* a checkbox controlling whether the '''images''' should be '''embedded''' into the resulting SVG document or saved on the current path;<br />
<br />
* 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).<br />
<br />
'''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.)<br />
<br />
To work around this, select the text object you want to edit and use '''Text > 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. <br />
<br />
Note that there is a way to select even a single line in a text block. For this, open the XML editor, expand the <svg:text> tree branch corresponding to your text, and select any of the <svg:tspan> 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+> or Alt+<).<br />
<br />
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.<br />
<br />
==PDF export==<br />
<br />
* A new cairo-based PDF exporter has been added to Inkscape (marked as "Cairo PDF" in the export format list). Inkscape 0.46 can export shapes, strokes, transparency, gradients, patterns, text, and images correctly to cairo. While clipping paths and masks are known to be faulty or missing. 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.<br />
<br />
* A new cairo-based PostScript exporter has been added (marked as "Cairo PS" 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.<br />
<br />
==CDR (CorelDraw) import==<br />
<br />
Inkscape can use [http://www.sk1project.org/modules.php?name=Products&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 (since UniConvertor is Unix-only) and requires that you have Python and UniConvertor installed. As of UniConvertor 1.0rc2, only versions from 7 to X3 of the CDR format are supported, and text objects are not converted. <br />
<br />
==XAML import/export==<br />
<br />
* Inkscape can import vector graphics portions of XAML documents, as well as export its documents to XAML.<br />
<br />
==Adobe Illustrator SVG clean import==<br />
<br />
* 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.<br />
<br />
==Bitmap export==<br />
<br />
* '''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.<br />
<br />
: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 "export" layer. In that layer, "slice" 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 "export" layer, select all in that layer (Ctrl+A), and export with the ''Batch export selected objects'' checkbox on.<br />
<br />
* '''Hide all except selected''': A new checkbox allows you to hide in the exported image everything except selected object(s).<br />
<br />
* The Export dialog automatically appends the '''.png''' extension to the export filename you specify.<br />
<br />
== Open Clip Art Library import and export ==<br />
<br />
{rejon}<br />
<br />
=Command line=<br />
<br />
Several new command line options are added that make Inkscape even more scriptable and automatable than before.<br />
<br />
* --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.<br />
<br />
* --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.<br />
<br />
* --select followed by a node ID will allow you to add a node to the list of selected objects.<br />
<br />
* --query-all produces a comma delimited listing of all objects in the document, with their x, y, height, and width values.<br />
<br />
These options can be used, for example, for performance testing. You could do something like this:<br />
<br />
$ time inkscape --verb=FileClose my_complex_file.svg<br />
<br />
to measure the time it takes to load and display the file.<br />
<br />
Of course, with the ability to select objects, it can be much more useful than<br />
that. You can call extension effects, or any other verb, then FileSave and<br />
FileClose to automate all kinds of operations on your drawings.<br />
<br />
=User interface=<br />
<br />
== [dockable dialogs - gustav] ==<br />
<br />
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.<br />
<br />
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&mdash;this allows other dialogs to be dragged and dropped on it to form a floating group of dialogs.<br />
<br />
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'' > ''Dialog behavior'' in the Inkscape preferences dialog.<br />
<br />
Known issues:<br />
<br />
* Some of Inkscape's dialogs are yet to be adapted to allow docking, these include the "Text and Font" dialog, the "Tiled clones" dialog, the "XML editor" and the "Object properties" dialog.<br />
<br />
* [Remembered positions of dockable floating dialogs is inexact.] <br />
<br />
[options]<br />
<br />
== [toolbars - [[JonCruz]]] ==<br />
<br />
'''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.<br />
<br />
[calligraphy: menus, tooltips; star; ...]<br />
<br />
Switched to stock GTK+ toolbars.<br />
<br />
Extra magic secret sauce added.<br />
<br />
== [filedialogs - [[JonCruz]]] ==<br />
<br />
== Swatches panel, color drag-and-drop ==<br />
<br />
* Right-clicking a color swatch now opens a context menu which allows you to apply the color to the fill or stroke of selection.<br />
<br />
* Dragging colors from the color palette has been fixed and improved:<br />
<br />
:* 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.)<br />
<br />
:* 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.)<br />
<br />
:* 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.<br />
<br />
==Color gestures==<br />
<br />
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 "None", "N/A", 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.<br />
<br />
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'''.<br />
<br />
The adjustment is done by '''"rotating"''' the color swatch away from the original direction which is assumed to be '''NE at 45 degrees''' (i.e. from<br />
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.<br />
<br />
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.<br />
<br />
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. <br />
<br />
You can '''switch channels while you drag'''. That is, you don't need to <br />
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.<br />
<br />
The '''Alt''' modifier is special. Pressing Alt means "do nothing"; 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.<br />
<br />
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.<br />
<br />
Apart from precise adjustments, you can use color gestures to very quickly perform some common color transformations:<br />
<br />
* Ctrl+drag the swatch to the right and down to paint all selected objects black.<br />
<br />
* Ctrl+drag the swatch upwards and to the left to paint all selected objects white.<br />
<br />
* Shift+drag the swatch to the right and down to desaturate the color of selected objects.<br />
<br />
* Shift+drag the swatch upwards and to the left to maximize saturation of the color of selected objects. <br />
<br />
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.<br />
<br />
This new technique requires some getting used to, but once you get the idea it is quite convenient, fast, and precise.<br />
<br />
== Print dialog integration == <br />
<br />
* '''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.<br />
<br />
== Saving window geometry globally ==<br />
<br />
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 "Save geometry to preferences" 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).<br />
<br />
== Preserving zoom/view of reverted documents ==<br />
<br />
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.<br />
<br />
== New ways to scroll and zoom ==<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* In the Zoom tool, right mouse button always zooms out instead of calling the context menu (which is rather useless in this tool anyway).<br />
<br />
== Using other keys in place of Alt ==<br />
<br />
* 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 <code>mapalt</code> in the <code>options</code> 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 "Modifiers" when the mouse is held over a key on the main display.<br />
<br />
== GTK theme on OS X ==<br />
<br />
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 "Appearance" and "Highlight Color" set in System Preferences > Appearance.<br />
<br />
=Other changes and improvements=<br />
<br />
* '''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.<br />
<br />
* 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. <br />
<br />
* The somewhat cryptic "F:" and "S:" 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.<br />
<br />
* 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. "Style of new rectangles", "Style of new calligraphic strokes", etc.)<br />
<br />
* 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. <br />
<br />
* After dragging a curve segment in Node tool, Inkscape no longer selects the two adjacent nodes if they were not selected before. <br />
<br />
* 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. <br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.)<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* 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 <code>default.svg</code>, 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 > New submenu).<br />
<br />
* 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.<br />
<br />
* 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 "slideshow mode" of the main inkscape application (-s or --slideshow command line option) is removed; use inkview instead.<br />
<br />
* In Document Metadata dialog, updated '''Creative Commons Licenses''' to version '''3.0'''.<br />
<br />
* Preferences have been added for setting the default metadata and licenses, so this information can be automatically filled in with new documents.<br />
<br />
* The built-in '''Potrace''' tracing engine is upgraded to version '''1.8''' with some minor bugs fixed.<br />
<br />
* File dialog windows (open/save) now have an '''Enable preview''' checkbox which allows you to disable the preview pane.<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* The option '''Import bitmap as <image>''' 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 <image> element.<br />
<br />
* 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 & stroke dialog.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* Add some new '''UML markers''', including filled and hollow diamonds and triangles.<br />
<br />
* 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'''.<br />
<br />
=Notable bugfixes=<br />
<br />
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]].<br />
<br />
* The '''sodipodi:docbase''' attribute is no longer added to the root <svg> 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.<br />
<br />
* 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. <br />
<br />
* Inkscape now properly quotes <code>font-family</code> values and therefore can use '''fonts''' with various '''nonalphanumeric characters''' in their names, which previously failed. <br />
<br />
* 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.<br />
<br />
* 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).<br />
<br />
* 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).<br />
<br />
* '''Stock markers''' now appear in the "recently used markers" section of the marker selector dropdowns in the Fill & Stroke dialog. Before, any markers with stock id's (including markers modified by the user) were hidden, making it difficult to work with modified stock markers.<br />
<br />
* 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.<br />
<br />
* Previously, if there was a single '''invalid property''' in a <code>style</code> 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.<br />
<br />
* 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. <br />
<br />
* Master opacity did not apply to stroke '''markers''' as it should; fixed.<br />
<br />
* '''Creative Commons Public Domain Declaration URI''' points to the right location now.<br />
<br />
* Text objects didn't display the '''pattern editing handles'''; fixed.<br />
<br />
* 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.<br />
<br />
* Clones were wrongly unlinked when their original was moved to another layer; fixed.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* In Tile Clones dialog, the PMG symmetry group was created incorrectly, which is now fixed.<br />
<br />
= Previous releases =<br />
<br />
* [[ReleaseNotes045]]<br />
* [[ReleaseNotes044]]<br />
* [[ReleaseNotes043]]<br />
* [[ReleaseNotes042]]<br />
* [[ReleaseNotes041]]<br />
* [[ReleaseNotes040]]<br />
* [[ReleaseNotes039]]<br />
* [[ReleaseNotes038]]<br />
* [[ReleaseNotes037]]<br />
* [[ReleaseNotes036]]<br />
* [[ReleaseNotes035]]<br />
<br />
[[Category:Marketing]]</div>Cilixhttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.46&diff=18509Release notes/0.462008-01-13T17:46:37Z<p>Cilix: </p>
<hr />
<div>=Inkscape 0.46=<br />
'''(not released yet)'''<br />
<br />
Highlights in this release:<br />
<br />
* Paintbucket tool<br />
<br />
* Tweak tool<br />
<br />
* 3D Box tool<br />
<br />
* Live path effects<br />
<br />
* Color management<br />
<br />
* New SVG filters and UI<br />
<br />
* Native PDF and AI import<br />
<br />
* XAML import/export<br />
<br />
* Open Clip Art Library integration (import/export)<br />
<br />
* Stock patterns<br />
<br />
* Bitmap editing extension effects<br />
<br />
* Full on-canvas gradient editing<br />
<br />
* Engraver's Toolbox in the Calligraphic tool<br />
<br />
* Touch selection<br />
<br />
* Dockable dialogs<br />
<br />
* Command-line access to verbs<br />
<br />
* Snapping made usable<br />
<br />
* "3D" / axonometric grid<br />
<br />
* Angled guidelines<br />
<br />
* Conversion of objects to guidelines<br />
<br />
* Significant speed and interactivity improvements<br />
<br />
* Hundreds of smaller features and bugfixes<br />
<br />
=Speed and interactivity=<br />
<br />
* 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. <br />
<br />
* '''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.<br />
<br />
* '''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). <br />
<br />
:'''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. <br />
<br />
* Minor improvements have been made to gradient rendering performance.<br />
<br />
* '''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. <br />
<br />
* '''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. <br />
<br />
* '''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.<br />
<br />
* Several improvements make '''canvas panning and scrolling''' smoother and more interactive in complex slow-rendering documents:<br />
<br />
:* 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 "dirty" but the '''panning is smoother than before''', with few if any "hiccups".<br />
<br />
:* '''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.<br />
<br />
:* 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.<br />
<br />
:* 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. <br />
<br />
:* The default '''starting speed and acceleration''' of Ctrl+arrows scrolling are slightly increased. (They are both settable in Preferences.)<br />
<br />
* Better responsiveness and more visual feedback in user interface: <br />
<br />
:*When you zoom, the '''zoom control''' on the right end of the statusbar now updates immediately, not after screen redraw as before. <br />
<br />
:*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. "Saving document...") while they work. <br />
<br />
:*The '''statusbar messages''' displayed while you're drawing a shape or a path in Pen tool do not lag behind the mouse movements.<br />
<br />
* '''Combine''' and '''Convert to paths''' commands are now orders of magnitude faster when applied to a selection with hundreds or thousands of objects.<br />
<br />
* 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.<br />
<br />
=Tools=<br />
<br />
==Paint Bucket tool==<br />
<br />
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 "fills in" the area in which you clicked. <br />
<br />
===How it works===<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
It places the rendered path onto the current layer, so you can have a layer on top (for example, "Inks") and select the layer below ("Colors") and do the fills so that they always appear below the Inks.<br />
<br />
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).<br />
<br />
===Style===<br />
<br />
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.<br />
<br />
===Controls===<br />
<br />
In the tool's '''Controls bar''':<br />
<br />
* 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:<br />
** Red<br />
** Green<br />
** Blue<br />
** Hue<br />
** Saturation<br />
** Lightness<br />
** Alpha<br />
<br />
* 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%.<br />
<br />
* 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.<br />
<br />
* 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:<br />
** None<br />
** Small (close gaps up to 2 pixels in size)<br />
** Medium (4 pixels)<br />
** Large (6 pixels)<br />
:Note that setting this parameter to other than None may slow down noticeably the filling of large areas.<br />
<br />
===Shortcuts===<br />
<br />
The tool's '''shortcuts''' are:<br />
<br />
* '''Single click''' performs filling from the click point.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
==Tweak tool==<br />
<br />
The Tweak tool is an exciting new way to edit drawings which largely blurs the<br />
distinction between vector and raster editing. Instead of meticulously selecting some<br />
objects and then performing an action on the selection, you can now select ''all''<br />
objects (or all objects you are interested in) and apply the Tweak tool's brush to<br />
smoothly and naturally change the shape or style of only those objects (or parts<br />
thereof) ''that the brush touches''.<br />
<br />
The area of the tool's action - its ''brush'' - is marked by an orange-colored circular<br />
outline that moves with your mouse cursor. However, that area actually has no sharp<br />
boundaries; the power of the tool's action falls off gradually, following a smooth<br />
bell-shaped profile. This makes the tool act softly and smoothly.<br />
<br />
The tool will work on any number of selected objects; for example, you can select all<br />
(Ctrl+A) and "smear" your entire drawing by Push mode or paint it by Color Paint<br />
mode. You can also apply it to groups of objects; it will go into groups and act on<br />
individual objects inside groups. If you're trying to use it without anything selected,<br />
it will remind you by a statusbar message to select some objects.<br />
<br />
===Width===<br />
<br />
The width of the tool's brush, in the range from 1 to 100, can be changed by the<br />
'''Width''' control in the tool's controls bar above the canvas. You can also change<br />
width by '''Left''' and '''Right''' arrow keys (same as in the Calligraphy tool) at any<br />
time (including during action) as well as '''Home''' and '''End'''. Also, as in Calligraphy<br />
tool, the visible width of the brush is independent of zoom; simply zooming in or out is<br />
often easier than adjusting the width if you want to cover a smaller or larger area of<br />
the drawing.<br />
<br />
===Force===<br />
<br />
The next control is '''Force''' which adjusts the power of the action, also in the<br />
range from 1 to 100. You can also change width by '''Up''' and '''Down''' arrow keys at<br />
any time (including during action).<br />
<br />
If you have a pressure-sensitive tablet and your "Use pressure" button on the right-hand<br />
end of the controls bar is on, then the force will also depend on how hard you actually<br />
press your pen into your tablet, changing in the range from zero to whatever you set in<br />
the Force control. If all you have is a mouse, then the force will be constant but still<br />
settable by the Force control. <br />
<br />
===Path editing modes===<br />
<br />
The Tweak tool has a number of '''modes''', selectable by toggle buttons in the tool's<br />
Controls bar and by keyboard shortcuts. Some of these modes change the shapes of <br />
paths while others affect the colors of objects. All these modes share the Width and<br />
Force controls but otherwise are quite different. Let's look at the path editing modes<br />
first.<br />
<br />
Unlike the Node tool, to edit paths with the Tweak tool you don't need to worry about<br />
where the nodes of a path are and how to manipulate them. You just apply the tool's<br />
brush to any point, and the selected paths at that point will reshape smoothly and<br />
naturally - as if made of soft jelly - regardless of where its nodes lie. If applied to<br />
a shape or text object, the tool converts them to paths automatically.<br />
<br />
While not very useful for technical drawings, tweaking paths will be indispensable for<br />
artistic uses of Inkscape - cartoons, drawings, sketches, anime, etc. This new<br />
functionality is somewhat similar to the tools such as "Pucker" and "Bloat" in the<br />
latest versions of Adobe Illustrator. <br />
<br />
There are currently six path editing modes in the Tweak tool: '''Push''', '''Shrink''',<br />
'''Grow''', '''Attract''', '''Repel''', and '''Roughen'''.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
: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).<br />
<br />
: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 Inflating and carving holes with Melting. Unlike the "node sculpting" mode in the Node tool, however, this does not require adding new nodes to the shape.<br />
<br />
* 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 ; you can use them for various central-symmetric distortions in parts of your paths.<br />
<br />
* The '''Roughen''' mode does exactly this: roughens the edge of the path without changing its overall shape. Slight roughening simply makes the edge crooked and uneven; strong roughening tears and explodes the edge into random blobs and splotches. Note that this operation, especially with high Fidelity, adds a lot of nodes which increases the size of your SVG document and may slow down Inkscape considerably. In particular, pushing/melting/inflating 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.<br />
<br />
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.<br />
<br />
====Fidelity====<br />
<br />
Any tweaking of a path slightly distorts the entire path, including even those parts<br />
that you didn't touch. These distortions are similar to those that a Simplify command<br />
produces. The '''Fidelity''' value (also in the range from 1 to 100, default is 50)<br />
allows you to control the amount of these distortions. With a higher fidelity, the<br />
distortions are less noticeable, but the path may end up having a lot of nodes which<br />
inflates up the SVG size and slows down Inkscape.<br />
<br />
The best value of Fidelity depends on the nature of your artwork. If you're sculpting an<br />
amorphous blob, you can do with low fidelity of about 20. If, however, you are pushing<br />
or inflating a text string (as a single path) and want the letters outside the distorted<br />
area to remain crisp and clean, you will need to raise fidelity to 80 or more. <br />
<br />
====Known problems====<br />
<br />
Known problems with the path editing modes in Tweak tool:<br />
<br />
# they don't work on open paths (an open path becomes closed if you tweak it);<br />
# they are rather slow; <br />
# they quickly eat memory; and <br />
# they are sometimes buggy - thin calligraphic strokes may suddenly disappear or change their shape drastically as you're melting or inflating them.<br />
<br />
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. <br />
<br />
Also, sometimes after roughening, further tweaking of a path becomes impossible with this diagnostic:<br />
<br />
WARNING **: Shape error in ConvertToShape: directedEulerian(a) == false<br />
<br />
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.<br />
<br />
===Color editing modes===<br />
<br />
The '''Color Paint''' and '''Color Jitter''' modes, unlike the path editing modes,<br />
change the colors of objects instead of their shapes. Yet they share enough common<br />
features with the path editing modes to be part of the same tool: These modes also use<br />
a circular soft-edged brush controlled by the Width and Force parameters on the Controls<br />
bar and affected by the pen pressure (if you have a pressure-sensitive tablet).<br />
<br />
* '''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.)<br />
<br />
: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).<br />
<br />
: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.<br />
<br />
* '''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.<br />
<br />
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.)<br />
<br />
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.<br />
<br />
<br />
====Channels====<br />
<br />
Color Paint and Color Jitter honor the '''Channels''' control. This control comprises<br />
the four buttons: '''H''', '''S''', '''L''', and '''O''', which allow you to turn on and off<br />
the tool's action on the object's hue, saturation, lightness, and opacity,<br />
correspondingly. For example, if you want to raise the saturation of some part of your<br />
drawing without changing the hue, select some maximum-saturation color (e.g. pure red)<br />
and turn off all Channels buttons except S. Similarly, you can replace the hues without<br />
affecting saturation or lightness (only H pressed), or lighten/darken all colors without<br />
changing their hues and saturation (only L pressed). Pressing O allows you to apply the<br />
master opacity from the tool's style to the master opacity of objects (but not fill or<br />
stroke opacity).<br />
<br />
====Usage notes====<br />
<br />
Color painting with Tweak tool is similar, but not exactly analogous to bitmap<br />
painting. Even though the tool itself works as a soft brush, it still applies its color<br />
to vector objects, which behave as vector objects usually do. For example, if you want<br />
to change the tint of the face in your drawing, and if a hand in the drawing is part of<br />
the same object as the face, that hand will change its tint too even if it's located far<br />
from the point you are painting. (We foresee a "fracture" command in one of the next<br />
versions of Inkscape which will help you turn a monolithic object into a mosaic of small<br />
fragments that will be then easy to paint with Tweak tool.) Still, even with this<br />
limitation, color painting is a novel way of dealing with vector drawings which allows<br />
you to quickly and intuitively make adjustments which would be awkward and slow with<br />
traditional approach.<br />
<br />
Drawings containing patterns or scatterings of small independent objects are best suited<br />
for color painting with Tweak tool. Examples include:<br />
<br />
* freehand drawings with Calligraphy pen, consisting of many separate strokes;<br />
<br />
* 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);<br />
<br />
* text converted to paths and with Break Apart command applied so that each letter is a separate path;<br />
<br />
* 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.<br />
<br />
Moreover, color tweaking can be useful for compositions with a few objects or even for<br />
single objects. Unlike all other color selection methods, painting with the Tweak tool<br />
implements the ''color mixing'' metaphor which is much more familiar to traditional<br />
artists than RGB sliders or even the color wheel. For example, start with a rectagle of<br />
pure blue color; then, pick different colors by Color Paint and apply light touches with<br />
minimum Force and minimum pen pressure: add a little green, a little brown, a little<br />
yellow, etc. until you have the exact hue you need. Similarly, you can whiten or blacken<br />
any hue by admixing white or black.<br />
<br />
You can also use color tweaking to add a tint, darken/lighten, saturate/desaturate, or<br />
color jitter your entire drawing. Just select all in all layers, zoom out, choose a<br />
large brush width so it covers all of the drawing, and apply a little color tweaking<br />
(with minimum Force) that will therefore affect all visible objects.<br />
<br />
===Keyboard shortcuts===<br />
<br />
* '''W''', '''Shift+F2''': switch to the Tweak tool<br />
<br />
* '''Shift+P''': switch to the Push mode<br />
<br />
* '''Shift+S''': switch to the Shrink mode<br />
<br />
* '''Shift+G''': switch to the Grow mode<br />
<br />
* '''Shift+A''': switch to the Attract mode<br />
<br />
* '''Shift+E''': switch to the Repel mode<br />
<br />
* '''Shift+R''': switch to the Roughen mode<br />
<br />
* '''Shift+C''': switch to the Color Paint mode<br />
<br />
* '''Shift+J''': switch to the Color Jitter mode<br />
<br />
* '''Left, Right, Home, End''': change width<br />
<br />
* '''Up, Down''': change force<br />
<br />
* '''mouse drag''': act on selected path in the current mode<br />
<br />
* '''Ctrl+mouse drag''': temporarily switch to Shrink (while Ctrl is down)<br />
<br />
* '''Shift+Ctrl+mouse drag''': temporarily switch to Grow (while Shift+Ctrl is down)<br />
<br />
==3D Box tool==<br />
<br />
Inkscape is a two-dimensional drawing tool. However, very often it is used to draw three-dimensional objects. The new '''3D box tool''' helps you create such 3D drawings by automating the most common operation: creating a three-dimensional box in a given perspective. The tool automatically ensures that all sides of the box lie on the corresponding perspective lines. We're not going to compete with Blender - but even simple things can go a long way.<br />
<br />
Currently in the 3D box tool you can:<br />
<br />
* draw a 3D box by dragging on canvas (use Shift+dragging without releasing the mouse button to extrude in z direction)<br />
<br />
* adjust any of its 3 dimensions by handles<br />
<br />
* move a 3D box "in perspective" 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<br />
<br />
* adjust the vanishing points of a perspective by dragging them across the canvas (see below) or toggling their states; all boxes sharing this perspective are transformed accordingly<br />
<br />
In SVG, a 3D box is represented as a '''group''' (svg:g) with a special extension attribute (in inkscape namespace); this group contains the 6 quadrilateral '''paths''' representing the sides of the box. Only the 3D box tool treats this object as a box; for all other tools it is just a group, so you can select any of the paths by Ctrl+click, apply any style to it, delete it, etc. You can of course transform the entire box or any face in it using Selector or Node tools.<br />
<br />
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 "dragger". 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.<br />
<br />
===Keyboard shortcuts===<br />
<br />
* '''X''', '''Alt+F4''': switch to the 3D box tool<br />
<br />
* 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.<br />
<br />
* '''L''': toggle visibility of perspective lines<br />
<br />
* '''A''': when perspective lines are visible, toggle between "all lines" and "only lines connected to front corners" (this can help to avoid visual clutter)<br />
<br />
[max]<br />
<br />
==Gradient Tool==<br />
===Selecting multiple stops===<br />
'''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. <br />
* Add a stop to the selected stops by '''Shift+click'''.<br />
* Press '''Ctrl+A''' to select all stops in the selected objects.<br />
* '''Shift+drag''' around stops to add them to selection.<br />
Multiple selected stops:<br />
*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.<br />
*Can be deleted at the same time by pressing '''Del'''.<br />
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.<br />
<br />
===Editing intermediate stops===<br />
'''Intermediate stops''' in gradients can be added, deleted, and edited on canvas (previously this was only possible in the Gradient Editor dialog).<br />
*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.<br />
*When two or more adjacent stops are selected, pressing '''Ins''' adds stops in the middles of all selected stop intervals.<br />
*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). <br />
:*Dragging with '''Ctrl''' moves the selected stops snapping them to 1/10 fractions of the available range.<br />
:*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.<br />
*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).<br />
*Stops can be deleted by '''Ctrl+Alt+Click''' on a stop or by the '''Del''' key for all the selected stop(s).<br />
:*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).<br />
:*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 & opacity of the remaining stop.<br />
*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.<br />
<br />
===Style of gradient stops===<br />
*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&Stroke dialog. Previously, opacity of a gradient handle was reflected as fill-opacity and stroke-opacity; now it is reflected as '''master opacity''' (the "O:" spinbutton in the selected style indicator, the "Master opacity" slider in Fill&Stroke). This makes it much easier to view and change opacity of gradient handles using only the selected style indicator in the statusbar.<br />
:*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.<br />
*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''').<br />
*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 "L Gradient" or "R Gradient" text labels as before). Also, this and other similar widget now use italic font face to indicate <i>None</i> and bold to indicate <b>Unset</b>.<br />
<br />
===Automatic duplication of gradients===<br />
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. <br />
<br />
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.<br />
<br />
==Calligraphy tool: Engraver's Toolbox ==<br />
<br />
Several new features were added to the Calligraphic pen to make<br />
Inkscape capable of the ancient art of '''line<br />
engraving'''. Traditional engraving is a very labour-intensive<br />
process, and while for a long time it was the only practical way<br />
of reproducing lifelike images in black-and-white print, about a<br />
century ago it was almost completely displaced by automatic<br />
halftone screens. However, line engravings have their<br />
characteristic charm, and there's no reason not to try to<br />
resurrect this art form with the help of Inkscape.<br />
<br />
A brief visual guide to the new functionality can be seen on<br />
these screenshots:<br />
<br />
http://inkscape.org/screenshots/gallery/inkscape-0.46-engraving1.png<br />
<br />
http://inkscape.org/screenshots/gallery/inkscape-0.46-engraving2.png<br />
<br />
<br />
===Tracking a guide path with Ctrl===<br />
<br />
One of the most common operations in line engraving is<br />
'''hatching''' (or sometimes ''cross-hatching'' when several<br />
hatching grids cross): filling a space with many parallel<br />
straight or variously curved lines (usually of varying width to<br />
represent a gradual shading). You could try to achieve a similar<br />
effect with e.g. path interpolation (blending), but it is rather<br />
cumbersome and limited; manual drawing of hatch lines, on the<br />
other hand, is tedious and nearly impossible to do<br />
uniformly. Now Inkscape provides "assisted hatching" by<br />
'''tracking a guide path''', allowing you to hatch quickly and<br />
uniformly and at the same time giving you sufficient manual<br />
control over the process.<br />
<br />
Here's how to do this. First, select the '''guide path''' that<br />
you will track. It may be another calligraphic stroke, any path<br />
or shape, or even a letter of a text object. Then switch to<br />
Calligraphic pen, select the desired parameters (line width,<br />
angle, fixation etc.) and, before starting to draw, press<br />
Ctrl. You will see a gray '''track circle''' centered at your<br />
mouse pointer and touching the closest point on the selected<br />
guide path. (If you have no guide path selected, a statusbar<br />
message will tell you to select it.)<br />
<br />
Now move your mouse close to the guide path, so that the track<br />
circle radius is equal to the desired spacing of your hatch<br />
pattern, and start drawing along the guide path. At that moment,<br />
the radius of the circle gets locked; now the circle slides<br />
along the guide path - and the actual stroke is drawn by the<br />
center of the tracking circle, ''not'' by your mouse point. As<br />
a result, you are getting a smooth stroke going parallel to the<br />
guide path and always at the same distance from it.<br />
<br />
When the stroke is ready, release your mouse button (or lift<br />
your tablet pen) but '''do not let go of the Ctrl key''' because<br />
as long as you have it pressed, the tool remembers the hatch<br />
spacing you set when you started drawing. Now, you have just<br />
created a new stroke and, as usual with Inkscape tools, it gets<br />
selected instead of what was selected before. In our case, this<br />
means that the newly drawn stroke itself becomes the new guide<br />
path. Next, you can draw a second stroke along the first one,<br />
then a third one along the second, etc. Eventually you can fill<br />
any desired space with uniform hatching.<br />
<br />
Alternatively, if you uncheck "Select new path" 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. <br />
<br />
The attachment to the guide path is not absolute. If you stray<br />
your mouse pointer far enough from the guide path, you will be<br />
able to tear it off (the track circle turns from green to red)<br />
and move freely. This is intentional; this feature allows you,<br />
for example, to continue drawing a stroke past the end of a<br />
guide stroke, thus making your hatching cover a wider area than<br />
the initial guide path. Special care is taken to make such<br />
tearing off as smooth as possible and to suppress violent jerks,<br />
but this is not always possible; the general advice is to not<br />
try to hatch too fast. If jerking and unintended tearoffs still<br />
bother you, try increasing the Mass parameter.<br />
<br />
Also, special code is in place to prevent flipovers - accidental<br />
jumps to the other side of the guide path. Brief flipovers are<br />
suppressed, but if you intentionally go over to the other side<br />
and stay there, eventually Inkscape will obey and your tracking<br />
stroke will also flip over to follow you.<br />
<br />
Tracking a guide also allows some slight feedback by gradually<br />
changing the tracking distance in response to your drawing<br />
behavior. Thus, if you're consistently trying to draw closer or<br />
farther from the guide than the current tracking distance, the<br />
distance will correspondingly decrease or increase, so you will<br />
get a hatching that is slightly spacing in or out. (The effect<br />
is very slight, however, so as not to become a nuisance.) Also,<br />
note that since tracking follows the edge of the stroke, strokes<br />
of varying width (such as those tracing background, see below)<br />
will result in gradual bending of the hatching pattern as you<br />
proceed.<br />
<br />
===Tracing background by stroke width===<br />
<br />
There is a new toggle button on the Calligraphy tool's controls<br />
bar, '''Trace background'''. When on, the width of your pen<br />
depends on the lightness of the background under the stroke in<br />
each point, so that white translates into the minimum stoke<br />
width (1) and black translates to the maximum (which is set by the<br />
Width parameter). This can work alone or in combination with<br />
pressure sensitivity, depending on whether the "Use pressure" button<br />
is also toggled.<br />
<br />
This feature allows you to not only hatch over an imported<br />
bitmap image or any drawing, but to do so automatically<br />
reproducing the highlights and shades of the background with<br />
your strokes becoming lighter and heavier as needed.<br />
<br />
===Misc features===<br />
<br />
* 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. <br />
<br />
* 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.)<br />
<br />
==Selector==<br />
<br />
* 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. <br />
<br />
: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.<br />
<br />
* 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.<br />
<br />
* Draging the '''scale handles with Alt''' now scales selection by an integer factor, i.e. up to '''2''', '''3''', '''4''', etc. times the original size or down to '''1/2'''. '''1/3''', '''1/4''', etc. of the original size (in any of the two dimensions independently). This way you can, for example, mirror any object around one of the edges of its box. (This replaces the old and rarely used "slow" scaling mode with Alt.)<br />
<br />
* '''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.<br />
<br />
* '''Objects to Marker''' was added to the objects menu, which converts the current selection to a marker, with the center point of the selection being set to the center of the marker.<br />
<br />
==Node tool==<br />
<br />
* 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 ('<' and '>' 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.<br />
<br />
* [helper path display - johan]<br />
** this is deactivated for normal paths now. only paths with LPE applied will show it. should there be a button to turn it on for normal paths aswell?<br />
<br />
* As a long-requested feature, two entry fields are added to the toolbar which allow precise editing of the coordinates of selected nodes.<br />
<br />
==Rectangle Tool==<br />
<br />
* '''Ctrl+dragging''' now also allows the creation of rectangles with sides constrained to the '''golden ratio''' (approx. 1 : 1.618034), not only integer ratios.<br />
<br />
==Ellipse Tool==<br />
<br />
* 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.<br />
<br />
* '''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.<br />
<br />
==Text tool==<br />
* [text toolbar - deadchip?]<br />
* If text contains a tref element, the text tool's behavior may not be as expected. Please see [[#The tref Element]]<br />
<br />
==Dropper Tool==<br />
<br />
The shortcut 'D' is now used to <i>toggle</i> (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.<br />
<br />
=SVG features=<br />
<br />
==The tref element==<br />
<br />
Inkscape can now correctly open files with '''tref''' elements, and new tref elements can be created manually in the XML editor.<br />
<br />
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'''.<br />
<br />
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'''.<br />
<br />
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.<br />
<br />
Existing tref elements can be converted into tspan elements with '''Edit > Clone > 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'''.<br />
<br />
A '''tref''' element can be mixed with any other elements allowed to be contained by a text element.<br />
<br />
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'''.<br />
<br />
==SVG filters==<br />
<br />
===New filters supported===<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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]<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
See also wiki page [[Filter Effects]] for more info on filters in Inkscape in general.<br />
<br />
===Filters UI===<br />
<br />
* New dialog for creating and modifying filter effects ('''Object>Filter Effects...''')<br />
* The list at the left of the dialog displays all filters currently in the document.<br />
** New filters can be added with the '''Add''' button beneath the list<br />
** Right-clicking a filter for the pop-up menu allows duplicating or removing a filter.<br />
** Double-clicking a filter will apply it to all selected objects<br />
** 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.<br />
* The second list, at the left of the dialog, displays the '''filter primitives''' that are contained within the currently-selected filter.<br />
** New primitives can be added by selecting the primitive type from the combo box beneath the list, and then pressing the '''Add''' button.<br />
** Right-clicking a primitive for the pop-up menu allows duplicating or removing a primitive.<br />
** Primitives can be rearranged by clicking and dragging any filter in the list.<br />
** 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.<br />
** The "in" and "in2" 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.<br />
*** 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.<br />
*** 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.<br />
*** 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.<br />
*** 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.<br />
*** Merge inputs have an empty input at the end. Dragging a connection from this input will add a new input to the primitive.<br />
<br />
=Live Path Effects (LPE)=<br />
<br />
'''Live path effects''' (not to be confused with extension effects or SVG filters) are a new way to <b>non-destructively modify path and shape objects</b>. 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. <br />
<br />
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.<br />
<br />
Live path effects were developed by Johan Engelen as part of the GSoC 2007.<br />
<br />
==Details about operation==<br />
The following schematic tries to explain how LPE work.<br />
<br />
original style ------------> output style<br />
original path --> LPE --> output path<br />
^<br />
|<br />
parameters<br />
<br />
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 <b>output style equals original style</b>.<br />
<br />
The parameters can be paths, numbers, points, text, in principle anything.<br />
<br />
<br />
==Applying effects==<br />
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.<br />
<br />
When a path with a path effect applied is selected, the statusbar description mentions that, for example "'''Path''' (4 nodes, path effect)".<br />
<br />
There is a special Paste Path Effect command (Ctrl+7) that can be used to copy effects from one path to another.<br />
<br />
==Editing effect parameters==<br />
When switching to the node edit tool (<b>F2</b>), the <b>original path</b> can be edited. The original path is shown as a red helper path. Normal path operations, like simplify, still work.<br />
<br />
Some parameters of effects can be edited on-canvas. For example, path parameters can be node-edited, by pressing the "edit on-canvas" button in the Path Effects dialog. <b>Press "7" to cycle through the different on-canvas editable parameters.</b> 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.<br />
<br />
==Available effects==<br />
<br />
===Path along path===<br />
The <b>Path along Path</b> 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 <b>on-canvas</b> and the result is <b>updated live</b>. This provides a direct equivalent of "vector brushes" or "skeletal strokes" features in other vector editors. <br />
<br />
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'.<br />
<br />
Example file: live-path-effects-pathalongpath.svg<br />
<br />
===Pattern along path===<br />
The <b>Pattern along Path</b> 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 <b>on-canvas</b> and the result is <b>updated live</b>. This provides a direct equivalent of "vector brushes" or "skeletal strokes" features in other vector editors. <br />
<br />
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.<br />
<br />
Example file: live-path-effects-pathalongpath.svg<br />
<br />
===Stitch Subcurves===<br />
The <b>Stitch Subcurves</b> effect connects points from two subpaths of the path with straight line or curved segments, i.e. the <i>stitches</i>. It looks a lot like the Effect Lines from Expression 3. The result is also referred to as "String Art". For some examples of string art, see http://members.shaw.ca/jillbritton/string_art/jbstringart.htm. <br />
<br />
The <b>shape</b> of the <b>connecting paths</b> can controlled by the <b>stroke path</b> parameter. This could be used to draw 'hair-shaped' connecting paths with sharp end-tips. Other controls include the <b>number of paths</b>, the variation in spacing between the connecting paths (<b>clustering</b>) and also whether the start and end points of the stitches should like exactly on the original subcurves or can <b>stray randomly</b> around them. Finally the width of the stroke path can be varied.<br />
<br />
Note that this effect can only be applied to a path with two subpaths in it, hence '<b>sub</b>curve' in the name. Use Path > Combine to create such a path from two separate paths.<br />
<br />
Example file: live-path-effects-curvestitch.svg<br />
<br />
Example file showing cooperation between Stitch Subcurves and Path along Path: live-path-effects-curvestitch-hair.svg<br />
<br />
===Gears===<br />
The <b>Gears</b> 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. <br />
<br />
Example file: live-path-effects-gears.svg<br />
<br />
==Development of new effects==<br />
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!<br />
<br />
[johan]<br />
<br />
=Extension effects=<br />
<br />
== Live preview ==<br />
<br />
* '''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.<br />
<br />
* '''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.<br />
<br />
* '''Progress dialog''': While an extension is working on a document, a small dialog is shown allowing the user to cancel the execution.<br />
<br />
== New and improved effects ==<br />
<br />
* The new '''Modify Path > Edge 3D''' extension creates black, grey and white paths around a shape, then blurs and clips them for a 3D effect.<br />
<br />
* The new '''Render > 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. <br />
<br />
* The new '''Render > 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.<br />
<br />
* The new '''Render > [[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]).<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* 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.<br />
<br />
*The new '''Color > 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.<br />
<br />
*The '''Whirl''' extension uses the center of view as the center of whirl, so you don't have to enter the center coordinates numerically.<br />
<br />
*The '''Render > Grid''' extension has got an extended range of grid spacings, from 0.1 to 1000 px.<br />
<br />
*The '''Render > Function Plotter''' extension can now plot using polar coordinates.<br />
<br />
*The '''Generate Template > 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.<br />
<br />
== XSLT effects ==<br />
<br />
* '''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.<br />
<br />
== ImageMagick effects ==<br />
<br />
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. <br />
<br />
* '''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.<br />
<br />
* '''Add Noise''' adds random noise of certain types to the bitmap.<br />
<br />
* '''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.)<br />
<br />
* '''Channel''' extracts the specified channel from the bitmap.<br />
<br />
* '''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.<br />
<br />
* '''Colorize''' overlays the bitmap with a given color at a given intensity.<br />
<br />
* '''Contrast''' lightly enhances the contrast (difference between lights and darks) of a bitmap.<br />
<br />
* '''Cycle Colormap''' cycles the colormap of a bitmap.<br />
<br />
* '''Despeckle''' reduce the speckle noise in a bitmap.<br />
<br />
* '''Edge''' hilights edges in a bitmap.<br />
<br />
* '''Emboss''' embosses a bitmap, hilighting edges with 3D effect.<br />
<br />
* '''Enhance''' enhance a bitmap, minimizing noise.<br />
<br />
* '''Equalize''' equalizes a bitmap. Histogram equalization.<br />
<br />
* '''Flop''' mirrors a bitmap, reflecting each scanline in the horizontal direction.<br />
<br />
* '''Gaussian Blur''' blurs a bitmap, more strongly than regular blur.<br />
<br />
* '''Implode''' sucks everything towards the center of the bitmap.<br />
<br />
* '''Level''' scales values falling between the given '''Black Point''' to '''White Point''' range to the full color range.<br />
<br />
* '''Level Channel''' acts the same way as level but for only one channel.<br />
<br />
* '''Median Filter''' filters a a bitmap by replacing each pixel component with the median color in a circular neighborhood<br />
<br />
* '''Modulate''' adjusts the percent hue, saturation, and brightness of a bitmap.<br />
<br />
* '''Negate''' takes the inverse of a bitmap.<br />
<br />
* '''Normalize''' normalizes a bitmap, expanding color range to the full possible range of color.<br />
<br />
* '''Oil Paint''' stylizes a bitmap so that it appears to be painted with oils.<br />
<br />
* '''Opacity''' modifies the opacity channel of a bitmap.<br />
<br />
* '''Raise''' alters the lightness of the edges of a bitmap to create a raised appearance, much like a frame.<br />
<br />
* '''Reduce Noise''' reduces noise in a bitmap by using a noise peak elimination filter.<br />
<br />
* '''Shade''' shades a bitmap by simulating a distant light source<br />
<br />
* '''Sharpen''' sharpens a bitmap.<br />
<br />
* '''Solarize''' solarizes a bitmap, like overexposing photographic film.<br />
<br />
* '''Spread''' randomly spread pixels in a bitmap within the radius of '''amount'''.<br />
<br />
* '''Swirl''' swirls the bitmap around the center point.<br />
<br />
* '''Threshold''' thresholds a bitmap.<br />
<br />
* '''Unsharpmask''' sharpens a bitmap using an unsharp mask algorithm.<br />
<br />
* '''Wave''' alters a bitmap along the sine wave.<br />
<br />
These effects are part of the Google Summer of Code 2007, coded by Christopher Brown.<br />
<br />
== Misc ==<br />
<br />
* All Python effects are switched from the old and unmaintained PyXML library to the new powerful [http://codespeak.net/lxml/ lxml] library.<br />
<br />
* 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.<br />
<br />
= Stock patterns =<br />
<br />
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&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:<br />
<br />
*A selection of plain '''stripes''' differing by the ratio of the stripe width to gap width (for example, the "Stripes 1:2" 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).<br />
<br />
*Two '''checkerboard''' patterns with black and white odd squares (even squares are transparent)<br />
<br />
*'''Packed circles''': a hexagonal pattern of black circles with transparent gaps.<br />
<br />
*'''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).<br />
<br />
*'''Wavy''' is a pattern of wavy lines.<br />
<br />
*'''Camouflage''' is a green-toned protective pattern such as that used by the military.<br />
<br />
*'''Ermine''' is the traditional heraldic pattern representing stylized stoat furs with black tails.<br />
<br />
*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 "texturize" them. <br />
<br />
After applying a stock pattern, switch to Node tool to edit the location, scale, and rotation of the pattern via on-canvas handles.<br />
<br />
All stock patterns are stored in the file <code>patterns/patterns.svg</code> in Inkscape's <code>share</code> directory (typically <code>/usr/share/inkscape</code> on Linux, <code><i>inkscape-dir</i>/share</code> on Windows). You can add your own patterns to this file or replace it with any other SVG file containing the patterns you need.<br />
<br />
=Color management=<br />
<br />
== Calibrated SVG color including CMYK ==<br />
<br />
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<br />
optional "icc-color(...)" paint components as described in section 11.2 "Specifying paint" of the SVG 1.1 specification<br />
[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.<br />
<br />
The new CMS color selector tab allows these colors to be edited.<br />
<br />
== Display adjustment ==<br />
<br />
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.<br />
<br />
=== Per-window adjustment ===<br />
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.<br />
<br />
=== XICC Support ===<br />
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.<br />
<br />
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.<br />
<br />
=== Multi-monitor aware ===<br />
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.<br />
<br />
== Soft Proofing ==<br />
<br />
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.<br />
<br />
=Snapping=<br />
<br />
* Snapping has been implemented or improved for:<br />
<br />
:* '''Newly created shapes'''<br />
<br />
:* '''Skewing''' of objects<br />
<br />
:* '''Handles''' of objects, incl. '''gradients'''<br />
<br />
:* '''Images''', '''ellipses''', and '''clones'''<br />
<br />
:* Text boxes, which snap to '''text baselines''' again<br />
<br />
:* Objects, for which snapping now optionally considers the '''rotation center'''<br />
<br />
:* Objects, which now allow for '''constrained snapping'''<br />
<br />
:* '''Guides''', which now snap while dragging them<br />
<br />
:* '''Axonometric grids'''<br />
<br />
:* '''Angled guide lines'''<br />
<br />
:* '''Bounding boxes''', of which now all four corners snap<br />
<br />
<br />
<br />
* Other snapping fixes and improvements include:<br />
<br />
:* It is now possible to snap to '''intersections''' of e.g. gridlines with guidelines, and of line segments. <br />
<br />
:* The '''snapping preferences dialog''' has been restyled to make it more intuitive. <br />
<br />
:* Inkscape now has a global snapping toggle, which has been added to the view-menu and is accessible through a shortcut<br />
<br />
:* Inkscape now allows for controlling the snapping per grid when multiple grids are being used<br />
<br />
:* Snapping distance is now set in screen pixels and is therefore '''independent of zoom'''. <br />
<br />
:* Snapping of objects has been made more clean, by only snapping '''bounding box corners to bounding boxes''', and '''nodes to other nodes and paths'''.<br />
<br />
:* The time it takes to snap to objects using the selector tool has been reduced significantly.<br />
<br />
:* The bug where "node-to-node" snapping caused jerky movement of nodes is fixed.<br />
<br />
:* The '''aspect ratio''' is correctly preserved while scaling objects with snapping turned on.<br />
<br />
:* Only nodes at '''non-smooth parts''' of a path now snap.<br />
<br />
:* The confusing "Default transformations origin" 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).<br />
<br />
:* 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).<br />
<br />
=Grids=<br />
Grids have undergone some big changes under-the-hood. These are the visible changes:<br />
* There is a <b>new 3D/axonometric grid</b>!<br />
* A new tab in the document properties dialog, solely meant for grids; the former grid/guide tab is now solely for guides. I envision a list of guides there in the future, for easier deletion of guides etc.<br />
* More than one grid can be active at the same time<br />
** Each grid can be enabled/disabled separately from the document properties dialog.<br />
* One can make grids invisible by unchecking the "Visible" checkbox in the grid's tab in the document properties dialog. Snapping is still enabled even for invisible grids!<br />
* Multiple views on the same document share the same grids, but the grid can be turned off for each view separately. For example: one could have an overview view without 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. (sorry i am not able to explain more clearly, perhaps someone else can?)<br />
* Grid information is now stored in SVG as a child of sodipodi:namedview. Old files will be converted to this new format automatically<br />
* The rectangular grid now has an option to show dots on gridline intersections instead of solid lines<br />
<br />
From developer perspective:<br />
<br />
* Implementation of new grids is much easier now; subclassing CanvasGrid and adding an entry in the is enough. Have a peek at how the rectangular grid is implemented (CanvasXYGrid).<br />
* Note that there is no longer "the grid", there might be several grids active now!<br />
<br />
A side effect of removal of old gridcode: apparantly the origin of the desktop rules used to be set to the origin of the grid. I find this strange: specifying a grid origin of (2,2) would have me think the origin would be at ruler location (2,2) instead of (0,0) as it is in 0.45.1.<br />
I have commented the grid-origin correction to the ruler range, because now there is not a single grid anymore to correct it for. Isn't there a control somewhere to define the documents origin? Now the ruler origin is set to (0,0)<br />
<br />
--johan<br />
<br />
=Angled guidelines=<br />
<br />
Now, Inkscape also provides angled guidelines! Double click on a guide to set its angle.<br />
<br />
* When dragging a guideline off the rulers close to the edge, the guideline will automatically be angled. The angle is set depending on the grid.<br />
** For the rectangular grid, the angle is 45 degrees.<br />
** For the axonometric grid, the angle is matched to the grid. When the Ctrl-key is pressed, the angle is perpendicular to the grid lines (useful for aligning gradients).<br />
<br />
=Converting objects to guidelines=<br />
<br />
=Import/Export=<br />
<br />
==PDF and AI import==<br />
<br />
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). <br />
<br />
'''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. <br />
<br />
'''PDF import settings''': After opening a PDF or AI document, the PDF Import Settings dialog shows up. Here you can select:<br />
<br />
* the '''page''' to be imported from a multipage PDF;<br />
<br />
* 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.);<br />
<br />
* 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;<br />
<br />
* a checkbox controlling whether the '''images''' should be '''embedded''' into the resulting SVG document or saved on the current path;<br />
<br />
* 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).<br />
<br />
'''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.)<br />
<br />
To work around this, select the text object you want to edit and use '''Text > 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. <br />
<br />
Note that there is a way to select even a single line in a text block. For this, open the XML editor, expand the <svg:text> tree branch corresponding to your text, and select any of the <svg:tspan> 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+> or Alt+<).<br />
<br />
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.<br />
<br />
==PDF export==<br />
<br />
* A new cairo-based PDF exporter has been added to Inkscape (marked as "Cairo PDF" in the export format list). Inkscape 0.46 can export shapes, strokes, transparency, gradients, patterns, text, and images correctly to cairo. While clipping paths and masks are known to be faulty or missing. 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.<br />
<br />
* A new cairo-based PostScript exporter has been added (marked as "Cairo PS" 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.<br />
<br />
==CDR (CorelDraw) import==<br />
<br />
Inkscape can use [http://www.sk1project.org/modules.php?name=Products&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 (since UniConvertor is Unix-only) and requires that you have Python and UniConvertor installed. As of UniConvertor 1.0rc2, only versions from 7 to X3 of the CDR format are supported, and text objects are not converted. <br />
<br />
==XAML import/export==<br />
<br />
* Inkscape can import vector graphics portions of XAML documents, as well as export its documents to XAML.<br />
<br />
==Adobe Illustrator SVG clean import==<br />
<br />
* 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.<br />
<br />
==Bitmap export==<br />
<br />
* '''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.<br />
<br />
: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 "export" layer. In that layer, "slice" 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 "export" layer, select all in that layer (Ctrl+A), and export with the ''Batch export selected objects'' checkbox on.<br />
<br />
* '''Hide all except selected''': A new checkbox allows you to hide in the exported image everything except selected object(s).<br />
<br />
* The Export dialog automatically appends the '''.png''' extension to the export filename you specify.<br />
<br />
== Open Clip Art Library import and export ==<br />
<br />
{rejon}<br />
<br />
=Command line=<br />
<br />
Several new command line options are added that make Inkscape even more scriptable and automatable than before.<br />
<br />
* --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.<br />
<br />
* --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.<br />
<br />
* --select followed by a node ID will allow you to add a node to the list of selected objects.<br />
<br />
* --query-all produces a comma delimited listing of all objects in the document, with their x, y, height, and width values.<br />
<br />
These options can be used, for example, for performance testing. You could do something like this:<br />
<br />
$ time inkscape --verb=FileClose my_complex_file.svg<br />
<br />
to measure the time it takes to load and display the file.<br />
<br />
Of course, with the ability to select objects, it can be much more useful than<br />
that. You can call extension effects, or any other verb, then FileSave and<br />
FileClose to automate all kinds of operations on your drawings.<br />
<br />
=User interface=<br />
<br />
== [dockable dialogs - gustav] ==<br />
<br />
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.<br />
<br />
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&mdash;this allows other dialogs to be dragged and dropped on it to form a floating group of dialogs.<br />
<br />
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'' > ''Dialog behavior'' in the Inkscape preferences dialog.<br />
<br />
Known issues:<br />
<br />
* Some of Inkscape's dialogs are yet to be adapted to allow docking, these include the "Text and Font" dialog, the "Tiled clones" dialog, the "XML editor" and the "Object properties" dialog.<br />
<br />
* [Remembered positions of dockable floating dialogs is inexact.] <br />
<br />
[options]<br />
<br />
== [toolbars - [[JonCruz]]] ==<br />
<br />
'''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.<br />
<br />
[calligraphy: menus, tooltips; star; ...]<br />
<br />
Switched to stock GTK+ toolbars.<br />
<br />
Extra magic secret sauce added.<br />
<br />
== [filedialogs - [[JonCruz]]] ==<br />
<br />
== Swatches panel, color drag-and-drop ==<br />
<br />
* Right-clicking a color swatch now opens a context menu which allows you to apply the color to the fill or stroke of selection.<br />
<br />
* Dragging colors from the color palette has been fixed and improved:<br />
<br />
:* 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.)<br />
<br />
:* 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.)<br />
<br />
:* 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.<br />
<br />
==Color gestures==<br />
<br />
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 "None", "N/A", 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.<br />
<br />
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'''.<br />
<br />
The adjustment is done by '''"rotating"''' the color swatch away from the original direction which is assumed to be '''NE at 45 degrees''' (i.e. from<br />
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.<br />
<br />
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.<br />
<br />
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. <br />
<br />
You can '''switch channels while you drag'''. That is, you don't need to <br />
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.<br />
<br />
The '''Alt''' modifier is special. Pressing Alt means "do nothing"; 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.<br />
<br />
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.<br />
<br />
Apart from precise adjustments, you can use color gestures to very quickly perform some common color transformations:<br />
<br />
* Ctrl+drag the swatch to the right and down to paint all selected objects black.<br />
<br />
* Ctrl+drag the swatch upwards and to the left to paint all selected objects white.<br />
<br />
* Shift+drag the swatch to the right and down to desaturate the color of selected objects.<br />
<br />
* Shift+drag the swatch upwards and to the left to maximize saturation of the color of selected objects. <br />
<br />
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.<br />
<br />
This new technique requires some getting used to, but once you get the idea it is quite convenient, fast, and precise.<br />
<br />
== Print dialog integration == <br />
<br />
* '''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.<br />
<br />
== Saving window geometry globally ==<br />
<br />
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 "Save geometry to preferences" 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).<br />
<br />
== Preserving zoom/view of reverted documents ==<br />
<br />
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.<br />
<br />
== New ways to scroll and zoom ==<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* In the Zoom tool, right mouse button always zooms out instead of calling the context menu (which is rather useless in this tool anyway).<br />
<br />
== Using other keys in place of Alt ==<br />
<br />
* 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 <code>mapalt</code> in the <code>options</code> 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 "Modifiers" when the mouse is held over a key on the main display.<br />
<br />
== GTK theme on OS X ==<br />
<br />
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 "Appearance" and "Highlight Color" set in System Preferences > Appearance.<br />
<br />
=Other changes and improvements=<br />
<br />
* '''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.<br />
<br />
* 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. <br />
<br />
* The somewhat cryptic "F:" and "S:" 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.<br />
<br />
* 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. "Style of new rectangles", "Style of new calligraphic strokes", etc.)<br />
<br />
* 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. <br />
<br />
* After dragging a curve segment in Node tool, Inkscape no longer selects the two adjacent nodes if they were not selected before. <br />
<br />
* 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. <br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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.)<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* 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 <code>default.svg</code>, 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 > New submenu).<br />
<br />
* 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.<br />
<br />
* 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 "slideshow mode" of the main inkscape application (-s or --slideshow command line option) is removed; use inkview instead.<br />
<br />
* In Document Metadata dialog, updated '''Creative Commons Licenses''' to version '''3.0'''.<br />
<br />
* Preferences have been added for setting the default metadata and licenses, so this information can be automatically filled in with new documents.<br />
<br />
* The built-in '''Potrace''' tracing engine is upgraded to version '''1.8''' with some minor bugs fixed.<br />
<br />
* File dialog windows (open/save) now have an '''Enable preview''' checkbox which allows you to disable the preview pane.<br />
<br />
* 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.<br />
<br />
* 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. <br />
<br />
* The option '''Import bitmap as <image>''' 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 <image> element.<br />
<br />
* 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 & stroke dialog.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* Add some new '''UML markers''', including filled and hollow diamonds and triangles.<br />
<br />
* 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'''.<br />
<br />
=Notable bugfixes=<br />
<br />
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]].<br />
<br />
* The '''sodipodi:docbase''' attribute is no longer added to the root <svg> 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.<br />
<br />
* 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. <br />
<br />
* Inkscape now properly quotes <code>font-family</code> values and therefore can use '''fonts''' with various '''nonalphanumeric characters''' in their names, which previously failed. <br />
<br />
* 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.<br />
<br />
* 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).<br />
<br />
* 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).<br />
<br />
* '''Stock markers''' now appear in the "recently used markers" section of the marker selector dropdowns in the Fill & Stroke dialog. Before, any markers with stock id's (including markers modified by the user) were hidden, making it difficult to work with modified stock markers.<br />
<br />
* 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.<br />
<br />
* Previously, if there was a single '''invalid property''' in a <code>style</code> 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.<br />
<br />
* 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. <br />
<br />
* Master opacity did not apply to stroke '''markers''' as it should; fixed.<br />
<br />
* '''Creative Commons Public Domain Declaration URI''' points to the right location now.<br />
<br />
* Text objects didn't display the '''pattern editing handles'''; fixed.<br />
<br />
* 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.<br />
<br />
* Clones were wrongly unlinked when their original was moved to another layer; fixed.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* In Tile Clones dialog, the PMG symmetry group was created incorrectly, which is now fixed.<br />
<br />
= Previous releases =<br />
<br />
* [[ReleaseNotes045]]<br />
* [[ReleaseNotes044]]<br />
* [[ReleaseNotes043]]<br />
* [[ReleaseNotes042]]<br />
* [[ReleaseNotes041]]<br />
* [[ReleaseNotes040]]<br />
* [[ReleaseNotes039]]<br />
* [[ReleaseNotes038]]<br />
* [[ReleaseNotes037]]<br />
* [[ReleaseNotes036]]<br />
* [[ReleaseNotes035]]<br />
<br />
[[Category:Marketing]]</div>Cilix