Release notes/0.46

From Inkscape Wiki
Revision as of 22:40, 11 August 2009 by Tweenk (talk | contribs) (WTF is going on? restore part 1)
Jump to navigation Jump to search

Inkscape 0.46

Highlights in this release:

  • Paintbucket tool
  • Tweak tool
  • 3D Box tool
  • Live path effects
  • Color management
  • New SVG filters and UI
  • Native PDF and AI import
  • XAML import/export
  • Open Clip Art Library integration (import/export)
  • Stock patterns
  • Bitmap editing extension effects
  • Full on-canvas gradient editing
  • Engraver's Toolbox in the Calligraphic tool
  • Touch selection
  • Dockable dialogs
  • Command-line access to verbs
  • Snapping made usable
  • "3D" / axonometric grid
  • Angled guidelines
  • Conversion of objects to guidelines
  • Significant speed and interactivity improvements
  • Hundreds of smaller features and bugfixes

Speed and interactivity

  • In this version, Inkscape starts using the 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.
  • 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.
  • 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).
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.
  • Minor improvements have been made to gradient rendering performance.
  • 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.
  • 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.
  • 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.
  • Several improvements make canvas panning and scrolling smoother and more interactive in complex slow-rendering documents:
  • 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".
  • 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.
  • 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.
  • 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.
  • The default starting speed and acceleration of Ctrl+arrows scrolling are slightly increased. (They are both settable in Preferences.)
  • Better responsiveness and more visual feedback in user interface:
  • When you zoom, the zoom control on the right end of the statusbar now updates immediately, not after screen redraw as before.
  • 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.
  • The statusbar messages displayed while you're drawing a shape or a path in Pen tool do not lag behind the mouse movements.
  • Combine and Convert to paths commands are now orders of magnitude faster when applied to a selection with hundreds or thousands of objects.
  • 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.


Paint Bucket tool

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.

How it works

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.

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.

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.

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.

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).


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.


In the tool's Controls bar:

  • 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:
    • Red
    • Green
    • Blue
    • Hue
    • Saturation
    • Lightness
    • Alpha
  • 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%.
  • 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.
  • 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:
    • None
    • Small (close gaps up to 2 pixels in size)
    • Medium (4 pixels)
    • Large (6 pixels)
Note that setting this parameter to other than None may slow down noticeably the filling of large areas.


The tool's shortcuts are:

  • Single click performs filling from the click point.
  • 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.
  • 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.
  • 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.
  • 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.

Tweak tool

The Tweak tool is an exciting new way to edit drawings which largely blurs the distinction between vector and raster editing. Instead of meticulously selecting some objects and then performing an action on the selection, you can now select all objects (or all objects you are interested in) and apply the Tweak tool's brush to smoothly and naturally change the shape or style of only those objects (or parts thereof) that the brush touches.

The area of the tool's action - its brush - is marked by an orange-colored circular outline that moves with your mouse cursor. However, that area actually has no sharp boundaries; the power of the tool's action falls off gradually, following a smooth bell-shaped profile. This makes the tool act softly and smoothly.

The tool will work on any number of selected objects; for example, you can select all (Ctrl+A) and "smear" your entire drawing by Push mode or paint it by Color Paint mode. You can also apply it to groups of objects; it will go into groups and act on individual objects inside groups. If you're trying to use it without anything selected, a message will appear in the statusbar reminding you to select some objects.


The width of the tool's brush, in the range from 1 to 100, can be changed by the Width control in the tool's controls bar above the canvas. You can also change width by Left and Right arrow keys (same as in the Calligraphy tool) at any time (including during action) as well as Home and End. Also, as in Calligraphy tool, the visible width of the brush is independent of zoom; simply zooming in or out is often easier than adjusting the width if you want to cover a smaller or larger area of the drawing.


The next control is Force which adjusts the power of the action, also in the range from 1 to 100. You can also change width by Up and Down arrow keys at any time (including during action).

If you have a pressure-sensitive tablet and your "Use pressure" button on the right-hand end of the controls bar is on, then the force will also depend on how hard you actually press your pen into your tablet, changing in the range from zero to whatever you set in the Force control. If all you have is a mouse, then the force will be constant but still settable by the Force control.

