Difference between revisions of "Release notes/0.44"
Line 54: | Line 54: | ||
== Clipping and masking == | == Clipping and masking == | ||
Inkscape now provides some UI for using clipping paths and masks. | Inkscape now provides some UI for using <b>clipping paths and masks</b>. | ||
* Any object can be non-destructively intersected with a path (called a <i>clipping path</i>) so that only the intersected portion of the object is visible. | * Any object can be non-destructively intersected with a path (called a <i>clipping path</i>) so that only the intersected portion of the object is visible. | ||
** <b>To apply clipping</b>, select the objects to be clipped and the clipping path object, make sure the clipping path is above the other objects in z-order, and do <i>Object > Clip > Set</i>. | |||
** To apply clipping, select the objects to be clipped and the clipping path object, make sure the clipping path is above the other objects in z-order, and do Object > Clip > Set. | ** You can <b>transform, edit, or style</b> the clipped objects as usual. The clipping remains applied and transforms together with each clipped object. | ||
** To <b>remove the clipping</b>, do <i>Object > Clip > Release</i>. If this was the only object using this clipping path [fixme], the clipping path is returned to the drawing as a regular object. | |||
** You can transform, edit, or style the clipped objects as usual. The clipping remains applied and transforms together with each clipped object. | |||
** To remove the clipping, do Object > Clip > Release. If this was the only object using this clipping path [fixme], the clipping path is returned to the drawing as a regular object. | |||
* Any object can be non-destructively masked by another object (called <i>mask</i>) so that: the mask's black or transparent areas become fully transparent in the masked object; mask's opaque white areas become fully opaque; and all intermediate colors translate into intermediate levels of opacity in the masked object. This allows you to apply, for example, arbitrary transparency gradients to objects. | * Any object can be non-destructively masked by another object (called <i>mask</i>) so that: the mask's black or transparent areas become fully transparent in the masked object; mask's opaque white areas become fully opaque; and all intermediate colors translate into intermediate levels of opacity in the masked object. This allows you to apply, for example, arbitrary transparency gradients to objects. | ||
** To <b>apply a mask</b>, select the objects to be masked and the mask object, make sure the mask is above the other objects in z-order, and do <i>Object > Mask > Set</i>. | |||
** To apply a mask, select the objects to be masked and the mask object, make sure the mask is above the other objects in z-order, and do Object > Mask > Set. | ** You can <b>transform, edit, or style</b> the masked objects as usual. The mask remains applied and transforms together with each masked object. | ||
** To <b>remove the masking</b>, do <i>Object > Mask > Release</i>. If this was the only object using this mask [fixme], the mask is returned to the drawing as a regular object. | |||
** You can transform, edit, or style the masked objects as usual. The mask remains applied and transforms together with each masked object. | |||
** To remove the masking, do Object > Mask > Release. If this was the only object using this mask [fixme], the mask is returned to the drawing as a regular object. | |||
* Objects with clippath show their bounding box intersected with the bounding box of the clippath, instead of the original unclipped bbox as before. (However, this does not apply to objects without clippath of their own which are clipped by being inside a clipped group.) | * Objects with clippath show their bounding box intersected with the bounding box of the clippath, instead of the original unclipped bbox as before. (However, this does not apply to objects without clippath of their own which are clipped by being inside a clipped group.) | ||
Line 77: | Line 71: | ||
* Although Inkscape had render-only support for clipping paths and masks for quite some time, in this release we fixed a number of bugs which may affect the display of your documents using clippaths or masks. | * Although Inkscape had render-only support for clipping paths and masks for quite some time, in this release we fixed a number of bugs which may affect the display of your documents using clippaths or masks. | ||
** Clippaths and masks with objectBoundingBox units are now shown correctly upon loading of the document. | ** Clippaths and masks with objectBoundingBox units are now shown correctly upon loading of the document. | ||
** Clippaths without fill didn't work, this is now fixed. | ** Clippaths without fill didn't work, this is now fixed. | ||
** Objects with clippaths or masks are correctly copied/pasted between documents. | |||
== Color palette == | == Color palette == |
Revision as of 03:15, 20 March 2006
Inkscape 0.44
In brief
Bigger and better.
Outline mode
An Outline ("wireframe") display mode is implemented. Use the View > Display Mode > Outline to activate it. In this mode:
- all paths and shapes are rendered as inverse (black on light background and vice versa) outlines of constant width (1 screen pixel regardless of zoom), without fill;
- text is painted by inverse fill, without stroke;
- bitmaps are shown as is;
- any opacity and gradients are ignored.
The outline mode is usually not drastically faster than regular mode (usually 10% to 50% faster), and in some special cases it may even be slower. However, the value of the outline mode is not only in its speed; it is a good way to get an idea of the structure and objects of your document, and it is convenient for precision node editing and for finding "stray objects".
Selected style indicator
A new control in the left end of the statusbar lets you quickly view and change the fill and stroke of the selected objects. When you have a text selection in Text tool or a gradient handle selected in the Gradient tool, this indicator displays and changes the style of the text fragment or gradient stop, instead of the entire object (it's the same behavior as the Fill&Stroke dialog.)
- The two indicators, labelled F: (top) and S: (bottom), display fill and stroke of the selected object(s) correspondingly. (For gradient handles, they always display the same style.)
- Each fill/stroke indicator can display either a color+opacity swatch (the opacity shown here is the fill opacity or stroke opacity, not the master opacity) or a text label specifying N/A (nothing selected), None (no fill/stroke), Unset (unset fill/stroke), L Gradient, R Gradient, Pattern (corresponding fill/stroke types), or Different (selected objects have different fill/stroke types).
- Additionally, each indicator may be accompanied by one of two flags, m ("multiple", meaning there are two or more objects all with the same fill/stroke) or a ("averaged", meaning there are two or more objects with different flat colors in fill/stroke, and the indicator shows the average of these colors).
- Left-click on an indicator opens or activates the Fill&Stroke dialog with the corresponding tab (Fill or Stroke) active.
- Right-click on an indicator opens a popup menu with the following items:
- Edit fill/stroke...: Opens or activates the Fill&Stroke dialog with the corresponding tab selected. (Same as left-click.)
- Last set color: Applies to the selected objects the fill/stroke color that was last applied to anythig.
- Last selected color: Applies to the selected objects the fill/stroke color that was last displayed in this indicator. (Allows you to easily copy fill/stroke color between objects: select source, select destination, apply "last selected color".)
- Invert: Sets the fill or stroke to the inverse of the current color (does not affect opacity).
- White, Black: Sets the fill or stroke to the corresponding color (fully opaque).
- Copy color, Paste color: Copies or pastes the fill or stroke color (when it's color) to/from the system clipboard, as text in the
#rrggbb
hex format. - Swap fill and stroke: Exchanges fill and stroke (both their types and colors, if any).
- Make fill/stroke opaque: Removes fill or stroke transparency (not master transparency!).
- Unset fill/stroke: Unsets fill or stroke from selected objects.
- Remove fill/stroke: Removes fill or stroke from the selected objects.
- Middle-click on a fill/stroke indicator removes fill/stroke from selected objects; if it is already removed (i.e. if the indicator displays "None"), it does the same as the "Last set color" command from the popup menu.
- The Stroke indicator also displays the stroke width of selection (averaged if there are multiple objects selected with different stroke widths), located to the right of the stroke color/transparency swatch. Left-clicking on it opens the Fill&Stroke dialog with the Stroke Style tab selected. Right-clicking on it opens a popup menu which allows you to choose the units for displaying the stroke width, as well as choose one of the presets to assign to selection.
- To the right of the fill/stroke indicators, the Opacity numeric field (labelled "O:") shows and allows you to change the master opacity of the selected object (or the averaged opacity of several selected objects). Right-clicking the numeric field opens a popup menu with preset opacity levels. Middle-clicking on the "O:" label cycles the opacity through the values of 0 (transparent), 0.5, and 1 (opaque).
The zoom field and the cursor coordinates indicator have been rearranged for compactness and moved to the right end of the statusbar. There's also a window resize handle added at the very end of the statusbar.
Clipping and masking
Inkscape now provides some UI for using clipping paths and masks.
- Any object can be non-destructively intersected with a path (called a clipping path) so that only the intersected portion of the object is visible.
- To apply clipping, select the objects to be clipped and the clipping path object, make sure the clipping path is above the other objects in z-order, and do Object > Clip > Set.
- You can transform, edit, or style the clipped objects as usual. The clipping remains applied and transforms together with each clipped object.
- To remove the clipping, do Object > Clip > Release. If this was the only object using this clipping path [fixme], the clipping path is returned to the drawing as a regular object.
- Any object can be non-destructively masked by another object (called mask) so that: the mask's black or transparent areas become fully transparent in the masked object; mask's opaque white areas become fully opaque; and all intermediate colors translate into intermediate levels of opacity in the masked object. This allows you to apply, for example, arbitrary transparency gradients to objects.
- To apply a mask, select the objects to be masked and the mask object, make sure the mask is above the other objects in z-order, and do Object > Mask > Set.
- You can transform, edit, or style the masked objects as usual. The mask remains applied and transforms together with each masked object.
- To remove the masking, do Object > Mask > Release. If this was the only object using this mask [fixme], the mask is returned to the drawing as a regular object.
- Objects with clippath show their bounding box intersected with the bounding box of the clippath, instead of the original unclipped bbox as before. (However, this does not apply to objects without clippath of their own which are clipped by being inside a clipped group.)
- Clipped or masked objects display "clipped" or "masked", correspondingly, in their statusbar descriptions.
- Although Inkscape had render-only support for clipping paths and masks for quite some time, in this release we fixed a number of bugs which may affect the display of your documents using clippaths or masks.
- Clippaths and masks with objectBoundingBox units are now shown correctly upon loading of the document.
- Clippaths without fill didn't work, this is now fixed.
- Objects with clippaths or masks are correctly copied/pasted between documents.
Color palette
[joncruz]
Transform dialog
Fixes and improvements in the Transform dialog (Ctrl+Shift+M):
- The Apply to each object separately checkbox is added, allowing you to scale/rotate/skew each selected object by the same amount, around that object's center. When off (by default), the selection is transformed as a whole. The status of this checkbox is remembered across sessions. (It has no effect on Move and Matrix tabs).
- The Clear button resets the values on the current tab to defaults.
- The Scale tab now allows you to specify horizontal or vertical size increments in percentage or absolute units. Also, there's a Scale proportionally checkbox which ensures that scaling preserves the width/height ratio. (If you are scaling several objects proportionally with "Apply to each object separately", you can only use the % unit to specify the scaling; otherwise each object's scale increments will have the width/height ratio of the entire selection, not of that specific object.)
- The Skew tab can now specify the skew as an absolute displacement (e.g. for horizontal skewing of a rectangle, that means the shift of the top rectangle side relative to the bottom), as percentage displacement (e.g. a 1% horizontal skew of a rectangle means shifting the top side by 1% of the rectangle height), or as an angle (e.g. horizontal skew by 15 degrees results in the sides of a rectangle being rotated to that angle, while the top and bottom remain horizontal).
- The Matrix tab (previously called "Transform") can either edit the current
transform=
matrix of an object, or post-multiply thetransform=
with the matrix you specify, depending on the Edit current matrix checkbox. (As it is now redundant, the transformation matrix in the Object Properties dialog is removed.)
- The dialog now correctly watches selection changes in the active document window and updates its values accordingly.
- The layout of the dialog is simplified, tooltips and mnemonics added for better usability.
- Many bugs are fixed, especially in value conversions between units.
Remembering the rotation center
- The position of the center (axis) of rotation and skewing used by Selector is now remembered for all objects and is restored when you select those objects again (even after save and reload). When you move or scale an object, its rotation center is moved or scaled too, so its position relative to the object always remains the same.
- When you have several objects selected, they use the rotation focus of the first selected object. If the first object does not have center set (i.e. if it's in a default central position), then several objects will rotate around the center of their common bounding box.
- Shift+click on the rotation center resets it back to the center of the object's box.
- Consequently, dragging the transformation center is now an undoable action; you can press Ctrl+Z to undo the drag.
[TODO:
- make use of this in keyboard transforms and Transform dialog;
- make it work smartly for groups: if a group has center not set, return the center of the first object inside group with the center set
- a separate tab in the Transform dialog, with 9 buttons in the square grid (for setting it to object's corners, sides, and center) as well as x/y fields for setting center to any position
- make center snap to grid/guides/objects and to other centers
- make objects snap with their center to grid/guides/objects]
Align & Distribute dialog: remove overlaps
- There is a new button to move the selected objects enough that they don't overlap each other.
This should be a significant addition to Inkscape's usability for diagramming.
[Consider expanding this, comparing with existing Unclump and Distribute edge-to-edge buttons.]
Document Properties / Metadata dialogs
- The Document Preferences dialog is now named Document Properties, and it was split in two: metadata were extracted into the Document Metadata dialog; metadata widgets are now also spread over two pages.
- New controls: the new object snapping features required their own property widgets, and you can set the snapping sensitivity with a slider, or let it snap regardless of distance.
- Rearrangements within Document Properties: everything snapping related was collected on one page; Grid and Guide widgets are on their own, the same page. Due to HIG compliance, all widgets were categorized; especially the widgets on the Page page were completely rearranged in the General/Format/Border categories.
- Bug fixes: grayed out license URI had too low contrast, so it's no longer grayed out; the proprietary license didn't clean the license uri; spinbuttons had no tooltips, and minor grid quirks were removed; data was not updated when a new file replaced another in the same window.
- HIG compliance: much work went into, and now only a few details are missing from full Gnome-HIG compliance.
Keyboard profiles
[mental]
Path effects
[acspike]
Snapping
- [object snap - carl]
- [highlight - mtou]
- [only to visible gridlines - mtou]
- Guidelines are made easier to pick: now you don't need to position mouse exactly over a guideline to activate it, instead there's a small position tolerance (1 screen pixel on each side of the guideline).
Connectors
- [automatic diagram layout]
- The margins around avoided shapes (used for autorouting connectors) can now be adjusted via the "Spacing" control on the Connector controls bar.
Sublayers
Previously, it was only possible to make a group a temporary sublayer by entering that group. Now Inkscape supports creating and using true persistent sublayers within a layer.
- The Add layer dialog allows you to place the new layer above, below, or inside the current layer.
- [keyboard selection "with sublayers" option]
SVG Output
- Colors are now expressed by name (‘white’) or three-digit form (‘#f3c’) when possible.
New formats
- [save zip with images - acspike?]
- An output format for desktop cutting plotters, such as the Wishblade and Craftrobo, was added. This format is a very minimalist DXF file with appropriate scaling and translation applied. This output format should not be expected to operate as a generalized DXF output.
- [xfig]
Speed
- Thanks to optimizations in the renderer, Inkscape's screen redraw is faster by at least 10%, and in some cases (such as complex stroked/dashed paths at high zooms) up to three times faster.
- An optimization in the attribute setting method made operations such as moving objects on the canvas at least 30% faster compared to 0.43. This is especially noticeable when you are moving clones selected together with their original (e.g. a clone tiling), in which case Inkscape now works three to four times faster.
Mouse and keyboard
- Now you can use Shift+middle button drag in any tool to zoom into an area. This works the same as simple drag in Zoom tool, but is faster because it does not require switching away from your current tool. Together with middle button drag (panning), middle button click (zoom in) and Shift+middle button click (zoom out), this completes the set of canvas navigation shortcuts available in any tool or context.
- In Gradient tool, Shift+R reverses the gradient definition (i.e. mirrors the stop positions) without moving the gradient handles. For example, an elliptic gradient with blue center and red periphery becomes red in the center and blue in the periphery. This works on the gradient(s) of the currently selected gradient handle or, if no handle is selected, on all selected objects' gradients. (Compare with the Node tool where Shift+R reverses the direction of the selected path.) This is especially convenient for elliptic gradients which, unlike linear, you cannot simply rotate by 180 degrees for the same result.
- By popular demand, in Pen tool, if a new path is being drawn but not yet finished, Ctrl+Z cancels that unfinished path (i.e. does the same as Esc), instead of undoing the previous action.
- In Pen tool, Del works the same as Backspace to delete the last created point on the unfinished path.
- In Node tool, the ! key inverts node selection in the current subpath(s) (i.e. subpaths with at least one selected node); Alt+! inverts in the entire path. (This is similar to how these keys work in Selector, with current subpath(s) instead of the current layer.)
- The keyboard shortcut for "Make selected segments curves" in Node tool is changed from Shift+K to Shift+U for better mnemonics.
- In Calligraphic tool, Esc deselects as in most other tools.
- In Selector, Ctrl+Enter enters the selected group (making it a temporary layer). Ctrl+Backspace leaves the current layer and goes one layer up in the hierarchy (but not to root).
- [pen tool keys - bb]
Menus
- Zoom commands in the View menu are moved to a submenu; the Zoom In and Zoom Out commands are added to that submenu.
- The contents of the Effects menu are categorized into submenus, and several effects are renamed to use more intuitive names.
Statusbar
- For multiple selected objects, the statusbar now reports their types. For example, if 5 groups are selected, it displays
- 5 objects of type Group in layer LayerName.
- instead of just "5 objects selected" as before. If there are up to 3 types in the selection, they will be listed, for example:
- 5 objects of types Group, Path, Rectangle in layer LayerName.
- The order of the list will correspond to the order in which the objects were added to selection. If there are 4 or more types in selection, only the number of types is reported, for example:
- 5 objects of 4 types in layer LayerName.
- The contents of the statusbar message are now duplicated as a tooltip that is shown when you hover the mouse over the statusbar. [TODO: need to strip markup from the tooltips.]
- The statusbar text is now no longer just cut off if there is insufficient room, but an ellipsis (...) is inserted at the end to show there's more (only with Gtk 2.6 and newer).
Theme
- Inkscape has a new default icon set titled "Crispy" provided by Andre Sousa. The new icons are intended to add a more professional and cohesive look to our application, as well as to make the functions the icons represent more self-evident.
Miscellaneous improvements
- Document templates (listed in File > New) are now first searched in the
templates
subdirectory of the user's profile directory (on Linux it's~/.inkscape/templates
), then in the system-wide Inkscape templates directory. This allows you to add your own templates on top of the list of standard templates, as well as override the default template with your own one (thedefault.svg
in the profile directory has priority over the system-wide one).
- When toggling one of the "transform with object" buttons (for stroke width, rounded rectangle corners, gradients, or patterns), a message is displayed in the statusbar explaining what has changed in the program's behavior. Hopefully this will reduce the number of complaints from users who had accidentally toggled one of these and were surprised by the result.
- Whole thousands above 2000 in the rulers are now displayed as 2k, 3k, 4k etc.
- In the Document Preferences dialog, the new object style for each tool is now shown as a style swatch (displaying fill/stroke colors and opacity, stroke width, and master opacity), similar in design to the selected style indicator in the statusbar.
- The Simplify threshold in Inkscape Preferences can now be set with more precision.
- In the Grid Arrange dialog, row/column spacing can now be negative.
- The installation default is now to scale the rounded rectangle corners with the rectangles themselves (the previous default mode, still available as an option, was to keep rounding radii unchanged when scaling rectangles).
- The
--query-*
command line parameters now return the true SVG bounding box of the object instead of the Inkscape coordinate system bbox (with inverted Y axis). The new behavior makes more sense for scripting use of Inkscape.
- Individual <tspan>s within text objects (including line tspans) can now be selected via the XML editor to view their bounding boxes (though per SVG, you cannot transform them). Also, you can use the
--query-*
command line parameters to find out the bounding boxes of tspans from a script. (Individual strings within or between tspans are still not selectable, and they cannot have an ID for querying anyway.)
- The placeholder image which is shown when a bitmap file was no longer accessible reads now "Linked image not found" instead of the confusing "Broken image".
- Cloning multiple selected objects now works as expected (i.e. each selected object is cloned separately, similar to the Duplicate command). Previously you could only clone a single selected object.
- [about dialog redesign - mental]
- [icons prerendering - joncruz, mental]
- [extensions on windows - ishmal]
- [python extensions to work out of the box on windows? - ishmal]
- [new cursors - scislac]
- In the Transform dialog / Rotate tab, the icon was flipped horizontally to be in line with the direction of positive rotation; the change was applied to the default (now crispy) and legacy icon sets.
Miscellaneous bugfixes
- inkscape couldn't be compiled with libxml versions <= 2.6.9, and we now bumped the requirements from 2.6.0 up to libxml >= 2.6.11, which is the earliest you can get officially, anyway.
- Scaling of objects with stroke in Selector used to cause undesired shifts of the scaled object, as well as scaling it in the dimension which was intended to remain untouched (e.g. slight change in width when you scale only height). All these problems are now fixed, both for interactive scaling by mouse and for numeric scaling via the Controls bar, and for both values of the "Scale stroke with objects" option. Among other things, this means that stroked objects no longer lose snapping on scale, and that the "Default scale origin" option in the Selector tool preferences finally works as designed. Caveat: There may still be problems if you scale a selection that contains objects with different stroke widths.
- Bounding box for text objects did not include stroke width.
- Stroke miterlimit on text objects was misinterpreted in absolute units instead of multiplies of stroke width (resulting in miter joins rendered as bevel).
- [win32 font backend - cyreve]
- Setting dash pattern was broken for transformed objects, and copy/paste of style with dash pattern did not apply correctly to objects with transforms.
- An error caused a complete extra screen redraw after each zoom operation. That is, after you press "+" in a complex drawing, Inkscape redraws, but for some time after that it remains still unresponsive because it does that second redraw (invisibly for you, i.e. nothing changes on the screen). This is fixed.
- Gradient rendering was off by one pixel, which often resulted in visibly wrong gradient rendering for small objects or in zoom-out.
- The SVG path parser could not handle fractional numbers with the initial dot.
- Several pattern rendering bugs are fixed, discovered by working with SVG files exported from Adobe Illustrator.
- Inkscape on Mac OS X will now notice fonts in your ~/Library/Fonts directory, in addition to the other standard places.
- Scaling of stroke didn't work for objects that didn't specify stroke-width and thus had the default 1px stroke.
- Inkscape no longer crashes when presented with a defect inx file for extensions.
- There was a regression in 0.43 that caused several minor, though annoying bugs; knots and handles remained highlighted after the mouse was released, and the rubberband selection rectangle stayed visible if the selection was ended over a node while in the node tool. This regression has been fixed.
- The connector routing code would previously sometimes confuse objects between multiple documents resulting in strange routing behaviour. This has been fixed.
- There existed a bug in 0.43's Inkboard code that allowed a malicious outsider to very easily disrupt an Inkboard session. This has been fixed.
- There existed a bug in 0.43's Inkboard code that would cause deadlocks in the case that two users attempted to invite each other at the same time (see bug #1352522 for further details). This should be fixed, although the fix has not been widely tested.
Translations
- INX files (containing the UI of the external effects) now allow the user visible strings to be translated. This means that effect dialogs, file type selections, and extension names can all be translated by translators.
Internal
- The Document Properties Dialog code was completely gtkmmified, which lead to dramatic reduction of code size due to usage of widget objects. The used widget objects should be reusable by other dialogs, too, and the code is much more readable.
- Work on optimizing includes in all cpp files started, using the purgeincludes tool specifically written for that purpose, and ended with 40% of include lines removed!
Known problems
Beware: defect themes on Linux
- Inkscape and other Gtk programs can crash on any Linux, when the gtk2-engines-smooth / libsmooth package is installed. We have filed a bug against libsmooth which is now in gtk-engine and part of gnome. Removing the package resolves the problem, however, but it would be nice if you as affected user would inform the gtk-engines maintainers of the problem. See especially http://bugzilla.gnome.org/show_bug.cgi?id=312115 (thanks to Thomas Wood)
- A similar crash happens if the KDE Baghira theme or the package gtk_qt_engine are installed. If you experience Inkscape crashes on KDE, please try to install a different theme from Baghira, or uninstall the gtk_qt_engine package from your system. Both problems also affect older versions of Inkscape.
Previous releases
- ReleaseNotes043 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes043)
- ReleaseNotes042 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes042)
- ReleaseNotes041 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes041)
- ReleaseNotes040 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes040)
- ReleaseNotes039 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes039)
- ReleaseNotes038 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes038)
- ReleaseNotes037 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes037)
- ReleaseNotes036 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes036)
- ReleaseNotes035 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes035)