Path editing modes

The Tweak tool has a number of modes, selectable by toggle buttons in the tool's Controls bar and by keyboard shortcuts. Some of these modes change the shapes of paths while others affect the colors of objects. All these modes share the Width and Force controls but otherwise are quite different. Let's look at the path editing modes first.

Unlike the Node tool, to edit paths with the Tweak tool you don't need to worry about where the nodes of a path are and how to manipulate them. You just apply the tool's brush to any point, and the selected paths at that point will reshape smoothly and naturally - as if made of soft jelly - regardless of where its nodes lie. If applied to a shape or text object, the tool converts them to paths automatically.

While not very useful for technical drawings, tweaking paths will be indispensable for artistic uses of Inkscape - cartoons, drawings, sketches, anime, etc. This new functionality is somewhat similar to the tools such as "Pucker" and "Bloat" in the latest versions of Adobe Illustrator.

There are currently six path editing modes in the Tweak tool: Push, Shrink, Grow, Attract, Repel, and Roughen.

  • 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.
  • 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.
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).
Of course, shrinking and growing are useful not only for calligraphic strokes. Same as with Push, with Shrink and Grow you can sculpt any path, spawning smooth treacle-like appendages with Grow and carving holes with Shrink. Unlike the "node sculpting" mode in the Node tool, however, this does not require adding new nodes to the shape.
  • The Attract and Repel modes work by moving each affected point on a path towards (Attract) or from (Repel) the cursor point. In some cases this may look similar to Shrink and Grow, but the difference is that shrinking/growing moves paths perpendicularly to the path in each point, whereas attracting/repelling moves them to or from the cursor regardless of the path shape. These modes are similar to the Pinch effect in AI; you can use them for various central-symmetric distortions in parts of your paths.
  • The Roughen mode does exactly this: roughens the edge of the path without changing its overall shape. Slight roughening simply makes the edge crooked and uneven; strong roughening tears and explodes the edge into random blobs and splotches. Note that this operation, especially with high Fidelity, adds a lot of nodes which increases the size of your SVG document and may slow down Inkscape considerably. In particular, pushing, shrinking, or growing of a roughened path becomes much slower and more difficult, so it's recommended to finalize the overall shape of a path first and roughen it, if necessary, only as the final step.

See the screenshot at [1] for a few examples of using the path editing modes of the Tweak tool.


Any tweaking of a path slightly distorts the entire path, including even those parts that you didn't touch. These distortions are similar to those that a Simplify command produces. The Fidelity value (also in the range from 1 to 100, default is 50) allows you to control the amount of these distortions. With a higher fidelity, the distortions are less noticeable, but the path may end up having a lot of nodes which inflates up the SVG size and slows down Inkscape.

The best value of Fidelity depends on the nature of your artwork. If you're sculpting an amorphous blob, you can do with low fidelity of about 20. If, however, you are pushing or inflating a text string (as a single path) and want the letters outside the distorted area to remain crisp and clean, you will need to raise fidelity to 80 or more.

Known problems

Known problems with the path editing modes in Tweak tool:

  1. they don't work on open paths (an open path becomes closed if you tweak it);
  2. they are rather slow;
  3. they quickly eat memory; and
  4. they are sometimes buggy - thin calligraphic strokes may suddenly disappear or change their shape drastically as you're shrinking or growing them.

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.

Also, sometimes after roughening, further tweaking of a path becomes impossible with this diagnostic:

 WARNING **: Shape error in ConvertToShape: directedEulerian(a) == false

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.

Color editing modes

The Color Paint and Color Jitter modes, unlike the path editing modes, change the colors of objects instead of their shapes. Yet they share enough common features with the path editing modes to be part of the same tool: These modes also use a circular soft-edged brush controlled by the Width and Force parameters on the Controls bar and affected by the pen pressure (if you have a pressure-sensitive tablet).

  • 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.)
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).
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.
  • 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.

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.)

See the screenshot at [2] for a few examples of using the color editing modes of the Tweak tool.