diff options
| author | Markus Engel <markus.engel@tum.de> | 2013-09-14 11:09:15 +0000 |
|---|---|---|
| committer | Markus Engel <markus.engel@tum.de> | 2013-09-14 11:09:15 +0000 |
| commit | f62ab958909134854a42a4654d296988bc724b67 (patch) | |
| tree | 08498b78a0fe1b5e94490a95fe876175e9c179d9 | |
| parent | Merged from trunk (r12488). (diff) | |
| parent | fix windows build (diff) | |
| download | inkscape-f62ab958909134854a42a4654d296988bc724b67.tar.gz inkscape-f62ab958909134854a42a4654d296988bc724b67.zip | |
Merged from trunk (r12517).
(bzr r11608.1.121)
86 files changed, 7289 insertions, 11484 deletions
diff --git a/astylerc b/astylerc new file mode 100644 index 000000000..c65b74d20 --- /dev/null +++ b/astylerc @@ -0,0 +1,26 @@ +# Inkscape coding style options for the Artistic Style formatter +# See http://astyle.sourceforge.net/ + +# Opening braces broken from functions only +--brackets=stroustrup + +# Four-space indent; convert stray tabs +--indent=spaces=4 +--convert-tabs + +# Spaces around binary operators and before control statement parens +--unpad-paren +--pad-oper +--pad-header + +# Attach pointers and references to variable names +--align-pointer=name +# --align-reference=name + +# Add brackets to single-statement blocks +--add-brackets + +# Misc. options +--indent-preprocessor +--indent-col1-comments +--suffix=none diff --git a/configure.ac b/configure.ac index 7a08d5c61..5be7a09a8 100644 --- a/configure.ac +++ b/configure.ac @@ -1036,7 +1036,7 @@ src/libcroco/makefile src/libgdl/makefile src/libnrtype/makefile src/libavoid/makefile -src/libunicode-convert/makefile +src/libuemf/makefile src/livarot/makefile src/live_effects/makefile src/live_effects/parameter/makefile diff --git a/generate_POTFILES.sh b/generate_POTFILES.sh index cff07c8df..a5b8cb170 100755 --- a/generate_POTFILES.sh +++ b/generate_POTFILES.sh @@ -20,6 +20,8 @@ rm -f po/POTFILES.in.new echo "[encoding: UTF-8]" echo "inkscape.desktop.in" echo "share/filters/filters.svg.h" + echo "share/palettes/palettes.h" + echo "share/patterns/patterns.svg.h" find src \( -name '*.cpp' -o -name '*.[ch]' \) -type f -print0 | xargs -0 egrep -l '(\<[QNC]?_|gettext) *\(' | sort find share/extensions -name '*.py' -type f -print0 | xargs -0 egrep -l '(\<[QNC]?_|gettext) *\(' | sort diff --git a/po/POTFILES.in b/po/POTFILES.in index 2f6877485..21753f2ed 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,35 +1,19 @@ - # List of source files containing translatable strings. # Please keep this file sorted alphabetically. -# Generated by Waf at Sun Oct 4 01:04:56 2009 - +# Generated by ./generate_POTFILES.sh at nie, 1 wrz 2013, 17:32:54 CEST [encoding: UTF-8] - -cxxtest/cxxtestgen.py inkscape.desktop.in -share/filters/i18n.py share/filters/filters.svg.h share/palettes/palettes.h -share/patterns/i18n.py share/patterns/patterns.svg.h -src/conn-avoid-ref.cpp -src/connector-context.h -src/live_effects/lpe-extrude.cpp -src/sp-flowtext.cpp src/arc-context.cpp src/box3d-context.cpp src/box3d.cpp src/color-profile.cpp src/connector-context.cpp src/context-fns.cpp -src/desktop-events.cpp src/desktop.cpp -src/ui/dialog/clonetiler.cpp -src/ui/dialog/export.cpp -src/ui/dialog/export.h -src/ui/dialog/spellcheck.cpp -src/ui/dialog/text-edit.cpp -src/ui/dialog/xml-tree.cpp +src/desktop-events.cpp src/display/canvas-axonomgrid.cpp src/display/canvas-grid.cpp src/display/snap-indicator.cpp @@ -64,8 +48,8 @@ src/extension/internal/bitmap/enhance.cpp src/extension/internal/bitmap/equalize.cpp src/extension/internal/bitmap/gaussianBlur.cpp src/extension/internal/bitmap/implode.cpp -src/extension/internal/bitmap/level.cpp src/extension/internal/bitmap/levelChannel.cpp +src/extension/internal/bitmap/level.cpp src/extension/internal/bitmap/medianFilter.cpp src/extension/internal/bitmap/modulate.cpp src/extension/internal/bitmap/negate.cpp @@ -94,8 +78,8 @@ src/extension/internal/filter/blurs.h src/extension/internal/filter/bumps.h src/extension/internal/filter/color.h src/extension/internal/filter/distort.h -src/extension/internal/filter/filter-file.cpp src/extension/internal/filter/filter.cpp +src/extension/internal/filter/filter-file.cpp src/extension/internal/filter/image.h src/extension/internal/filter/morphology.h src/extension/internal/filter/overlays.h @@ -108,8 +92,8 @@ src/extension/internal/gdkpixbuf-input.cpp src/extension/internal/gimpgrad.cpp src/extension/internal/grid.cpp src/extension/internal/javafx-out.cpp -src/extension/internal/latex-pstricks-out.cpp src/extension/internal/latex-pstricks.cpp +src/extension/internal/latex-pstricks-out.cpp src/extension/internal/odf.cpp src/extension/internal/pdf-input-cairo.cpp src/extension/internal/pdfinput/pdf-input.cpp @@ -137,37 +121,55 @@ src/gradient-context.cpp src/gradient-drag.cpp src/inkscape.cpp src/interface.cpp -src/io/sys.cpp src/knot.cpp src/knotholder.cpp src/libgdl/gdl-dock-bar.c -src/libgdl/gdl-dock-item-grip.c +src/libgdl/gdl-dock.c src/libgdl/gdl-dock-item.c +src/libgdl/gdl-dock-item-grip.c src/libgdl/gdl-dock-master.c src/libgdl/gdl-dock-notebook.c src/libgdl/gdl-dock-object.c src/libgdl/gdl-dock-paned.c src/libgdl/gdl-dock-placeholder.c src/libgdl/gdl-dock-tablabel.c -src/libgdl/gdl-dock.c +src/libgdl/gdl-i18n.c src/libgdl/gdl-i18n.h src/libgdl/gdl-switcher.c src/libnrtype/FontFactory.cpp src/live_effects/effect.cpp +src/live_effects/lpe-angle_bisector.cpp src/live_effects/lpe-bendpath.cpp +src/live_effects/lpe-boolops.cpp +src/live_effects/lpe-circle_with_radius.cpp src/live_effects/lpe-clone-original.cpp src/live_effects/lpe-constructgrid.cpp +src/live_effects/lpe-copy_rotate.cpp src/live_effects/lpe-curvestitch.cpp +src/live_effects/lpe-dynastroke.cpp src/live_effects/lpe-envelope.cpp +src/live_effects/lpe-extrude.cpp src/live_effects/lpe-gears.cpp src/live_effects/lpe-interpolate.cpp src/live_effects/lpe-knot.cpp +src/live_effects/lpe-lattice.cpp +src/live_effects/lpe-line_segment.cpp +src/live_effects/lpe-mirror_symmetry.cpp src/live_effects/lpe-offset.cpp +src/live_effects/lpe-parallel.cpp +src/live_effects/lpe-path_length.cpp src/live_effects/lpe-patternalongpath.cpp +src/live_effects/lpe-perp_bisector.cpp +src/live_effects/lpe-perspective_path.cpp src/live_effects/lpe-powerstroke.cpp +src/live_effects/lpe-recursiveskeleton.cpp src/live_effects/lpe-rough-hatches.cpp src/live_effects/lpe-ruler.cpp +src/live_effects/lpe-skeleton.cpp src/live_effects/lpe-sketch.cpp +src/live_effects/lpe-tangent_to_curve.cpp +src/live_effects/lpe-test-doEffect-stack.cpp +src/live_effects/lpe-text_label.cpp src/live_effects/lpe-vonkoch.cpp src/live_effects/parameter/bool.cpp src/live_effects/parameter/enum.h @@ -180,17 +182,18 @@ src/live_effects/parameter/random.cpp src/live_effects/parameter/text.cpp src/live_effects/parameter/unit.cpp src/live_effects/parameter/vector.cpp +src/lpe-tool-context.cpp src/main-cmdlineact.cpp src/main.cpp src/menus-skeleton.h src/mesh-context.cpp src/object-edit.cpp src/path-chemistry.cpp -src/pen-context.cpp src/pencil-context.cpp +src/pen-context.cpp src/persp3d.cpp -src/preferences-skeleton.h src/preferences.cpp +src/preferences-skeleton.h src/rdf.cpp src/rect-context.cpp src/resource-manager.cpp @@ -200,31 +203,32 @@ src/selection-describer.cpp src/seltrans.cpp src/seltrans-handles.cpp src/shortcuts.cpp -src/shape-editor.cpp src/sp-anchor.cpp src/sp-ellipse.cpp src/sp-flowregion.cpp +src/sp-flowtext.cpp src/sp-guide.cpp src/sp-image.cpp -src/sp-item-group.cpp +src/spiral-context.cpp src/sp-item.cpp +src/sp-item-group.cpp src/sp-line.cpp +src/splivarot.cpp src/sp-lpe-item.cpp src/sp-namedview.cpp src/sp-offset.cpp src/sp-path.cpp src/sp-polygon.cpp src/sp-polyline.cpp +src/spray-context.cpp src/sp-rect.cpp src/sp-spiral.cpp src/sp-star.cpp +src/sp-switch.cpp src/sp-text.cpp src/sp-tref.cpp src/sp-tspan.cpp src/sp-use.cpp -src/spiral-context.cpp -src/splivarot.cpp -src/spray-context.cpp src/star-context.cpp src/text-chemistry.cpp src/text-context.cpp @@ -237,10 +241,12 @@ src/ui/clipboard.cpp src/ui/dialog/aboutbox.cpp src/ui/dialog/align-and-distribute.cpp src/ui/dialog/calligraphic-profile-rename.cpp +src/ui/dialog/clonetiler.cpp src/ui/dialog/color-item.cpp src/ui/dialog/debug.cpp src/ui/dialog/document-metadata.cpp src/ui/dialog/document-properties.cpp +src/ui/dialog/export.cpp src/ui/dialog/extension-editor.cpp src/ui/dialog/filedialogimpl-gtkmm.cpp src/ui/dialog/filedialogimpl-win32.cpp @@ -255,28 +261,31 @@ src/ui/dialog/inkscape-preferences.cpp src/ui/dialog/input.cpp src/ui/dialog/layer-properties.cpp src/ui/dialog/layers.cpp -src/ui/dialog/livepatheffect-editor.cpp src/ui/dialog/livepatheffect-add.cpp +src/ui/dialog/livepatheffect-editor.cpp src/ui/dialog/memory.cpp src/ui/dialog/messages.cpp src/ui/dialog/new-from-template.cpp -src/ui/dialog/template-load-tab.cpp -src/ui/dialog/template-widget.cpp src/ui/dialog/object-attributes.cpp src/ui/dialog/object-properties.cpp src/ui/dialog/ocaldialogs.cpp -src/ui/dialog/print.cpp src/ui/dialog/print-colors-preview-dialog.cpp +src/ui/dialog/print.cpp +src/ui/dialog/spellcheck.cpp src/ui/dialog/svg-fonts-dialog.cpp -src/ui/dialog/symbols.cpp src/ui/dialog/swatches.cpp +src/ui/dialog/symbols.cpp +src/ui/dialog/template-load-tab.cpp +src/ui/dialog/template-widget.cpp +src/ui/dialog/text-edit.cpp src/ui/dialog/tile.cpp src/ui/dialog/tracedialog.cpp src/ui/dialog/transformation.cpp +src/ui/dialog/xml-tree.cpp src/ui/tool/curve-drag-point.cpp src/ui/tool/multi-path-manipulator.cpp -src/ui/tool/node-tool.cpp src/ui/tool/node.cpp +src/ui/tool/node-tool.cpp src/ui/tool/path-manipulator.cpp src/ui/tool/transform-handle-set.cpp src/ui/widget/combo-enums.h @@ -294,6 +303,7 @@ src/ui/widget/selected-style.cpp src/ui/widget/spin-scale.cpp src/ui/widget/spin-slider.cpp src/ui/widget/style-swatch.cpp +src/util/ege-tags.cpp src/util/enums.h src/vanishing-point.cpp src/verbs.cpp @@ -321,24 +331,23 @@ src/widgets/pencil-toolbar.cpp src/widgets/rect-toolbar.cpp src/widgets/ruler.cpp src/widgets/select-toolbar.cpp -src/widgets/spiral-toolbar.cpp -src/widgets/spray-toolbar.cpp src/widgets/sp-attribute-widget.cpp src/widgets/sp-color-icc-selector.cpp src/widgets/sp-color-notebook.cpp src/widgets/sp-color-scales.cpp src/widgets/sp-color-selector.cpp src/widgets/sp-color-wheel-selector.cpp +src/widgets/spiral-toolbar.cpp +src/widgets/spray-toolbar.cpp src/widgets/sp-xmlview-attr-list.cpp src/widgets/sp-xmlview-content.cpp src/widgets/star-toolbar.cpp -src/widgets/stroke-style.cpp src/widgets/stroke-marker-selector.cpp +src/widgets/stroke-style.cpp src/widgets/swatch-selector.cpp src/widgets/text-toolbar.cpp src/widgets/toolbox.cpp src/widgets/tweak-toolbar.cpp -src/widgets/zoom-toolbar.cpp share/extensions/convert2dashes.py share/extensions/dimension.py share/extensions/draw_from_triangle.py @@ -355,7 +364,6 @@ share/extensions/gimp_xcf.py share/extensions/guides_creator.py share/extensions/guillotine.py share/extensions/hpgl_input.py -share/extensions/dxf_outlines.py share/extensions/inkex.py share/extensions/interp_att_g.py share/extensions/jessyInk_autoTexts.py @@ -376,7 +384,6 @@ share/extensions/pathscatter.py share/extensions/perspective.py share/extensions/polyhedron_3d.py share/extensions/print_win32_vector.py -share/extensions/render_alphabetsoup.py share/extensions/render_barcode_datamatrix.py share/extensions/render_barcode_qrcode.py share/extensions/replace_font.py @@ -388,7 +395,6 @@ share/extensions/uniconv_output.py share/extensions/voronoi2svg.py share/extensions/web-set-att.py share/extensions/webslicer_create_group.py -share/extensions/webslicer_create_rect.py share/extensions/webslicer_export.py share/extensions/web-transmit-att.py share/extensions/wireframe_sphere.py @@ -421,6 +427,7 @@ share/extensions/wireframe_sphere.py [type: gettext/xml] share/extensions/color_replace.inx [type: gettext/xml] share/extensions/color_rgbbarrel.inx [type: gettext/xml] share/extensions/convert2dashes.inx +[type: gettext/xml] share/extensions/dhw_input.inx [type: gettext/xml] share/extensions/dia.inx [type: gettext/xml] share/extensions/dimension.inx [type: gettext/xml] share/extensions/dots.inx @@ -460,6 +467,8 @@ share/extensions/wireframe_sphere.py [type: gettext/xml] share/extensions/guides_creator.inx [type: gettext/xml] share/extensions/guillotine.inx [type: gettext/xml] share/extensions/handles.inx +[type: gettext/xml] share/extensions/hershey.inx +[type: gettext/xml] share/extensions/hpgl_input.inx [type: gettext/xml] share/extensions/hpgl_output.inx [type: gettext/xml] share/extensions/ink2canvas.inx [type: gettext/xml] share/extensions/inkscape_follow_link.inx @@ -505,16 +514,16 @@ share/extensions/wireframe_sphere.py [type: gettext/xml] share/extensions/plt_output.inx [type: gettext/xml] share/extensions/polyhedron_3d.inx [type: gettext/xml] share/extensions/previous_glyph_layer.inx -[type: gettext/xml] share/extensions/print_win32_vector.inx [type: gettext/xml] share/extensions/printing_marks.inx +[type: gettext/xml] share/extensions/print_win32_vector.inx [type: gettext/xml] share/extensions/ps_input.inx [type: gettext/xml] share/extensions/radiusrand.inx [type: gettext/xml] share/extensions/render_alphabetsoup.inx -[type: gettext/xml] share/extensions/render_barcode.inx [type: gettext/xml] share/extensions/render_barcode_datamatrix.inx +[type: gettext/xml] share/extensions/render_barcode.inx [type: gettext/xml] share/extensions/render_barcode_qrcode.inx -[type: gettext/xml] share/extensions/render_gears.inx [type: gettext/xml] share/extensions/render_gear_rack.inx +[type: gettext/xml] share/extensions/render_gears.inx [type: gettext/xml] share/extensions/replace_font.inx [type: gettext/xml] share/extensions/restack.inx [type: gettext/xml] share/extensions/rtree.inx @@ -546,10 +555,10 @@ share/extensions/wireframe_sphere.py [type: gettext/xml] share/extensions/triangle.inx [type: gettext/xml] share/extensions/txt2svg.inx [type: gettext/xml] share/extensions/voronoi2svg.inx +[type: gettext/xml] share/extensions/web-set-att.inx [type: gettext/xml] share/extensions/webslicer_create_group.inx [type: gettext/xml] share/extensions/webslicer_create_rect.inx [type: gettext/xml] share/extensions/webslicer_export.inx -[type: gettext/xml] share/extensions/web-set-att.inx [type: gettext/xml] share/extensions/web-transmit-att.inx [type: gettext/xml] share/extensions/whirl.inx [type: gettext/xml] share/extensions/wireframe_sphere.inx @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: Inkscape\n" "Report-Msgid-Bugs-To: inkscape-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2013-06-21 15:29+0200\n" -"PO-Revision-Date: 2013-06-26 09:22+0300\n" +"POT-Creation-Date: 2013-08-22 14:40+0200\n" +"PO-Revision-Date: 2013-09-06 22:50+0300\n" "Last-Translator: Jānis Eisaks <jancs@dv.lv>\n" "Language-Team: Latvian\n" "Language: lv\n" @@ -939,8 +939,8 @@ msgid "Black Light" msgstr "Melna gaisma" #: ../share/filters/filters.svg.h:1 -#: ../src/ui/dialog/clonetiler.cpp:831 -#: ../src/ui/dialog/clonetiler.cpp:982 +#: ../src/ui/dialog/clonetiler.cpp:832 +#: ../src/ui/dialog/clonetiler.cpp:983 #: ../src/extension/internal/bitmap/colorize.cpp:52 #: ../src/extension/internal/filter/bumps.h:101 #: ../src/extension/internal/filter/bumps.h:321 @@ -972,7 +972,7 @@ msgstr "Melna gaisma" #: ../src/extension/internal/filter/paint.h:717 #: ../src/extension/internal/filter/shadows.h:73 #: ../src/extension/internal/filter/transparency.h:345 -#: ../src/ui/dialog/document-properties.cpp:150 +#: ../src/ui/dialog/document-properties.cpp:149 #: ../share/extensions/color_blackandwhite.inx.h:2 #: ../share/extensions/color_brighter.inx.h:2 #: ../share/extensions/color_custom.inx.h:15 @@ -3211,8 +3211,8 @@ msgid "Defines the direction and magnitude of the extrusion" msgstr "Nosaka izspiešanas virzienu un lielumu" #: ../src/sp-flowtext.cpp:339 -#: ../src/sp-text.cpp:400 -#: ../src/text-context.cpp:1630 +#: ../src/sp-text.cpp:399 +#: ../src/text-context.cpp:1631 msgid " [truncated]" msgstr " [nogriezts]" @@ -3232,44 +3232,44 @@ msgstr[0] "<b>Saistītais teksta aizpildījums</b> (%d rakstzīme %s)" msgstr[1] "<b>Saistītais teksta aizpildījums</b> (%d rakstzīmes %s)" msgstr[2] "<b>Saistītais teksta aizpildījums</b> (%d rakstzīmes %s)" -#: ../src/arc-context.cpp:307 +#: ../src/arc-context.cpp:306 msgid "<b>Ctrl</b>: make circle or integer-ratio ellipse, snap arc/segment angle" msgstr "<b>Ctrl</b>: izveidot riņķi vai veselu skaitļu attiecību elipsi, piesaistīt loka/sektora leņķi" -#: ../src/arc-context.cpp:308 -#: ../src/rect-context.cpp:353 +#: ../src/arc-context.cpp:307 +#: ../src/rect-context.cpp:352 msgid "<b>Shift</b>: draw around the starting point" msgstr "<b>Shift</b>: zīmēt apkārt sākumpunktam" -#: ../src/arc-context.cpp:464 +#: ../src/arc-context.cpp:465 #, c-format msgid "<b>Ellipse</b>: %s × %s (constrained to ratio %d:%d); with <b>Shift</b> to draw around the starting point" msgstr "<b>Elipse</b>: %s × %s (ierobežota ar attiecībām %d:%d); ar <b>Shift</b> - zīmēt apkārt sākumpunktam" -#: ../src/arc-context.cpp:466 +#: ../src/arc-context.cpp:467 #, c-format msgid "<b>Ellipse</b>: %s × %s; with <b>Ctrl</b> to make square or integer-ratio ellipse; with <b>Shift</b> to draw around the starting point" msgstr "<b>Elipse</b>: %s × %s; ar <b>Ctrl</b> - izveidot elipsi ar kvadrātiskām vai veselu skaitļu proporcijām; ar <b>Shift</b> - zīmēt apkārt sākumpunktam" -#: ../src/arc-context.cpp:492 +#: ../src/arc-context.cpp:493 msgid "Create ellipse" msgstr "Izveidot elipsi" -#: ../src/box3d-context.cpp:421 -#: ../src/box3d-context.cpp:428 -#: ../src/box3d-context.cpp:435 -#: ../src/box3d-context.cpp:442 -#: ../src/box3d-context.cpp:449 -#: ../src/box3d-context.cpp:456 +#: ../src/box3d-context.cpp:420 +#: ../src/box3d-context.cpp:427 +#: ../src/box3d-context.cpp:434 +#: ../src/box3d-context.cpp:441 +#: ../src/box3d-context.cpp:448 +#: ../src/box3d-context.cpp:455 msgid "Change perspective (angle of PLs)" msgstr "Mainīt perspektīvu (leņķi starp PL )" #. status text -#: ../src/box3d-context.cpp:640 +#: ../src/box3d-context.cpp:639 msgid "<b>3D Box</b>; with <b>Shift</b> to extrude along the Z axis" msgstr "<b>3D paralēlskaldnis</b>; ar <b>Shift</b> izstiept gar Z asi" -#: ../src/box3d-context.cpp:668 +#: ../src/box3d-context.cpp:667 msgid "Create 3D box" msgstr "Izveidojiet 3D paralēlskaldni" @@ -3293,16 +3293,17 @@ msgstr "(nederīga UTF-8 rinda)" #: ../src/ui/dialog/filter-effects-dialog.cpp:518 #: ../src/ui/dialog/inkscape-preferences.cpp:332 #: ../src/ui/dialog/inkscape-preferences.cpp:641 -#: ../src/ui/dialog/inkscape-preferences.cpp:1255 -#: ../src/ui/dialog/inkscape-preferences.cpp:1419 -#: ../src/ui/dialog/inkscape-preferences.cpp:1817 +#: ../src/ui/dialog/inkscape-preferences.cpp:1259 +#: ../src/ui/dialog/inkscape-preferences.cpp:1423 +#: ../src/ui/dialog/inkscape-preferences.cpp:1821 #: ../src/ui/dialog/input.cpp:742 #: ../src/ui/dialog/input.cpp:743 #: ../src/ui/dialog/input.cpp:1571 #: ../src/ui/dialog/input.cpp:1625 -#: ../src/verbs.cpp:2292 +#: ../src/verbs.cpp:2345 #: ../src/widgets/gradient-toolbar.cpp:1128 -#: ../src/widgets/pencil-toolbar.cpp:189 +#: ../src/widgets/pencil-toolbar.cpp:184 +#: ../src/widgets/stroke-marker-selector.cpp:388 #: ../share/extensions/gcodetools_area.inx.h:48 #: ../share/extensions/gcodetools_dxf_points.inx.h:20 #: ../share/extensions/gcodetools_engraving.inx.h:26 @@ -3310,7 +3311,6 @@ msgstr "(nederīga UTF-8 rinda)" #: ../share/extensions/gcodetools_lathe.inx.h:41 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:30 #: ../share/extensions/grid_polar.inx.h:4 -#: ../share/extensions/guides_creator.inx.h:7 #: ../share/extensions/scour.inx.h:18 msgid "None" msgstr "Neviens" @@ -3344,12 +3344,12 @@ msgid "Select <b>at least one non-connector object</b>." msgstr "Izvēlieties <b>vismaz vienu objektu, kas nav savienotājs</b>." #: ../src/connector-context.cpp:1456 -#: ../src/widgets/connector-toolbar.cpp:330 +#: ../src/widgets/connector-toolbar.cpp:326 msgid "Make connectors avoid selected objects" msgstr "Likt savienotājiem izvairīties no atlasītajiem objektiem" #: ../src/connector-context.cpp:1457 -#: ../src/widgets/connector-toolbar.cpp:340 +#: ../src/widgets/connector-toolbar.cpp:336 msgid "Make connectors ignore selected objects" msgstr "Likt savienotājiem neņemt vērā atlasītos objektus" @@ -3363,636 +3363,636 @@ msgstr "<b>Pašreizējais slānis ir slēpts</b>. Padariet to redzamu, lai būtu msgid "<b>Current layer is locked</b>. Unlock it to be able to draw on it." msgstr "<b>Pašreizējais slānis ir slēgts</b>. Atslēdziet to, lai būtu iespējams tajā zīmēt." -#: ../src/desktop-events.cpp:228 +#: ../src/desktop-events.cpp:225 msgid "Create guide" msgstr "Pievienot palīglīniju" -#: ../src/desktop-events.cpp:473 +#: ../src/desktop-events.cpp:470 msgid "Move guide" msgstr "Pārvietot palīglīniju" -#: ../src/desktop-events.cpp:480 -#: ../src/desktop-events.cpp:538 +#: ../src/desktop-events.cpp:477 +#: ../src/desktop-events.cpp:535 #: ../src/ui/dialog/guides.cpp:144 msgid "Delete guide" msgstr "Dzēst palīglīniju" -#: ../src/desktop-events.cpp:518 +#: ../src/desktop-events.cpp:515 #, c-format msgid "<b>Guideline</b>: %s" msgstr "<b>Palīglīnija</b>: %s" -#: ../src/desktop.cpp:911 +#: ../src/desktop.cpp:826 msgid "No previous zoom." msgstr "Nav iepriekšējās tālummaiņas." -#: ../src/desktop.cpp:932 +#: ../src/desktop.cpp:847 msgid "No next zoom." msgstr "Nav nākošās tālummaiņas." -#: ../src/ui/dialog/clonetiler.cpp:111 +#: ../src/ui/dialog/clonetiler.cpp:112 msgid "_Symmetry" msgstr "_Simetrija" #. TRANSLATORS: "translation" means "shift" / "displacement" here. -#: ../src/ui/dialog/clonetiler.cpp:123 +#: ../src/ui/dialog/clonetiler.cpp:124 msgid "<b>P1</b>: simple translation" msgstr "<b>P1</b>: vienkārša nobīde" -#: ../src/ui/dialog/clonetiler.cpp:124 +#: ../src/ui/dialog/clonetiler.cpp:125 msgid "<b>P2</b>: 180° rotation" msgstr "<b>P2</b>: 180° pagriešana" -#: ../src/ui/dialog/clonetiler.cpp:125 +#: ../src/ui/dialog/clonetiler.cpp:126 msgid "<b>PM</b>: reflection" msgstr "<b>PM</b>: atspulgs" #. TRANSLATORS: "glide reflection" is a reflection and a translation combined. #. For more info, see http://mathforum.org/sum95/suzanne/symsusan.html -#: ../src/ui/dialog/clonetiler.cpp:128 +#: ../src/ui/dialog/clonetiler.cpp:129 msgid "<b>PG</b>: glide reflection" msgstr "<b>PG</b>: slīdošais atspulgs" -#: ../src/ui/dialog/clonetiler.cpp:129 +#: ../src/ui/dialog/clonetiler.cpp:130 msgid "<b>CM</b>: reflection + glide reflection" msgstr "<b>CM</b>: atspulgs + slīdošais atspulgs" -#: ../src/ui/dialog/clonetiler.cpp:130 +#: ../src/ui/dialog/clonetiler.cpp:131 msgid "<b>PMM</b>: reflection + reflection" msgstr "<b>PMM</b>: atspulgs + atspulgs" -#: ../src/ui/dialog/clonetiler.cpp:131 +#: ../src/ui/dialog/clonetiler.cpp:132 msgid "<b>PMG</b>: reflection + 180° rotation" msgstr "<b>PMG</b>: atspulgs + 180° pagrieziens" -#: ../src/ui/dialog/clonetiler.cpp:132 +#: ../src/ui/dialog/clonetiler.cpp:133 msgid "<b>PGG</b>: glide reflection + 180° rotation" msgstr "<b>PGG</b>: slīdošs atspulgs + 180° pagrieziens" -#: ../src/ui/dialog/clonetiler.cpp:133 +#: ../src/ui/dialog/clonetiler.cpp:134 msgid "<b>CMM</b>: reflection + reflection + 180° rotation" msgstr "<b>CMM</b>: atspulgs + atspulgs + 180° pagrieziens" -#: ../src/ui/dialog/clonetiler.cpp:134 +#: ../src/ui/dialog/clonetiler.cpp:135 msgid "<b>P4</b>: 90° rotation" msgstr "<b>P4</b>: 90° pagriešana" -#: ../src/ui/dialog/clonetiler.cpp:135 +#: ../src/ui/dialog/clonetiler.cpp:136 msgid "<b>P4M</b>: 90° rotation + 45° reflection" msgstr "<b>P4M</b>: 90° pagrieziens + 45° atspulgs" -#: ../src/ui/dialog/clonetiler.cpp:136 +#: ../src/ui/dialog/clonetiler.cpp:137 msgid "<b>P4G</b>: 90° rotation + 90° reflection" msgstr "<b>P4G</b>: 90° pagrieziens + 90° atspulgs" -#: ../src/ui/dialog/clonetiler.cpp:137 +#: ../src/ui/dialog/clonetiler.cpp:138 msgid "<b>P3</b>: 120° rotation" msgstr "<b>P3</b>: 120° pagriešana" -#: ../src/ui/dialog/clonetiler.cpp:138 +#: ../src/ui/dialog/clonetiler.cpp:139 msgid "<b>P31M</b>: reflection + 120° rotation, dense" msgstr "<b>P31M</b>: atspulgs + 120° pagrieziens, blīvs" -#: ../src/ui/dialog/clonetiler.cpp:139 +#: ../src/ui/dialog/clonetiler.cpp:140 msgid "<b>P3M1</b>: reflection + 120° rotation, sparse" msgstr "<b>P3M1</b>: atspulgs + 120° pagrieziens, rets" -#: ../src/ui/dialog/clonetiler.cpp:140 +#: ../src/ui/dialog/clonetiler.cpp:141 msgid "<b>P6</b>: 60° rotation" msgstr "<b>P6</b>: 60° pagriešana" -#: ../src/ui/dialog/clonetiler.cpp:141 +#: ../src/ui/dialog/clonetiler.cpp:142 msgid "<b>P6M</b>: reflection + 60° rotation" msgstr "<b>P6M</b>: atspulgs + 60° pagrieziens" -#: ../src/ui/dialog/clonetiler.cpp:161 +#: ../src/ui/dialog/clonetiler.cpp:162 msgid "Select one of the 17 symmetry groups for the tiling" msgstr "Izvēlieties vienu no 17 mozaīkas simetrijas grupām" -#: ../src/ui/dialog/clonetiler.cpp:179 +#: ../src/ui/dialog/clonetiler.cpp:180 msgid "S_hift" msgstr "N_obīde" #. TRANSLATORS: "shift" means: the tiles will be shifted (offset) horizontally by this amount -#: ../src/ui/dialog/clonetiler.cpp:189 +#: ../src/ui/dialog/clonetiler.cpp:190 #, no-c-format msgid "<b>Shift X:</b>" msgstr "<b>Pārbīde X:</b>" -#: ../src/ui/dialog/clonetiler.cpp:197 +#: ../src/ui/dialog/clonetiler.cpp:198 #, no-c-format msgid "Horizontal shift per row (in % of tile width)" msgstr "Horizontālā pārbīde rindā (% no raksta elementa platuma)" -#: ../src/ui/dialog/clonetiler.cpp:205 +#: ../src/ui/dialog/clonetiler.cpp:206 #, no-c-format msgid "Horizontal shift per column (in % of tile width)" msgstr "Horizontālā pārbīde slejā (% no raksta elementa platuma)" -#: ../src/ui/dialog/clonetiler.cpp:211 +#: ../src/ui/dialog/clonetiler.cpp:212 msgid "Randomize the horizontal shift by this percentage" msgstr "Dažādot horizontālo pārbīdi norādīto procentu robežās" #. TRANSLATORS: "shift" means: the tiles will be shifted (offset) vertically by this amount -#: ../src/ui/dialog/clonetiler.cpp:221 +#: ../src/ui/dialog/clonetiler.cpp:222 #, no-c-format msgid "<b>Shift Y:</b>" msgstr "<b>Pārbīde Y:</b>" -#: ../src/ui/dialog/clonetiler.cpp:229 +#: ../src/ui/dialog/clonetiler.cpp:230 #, no-c-format msgid "Vertical shift per row (in % of tile height)" msgstr "Vertikālā pārbīde rindā (% no raksta elementa augstuma)" -#: ../src/ui/dialog/clonetiler.cpp:237 +#: ../src/ui/dialog/clonetiler.cpp:238 #, no-c-format msgid "Vertical shift per column (in % of tile height)" msgstr "Vertikālā pārbīde slejā (% no raksta elementa augstuma)" -#: ../src/ui/dialog/clonetiler.cpp:244 +#: ../src/ui/dialog/clonetiler.cpp:245 msgid "Randomize the vertical shift by this percentage" msgstr "Dažādot vertikālo pārbīdi norādīto procentu robežās" -#: ../src/ui/dialog/clonetiler.cpp:252 -#: ../src/ui/dialog/clonetiler.cpp:398 +#: ../src/ui/dialog/clonetiler.cpp:253 +#: ../src/ui/dialog/clonetiler.cpp:399 msgid "<b>Exponent:</b>" msgstr "<b>Kāpinatājs:</b>" -#: ../src/ui/dialog/clonetiler.cpp:259 +#: ../src/ui/dialog/clonetiler.cpp:260 msgid "Whether rows are spaced evenly (1), converge (<1) or diverge (>1)" msgstr "Vai atstarpes starp rindām ir vienādas (1), savirzās (<1), atvirzās (>1)" -#: ../src/ui/dialog/clonetiler.cpp:266 +#: ../src/ui/dialog/clonetiler.cpp:267 msgid "Whether columns are spaced evenly (1), converge (<1) or diverge (>1)" msgstr "Vai atstarpes starp slejām ir vienādas (1), savirzās (<1), atvirzās (>1)" #. TRANSLATORS: "Alternate" is a verb here -#: ../src/ui/dialog/clonetiler.cpp:274 -#: ../src/ui/dialog/clonetiler.cpp:438 -#: ../src/ui/dialog/clonetiler.cpp:514 -#: ../src/ui/dialog/clonetiler.cpp:587 -#: ../src/ui/dialog/clonetiler.cpp:633 -#: ../src/ui/dialog/clonetiler.cpp:760 +#: ../src/ui/dialog/clonetiler.cpp:275 +#: ../src/ui/dialog/clonetiler.cpp:439 +#: ../src/ui/dialog/clonetiler.cpp:515 +#: ../src/ui/dialog/clonetiler.cpp:588 +#: ../src/ui/dialog/clonetiler.cpp:634 +#: ../src/ui/dialog/clonetiler.cpp:761 msgid "<small>Alternate:</small>" msgstr "<small>Alternatīvs:</small>" -#: ../src/ui/dialog/clonetiler.cpp:280 +#: ../src/ui/dialog/clonetiler.cpp:281 msgid "Alternate the sign of shifts for each row" msgstr "Mainiet pārbīdes zīmi katrai rindai" -#: ../src/ui/dialog/clonetiler.cpp:285 +#: ../src/ui/dialog/clonetiler.cpp:286 msgid "Alternate the sign of shifts for each column" msgstr "Mainiet pārbīdes zīmi katrai slejai" #. TRANSLATORS: "Cumulate" is a verb here -#: ../src/ui/dialog/clonetiler.cpp:292 -#: ../src/ui/dialog/clonetiler.cpp:456 -#: ../src/ui/dialog/clonetiler.cpp:532 +#: ../src/ui/dialog/clonetiler.cpp:293 +#: ../src/ui/dialog/clonetiler.cpp:457 +#: ../src/ui/dialog/clonetiler.cpp:533 msgid "<small>Cumulate:</small>" msgstr "<small>Uzkrāt:</small>" -#: ../src/ui/dialog/clonetiler.cpp:298 +#: ../src/ui/dialog/clonetiler.cpp:299 msgid "Cumulate the shifts for each row" msgstr "Uzkrāt pārbīdes katrai rindai" -#: ../src/ui/dialog/clonetiler.cpp:303 +#: ../src/ui/dialog/clonetiler.cpp:304 msgid "Cumulate the shifts for each column" msgstr "Uzkrāt pārbīdes katrai slejai" #. TRANSLATORS: "Cumulate" is a verb here -#: ../src/ui/dialog/clonetiler.cpp:310 +#: ../src/ui/dialog/clonetiler.cpp:311 msgid "<small>Exclude tile:</small>" msgstr "<small>Neņemt vērā raksta elementu:</small>" -#: ../src/ui/dialog/clonetiler.cpp:316 +#: ../src/ui/dialog/clonetiler.cpp:317 msgid "Exclude tile height in shift" msgstr "Pārbīdot neņemt vērā raksta elementa augstumu" -#: ../src/ui/dialog/clonetiler.cpp:321 +#: ../src/ui/dialog/clonetiler.cpp:322 msgid "Exclude tile width in shift" msgstr "Pārbīdot neņemt vērā raksta elementa platumu" -#: ../src/ui/dialog/clonetiler.cpp:330 +#: ../src/ui/dialog/clonetiler.cpp:331 msgid "Sc_ale" msgstr "_Mērogs" -#: ../src/ui/dialog/clonetiler.cpp:338 +#: ../src/ui/dialog/clonetiler.cpp:339 msgid "<b>Scale X:</b>" msgstr "<b>Mērogs X:</b>" -#: ../src/ui/dialog/clonetiler.cpp:346 +#: ../src/ui/dialog/clonetiler.cpp:347 #, no-c-format msgid "Horizontal scale per row (in % of tile width)" msgstr "Horizontālais mērogs pa rindām (% no raksta elementa platuma)" -#: ../src/ui/dialog/clonetiler.cpp:354 +#: ../src/ui/dialog/clonetiler.cpp:355 #, no-c-format msgid "Horizontal scale per column (in % of tile width)" msgstr "Horizontālais mērogs pa slejām (% no raksta elementa platuma)" -#: ../src/ui/dialog/clonetiler.cpp:360 +#: ../src/ui/dialog/clonetiler.cpp:361 msgid "Randomize the horizontal scale by this percentage" msgstr "Dažādot horizontālo mērogu norādīto procentu robežās" -#: ../src/ui/dialog/clonetiler.cpp:368 +#: ../src/ui/dialog/clonetiler.cpp:369 msgid "<b>Scale Y:</b>" msgstr "<b>Mērogs Y:</b>" -#: ../src/ui/dialog/clonetiler.cpp:376 +#: ../src/ui/dialog/clonetiler.cpp:377 #, no-c-format msgid "Vertical scale per row (in % of tile height)" msgstr "Vertikālais mērogs pa rindām (% no raksta elementa augstuma)" -#: ../src/ui/dialog/clonetiler.cpp:384 +#: ../src/ui/dialog/clonetiler.cpp:385 #, no-c-format msgid "Vertical scale per column (in % of tile height)" msgstr "Vertikālais mērogs pa slejām (% no raksta elementa augstuma)" -#: ../src/ui/dialog/clonetiler.cpp:390 +#: ../src/ui/dialog/clonetiler.cpp:391 msgid "Randomize the vertical scale by this percentage" msgstr "Dažādot vertikālo mērogu norādīto procentu robežās" -#: ../src/ui/dialog/clonetiler.cpp:404 +#: ../src/ui/dialog/clonetiler.cpp:405 msgid "Whether row scaling is uniform (1), converge (<1) or diverge (>1)" msgstr "Vai rindu mērogošana ir vienāda (1), savirzās (<1), atvirzās (>1)" -#: ../src/ui/dialog/clonetiler.cpp:410 +#: ../src/ui/dialog/clonetiler.cpp:411 msgid "Whether column scaling is uniform (1), converge (<1) or diverge (>1)" msgstr "Vai sleju mērogošana ir vienāda (1), savirzās (<1), atvirzās (>1)" -#: ../src/ui/dialog/clonetiler.cpp:418 +#: ../src/ui/dialog/clonetiler.cpp:419 msgid "<b>Base:</b>" msgstr "<b>Bāze:</b>" -#: ../src/ui/dialog/clonetiler.cpp:424 -#: ../src/ui/dialog/clonetiler.cpp:430 +#: ../src/ui/dialog/clonetiler.cpp:425 +#: ../src/ui/dialog/clonetiler.cpp:431 msgid "Base for a logarithmic spiral: not used (0), converge (<1), or diverge (>1)" msgstr "Logaritmiskās spirāles bāze: netiek izmantota (0), savirzās (<1), atvirzās (>1)" -#: ../src/ui/dialog/clonetiler.cpp:444 +#: ../src/ui/dialog/clonetiler.cpp:445 msgid "Alternate the sign of scales for each row" msgstr "Mainiet mērogošanas zīmi katrai slejai" -#: ../src/ui/dialog/clonetiler.cpp:449 +#: ../src/ui/dialog/clonetiler.cpp:450 msgid "Alternate the sign of scales for each column" msgstr "Mainiet mērogošanas zīmi katrai slejai" -#: ../src/ui/dialog/clonetiler.cpp:462 +#: ../src/ui/dialog/clonetiler.cpp:463 msgid "Cumulate the scales for each row" msgstr "Uzkrāt katras rindas mērogojumu" -#: ../src/ui/dialog/clonetiler.cpp:467 +#: ../src/ui/dialog/clonetiler.cpp:468 msgid "Cumulate the scales for each column" msgstr "Uzkrāt katras slejas mērogojumu" -#: ../src/ui/dialog/clonetiler.cpp:476 +#: ../src/ui/dialog/clonetiler.cpp:477 msgid "_Rotation" msgstr "G_riešana" -#: ../src/ui/dialog/clonetiler.cpp:484 +#: ../src/ui/dialog/clonetiler.cpp:485 msgid "<b>Angle:</b>" msgstr "<b>Leņķis:</b>" -#: ../src/ui/dialog/clonetiler.cpp:492 +#: ../src/ui/dialog/clonetiler.cpp:493 #, no-c-format msgid "Rotate tiles by this angle for each row" msgstr "Pagrieziet raksta elementus katrā rindā par norādītajiem grādiem" -#: ../src/ui/dialog/clonetiler.cpp:500 +#: ../src/ui/dialog/clonetiler.cpp:501 #, no-c-format msgid "Rotate tiles by this angle for each column" msgstr "Pagrieziet raksta elementus katrā slejā par norādītajiem grādiem" -#: ../src/ui/dialog/clonetiler.cpp:506 +#: ../src/ui/dialog/clonetiler.cpp:507 msgid "Randomize the rotation angle by this percentage" msgstr "Dažādojiet pagrieziena leņķi norādīto procentu robežās" -#: ../src/ui/dialog/clonetiler.cpp:520 +#: ../src/ui/dialog/clonetiler.cpp:521 msgid "Alternate the rotation direction for each row" msgstr "Mainiet pagrieziena virzienu katrai rindai" -#: ../src/ui/dialog/clonetiler.cpp:525 +#: ../src/ui/dialog/clonetiler.cpp:526 msgid "Alternate the rotation direction for each column" msgstr "Mainiet pagrieziena virzienu katrai slejai" -#: ../src/ui/dialog/clonetiler.cpp:538 +#: ../src/ui/dialog/clonetiler.cpp:539 msgid "Cumulate the rotation for each row" msgstr "Uzkrāt katras rindas pagriezienu" -#: ../src/ui/dialog/clonetiler.cpp:543 +#: ../src/ui/dialog/clonetiler.cpp:544 msgid "Cumulate the rotation for each column" msgstr "Uzkrāt katras slejas pagriezienu" -#: ../src/ui/dialog/clonetiler.cpp:552 +#: ../src/ui/dialog/clonetiler.cpp:553 msgid "_Blur & opacity" msgstr "Izpludinājums un necaurspīdī_ba" -#: ../src/ui/dialog/clonetiler.cpp:561 +#: ../src/ui/dialog/clonetiler.cpp:562 msgid "<b>Blur:</b>" msgstr "<b>Izpludinājums:</b>" -#: ../src/ui/dialog/clonetiler.cpp:567 +#: ../src/ui/dialog/clonetiler.cpp:568 msgid "Blur tiles by this percentage for each row" msgstr "Izpludināt raksta elementus katrā rindā par norādītajiem procentiem" -#: ../src/ui/dialog/clonetiler.cpp:573 +#: ../src/ui/dialog/clonetiler.cpp:574 msgid "Blur tiles by this percentage for each column" msgstr "Izpludināt raksta elementus katrā slejā par norādītajiem procentiem" -#: ../src/ui/dialog/clonetiler.cpp:579 +#: ../src/ui/dialog/clonetiler.cpp:580 msgid "Randomize the tile blur by this percentage" msgstr "Dažādojiet raksta elementu izpludinājumu norādīto procentu robežās" -#: ../src/ui/dialog/clonetiler.cpp:593 +#: ../src/ui/dialog/clonetiler.cpp:594 msgid "Alternate the sign of blur change for each row" msgstr "Mainiet izpludinājuma izmaiņas zīmi katrai rindai" -#: ../src/ui/dialog/clonetiler.cpp:598 +#: ../src/ui/dialog/clonetiler.cpp:599 msgid "Alternate the sign of blur change for each column" msgstr "Mainiet izpludinājuma izmaiņas zīmi katrai slejai" -#: ../src/ui/dialog/clonetiler.cpp:607 +#: ../src/ui/dialog/clonetiler.cpp:608 msgid "<b>Opacity:</b>" msgstr "<b>Necaurspīdība:</b>" -#: ../src/ui/dialog/clonetiler.cpp:613 +#: ../src/ui/dialog/clonetiler.cpp:614 msgid "Decrease tile opacity by this percentage for each row" msgstr "Samaziniet raksta elementa necaurspīdību katrā rindā par norādītajiem procentiem" -#: ../src/ui/dialog/clonetiler.cpp:619 +#: ../src/ui/dialog/clonetiler.cpp:620 msgid "Decrease tile opacity by this percentage for each column" msgstr "Samaziniet raksta elementa necaurspīdību katrā slejā par norādītajiem procentiem" -#: ../src/ui/dialog/clonetiler.cpp:625 +#: ../src/ui/dialog/clonetiler.cpp:626 msgid "Randomize the tile opacity by this percentage" msgstr "Dažādojiet raksta elementu necaurspīdību norādīto procentu robežās" -#: ../src/ui/dialog/clonetiler.cpp:639 +#: ../src/ui/dialog/clonetiler.cpp:640 msgid "Alternate the sign of opacity change for each row" msgstr "Mainiet necaurspīdības izmaiņas zīmi katrai rindai" -#: ../src/ui/dialog/clonetiler.cpp:644 +#: ../src/ui/dialog/clonetiler.cpp:645 msgid "Alternate the sign of opacity change for each column" msgstr "Mainiet necaurspīdības izmaiņas zīmi katrai slejai" -#: ../src/ui/dialog/clonetiler.cpp:652 +#: ../src/ui/dialog/clonetiler.cpp:653 msgid "Co_lor" msgstr "Krā_sa" -#: ../src/ui/dialog/clonetiler.cpp:662 +#: ../src/ui/dialog/clonetiler.cpp:663 msgid "Initial color: " msgstr "Sākotnējā krāsa" -#: ../src/ui/dialog/clonetiler.cpp:666 +#: ../src/ui/dialog/clonetiler.cpp:667 msgid "Initial color of tiled clones" msgstr "Raksta elementa klonu sākotnējā krāsa" -#: ../src/ui/dialog/clonetiler.cpp:666 +#: ../src/ui/dialog/clonetiler.cpp:667 msgid "Initial color for clones (works only if the original has unset fill or stroke)" msgstr "Klonu sākotnējā krāsa (darbojas tikai tad, ja oriģinālam nav iestatīts aizpildījums vai apmale)" -#: ../src/ui/dialog/clonetiler.cpp:681 +#: ../src/ui/dialog/clonetiler.cpp:682 msgid "<b>H:</b>" msgstr "<b>H:</b>" -#: ../src/ui/dialog/clonetiler.cpp:687 +#: ../src/ui/dialog/clonetiler.cpp:688 msgid "Change the tile hue by this percentage for each row" msgstr "Mainiet raksta elementa nokrāsu katrā rindā par norādītajiem procentiem" -#: ../src/ui/dialog/clonetiler.cpp:693 +#: ../src/ui/dialog/clonetiler.cpp:694 msgid "Change the tile hue by this percentage for each column" msgstr "Mainiet raksta elementa nokrāsu katrā slejā par norādītajiem procentiem" -#: ../src/ui/dialog/clonetiler.cpp:699 +#: ../src/ui/dialog/clonetiler.cpp:700 msgid "Randomize the tile hue by this percentage" msgstr "Dažādojiet raksta elementu nokrāsu norādīto procentu robežās" -#: ../src/ui/dialog/clonetiler.cpp:708 +#: ../src/ui/dialog/clonetiler.cpp:709 msgid "<b>S:</b>" msgstr "<b>S:</b>" -#: ../src/ui/dialog/clonetiler.cpp:714 +#: ../src/ui/dialog/clonetiler.cpp:715 msgid "Change the color saturation by this percentage for each row" msgstr "Mainīt krāsu piesātinājumu katrai rindai par norādītajiem procentiem" -#: ../src/ui/dialog/clonetiler.cpp:720 +#: ../src/ui/dialog/clonetiler.cpp:721 msgid "Change the color saturation by this percentage for each column" msgstr "Mainīt krāsu piesātinājumu katrai slejai par norādītajiem procentiem" -#: ../src/ui/dialog/clonetiler.cpp:726 +#: ../src/ui/dialog/clonetiler.cpp:727 msgid "Randomize the color saturation by this percentage" msgstr "Dažādot krāsu piesātinājumu norādīto procentu robežās" -#: ../src/ui/dialog/clonetiler.cpp:734 +#: ../src/ui/dialog/clonetiler.cpp:735 msgid "<b>L:</b>" msgstr "<b>L:</b>" -#: ../src/ui/dialog/clonetiler.cpp:740 +#: ../src/ui/dialog/clonetiler.cpp:741 msgid "Change the color lightness by this percentage for each row" msgstr "Mainīt krāsu gaišumu katrai rindai par norādītajiem procentiem" -#: ../src/ui/dialog/clonetiler.cpp:746 +#: ../src/ui/dialog/clonetiler.cpp:747 msgid "Change the color lightness by this percentage for each column" msgstr "Mainīt krāsu gaišumu katrai slejai par norādītajiem procentiem" -#: ../src/ui/dialog/clonetiler.cpp:752 +#: ../src/ui/dialog/clonetiler.cpp:753 msgid "Randomize the color lightness by this percentage" msgstr "Dažādot krāsu gaišumu norādīto procentu robežās" -#: ../src/ui/dialog/clonetiler.cpp:766 +#: ../src/ui/dialog/clonetiler.cpp:767 msgid "Alternate the sign of color changes for each row" msgstr "Mainīt krāsu maiņas zīmi katrai rindai" -#: ../src/ui/dialog/clonetiler.cpp:771 +#: ../src/ui/dialog/clonetiler.cpp:772 msgid "Alternate the sign of color changes for each column" msgstr "Mainīt krāsu maiņas zīmi katrai slejai" -#: ../src/ui/dialog/clonetiler.cpp:779 +#: ../src/ui/dialog/clonetiler.cpp:780 msgid "_Trace" msgstr "Vek_torizācija" -#: ../src/ui/dialog/clonetiler.cpp:791 +#: ../src/ui/dialog/clonetiler.cpp:792 msgid "Trace the drawing under the tiles" msgstr "Vektorizēt zīmējumu zem raksta elementiem" -#: ../src/ui/dialog/clonetiler.cpp:795 +#: ../src/ui/dialog/clonetiler.cpp:796 msgid "For each clone, pick a value from the drawing in that clone's location and apply it to the clone" msgstr "Katram atsevišķam klona izvēlieties vērtību no zīmējuma klona tuvumā un piešķiriet to klonam" -#: ../src/ui/dialog/clonetiler.cpp:814 +#: ../src/ui/dialog/clonetiler.cpp:815 msgid "1. Pick from the drawing:" msgstr "1. Izvēlēties no zīmējuma:" -#: ../src/ui/dialog/clonetiler.cpp:832 +#: ../src/ui/dialog/clonetiler.cpp:833 msgid "Pick the visible color and opacity" msgstr "Izvēlēties redzamo krāsu un necaurspīdību" -#: ../src/ui/dialog/clonetiler.cpp:839 -#: ../src/ui/dialog/clonetiler.cpp:992 +#: ../src/ui/dialog/clonetiler.cpp:840 +#: ../src/ui/dialog/clonetiler.cpp:993 #: ../src/extension/internal/bitmap/opacity.cpp:38 #: ../src/extension/internal/filter/blurs.h:333 #: ../src/extension/internal/filter/transparency.h:279 -#: ../src/widgets/tweak-toolbar.cpp:352 +#: ../src/widgets/tweak-toolbar.cpp:348 #: ../share/extensions/interp_att_g.inx.h:16 msgid "Opacity" msgstr "Necaurspīdība" -#: ../src/ui/dialog/clonetiler.cpp:840 +#: ../src/ui/dialog/clonetiler.cpp:841 msgid "Pick the total accumulated opacity" msgstr "Izvēlieties kopējo uzkrāto necaurspīdību" -#: ../src/ui/dialog/clonetiler.cpp:847 +#: ../src/ui/dialog/clonetiler.cpp:848 msgid "R" msgstr "R" -#: ../src/ui/dialog/clonetiler.cpp:848 +#: ../src/ui/dialog/clonetiler.cpp:849 msgid "Pick the Red component of the color" msgstr "Izvēlieties krāsas sarkano komponenti" -#: ../src/ui/dialog/clonetiler.cpp:855 +#: ../src/ui/dialog/clonetiler.cpp:856 msgid "G" msgstr "G" -#: ../src/ui/dialog/clonetiler.cpp:856 +#: ../src/ui/dialog/clonetiler.cpp:857 msgid "Pick the Green component of the color" msgstr "Izvēlieties krāsas zaļo komponenti" -#: ../src/ui/dialog/clonetiler.cpp:863 +#: ../src/ui/dialog/clonetiler.cpp:864 msgid "B" msgstr "B" -#: ../src/ui/dialog/clonetiler.cpp:864 +#: ../src/ui/dialog/clonetiler.cpp:865 msgid "Pick the Blue component of the color" msgstr "Izvēlieties krāsas zilo komponenti" -#: ../src/ui/dialog/clonetiler.cpp:871 +#: ../src/ui/dialog/clonetiler.cpp:872 msgctxt "Clonetiler color hue" msgid "H" msgstr "H" -#: ../src/ui/dialog/clonetiler.cpp:872 +#: ../src/ui/dialog/clonetiler.cpp:873 msgid "Pick the hue of the color" msgstr "Izvēlieties nokrāsu" -#: ../src/ui/dialog/clonetiler.cpp:879 +#: ../src/ui/dialog/clonetiler.cpp:880 msgctxt "Clonetiler color saturation" msgid "S" msgstr "S" -#: ../src/ui/dialog/clonetiler.cpp:880 +#: ../src/ui/dialog/clonetiler.cpp:881 msgid "Pick the saturation of the color" msgstr "Izvēlieties krāsas piesātinājumu" -#: ../src/ui/dialog/clonetiler.cpp:887 +#: ../src/ui/dialog/clonetiler.cpp:888 msgctxt "Clonetiler color lightness" msgid "L" msgstr "L" -#: ../src/ui/dialog/clonetiler.cpp:888 +#: ../src/ui/dialog/clonetiler.cpp:889 msgid "Pick the lightness of the color" msgstr "Izvēlieties krāsas gaišumu" -#: ../src/ui/dialog/clonetiler.cpp:898 +#: ../src/ui/dialog/clonetiler.cpp:899 msgid "2. Tweak the picked value:" msgstr "2. Pieskaņojiet izvēlētās vērtības:" -#: ../src/ui/dialog/clonetiler.cpp:915 +#: ../src/ui/dialog/clonetiler.cpp:916 msgid "Gamma-correct:" msgstr "Gamma korekcija:" -#: ../src/ui/dialog/clonetiler.cpp:919 +#: ../src/ui/dialog/clonetiler.cpp:920 msgid "Shift the mid-range of the picked value upwards (>0) or downwards (<0)" msgstr "Pārbīdiet izvēlētā lieluma vidējo vērtību augšup (>0) vai lejup (<0)" -#: ../src/ui/dialog/clonetiler.cpp:926 +#: ../src/ui/dialog/clonetiler.cpp:927 msgid "Randomize:" msgstr "Dažādot" -#: ../src/ui/dialog/clonetiler.cpp:930 +#: ../src/ui/dialog/clonetiler.cpp:931 msgid "Randomize the picked value by this percentage" msgstr "Dažādot izvēlēto vērtību norādīto procentu robežās" -#: ../src/ui/dialog/clonetiler.cpp:937 +#: ../src/ui/dialog/clonetiler.cpp:938 msgid "Invert:" msgstr "Invertēt:" -#: ../src/ui/dialog/clonetiler.cpp:941 +#: ../src/ui/dialog/clonetiler.cpp:942 msgid "Invert the picked value" msgstr "Invertēt izvēlēto vērtību" -#: ../src/ui/dialog/clonetiler.cpp:947 +#: ../src/ui/dialog/clonetiler.cpp:948 msgid "3. Apply the value to the clones':" msgstr "3. Piešķiriet krāsu vērtību kloniem:" -#: ../src/ui/dialog/clonetiler.cpp:962 +#: ../src/ui/dialog/clonetiler.cpp:963 msgid "Presence" msgstr "Klātbūtne" -#: ../src/ui/dialog/clonetiler.cpp:965 +#: ../src/ui/dialog/clonetiler.cpp:966 msgid "Each clone is created with the probability determined by the picked value in that point" msgstr "Katrs klons ir izveidots atbilstoši varbūtībai, kas noteikta atbilstoši izvēlētajai vērtībai šajā punktā" -#: ../src/ui/dialog/clonetiler.cpp:972 +#: ../src/ui/dialog/clonetiler.cpp:973 msgid "Size" msgstr "Izmērs" -#: ../src/ui/dialog/clonetiler.cpp:975 +#: ../src/ui/dialog/clonetiler.cpp:976 msgid "Each clone's size is determined by the picked value in that point" msgstr "Katra klona izmērs ir noteikts atbilstoši izvēlētajai vērtībai šajā punktā" -#: ../src/ui/dialog/clonetiler.cpp:985 +#: ../src/ui/dialog/clonetiler.cpp:986 msgid "Each clone is painted by the picked color (the original must have unset fill or stroke)" msgstr "Katrs klons ir izkrāsots izvēlētajā krāsā (darbojas tikai tad, ja oriģinālam nav iestatīts aizpildījums vai apmale)" -#: ../src/ui/dialog/clonetiler.cpp:995 +#: ../src/ui/dialog/clonetiler.cpp:996 msgid "Each clone's opacity is determined by the picked value in that point" msgstr "Katra klona necaurspīdība ir noteikta atbilstoši izvēlētajai vērtībai šajā punktā" -#: ../src/ui/dialog/clonetiler.cpp:1043 +#: ../src/ui/dialog/clonetiler.cpp:1044 msgid "How many rows in the tiling" msgstr "Cik rindu rakstā" -#: ../src/ui/dialog/clonetiler.cpp:1073 +#: ../src/ui/dialog/clonetiler.cpp:1074 msgid "How many columns in the tiling" msgstr "Cik sleju ir rakstā" -#: ../src/ui/dialog/clonetiler.cpp:1117 +#: ../src/ui/dialog/clonetiler.cpp:1119 msgid "Width of the rectangle to be filled" msgstr "Aizpildāmā taisnstūra platums" -#: ../src/ui/dialog/clonetiler.cpp:1151 +#: ../src/ui/dialog/clonetiler.cpp:1152 msgid "Height of the rectangle to be filled" msgstr "Aizpildāmā taisnstūra augstums" -#: ../src/ui/dialog/clonetiler.cpp:1168 +#: ../src/ui/dialog/clonetiler.cpp:1169 msgid "Rows, columns: " msgstr "Rindas, slejas:" -#: ../src/ui/dialog/clonetiler.cpp:1169 +#: ../src/ui/dialog/clonetiler.cpp:1170 msgid "Create the specified number of rows and columns" msgstr "Izveidot norādīto rindu un sleju skaitu" -#: ../src/ui/dialog/clonetiler.cpp:1178 +#: ../src/ui/dialog/clonetiler.cpp:1179 msgid "Width, height: " msgstr "Platums, augstums:" -#: ../src/ui/dialog/clonetiler.cpp:1179 +#: ../src/ui/dialog/clonetiler.cpp:1180 msgid "Fill the specified width and height with the tiling" msgstr "Aizpildīt norādīto platumu un augstumu ar raksta elementiem" -#: ../src/ui/dialog/clonetiler.cpp:1200 +#: ../src/ui/dialog/clonetiler.cpp:1201 msgid "Use saved size and position of the tile" msgstr "Izmantot saglabāto raksta elementa izmēru un pozīciju" -#: ../src/ui/dialog/clonetiler.cpp:1203 +#: ../src/ui/dialog/clonetiler.cpp:1204 msgid "Pretend that the size and position of the tile are the same as the last time you tiled it (if any), instead of using the current size" msgstr "Izlikties, ka raksta elementa izmērs un pozīcija ir tādi paši, kā pēdējo reizi lietotie (ja lietoti), nevis izmantot pašreizējo izmēru" -#: ../src/ui/dialog/clonetiler.cpp:1237 +#: ../src/ui/dialog/clonetiler.cpp:1238 msgid " <b>_Create</b> " msgstr " <b>_Izveidot</b> " -#: ../src/ui/dialog/clonetiler.cpp:1239 +#: ../src/ui/dialog/clonetiler.cpp:1240 msgid "Create and tile the clones of the selection" msgstr "Izveidot klonu rakstu no atlasītā" @@ -4001,222 +4001,222 @@ msgstr "Izveidot klonu rakstu no atlasītā" #. diagrams on the left in the following screenshot: #. http://www.inkscape.org/screenshots/gallery/inkscape-0.42-CVS-tiles-unclump.png #. So unclumping is the process of spreading a number of objects out more evenly. -#: ../src/ui/dialog/clonetiler.cpp:1259 +#: ../src/ui/dialog/clonetiler.cpp:1260 msgid " _Unclump " msgstr "_Izretināt" -#: ../src/ui/dialog/clonetiler.cpp:1260 +#: ../src/ui/dialog/clonetiler.cpp:1261 msgid "Spread out clones to reduce clumping; can be applied repeatedly" msgstr "Izkliedēt klonus, lai mazinātu sablīvējumu; var pielietot vairākkārt" -#: ../src/ui/dialog/clonetiler.cpp:1266 +#: ../src/ui/dialog/clonetiler.cpp:1267 msgid " Re_move " msgstr "Aiz_vākt" -#: ../src/ui/dialog/clonetiler.cpp:1267 +#: ../src/ui/dialog/clonetiler.cpp:1268 msgid "Remove existing tiled clones of the selected object (siblings only)" msgstr "Aizvākt no atlasītā objekta izveidoto klonu rakstu (tikai tā paša līmeņa)" -#: ../src/ui/dialog/clonetiler.cpp:1283 +#: ../src/ui/dialog/clonetiler.cpp:1284 msgid " R_eset " msgstr "At_statīt" #. TRANSLATORS: "change" is a noun here -#: ../src/ui/dialog/clonetiler.cpp:1285 +#: ../src/ui/dialog/clonetiler.cpp:1286 msgid "Reset all shifts, scales, rotates, opacity and color changes in the dialog to zero" msgstr "Visas dialoglodziņā ievadītās pārbīdes, mērogus, pagriezienus, necaurpīdīgumu un krāsu maiņas atiestatīt par 0" -#: ../src/ui/dialog/clonetiler.cpp:1358 +#: ../src/ui/dialog/clonetiler.cpp:1359 msgid "<small>Nothing selected.</small>" msgstr "<small>Nekas nav izvēlēts.</small>" -#: ../src/ui/dialog/clonetiler.cpp:1364 +#: ../src/ui/dialog/clonetiler.cpp:1365 msgid "<small>More than one object selected.</small>" msgstr "<small>Atlasīts vairāk kā viens objekts.</small>" -#: ../src/ui/dialog/clonetiler.cpp:1371 +#: ../src/ui/dialog/clonetiler.cpp:1372 #, c-format msgid "<small>Object has <b>%d</b> tiled clones.</small>" msgstr "<small>Objekts satur <b>%d</b> klonētus raksta elementus.</small>" -#: ../src/ui/dialog/clonetiler.cpp:1376 +#: ../src/ui/dialog/clonetiler.cpp:1377 msgid "<small>Object has no tiled clones.</small>" msgstr "<small>Objekts nesatur klonētus raksta elementus.</small>" -#: ../src/ui/dialog/clonetiler.cpp:2096 +#: ../src/ui/dialog/clonetiler.cpp:2097 msgid "Select <b>one object</b> whose tiled clones to unclump." msgstr "Izvēlieties <b>vienu objektu</b>, kura klonu raksta elementus izretināt." -#: ../src/ui/dialog/clonetiler.cpp:2118 +#: ../src/ui/dialog/clonetiler.cpp:2119 msgid "Unclump tiled clones" msgstr "Izretināt klonētos raksta elementus" -#: ../src/ui/dialog/clonetiler.cpp:2147 +#: ../src/ui/dialog/clonetiler.cpp:2148 msgid "Select <b>one object</b> whose tiled clones to remove." msgstr "Izvēlieties <b>vienu objektu</b>, kura klonētos raksta elementus vēlaties aizvākt." -#: ../src/ui/dialog/clonetiler.cpp:2170 +#: ../src/ui/dialog/clonetiler.cpp:2171 msgid "Delete tiled clones" msgstr "Dzēst klonētos raksta elementus" -#: ../src/ui/dialog/clonetiler.cpp:2217 -#: ../src/selection-chemistry.cpp:2501 +#: ../src/ui/dialog/clonetiler.cpp:2218 +#: ../src/selection-chemistry.cpp:2487 msgid "Select an <b>object</b> to clone." msgstr "Izvēlieties klonējamo <b>objektu</b>." -#: ../src/ui/dialog/clonetiler.cpp:2223 +#: ../src/ui/dialog/clonetiler.cpp:2224 msgid "If you want to clone several objects, <b>group</b> them and <b>clone the group</b>." msgstr "Ja vēlaties klonēt vairākus objektus, <b>sagrupējiet</b> tos un <b>klonējiet grupu</b>." -#: ../src/ui/dialog/clonetiler.cpp:2232 +#: ../src/ui/dialog/clonetiler.cpp:2233 msgid "<small>Creating tiled clones...</small>" msgstr "<small>Veido klonētus raksta elementus...</small>" -#: ../src/ui/dialog/clonetiler.cpp:2637 +#: ../src/ui/dialog/clonetiler.cpp:2638 msgid "Create tiled clones" msgstr "Izveidot klonētos raksta elementus" -#: ../src/ui/dialog/clonetiler.cpp:2870 +#: ../src/ui/dialog/clonetiler.cpp:2871 msgid "<small>Per row:</small>" msgstr "<small>Vienā rindā:</small>" -#: ../src/ui/dialog/clonetiler.cpp:2888 +#: ../src/ui/dialog/clonetiler.cpp:2889 msgid "<small>Per column:</small>" msgstr "<small>Vienā slejā:</small>" -#: ../src/ui/dialog/clonetiler.cpp:2896 +#: ../src/ui/dialog/clonetiler.cpp:2897 msgid "<small>Randomize:</small>" msgstr "<small>Dažādot:</small>" -#: ../src/ui/dialog/export.cpp:150 -#: ../src/verbs.cpp:2736 +#: ../src/ui/dialog/export.cpp:151 +#: ../src/verbs.cpp:2791 msgid "_Page" msgstr "La_pa" -#: ../src/ui/dialog/export.cpp:150 -#: ../src/verbs.cpp:2740 +#: ../src/ui/dialog/export.cpp:151 +#: ../src/verbs.cpp:2795 msgid "_Drawing" msgstr "_Zīmējums" -#: ../src/ui/dialog/export.cpp:150 -#: ../src/verbs.cpp:2742 +#: ../src/ui/dialog/export.cpp:151 +#: ../src/verbs.cpp:2797 msgid "_Selection" msgstr "Atla_sītais" -#: ../src/ui/dialog/export.cpp:150 +#: ../src/ui/dialog/export.cpp:151 msgid "_Custom" msgstr "Izvēles" -#: ../src/ui/dialog/export.cpp:166 -#: ../src/widgets/measure-toolbar.cpp:115 -#: ../src/widgets/measure-toolbar.cpp:123 -#: ../share/extensions/gears.inx.h:6 +#: ../src/ui/dialog/export.cpp:167 +#: ../src/widgets/measure-toolbar.cpp:116 +#: ../src/widgets/measure-toolbar.cpp:124 +#: ../share/extensions/render_gears.inx.h:6 msgid "Units:" msgstr "Vienības:" -#: ../src/ui/dialog/export.cpp:168 +#: ../src/ui/dialog/export.cpp:169 msgid "_Export As..." msgstr "_Eksportēt kā..." -#: ../src/ui/dialog/export.cpp:171 +#: ../src/ui/dialog/export.cpp:172 msgid "B_atch export all selected objects" msgstr "Visu _atlasīto objektu secīgs eksports" -#: ../src/ui/dialog/export.cpp:171 +#: ../src/ui/dialog/export.cpp:172 msgid "Export each selected object into its own PNG file, using export hints if any (caution, overwrites without asking!)" msgstr "Eksportēt katru atlasīto objektu atsevišķā PNG failā, izmantojot eksport padomus, ja tādi ir (Uzmanību: faili tiek pārrakstīti bez jautāšanas!)" -#: ../src/ui/dialog/export.cpp:173 +#: ../src/ui/dialog/export.cpp:174 msgid "Hide a_ll except selected" msgstr "Slēpt _visus, izņemot atlasītos" -#: ../src/ui/dialog/export.cpp:173 +#: ../src/ui/dialog/export.cpp:174 msgid "In the exported image, hide all objects except those that are selected" msgstr "Eksportētajā attēla slēpt visus neatlasītos objektus" -#: ../src/ui/dialog/export.cpp:174 +#: ../src/ui/dialog/export.cpp:175 msgid "Close when complete" msgstr "Aizvērt pēc pabeigšanas" -#: ../src/ui/dialog/export.cpp:174 +#: ../src/ui/dialog/export.cpp:175 msgid "Once the export completes, close this dialog" msgstr "Pēc eksportēšanas pabeigšanas aizvērt šo dialoglodziņu." -#: ../src/ui/dialog/export.cpp:176 +#: ../src/ui/dialog/export.cpp:177 msgid "_Export" msgstr "_Eksportēt" -#: ../src/ui/dialog/export.cpp:194 +#: ../src/ui/dialog/export.cpp:195 msgid "<b>Export area</b>" msgstr "<b>Eksportējamais apgabals</b>" -#: ../src/ui/dialog/export.cpp:230 +#: ../src/ui/dialog/export.cpp:234 msgid "_x0:" msgstr "_x0:" -#: ../src/ui/dialog/export.cpp:234 +#: ../src/ui/dialog/export.cpp:238 msgid "x_1:" msgstr "x_1:" -#: ../src/ui/dialog/export.cpp:238 +#: ../src/ui/dialog/export.cpp:242 msgid "Wid_th:" msgstr "Pla_tums:" -#: ../src/ui/dialog/export.cpp:242 +#: ../src/ui/dialog/export.cpp:246 msgid "_y0:" msgstr "_y0:" -#: ../src/ui/dialog/export.cpp:246 +#: ../src/ui/dialog/export.cpp:250 msgid "y_1:" msgstr "y_1:" -#: ../src/ui/dialog/export.cpp:250 +#: ../src/ui/dialog/export.cpp:254 msgid "Hei_ght:" msgstr "Au_gstums:" -#: ../src/ui/dialog/export.cpp:265 +#: ../src/ui/dialog/export.cpp:269 msgid "<b>Image size</b>" msgstr "<b>Attēla izmērs</b>" -#: ../src/ui/dialog/export.cpp:283 +#: ../src/ui/dialog/export.cpp:287 #: ../src/live_effects/lpe-bendpath.cpp:54 #: ../src/live_effects/lpe-patternalongpath.cpp:62 -#: ../src/ui/dialog/transformation.cpp:79 -#: ../src/ui/widget/page-sizer.cpp:238 +#: ../src/ui/dialog/transformation.cpp:80 +#: ../src/ui/widget/page-sizer.cpp:236 msgid "_Width:" msgstr "_Platums:" -#: ../src/ui/dialog/export.cpp:283 -#: ../src/ui/dialog/export.cpp:294 +#: ../src/ui/dialog/export.cpp:287 +#: ../src/ui/dialog/export.cpp:298 msgid "pixels at" msgstr "pikseļi ar" -#: ../src/ui/dialog/export.cpp:289 +#: ../src/ui/dialog/export.cpp:293 msgid "dp_i" msgstr "dp_i" -#: ../src/ui/dialog/export.cpp:294 -#: ../src/ui/dialog/transformation.cpp:81 -#: ../src/ui/widget/page-sizer.cpp:239 +#: ../src/ui/dialog/export.cpp:298 +#: ../src/ui/dialog/transformation.cpp:82 +#: ../src/ui/widget/page-sizer.cpp:237 msgid "_Height:" msgstr "_Augstums:" -#: ../src/ui/dialog/export.cpp:302 -#: ../src/ui/dialog/inkscape-preferences.cpp:1432 -#: ../src/ui/dialog/inkscape-preferences.cpp:1435 -#: ../src/ui/dialog/inkscape-preferences.cpp:1447 +#: ../src/ui/dialog/export.cpp:306 +#: ../src/ui/dialog/inkscape-preferences.cpp:1436 +#: ../src/ui/dialog/inkscape-preferences.cpp:1439 +#: ../src/ui/dialog/inkscape-preferences.cpp:1451 msgid "dpi" msgstr "dpi" -#: ../src/ui/dialog/export.cpp:310 +#: ../src/ui/dialog/export.cpp:314 msgid "<b>_Filename</b>" msgstr "<b>_Faila nosaukums</b>" -#: ../src/ui/dialog/export.cpp:352 +#: ../src/ui/dialog/export.cpp:356 msgid "Export the bitmap file with these settings" msgstr "Eksportēt bitkartes attēlu ar šiem iestatījumiem" -#: ../src/ui/dialog/export.cpp:606 +#: ../src/ui/dialog/export.cpp:607 #, c-format msgid "B_atch export %d selected object" msgid_plural "B_atch export %d selected objects" @@ -4224,80 +4224,80 @@ msgstr[0] "Secīgs %d atlasītā objekta eksports" msgstr[1] "Secīgs %d atlasīto objektu eksports" msgstr[2] "Secīgs %d atlasīto objektu eksports" -#: ../src/ui/dialog/export.cpp:922 +#: ../src/ui/dialog/export.cpp:923 msgid "Export in progress" msgstr "Notiek eksports" -#: ../src/ui/dialog/export.cpp:1006 +#: ../src/ui/dialog/export.cpp:1013 msgid "No items selected." msgstr "Nav atlasītu objektu." -#: ../src/ui/dialog/export.cpp:1010 -#: ../src/ui/dialog/export.cpp:1012 +#: ../src/ui/dialog/export.cpp:1017 +#: ../src/ui/dialog/export.cpp:1019 msgid "Exporting %1 files" msgstr "Eksportē %1 failus" -#: ../src/ui/dialog/export.cpp:1052 -#: ../src/ui/dialog/export.cpp:1054 +#: ../src/ui/dialog/export.cpp:1059 +#: ../src/ui/dialog/export.cpp:1061 #, c-format msgid "Exporting file <b>%s</b>..." msgstr "Eksportē failu <b>%s</b>..." -#: ../src/ui/dialog/export.cpp:1063 -#: ../src/ui/dialog/export.cpp:1154 +#: ../src/ui/dialog/export.cpp:1070 +#: ../src/ui/dialog/export.cpp:1161 #, c-format msgid "Could not export to filename %s.\n" msgstr "Nav iespējams eksportēt uz failu ar nosaukumu %s.\n" -#: ../src/ui/dialog/export.cpp:1066 +#: ../src/ui/dialog/export.cpp:1073 #, c-format msgid "Could not export to filename <b>%s</b>." msgstr "Nav iespējams eksportēt uz failu ar nosaukumu <b>%s</b>." -#: ../src/ui/dialog/export.cpp:1081 +#: ../src/ui/dialog/export.cpp:1088 #, c-format msgid "Successfully exported <b>%d</b> files from <b>%d</b> selected items." msgstr "Veiksmīgi eksportēti <b>%d</b> faili no <b>%d</b> atlasītajiem objektiem." -#: ../src/ui/dialog/export.cpp:1092 +#: ../src/ui/dialog/export.cpp:1099 msgid "You have to enter a filename." msgstr "Jums jāievada faila nosaukums." -#: ../src/ui/dialog/export.cpp:1093 +#: ../src/ui/dialog/export.cpp:1100 msgid "You have to enter a filename" msgstr "Jums jāievada faila nosaukums" -#: ../src/ui/dialog/export.cpp:1107 +#: ../src/ui/dialog/export.cpp:1114 msgid "The chosen area to be exported is invalid." msgstr "Eksportēšanai izvēlētais apgabals nav derīgs." -#: ../src/ui/dialog/export.cpp:1108 +#: ../src/ui/dialog/export.cpp:1115 msgid "The chosen area to be exported is invalid" msgstr "Eksportēšanai izvēlētais apgabals nav derīgs" -#: ../src/ui/dialog/export.cpp:1123 +#: ../src/ui/dialog/export.cpp:1130 #, c-format msgid "Directory %s does not exist or is not a directory.\n" msgstr "Mape%s nepastāv vai arī nemaz nav mape.\n" #. TRANSLATORS: %1 will be the filename, %2 the width, and %3 the height of the image -#: ../src/ui/dialog/export.cpp:1137 -#: ../src/ui/dialog/export.cpp:1139 +#: ../src/ui/dialog/export.cpp:1144 +#: ../src/ui/dialog/export.cpp:1146 msgid "Exporting %1 (%2 x %3)" msgstr "Eksportē %1 (%2 x %3)" -#: ../src/ui/dialog/export.cpp:1165 +#: ../src/ui/dialog/export.cpp:1172 #, c-format msgid "Drawing exported to <b>%s</b>." msgstr "Attēls eksportēts uz <b>%s</b>." -#: ../src/ui/dialog/export.cpp:1169 +#: ../src/ui/dialog/export.cpp:1176 msgid "Export aborted." msgstr "Eksportēšana pārtraukta." -#: ../src/ui/dialog/export.cpp:1287 -#: ../src/ui/dialog/export.cpp:1321 -#: ../src/shortcuts.cpp:336 +#: ../src/ui/dialog/export.cpp:1294 +#: ../src/ui/dialog/export.cpp:1328 +#: ../src/shortcuts.cpp:337 msgid "Select a filename for exporting" msgstr "Izvēlieties jeksportējamā faila nosaukumu" @@ -4382,7 +4382,7 @@ msgid "_Font" msgstr "_Fonts" #: ../src/ui/dialog/text-edit.cpp:72 -#: ../src/menus-skeleton.h:249 +#: ../src/menus-skeleton.h:248 #: ../src/ui/dialog/find.cpp:77 msgid "_Text" msgstr "_Teksts" @@ -4397,36 +4397,36 @@ msgstr "AaBbCcIiPpQq12369$€¢?.;/()" #. Align buttons #: ../src/ui/dialog/text-edit.cpp:97 -#: ../src/widgets/text-toolbar.cpp:1358 -#: ../src/widgets/text-toolbar.cpp:1359 +#: ../src/widgets/text-toolbar.cpp:1349 +#: ../src/widgets/text-toolbar.cpp:1350 msgid "Align left" msgstr "Izlīdzināt pa kreisi" #: ../src/ui/dialog/text-edit.cpp:98 -#: ../src/widgets/text-toolbar.cpp:1366 -#: ../src/widgets/text-toolbar.cpp:1367 +#: ../src/widgets/text-toolbar.cpp:1357 +#: ../src/widgets/text-toolbar.cpp:1358 msgid "Align center" msgstr "Izlīdzināt pret centru" #: ../src/ui/dialog/text-edit.cpp:99 -#: ../src/widgets/text-toolbar.cpp:1374 -#: ../src/widgets/text-toolbar.cpp:1375 +#: ../src/widgets/text-toolbar.cpp:1365 +#: ../src/widgets/text-toolbar.cpp:1366 msgid "Align right" msgstr "Izlīdzināt pa labi" #: ../src/ui/dialog/text-edit.cpp:100 -#: ../src/widgets/text-toolbar.cpp:1383 +#: ../src/widgets/text-toolbar.cpp:1374 msgid "Justify (only flowed text)" msgstr "Izlīdzināt (tikai teksta aizpildījumam)" #. Direction buttons #: ../src/ui/dialog/text-edit.cpp:109 -#: ../src/widgets/text-toolbar.cpp:1418 +#: ../src/widgets/text-toolbar.cpp:1409 msgid "Horizontal text" msgstr "Horizontāls teksts" #: ../src/ui/dialog/text-edit.cpp:110 -#: ../src/widgets/text-toolbar.cpp:1425 +#: ../src/widgets/text-toolbar.cpp:1416 msgid "Vertical text" msgstr "Vertikāls teksts" @@ -4441,7 +4441,7 @@ msgstr "Teksta ceļa nobīde" #: ../src/ui/dialog/text-edit.cpp:588 #: ../src/ui/dialog/text-edit.cpp:662 -#: ../src/text-context.cpp:1518 +#: ../src/text-context.cpp:1519 msgid "Set text style" msgstr "Iestatīt teksta stilu" @@ -4557,164 +4557,164 @@ msgstr "nodeAsInXMLinHistoryDialog|Dzēst mezglu" msgid "Change attribute" msgstr "Mainīt atribūtu" -#: ../src/display/canvas-axonomgrid.cpp:369 -#: ../src/display/canvas-grid.cpp:746 +#: ../src/display/canvas-axonomgrid.cpp:316 +#: ../src/display/canvas-grid.cpp:693 msgid "Grid _units:" msgstr "Tīkla _vienības" -#: ../src/display/canvas-axonomgrid.cpp:371 -#: ../src/display/canvas-grid.cpp:748 +#: ../src/display/canvas-axonomgrid.cpp:318 +#: ../src/display/canvas-grid.cpp:695 msgid "_Origin X:" msgstr "Sā_kums X:" -#: ../src/display/canvas-axonomgrid.cpp:371 -#: ../src/display/canvas-grid.cpp:748 +#: ../src/display/canvas-axonomgrid.cpp:318 +#: ../src/display/canvas-grid.cpp:695 #: ../src/ui/dialog/inkscape-preferences.cpp:735 #: ../src/ui/dialog/inkscape-preferences.cpp:760 msgid "X coordinate of grid origin" msgstr "Tīkla sākuma X koordināte" -#: ../src/display/canvas-axonomgrid.cpp:373 -#: ../src/display/canvas-grid.cpp:750 +#: ../src/display/canvas-axonomgrid.cpp:320 +#: ../src/display/canvas-grid.cpp:697 msgid "O_rigin Y:" msgstr "Sāku_ms Y:" -#: ../src/display/canvas-axonomgrid.cpp:373 -#: ../src/display/canvas-grid.cpp:750 +#: ../src/display/canvas-axonomgrid.cpp:320 +#: ../src/display/canvas-grid.cpp:697 #: ../src/ui/dialog/inkscape-preferences.cpp:736 #: ../src/ui/dialog/inkscape-preferences.cpp:761 msgid "Y coordinate of grid origin" msgstr "Tīkla sākuma Y koordināte" -#: ../src/display/canvas-axonomgrid.cpp:375 -#: ../src/display/canvas-grid.cpp:754 +#: ../src/display/canvas-axonomgrid.cpp:322 +#: ../src/display/canvas-grid.cpp:701 msgid "Spacing _Y:" msgstr "Atstarpe _Y:" -#: ../src/display/canvas-axonomgrid.cpp:375 +#: ../src/display/canvas-axonomgrid.cpp:322 #: ../src/ui/dialog/inkscape-preferences.cpp:764 msgid "Base length of z-axis" msgstr "Z ass bāzes garums" -#: ../src/display/canvas-axonomgrid.cpp:377 +#: ../src/display/canvas-axonomgrid.cpp:324 #: ../src/ui/dialog/inkscape-preferences.cpp:767 -#: ../src/widgets/box3d-toolbar.cpp:320 +#: ../src/widgets/box3d-toolbar.cpp:315 msgid "Angle X:" msgstr "Leņķis X:" -#: ../src/display/canvas-axonomgrid.cpp:377 +#: ../src/display/canvas-axonomgrid.cpp:324 #: ../src/ui/dialog/inkscape-preferences.cpp:767 msgid "Angle of x-axis" msgstr "X ass leņķis" -#: ../src/display/canvas-axonomgrid.cpp:379 +#: ../src/display/canvas-axonomgrid.cpp:326 #: ../src/ui/dialog/inkscape-preferences.cpp:768 -#: ../src/widgets/box3d-toolbar.cpp:399 +#: ../src/widgets/box3d-toolbar.cpp:394 msgid "Angle Z:" msgstr "Leņķis Z:" -#: ../src/display/canvas-axonomgrid.cpp:379 +#: ../src/display/canvas-axonomgrid.cpp:326 #: ../src/ui/dialog/inkscape-preferences.cpp:768 msgid "Angle of z-axis" msgstr "Z ass leņķis" -#: ../src/display/canvas-axonomgrid.cpp:383 -#: ../src/display/canvas-grid.cpp:758 +#: ../src/display/canvas-axonomgrid.cpp:330 +#: ../src/display/canvas-grid.cpp:705 msgid "Minor grid line _color:" msgstr "Režģa palīglīniju _krāsa:" -#: ../src/display/canvas-axonomgrid.cpp:383 -#: ../src/display/canvas-grid.cpp:758 +#: ../src/display/canvas-axonomgrid.cpp:330 +#: ../src/display/canvas-grid.cpp:705 #: ../src/ui/dialog/inkscape-preferences.cpp:719 msgid "Minor grid line color" msgstr "Režģa palīglīniju krāsa" -#: ../src/display/canvas-axonomgrid.cpp:383 -#: ../src/display/canvas-grid.cpp:758 +#: ../src/display/canvas-axonomgrid.cpp:330 +#: ../src/display/canvas-grid.cpp:705 msgid "Color of the minor grid lines" msgstr "Režģa palīglīniju krāsa" -#: ../src/display/canvas-axonomgrid.cpp:388 -#: ../src/display/canvas-grid.cpp:763 +#: ../src/display/canvas-axonomgrid.cpp:335 +#: ../src/display/canvas-grid.cpp:710 msgid "Ma_jor grid line color:" msgstr "_Galveno režģa līniju krāsa:" -#: ../src/display/canvas-axonomgrid.cpp:388 -#: ../src/display/canvas-grid.cpp:763 +#: ../src/display/canvas-axonomgrid.cpp:335 +#: ../src/display/canvas-grid.cpp:710 #: ../src/ui/dialog/inkscape-preferences.cpp:721 msgid "Major grid line color" msgstr "Režģa pamatlīniju krāsa" -#: ../src/display/canvas-axonomgrid.cpp:389 -#: ../src/display/canvas-grid.cpp:764 +#: ../src/display/canvas-axonomgrid.cpp:336 +#: ../src/display/canvas-grid.cpp:711 msgid "Color of the major (highlighted) grid lines" msgstr "Režģa pamatlīniju (izcelto) krāsa" -#: ../src/display/canvas-axonomgrid.cpp:393 -#: ../src/display/canvas-grid.cpp:768 +#: ../src/display/canvas-axonomgrid.cpp:340 +#: ../src/display/canvas-grid.cpp:715 msgid "_Major grid line every:" msgstr "Tīkla pa_matlīnija ik pēc:" -#: ../src/display/canvas-axonomgrid.cpp:393 -#: ../src/display/canvas-grid.cpp:768 +#: ../src/display/canvas-axonomgrid.cpp:340 +#: ../src/display/canvas-grid.cpp:715 msgid "lines" msgstr "rindas" -#: ../src/display/canvas-grid.cpp:62 +#: ../src/display/canvas-grid.cpp:63 msgid "Rectangular grid" msgstr "Taisnstūrveida tīkls" -#: ../src/display/canvas-grid.cpp:63 +#: ../src/display/canvas-grid.cpp:64 msgid "Axonometric grid" msgstr "Aksonometriskais tīkls" -#: ../src/display/canvas-grid.cpp:274 +#: ../src/display/canvas-grid.cpp:275 msgid "Create new grid" msgstr "Izveidot Jaunu tīklu" -#: ../src/display/canvas-grid.cpp:340 +#: ../src/display/canvas-grid.cpp:341 msgid "_Enabled" msgstr "_Aktivēts" -#: ../src/display/canvas-grid.cpp:341 +#: ../src/display/canvas-grid.cpp:342 msgid "Determines whether to snap to this grid or not. Can be 'on' for invisible grids." msgstr "Nosaka, vai piesaistīt šim režģim vai nē. Var būt ieslēgts arī neredzamiem režģiem." -#: ../src/display/canvas-grid.cpp:345 +#: ../src/display/canvas-grid.cpp:346 msgid "Snap to visible _grid lines only" msgstr "Piesaistīt tikai red_zamām režģa līnijām" -#: ../src/display/canvas-grid.cpp:346 +#: ../src/display/canvas-grid.cpp:347 msgid "When zoomed out, not all grid lines will be displayed. Only the visible ones will be snapped to" msgstr "Tālinātā skatā visas režģa līnijas nebūs redzamas. Piesaiste tiks veikta tikai redzamām līnijām" -#: ../src/display/canvas-grid.cpp:350 +#: ../src/display/canvas-grid.cpp:351 msgid "_Visible" msgstr "_Redzams" -#: ../src/display/canvas-grid.cpp:351 +#: ../src/display/canvas-grid.cpp:352 msgid "Determines whether the grid is displayed or not. Objects are still snapped to invisible grids." msgstr "Nosaka, vai režģis tiek rādīts vai nē. Objekti joprojām tiks piesaistīti neredzamajam režģim." -#: ../src/display/canvas-grid.cpp:752 +#: ../src/display/canvas-grid.cpp:699 msgid "Spacing _X:" msgstr "Atstarpe _X:" -#: ../src/display/canvas-grid.cpp:752 +#: ../src/display/canvas-grid.cpp:699 #: ../src/ui/dialog/inkscape-preferences.cpp:741 msgid "Distance between vertical grid lines" msgstr "Attālums starp vertikālām režģa līnijām." -#: ../src/display/canvas-grid.cpp:754 +#: ../src/display/canvas-grid.cpp:701 #: ../src/ui/dialog/inkscape-preferences.cpp:742 msgid "Distance between horizontal grid lines" msgstr "Attālums starp horizontālām režģa līnijām." -#: ../src/display/canvas-grid.cpp:785 +#: ../src/display/canvas-grid.cpp:732 msgid "_Show dots instead of lines" msgstr "_Līniju vietā rādīt punktus " -#: ../src/display/canvas-grid.cpp:786 +#: ../src/display/canvas-grid.cpp:733 msgid "If set, displays dots at gridpoints instead of gridlines" msgstr "Ja iestatīts, režģa krustpunktos līniju vietā tiks rādīti punkti" @@ -4867,12 +4867,12 @@ msgid "Bounding box side midpoint" msgstr "Robežrāmja malas viduspunkts" #: ../src/display/snap-indicator.cpp:194 -#: ../src/ui/tool/node.cpp:1310 +#: ../src/ui/tool/node.cpp:1316 msgid "Smooth node" msgstr "Gludais mezgls" #: ../src/display/snap-indicator.cpp:197 -#: ../src/ui/tool/node.cpp:1309 +#: ../src/ui/tool/node.cpp:1315 msgid "Cusp node" msgstr "Asais mezgls" @@ -4937,7 +4937,7 @@ msgstr "Jauns dokuments %d" msgid "Memory document %1" msgstr "Atmiņas dokuments %1" -#: ../src/document.cpp:707 +#: ../src/document.cpp:713 #, c-format msgid "Unnamed document %d" msgstr "Nenosaukts dokuments %d" @@ -5028,7 +5028,7 @@ msgstr "<b>Zīmē</b> dzēšgumijas līniju" msgid "Draw eraser stroke" msgstr "Zīmēt dzēšgumijas līniju" -#: ../src/event-context.cpp:675 +#: ../src/event-context.cpp:668 msgid "<b>Space+mouse move</b> to pan canvas" msgstr "<b>Atstarpēšanas taustiņš+peles kustība</b>, lai pārvietotos pa audeklu" @@ -5039,13 +5039,13 @@ msgstr "[Nemainīts]" #. Edit #: ../src/event-log.cpp:275 #: ../src/event-log.cpp:278 -#: ../src/verbs.cpp:2328 +#: ../src/verbs.cpp:2383 msgid "_Undo" msgstr "_Atcelt" #: ../src/event-log.cpp:285 #: ../src/event-log.cpp:289 -#: ../src/verbs.cpp:2330 +#: ../src/verbs.cpp:2385 msgid "_Redo" msgstr "At_kārtot" @@ -5074,7 +5074,7 @@ msgid " (No preferences)" msgstr " (Nav iestatījumu)" #: ../src/extension/effect.h:70 -#: ../src/verbs.cpp:2101 +#: ../src/verbs.cpp:2156 msgid "Extensions" msgstr "Paplašinājumi" @@ -5188,13 +5188,13 @@ msgstr "Pielāgojamais slieksnis" #: ../src/extension/internal/bitmap/adaptiveThreshold.cpp:41 #: ../src/extension/internal/bitmap/raise.cpp:42 #: ../src/extension/internal/bitmap/sample.cpp:41 -#: ../src/extension/internal/bluredge.cpp:137 +#: ../src/extension/internal/bluredge.cpp:138 #: ../src/ui/dialog/object-attributes.cpp:68 #: ../src/ui/dialog/object-attributes.cpp:76 -#: ../src/widgets/calligraphy-toolbar.cpp:451 -#: ../src/widgets/erasor-toolbar.cpp:149 -#: ../src/widgets/spray-toolbar.cpp:132 -#: ../src/widgets/tweak-toolbar.cpp:146 +#: ../src/widgets/calligraphy-toolbar.cpp:447 +#: ../src/widgets/eraser-toolbar.cpp:145 +#: ../src/widgets/spray-toolbar.cpp:128 +#: ../src/widgets/tweak-toolbar.cpp:142 #: ../share/extensions/foldablebox.inx.h:2 msgid "Width:" msgstr "Platums:" @@ -5269,9 +5269,9 @@ msgstr "Pievienot troksni" #: ../src/extension/internal/filter/color.h:1585 #: ../src/extension/internal/filter/distort.h:69 #: ../src/extension/internal/filter/morphology.h:60 -#: ../src/rdf.cpp:241 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2613 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2692 +#: ../src/rdf.cpp:244 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2626 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2705 #: ../src/ui/dialog/object-attributes.cpp:49 #: ../share/extensions/jessyInk_effects.inx.h:5 #: ../share/extensions/jessyInk_export.inx.h:3 @@ -5323,7 +5323,7 @@ msgstr "Izpludināšana" #: ../src/extension/internal/bitmap/oilPaint.cpp:39 #: ../src/extension/internal/bitmap/sharpen.cpp:40 #: ../src/extension/internal/bitmap/unsharpmask.cpp:43 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2670 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2683 msgid "Radius:" msgstr "Rādiuss:" @@ -5460,7 +5460,7 @@ msgstr "Cikliski mainīt krāsu karti" #: ../src/extension/internal/bitmap/cycleColormap.cpp:39 #: ../src/extension/internal/bitmap/spread.cpp:39 #: ../src/extension/internal/bitmap/unsharpmask.cpp:45 -#: ../src/widgets/spray-toolbar.cpp:224 +#: ../src/widgets/spray-toolbar.cpp:220 msgid "Amount:" msgstr "Apjoms:" @@ -5624,8 +5624,8 @@ msgid "Stylize selected bitmap(s) so that they appear to be painted with oils" msgstr "Stilizēt atlasīto(-ās) bitkarti(-es), lai tās izskatītos kā gleznotas ar eļļas krāsām" #: ../src/extension/internal/bitmap/opacity.cpp:40 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2660 -#: ../src/widgets/dropper-toolbar.cpp:111 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2673 +#: ../src/widgets/dropper-toolbar.cpp:107 msgid "Opacity:" msgstr "Necaurspīdība:" @@ -5757,23 +5757,23 @@ msgstr "Viļņa garums:" msgid "Alter selected bitmap(s) along sine wave" msgstr "Sinusoidāli mainīt atlasīto(-ās) bitkarti(-es) " -#: ../src/extension/internal/bluredge.cpp:135 +#: ../src/extension/internal/bluredge.cpp:136 msgid "Inset/Outset Halo" msgstr "Palielināt/samazināt oreolu" -#: ../src/extension/internal/bluredge.cpp:137 +#: ../src/extension/internal/bluredge.cpp:138 msgid "Width in px of the halo" msgstr "Oreola platums pikseļos" -#: ../src/extension/internal/bluredge.cpp:138 +#: ../src/extension/internal/bluredge.cpp:139 msgid "Number of steps:" msgstr "Soļu skaits:" -#: ../src/extension/internal/bluredge.cpp:138 +#: ../src/extension/internal/bluredge.cpp:139 msgid "Number of inset/outset copies of the object to make" msgstr "Izveidojamais objekta saīsināto/pagarināto kopiju skaits" -#: ../src/extension/internal/bluredge.cpp:142 +#: ../src/extension/internal/bluredge.cpp:143 #: ../share/extensions/extrude.inx.h:5 #: ../share/extensions/generate_voronoi.inx.h:9 #: ../share/extensions/interp.inx.h:7 @@ -5807,7 +5807,7 @@ msgstr "PostScript level 2" #: ../src/extension/internal/cairo-ps-out.cpp:335 #: ../src/extension/internal/cairo-ps-out.cpp:376 #: ../src/extension/internal/cairo-renderer-pdf-out.cpp:250 -#: ../src/extension/internal/emf-win32-inout.cpp:2553 +#: ../src/extension/internal/emf-win32-inout.cpp:2557 msgid "Convert texts to paths" msgstr "Pārvērst tekstus par ceļiem" @@ -5975,39 +5975,39 @@ msgstr "Corel DRAW Presentation Exchange faili (.cmx)" msgid "Open presentation exchange files saved in Corel DRAW" msgstr "Atver Corel DRAW saglabātos Presentation Exchange failus" -#: ../src/extension/internal/emf-win32-inout.cpp:2523 +#: ../src/extension/internal/emf-win32-inout.cpp:2527 msgid "EMF Input" msgstr "EMF ievade" -#: ../src/extension/internal/emf-win32-inout.cpp:2528 +#: ../src/extension/internal/emf-win32-inout.cpp:2532 msgid "Enhanced Metafiles (*.emf)" msgstr "Enhanced Metafile (*.emf)" -#: ../src/extension/internal/emf-win32-inout.cpp:2529 +#: ../src/extension/internal/emf-win32-inout.cpp:2533 msgid "Enhanced Metafiles" msgstr "Enhanced metafaili" -#: ../src/extension/internal/emf-win32-inout.cpp:2537 +#: ../src/extension/internal/emf-win32-inout.cpp:2541 msgid "WMF Input" msgstr "WMF ievade" -#: ../src/extension/internal/emf-win32-inout.cpp:2542 +#: ../src/extension/internal/emf-win32-inout.cpp:2546 msgid "Windows Metafiles (*.wmf)" msgstr "Windows Metafile (*.wmf)" -#: ../src/extension/internal/emf-win32-inout.cpp:2543 +#: ../src/extension/internal/emf-win32-inout.cpp:2547 msgid "Windows Metafiles" msgstr "Windows metafaili" -#: ../src/extension/internal/emf-win32-inout.cpp:2551 +#: ../src/extension/internal/emf-win32-inout.cpp:2555 msgid "EMF Output" msgstr "EMF izvade" -#: ../src/extension/internal/emf-win32-inout.cpp:2557 +#: ../src/extension/internal/emf-win32-inout.cpp:2561 msgid "Enhanced Metafile (*.emf)" msgstr "Enhanced Metafile (*.emf)" -#: ../src/extension/internal/emf-win32-inout.cpp:2558 +#: ../src/extension/internal/emf-win32-inout.cpp:2562 msgid "Enhanced Metafile" msgstr "Enhanced metafails" @@ -6276,7 +6276,7 @@ msgstr "Erozija" #: ../src/extension/internal/filter/blurs.h:336 #: ../src/extension/internal/filter/color.h:1205 #: ../src/extension/internal/filter/color.h:1317 -#: ../src/ui/dialog/document-properties.cpp:108 +#: ../src/ui/dialog/document-properties.cpp:107 msgid "Background color" msgstr "Fona krāsa" @@ -6339,8 +6339,8 @@ msgstr "Reljefa avots" #: ../src/extension/internal/filter/color.h:821 #: ../src/extension/internal/filter/transparency.h:132 #: ../src/filter-enums.cpp:100 -#: ../src/flood-context.cpp:228 -#: ../src/widgets/sp-color-icc-selector.cpp:354 +#: ../src/flood-context.cpp:227 +#: ../src/widgets/sp-color-icc-selector.cpp:355 #: ../src/widgets/sp-color-scales.cpp:429 #: ../src/widgets/sp-color-scales.cpp:430 msgid "Red" @@ -6353,8 +6353,8 @@ msgstr "Sarkans" #: ../src/extension/internal/filter/color.h:822 #: ../src/extension/internal/filter/transparency.h:133 #: ../src/filter-enums.cpp:101 -#: ../src/flood-context.cpp:229 -#: ../src/widgets/sp-color-icc-selector.cpp:355 +#: ../src/flood-context.cpp:228 +#: ../src/widgets/sp-color-icc-selector.cpp:356 #: ../src/widgets/sp-color-scales.cpp:432 #: ../src/widgets/sp-color-scales.cpp:433 msgid "Green" @@ -6367,8 +6367,8 @@ msgstr "Zaļš" #: ../src/extension/internal/filter/color.h:823 #: ../src/extension/internal/filter/transparency.h:134 #: ../src/filter-enums.cpp:102 -#: ../src/flood-context.cpp:230 -#: ../src/widgets/sp-color-icc-selector.cpp:356 +#: ../src/flood-context.cpp:229 +#: ../src/widgets/sp-color-icc-selector.cpp:357 #: ../src/widgets/sp-color-scales.cpp:435 #: ../src/widgets/sp-color-scales.cpp:436 msgid "Blue" @@ -6394,7 +6394,7 @@ msgstr "Izkliedēt" #: ../src/extension/internal/filter/bumps.h:329 #: ../src/libgdl/gdl-dock-placeholder.c:175 #: ../src/libgdl/gdl-dock.c:199 -#: ../src/widgets/rect-toolbar.cpp:332 +#: ../src/widgets/rect-toolbar.cpp:334 #: ../share/extensions/interp_att_g.inx.h:11 msgid "Height" msgstr "Augstums" @@ -6407,11 +6407,11 @@ msgstr "Augstums" #: ../src/extension/internal/filter/paint.h:86 #: ../src/extension/internal/filter/paint.h:592 #: ../src/extension/internal/filter/paint.h:707 -#: ../src/flood-context.cpp:233 -#: ../src/widgets/sp-color-icc-selector.cpp:365 +#: ../src/flood-context.cpp:232 +#: ../src/widgets/sp-color-icc-selector.cpp:366 #: ../src/widgets/sp-color-scales.cpp:461 #: ../src/widgets/sp-color-scales.cpp:462 -#: ../src/widgets/tweak-toolbar.cpp:336 +#: ../src/widgets/tweak-toolbar.cpp:332 #: ../share/extensions/color_randomize.inx.h:5 msgid "Lightness" msgstr "Gaišums" @@ -6434,7 +6434,6 @@ msgid "Distant" msgstr "Attāls" #: ../src/extension/internal/filter/bumps.h:106 -#: ../src/helper/units.cpp:38 #: ../src/ui/dialog/inkscape-preferences.cpp:451 msgid "Point" msgstr "Punkts" @@ -6525,7 +6524,7 @@ msgstr "Fons:" #: ../src/extension/internal/filter/bumps.h:322 #: ../src/extension/internal/filter/transparency.h:57 #: ../src/filter-enums.cpp:29 -#: ../src/selection-describer.cpp:56 +#: ../src/selection-describer.cpp:57 msgid "Image" msgstr "Attēls" @@ -6609,13 +6608,13 @@ msgstr "Kanālu krāsosana" #: ../src/extension/internal/filter/color.h:156 #: ../src/extension/internal/filter/color.h:257 #: ../src/extension/internal/filter/paint.h:87 -#: ../src/flood-context.cpp:232 -#: ../src/ui/dialog/inkscape-preferences.cpp:937 -#: ../src/widgets/sp-color-icc-selector.cpp:361 -#: ../src/widgets/sp-color-icc-selector.cpp:366 +#: ../src/flood-context.cpp:231 +#: ../src/ui/dialog/inkscape-preferences.cpp:941 +#: ../src/widgets/sp-color-icc-selector.cpp:362 +#: ../src/widgets/sp-color-icc-selector.cpp:367 #: ../src/widgets/sp-color-scales.cpp:458 #: ../src/widgets/sp-color-scales.cpp:459 -#: ../src/widgets/tweak-toolbar.cpp:320 +#: ../src/widgets/tweak-toolbar.cpp:316 #: ../share/extensions/color_randomize.inx.h:4 msgid "Saturation" msgstr "Piesātinājums" @@ -6623,7 +6622,7 @@ msgstr "Piesātinājums" #: ../src/extension/internal/filter/color.h:160 #: ../src/extension/internal/filter/transparency.h:135 #: ../src/filter-enums.cpp:103 -#: ../src/flood-context.cpp:234 +#: ../src/flood-context.cpp:233 msgid "Alpha" msgstr "Alfa" @@ -6751,24 +6750,24 @@ msgid "Extract Channel" msgstr "Ekstraģēt kanālu" #: ../src/extension/internal/filter/color.h:640 -#: ../src/widgets/sp-color-icc-selector.cpp:368 -#: ../src/widgets/sp-color-icc-selector.cpp:373 +#: ../src/widgets/sp-color-icc-selector.cpp:369 +#: ../src/widgets/sp-color-icc-selector.cpp:374 #: ../src/widgets/sp-color-scales.cpp:483 #: ../src/widgets/sp-color-scales.cpp:484 msgid "Cyan" msgstr "Ciāns" #: ../src/extension/internal/filter/color.h:641 -#: ../src/widgets/sp-color-icc-selector.cpp:369 -#: ../src/widgets/sp-color-icc-selector.cpp:374 +#: ../src/widgets/sp-color-icc-selector.cpp:370 +#: ../src/widgets/sp-color-icc-selector.cpp:375 #: ../src/widgets/sp-color-scales.cpp:486 #: ../src/widgets/sp-color-scales.cpp:487 msgid "Magenta" msgstr "Fuksīns (Magenta)" #: ../src/extension/internal/filter/color.h:642 -#: ../src/widgets/sp-color-icc-selector.cpp:370 -#: ../src/widgets/sp-color-icc-selector.cpp:375 +#: ../src/widgets/sp-color-icc-selector.cpp:371 +#: ../src/widgets/sp-color-icc-selector.cpp:376 #: ../src/widgets/sp-color-scales.cpp:489 #: ../src/widgets/sp-color-scales.cpp:490 msgid "Yellow" @@ -6795,15 +6794,15 @@ msgid "Fade to:" msgstr "Izgaisināt:" #: ../src/extension/internal/filter/color.h:744 -#: ../src/ui/widget/selected-style.cpp:254 -#: ../src/widgets/sp-color-icc-selector.cpp:371 +#: ../src/ui/widget/selected-style.cpp:257 +#: ../src/widgets/sp-color-icc-selector.cpp:372 #: ../src/widgets/sp-color-scales.cpp:492 #: ../src/widgets/sp-color-scales.cpp:493 msgid "Black" msgstr "Melns" #: ../src/extension/internal/filter/color.h:745 -#: ../src/ui/widget/selected-style.cpp:250 +#: ../src/ui/widget/selected-style.cpp:253 msgid "White" msgstr "Balts" @@ -6826,7 +6825,7 @@ msgid "Customize greyscale components" msgstr "Pieskaņojiet pelēktoņu sastāvdaļas" #: ../src/extension/internal/filter/color.h:905 -#: ../src/ui/widget/selected-style.cpp:246 +#: ../src/ui/widget/selected-style.cpp:249 msgid "Invert" msgstr "Invertēt" @@ -6914,7 +6913,7 @@ msgstr "Sarkanā nobīde" #: ../src/extension/internal/filter/color.h:1310 #: ../src/extension/internal/filter/color.h:1313 #: ../src/ui/dialog/input.cpp:1616 -#: ../src/ui/dialog/layers.cpp:915 +#: ../src/ui/dialog/layers.cpp:916 msgid "X" msgstr "X" @@ -7050,8 +7049,8 @@ msgstr "Ārā" # K.Kalvišķis (karlo@lanet.lv): Ja nepatīk vārds „līnija”, tad varētu lietot vārdu „apmale”, jo Inkscape jebkuru līniju uztver kā nenoslēgtu daudzstūri, kuram var piešķirt gan aizpildījuma krāsu un veidu, gan apmales (līnijas) krāsu un veidu. #: ../src/extension/internal/filter/distort.h:77 #: ../src/extension/internal/filter/textures.h:75 -#: ../src/ui/widget/selected-style.cpp:128 -#: ../src/ui/widget/style-swatch.cpp:127 +#: ../src/ui/widget/selected-style.cpp:131 +#: ../src/ui/widget/style-swatch.cpp:128 msgid "Stroke:" msgstr "Apmale:" @@ -7162,6 +7161,8 @@ msgid "Detect:" msgstr "Noteikt:" #: ../src/extension/internal/filter/image.h:52 +#: ../src/ui/dialog/template-load-tab.cpp:96 +#: ../src/ui/dialog/template-load-tab.cpp:131 msgid "All" msgstr "Viss" @@ -7202,9 +7203,9 @@ msgstr "Atvērt" #: ../src/extension/internal/filter/morphology.h:65 #: ../src/libgdl/gdl-dock-placeholder.c:167 #: ../src/libgdl/gdl-dock.c:191 -#: ../src/widgets/rect-toolbar.cpp:315 -#: ../src/widgets/spray-toolbar.cpp:132 -#: ../src/widgets/tweak-toolbar.cpp:146 +#: ../src/widgets/rect-toolbar.cpp:317 +#: ../src/widgets/spray-toolbar.cpp:128 +#: ../src/widgets/tweak-toolbar.cpp:142 #: ../share/extensions/interp_att_g.inx.h:10 msgid "Width" msgstr "Platums" @@ -7440,8 +7441,8 @@ msgid "Convert image to an engraving made of vertical and horizontal lines" msgstr "Pārvērst attēlu par gravīru, kas sastāv no vertikālām un horizontālām līnijām" #: ../src/extension/internal/filter/paint.h:331 -#: ../src/ui/dialog/align-and-distribute.cpp:1048 -#: ../src/widgets/desktop-widget.cpp:2000 +#: ../src/ui/dialog/align-and-distribute.cpp:997 +#: ../src/widgets/desktop-widget.cpp:2004 msgid "Drawing" msgstr "Zīmējums" @@ -7449,7 +7450,7 @@ msgstr "Zīmējums" #: ../src/extension/internal/filter/paint.h:496 #: ../src/extension/internal/filter/paint.h:590 #: ../src/extension/internal/filter/paint.h:976 -#: ../src/splivarot.cpp:1988 +#: ../src/splivarot.cpp:2024 msgid "Simplify" msgstr "Vienkāršot" @@ -7720,7 +7721,7 @@ msgid "Blend" msgstr "Sapludināt" #: ../src/extension/internal/filter/transparency.h:55 -#: ../src/rdf.cpp:258 +#: ../src/rdf.cpp:261 msgid "Source:" msgstr "Avots:" @@ -7730,12 +7731,12 @@ msgid "Background" msgstr "Fons" #: ../src/extension/internal/filter/transparency.h:59 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2610 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2623 #: ../src/ui/dialog/input.cpp:1088 -#: ../src/widgets/erasor-toolbar.cpp:127 -#: ../src/widgets/pencil-toolbar.cpp:161 -#: ../src/widgets/spray-toolbar.cpp:202 -#: ../src/widgets/tweak-toolbar.cpp:272 +#: ../src/widgets/eraser-toolbar.cpp:123 +#: ../src/widgets/pencil-toolbar.cpp:156 +#: ../src/widgets/spray-toolbar.cpp:198 +#: ../src/widgets/tweak-toolbar.cpp:268 #: ../share/extensions/extrude.inx.h:2 #: ../share/extensions/triangle.inx.h:8 msgid "Mode:" @@ -7853,11 +7854,10 @@ msgstr "Vertikālā nobīde:" #: ../share/extensions/eqtexsvg.inx.h:4 #: ../share/extensions/foldablebox.inx.h:9 #: ../share/extensions/funcplot.inx.h:38 -#: ../share/extensions/gears.inx.h:11 #: ../share/extensions/grid_cartesian.inx.h:23 #: ../share/extensions/grid_isometric.inx.h:11 #: ../share/extensions/grid_polar.inx.h:22 -#: ../share/extensions/guides_creator.inx.h:20 +#: ../share/extensions/guides_creator.inx.h:19 #: ../share/extensions/layout_nup.inx.h:35 #: ../share/extensions/lindenmayer.inx.h:34 #: ../share/extensions/param_curves.inx.h:30 @@ -7868,6 +7868,8 @@ msgstr "Vertikālā nobīde:" #: ../share/extensions/render_barcode.inx.h:5 #: ../share/extensions/render_barcode_datamatrix.inx.h:5 #: ../share/extensions/render_barcode_qrcode.inx.h:18 +#: ../share/extensions/render_gears.inx.h:11 +#: ../share/extensions/render_gear_rack.inx.h:5 #: ../share/extensions/rtree.inx.h:4 #: ../share/extensions/spirograph.inx.h:10 #: ../share/extensions/svgcalendar.inx.h:38 @@ -7877,9 +7879,9 @@ msgid "Render" msgstr "Renderēt" #: ../src/extension/internal/grid.cpp:220 -#: ../src/ui/dialog/document-properties.cpp:148 +#: ../src/ui/dialog/document-properties.cpp:147 #: ../src/ui/dialog/inkscape-preferences.cpp:776 -#: ../src/widgets/toolbox.cpp:1826 +#: ../src/widgets/toolbox.cpp:1820 msgid "Grids" msgstr "Režģi" @@ -7915,15 +7917,15 @@ msgstr "LaTeX PSTricks fails" msgid "LaTeX Print" msgstr "LaTeX druka" -#: ../src/extension/internal/odf.cpp:2138 +#: ../src/extension/internal/odf.cpp:2148 msgid "OpenDocument Drawing Output" msgstr "OpenDocument Drawing Izvade" -#: ../src/extension/internal/odf.cpp:2143 +#: ../src/extension/internal/odf.cpp:2153 msgid "OpenDocument drawing (*.odg)" msgstr "OpenDocument zīmejums (*.odg)" -#: ../src/extension/internal/odf.cpp:2144 +#: ../src/extension/internal/odf.cpp:2154 msgid "OpenDocument drawing file" msgstr "OpenDocument zīmējuma fails" @@ -8218,46 +8220,46 @@ msgstr "Vai efekts tiek priekšskatīts \"dzīvajā\" uz audekla?" msgid "Format autodetect failed. The file is being opened as SVG." msgstr "Neizdevās automātiski noteikt formātu. Fails atvērts kā SVG." -#: ../src/file.cpp:153 +#: ../src/file.cpp:179 msgid "default.svg" msgstr "default.svg" -#: ../src/file.cpp:284 +#: ../src/file.cpp:318 msgid "Broken links have been changed to point to existing files." msgstr "Nederīgās saites ir izlabotas un norāda uz pastāvošiem failiem." -#: ../src/file.cpp:295 -#: ../src/file.cpp:1218 +#: ../src/file.cpp:329 +#: ../src/file.cpp:1253 #, c-format msgid "Failed to load the requested file %s" msgstr "Neizdevās ielādēt pieprasīto failu %s" -#: ../src/file.cpp:321 +#: ../src/file.cpp:355 msgid "Document not saved yet. Cannot revert." msgstr "Dokuments vēl nav saglabāts. Nav iespējams atgriezties pie saglabātā." -#: ../src/file.cpp:327 +#: ../src/file.cpp:361 #, c-format msgid "Changes will be lost! Are you sure you want to reload document %s?" msgstr "Izmaiņas tiks zaudētas! Vai tiešām vēlaties ielādēt dokumentu %s no jauna?" -#: ../src/file.cpp:356 +#: ../src/file.cpp:390 msgid "Document reverted." msgstr "Ielādēta dokumenta iepriekš saglabātā versija." -#: ../src/file.cpp:358 +#: ../src/file.cpp:392 msgid "Document not reverted." msgstr "Dokumenta Iepriekš saglabātā versija nav Ielādēta." -#: ../src/file.cpp:508 +#: ../src/file.cpp:542 msgid "Select file to open" msgstr "Izvēlieties atveramo failu" -#: ../src/file.cpp:592 +#: ../src/file.cpp:624 msgid "Clean up document" msgstr "Uzkopt dokumentu" -#: ../src/file.cpp:597 +#: ../src/file.cpp:631 #, c-format msgid "Removed <b>%i</b> unused definition in <defs>." msgid_plural "Removed <b>%i</b> unused definitions in <defs>." @@ -8265,86 +8267,86 @@ msgstr[0] "Aizvākta <b>%i</b> neizmantota definīcija no <defs>." msgstr[1] "Aizvāktas <b>%i</b> neizmantotas definīcijas no <defs>." msgstr[2] "Aizvāktas <b>%i</b> neizmantotas definīcijas no <defs>." -#: ../src/file.cpp:602 +#: ../src/file.cpp:636 msgid "No unused definitions in <defs>." msgstr "<defs> nav neizmantotu definīciju." -#: ../src/file.cpp:633 +#: ../src/file.cpp:668 #, c-format msgid "No Inkscape extension found to save document (%s). This may have been caused by an unknown filename extension." msgstr "Dokumenta (%s) saglabāšanai nepieciešamais Inkscape paplašinājums nav atrasts. Cēlonis var būt nezināms faila nosaukuma paplašinājums." -#: ../src/file.cpp:634 -#: ../src/file.cpp:642 -#: ../src/file.cpp:650 -#: ../src/file.cpp:656 -#: ../src/file.cpp:661 +#: ../src/file.cpp:669 +#: ../src/file.cpp:677 +#: ../src/file.cpp:685 +#: ../src/file.cpp:691 +#: ../src/file.cpp:696 msgid "Document not saved." msgstr "Dokumentu nav saglabāts." -#: ../src/file.cpp:641 +#: ../src/file.cpp:676 #, c-format msgid "File %s is write protected. Please remove write protection and try again." msgstr "Fails %s ir aizsargāts pret ierakstu. Lūdzu, noņemiet aizsardzību pret ierakstu un mēģiniet vēlreiz." -#: ../src/file.cpp:649 +#: ../src/file.cpp:684 #, c-format msgid "File %s could not be saved." msgstr "Failu %s nav iespējams saglabāt." -#: ../src/file.cpp:679 -#: ../src/file.cpp:681 +#: ../src/file.cpp:714 +#: ../src/file.cpp:716 msgid "Document saved." msgstr "Dokuments saglabāts" #. We are saving for the first time; create a unique default filename -#: ../src/file.cpp:829 -#: ../src/file.cpp:1381 +#: ../src/file.cpp:864 +#: ../src/file.cpp:1416 #, c-format msgid "drawing%s" msgstr "zīmējums%s" -#: ../src/file.cpp:835 +#: ../src/file.cpp:870 #, c-format msgid "drawing-%d%s" msgstr "zīmējums-%d%s" -#: ../src/file.cpp:839 +#: ../src/file.cpp:874 #, c-format msgid "%s" msgstr "%s" -#: ../src/file.cpp:854 +#: ../src/file.cpp:889 msgid "Select file to save a copy to" msgstr "Izvēlieties failu, kurā saglabāt kopiju" -#: ../src/file.cpp:856 +#: ../src/file.cpp:891 msgid "Select file to save to" msgstr "Izvēlieties failu, kurā saglabāt" -#: ../src/file.cpp:962 -#: ../src/file.cpp:964 +#: ../src/file.cpp:997 +#: ../src/file.cpp:999 msgid "No changes need to be saved." msgstr "Nav izmaiņu, kuras vajadzētu saglabāt." -#: ../src/file.cpp:983 +#: ../src/file.cpp:1018 msgid "Saving document..." msgstr "Saglabā dokumentu..." -#: ../src/file.cpp:1215 +#: ../src/file.cpp:1250 #: ../src/ui/dialog/ocaldialogs.cpp:1244 msgid "Import" msgstr "Importēt" -#: ../src/file.cpp:1265 +#: ../src/file.cpp:1300 msgid "Select file to import" msgstr "Izvēlieties importējamo failu" -#: ../src/file.cpp:1403 +#: ../src/file.cpp:1438 msgid "Select file to export to" msgstr "Izvēlieties failu, uz kuru eksportēt" -#: ../src/file.cpp:1656 +#: ../src/file.cpp:1691 msgid "Import Clip Art" msgstr "Importēt izgriezumkopu" @@ -8373,6 +8375,7 @@ msgid "Flood" msgstr "Pludināt" #: ../src/filter-enums.cpp:30 +#: ../share/extensions/text_merge.inx.h:1 msgid "Merge" msgstr "Apvienot" @@ -8426,7 +8429,7 @@ msgstr "Spilgtumu par alfa" #. File #: ../src/filter-enums.cpp:70 -#: ../src/verbs.cpp:2295 +#: ../src/verbs.cpp:2348 #: ../share/extensions/jessyInk_mouseHandler.inx.h:3 #: ../share/extensions/jessyInk_transitions.inx.h:7 msgid "Default" @@ -8437,7 +8440,7 @@ msgid "Arithmetic" msgstr "Aritmētisks" #: ../src/filter-enums.cpp:92 -#: ../src/selection-chemistry.cpp:516 +#: ../src/selection-chemistry.cpp:531 msgid "Duplicate" msgstr "Dublēt" @@ -8469,45 +8472,45 @@ msgstr "Punkta gaisma" msgid "Spot Light" msgstr "Starmetis" -#: ../src/flood-context.cpp:227 +#: ../src/flood-context.cpp:226 msgid "Visible Colors" msgstr "Redzamās krāsas" -#: ../src/flood-context.cpp:231 -#: ../src/widgets/sp-color-icc-selector.cpp:360 -#: ../src/widgets/sp-color-icc-selector.cpp:364 +#: ../src/flood-context.cpp:230 +#: ../src/widgets/sp-color-icc-selector.cpp:361 +#: ../src/widgets/sp-color-icc-selector.cpp:365 #: ../src/widgets/sp-color-scales.cpp:455 #: ../src/widgets/sp-color-scales.cpp:456 -#: ../src/widgets/tweak-toolbar.cpp:304 +#: ../src/widgets/tweak-toolbar.cpp:300 #: ../share/extensions/color_randomize.inx.h:3 msgid "Hue" msgstr "Tonis" -#: ../src/flood-context.cpp:245 +#: ../src/flood-context.cpp:244 msgctxt "Flood autogap" msgid "None" msgstr "Nekas" -#: ../src/flood-context.cpp:246 +#: ../src/flood-context.cpp:245 msgctxt "Flood autogap" msgid "Small" msgstr "Mazs" -#: ../src/flood-context.cpp:247 +#: ../src/flood-context.cpp:246 msgctxt "Flood autogap" msgid "Medium" msgstr "Vidējs" -#: ../src/flood-context.cpp:248 +#: ../src/flood-context.cpp:247 msgctxt "Flood autogap" msgid "Large" msgstr "Liels" -#: ../src/flood-context.cpp:470 +#: ../src/flood-context.cpp:469 msgid "<b>Too much inset</b>, the result is empty." msgstr "<b>Saīsināts par daudz</b>, rezultāts ir tukšs." -#: ../src/flood-context.cpp:511 +#: ../src/flood-context.cpp:510 #, c-format msgid "Area filled, path with <b>%d</b> node created and unioned with selection." msgid_plural "Area filled, path with <b>%d</b> nodes created and unioned with selection." @@ -8515,7 +8518,7 @@ msgstr[0] "Laukums aizpildīts, izveidots ceļš ar <b>%d</b> mezglu un apvienot msgstr[1] "Laukums aizpildīts, izveidots ceļš ar <b>%d</b> mezgliem un apvienots ar atlasīto." msgstr[2] "Laukums aizpildīts, izveidots ceļš ar <b>%d</b> mezgliem un apvienots ar atlasīto." -#: ../src/flood-context.cpp:517 +#: ../src/flood-context.cpp:516 #, c-format msgid "Area filled, path with <b>%d</b> node created." msgid_plural "Area filled, path with <b>%d</b> nodes created." @@ -8523,25 +8526,25 @@ msgstr[0] "Laukums aizpildīts, izveidots ceļš ar <b>%d</b> mezglu." msgstr[1] "Laukums aizpildīts, izveidots ceļš ar <b>%d</b> mezgliem." msgstr[2] "Laukums aizpildīts, izveidots ceļš ar <b>%d</b> mezgliem." -#: ../src/flood-context.cpp:785 -#: ../src/flood-context.cpp:1095 +#: ../src/flood-context.cpp:784 +#: ../src/flood-context.cpp:1094 msgid "<b>Area is not bounded</b>, cannot fill." msgstr "<b>Laukums nav norobežots</b>, nav iespējams aizpildīt." -#: ../src/flood-context.cpp:1100 +#: ../src/flood-context.cpp:1099 msgid "<b>Only the visible part of the bounded area was filled.</b> If you want to fill all of the area, undo, zoom out, and fill again." msgstr "<b>Aizpildīta tikai redzamā norobežotā laukuma daļa.</b> Ja vēlaties aizpildīt visu laukumu, atsauciet darbību, tāliniet un aizpildiet vēlreiz." -#: ../src/flood-context.cpp:1118 -#: ../src/flood-context.cpp:1277 +#: ../src/flood-context.cpp:1117 +#: ../src/flood-context.cpp:1276 msgid "Fill bounded area" msgstr "Aizpildīt norobežoto laukumu" -#: ../src/flood-context.cpp:1137 +#: ../src/flood-context.cpp:1136 msgid "Set style on object" msgstr "Iestatiet objekta stilu" -#: ../src/flood-context.cpp:1196 +#: ../src/flood-context.cpp:1195 msgid "<b>Draw over</b> areas to add to fill, hold <b>Alt</b> for touch fill" msgstr "<b>Velciet pāri</b> aizpildāmajiem laukumiem, turiet <b>Alt</b> aizpildīšanai ar pieskārieniem" @@ -8554,7 +8557,7 @@ msgid "Reverse gradient" msgstr "Apgriezt krāsu pāreju otrādi" #: ../src/gradient-chemistry.cpp:1608 -#: ../src/widgets/gradient-selector.cpp:227 +#: ../src/widgets/gradient-selector.cpp:228 msgid "Delete swatch" msgstr "Dzēst paleti" @@ -8660,7 +8663,7 @@ msgstr[2] "Nav atlasīts <b>neviens</b> krāsu pārejas turis no %d %d atlasī #: ../src/gradient-context.cpp:381 #: ../src/gradient-context.cpp:479 -#: ../src/ui/dialog/swatches.cpp:203 +#: ../src/ui/dialog/swatches.cpp:204 #: ../src/widgets/gradient-vector.cpp:814 msgid "Add gradient stop" msgstr "Pievienot krāsu pārejas beigas" @@ -8716,9 +8719,8 @@ msgid "Mesh gradient <b>tensor</b>" msgstr "Tīkla krāsu pārejas <b>tenzors</b>" #: ../src/gradient-drag.cpp:566 -#, fuzzy msgid "Added patch row or column" -msgstr "Pievienota XXX rinda vai sleja" +msgstr "Pievienota papildu rinda vai sleja" #: ../src/gradient-drag.cpp:792 msgid "Merge gradient handles" @@ -8773,307 +8775,114 @@ msgstr "Pārvietot krāsu pārejas vidus punktu(s)" msgid "Delete gradient stop(s)" msgstr "Dzēst krāsu pārejas beigas" -#: ../src/helper/units.cpp:37 -#: ../src/live_effects/lpe-ruler.cpp:42 -msgid "Unit" -msgstr "Vienība" - -#. Add the units menu. -#: ../src/helper/units.cpp:37 -#: ../src/widgets/lpe-toolbar.cpp:400 -#: ../src/widgets/node-toolbar.cpp:622 -#: ../src/widgets/paintbucket-toolbar.cpp:185 -#: ../src/widgets/rect-toolbar.cpp:376 -#: ../src/widgets/select-toolbar.cpp:538 -msgid "Units" -msgstr "Mērvienības" - -#: ../src/helper/units.cpp:38 -#: ../share/extensions/dxf_outlines.inx.h:9 -msgid "pt" -msgstr "pt" - -#: ../src/helper/units.cpp:38 -#: ../share/extensions/perfectboundcover.inx.h:11 -msgid "Points" -msgstr "Punkti" - -#: ../src/helper/units.cpp:38 -msgid "Pt" -msgstr "pt" - -#: ../src/helper/units.cpp:39 -#: ../src/ui/dialog/inkscape-preferences.cpp:451 -msgid "Pica" -msgstr "Pica" - -#: ../src/helper/units.cpp:39 -#: ../share/extensions/dxf_outlines.inx.h:10 -msgid "pc" -msgstr "pc" - -#: ../src/helper/units.cpp:39 -msgid "Picas" -msgstr "picas" - -#: ../src/helper/units.cpp:39 -msgid "Pc" -msgstr "pc" - -#: ../src/helper/units.cpp:40 -#: ../src/ui/dialog/inkscape-preferences.cpp:451 -msgid "Pixel" -msgstr "Pikselis" - -#: ../src/helper/units.cpp:40 -#: ../share/extensions/dxf_outlines.inx.h:11 -#: ../share/extensions/gears.inx.h:7 -msgid "px" -msgstr " px" - -#: ../src/helper/units.cpp:40 -msgid "Pixels" -msgstr "Pikseļi" - -#: ../src/helper/units.cpp:40 -msgid "Px" -msgstr " px" - -#. You can add new elements from this point forward -#: ../src/helper/units.cpp:42 -msgid "Percent" -msgstr "Procenti" - -#: ../src/helper/units.cpp:42 -#: ../src/ui/dialog/inkscape-preferences.cpp:1265 -msgid "%" -msgstr "%" - -#: ../src/helper/units.cpp:42 -msgid "Percents" -msgstr "Procenti" - -#: ../src/helper/units.cpp:43 -#: ../src/ui/dialog/inkscape-preferences.cpp:451 -msgid "Millimeter" -msgstr "Milimetrs" - -#: ../src/helper/units.cpp:43 -#: ../share/extensions/dxf_outlines.inx.h:12 -#: ../share/extensions/gears.inx.h:9 -#: ../share/extensions/gcodetools_area.inx.h:46 -#: ../share/extensions/gcodetools_dxf_points.inx.h:18 -#: ../share/extensions/gcodetools_engraving.inx.h:24 -#: ../share/extensions/gcodetools_graffiti.inx.h:18 -#: ../share/extensions/gcodetools_lathe.inx.h:39 -#: ../share/extensions/gcodetools_orientation_points.inx.h:11 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:28 -msgid "mm" -msgstr "mm" - -#: ../src/helper/units.cpp:43 -msgid "Millimeters" -msgstr "Milimetri" - -#: ../src/helper/units.cpp:44 -#: ../src/ui/dialog/inkscape-preferences.cpp:451 -msgid "Centimeter" -msgstr "Centimetrs" - -#: ../src/helper/units.cpp:44 -#: ../share/extensions/dxf_outlines.inx.h:13 -msgid "cm" -msgstr "cm" - -#: ../src/helper/units.cpp:44 -msgid "Centimeters" -msgstr "Centrimetri" - -#: ../src/helper/units.cpp:45 -msgid "Meter" -msgstr "Metrs" - -#: ../src/helper/units.cpp:45 -#: ../share/extensions/dxf_outlines.inx.h:14 -msgid "m" -msgstr "m" - -#: ../src/helper/units.cpp:45 -msgid "Meters" -msgstr "Metri" - -#. no svg_unit -#: ../src/helper/units.cpp:46 -#: ../src/ui/dialog/inkscape-preferences.cpp:451 -msgid "Inch" -msgstr "colla" - -#: ../src/helper/units.cpp:46 -#: ../share/extensions/dxf_outlines.inx.h:15 -#: ../share/extensions/gears.inx.h:8 -#: ../share/extensions/gcodetools_area.inx.h:47 -#: ../share/extensions/gcodetools_dxf_points.inx.h:19 -#: ../share/extensions/gcodetools_engraving.inx.h:25 -#: ../share/extensions/gcodetools_graffiti.inx.h:19 -#: ../share/extensions/gcodetools_lathe.inx.h:40 -#: ../share/extensions/gcodetools_orientation_points.inx.h:12 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:29 -msgid "in" -msgstr "colla" - -#: ../src/helper/units.cpp:46 -msgid "Inches" -msgstr "Collas" - -#: ../src/helper/units.cpp:47 -msgid "Foot" -msgstr "Pēda" - -#: ../src/helper/units.cpp:47 -#: ../share/extensions/dxf_outlines.inx.h:16 -msgid "ft" -msgstr "pēdas" - -#: ../src/helper/units.cpp:47 -msgid "Feet" -msgstr "Pēdas" - -#. Volatiles do not have default, so there are none here -#. TRANSLATORS: for info, see http://www.w3.org/TR/REC-CSS2/syndata.html#length-units -#: ../src/helper/units.cpp:50 -#: ../src/ui/dialog/inkscape-preferences.cpp:451 -msgid "Em square" -msgstr "Em kvadrāts" - -#: ../src/helper/units.cpp:50 -msgid "em" -msgstr "em" - -#: ../src/helper/units.cpp:50 -msgid "Em squares" -msgstr "Em kvadrāti" - -#. TRANSLATORS: for info, see http://www.w3.org/TR/REC-CSS2/syndata.html#length-units -#: ../src/helper/units.cpp:52 -msgid "Ex square" -msgstr "Ex kvadrāts" - -#: ../src/helper/units.cpp:52 -msgid "ex" -msgstr "ex" - -#: ../src/helper/units.cpp:52 -msgid "Ex squares" -msgstr "Ex kvadrāti" - -#: ../src/inkscape.cpp:322 +#: ../src/inkscape.cpp:341 msgid "Autosave failed! Cannot create directory %1." msgstr "Automātiskās saglabāšanas kļūda! Nevar izveidot mapi %1." -#: ../src/inkscape.cpp:331 +#: ../src/inkscape.cpp:350 msgid "Autosave failed! Cannot open directory %1." msgstr "Automātiskās saglabāšanas kļūda! Nevar atvērt mapi %1." -#: ../src/inkscape.cpp:347 +#: ../src/inkscape.cpp:366 msgid "Autosaving documents..." msgstr "Automātiski saglabāju dokumentus" -#: ../src/inkscape.cpp:420 +#: ../src/inkscape.cpp:439 msgid "Autosave failed! Could not find inkscape extension to save document." msgstr "Neizdevās automātiski saglabāt! Nav iespējams atrast dokumenta saglabāšanai nepieciešamo Inkscape paplašinājumu." -#: ../src/inkscape.cpp:423 -#: ../src/inkscape.cpp:430 +#: ../src/inkscape.cpp:442 +#: ../src/inkscape.cpp:449 #, c-format msgid "Autosave failed! File %s could not be saved." msgstr "Automātiskā saglabāšana neizdevās! Failu %s neizdevās saglabāt." -#: ../src/inkscape.cpp:445 +#: ../src/inkscape.cpp:464 msgid "Autosave complete." msgstr "Automātiskā saglabāšana pabeigta." -#: ../src/inkscape.cpp:691 +#: ../src/inkscape.cpp:712 msgid "Untitled document" msgstr "Nenosaukts dokuments" #. Show nice dialog box -#: ../src/inkscape.cpp:723 +#: ../src/inkscape.cpp:744 msgid "Inkscape encountered an internal error and will close now.\n" msgstr "Inkscape radās iekšēja kļūda un tagad tiks aizvērta.\n" -#: ../src/inkscape.cpp:724 +#: ../src/inkscape.cpp:745 msgid "Automatic backups of unsaved documents were done to the following locations:\n" msgstr "Nesaglabāto dokumentu automātiskās rezerves kopijas tika saglabātas sekojošās mapēs:\n" -#: ../src/inkscape.cpp:725 +#: ../src/inkscape.cpp:746 msgid "Automatic backup of the following documents failed:\n" msgstr "Sekojošu dokumentu automātiskā rezerves kopēšana neizdevās:\n" -#: ../src/interface.cpp:865 +#: ../src/interface.cpp:774 msgctxt "Interface setup" msgid "Default" msgstr "Noklusētie" -#: ../src/interface.cpp:865 +#: ../src/interface.cpp:774 msgid "Default interface setup" msgstr "Noklusētie saskarnes iestatījumi" -#: ../src/interface.cpp:866 +#: ../src/interface.cpp:775 msgctxt "Interface setup" msgid "Custom" msgstr "Izvēles" -#: ../src/interface.cpp:866 +#: ../src/interface.cpp:775 msgid "Setup for custom task" msgstr "Papildu uzdevuma veidošana" -#: ../src/interface.cpp:867 +#: ../src/interface.cpp:776 msgctxt "Interface setup" msgid "Wide" msgstr "Plats" -#: ../src/interface.cpp:867 +#: ../src/interface.cpp:776 msgid "Setup for widescreen work" msgstr "Iestatījumi platekrāna darbam" -#: ../src/interface.cpp:979 +#: ../src/interface.cpp:888 #, c-format msgid "Verb \"%s\" Unknown" msgstr "Darbības vārds \"%s\" nav zināms" -#: ../src/interface.cpp:1021 +#: ../src/interface.cpp:927 msgid "Open _Recent" msgstr "Atvērt nesenos" -#: ../src/interface.cpp:1129 -#: ../src/interface.cpp:1215 -#: ../src/interface.cpp:1318 -#: ../src/ui/widget/selected-style.cpp:523 +#: ../src/interface.cpp:1035 +#: ../src/interface.cpp:1121 +#: ../src/interface.cpp:1224 +#: ../src/ui/widget/selected-style.cpp:528 msgid "Drop color" msgstr "Pārnest krāsu" -#: ../src/interface.cpp:1168 -#: ../src/interface.cpp:1278 +#: ../src/interface.cpp:1074 +#: ../src/interface.cpp:1184 msgid "Drop color on gradient" msgstr "Pārnest krāsu uz krāsu pāreju" -#: ../src/interface.cpp:1331 +#: ../src/interface.cpp:1237 msgid "Could not parse SVG data" msgstr "Nav iespējams izanalizēt SVG datus" -#: ../src/interface.cpp:1370 +#: ../src/interface.cpp:1276 msgid "Drop SVG" msgstr "Pārnest SVG" -#: ../src/interface.cpp:1383 +#: ../src/interface.cpp:1289 msgid "Drop Symbol" msgstr "Nomest simbolu" -#: ../src/interface.cpp:1414 +#: ../src/interface.cpp:1320 msgid "Drop bitmap image" msgstr "Pārnest bitkartes attēlu" -#: ../src/interface.cpp:1506 +#: ../src/interface.cpp:1412 #, c-format msgid "" "<span weight=\"bold\" size=\"larger\">A file named \"%s\" already exists. Do you want to replace it?</span>\n" @@ -9084,169 +8893,169 @@ msgstr "" "\n" "Fails šobrīd atrodas \"%s\". Aizvietojot iepriekšējais saturs tiks pārrakstīts." -#: ../src/interface.cpp:1513 +#: ../src/interface.cpp:1419 #: ../share/extensions/web-set-att.inx.h:21 #: ../share/extensions/web-transmit-att.inx.h:19 msgid "Replace" msgstr "Aizvietot" -#: ../src/interface.cpp:1584 +#: ../src/interface.cpp:1490 msgid "Go to parent" msgstr "Pāriet pie vecāka" #. TRANSLATORS: #%1 is the id of the group e.g. <g id="#g7">, not a number. -#: ../src/interface.cpp:1625 +#: ../src/interface.cpp:1531 msgid "Enter group #%1" msgstr "Ievadiet (ieejiet) grupu(ā) #%1" #. Item dialog -#: ../src/interface.cpp:1737 -#: ../src/verbs.cpp:2789 +#: ../src/interface.cpp:1643 +#: ../src/verbs.cpp:2842 msgid "_Object Properties..." msgstr "_Objekta īpašības..." -#: ../src/interface.cpp:1746 +#: ../src/interface.cpp:1652 msgid "_Select This" msgstr "Atla_sīt šo" -#: ../src/interface.cpp:1757 +#: ../src/interface.cpp:1663 msgid "Select Same" msgstr "Atlasīt vienādos" #. Select same fill and stroke -#: ../src/interface.cpp:1767 +#: ../src/interface.cpp:1673 msgid "Fill and Stroke" msgstr "Aizpildījums un apmale" #. Select same fill color -#: ../src/interface.cpp:1774 +#: ../src/interface.cpp:1680 msgid "Fill Color" msgstr "Aizpildījuma krāsa" #. Select same stroke color -#: ../src/interface.cpp:1781 +#: ../src/interface.cpp:1687 msgid "Stroke Color" msgstr "Apmales krāsa" #. Select same stroke style -#: ../src/interface.cpp:1788 +#: ../src/interface.cpp:1694 msgid "Stroke Style" msgstr "Apmales stils" #. Select same stroke style -#: ../src/interface.cpp:1795 +#: ../src/interface.cpp:1701 msgid "Object type" msgstr "Objekta tips" #. Move to layer -#: ../src/interface.cpp:1802 +#: ../src/interface.cpp:1708 msgid "_Move to layer ..." msgstr "Pārvietot uz slāni..." #. Create link -#: ../src/interface.cpp:1812 +#: ../src/interface.cpp:1718 msgid "Create _Link" msgstr "Izveidot _saiti" #. Set mask -#: ../src/interface.cpp:1835 +#: ../src/interface.cpp:1741 msgid "Set Mask" msgstr "Iestatīt masku" #. Release mask -#: ../src/interface.cpp:1846 +#: ../src/interface.cpp:1752 msgid "Release Mask" msgstr "Atbrīvot masku" #. Set Clip -#: ../src/interface.cpp:1857 +#: ../src/interface.cpp:1763 msgid "Set Cl_ip" msgstr "Pielietot apgriešanas kontūru" #. Release Clip -#: ../src/interface.cpp:1868 +#: ../src/interface.cpp:1774 msgid "Release C_lip" msgstr "Atbrīvot apgriešanas kontūru" #. Group -#: ../src/interface.cpp:1879 -#: ../src/verbs.cpp:2428 +#: ../src/interface.cpp:1785 +#: ../src/verbs.cpp:2483 msgid "_Group" msgstr "_Grupēt" -#: ../src/interface.cpp:1950 +#: ../src/interface.cpp:1856 msgid "Create link" msgstr "Izveidot saiti" #. Ungroup -#: ../src/interface.cpp:1981 -#: ../src/verbs.cpp:2430 +#: ../src/interface.cpp:1887 +#: ../src/verbs.cpp:2485 msgid "_Ungroup" msgstr "_Atgrupēt" #. Link dialog -#: ../src/interface.cpp:2006 +#: ../src/interface.cpp:1912 msgid "Link _Properties..." msgstr "Saites ī_pašības..." #. Select item -#: ../src/interface.cpp:2012 +#: ../src/interface.cpp:1918 msgid "_Follow Link" msgstr "Se_kot saitei" #. Reset transformations -#: ../src/interface.cpp:2018 +#: ../src/interface.cpp:1924 msgid "_Remove Link" msgstr "_Aizvākt saiti" -#: ../src/interface.cpp:2049 +#: ../src/interface.cpp:1955 msgid "Remove link" msgstr "Aizvākt saiti" #. Image properties -#: ../src/interface.cpp:2060 +#: ../src/interface.cpp:1966 msgid "Image _Properties..." msgstr "Attēla ī_pašības..." #. Edit externally -#: ../src/interface.cpp:2066 +#: ../src/interface.cpp:1972 msgid "Edit Externally..." msgstr "Labot ārējā redaktorā..." #. Trace Bitmap #. TRANSLATORS: "to trace" means "to convert a bitmap to vector graphics" (to vectorize) -#: ../src/interface.cpp:2075 -#: ../src/verbs.cpp:2491 +#: ../src/interface.cpp:1981 +#: ../src/verbs.cpp:2546 msgid "_Trace Bitmap..." msgstr "Vek_torizēt bitkarti..." -#: ../src/interface.cpp:2085 +#: ../src/interface.cpp:1991 msgctxt "Context menu" msgid "Embed Image" msgstr "Iegult attēlu" -#: ../src/interface.cpp:2096 +#: ../src/interface.cpp:2002 msgctxt "Context menu" msgid "Extract Image..." msgstr "Ekstraģēt attēlu..." #. Item dialog #. Fill and Stroke dialog -#: ../src/interface.cpp:2235 -#: ../src/interface.cpp:2255 -#: ../src/verbs.cpp:2752 +#: ../src/interface.cpp:2141 +#: ../src/interface.cpp:2161 +#: ../src/verbs.cpp:2807 msgid "_Fill and Stroke..." msgstr "_Aizpildījums un apmale..." #. Edit Text dialog -#: ../src/interface.cpp:2261 -#: ../src/verbs.cpp:2769 +#: ../src/interface.cpp:2167 +#: ../src/verbs.cpp:2824 msgid "_Text and Font..." msgstr "_Teksts un fonts" #. Spellcheck dialog -#: ../src/interface.cpp:2267 -#: ../src/verbs.cpp:2777 +#: ../src/interface.cpp:2173 +#: ../src/verbs.cpp:2832 msgid "Check Spellin_g..." msgstr "Pārbaudīt pareizrakstību" @@ -9310,7 +9119,8 @@ msgstr "Dokojamais elements, kam 'pieder' šis turis" #. Name #: ../src/libgdl/gdl-dock-item.c:298 -#: ../src/widgets/text-toolbar.cpp:1430 +#: ../src/widgets/ruler.cpp:191 +#: ../src/widgets/text-toolbar.cpp:1421 #: ../share/extensions/gcodetools_graffiti.inx.h:9 #: ../share/extensions/gcodetools_orientation_points.inx.h:2 msgid "Orientation" @@ -9411,12 +9221,12 @@ msgid "If is set to 1, all the dock items bound to the master are locked; if it' msgstr "Ja iestatīts 1, visi galvenajam piesaistītie dokojamie elementi ir slēgti, ja 0 - visi ar atslēgti, -1 norāda uz neviendabību elementu starpā" #: ../src/libgdl/gdl-dock-master.c:157 -#: ../src/libgdl/gdl-switcher.c:732 +#: ../src/libgdl/gdl-switcher.c:737 msgid "Switcher Style" msgstr "Pārslēdzēja stils" #: ../src/libgdl/gdl-dock-master.c:158 -#: ../src/libgdl/gdl-switcher.c:733 +#: ../src/libgdl/gdl-switcher.c:738 msgid "Switcher buttons style" msgstr "Pārslēdzēja pogu stils" @@ -9431,10 +9241,10 @@ msgid "The new dock controller %p is automatic. Only manual dock objects should msgstr "Jaunā doka vadīkla %p ir automātiska. Tikai ar roku dokojami objekti būtu saucami par vadīklām." #: ../src/libgdl/gdl-dock-notebook.c:132 -#: ../src/ui/dialog/align-and-distribute.cpp:1047 -#: ../src/ui/dialog/document-properties.cpp:146 +#: ../src/ui/dialog/align-and-distribute.cpp:996 +#: ../src/ui/dialog/document-properties.cpp:145 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1551 -#: ../src/widgets/desktop-widget.cpp:1996 +#: ../src/widgets/desktop-widget.cpp:2000 #: ../share/extensions/voronoi2svg.inx.h:9 msgid "Page" msgstr "Lapa" @@ -9444,9 +9254,9 @@ msgid "The index of the current page" msgstr "Pašreizējās lapas indekss" #: ../src/libgdl/gdl-dock-object.c:125 -#: ../src/ui/dialog/inkscape-preferences.cpp:1482 -#: ../src/ui/widget/page-sizer.cpp:260 -#: ../src/widgets/gradient-selector.cpp:156 +#: ../src/ui/dialog/inkscape-preferences.cpp:1486 +#: ../src/ui/widget/page-sizer.cpp:258 +#: ../src/widgets/gradient-selector.cpp:157 #: ../src/widgets/sp-xmlview-attr-list.cpp:54 msgid "Name" msgstr "Nosaukums" @@ -9508,6 +9318,7 @@ msgid "Attempt to bind to %p an already bound dock object %p (current master: %p msgstr "Mēģināts pie %p piesaistīt jau piesaistītu dokojamo objektu %p (pašreizējais galvenais doks: %p)" #: ../src/libgdl/gdl-dock-paned.c:130 +#: ../src/widgets/ruler.cpp:229 msgid "Position" msgstr "Pozīcija" @@ -9771,7 +9582,7 @@ msgid "Power stroke" msgstr "Tekstūras apmale" #: ../src/live_effects/effect.cpp:124 -#: ../src/selection-chemistry.cpp:2792 +#: ../src/selection-chemistry.cpp:2778 msgid "Clone original path" msgstr "Klonēt sākotnējo ceļu" @@ -10194,7 +10005,7 @@ msgid "Beveled" msgstr "Nošķelts" #: ../src/live_effects/lpe-powerstroke.cpp:221 -#: ../src/widgets/star-toolbar.cpp:546 +#: ../src/widgets/star-toolbar.cpp:542 msgid "Rounded" msgstr "Noapaļots" @@ -10207,7 +10018,7 @@ msgid "Miter" msgstr "Salaidums" #: ../src/live_effects/lpe-powerstroke.cpp:224 -#: ../src/widgets/pencil-toolbar.cpp:137 +#: ../src/widgets/pencil-toolbar.cpp:132 msgid "Spiro" msgstr "Spirāle" @@ -10256,7 +10067,7 @@ msgstr "Nosaka ceļa sākuma formu" #. TRANSLATORS: The line join style specifies the shape to be used at the #. corners of paths. It can be "miter", "round" or "bevel". #: ../src/live_effects/lpe-powerstroke.cpp:238 -#: ../src/widgets/stroke-style.cpp:220 +#: ../src/widgets/stroke-style.cpp:223 msgid "Join:" msgstr "Savienojums:" @@ -10269,7 +10080,7 @@ msgid "Miter limit:" msgstr "Salaiduma ierobežojums" #: ../src/live_effects/lpe-powerstroke.cpp:239 -#: ../src/widgets/stroke-style.cpp:271 +#: ../src/widgets/stroke-style.cpp:274 msgid "Maximum length of the miter (in units of stroke width)" msgstr "Slaiduma maksimālais garums (apmales vienībās)" @@ -10442,12 +10253,14 @@ msgstr "Relatīvais novietojums pret atskaites punktu nosaka globālo liekuma vi #: ../src/live_effects/lpe-ruler.cpp:25 #: ../share/extensions/restack.inx.h:12 #: ../share/extensions/text_extract.inx.h:8 +#: ../share/extensions/text_merge.inx.h:8 msgid "Left" msgstr "Pa kreisi" #: ../src/live_effects/lpe-ruler.cpp:26 #: ../share/extensions/restack.inx.h:14 #: ../share/extensions/text_extract.inx.h:10 +#: ../share/extensions/text_merge.inx.h:10 msgid "Right" msgstr "Pa labi" @@ -10457,12 +10270,12 @@ msgid "Both" msgstr "Abi" #: ../src/live_effects/lpe-ruler.cpp:33 -#: ../src/widgets/arc-toolbar.cpp:341 +#: ../src/widgets/arc-toolbar.cpp:337 msgid "Start" msgstr "Sākt" #: ../src/live_effects/lpe-ruler.cpp:34 -#: ../src/widgets/arc-toolbar.cpp:354 +#: ../src/widgets/arc-toolbar.cpp:350 msgid "End" msgstr "End" @@ -10482,6 +10295,11 @@ msgstr "Attālums starp blakus esošām mērjoslas aizzīmēm" msgid "Unit:" msgstr "Vienība:" +#: ../src/live_effects/lpe-ruler.cpp:42 +#: ../src/widgets/ruler.cpp:201 +msgid "Unit" +msgstr "Vienība" + #: ../src/live_effects/lpe-ruler.cpp:43 msgid "Ma_jor length:" msgstr "Gal_venais garums:" @@ -10621,7 +10439,7 @@ msgid "How many construction lines (tangents) to draw" msgstr "Cik daudz palīglīniju (tangenšu) zīmēt" #: ../src/live_effects/lpe-sketch.cpp:58 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2654 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2667 #: ../share/extensions/render_alphabetsoup.inx.h:3 msgid "Scale:" msgstr "Izmērs:" @@ -10781,7 +10599,7 @@ msgstr "Mainīt dažādības parametru" msgid "Change text parameter" msgstr "Mainīt teksta poarametru" -#: ../src/live_effects/parameter/unit.cpp:78 +#: ../src/live_effects/parameter/unit.cpp:80 msgid "Change unit parameter" msgstr "Mainīt vienības parametru" @@ -10789,7 +10607,7 @@ msgstr "Mainīt vienības parametru" msgid "Change vector parameter" msgstr "Mainīt vektora parametru" -#: ../src/main-cmdlineact.cpp:49 +#: ../src/main-cmdlineact.cpp:50 #, c-format msgid "Unable to find verb ID '%s' specified on the command line.\n" msgstr "Nav iespējams atrast komandrindā norādīto darbības vārdu ar ID '%s'.\n" @@ -10799,239 +10617,251 @@ msgstr "Nav iespējams atrast komandrindā norādīto darbības vārdu ar ID '%s msgid "Unable to find node ID: '%s'\n" msgstr "Nevar atrast mezgla ID: '%s'\n" -#: ../src/main.cpp:280 +#: ../src/main.cpp:298 msgid "Print the Inkscape version number" msgstr "Izdrukāt Inkscape versijas numuru" -#: ../src/main.cpp:285 +#: ../src/main.cpp:303 msgid "Do not use X server (only process files from console)" msgstr "Neizmantot X serveri (apstrādāt failus tikai no komandrindas)" -#: ../src/main.cpp:290 +#: ../src/main.cpp:308 msgid "Try to use X server (even if $DISPLAY is not set)" msgstr "Mēģiniet izmantot X serveri (pat ja $DISPLAY nav iestatīts)" -#: ../src/main.cpp:295 +#: ../src/main.cpp:313 msgid "Open specified document(s) (option string may be excluded)" msgstr "Atvērt norādīto(s) dokumentu(s) (atslēgu virkne var tikt ignorēta)" -#: ../src/main.cpp:296 -#: ../src/main.cpp:301 -#: ../src/main.cpp:306 -#: ../src/main.cpp:378 -#: ../src/main.cpp:383 -#: ../src/main.cpp:388 -#: ../src/main.cpp:399 -#: ../src/main.cpp:416 +#: ../src/main.cpp:314 +#: ../src/main.cpp:319 +#: ../src/main.cpp:324 +#: ../src/main.cpp:396 +#: ../src/main.cpp:401 +#: ../src/main.cpp:406 +#: ../src/main.cpp:417 +#: ../src/main.cpp:434 msgid "FILENAME" msgstr "FAILA NOSAUKUMS" -#: ../src/main.cpp:300 +#: ../src/main.cpp:318 msgid "Print document(s) to specified output file (use '| program' for pipe)" msgstr "Drukāt dokumentu(s) uz norādīto izvades failu (izmantojiet ' | programma' konveijerapstrādei) " -#: ../src/main.cpp:305 +#: ../src/main.cpp:323 msgid "Export document to a PNG file" msgstr "Eksportēt dokumentu PNG failā" -#: ../src/main.cpp:310 +#: ../src/main.cpp:328 msgid "Resolution for exporting to bitmap and for rasterization of filters in PS/EPS/PDF (default 90)" msgstr "Izšķirtspēja bitkaršu eksportam un filtru rastrēšanai PS/EPS/PDF (noklusētais - 90)" -#: ../src/main.cpp:311 +#: ../src/main.cpp:329 #: ../src/ui/widget/rendering-options.cpp:34 msgid "DPI" msgstr "DPI" -#: ../src/main.cpp:315 +#: ../src/main.cpp:333 msgid "Exported area in SVG user units (default is the page; 0,0 is lower-left corner)" msgstr "Eksportējamais laukums SVG izmantotajās vienībās (noklusētais - lapa, 0,0 apzīmē apakšējo kreiso stūri)" -#: ../src/main.cpp:316 +#: ../src/main.cpp:334 msgid "x0:y0:x1:y1" msgstr "x0:y0:x1:y1" -#: ../src/main.cpp:320 +#: ../src/main.cpp:338 msgid "Exported area is the entire drawing (not page)" msgstr "Eksportētais apgabals ir viss zīmējums (nevis lapa)" -#: ../src/main.cpp:325 +#: ../src/main.cpp:343 msgid "Exported area is the entire page" msgstr "Eksportētais apgabals ir visa lapa" -#: ../src/main.cpp:330 +#: ../src/main.cpp:348 msgid "Only for PS/EPS/PDF, sets margin in mm around exported area (default 0)" msgstr "Tikai PS/EPS/PDF, iestata apmali ap eksportēto laukumu, mm (noklusētais - 0)" -#: ../src/main.cpp:331 -#: ../src/main.cpp:373 +#: ../src/main.cpp:349 +#: ../src/main.cpp:391 msgid "VALUE" msgstr "VĒRTĪBA" -#: ../src/main.cpp:335 +#: ../src/main.cpp:353 msgid "Snap the bitmap export area outwards to the nearest integer values (in SVG user units)" msgstr "Piesaistīt bitkartes eksportējamo apgabalu tuvākajai veselajai vērtībai (SVG lietotāja vienībās)" -#: ../src/main.cpp:340 +#: ../src/main.cpp:358 msgid "The width of exported bitmap in pixels (overrides export-dpi)" msgstr "Eksportētās bitkartes platums pikseļos (neievēro export-dpi)" -#: ../src/main.cpp:341 +#: ../src/main.cpp:359 msgid "WIDTH" msgstr "PLATUMS" -#: ../src/main.cpp:345 +#: ../src/main.cpp:363 msgid "The height of exported bitmap in pixels (overrides export-dpi)" msgstr "Eksportētās bitkartes augstums pikseļos (neievēro export-dpi)" -#: ../src/main.cpp:346 +#: ../src/main.cpp:364 msgid "HEIGHT" msgstr "AUGSTUMS" -#: ../src/main.cpp:350 +#: ../src/main.cpp:368 msgid "The ID of the object to export" msgstr "Eksportējamā objekta ID" -#: ../src/main.cpp:351 -#: ../src/main.cpp:461 -#: ../src/ui/dialog/inkscape-preferences.cpp:1485 +#: ../src/main.cpp:369 +#: ../src/main.cpp:479 +#: ../src/ui/dialog/inkscape-preferences.cpp:1489 msgid "ID" msgstr "ID" #. TRANSLATORS: this means: "Only export the object whose id is given in --export-id". #. See "man inkscape" for details. -#: ../src/main.cpp:357 +#: ../src/main.cpp:375 msgid "Export just the object with export-id, hide all others (only with export-id)" msgstr "Eksportēt tikai objektus ar uzstādītu export-id, slēpt visus pārējos" -#: ../src/main.cpp:362 +#: ../src/main.cpp:380 msgid "Use stored filename and DPI hints when exporting (only with export-id)" msgstr "Eksportējot izmantot saglabāto faila nosaukumu un DPI norādes (tikai ar export-id)" -#: ../src/main.cpp:367 +#: ../src/main.cpp:385 msgid "Background color of exported bitmap (any SVG-supported color string)" msgstr "Eksportētās bitkartes fona krāsa (jebkura SVG atbalstīta krāsu virkne)" -#: ../src/main.cpp:368 +#: ../src/main.cpp:386 msgid "COLOR" msgstr "Krāsa" -#: ../src/main.cpp:372 +#: ../src/main.cpp:390 msgid "Background opacity of exported bitmap (either 0.0 to 1.0, or 1 to 255)" msgstr "Eksportētās bitkartes fona necaurspīdība (vai nu no 0.0 līdz 1.0 vai 1 līdz 255)" -#: ../src/main.cpp:377 +#: ../src/main.cpp:395 msgid "Export document to plain SVG file (no sodipodi or inkscape namespaces)" msgstr "Eksportēt dokumentu kā vienkāršu SVG failu (bez sodipodi vai inkscape vārdu laukiem)" -#: ../src/main.cpp:382 +#: ../src/main.cpp:400 msgid "Export document to a PS file" msgstr "Eksportēt dokumentu PS failā" -#: ../src/main.cpp:387 +#: ../src/main.cpp:405 msgid "Export document to an EPS file" msgstr "Eksportēt dokumentu EPS failā" -#: ../src/main.cpp:392 +#: ../src/main.cpp:410 msgid "Choose the PostScript Level used to export. Possible choices are 2 (the default) and 3" msgstr "Izvēlieties Postscript līmeni, ko izmantot eksportam. Iespējas ir divas - 2 (noklusētais) un 3." -#: ../src/main.cpp:394 +#: ../src/main.cpp:412 msgid "PS Level" msgstr "PS Līmenis" -#: ../src/main.cpp:398 +#: ../src/main.cpp:416 msgid "Export document to a PDF file" msgstr "Eksportēt dokumentu PDF failā" #. TRANSLATORS: "--export-pdf-version" is an Inkscape command line option; see "inkscape --help" -#: ../src/main.cpp:404 +#: ../src/main.cpp:422 msgid "Export PDF to given version. (hint: make sure to input the exact string found in the PDF export dialog, e.g. \"PDF 1.4\" which is PDF-a conformant)" msgstr "Eksportēt norādītās versijas PDF. (padoms: pārliecinieties, ka esat ievadījuši precīzu virkni, kāda ir redzama PDF eksporta dialoglodziņā. piemēram: \"PDF 1.4\", kas ir atbilstošs PDF-a)" -#: ../src/main.cpp:405 +#: ../src/main.cpp:423 msgid "PDF_VERSION" msgstr "PDF_VERSION" -#: ../src/main.cpp:409 +#: ../src/main.cpp:427 msgid "Export PDF/PS/EPS without text. Besides the PDF/PS/EPS, a LaTeX file is exported, putting the text on top of the PDF/PS/EPS file. Include the result in LaTeX like: \\input{latexfile.tex}" msgstr "Eksportēt PDF/PS/EPS bez teksta. Papildu PDF/PS/EPS failam, tiek eksportēts LaTeX fails, kas novieto tekstu virs PDF/PS/EPS faila. Iekļaut rezultātu LaTeX failā sekojošā formā: \\input{latexfile.tex}" -#: ../src/main.cpp:415 +#: ../src/main.cpp:433 msgid "Export document to an Enhanced Metafile (EMF) File" msgstr "Eksportēt dokumentu Paplašinātā metafaila formātā (Enhanced Metafile, EMF)" -#: ../src/main.cpp:421 +#: ../src/main.cpp:439 msgid "Convert text object to paths on export (PS, EPS, PDF, SVG)" msgstr "Eksportējot pārvērst teksta objektus par ceļiem (PS, EPS, PDF, SVG)" -#: ../src/main.cpp:426 +#: ../src/main.cpp:444 msgid "Render filtered objects without filters, instead of rasterizing (PS, EPS, PDF)" msgstr "Rastrēšanas vietā renderēt filtrētos objektus bez filtriem (PS, EPS, PDF)" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" -#: ../src/main.cpp:432 +#: ../src/main.cpp:450 msgid "Query the X coordinate of the drawing or, if specified, of the object with --query-id" msgstr "Pārbaudīt attēla, vai , ja norādīts, objekta, X koordināti ar --query-id" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" -#: ../src/main.cpp:438 +#: ../src/main.cpp:456 msgid "Query the Y coordinate of the drawing or, if specified, of the object with --query-id" msgstr "Pārbaudīt attēla, vai , ja norādīts, objekta, Y koordināti ar --query-id" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" -#: ../src/main.cpp:444 +#: ../src/main.cpp:462 msgid "Query the width of the drawing or, if specified, of the object with --query-id" msgstr "Pārbaudīt attēla, vai , ja norādīts, objekta, platumu ar --query-id" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" -#: ../src/main.cpp:450 +#: ../src/main.cpp:468 msgid "Query the height of the drawing or, if specified, of the object with --query-id" msgstr "Pārbaudīt attēla, vai , ja norādīts, objekta, augstumu ar --query-id" -#: ../src/main.cpp:455 +#: ../src/main.cpp:473 msgid "List id,x,y,w,h for all objects" msgstr "Rādīt id,x,y,w,h visiem objektiem" -#: ../src/main.cpp:460 +#: ../src/main.cpp:478 msgid "The ID of the object whose dimensions are queried" msgstr "ID objektam, kura izmēri tiek noskaidroti" #. TRANSLATORS: this option makes Inkscape print the name (path) of the extension directory -#: ../src/main.cpp:466 +#: ../src/main.cpp:484 msgid "Print out the extension directory and exit" msgstr "Izdrukāt paplašinājumu mapes saturu un iziet" -#: ../src/main.cpp:471 +#: ../src/main.cpp:489 msgid "Remove unused definitions from the defs section(s) of the document" msgstr "Aizvākt neizmantotās definīcijas no dokumenta definīciju sadaļas (-ām)" -#: ../src/main.cpp:476 +#: ../src/main.cpp:495 +msgid "Enter a listening loop for D-Bus messages in console mode" +msgstr "Norādiet D-Bus paziņojumu klausīšanās cilpu konsoles režīmam" + +#: ../src/main.cpp:500 +msgid "Specify the D-Bus bus name to listen for messages on (default is org.inkscape)" +msgstr "Norādiet D-Bus kopnes nosaukumu, kuru jāklausās paziņojumu saņemšanai (noklusētā - org.inkscape)" + +#: ../src/main.cpp:501 +msgid "BUS-NAME" +msgstr "KOPNES NOSAUKUMS" + +#: ../src/main.cpp:506 msgid "List the IDs of all the verbs in Inkscape" msgstr "Parādīt visu Inkscape darbības vārdu ID sarakstu" -#: ../src/main.cpp:481 +#: ../src/main.cpp:511 msgid "Verb to call when Inkscape opens." msgstr "Inkscape atveroties izsaucamais darbības vārds." -#: ../src/main.cpp:482 +#: ../src/main.cpp:512 msgid "VERB-ID" msgstr "DARBV-ID" -#: ../src/main.cpp:486 +#: ../src/main.cpp:516 msgid "Object ID to select when Inkscape opens." msgstr "Inkscape atveroties atlasāmā objekta ID." -#: ../src/main.cpp:487 +#: ../src/main.cpp:517 msgid "OBJECT-ID" msgstr "OBJEKTA ID" -#: ../src/main.cpp:491 +#: ../src/main.cpp:521 msgid "Start Inkscape in interactive shell mode." msgstr "Palaist Inkscape interaktīvās čaulas režīmā" -#: ../src/main.cpp:835 -#: ../src/main.cpp:1192 +#: ../src/main.cpp:868 +#: ../src/main.cpp:1256 msgid "" "[OPTIONS...] [FILE...]\n" "\n" @@ -11054,13 +10884,13 @@ msgstr "Jau_ns" #. " <verb verb-id=\"FileExportToOCAL\" />\n" #. " <verb verb-id=\"DialogMetadata\" />\n" #: ../src/menus-skeleton.h:43 -#: ../src/verbs.cpp:2574 -#: ../src/verbs.cpp:2580 +#: ../src/verbs.cpp:2629 +#: ../src/verbs.cpp:2635 msgid "_Edit" msgstr "Labot" #: ../src/menus-skeleton.h:53 -#: ../src/verbs.cpp:2340 +#: ../src/verbs.cpp:2395 msgid "Paste Si_ze" msgstr "Ielīmēt i_wzmēru" @@ -11098,46 +10928,45 @@ msgstr "_Krāsu ekrāna režīms" msgid "Sh_ow/Hide" msgstr "Rādīt/slēpt" -#. " <verb verb-id=\"DialogScript\" />\n" #. Not quite ready to be in the menus. #. " <verb verb-id=\"FocusToggle\" />\n" -#: ../src/menus-skeleton.h:158 +#: ../src/menus-skeleton.h:157 msgid "_Layer" msgstr "Slānis" -#: ../src/menus-skeleton.h:182 +#: ../src/menus-skeleton.h:181 msgid "_Object" msgstr "Objekts" -#: ../src/menus-skeleton.h:190 +#: ../src/menus-skeleton.h:189 msgid "Cli_p" msgstr "Ap_griezt" -#: ../src/menus-skeleton.h:194 +#: ../src/menus-skeleton.h:193 msgid "Mas_k" msgstr "Mas_ka" -#: ../src/menus-skeleton.h:198 +#: ../src/menus-skeleton.h:197 msgid "Patter_n" msgstr "Faktū_ra" -#: ../src/menus-skeleton.h:222 +#: ../src/menus-skeleton.h:221 msgid "_Path" msgstr "_Ceļš" -#: ../src/menus-skeleton.h:267 +#: ../src/menus-skeleton.h:266 msgid "Filter_s" msgstr " Filtri" -#: ../src/menus-skeleton.h:273 +#: ../src/menus-skeleton.h:272 msgid "Exte_nsions" msgstr "Paplaši_nājumi" -#: ../src/menus-skeleton.h:279 +#: ../src/menus-skeleton.h:278 msgid "_Help" msgstr "_Palīgs" -#: ../src/menus-skeleton.h:283 +#: ../src/menus-skeleton.h:282 msgid "Tutorials" msgstr "Pamācības" @@ -11307,92 +11136,92 @@ msgstr "Sašķelt" msgid "<b>No path(s)</b> to break apart in the selection." msgstr "Atlasītajā nav sašķeļama(-u) <b>ceļa(-u)</b>." -#: ../src/path-chemistry.cpp:303 +#: ../src/path-chemistry.cpp:301 msgid "Select <b>object(s)</b> to convert to path." msgstr "Atlasiet par ceļu pārvēršamu(s) <b>objektu(s)</b>." -#: ../src/path-chemistry.cpp:309 +#: ../src/path-chemistry.cpp:307 msgid "Converting objects to paths..." msgstr "Pārvērš objektus par ceļiem..." -#: ../src/path-chemistry.cpp:331 +#: ../src/path-chemistry.cpp:329 msgid "Object to path" msgstr "Objekts par ceļu" -#: ../src/path-chemistry.cpp:333 +#: ../src/path-chemistry.cpp:331 msgid "<b>No objects</b> to convert to path in the selection." msgstr "Atlasītajā <b>nav</b> par ceļu pārvēršamu <b>objektu</b>." -#: ../src/path-chemistry.cpp:610 +#: ../src/path-chemistry.cpp:608 msgid "Select <b>path(s)</b> to reverse." msgstr "Atlasiet otrādi apgriežamo(s) <b>ceļu(s)</b>." -#: ../src/path-chemistry.cpp:619 +#: ../src/path-chemistry.cpp:617 msgid "Reversing paths..." msgstr "Apgriež ceļu otrādi..." -#: ../src/path-chemistry.cpp:654 +#: ../src/path-chemistry.cpp:652 msgid "Reverse path" msgstr "Apgriezt ceļu otrādi" -#: ../src/path-chemistry.cpp:656 +#: ../src/path-chemistry.cpp:654 msgid "<b>No paths</b> to reverse in the selection." msgstr "Atlasītajā nav otrādi apgriežamu <b>ceļu</b>." -#: ../src/pen-context.cpp:222 +#: ../src/pen-context.cpp:220 #: ../src/pencil-context.cpp:534 msgid "Drawing cancelled" msgstr "Zīmēšana atcelta" -#: ../src/pen-context.cpp:460 +#: ../src/pen-context.cpp:458 #: ../src/pencil-context.cpp:259 msgid "Continuing selected path" msgstr "Turpina atlasīto ceļu" -#: ../src/pen-context.cpp:470 +#: ../src/pen-context.cpp:468 #: ../src/pencil-context.cpp:267 msgid "Creating new path" msgstr "Veido jaunu ceļu" -#: ../src/pen-context.cpp:472 +#: ../src/pen-context.cpp:470 #: ../src/pencil-context.cpp:270 msgid "Appending to selected path" msgstr "Pievieno atlasītajam ceļam" -#: ../src/pen-context.cpp:632 +#: ../src/pen-context.cpp:630 msgid "<b>Click</b> or <b>click and drag</b> to close and finish the path." msgstr "<b>Uzklikšķiniet</b> vai <b>uzklikšķiniet un velciet</b>, lai noslēgtu un pabeigtu ceļu." -#: ../src/pen-context.cpp:642 +#: ../src/pen-context.cpp:640 msgid "<b>Click</b> or <b>click and drag</b> to continue the path from this point." msgstr "<b>Uzklikšķiniet</b> vai <b>uzklikšķiniet un velciet</b>, lai turpinātu ceļu no šī punkta." -#: ../src/pen-context.cpp:1237 +#: ../src/pen-context.cpp:1240 #, c-format msgid "<b>Curve segment</b>: angle %3.2f°, distance %s; with <b>Ctrl</b> to snap angle, <b>Enter</b> to finish the path" msgstr "<b>Līknes posms</b>: leņķis %3.2f°, attālums %s; ar <b>Ctrl</b>-piesaistīt leņķim, <b>Enter</b> - pabeigt ceļu" -#: ../src/pen-context.cpp:1238 +#: ../src/pen-context.cpp:1241 #, c-format msgid "<b>Line segment</b>: angle %3.2f°, distance %s; with <b>Ctrl</b> to snap angle, <b>Enter</b> to finish the path" msgstr "<b>Līnijas posms</b>: leņķis %3.2f°, attālums %s; ar <b>Ctrl</b> - piesaistīt leņķim, <b>Enter</b> - pabeigt ceļu" -#: ../src/pen-context.cpp:1255 +#: ../src/pen-context.cpp:1258 #, c-format msgid "<b>Curve handle</b>: angle %3.2f°, length %s; with <b>Ctrl</b> to snap angle" msgstr "<b>Līknes turis</b>: leņķis %3.2f°, garums %s; ar <b>Ctrl</b> - piesaistīt leņķim" -#: ../src/pen-context.cpp:1277 +#: ../src/pen-context.cpp:1280 #, c-format msgid "<b>Curve handle, symmetric</b>: angle %3.2f°, length %s; with <b>Ctrl</b> to snap angle, with <b>Shift</b> to move this handle only" msgstr "<b>Līknes turis, simetrisks</b>: leņķis %3.2f°, garums %s; ar <b>Ctrl</b> - piesaistīt leņķim, ar <b>Shift</b> - pārvietot tikai šo turi" -#: ../src/pen-context.cpp:1278 +#: ../src/pen-context.cpp:1281 #, c-format msgid "<b>Curve handle</b>: angle %3.2f°, length %s; with <b>Ctrl</b> to snap angle, with <b>Shift</b> to move this handle only" msgstr "<b>Līknes turis</b>: leņķis %3.2f°, garums %s; ar <b>Ctrl</b> - piesaistīt leņķim, ar <b>Shift</b> - pārvietot tikai šo turi" -#: ../src/pen-context.cpp:1324 +#: ../src/pen-context.cpp:1327 msgid "Drawing finished" msgstr "Zīmēšana pabeigta." @@ -11453,14 +11282,14 @@ msgstr "Pleķains" msgid "Tracing" msgstr "Vektorizēšana" -#: ../src/preferences.cpp:132 +#: ../src/preferences.cpp:134 msgid "Inkscape will run with default settings, and new settings will not be saved. " msgstr "Inkscape darbosies ar noklusētajiem iestatījumiem, jauni iestatījumi netiks saglabāti." #. the creation failed #. _reportError(Glib::ustring::compose(_("Cannot create profile directory %1."), #. Glib::filename_to_utf8(_prefs_dir)), not_saved); -#: ../src/preferences.cpp:147 +#: ../src/preferences.cpp:149 #, c-format msgid "Cannot create profile directory %s." msgstr "Nav iespējams izveidot profila mapi %s." @@ -11468,7 +11297,7 @@ msgstr "Nav iespējams izveidot profila mapi %s." #. The profile dir is not actually a directory #. _reportError(Glib::ustring::compose(_("%1 is not a valid directory."), #. Glib::filename_to_utf8(_prefs_dir)), not_saved); -#: ../src/preferences.cpp:165 +#: ../src/preferences.cpp:167 #, c-format msgid "%s is not a valid directory." msgstr "%s nav derīga mape." @@ -11476,27 +11305,27 @@ msgstr "%s nav derīga mape." #. The write failed. #. _reportError(Glib::ustring::compose(_("Failed to create the preferences file %1."), #. Glib::filename_to_utf8(_prefs_filename)), not_saved); -#: ../src/preferences.cpp:176 +#: ../src/preferences.cpp:178 #, c-format msgid "Failed to create the preferences file %s." msgstr "Neizdevās izveidot iestatījumu failu %s." -#: ../src/preferences.cpp:212 +#: ../src/preferences.cpp:214 #, c-format msgid "The preferences file %s is not a regular file." msgstr "Iestatījumu fails %s nav parasts fails." -#: ../src/preferences.cpp:222 +#: ../src/preferences.cpp:224 #, c-format msgid "The preferences file %s could not be read." msgstr "Iestatījumu fails %s nav nolasāms." -#: ../src/preferences.cpp:233 +#: ../src/preferences.cpp:235 #, c-format msgid "The preferences file %s is not a valid XML document." msgstr "Iestatījumu fails %s nav derīgs XML dokuments." -#: ../src/preferences.cpp:242 +#: ../src/preferences.cpp:244 #, c-format msgid "The file %s is not a valid Inkscape preferences file." msgstr "Fails %s nav derīgs Inkscape iestatījumu fails." @@ -11526,8 +11355,8 @@ msgid "CC Attribution-NonCommercial-NoDerivs" msgstr "CC Attribution-NonCommercial-NoDerivs" #: ../src/rdf.cpp:205 -msgid "Public Domain" -msgstr "Sabiedriskā īpašuma" +msgid "CC0 Public Domain Dedication" +msgstr "CC0 Domāts Sabiedriskajam īpašumam" #: ../src/rdf.cpp:210 msgid "FreeArt" @@ -11538,168 +11367,168 @@ msgid "Open Font License" msgstr "Open Font licence" #. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/linking.html#AElementXLinkTitleAttribute -#: ../src/rdf.cpp:232 +#: ../src/rdf.cpp:235 #: ../src/ui/dialog/object-attributes.cpp:57 msgid "Title:" msgstr "Nosaukums:" -#: ../src/rdf.cpp:233 -msgid "Name by which this document is formally known" -msgstr "Nosaukums, ar kuru šis dokumenta ir formāli pazīstams" +#: ../src/rdf.cpp:236 +msgid "A name given to the resource" +msgstr "Resursam piešķirtais vārds" -#: ../src/rdf.cpp:235 +#: ../src/rdf.cpp:238 msgid "Date:" msgstr "Datums:" -#: ../src/rdf.cpp:236 -msgid "Date associated with the creation of this document (YYYY-MM-DD)" -msgstr "Datums, kas saistīts ar šī dokumenta izveidošanu (GGGG-MM-DD)" +#: ../src/rdf.cpp:239 +msgid "A point or period of time associated with an event in the lifecycle of the resource" +msgstr "Punkts vai laikaposms, kas saistīts ar kādu notikumu resursa dzīves ciklā" -#: ../src/rdf.cpp:238 +#: ../src/rdf.cpp:241 #: ../share/extensions/webslicer_create_rect.inx.h:3 msgid "Format:" msgstr "Formāts:" -#: ../src/rdf.cpp:239 -msgid "The physical or digital manifestation of this document (MIME type)" -msgstr "Dokumenta fiziskais vai ciparu tips (MIME tips)" - #: ../src/rdf.cpp:242 -msgid "Type of document (DCMI Type)" -msgstr "Dokumenta tips (DCMI tips)" +msgid "The file format, physical medium, or dimensions of the resource" +msgstr "Resursa faila formāts, fiziskais nesējs vai dimensijas" #: ../src/rdf.cpp:245 +msgid "The nature or genre of the resource" +msgstr "Resursa žanrs vai daba" + +#: ../src/rdf.cpp:248 msgid "Creator:" msgstr "Veidotājs:" -#: ../src/rdf.cpp:246 -msgid "Name of entity primarily responsible for making the content of this document" -msgstr "Par šī dokumenta satura izveidošanu atbildīgās personas vārds vai organizācijas nosaukums" +#: ../src/rdf.cpp:249 +msgid "An entity primarily responsible for making the resource" +msgstr "Par šī resursa radīšanu atbildīgā persona vai organizācija" -#: ../src/rdf.cpp:248 +#: ../src/rdf.cpp:251 msgid "Rights:" msgstr "Tiesības:" -#: ../src/rdf.cpp:249 -msgid "Name of entity with rights to the Intellectual Property of this document" -msgstr "Šī dokumenta autortiesību turētāja personas vārds vai organizācijas nosaukums" +#: ../src/rdf.cpp:252 +msgid "Information about rights held in and over the resource" +msgstr "Informācija pa resursā iekļautajām tiesībām vai arī tiesībām pār resursu" -#: ../src/rdf.cpp:251 +#: ../src/rdf.cpp:254 msgid "Publisher:" msgstr "Publicētājs:" -#: ../src/rdf.cpp:252 -msgid "Name of entity responsible for making this document available" -msgstr "Par šī dokumenta publicēšanu atbildīgās personas vārds vai organizācijas nosaukums" - #: ../src/rdf.cpp:255 +msgid "An entity responsible for making the resource available" +msgstr "Par šī dokumenta pieejamību atbildīgā persona vai organizācija" + +#: ../src/rdf.cpp:258 msgid "Identifier:" msgstr "Identifikators:" -#: ../src/rdf.cpp:256 -msgid "Unique URI to reference this document" -msgstr "Unikāls URI atsaucei uz šo dokumentu" - #: ../src/rdf.cpp:259 -msgid "Unique URI to reference the source of this document" -msgstr "Unikāls URI atsaucei uz šī dokumenta avotu" +msgid "An unambiguous reference to the resource within a given context" +msgstr "Viennozīmīga atsauce uz resursu šajā kontekstā" -#: ../src/rdf.cpp:261 +#: ../src/rdf.cpp:262 +msgid "A related resource from which the described resource is derived" +msgstr "Atbilstošs resurss, no kura ir atvasināts aprakstītais resurss" + +#: ../src/rdf.cpp:264 msgid "Relation:" msgstr "Attiecība:" -#: ../src/rdf.cpp:262 -msgid "Unique URI to a related document" -msgstr "Unikāls URI uz šo dokumentu" +#: ../src/rdf.cpp:265 +msgid "A related resource" +msgstr "Saistītais resurss" -#: ../src/rdf.cpp:264 -#: ../src/ui/dialog/inkscape-preferences.cpp:1837 +#: ../src/rdf.cpp:267 +#: ../src/ui/dialog/inkscape-preferences.cpp:1841 msgid "Language:" msgstr "Valoda:" -#: ../src/rdf.cpp:265 -msgid "Two-letter language tag with optional subtags for the language of this document (e.g. 'en-GB')" -msgstr "Dokumenta valodas divu burtu valodas tags ar papildu apakštagiem (piem. lv_LV)" +#: ../src/rdf.cpp:268 +msgid "A language of the resource" +msgstr "Resurss valoda" -#: ../src/rdf.cpp:267 +#: ../src/rdf.cpp:270 msgid "Keywords:" msgstr "Atslēgvārdi:" -#: ../src/rdf.cpp:268 -msgid "The topic of this document as comma-separated key words, phrases, or classifications" -msgstr "Šī dokumenta temats ar komatu atdalītu atslēgas vārdu, frāžu vai klasifikatoru formā" +#: ../src/rdf.cpp:271 +msgid "The topic of the resource" +msgstr "Resursa tēma" #. TRANSLATORS: "Coverage": the spatial or temporal characteristics of the content. #. For info, see Appendix D of http://www.w3.org/TR/1998/WD-rdf-schema-19980409/ -#: ../src/rdf.cpp:272 +#: ../src/rdf.cpp:275 msgid "Coverage:" msgstr "Segums:" -#: ../src/rdf.cpp:273 -msgid "Extent or scope of this document" -msgstr "Apjoms vai šī dokumenta aptvertā joma" - #: ../src/rdf.cpp:276 +msgid "The spatial or temporal topic of the resource, the spatial applicability of the resource, or the jurisdiction under which the resource is relevant" +msgstr "Resursa telpiskais vai laicīgais temats, resursa telpiskā izmantojamība vai resursu regulējošā jurisdikcija" + +#: ../src/rdf.cpp:279 msgid "Description:" msgstr "Apraksts:" -#: ../src/rdf.cpp:277 -msgid "A short account of the content of this document" -msgstr "Īss dokumenta satura apraksts" +#: ../src/rdf.cpp:280 +msgid "An account of the resource" +msgstr "Resursa konts" #. FIXME: need to handle 1 agent per line of input -#: ../src/rdf.cpp:281 +#: ../src/rdf.cpp:284 msgid "Contributors:" msgstr "Līdzstrādnieki:" -#: ../src/rdf.cpp:282 -msgid "Names of entities responsible for making contributions to the content of this document" -msgstr "Šī dokumenta satura tapšanā iesaistīto personu vārdi vai organizāciju nosaukumi" +#: ../src/rdf.cpp:285 +msgid "An entity responsible for making contributions to the resource" +msgstr "Šī dokumenta satura tapšanā iesaistītās personas vai organizācijas" #. TRANSLATORS: URL to a page that defines the license for the document -#: ../src/rdf.cpp:286 +#: ../src/rdf.cpp:289 msgid "URI:" msgstr "URI:" #. TRANSLATORS: this is where you put a URL to a page that defines the license -#: ../src/rdf.cpp:288 +#: ../src/rdf.cpp:291 msgid "URI to this document's license's namespace definition" msgstr "Saite (URI) uz dokumenta licences nosacījumiem" #. TRANSLATORS: fragment of XML representing the license of the document -#: ../src/rdf.cpp:292 +#: ../src/rdf.cpp:295 msgid "Fragment:" msgstr "Fragments:" -#: ../src/rdf.cpp:293 +#: ../src/rdf.cpp:296 msgid "XML fragment for the RDF 'License' section" msgstr "XML fragments RDF 'License' sadaļai" -#: ../src/rect-context.cpp:352 +#: ../src/rect-context.cpp:351 msgid "<b>Ctrl</b>: make square or integer-ratio rect, lock a rounded corner circular" msgstr "<b>Ctrl</b>: izveidot kvadrātu vai taisnstūri ar veselu skaitļu malu attiecībām, saglabāt noapaļotos stūrus apaļus" -#: ../src/rect-context.cpp:505 +#: ../src/rect-context.cpp:506 #, c-format msgid "<b>Rectangle</b>: %s × %s (constrained to ratio %d:%d); with <b>Shift</b> to draw around the starting point" msgstr "<b>Taisnstūris</b>: %s × %s (ierobežots ar proporcijām %d:%d); ar <b>Shift</b> - zīmēt apkārt sākumpunktam" -#: ../src/rect-context.cpp:508 +#: ../src/rect-context.cpp:509 #, c-format msgid "<b>Rectangle</b>: %s × %s (constrained to golden ratio 1.618 : 1); with <b>Shift</b> to draw around the starting point" msgstr "<b>Taisnstūris</b>: %s × %s (ierobežots zelta šķēluma proporcijās 1.618 : 1); ar <b>Shift</b> - zīmēt apkārt sākumpunktam" -#: ../src/rect-context.cpp:510 +#: ../src/rect-context.cpp:511 #, c-format msgid "<b>Rectangle</b>: %s × %s (constrained to golden ratio 1 : 1.618); with <b>Shift</b> to draw around the starting point" msgstr "<b>Taisnstūris</b>: %s × %s (ierobežots zelta šķēluma proporcijās 1.618 : 1); ar <b>Shift</b> - zīmēt apkārt sākumpunktam" -#: ../src/rect-context.cpp:514 +#: ../src/rect-context.cpp:515 #, c-format msgid "<b>Rectangle</b>: %s × %s; with <b>Ctrl</b> to make square or integer-ratio rectangle; with <b>Shift</b> to draw around the starting point" msgstr "<b>Taisnstūris</b>: %s × %s; ar <b>Ctrl</b> - izveidot kvadrātu vai taisnstūri ar veselu skaitļu malu proporcijām; ar <b>Shift</b> - zīmēt apkārt sākumpunktam" -#: ../src/rect-context.cpp:539 +#: ../src/rect-context.cpp:540 msgid "Create rectangle" msgstr "Izveidot taisnstūri" @@ -11707,19 +11536,19 @@ msgstr "Izveidot taisnstūri" msgid "Fixup broken links" msgstr "Labot nederīgās saites" -#: ../src/select-context.cpp:181 +#: ../src/select-context.cpp:183 msgid "Click selection to toggle scale/rotation handles" msgstr "Uzklikšķiniet atlasītajam, lai pārslēgtu turu mērogošanu/griešanu" -#: ../src/select-context.cpp:182 +#: ../src/select-context.cpp:184 msgid "No objects selected. Click, Shift+click, Alt+scroll mouse on top of objects, or drag around objects to select." msgstr "Nav atlasīts neviens objekts. Atlasīšanai izmantojiet klikšķi, Shift+klikšķi, Alt+ritināšanu ar peli virs objektiem, vai apvelciet apkārt objektiem." -#: ../src/select-context.cpp:241 +#: ../src/select-context.cpp:243 msgid "Move canceled." msgstr "Pārvietošana atcelta." -#: ../src/select-context.cpp:249 +#: ../src/select-context.cpp:251 msgid "Selection canceled." msgstr "Atlasīšana atcelta." @@ -11747,492 +11576,493 @@ msgstr "<b>Alt</b>: klikšķis, lai atlasītu zem kursora esošo; ritiniet ar pe msgid "Selected object is not a group. Cannot enter." msgstr "Izvēlētais objekts nav grupa. Nav iespējams ieiet." -#: ../src/selection-chemistry.cpp:377 +#: ../src/selection-chemistry.cpp:392 msgid "Delete text" msgstr "Dzēst tekstu" -#: ../src/selection-chemistry.cpp:385 +#: ../src/selection-chemistry.cpp:400 msgid "<b>Nothing</b> was deleted." msgstr "<b>Nekas</b> nav izdzēst." -#: ../src/selection-chemistry.cpp:404 -#: ../src/text-context.cpp:1030 +#: ../src/selection-chemistry.cpp:419 +#: ../src/text-context.cpp:1031 #: ../src/ui/dialog/calligraphic-profile-rename.cpp:75 -#: ../src/ui/dialog/swatches.cpp:278 -#: ../src/widgets/erasor-toolbar.cpp:114 +#: ../src/ui/dialog/swatches.cpp:279 +#: ../src/widgets/eraser-toolbar.cpp:110 #: ../src/widgets/gradient-toolbar.cpp:1193 #: ../src/widgets/gradient-toolbar.cpp:1207 #: ../src/widgets/gradient-toolbar.cpp:1221 -#: ../src/widgets/node-toolbar.cpp:410 +#: ../src/widgets/node-toolbar.cpp:413 msgid "Delete" msgstr "Dzēst" -#: ../src/selection-chemistry.cpp:432 +#: ../src/selection-chemistry.cpp:447 msgid "Select <b>object(s)</b> to duplicate." msgstr "Atlasiet dublējamo(s) <b>objektu(s)</b>." -#: ../src/selection-chemistry.cpp:541 +#: ../src/selection-chemistry.cpp:556 msgid "Delete all" msgstr "Dzēst visu" -#: ../src/selection-chemistry.cpp:737 +#: ../src/selection-chemistry.cpp:746 msgid "Select <b>some objects</b> to group." msgstr "Grupēšanai atlasiet <b>dažus objektus</b>." -#: ../src/selection-chemistry.cpp:752 -#: ../src/selection-describer.cpp:54 +#: ../src/selection-chemistry.cpp:761 +#: ../src/selection-describer.cpp:55 msgid "Group" msgstr "Grupa" -#: ../src/selection-chemistry.cpp:766 +#: ../src/selection-chemistry.cpp:770 msgid "Select a <b>group</b> to ungroup." msgstr "Atlasiet atgrupējamo <b>grupu</b>." -#: ../src/selection-chemistry.cpp:809 +#: ../src/selection-chemistry.cpp:813 msgid "<b>No groups</b> to ungroup in the selection." msgstr "Atlasē <b>nav</b> atgrupējamu grupu." -#: ../src/selection-chemistry.cpp:815 +#: ../src/selection-chemistry.cpp:819 #: ../src/sp-item-group.cpp:479 msgid "Ungroup" msgstr "Atgrupēt" -#: ../src/selection-chemistry.cpp:901 +#: ../src/selection-chemistry.cpp:900 msgid "Select <b>object(s)</b> to raise." msgstr "Izvēlieties <b>objektu(s)</b>, kurus pacelt augstāk." -#: ../src/selection-chemistry.cpp:907 -#: ../src/selection-chemistry.cpp:967 -#: ../src/selection-chemistry.cpp:1000 -#: ../src/selection-chemistry.cpp:1064 +#: ../src/selection-chemistry.cpp:906 +#: ../src/selection-chemistry.cpp:962 +#: ../src/selection-chemistry.cpp:990 +#: ../src/selection-chemistry.cpp:1050 msgid "You cannot raise/lower objects from <b>different groups</b> or <b>layers</b>." msgstr "Jūs nevarat pacelt/nolaist objektus no <b>dažādām grupām</b> vai <b>slāņiem</b>." #. TRANSLATORS: "Raise" means "to raise an object" in the undo history -#: ../src/selection-chemistry.cpp:947 +#: ../src/selection-chemistry.cpp:946 msgctxt "Undo action" msgid "Raise" msgstr "Pacelt" -#: ../src/selection-chemistry.cpp:959 +#: ../src/selection-chemistry.cpp:954 msgid "Select <b>object(s)</b> to raise to top." msgstr "Izvēlieties <b>objektu(s)</b>, kurus pacelt pašā augšā." -#: ../src/selection-chemistry.cpp:982 +#: ../src/selection-chemistry.cpp:977 msgid "Raise to top" msgstr "Pacelt pašā augšā" -#: ../src/selection-chemistry.cpp:994 +#: ../src/selection-chemistry.cpp:984 msgid "Select <b>object(s)</b> to lower." msgstr "Izvēlieties <b>objektu(s)</b>, kurus nolaist zemāk." -#: ../src/selection-chemistry.cpp:1044 +#: ../src/selection-chemistry.cpp:1034 +#: ../src/widgets/ruler.cpp:209 msgid "Lower" msgstr "Nolaist zemāk" -#: ../src/selection-chemistry.cpp:1056 +#: ../src/selection-chemistry.cpp:1042 msgid "Select <b>object(s)</b> to lower to bottom." msgstr "Izvēlieties <b>objektu(s)</b>, kurus nolaist pašā apakšā." -#: ../src/selection-chemistry.cpp:1091 +#: ../src/selection-chemistry.cpp:1077 msgid "Lower to bottom" msgstr "Nolaist pašā augšā" -#: ../src/selection-chemistry.cpp:1098 +#: ../src/selection-chemistry.cpp:1084 msgid "Nothing to undo." msgstr "Nav ko atcelt." -#: ../src/selection-chemistry.cpp:1106 +#: ../src/selection-chemistry.cpp:1092 msgid "Nothing to redo." msgstr "Nav ko atkārtot." -#: ../src/selection-chemistry.cpp:1167 +#: ../src/selection-chemistry.cpp:1153 msgid "Paste" msgstr "Ielīmēt" -#: ../src/selection-chemistry.cpp:1175 +#: ../src/selection-chemistry.cpp:1161 msgid "Paste style" msgstr "Ielīmēt stilu" -#: ../src/selection-chemistry.cpp:1185 +#: ../src/selection-chemistry.cpp:1171 msgid "Paste live path effect" msgstr "Ielīmēt ceļa (LPE) efektu" -#: ../src/selection-chemistry.cpp:1206 +#: ../src/selection-chemistry.cpp:1192 msgid "Select <b>object(s)</b> to remove live path effects from." msgstr "Atlasiet <b>objektu(s)</b>, no kuriem jāaizvāc ceļa (LPE) efekti." -#: ../src/selection-chemistry.cpp:1218 +#: ../src/selection-chemistry.cpp:1204 msgid "Remove live path effect" msgstr "Aizvākt ceļa (LPE) efektu" -#: ../src/selection-chemistry.cpp:1229 +#: ../src/selection-chemistry.cpp:1215 msgid "Select <b>object(s)</b> to remove filters from." msgstr "Atlasiet <b>objektu(s)</b>, no kuriem jāaizvāc filtri." -#: ../src/selection-chemistry.cpp:1239 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1448 +#: ../src/selection-chemistry.cpp:1225 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1461 msgid "Remove filter" msgstr "Aizvākt filtru" -#: ../src/selection-chemistry.cpp:1248 +#: ../src/selection-chemistry.cpp:1234 msgid "Paste size" msgstr "Ielīmēt izmērus" -#: ../src/selection-chemistry.cpp:1257 +#: ../src/selection-chemistry.cpp:1243 msgid "Paste size separately" msgstr "Ielīmēt izmērus atsevišķi" -#: ../src/selection-chemistry.cpp:1267 +#: ../src/selection-chemistry.cpp:1253 msgid "Select <b>object(s)</b> to move to the layer above." msgstr "Atlasiet <b>objektu(s)</b>, ko pārvietot uz slāni virs pašreizējā." -#: ../src/selection-chemistry.cpp:1293 +#: ../src/selection-chemistry.cpp:1279 msgid "Raise to next layer" msgstr "Pacelt uz nākošo slāni" -#: ../src/selection-chemistry.cpp:1300 +#: ../src/selection-chemistry.cpp:1286 msgid "No more layers above." msgstr "Nav augstāka slāņa par šo." -#: ../src/selection-chemistry.cpp:1312 +#: ../src/selection-chemistry.cpp:1298 msgid "Select <b>object(s)</b> to move to the layer below." msgstr "Atlasiet <b>objektu(s)</b>, ko pārvietot uz slāni zem pašreizējā." -#: ../src/selection-chemistry.cpp:1338 +#: ../src/selection-chemistry.cpp:1324 msgid "Lower to previous layer" msgstr "Nolaist uz iepriekšējo slāni" -#: ../src/selection-chemistry.cpp:1345 +#: ../src/selection-chemistry.cpp:1331 msgid "No more layers below." msgstr "Nav zemāka slāņa par šo." -#: ../src/selection-chemistry.cpp:1357 +#: ../src/selection-chemistry.cpp:1343 msgid "Select <b>object(s)</b> to move." msgstr "Atlasiet pārvietojamo(s) <b>objektu(s)</b>." -#: ../src/selection-chemistry.cpp:1374 -#: ../src/verbs.cpp:2517 +#: ../src/selection-chemistry.cpp:1360 +#: ../src/verbs.cpp:2572 msgid "Move selection to layer" msgstr "Pārvietot atlasīto uz slāni" -#: ../src/selection-chemistry.cpp:1598 +#: ../src/selection-chemistry.cpp:1584 msgid "Remove transform" msgstr "Aizvākt pārveidojumu" -#: ../src/selection-chemistry.cpp:1701 +#: ../src/selection-chemistry.cpp:1687 msgid "Rotate 90° CCW" msgstr "Pagriezt par 90° CCW" -#: ../src/selection-chemistry.cpp:1701 +#: ../src/selection-chemistry.cpp:1687 msgid "Rotate 90° CW" msgstr "Pagriezt par 90° CW" -#: ../src/selection-chemistry.cpp:1722 -#: ../src/seltrans.cpp:485 -#: ../src/ui/dialog/transformation.cpp:892 +#: ../src/selection-chemistry.cpp:1708 +#: ../src/seltrans.cpp:468 +#: ../src/ui/dialog/transformation.cpp:893 msgid "Rotate" msgstr "Pagriezt" -#: ../src/selection-chemistry.cpp:2101 +#: ../src/selection-chemistry.cpp:2087 msgid "Rotate by pixels" msgstr "Pagriezt pa pikseļiem" -#: ../src/selection-chemistry.cpp:2131 -#: ../src/seltrans.cpp:482 -#: ../src/ui/dialog/transformation.cpp:867 +#: ../src/selection-chemistry.cpp:2117 +#: ../src/seltrans.cpp:465 +#: ../src/ui/dialog/transformation.cpp:868 #: ../share/extensions/interp_att_g.inx.h:12 msgid "Scale" msgstr "Mērogot" -#: ../src/selection-chemistry.cpp:2156 +#: ../src/selection-chemistry.cpp:2142 msgid "Scale by whole factor" msgstr "Mērogot veselu skaitu reižu" -#: ../src/selection-chemistry.cpp:2171 +#: ../src/selection-chemistry.cpp:2157 msgid "Move vertically" msgstr "Pārvietot vertikāli" -#: ../src/selection-chemistry.cpp:2174 +#: ../src/selection-chemistry.cpp:2160 msgid "Move horizontally" msgstr "Pārvietot horizontāli" -#: ../src/selection-chemistry.cpp:2177 -#: ../src/selection-chemistry.cpp:2203 -#: ../src/seltrans.cpp:479 -#: ../src/ui/dialog/transformation.cpp:806 +#: ../src/selection-chemistry.cpp:2163 +#: ../src/selection-chemistry.cpp:2189 +#: ../src/seltrans.cpp:462 +#: ../src/ui/dialog/transformation.cpp:807 msgid "Move" msgstr "Pārvietot" -#: ../src/selection-chemistry.cpp:2197 +#: ../src/selection-chemistry.cpp:2183 msgid "Move vertically by pixels" msgstr "Pārvietot vertikāli pa pikseļiem" -#: ../src/selection-chemistry.cpp:2200 +#: ../src/selection-chemistry.cpp:2186 msgid "Move horizontally by pixels" msgstr "Pārvietot horizontāli pa pikseļiem" -#: ../src/selection-chemistry.cpp:2332 +#: ../src/selection-chemistry.cpp:2318 msgid "The selection has no applied path effect." msgstr "Atlasītajam nav pielietots neviens ceļa efekts." -#: ../src/selection-chemistry.cpp:2535 +#: ../src/selection-chemistry.cpp:2521 msgctxt "Action" msgid "Clone" msgstr "Klonēt" -#: ../src/selection-chemistry.cpp:2551 +#: ../src/selection-chemistry.cpp:2537 msgid "Select <b>clones</b> to relink." msgstr "Atlasiet <b>klonus</b>, kuriem jāatjauno piesaiste." -#: ../src/selection-chemistry.cpp:2558 +#: ../src/selection-chemistry.cpp:2544 msgid "Copy an <b>object</b> to clipboard to relink clones to." msgstr "Nokopējiet uz starpliktuvi <b>objektu</b>, kuram jāatjauno klonu saites." -#: ../src/selection-chemistry.cpp:2582 +#: ../src/selection-chemistry.cpp:2568 msgid "<b>No clones to relink</b> in the selection." msgstr "Atlasītajā <b>nav klonu ar atjaunojamu piesaisti</b>." -#: ../src/selection-chemistry.cpp:2585 +#: ../src/selection-chemistry.cpp:2571 msgid "Relink clone" msgstr "Atjaunot klona piesaisti" -#: ../src/selection-chemistry.cpp:2599 +#: ../src/selection-chemistry.cpp:2585 msgid "Select <b>clones</b> to unlink." msgstr "Atlasiet atsaistāmos <b>klonus</b>." -#: ../src/selection-chemistry.cpp:2653 +#: ../src/selection-chemistry.cpp:2639 msgid "<b>No clones to unlink</b> in the selection." msgstr "Atlasītajā <b>nav atsaistāmu klonu</b>." -#: ../src/selection-chemistry.cpp:2657 +#: ../src/selection-chemistry.cpp:2643 msgid "Unlink clone" msgstr "Atsaistīt klonu" -#: ../src/selection-chemistry.cpp:2670 +#: ../src/selection-chemistry.cpp:2656 msgid "Select a <b>clone</b> to go to its original. Select a <b>linked offset</b> to go to its source. Select a <b>text on path</b> to go to the path. Select a <b>flowed text</b> to go to its frame." msgstr "Atlasiet <b>klonu</b>, lai pārietu pie tā oriģināla. Atlasiet <b>saistīto nobīdi</b>, lai pārietu pie tās sākumpunkta. Atlasiet <b>tekstu gar ceļu</b>, lai pārietu pie ceļa. Atlasiet <b>aizpildošo tekstu</b>, lai pārietu pie tā rāmja." -#: ../src/selection-chemistry.cpp:2703 +#: ../src/selection-chemistry.cpp:2689 msgid "<b>Cannot find</b> the object to select (orphaned clone, offset, textpath, flowed text?)" msgstr "<b>Nevar atrast</b> atlasāma objektu (pamests klons, nobīde, teksta ceļš, teksta aizpildījums?)" -#: ../src/selection-chemistry.cpp:2709 +#: ../src/selection-chemistry.cpp:2695 msgid "The object you're trying to select is <b>not visible</b> (it is in <defs>)" msgstr "Objekts, ko mēģināt atlasīt, <b>nav redzams</b> (tas atrodas <defs>)" -#: ../src/selection-chemistry.cpp:2754 +#: ../src/selection-chemistry.cpp:2740 msgid "Select <b>one</b> path to clone." msgstr "Atlasiet <b>vienu</b> ceļu, kuru vēlaties klonēt." -#: ../src/selection-chemistry.cpp:2758 +#: ../src/selection-chemistry.cpp:2744 msgid "Select one <b>path</b> to clone." msgstr "Atlasiet vienu <b>ceļu</b>, kuru vēlaties klonēt." -#: ../src/selection-chemistry.cpp:2813 +#: ../src/selection-chemistry.cpp:2799 msgid "Select <b>object(s)</b> to convert to marker." msgstr "Atlasiet <b>objektu(s)</b>, kurus vēlaties pārvērst par marķieriem." -#: ../src/selection-chemistry.cpp:2881 +#: ../src/selection-chemistry.cpp:2867 msgid "Objects to marker" msgstr "Objektus par marķieriem" -#: ../src/selection-chemistry.cpp:2909 +#: ../src/selection-chemistry.cpp:2895 msgid "Select <b>object(s)</b> to convert to guides." msgstr "Atlasiet <b>objektu(s)</b>, kurus vēlaties pārvērst par palīglīnijām." -#: ../src/selection-chemistry.cpp:2921 +#: ../src/selection-chemistry.cpp:2907 msgid "Objects to guides" msgstr "Objektus par palīglīnijam" -#: ../src/selection-chemistry.cpp:2940 +#: ../src/selection-chemistry.cpp:2926 msgid "Select <b>groups</b> to convert to symbols." msgstr "Atlasiet <b>grupas</b>, kuras vēlaties pārvērst par simboliem." -#: ../src/selection-chemistry.cpp:2960 +#: ../src/selection-chemistry.cpp:2946 msgid "No <b>groups</b> converted to symbols." msgstr "Neviena<b>grupa</b> nav pārvērsta par simboliem." #. Group just disappears, nothing to select. -#: ../src/selection-chemistry.cpp:2967 +#: ../src/selection-chemistry.cpp:2953 msgid "Group to symbol" msgstr "Grupēt simbola virzienā" -#: ../src/selection-chemistry.cpp:3031 +#: ../src/selection-chemistry.cpp:3017 msgid "Select a <b>symbol</b> to extract objects from." msgstr "Atlasiet <b>simbolu</b>, no kura ekstraģēt objektus." -#: ../src/selection-chemistry.cpp:3040 +#: ../src/selection-chemistry.cpp:3026 msgid "Select only one <b>symbol</b> to convert to group." msgstr "Atlasiet tikai vienu<b>simbolu</b>, kurus vēlaties pārvērst par grupu." -#: ../src/selection-chemistry.cpp:3081 +#: ../src/selection-chemistry.cpp:3067 msgid "Group from symbol" msgstr "Grupēt virzienā no simbola" -#: ../src/selection-chemistry.cpp:3098 +#: ../src/selection-chemistry.cpp:3084 msgid "Select <b>object(s)</b> to convert to pattern." msgstr "Atlasiet <b>objektu(s)</b>, kurus vēlaties pārvērst par faktūru." -#: ../src/selection-chemistry.cpp:3186 +#: ../src/selection-chemistry.cpp:3172 msgid "Objects to pattern" msgstr "Objektus par faktūru" -#: ../src/selection-chemistry.cpp:3202 +#: ../src/selection-chemistry.cpp:3188 msgid "Select an <b>object with pattern fill</b> to extract objects from." msgstr "Izvēlieties <b>objektu ar faktūras aizpildījumu</b>, no kura ekstraģēt objektus." -#: ../src/selection-chemistry.cpp:3255 +#: ../src/selection-chemistry.cpp:3241 msgid "<b>No pattern fills</b> in the selection." msgstr "Atlasītajā nav objektu ar <b>faktūras aizpildījumu</b>." -#: ../src/selection-chemistry.cpp:3258 +#: ../src/selection-chemistry.cpp:3244 msgid "Pattern to objects" msgstr "Faktūru par objektiem" -#: ../src/selection-chemistry.cpp:3349 +#: ../src/selection-chemistry.cpp:3335 msgid "Select <b>object(s)</b> to make a bitmap copy." msgstr "Atlasiet <b>objektu(s)</b> bitkartes kopijas izveidošanai." -#: ../src/selection-chemistry.cpp:3353 +#: ../src/selection-chemistry.cpp:3339 msgid "Rendering bitmap..." msgstr "Renderē bitkarti..." -#: ../src/selection-chemistry.cpp:3530 +#: ../src/selection-chemistry.cpp:3516 msgid "Create bitmap" msgstr "Izveidot bitkarti" -#: ../src/selection-chemistry.cpp:3562 +#: ../src/selection-chemistry.cpp:3548 msgid "Select <b>object(s)</b> to create clippath or mask from." msgstr "Atlasiet <b>objektu(s)</b> izgriešanas ceļa vai maskas izveidošanai." -#: ../src/selection-chemistry.cpp:3565 +#: ../src/selection-chemistry.cpp:3551 msgid "Select mask object and <b>object(s)</b> to apply clippath or mask to." msgstr "Atlasiet maskas objektu un <b>objektu(s)</b>izgriešanas ceļa vai maskas pielietošanai." -#: ../src/selection-chemistry.cpp:3746 +#: ../src/selection-chemistry.cpp:3732 msgid "Set clipping path" msgstr "Iestatiet izgriešanas ceļu" -#: ../src/selection-chemistry.cpp:3748 +#: ../src/selection-chemistry.cpp:3734 msgid "Set mask" msgstr "Iestatīt masku" -#: ../src/selection-chemistry.cpp:3763 +#: ../src/selection-chemistry.cpp:3749 msgid "Select <b>object(s)</b> to remove clippath or mask from." msgstr "Atlasiet <b>objektu(s)</b>, kuram(-iem) noņemt izgriešanas ceļu vai masku." -#: ../src/selection-chemistry.cpp:3874 +#: ../src/selection-chemistry.cpp:3860 msgid "Release clipping path" msgstr "Atbrīvot izgriešanas ceļu" -#: ../src/selection-chemistry.cpp:3876 +#: ../src/selection-chemistry.cpp:3862 msgid "Release mask" msgstr "Atbrīvot masku" -#: ../src/selection-chemistry.cpp:3895 +#: ../src/selection-chemistry.cpp:3881 msgid "Select <b>object(s)</b> to fit canvas to." msgstr "Atlasiet <b>objektu(s)</b>, kuriem pielāgot audekla izmēru." #. Fit Page -#: ../src/selection-chemistry.cpp:3915 -#: ../src/verbs.cpp:2843 +#: ../src/selection-chemistry.cpp:3901 +#: ../src/verbs.cpp:2896 msgid "Fit Page to Selection" msgstr "Pielāgot lapu atlasītajam" -#: ../src/selection-chemistry.cpp:3944 -#: ../src/verbs.cpp:2845 +#: ../src/selection-chemistry.cpp:3930 +#: ../src/verbs.cpp:2898 msgid "Fit Page to Drawing" msgstr "Pielāgot lapu zīmējumam" -#: ../src/selection-chemistry.cpp:3965 -#: ../src/verbs.cpp:2847 +#: ../src/selection-chemistry.cpp:3951 +#: ../src/verbs.cpp:2900 msgid "Fit Page to Selection or Drawing" msgstr "Pielāgojiet lapu atlasītajam vai zīmējumam" #. TRANSLATORS: "Link" means internet link (anchor) -#: ../src/selection-describer.cpp:46 +#: ../src/selection-describer.cpp:47 msgctxt "Web" msgid "Link" msgstr "Saite" -#: ../src/selection-describer.cpp:48 +#: ../src/selection-describer.cpp:49 msgid "Circle" msgstr "Aplis" #. Ellipse -#: ../src/selection-describer.cpp:50 -#: ../src/selection-describer.cpp:77 +#: ../src/selection-describer.cpp:51 +#: ../src/selection-describer.cpp:78 #: ../src/ui/dialog/inkscape-preferences.cpp:403 -#: ../src/widgets/pencil-toolbar.cpp:192 +#: ../src/widgets/pencil-toolbar.cpp:187 msgid "Ellipse" msgstr "Elipse" -#: ../src/selection-describer.cpp:52 +#: ../src/selection-describer.cpp:53 msgid "Flowed text" msgstr "Teksta aizpildījums" -#: ../src/selection-describer.cpp:58 +#: ../src/selection-describer.cpp:59 msgid "Line" msgstr "Līnija" -#: ../src/selection-describer.cpp:60 +#: ../src/selection-describer.cpp:61 msgid "Path" msgstr "Kontūra" -#: ../src/selection-describer.cpp:62 -#: ../src/widgets/star-toolbar.cpp:474 +#: ../src/selection-describer.cpp:63 +#: ../src/widgets/star-toolbar.cpp:470 msgid "Polygon" msgstr "Daudzstūris" -#: ../src/selection-describer.cpp:64 +#: ../src/selection-describer.cpp:65 msgid "Polyline" msgstr "Lauzta līnija" #. Rectangle -#: ../src/selection-describer.cpp:66 +#: ../src/selection-describer.cpp:67 #: ../src/ui/dialog/inkscape-preferences.cpp:393 msgid "Rectangle" msgstr "Taisnstūris" #. 3D box -#: ../src/selection-describer.cpp:68 +#: ../src/selection-describer.cpp:69 #: ../src/ui/dialog/inkscape-preferences.cpp:398 msgid "3D Box" msgstr "3D paralēlskaldnis" -#: ../src/selection-describer.cpp:70 +#: ../src/selection-describer.cpp:71 msgctxt "Object" msgid "Text" msgstr "Teksts" -#: ../src/selection-describer.cpp:73 +#: ../src/selection-describer.cpp:74 msgctxt "Object" msgid "Symbol" msgstr "Simbols" #. TRANSLATORS: "Clone" is a noun, type of object -#: ../src/selection-describer.cpp:75 +#: ../src/selection-describer.cpp:76 msgctxt "Object" msgid "Clone" msgstr "Klonēšana" -#: ../src/selection-describer.cpp:79 +#: ../src/selection-describer.cpp:80 #: ../share/extensions/gcodetools_lathe.inx.h:9 msgid "Offset path" msgstr "Nobīdes ceļš" #. Spiral -#: ../src/selection-describer.cpp:81 +#: ../src/selection-describer.cpp:82 #: ../src/ui/dialog/inkscape-preferences.cpp:411 #: ../share/extensions/gcodetools_area.inx.h:11 msgid "Spiral" msgstr "Spirāle" #. Star -#: ../src/selection-describer.cpp:83 +#: ../src/selection-describer.cpp:84 #: ../src/ui/dialog/inkscape-preferences.cpp:407 -#: ../src/widgets/star-toolbar.cpp:481 +#: ../src/widgets/star-toolbar.cpp:477 msgid "Star" msgstr "Zvaigzne" @@ -12297,9 +12127,8 @@ msgid "Convert symbol to group to edit" msgstr "Ērtākai labošanai pārvērst simbolu par grupu" #: ../src/selection-describer.cpp:210 -#, fuzzy msgid "Remove from symbols tray to edit symbol" -msgstr "Simbola labošanai izņemiet to no simbolu ...." +msgstr "Simbola labošanai izņemiet to no simbolu ikonjoslas" #: ../src/selection-describer.cpp:214 msgid "Use <b>Shift+D</b> to look up original" @@ -12368,79 +12197,79 @@ msgstr[0] "; <i>%d filtrēts objekts</i> " msgstr[1] "; <i>%d filtrēti objekti</i> " msgstr[2] "; <i>%d filtrēti objekti</i> " -#: ../src/seltrans.cpp:488 -#: ../src/ui/dialog/transformation.cpp:950 +#: ../src/seltrans.cpp:471 +#: ../src/ui/dialog/transformation.cpp:981 msgid "Skew" msgstr "Sašķiebt" -#: ../src/seltrans.cpp:500 +#: ../src/seltrans.cpp:483 msgid "Set center" msgstr "Iestatīt centru" -#: ../src/seltrans.cpp:575 +#: ../src/seltrans.cpp:558 msgid "Stamp" msgstr "Zīmogs" -#: ../src/seltrans.cpp:604 -msgid "<b>Squeeze or stretch</b> selection; with <b>Ctrl</b> to scale uniformly; with <b>Shift</b> to scale around rotation center" -msgstr "<b>Saspiest vai izstiept</b> atlasīto; ar <b>Ctrl</b> - mērogot vienmērīgi; ar <b>Shift</b> - mērogot attiecībā pret griešanās centru" - -#: ../src/seltrans.cpp:605 -msgid "<b>Scale</b> selection; with <b>Ctrl</b> to scale uniformly; with <b>Shift</b> to scale around rotation center" -msgstr "<b>Mērogot</b> atlasīto; ar <b>Ctrl</b> - mērogot vienmērīgi; ar <b>Shift</b> - mērogot attiecībā pret griešanās centru" - -#: ../src/seltrans.cpp:609 -msgid "<b>Skew</b> selection; with <b>Ctrl</b> to snap angle; with <b>Shift</b> to skew around the opposite side" -msgstr "<b>Šķiebt</b> atlasīto; ar <b>Ctrl</b> - piesaistīt leņķim; ar <b>Shift</b> - šķiebt gar pretējo malu" - -#: ../src/seltrans.cpp:610 -msgid "<b>Rotate</b> selection; with <b>Ctrl</b> to snap angle; with <b>Shift</b> to rotate around the opposite corner" -msgstr "<b>Griezt</b> atlasīto; ar <b>Ctrl</b> - piesaistīt leņķim; ar <b>Shift</b> - griezt ap pretējo stūri" - -#: ../src/seltrans.cpp:623 -msgid "<b>Center</b> of rotation and skewing: drag to reposition; scaling with Shift also uses this center" -msgstr "Griešanas un šķiebšanas <b>centrs</b>: velciet, lai manītu novietojumu; mērogošana ar Shift arī lieto šo centru" - -#: ../src/seltrans.cpp:773 +#: ../src/seltrans.cpp:711 msgid "Reset center" msgstr "Atiestatīt centru" -#: ../src/seltrans.cpp:1017 -#: ../src/seltrans.cpp:1114 +#: ../src/seltrans.cpp:938 +#: ../src/seltrans.cpp:1035 #, c-format msgid "<b>Scale</b>: %0.2f%% x %0.2f%%; with <b>Ctrl</b> to lock ratio" msgstr "<b>Mērogot</b>: %0.2f%% x %0.2f%%; ar <b>Ctrl</b> - slēgt attiecību" #. TRANSLATORS: don't modify the first ";" #. (it will NOT be displayed as ";" - only the second one will be) -#: ../src/seltrans.cpp:1228 +#: ../src/seltrans.cpp:1167 #, c-format msgid "<b>Skew</b>: %0.2f°; with <b>Ctrl</b> to snap angle" msgstr "<b>Šķiebt</b>: %0.2f°; ar <b>Ctrl</b> - piesaistīt leņķim" #. TRANSLATORS: don't modify the first ";" #. (it will NOT be displayed as ";" - only the second one will be) -#: ../src/seltrans.cpp:1303 +#: ../src/seltrans.cpp:1242 #, c-format msgid "<b>Rotate</b>: %0.2f°; with <b>Ctrl</b> to snap angle" msgstr "<b>Griezt</b>: %0.2f°; ar <b>Ctrl</b> - piesaistīt leņķim" -#: ../src/seltrans.cpp:1338 +#: ../src/seltrans.cpp:1279 #, c-format msgid "Move <b>center</b> to %s, %s" msgstr "Pārvietot <b>centru</b> uz %s, %s" -#: ../src/seltrans.cpp:1514 +#: ../src/seltrans.cpp:1433 #, c-format msgid "<b>Move</b> by %s, %s; with <b>Ctrl</b> to restrict to horizontal/vertical; with <b>Shift</b> to disable snapping" msgstr "<b>Pārvietot</b> par %s, %s; ar <b>Ctrl</b> - lai ierobežotu horizontāli/vertikāli; ar <b>Shift</b> - atslēgt piesaisti" -#: ../src/shortcuts.cpp:225 +#: ../src/seltrans-handles.cpp:9 +msgid "<b>Squeeze or stretch</b> selection; with <b>Ctrl</b> to scale uniformly; with <b>Shift</b> to scale around rotation center" +msgstr "<b>Saspiest vai izstiept</b> atlasīto; ar <b>Ctrl</b> - mērogot vienmērīgi; ar <b>Shift</b> - mērogot attiecībā pret griešanās centru" + +#: ../src/seltrans-handles.cpp:10 +msgid "<b>Scale</b> selection; with <b>Ctrl</b> to scale uniformly; with <b>Shift</b> to scale around rotation center" +msgstr "<b>Mērogot</b> atlasīto; ar <b>Ctrl</b> - mērogot vienmērīgi; ar <b>Shift</b> - mērogot attiecībā pret griešanās centru" + +#: ../src/seltrans-handles.cpp:11 +msgid "<b>Skew</b> selection; with <b>Ctrl</b> to snap angle; with <b>Shift</b> to skew around the opposite side" +msgstr "<b>Šķiebt</b> atlasīto; ar <b>Ctrl</b> - piesaistīt leņķim; ar <b>Shift</b> - šķiebt gar pretējo malu" + +#: ../src/seltrans-handles.cpp:12 +msgid "<b>Rotate</b> selection; with <b>Ctrl</b> to snap angle; with <b>Shift</b> to rotate around the opposite corner" +msgstr "<b>Griezt</b> atlasīto; ar <b>Ctrl</b> - piesaistīt leņķim; ar <b>Shift</b> - griezt ap pretējo stūri" + +#: ../src/seltrans-handles.cpp:13 +msgid "<b>Center</b> of rotation and skewing: drag to reposition; scaling with Shift also uses this center" +msgstr "Griešanas un šķiebšanas <b>centrs</b>: velciet, lai manītu novietojumu; mērogošana ar Shift arī lieto šo centru" + +#: ../src/shortcuts.cpp:226 #, c-format msgid "Keyboard directory (%s) is unavailable." msgstr "Klaviatūras mape (%s) nav pieejama." -#: ../src/shortcuts.cpp:369 +#: ../src/shortcuts.cpp:370 msgid "Select a file to import" msgstr "Izvēlieties importējamo failu" @@ -12453,20 +12282,20 @@ msgstr "<b>Saite</b> uz %s" msgid "<b>Link</b> without URI" msgstr "<b>Saite</b> bez URI" -#: ../src/sp-ellipse.cpp:452 -#: ../src/sp-ellipse.cpp:775 +#: ../src/sp-ellipse.cpp:457 +#: ../src/sp-ellipse.cpp:780 msgid "<b>Ellipse</b>" msgstr "<b>Elipse</b>" -#: ../src/sp-ellipse.cpp:566 +#: ../src/sp-ellipse.cpp:571 msgid "<b>Circle</b>" msgstr "<b>Aplis</b>" -#: ../src/sp-ellipse.cpp:770 +#: ../src/sp-ellipse.cpp:775 msgid "<b>Segment</b>" msgstr "<b>Segments</b>" -#: ../src/sp-ellipse.cpp:772 +#: ../src/sp-ellipse.cpp:777 msgid "<b>Arc</b>" msgstr "<b>Loks</b>" @@ -12485,50 +12314,50 @@ msgstr "Ar tekstu aizpildāmais apgabals" msgid "Flow excluded region" msgstr "No teksta aizpildes izslēgtais apgabals" -#: ../src/sp-guide.cpp:290 +#: ../src/sp-guide.cpp:289 msgid "Create Guides Around the Page" msgstr "Izveidot palīglīnijas apkārt lapai" -#: ../src/sp-guide.cpp:302 -#: ../src/verbs.cpp:2414 +#: ../src/sp-guide.cpp:301 +#: ../src/verbs.cpp:2467 msgid "Delete All Guides" msgstr "Dzēst visas palīglīnijas" #. Guide has probably been deleted and no longer has an attached namedview. -#: ../src/sp-guide.cpp:462 +#: ../src/sp-guide.cpp:461 #, c-format msgid "Deleted" msgstr "Dzēsts" -#: ../src/sp-guide.cpp:471 +#: ../src/sp-guide.cpp:470 msgid "<b>Shift+drag</b> to rotate, <b>Ctrl+drag</b> to move origin, <b>Del</b> to delete" msgstr "<b>Shift+vilkt</b>, lai pagrieztu, <b>Ctrl+vilkt</b> - lai pārvietotu sākumpunktu, <b>Del</b> - lai dzēstu" -#: ../src/sp-guide.cpp:475 +#: ../src/sp-guide.cpp:474 #, c-format msgid "vertical, at %s" msgstr "vertikāli, pie %s" -#: ../src/sp-guide.cpp:478 +#: ../src/sp-guide.cpp:477 #, c-format msgid "horizontal, at %s" msgstr "horizontāli, pie %s" -#: ../src/sp-guide.cpp:483 +#: ../src/sp-guide.cpp:482 #, c-format msgid "at %d degrees, through (%s,%s)" msgstr "%d grādos, caur (%s,%s)" -#: ../src/sp-image.cpp:1068 +#: ../src/sp-image.cpp:1069 msgid "embedded" msgstr "iegults" -#: ../src/sp-image.cpp:1076 +#: ../src/sp-image.cpp:1077 #, c-format msgid "<b>Image with bad reference</b>: %s" msgstr "<b>Attēls ar nederīgu atsauci</b>: %s" -#: ../src/sp-image.cpp:1077 +#: ../src/sp-image.cpp:1078 #, c-format msgid "<b>Image</b> %d × %d: %s" msgstr "<b>Attēls</b> %d × %d: %s" @@ -12542,7 +12371,7 @@ msgstr[1] "<b>Grupa</b> no <b>%d</b> objektiem" msgstr[2] "<b>Grupa</b> no <b>%d</b> objektiem" #: ../src/sp-item.cpp:977 -#: ../src/verbs.cpp:211 +#: ../src/verbs.cpp:213 msgid "Object" msgstr "Objekts" @@ -12648,16 +12477,16 @@ msgstr[1] "<b>Daudzstūris</b> ar %d virsotnēm" msgstr[2] "<b>Daudzstūris</b> ar %d virsotnēm" #. TRANSLATORS: For description of font with no name. -#: ../src/sp-text.cpp:392 +#: ../src/sp-text.cpp:390 msgid "<no name found>" msgstr "<nosaukums nav atrasts>" -#: ../src/sp-text.cpp:404 +#: ../src/sp-text.cpp:403 #, c-format msgid "<b>Text on path</b>%s (%s, %s)" msgstr "<b>Teksts gar ceļu</b>%s (%s, %s)" -#: ../src/sp-text.cpp:405 +#: ../src/sp-text.cpp:404 #, c-format msgid "<b>Text</b>%s (%s, %s)" msgstr "<b>Teksts</b>%s (%s, %s)" @@ -12679,31 +12508,31 @@ msgstr "<b>Pamestas klonētās rakstzīmes dati</b>" msgid "<b>Text span</b>" msgstr "<b>Teksta platums</b>" -#: ../src/sp-use.cpp:303 +#: ../src/sp-use.cpp:299 #, c-format msgid "<b>'%s' Symbol</b>" msgstr "<b>'%s' simbols</b>" #. TRANSLATORS: Used for statusbar description for long <use> chains: #. * "Clone of: Clone of: ... in Layer 1". -#: ../src/sp-use.cpp:311 +#: ../src/sp-use.cpp:307 msgid "..." msgstr "..." -#: ../src/sp-use.cpp:319 +#: ../src/sp-use.cpp:315 #, c-format msgid "<b>Clone</b> of: %s" msgstr "<b>Klons</b> objektam: %s" -#: ../src/sp-use.cpp:323 +#: ../src/sp-use.cpp:319 msgid "<b>Orphaned clone</b>" msgstr "<b>Pamests klons</b>" -#: ../src/spiral-context.cpp:304 +#: ../src/spiral-context.cpp:303 msgid "<b>Ctrl</b>: snap angle" msgstr "<b>Ctrl</b>: piesaistes leņķis" -#: ../src/spiral-context.cpp:306 +#: ../src/spiral-context.cpp:305 msgid "<b>Alt</b>: lock spiral radius" msgstr "<b>Alt</b>: slēgt spirāles rādiusu" @@ -12716,119 +12545,119 @@ msgstr "<b>Spirāle</b>: rādiuss %s, leņķis %5g°; ar <b>Ctrl</b> - piesa msgid "Create spiral" msgstr "Izveidot spirāli" -#: ../src/splivarot.cpp:68 -#: ../src/splivarot.cpp:74 +#: ../src/splivarot.cpp:69 +#: ../src/splivarot.cpp:75 msgid "Union" msgstr "Apvienojums" -#: ../src/splivarot.cpp:80 +#: ../src/splivarot.cpp:81 msgid "Intersection" msgstr "Šķēlums" -#: ../src/splivarot.cpp:86 -#: ../src/splivarot.cpp:92 +#: ../src/splivarot.cpp:87 +#: ../src/splivarot.cpp:93 msgid "Difference" msgstr "Atšķirība" -#: ../src/splivarot.cpp:98 +#: ../src/splivarot.cpp:99 msgid "Exclusion" msgstr "Izslēgšana" -#: ../src/splivarot.cpp:103 +#: ../src/splivarot.cpp:104 msgid "Division" msgstr "Dalīšana" -#: ../src/splivarot.cpp:108 +#: ../src/splivarot.cpp:109 msgid "Cut path" msgstr "Sadalīt līniju" -#: ../src/splivarot.cpp:123 +#: ../src/splivarot.cpp:134 msgid "Select <b>at least 2 paths</b> to perform a boolean operation." msgstr "Atlasiet <b>vismaz 2 ceļus</b>, lai veiktu Bula darbību." -#: ../src/splivarot.cpp:127 +#: ../src/splivarot.cpp:138 msgid "Select <b>at least 1 path</b> to perform a boolean union." msgstr "Atlasiet <b>vismaz 1 ceļu</b>, lai veiktu Bula apvienošanu." -#: ../src/splivarot.cpp:133 +#: ../src/splivarot.cpp:144 msgid "Select <b>exactly 2 paths</b> to perform difference, division, or path cut." msgstr "Atlasiet <b>tieši 2 ceļus</b>, lai veiktu atņemsanu, dalīšanu vai ceļa griešanu. " -#: ../src/splivarot.cpp:149 -#: ../src/splivarot.cpp:164 +#: ../src/splivarot.cpp:160 +#: ../src/splivarot.cpp:175 msgid "Unable to determine the <b>z-order</b> of the objects selected for difference, XOR, division, or path cut." msgstr "Nav iespējams noteikt kārtību uz <b>z-ass</b> objektiem, kas atlasīti atņemšanai, XOR, dalīšanai vai ceļa griešanai." -#: ../src/splivarot.cpp:194 +#: ../src/splivarot.cpp:205 msgid "One of the objects is <b>not a path</b>, cannot perform boolean operation." msgstr "Viens no objektiem <b>nav ceļš</b>, nav iespējams izpildīt Bula darbību." -#: ../src/splivarot.cpp:918 +#: ../src/splivarot.cpp:954 msgid "Select <b>stroked path(s)</b> to convert stroke to path." msgstr "Atlasiet <b>apmales ceļu(s)</b>, lai pārveidotu apmali par ceļu." -#: ../src/splivarot.cpp:1271 +#: ../src/splivarot.cpp:1307 msgid "Convert stroke to path" msgstr "Pārvērst apmali par ceļu" #. TRANSLATORS: "to outline" means "to convert stroke to path" -#: ../src/splivarot.cpp:1274 +#: ../src/splivarot.cpp:1310 msgid "<b>No stroked paths</b> in the selection." msgstr "Atlasītajā nav <b>vilktu ceļu</b>." -#: ../src/splivarot.cpp:1345 +#: ../src/splivarot.cpp:1381 msgid "Selected object is <b>not a path</b>, cannot inset/outset." msgstr "Atlasītais objekts <b>nav ceļs</b>, nav iespējams saīsināt/pagarināt." -#: ../src/splivarot.cpp:1441 -#: ../src/splivarot.cpp:1506 +#: ../src/splivarot.cpp:1477 +#: ../src/splivarot.cpp:1542 msgid "Create linked offset" msgstr "Izveidot saistīto nobīdi" -#: ../src/splivarot.cpp:1442 -#: ../src/splivarot.cpp:1507 +#: ../src/splivarot.cpp:1478 +#: ../src/splivarot.cpp:1543 msgid "Create dynamic offset" msgstr "Izveidot dinamisko nobīdi" -#: ../src/splivarot.cpp:1532 +#: ../src/splivarot.cpp:1568 msgid "Select <b>path(s)</b> to inset/outset." msgstr "Atlasiet saīsināmo(s)/pagarināmo(s) <b>ceļus</b>." -#: ../src/splivarot.cpp:1745 +#: ../src/splivarot.cpp:1781 msgid "Outset path" msgstr "Pagarināt ceļu" -#: ../src/splivarot.cpp:1745 +#: ../src/splivarot.cpp:1781 msgid "Inset path" msgstr "Saīsināt ceļu" -#: ../src/splivarot.cpp:1747 +#: ../src/splivarot.cpp:1783 msgid "<b>No paths</b> to inset/outset in the selection." msgstr "Atlasītajā <b>nav</b> saīsināmu/pagarināmu <b>ceļu</b>." -#: ../src/splivarot.cpp:1909 +#: ../src/splivarot.cpp:1945 msgid "Simplifying paths (separately):" msgstr "Vienkāršo ceļus (atsevišķi):" -#: ../src/splivarot.cpp:1911 +#: ../src/splivarot.cpp:1947 msgid "Simplifying paths:" msgstr "Vienkāršo ceļus:" -#: ../src/splivarot.cpp:1948 +#: ../src/splivarot.cpp:1984 #, c-format msgid "%s <b>%d</b> of <b>%d</b> paths simplified..." msgstr "%s <b>%d</b> no <b>%d</b> ceļiem vienkāršoti..." -#: ../src/splivarot.cpp:1960 +#: ../src/splivarot.cpp:1996 #, c-format msgid "<b>%d</b> paths simplified." msgstr "<b>%d</b> ceļi vienkāršoti." -#: ../src/splivarot.cpp:1974 +#: ../src/splivarot.cpp:2010 msgid "Select <b>path(s)</b> to simplify." msgstr "Atlasiet vienkāršojamo(s) <b>ceļu(s)</b>." -#: ../src/splivarot.cpp:1990 +#: ../src/splivarot.cpp:2026 msgid "<b>No paths</b> to simplify in the selection." msgstr "Atlasītajā <b>nav vienkāršojamu ceļu</b>." @@ -12858,12 +12687,12 @@ msgid "<b>Nothing selected!</b> Select objects to spray." msgstr "<b>Nekas nav atlasīts!</b> Atlasiet izsmidzināmos objektus." #: ../src/spray-context.cpp:745 -#: ../src/widgets/spray-toolbar.cpp:182 +#: ../src/widgets/spray-toolbar.cpp:178 msgid "Spray with copies" msgstr "Smidzināt kopijas" #: ../src/spray-context.cpp:749 -#: ../src/widgets/spray-toolbar.cpp:189 +#: ../src/widgets/spray-toolbar.cpp:185 msgid "Spray with clones" msgstr "Smidzināt klonus" @@ -12871,7 +12700,7 @@ msgstr "Smidzināt klonus" msgid "Spray in single path" msgstr "Izsmidzināt vienā ceļā" -#: ../src/star-context.cpp:320 +#: ../src/star-context.cpp:319 msgid "<b>Ctrl</b>: snap angle; keep rays radial" msgstr "<b>Ctrl</b>: piesaistīt leņķim; saglabāt starus radiālus" @@ -12907,7 +12736,7 @@ msgid "The flowed text(s) must be <b>visible</b> in order to be put on a path." msgstr "Lai novietotu uz ceļa, teksta aizpildījumam(-iem) jābūt <b>redzamam (-iem)</b>." #: ../src/text-chemistry.cpp:183 -#: ../src/verbs.cpp:2434 +#: ../src/verbs.cpp:2489 msgid "Put text on path" msgstr "Izkārtot tekstu gar ceļu" @@ -12920,7 +12749,7 @@ msgid "<b>No texts-on-paths</b> in the selection." msgstr "Atlasītajā <b>nav teksta gar ceļu</b>." #: ../src/text-chemistry.cpp:219 -#: ../src/verbs.cpp:2436 +#: ../src/verbs.cpp:2491 msgid "Remove text from path" msgstr "Aizvākt tekstu no ceļa" @@ -12965,141 +12794,141 @@ msgstr "Pārvērst teksta aizpildījumu par tekstu" msgid "<b>No flowed text(s)</b> to convert in the selection." msgstr "Atlasītajā <b>nav</b> pārvēršama(-u) <b>aizpildošā(-o) teksta(-u)</b>." -#: ../src/text-context.cpp:426 +#: ../src/text-context.cpp:425 msgid "<b>Click</b> to edit the text, <b>drag</b> to select part of the text." msgstr "<b>Uzklikšķiniet</b>, lai labotu tekstu, <b>velciet</b> - lai atlasītu teksta daļu." -#: ../src/text-context.cpp:428 +#: ../src/text-context.cpp:427 msgid "<b>Click</b> to edit the flowed text, <b>drag</b> to select part of the text." msgstr "<b>Uzklikšķieniet</b>, lai labotu teksta aizpildījumu, <b>velciet</b>, lai atlasītu daļu teksta." -#: ../src/text-context.cpp:482 +#: ../src/text-context.cpp:481 msgid "Create text" msgstr "Izveidot tekstu" -#: ../src/text-context.cpp:507 +#: ../src/text-context.cpp:506 msgid "Non-printable character" msgstr "Nedrukājama rakstzīme" -#: ../src/text-context.cpp:522 +#: ../src/text-context.cpp:521 msgid "Insert Unicode character" msgstr "Ievietot Unikoda rakstzīmi" -#: ../src/text-context.cpp:557 +#: ../src/text-context.cpp:556 #, c-format msgid "Unicode (<b>Enter</b> to finish): %s: %s" msgstr "Unikods (<b>Enter</b>, lai pabeigtu): %s: %s" -#: ../src/text-context.cpp:559 -#: ../src/text-context.cpp:868 +#: ../src/text-context.cpp:558 +#: ../src/text-context.cpp:869 msgid "Unicode (<b>Enter</b> to finish): " msgstr "Unikods (<b>Enter</b>, lai pabeigtu): " -#: ../src/text-context.cpp:645 +#: ../src/text-context.cpp:646 #, c-format msgid "<b>Flowed text frame</b>: %s × %s" msgstr "<b>Rāmis ar aizpildošo tekstu</b>: %s × %s" -#: ../src/text-context.cpp:702 +#: ../src/text-context.cpp:703 msgid "Type text; <b>Enter</b> to start new line." msgstr "Ievadiet tekstu; nospiediet <b>Enter</b> jaunas rindas sākšanai." -#: ../src/text-context.cpp:713 +#: ../src/text-context.cpp:714 msgid "Flowed text is created." msgstr "Izveidots aizpildījums ar tekstu." -#: ../src/text-context.cpp:715 +#: ../src/text-context.cpp:716 msgid "Create flowed text" msgstr "Izveidot aizpildījumu ar tekstu" -#: ../src/text-context.cpp:717 +#: ../src/text-context.cpp:718 msgid "The frame is <b>too small</b> for the current font size. Flowed text not created." msgstr "Rāmis ir <b>pārāk mazs</b> izvēlētajam fonta izmēram. Teksta aizpildījums nav izveidots." -#: ../src/text-context.cpp:853 +#: ../src/text-context.cpp:854 msgid "No-break space" msgstr "Neatdalošā atstarpe" -#: ../src/text-context.cpp:855 +#: ../src/text-context.cpp:856 msgid "Insert no-break space" msgstr "Ievietot neatdalošo atstarpi" -#: ../src/text-context.cpp:892 +#: ../src/text-context.cpp:893 msgid "Make bold" msgstr "Treknināt" -#: ../src/text-context.cpp:910 +#: ../src/text-context.cpp:911 msgid "Make italic" msgstr "Pārveidot kursīvā" -#: ../src/text-context.cpp:949 +#: ../src/text-context.cpp:950 msgid "New line" msgstr "Jauna rinda" -#: ../src/text-context.cpp:991 +#: ../src/text-context.cpp:992 msgid "Backspace" msgstr "Dzēst" -#: ../src/text-context.cpp:1047 +#: ../src/text-context.cpp:1048 msgid "Kern to the left" msgstr "Rakstsavirze pa kreisi" -#: ../src/text-context.cpp:1072 +#: ../src/text-context.cpp:1073 msgid "Kern to the right" msgstr "Rakstsavirze pa labi" -#: ../src/text-context.cpp:1097 +#: ../src/text-context.cpp:1098 msgid "Kern up" msgstr "Rakstsavirze augšup" -#: ../src/text-context.cpp:1122 +#: ../src/text-context.cpp:1123 msgid "Kern down" msgstr "Rakstsavirze lejup" -#: ../src/text-context.cpp:1198 +#: ../src/text-context.cpp:1199 msgid "Rotate counterclockwise" msgstr "Griezt pretēji pulksteņrādītājam" -#: ../src/text-context.cpp:1219 +#: ../src/text-context.cpp:1220 msgid "Rotate clockwise" msgstr "Griezt pulksteņrādītāja virzienā" -#: ../src/text-context.cpp:1236 +#: ../src/text-context.cpp:1237 msgid "Contract line spacing" msgstr "Samazināt rindu atstatumus" -#: ../src/text-context.cpp:1243 +#: ../src/text-context.cpp:1244 msgid "Contract letter spacing" msgstr "Samazināt burtu atstatumus" -#: ../src/text-context.cpp:1261 +#: ../src/text-context.cpp:1262 msgid "Expand line spacing" msgstr "Paplašināt rindu atstatumus" -#: ../src/text-context.cpp:1268 +#: ../src/text-context.cpp:1269 msgid "Expand letter spacing" msgstr "Paplašināt burtu atstatumus" -#: ../src/text-context.cpp:1396 +#: ../src/text-context.cpp:1397 msgid "Paste text" msgstr "Ielīmet tekstu" -#: ../src/text-context.cpp:1647 +#: ../src/text-context.cpp:1648 #, c-format msgid "Type or edit flowed text (%d characters%s); <b>Enter</b> to start new paragraph." msgstr "Ievadiet vai labojiet teksta aizpildījumu (%d zīmes%s); <b>Enter</b> - lai sāktu jaunu rindkopu." -#: ../src/text-context.cpp:1649 +#: ../src/text-context.cpp:1650 #, c-format msgid "Type or edit text (%d characters%s); <b>Enter</b> to start new line." msgstr "Ievadiet vai labojiet tekstu (%d rakstzīmes%s); nospiediet <b>Enter</b> jaunas rindas sākšanai." -#: ../src/text-context.cpp:1657 +#: ../src/text-context.cpp:1658 #: ../src/tools-switch.cpp:201 msgid "<b>Click</b> to select or create text, <b>drag</b> to create flowed text; then type." msgstr "<b>Uzklikšķiniet</b>, lai atlasītu vai izveidotu tekstu, <b>velciet</b>, lai izveidotu teksta aizpildījumu un tad rakstiet." -#: ../src/text-context.cpp:1759 +#: ../src/text-context.cpp:1760 msgid "Type text" msgstr "Ievadiet tekstu" @@ -13436,259 +13265,259 @@ msgstr "about.svg" msgid "translator-credits" msgstr "tulkotāji" -#: ../src/ui/dialog/align-and-distribute.cpp:219 -#: ../src/ui/dialog/align-and-distribute.cpp:896 +#: ../src/ui/dialog/align-and-distribute.cpp:170 +#: ../src/ui/dialog/align-and-distribute.cpp:845 msgid "Align" msgstr "Līdzināt" -#: ../src/ui/dialog/align-and-distribute.cpp:391 -#: ../src/ui/dialog/align-and-distribute.cpp:897 +#: ../src/ui/dialog/align-and-distribute.cpp:340 +#: ../src/ui/dialog/align-and-distribute.cpp:846 msgid "Distribute" msgstr "Izkārtot" -#: ../src/ui/dialog/align-and-distribute.cpp:464 +#: ../src/ui/dialog/align-and-distribute.cpp:413 msgid "Minimum horizontal gap (in px units) between bounding boxes" msgstr "Minimālais horizontālais atstatums (px vienībās) starp robežrāmjiem" #. TRANSLATORS: "H:" stands for horizontal gap -#: ../src/ui/dialog/align-and-distribute.cpp:466 +#: ../src/ui/dialog/align-and-distribute.cpp:415 msgctxt "Gap" msgid "_H:" msgstr "_H" -#: ../src/ui/dialog/align-and-distribute.cpp:474 +#: ../src/ui/dialog/align-and-distribute.cpp:423 msgid "Minimum vertical gap (in px units) between bounding boxes" msgstr "Minimālais vertikālais atstatums (px vienībās) starp robežrāmjiem" #. TRANSLATORS: Vertical gap -#: ../src/ui/dialog/align-and-distribute.cpp:476 +#: ../src/ui/dialog/align-and-distribute.cpp:425 msgctxt "Gap" msgid "_V:" msgstr "_V:" -#: ../src/ui/dialog/align-and-distribute.cpp:512 -#: ../src/ui/dialog/align-and-distribute.cpp:899 -#: ../src/widgets/connector-toolbar.cpp:427 +#: ../src/ui/dialog/align-and-distribute.cpp:461 +#: ../src/ui/dialog/align-and-distribute.cpp:848 +#: ../src/widgets/connector-toolbar.cpp:423 msgid "Remove overlaps" msgstr "Aizvākt pārklāšanos" -#: ../src/ui/dialog/align-and-distribute.cpp:543 -#: ../src/widgets/connector-toolbar.cpp:256 +#: ../src/ui/dialog/align-and-distribute.cpp:492 +#: ../src/widgets/connector-toolbar.cpp:252 msgid "Arrange connector network" msgstr "Sakārtot savienotāju tīklu" -#: ../src/ui/dialog/align-and-distribute.cpp:636 +#: ../src/ui/dialog/align-and-distribute.cpp:585 msgid "Exchange Positions" msgstr "Samainīt atrašanās vietas" -#: ../src/ui/dialog/align-and-distribute.cpp:670 +#: ../src/ui/dialog/align-and-distribute.cpp:619 msgid "Unclump" msgstr "Izretināt" -#: ../src/ui/dialog/align-and-distribute.cpp:742 +#: ../src/ui/dialog/align-and-distribute.cpp:691 msgid "Randomize positions" msgstr "Dažādot atrašanās vietas" -#: ../src/ui/dialog/align-and-distribute.cpp:845 +#: ../src/ui/dialog/align-and-distribute.cpp:794 msgid "Distribute text baselines" msgstr "Izkliedēt teksta bāzes līnijas" -#: ../src/ui/dialog/align-and-distribute.cpp:868 +#: ../src/ui/dialog/align-and-distribute.cpp:817 msgid "Align text baselines" msgstr "Līdzināt teksta bāzes līnijas" -#: ../src/ui/dialog/align-and-distribute.cpp:898 +#: ../src/ui/dialog/align-and-distribute.cpp:847 msgid "Rearrange" msgstr "Pārkārtot" -#: ../src/ui/dialog/align-and-distribute.cpp:900 -#: ../src/widgets/toolbox.cpp:1728 +#: ../src/ui/dialog/align-and-distribute.cpp:849 +#: ../src/widgets/toolbox.cpp:1722 msgid "Nodes" msgstr "Mezgli" -#: ../src/ui/dialog/align-and-distribute.cpp:914 +#: ../src/ui/dialog/align-and-distribute.cpp:863 msgid "Relative to: " msgstr "Attiecībā pret:" -#: ../src/ui/dialog/align-and-distribute.cpp:915 +#: ../src/ui/dialog/align-and-distribute.cpp:864 msgid "_Treat selection as group: " msgstr "Iz_turēties pret atlasīto kā pret grupu" #. Align -#: ../src/ui/dialog/align-and-distribute.cpp:921 -#: ../src/verbs.cpp:2865 -#: ../src/verbs.cpp:2866 +#: ../src/ui/dialog/align-and-distribute.cpp:870 +#: ../src/verbs.cpp:2928 +#: ../src/verbs.cpp:2929 msgid "Align right edges of objects to the left edge of the anchor" msgstr "Sakārtot objektu labās malas gar enkura kreiso malu" -#: ../src/ui/dialog/align-and-distribute.cpp:924 -#: ../src/verbs.cpp:2867 -#: ../src/verbs.cpp:2868 +#: ../src/ui/dialog/align-and-distribute.cpp:873 +#: ../src/verbs.cpp:2930 +#: ../src/verbs.cpp:2931 msgid "Align left edges" msgstr "Līdzināt kreisās malas" -#: ../src/ui/dialog/align-and-distribute.cpp:927 -#: ../src/verbs.cpp:2869 -#: ../src/verbs.cpp:2870 +#: ../src/ui/dialog/align-and-distribute.cpp:876 +#: ../src/verbs.cpp:2932 +#: ../src/verbs.cpp:2933 msgid "Center on vertical axis" msgstr "Centrēt uz vertikālās ass" -#: ../src/ui/dialog/align-and-distribute.cpp:930 -#: ../src/verbs.cpp:2871 -#: ../src/verbs.cpp:2872 +#: ../src/ui/dialog/align-and-distribute.cpp:879 +#: ../src/verbs.cpp:2934 +#: ../src/verbs.cpp:2935 msgid "Align right sides" msgstr "Līdzināt labās malas" -#: ../src/ui/dialog/align-and-distribute.cpp:933 -#: ../src/verbs.cpp:2873 -#: ../src/verbs.cpp:2874 +#: ../src/ui/dialog/align-and-distribute.cpp:882 +#: ../src/verbs.cpp:2936 +#: ../src/verbs.cpp:2937 msgid "Align left edges of objects to the right edge of the anchor" msgstr "Sakārtot objektu kreisās malas gar enkura labo malu" -#: ../src/ui/dialog/align-and-distribute.cpp:936 -#: ../src/verbs.cpp:2875 -#: ../src/verbs.cpp:2876 +#: ../src/ui/dialog/align-and-distribute.cpp:885 +#: ../src/verbs.cpp:2938 +#: ../src/verbs.cpp:2939 msgid "Align bottom edges of objects to the top edge of the anchor" msgstr "Sakārtot objektu apakšējās malas gar enkura augšējo malu" -#: ../src/ui/dialog/align-and-distribute.cpp:939 -#: ../src/verbs.cpp:2877 -#: ../src/verbs.cpp:2878 +#: ../src/ui/dialog/align-and-distribute.cpp:888 +#: ../src/verbs.cpp:2940 +#: ../src/verbs.cpp:2941 msgid "Align top edges" msgstr "Līdzināt augšējās malas" -#: ../src/ui/dialog/align-and-distribute.cpp:942 -#: ../src/verbs.cpp:2879 -#: ../src/verbs.cpp:2880 +#: ../src/ui/dialog/align-and-distribute.cpp:891 +#: ../src/verbs.cpp:2942 +#: ../src/verbs.cpp:2943 msgid "Center on horizontal axis" msgstr "Centrēt uz horizontālās ass" -#: ../src/ui/dialog/align-and-distribute.cpp:945 -#: ../src/verbs.cpp:2881 -#: ../src/verbs.cpp:2882 +#: ../src/ui/dialog/align-and-distribute.cpp:894 +#: ../src/verbs.cpp:2944 +#: ../src/verbs.cpp:2945 msgid "Align bottom edges" msgstr "Līdzināt apakšējās malas" -#: ../src/ui/dialog/align-and-distribute.cpp:948 -#: ../src/verbs.cpp:2883 -#: ../src/verbs.cpp:2884 +#: ../src/ui/dialog/align-and-distribute.cpp:897 +#: ../src/verbs.cpp:2946 +#: ../src/verbs.cpp:2947 msgid "Align top edges of objects to the bottom edge of the anchor" msgstr "Sakārtot objektu augšējās malas gar enkura apakšējo malu" -#: ../src/ui/dialog/align-and-distribute.cpp:953 +#: ../src/ui/dialog/align-and-distribute.cpp:902 msgid "Align baseline anchors of texts horizontally" msgstr "Līdzināt teksta bāzes līnijas enkurus horizontāli" -#: ../src/ui/dialog/align-and-distribute.cpp:956 +#: ../src/ui/dialog/align-and-distribute.cpp:905 msgid "Align baselines of texts" msgstr "Līdzināt tekstu bāzes līnijas" -#: ../src/ui/dialog/align-and-distribute.cpp:961 +#: ../src/ui/dialog/align-and-distribute.cpp:910 msgid "Make horizontal gaps between objects equal" msgstr "Vienādot horizontālās atstarpes starp objektiem" -#: ../src/ui/dialog/align-and-distribute.cpp:965 +#: ../src/ui/dialog/align-and-distribute.cpp:914 msgid "Distribute left edges equidistantly" msgstr "Izkliedēt kreisās malas vienādos attālumos" -#: ../src/ui/dialog/align-and-distribute.cpp:968 +#: ../src/ui/dialog/align-and-distribute.cpp:917 msgid "Distribute centers equidistantly horizontally" msgstr "Izkliedēt centrus vienādos attālumos horizontāli" -#: ../src/ui/dialog/align-and-distribute.cpp:971 +#: ../src/ui/dialog/align-and-distribute.cpp:920 msgid "Distribute right edges equidistantly" msgstr "Izkliedēt labās malas vienādos attālumos" -#: ../src/ui/dialog/align-and-distribute.cpp:975 +#: ../src/ui/dialog/align-and-distribute.cpp:924 msgid "Make vertical gaps between objects equal" msgstr "Vienādot vertikālās atstarpes starp objektiem" -#: ../src/ui/dialog/align-and-distribute.cpp:979 +#: ../src/ui/dialog/align-and-distribute.cpp:928 msgid "Distribute top edges equidistantly" msgstr "Izkliedēt augšējās malas vienādos attālumos" -#: ../src/ui/dialog/align-and-distribute.cpp:982 +#: ../src/ui/dialog/align-and-distribute.cpp:931 msgid "Distribute centers equidistantly vertically" msgstr "Izkliedēt centrus vienādos attālumos vertikāli" -#: ../src/ui/dialog/align-and-distribute.cpp:985 +#: ../src/ui/dialog/align-and-distribute.cpp:934 msgid "Distribute bottom edges equidistantly" msgstr "Izkliedēt apakšējās malas vienādos attālumos" -#: ../src/ui/dialog/align-and-distribute.cpp:990 +#: ../src/ui/dialog/align-and-distribute.cpp:939 msgid "Distribute baseline anchors of texts horizontally" msgstr "Izklīdināt teksta bāzes līnijas enkurus horizontāli" -#: ../src/ui/dialog/align-and-distribute.cpp:993 +#: ../src/ui/dialog/align-and-distribute.cpp:942 msgid "Distribute baselines of texts vertically" msgstr "Izkliedēt tekstu bāzes līnijas vertikāli" -#: ../src/ui/dialog/align-and-distribute.cpp:999 -#: ../src/widgets/connector-toolbar.cpp:389 +#: ../src/ui/dialog/align-and-distribute.cpp:948 +#: ../src/widgets/connector-toolbar.cpp:385 msgid "Nicely arrange selected connector network" msgstr "Glīti sakārtot atlasīto savienotāju tīklu" -#: ../src/ui/dialog/align-and-distribute.cpp:1002 +#: ../src/ui/dialog/align-and-distribute.cpp:951 msgid "Exchange positions of selected objects - selection order" msgstr "Mainīt atlasīto objektu pozīcijas - atlases secībā" -#: ../src/ui/dialog/align-and-distribute.cpp:1005 +#: ../src/ui/dialog/align-and-distribute.cpp:954 msgid "Exchange positions of selected objects - stacking order" msgstr "Mainīt atlasīto objektu pozīcijas - krāvuma secībā" -#: ../src/ui/dialog/align-and-distribute.cpp:1008 +#: ../src/ui/dialog/align-and-distribute.cpp:957 msgid "Exchange positions of selected objects - clockwise rotate" msgstr "Mainīt atlasīto objektu pozīcijas - mainīt uz riņki" -#: ../src/ui/dialog/align-and-distribute.cpp:1013 +#: ../src/ui/dialog/align-and-distribute.cpp:962 msgid "Randomize centers in both dimensions" msgstr "Dažādot centrus abās dimensijās" -#: ../src/ui/dialog/align-and-distribute.cpp:1016 +#: ../src/ui/dialog/align-and-distribute.cpp:965 msgid "Unclump objects: try to equalize edge-to-edge distances" msgstr "Izretināt objektus: censties vienādot attālumu starp malām" -#: ../src/ui/dialog/align-and-distribute.cpp:1021 +#: ../src/ui/dialog/align-and-distribute.cpp:970 msgid "Move objects as little as possible so that their bounding boxes do not overlap" msgstr "Pārvietot objektus cik maz vien iespējams, lai to robežrāmji nepārklātos" -#: ../src/ui/dialog/align-and-distribute.cpp:1029 +#: ../src/ui/dialog/align-and-distribute.cpp:978 msgid "Align selected nodes to a common horizontal line" msgstr "Sakārtot atlasītos mezglus gar kopēju horizontālu līniju" -#: ../src/ui/dialog/align-and-distribute.cpp:1032 +#: ../src/ui/dialog/align-and-distribute.cpp:981 msgid "Align selected nodes to a common vertical line" msgstr "Sakārtot atlasītos mezglus gar kopēju vertikālu līniju" -#: ../src/ui/dialog/align-and-distribute.cpp:1035 +#: ../src/ui/dialog/align-and-distribute.cpp:984 msgid "Distribute selected nodes horizontally" msgstr "Izkliedēt atlasītos mezglus horizontāli" -#: ../src/ui/dialog/align-and-distribute.cpp:1038 +#: ../src/ui/dialog/align-and-distribute.cpp:987 msgid "Distribute selected nodes vertically" msgstr "Izkliedēt atlasītos mezglus vertikāli" #. Rest of the widgetry -#: ../src/ui/dialog/align-and-distribute.cpp:1043 +#: ../src/ui/dialog/align-and-distribute.cpp:992 msgid "Last selected" msgstr "Pēdējais atlasītais" -#: ../src/ui/dialog/align-and-distribute.cpp:1044 +#: ../src/ui/dialog/align-and-distribute.cpp:993 msgid "First selected" msgstr "Pirmais atlasītais" -#: ../src/ui/dialog/align-and-distribute.cpp:1045 +#: ../src/ui/dialog/align-and-distribute.cpp:994 msgid "Biggest object" msgstr "Lielākais objekts" -#: ../src/ui/dialog/align-and-distribute.cpp:1046 +#: ../src/ui/dialog/align-and-distribute.cpp:995 msgid "Smallest object" msgstr "Mazākais objekts" -#: ../src/ui/dialog/align-and-distribute.cpp:1049 +#: ../src/ui/dialog/align-and-distribute.cpp:998 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1555 -#: ../src/verbs.cpp:173 -#: ../src/widgets/desktop-widget.cpp:2004 +#: ../src/verbs.cpp:175 +#: ../src/widgets/desktop-widget.cpp:2008 #: ../share/extensions/printing_marks.inx.h:18 msgid "Selection" msgstr "Atlasītais" @@ -13749,7 +13578,6 @@ msgstr "Vēstules" #: ../src/ui/dialog/debug.cpp:87 #: ../src/ui/dialog/messages.cpp:47 -#: ../src/ui/dialog/scriptdialog.cpp:182 msgid "_Clear" msgstr "_Attīrīt" @@ -13763,275 +13591,275 @@ msgid "Release log messages" msgstr "Atbrīvot žurnāla ierakstus" #: ../src/ui/dialog/document-metadata.cpp:88 -#: ../src/ui/dialog/document-properties.cpp:152 +#: ../src/ui/dialog/document-properties.cpp:151 msgid "Metadata" msgstr "Metadati" #: ../src/ui/dialog/document-metadata.cpp:89 -#: ../src/ui/dialog/document-properties.cpp:153 +#: ../src/ui/dialog/document-properties.cpp:152 msgid "License" msgstr "Licence" #: ../src/ui/dialog/document-metadata.cpp:126 -#: ../src/ui/dialog/document-properties.cpp:960 +#: ../src/ui/dialog/document-properties.cpp:959 msgid "<b>Dublin Core Entities</b>" msgstr "<b>Dublin Core</b> elementi" #: ../src/ui/dialog/document-metadata.cpp:168 -#: ../src/ui/dialog/document-properties.cpp:1022 +#: ../src/ui/dialog/document-properties.cpp:1021 msgid "<b>License</b>" msgstr "<b>Licence</b>" #. --------------------------------------------------------------- -#: ../src/ui/dialog/document-properties.cpp:105 +#: ../src/ui/dialog/document-properties.cpp:104 msgid "Show page _border" msgstr "Rādīt lapas malas" -#: ../src/ui/dialog/document-properties.cpp:105 +#: ../src/ui/dialog/document-properties.cpp:104 msgid "If set, rectangular page border is shown" msgstr "Ja iestatīts, tiek rādīta taisnstūraina lapas mala" -#: ../src/ui/dialog/document-properties.cpp:106 +#: ../src/ui/dialog/document-properties.cpp:105 msgid "Border on _top of drawing" msgstr "Rādīt malu virs zīmējuma" -#: ../src/ui/dialog/document-properties.cpp:106 +#: ../src/ui/dialog/document-properties.cpp:105 msgid "If set, border is always on top of the drawing" msgstr "Ja iestatīts, mala vienmēr ir virs zīmējuma " -#: ../src/ui/dialog/document-properties.cpp:107 +#: ../src/ui/dialog/document-properties.cpp:106 msgid "_Show border shadow" msgstr "Rādīt mala_s ēnu" -#: ../src/ui/dialog/document-properties.cpp:107 +#: ../src/ui/dialog/document-properties.cpp:106 msgid "If set, page border shows a shadow on its right and lower side" msgstr "Ja iestatīts, lapas mala met ēnu gar labo un apakšējo malu" -#: ../src/ui/dialog/document-properties.cpp:108 +#: ../src/ui/dialog/document-properties.cpp:107 msgid "Back_ground color:" msgstr "Fo_na krāsa:" -#: ../src/ui/dialog/document-properties.cpp:108 +#: ../src/ui/dialog/document-properties.cpp:107 msgid "Color of the page background. Note: transparency setting ignored while editing but used when exporting to bitmap." msgstr "Lapas fona krāsa. Piezīme: caurspīdīguma iestatījums labošanas laikā netiek ņemts vērā, taču tiek izmantots eksportējot bitkarti." -#: ../src/ui/dialog/document-properties.cpp:109 +#: ../src/ui/dialog/document-properties.cpp:108 msgid "Border _color:" msgstr "Malas _krāsa:" -#: ../src/ui/dialog/document-properties.cpp:109 +#: ../src/ui/dialog/document-properties.cpp:108 msgid "Page border color" msgstr "Lapas malas krāsa" -#: ../src/ui/dialog/document-properties.cpp:109 +#: ../src/ui/dialog/document-properties.cpp:108 msgid "Color of the page border" msgstr "Lapas malas krāsa" -#: ../src/ui/dialog/document-properties.cpp:110 +#: ../src/ui/dialog/document-properties.cpp:109 msgid "Default _units:" msgstr "Nokl_usētās vienības:" #. --------------------------------------------------------------- #. General snap options -#: ../src/ui/dialog/document-properties.cpp:114 +#: ../src/ui/dialog/document-properties.cpp:113 msgid "Show _guides" msgstr "Rādīt palī_glīnijas" -#: ../src/ui/dialog/document-properties.cpp:114 +#: ../src/ui/dialog/document-properties.cpp:113 msgid "Show or hide guides" msgstr "Rādīt vai slēpt palīglīnijas" -#: ../src/ui/dialog/document-properties.cpp:115 +#: ../src/ui/dialog/document-properties.cpp:114 msgid "Guide co_lor:" msgstr "Palīg_līniju krāsa:" -#: ../src/ui/dialog/document-properties.cpp:115 +#: ../src/ui/dialog/document-properties.cpp:114 msgid "Guideline color" msgstr "Palīg_līniju krāsa" -#: ../src/ui/dialog/document-properties.cpp:115 +#: ../src/ui/dialog/document-properties.cpp:114 msgid "Color of guidelines" msgstr "Palīglīniju krāsa:" -#: ../src/ui/dialog/document-properties.cpp:116 +#: ../src/ui/dialog/document-properties.cpp:115 msgid "_Highlight color:" msgstr "Iz_celšanas krāsa:" -#: ../src/ui/dialog/document-properties.cpp:116 +#: ../src/ui/dialog/document-properties.cpp:115 msgid "Highlighted guideline color" msgstr "Izceltas palīglīnijas krāsa" -#: ../src/ui/dialog/document-properties.cpp:116 +#: ../src/ui/dialog/document-properties.cpp:115 msgid "Color of a guideline when it is under mouse" msgstr "Palīglīnijas krāsa laikā, kad tā atrodas zem peles kursora" #. --------------------------------------------------------------- -#: ../src/ui/dialog/document-properties.cpp:118 +#: ../src/ui/dialog/document-properties.cpp:117 msgid "Snap _distance" msgstr "Piesais_tes attālums" -#: ../src/ui/dialog/document-properties.cpp:118 +#: ../src/ui/dialog/document-properties.cpp:117 msgid "Snap only when _closer than:" msgstr "Piesaistīt tikai tad, ja attālums ir _mazāks par:" -#: ../src/ui/dialog/document-properties.cpp:118 -#: ../src/ui/dialog/document-properties.cpp:123 -#: ../src/ui/dialog/document-properties.cpp:128 +#: ../src/ui/dialog/document-properties.cpp:117 +#: ../src/ui/dialog/document-properties.cpp:122 +#: ../src/ui/dialog/document-properties.cpp:127 msgid "Always snap" msgstr "Vienmēr piesaistīt" -#: ../src/ui/dialog/document-properties.cpp:119 +#: ../src/ui/dialog/document-properties.cpp:118 msgid "Snapping distance, in screen pixels, for snapping to objects" msgstr "Piesaistes attālums ekrāna pikseļos piesaistei pie objektiem" -#: ../src/ui/dialog/document-properties.cpp:119 +#: ../src/ui/dialog/document-properties.cpp:118 msgid "Always snap to objects, regardless of their distance" msgstr "Vienmēr piesaistīt objektiem, neskatoties uz attālu" -#: ../src/ui/dialog/document-properties.cpp:120 +#: ../src/ui/dialog/document-properties.cpp:119 msgid "If set, objects only snap to another object when it's within the range specified below" msgstr "Ja iestatīts, objekti tiek piesaistīti citam objektam tikai tad, ja tie atrodas norādītajā attālumā vai tuvāk" #. Options for snapping to grids -#: ../src/ui/dialog/document-properties.cpp:123 +#: ../src/ui/dialog/document-properties.cpp:122 msgid "Snap d_istance" msgstr "P_iesaistes attālums" -#: ../src/ui/dialog/document-properties.cpp:123 +#: ../src/ui/dialog/document-properties.cpp:122 msgid "Snap only when c_loser than:" msgstr "Piesaistīt tikai tad, ja attā_lums ir mazāks par:" -#: ../src/ui/dialog/document-properties.cpp:124 +#: ../src/ui/dialog/document-properties.cpp:123 msgid "Snapping distance, in screen pixels, for snapping to grid" msgstr "Piesaistes attālums ekrāna pikseļos piesaistei pie režģa" -#: ../src/ui/dialog/document-properties.cpp:124 +#: ../src/ui/dialog/document-properties.cpp:123 msgid "Always snap to grids, regardless of the distance" msgstr "Vienmēr piesaistīt režģim, neskatoties uz attālumu" -#: ../src/ui/dialog/document-properties.cpp:125 +#: ../src/ui/dialog/document-properties.cpp:124 msgid "If set, objects only snap to a grid line when it's within the range specified below" msgstr "Ja iestatīts, objekti tiek piesaistīti režģim tikai tad, ja tie atrodas norādītajā attālumā vai tuvāk" #. Options for snapping to guides -#: ../src/ui/dialog/document-properties.cpp:128 +#: ../src/ui/dialog/document-properties.cpp:127 msgid "Snap dist_ance" msgstr "Pies_aistes attālums" -#: ../src/ui/dialog/document-properties.cpp:128 +#: ../src/ui/dialog/document-properties.cpp:127 msgid "Snap only when close_r than:" msgstr "Piesaistīt tikai tad, ja attālums ir mazāks pa_r:" -#: ../src/ui/dialog/document-properties.cpp:129 +#: ../src/ui/dialog/document-properties.cpp:128 msgid "Snapping distance, in screen pixels, for snapping to guides" msgstr "Piesaistes attālums ekrāna pikseļos piesaistei pie palīglīnijām" -#: ../src/ui/dialog/document-properties.cpp:129 +#: ../src/ui/dialog/document-properties.cpp:128 msgid "Always snap to guides, regardless of the distance" msgstr "Vienmēr piesaistīt palīglīnijām, neskatoties uz attālumu" -#: ../src/ui/dialog/document-properties.cpp:130 +#: ../src/ui/dialog/document-properties.cpp:129 msgid "If set, objects only snap to a guide when it's within the range specified below" msgstr "Ja iestatīts, objekti tiek piesaistīti palīglīnijām tikai tad, ja tie atrodas norādītajā attālumā vai tuvāk" #. --------------------------------------------------------------- -#: ../src/ui/dialog/document-properties.cpp:133 +#: ../src/ui/dialog/document-properties.cpp:132 msgid "Snap to clip paths" msgstr "Piesaistīt izgriešanas ceļiem" -#: ../src/ui/dialog/document-properties.cpp:133 +#: ../src/ui/dialog/document-properties.cpp:132 msgid "When snapping to paths, then also try snapping to clip paths" msgstr "Piesaistot ceļiem, censties piesaistīt arī izgriešanas ceļiem" -#: ../src/ui/dialog/document-properties.cpp:134 +#: ../src/ui/dialog/document-properties.cpp:133 msgid "Snap to mask paths" msgstr "Piesaistīt maskas ceļam" -#: ../src/ui/dialog/document-properties.cpp:134 +#: ../src/ui/dialog/document-properties.cpp:133 msgid "When snapping to paths, then also try snapping to mask paths" msgstr "Piesaistot ceļiem censties piesaistīt arī masku ceļiem" -#: ../src/ui/dialog/document-properties.cpp:135 +#: ../src/ui/dialog/document-properties.cpp:134 msgid "Snap perpendicularly" msgstr "Piesaistīt perpendikulāri" -#: ../src/ui/dialog/document-properties.cpp:135 +#: ../src/ui/dialog/document-properties.cpp:134 msgid "When snapping to paths or guides, then also try snapping perpendicularly" msgstr "Piesaistot ceļiem vai palīglīnijām censties piesaistīt arī perpendikulāri" -#: ../src/ui/dialog/document-properties.cpp:136 +#: ../src/ui/dialog/document-properties.cpp:135 msgid "Snap tangentially" msgstr "Piesaistīt tangenciāli" -#: ../src/ui/dialog/document-properties.cpp:136 +#: ../src/ui/dialog/document-properties.cpp:135 msgid "When snapping to paths or guides, then also try snapping tangentially" msgstr "Piesaistot ceļiem vai palīglīnijām censties piesaistīt arī tangenciāli" -#: ../src/ui/dialog/document-properties.cpp:139 +#: ../src/ui/dialog/document-properties.cpp:138 msgctxt "Grid" msgid "_New" msgstr "Jau_ns" -#: ../src/ui/dialog/document-properties.cpp:139 +#: ../src/ui/dialog/document-properties.cpp:138 msgid "Create new grid." msgstr "Izveidot Jaunu režģi." -#: ../src/ui/dialog/document-properties.cpp:140 +#: ../src/ui/dialog/document-properties.cpp:139 msgctxt "Grid" msgid "_Remove" msgstr "_Aizvākt" -#: ../src/ui/dialog/document-properties.cpp:140 +#: ../src/ui/dialog/document-properties.cpp:139 msgid "Remove selected grid." msgstr "Aizvākt izvēlēto režģi." -#: ../src/ui/dialog/document-properties.cpp:147 -#: ../src/widgets/toolbox.cpp:1835 +#: ../src/ui/dialog/document-properties.cpp:146 +#: ../src/widgets/toolbox.cpp:1829 msgid "Guides" msgstr "Palīglīnijas" -#: ../src/ui/dialog/document-properties.cpp:149 -#: ../src/verbs.cpp:2684 +#: ../src/ui/dialog/document-properties.cpp:148 +#: ../src/verbs.cpp:2739 msgid "Snap" msgstr "Piesaistīt" -#: ../src/ui/dialog/document-properties.cpp:151 +#: ../src/ui/dialog/document-properties.cpp:150 msgid "Scripting" msgstr "Skriptēšana" -#: ../src/ui/dialog/document-properties.cpp:311 +#: ../src/ui/dialog/document-properties.cpp:310 msgid "<b>General</b>" msgstr "<b>Vispārīgie</b>" -#: ../src/ui/dialog/document-properties.cpp:313 +#: ../src/ui/dialog/document-properties.cpp:312 msgid "<b>Color</b>" msgstr "<b>Krāsa</b>" -#: ../src/ui/dialog/document-properties.cpp:315 +#: ../src/ui/dialog/document-properties.cpp:314 msgid "<b>Border</b>" msgstr "<b>Mala</b>" -#: ../src/ui/dialog/document-properties.cpp:317 +#: ../src/ui/dialog/document-properties.cpp:316 msgid "<b>Page Size</b>" msgstr "<b>Lapas izmērs</b>" -#: ../src/ui/dialog/document-properties.cpp:350 +#: ../src/ui/dialog/document-properties.cpp:349 msgid "<b>Guides</b>" msgstr "<b>Palīglīnijas</b>" -#: ../src/ui/dialog/document-properties.cpp:368 +#: ../src/ui/dialog/document-properties.cpp:367 msgid "<b>Snap to objects</b>" msgstr "<b>Piesaistīt objektiem</b>" -#: ../src/ui/dialog/document-properties.cpp:370 +#: ../src/ui/dialog/document-properties.cpp:369 msgid "<b>Snap to grids</b>" msgstr "<b>Piesaistīt režģiem</b>" -#: ../src/ui/dialog/document-properties.cpp:372 +#: ../src/ui/dialog/document-properties.cpp:371 msgid "<b>Snap to guides</b>" msgstr "<b>Piesaistīt palīglīnijām</b>" -#: ../src/ui/dialog/document-properties.cpp:374 +#: ../src/ui/dialog/document-properties.cpp:373 msgid "<b>Miscellaneous</b>" msgstr "<b>Dažādi</b>" @@ -14039,132 +13867,132 @@ msgstr "<b>Dažādi</b>" #. Inkscape::GC::release(defsRepr); #. inform the document, so we can undo #. Color Management -#: ../src/ui/dialog/document-properties.cpp:487 -#: ../src/verbs.cpp:2859 +#: ../src/ui/dialog/document-properties.cpp:486 +#: ../src/verbs.cpp:2912 msgid "Link Color Profile" msgstr "Piesaistīt krāsu profilu" -#: ../src/ui/dialog/document-properties.cpp:588 +#: ../src/ui/dialog/document-properties.cpp:587 msgid "Remove linked color profile" msgstr "Aizvākt piesaistīto krāsu profilu" -#: ../src/ui/dialog/document-properties.cpp:601 +#: ../src/ui/dialog/document-properties.cpp:600 msgid "<b>Linked Color Profiles:</b>" msgstr "<b>Piesaistītie krāsu profil:</b>" -#: ../src/ui/dialog/document-properties.cpp:603 +#: ../src/ui/dialog/document-properties.cpp:602 msgid "<b>Available Color Profiles:</b>" msgstr "<b>Pieejamie krāsu profili:</b>" -#: ../src/ui/dialog/document-properties.cpp:605 +#: ../src/ui/dialog/document-properties.cpp:604 msgid "Link Profile" msgstr "Piesaistīt profilu" -#: ../src/ui/dialog/document-properties.cpp:608 +#: ../src/ui/dialog/document-properties.cpp:607 msgid "Unlink Profile" msgstr "Atsaistīt profilu" -#: ../src/ui/dialog/document-properties.cpp:686 +#: ../src/ui/dialog/document-properties.cpp:685 msgid "Profile Name" msgstr "Profila nosaukums" -#: ../src/ui/dialog/document-properties.cpp:722 +#: ../src/ui/dialog/document-properties.cpp:721 msgid "External scripts" msgstr "Ārējie skripti" -#: ../src/ui/dialog/document-properties.cpp:723 +#: ../src/ui/dialog/document-properties.cpp:722 msgid "Embedded scripts" msgstr "Iegultie skripti" -#: ../src/ui/dialog/document-properties.cpp:728 +#: ../src/ui/dialog/document-properties.cpp:727 msgid "<b>External script files:</b>" msgstr "<b>Ārējo skriptu faili:</b>" -#: ../src/ui/dialog/document-properties.cpp:730 +#: ../src/ui/dialog/document-properties.cpp:729 msgid "Add the current file name or browse for a file" msgstr "Pievienot pašreizējo faila nosaukumu vai sameklēt failu" -#: ../src/ui/dialog/document-properties.cpp:733 -#: ../src/ui/dialog/document-properties.cpp:811 -#: ../src/ui/widget/selected-style.cpp:334 +#: ../src/ui/dialog/document-properties.cpp:732 +#: ../src/ui/dialog/document-properties.cpp:810 +#: ../src/ui/widget/selected-style.cpp:339 msgid "Remove" msgstr "Aizvākt" -#: ../src/ui/dialog/document-properties.cpp:798 +#: ../src/ui/dialog/document-properties.cpp:797 msgid "Filename" msgstr "Faila nosaukums" -#: ../src/ui/dialog/document-properties.cpp:806 +#: ../src/ui/dialog/document-properties.cpp:805 msgid "<b>Embedded script files:</b>" msgstr "<b>Iegultie skriptu faili:</b>" -#: ../src/ui/dialog/document-properties.cpp:808 +#: ../src/ui/dialog/document-properties.cpp:807 msgid "New" msgstr "Jauns" -#: ../src/ui/dialog/document-properties.cpp:875 +#: ../src/ui/dialog/document-properties.cpp:874 msgid "Script id" msgstr "Skripta id" -#: ../src/ui/dialog/document-properties.cpp:881 +#: ../src/ui/dialog/document-properties.cpp:880 msgid "<b>Content:</b>" msgstr "<b>Saturs:</b>" -#: ../src/ui/dialog/document-properties.cpp:998 +#: ../src/ui/dialog/document-properties.cpp:997 msgid "_Save as default" msgstr "_Saglabāt kā noklusēto" -#: ../src/ui/dialog/document-properties.cpp:999 +#: ../src/ui/dialog/document-properties.cpp:998 msgid "Save this metadata as the default metadata" msgstr "Saglabāt šos metadatus kā noklusētos metadatus" -#: ../src/ui/dialog/document-properties.cpp:1000 +#: ../src/ui/dialog/document-properties.cpp:999 msgid "Use _default" msgstr "Izmantot _noklusēto" -#: ../src/ui/dialog/document-properties.cpp:1001 +#: ../src/ui/dialog/document-properties.cpp:1000 msgid "Use the previously saved default metadata here" msgstr "Šeit izmantot iepriekš saglabātos noklusētos metadatus" #. inform the document, so we can undo -#: ../src/ui/dialog/document-properties.cpp:1074 +#: ../src/ui/dialog/document-properties.cpp:1073 msgid "Add external script..." msgstr "Pievienot ārējo skriptu..." -#: ../src/ui/dialog/document-properties.cpp:1113 +#: ../src/ui/dialog/document-properties.cpp:1112 msgid "Select a script to load" msgstr "Izvēlieties ielādējamo skriptu" #. inform the document, so we can undo -#: ../src/ui/dialog/document-properties.cpp:1141 +#: ../src/ui/dialog/document-properties.cpp:1140 msgid "Add embedded script..." msgstr "Pievienot iegulto skriptu..." #. inform the document, so we can undo -#: ../src/ui/dialog/document-properties.cpp:1172 +#: ../src/ui/dialog/document-properties.cpp:1171 msgid "Remove external script" msgstr "Aizvākt ārējo skriptu" #. inform the document, so we can undo -#: ../src/ui/dialog/document-properties.cpp:1206 +#: ../src/ui/dialog/document-properties.cpp:1205 msgid "Remove embedded script" msgstr "Aizvākt iegulto skriptu" #. TODO repr->set_content(_EmbeddedContent.get_buffer()->get_text()); #. inform the document, so we can undo -#: ../src/ui/dialog/document-properties.cpp:1306 +#: ../src/ui/dialog/document-properties.cpp:1305 msgid "Edit embedded script" msgstr "Labot iegulto skriptu" -#: ../src/ui/dialog/document-properties.cpp:1389 +#: ../src/ui/dialog/document-properties.cpp:1388 msgid "<b>Creation</b>" msgstr "<b>Izveidošana</b>" -#: ../src/ui/dialog/document-properties.cpp:1390 +#: ../src/ui/dialog/document-properties.cpp:1389 msgid "<b>Defined grids</b>" msgstr "<b>Definētie režģi</b>" -#: ../src/ui/dialog/document-properties.cpp:1618 +#: ../src/ui/dialog/document-properties.cpp:1617 msgid "Remove grid" msgstr "Aizvākt režģi" @@ -14173,8 +14001,8 @@ msgid "Information" msgstr "Informācija" #: ../src/ui/dialog/extension-editor.cpp:82 -#: ../src/verbs.cpp:288 -#: ../src/verbs.cpp:307 +#: ../src/verbs.cpp:290 +#: ../src/verbs.cpp:309 #: ../share/extensions/color_custom.inx.h:7 #: ../share/extensions/color_HSL_adjust.inx.h:11 #: ../share/extensions/color_randomize.inx.h:6 @@ -14478,276 +14306,275 @@ msgstr "_Dublēt" msgid "_Filter" msgstr "_Filtrs" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1168 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1174 msgid "R_ename" msgstr "Pār_dēvēt" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1298 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1304 msgid "Rename filter" msgstr "Pārdēvēt filtru" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1335 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1348 msgid "Apply filter" msgstr "Pielietot filtru" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1405 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1418 msgid "filter" msgstr "filtrs" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1412 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1425 msgid "Add filter" msgstr "Pievienot filtru" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1464 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1477 msgid "Duplicate filter" msgstr "Dublēt filtru" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1563 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1576 msgid "_Effect" msgstr "_Efekts" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1573 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1586 msgid "Connections" msgstr "Savienojumi" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1711 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1724 msgid "Remove filter primitive" msgstr "Aizvākt filtra primitīvu" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2299 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2312 msgid "Remove merge node" msgstr "Aizvākt apvienošanas mezglu" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2419 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2432 msgid "Reorder filter primitive" msgstr "Pārkārtot filtra primitīvu" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2499 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2512 msgid "Add Effect:" msgstr "Pievienot efektu:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2500 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2513 msgid "No effect selected" msgstr "Nav izvēlēts neviens efekts" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2501 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2514 msgid "No filter selected" msgstr "Nav izvēlēts neviens filtrs" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2547 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2560 msgid "Effect parameters" msgstr "Efekta parametri" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2548 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2561 msgid "Filter General Settings" msgstr "Filtra vispārējie iestatījumi" #. default x: #. default y: -#: ../src/ui/dialog/filter-effects-dialog.cpp:2606 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2619 msgid "Coordinates:" msgstr "Koordinātes:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2606 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2619 msgid "X coordinate of the left corners of filter effects region" msgstr "Filtra efekta apgabala kreiso stūru X koordināte" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2606 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2619 msgid "Y coordinate of the upper corners of filter effects region" msgstr "Filtra efekta apgabala augšējo stūru Y koordināte" #. default width: #. default height: -#: ../src/ui/dialog/filter-effects-dialog.cpp:2607 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2620 msgid "Dimensions:" msgstr "Izmēri:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2607 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2620 msgid "Width of filter effects region" msgstr "Filtra efektu apgabala platums" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2607 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2620 msgid "Height of filter effects region" msgstr "Filtra efektu apgabala augstums" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2613 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2626 msgid "Indicates the type of matrix operation. The keyword 'matrix' indicates that a full 5x4 matrix of values will be provided. The other keywords represent convenience shortcuts to allow commonly used color operations to be performed without specifying a complete matrix." msgstr "Norāda uz matricu darbības tipu. Atslēgvārds 'matrica' nozīmē, ka tiek izmantota pilna, 5x4 vērtību matrica. Citi atslēgvārdi kalpo par saīsnēm, kas ļauj veikt biežāk lietotās darbības ar krāsām nenorādot pilnu matricu." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2614 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2627 msgid "Value(s):" msgstr "Vērtība(s):" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2629 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2669 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2642 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2682 msgid "Operator:" msgstr "Operators:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2630 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2643 msgid "K1:" msgstr "K1:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2630 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2631 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2632 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2633 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2643 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2644 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2645 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2646 msgid "If the arithmetic operation is chosen, each result pixel is computed using the formula k1*i1*i2 + k2*i1 + k3*i2 + k4 where i1 and i2 are the pixel values of the first and second inputs respectively." msgstr "Ja ir izvēlēta matemātiskā darbība, katrs pikselis tiek aprēķināts saskaņā ar formulu k1*i1*i2 + k2*i1 + k3*i2 + k4, kur i1 un i2 ir pikseļu vērtības, attiecīgi, pirmajos un otrajos izejas datos." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2631 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2644 msgid "K2:" msgstr "K2:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2632 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2645 msgid "K3:" msgstr "K3:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2633 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2646 msgid "K4:" msgstr "K4:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2636 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2649 msgid "Size:" msgstr "Izmērs:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2636 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2649 msgid "width of the convolve matrix" msgstr "konvolūcijas matricas platums" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2636 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2649 msgid "height of the convolve matrix" msgstr "konvolūcijas matricas augstums" #. default x: #. default y: -#: ../src/ui/dialog/filter-effects-dialog.cpp:2637 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2650 #: ../src/ui/dialog/object-attributes.cpp:48 msgid "Target:" msgstr "Mērķis:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2637 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2650 msgid "X coordinate of the target point in the convolve matrix. The convolution is applied to pixels around this point." msgstr "Mērķa punkta X koordināte konvolūcijas matricā. Konvolūcija tiks izpildīta pikseļiem ap šo punktu." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2637 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2650 msgid "Y coordinate of the target point in the convolve matrix. The convolution is applied to pixels around this point." msgstr "Mērķa punkta Y koordināte konvolūcijas matricā. Konvolūcija tiks izpildīta pikseļiem ap šo punktu." #. TRANSLATORS: for info on "Kernel", see http://en.wikipedia.org/wiki/Kernel_(matrix) -#: ../src/ui/dialog/filter-effects-dialog.cpp:2639 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2652 msgid "Kernel:" msgstr "Kodols:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2639 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2652 msgid "This matrix describes the convolve operation that is applied to the input image in order to calculate the pixel colors at the output. Different arrangements of values in this matrix result in various possible visual effects. An identity matrix would lead to a motion blur effect (parallel to the matrix diagonal) while a matrix filled with a constant non-zero value would lead to a common blur effect." msgstr "Šī matrica apraksta konvolūcijas darbību, kas tiek pielietota attēlam ar nolūku noskaidrot rezultātā iegūtā pikseļa krāsa. Dažādi vērtību izkārtojumi šajā matricā rada atšķirīgus vizuālos efektus. Vienības matrica rezultātā radīs kustības izplūduma efektu (paralēli matricas diagonālei), turpretī ar konstantām, par nulli lielākām vērtībām aizpildīta matrica rezultātā radīs vienkārša izplūduma efektu." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2641 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2654 msgid "Divisor:" msgstr "Dalītājs:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2641 -#, fuzzy +#: ../src/ui/dialog/filter-effects-dialog.cpp:2654 msgid "After applying the kernelMatrix to the input image to yield a number, that number is divided by divisor to yield the final destination color value. A divisor that is the sum of all the matrix values tends to have an evening effect on the overall color intensity of the result." -msgstr "Lai iegūtu skaitli pēc kernelMatrix pielietošanas sākotnējam attēlam, šis skaitlis tiek dalīts ar dalītāju gala krāsas vērtības iegūšanai. Dalītājam, kas ir visu matricas vērtību summa, piemīt vispārējās krāsu intensitātes izlīdzinātāja efekts gala attēlā. " +msgstr "Pēc kernelMatrix pielietošanas sākotnējam attēlam iegūtais skaitlis tiek dalīts ar dalītāju gala krāsas vērtības iegūšanai. Dalītājam, kas ir visu matricas vērtību summa, piemīt vispārējās krāsu intensitātes izlīdzinātāja efekts gala attēlā. " -#: ../src/ui/dialog/filter-effects-dialog.cpp:2642 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2655 msgid "Bias:" msgstr "Nobīde:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2642 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2655 msgid "This value is added to each component. This is useful to define a constant value as the zero response of the filter." msgstr "Šī vērtība tiek pievienota katram komponentam. Ir lietderīgi noteikt nemainīgu vērtību kā filtra 'nulles' atbildi." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2643 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2656 msgid "Edge Mode:" msgstr "Malu režīms:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2643 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2656 msgid "Determines how to extend the input image as necessary with color values so that the matrix operations can be applied when the kernel is positioned at or near the edge of the input image." msgstr "Nosaka veidu, kādā pēc nepieciešamības paplašināt sākotnējo attēlu ar krāsu vērtībām, lai matricu darbības varētu izmantot gadījumos, kuros kodols ir novietots uz vai blakus sākotnējā attēla malai." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2644 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2657 msgid "Preserve Alpha" msgstr "Saglabāt alfa" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2644 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2657 msgid "If set, the alpha channel won't be altered by this filter primitive." msgstr "Ja iestatīts, šī filtra primitīvs nemainīs alfa kanālu." #. default: white -#: ../src/ui/dialog/filter-effects-dialog.cpp:2647 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2660 msgid "Diffuse Color:" msgstr "Difūzijas krāsa:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2647 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2680 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2660 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2693 msgid "Defines the color of the light source" msgstr "Nosaka gaismas avota krāsu" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2648 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2681 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2661 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2694 msgid "Surface Scale:" msgstr "Virsmas mērogs:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2648 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2681 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2661 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2694 msgid "This value amplifies the heights of the bump map defined by the input alpha channel" msgstr "Šī vērtība pastiprina pumpu kartes augstumu, ko nosaka sākotnējais alfa kanāls" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2649 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2682 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2662 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2695 msgid "Constant:" msgstr "Konstantes:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2649 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2682 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2662 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2695 msgid "This constant affects the Phong lighting model." msgstr "Šī konstante ietekmē Fonga apgaismojuma modeli" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2650 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2684 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2663 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2697 msgid "Kernel Unit Length:" msgstr "Kodola vienības garums:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2654 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2667 msgid "This defines the intensity of the displacement effect." msgstr "Tas nosaka pārvietojuma efekta intensitāti." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2655 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2668 msgid "X displacement:" msgstr "X nobīde:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2655 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2668 msgid "Color component that controls the displacement in the X direction" msgstr "Krāsas komponents, kas nosaka pārvietojumu X virzienā" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2656 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2669 msgid "Y displacement:" msgstr "Y nobīde:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2656 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2669 msgid "Color component that controls the displacement in the Y direction" msgstr "Krāsas komponents, kas nosaka pārvietojumu Y virzienā" #. default: black -#: ../src/ui/dialog/filter-effects-dialog.cpp:2659 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2672 msgid "Flood Color:" msgstr "Pludināšanas krāsa:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2659 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2672 msgid "The whole filter region will be filled with this color." msgstr "Viss filtra apgabals tiks aizpildīts ar šo krāsu." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2663 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2676 msgid "Standard Deviation:" msgstr "Standarta novirze:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2663 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2676 msgid "The standard deviation for the blur operation." msgstr "Standarta novirze izpludināšanas darbībai." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2669 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2682 msgid "" "Erode: performs \"thinning\" of input image.\n" "Dilate: performs \"fattenning\" of input image." @@ -14755,137 +14582,137 @@ msgstr "" "Erozija: padara sākotnējo attēlu \"plānāku\".\n" "Izplešana: padara sākotnējo attēlu \"biezāku\"." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2673 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2686 msgid "Source of Image:" msgstr "Attēla avots:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2676 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2689 msgid "Delta X:" msgstr "Delta X:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2676 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2689 msgid "This is how far the input image gets shifted to the right" msgstr "Cik tālu sākotnējais attēls tiks pārbīdīts pa labi" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2677 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2690 msgid "Delta Y:" msgstr "Delta Y:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2677 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2690 msgid "This is how far the input image gets shifted downwards" msgstr "Cik tālu sākotnējais attēls tiks pārbīdīts lejup" #. default: white -#: ../src/ui/dialog/filter-effects-dialog.cpp:2680 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2693 msgid "Specular Color:" msgstr "Atspīduma krāsa:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2683 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2696 #: ../share/extensions/interp.inx.h:2 msgid "Exponent:" msgstr "Kāpinātājs:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2683 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2696 msgid "Exponent for specular term, larger is more \"shiny\"." msgstr "Atstarošanas pakāpe, lielāks skaitlis nozīmē vairāk \"spīdīgu\"." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2692 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2705 msgid "Indicates whether the filter primitive should perform a noise or turbulence function." msgstr "Atspoguļo, vai filtra primitīvam jāveic trokšņa vai nekārtības funkcija." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2693 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2706 msgid "Base Frequency:" msgstr "Pamata biežums:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2694 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2707 msgid "Octaves:" msgstr "Oktāvas:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2695 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2708 msgid "Seed:" msgstr "Gadījuma vērtība:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2695 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2708 msgid "The starting number for the pseudo random number generator." msgstr "Sākuma skaitlis pseidogadījuma skaitļu ģeneratoram." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2707 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2720 msgid "Add filter primitive" msgstr "Pievienot filtra primitīvu" # http://www.w3.org/TR/SVG/intro.html#TermFilterPrimitiveElement # A filter primitive element is one that can be used as a child of a ‘filter’ element to specify a node in the filter graph. -#: ../src/ui/dialog/filter-effects-dialog.cpp:2724 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2737 msgid "The <b>feBlend</b> filter primitive provides 4 image blending modes: screen, multiply, darken and lighten." msgstr "<b>feBlend</b> filtra primitīvs nodrošina 4 attēlu sajaukšanas veidus: uz ekrāna, pavairot, padarīt tumšāku un padarīt gaišāku." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2728 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2741 msgid "The <b>feColorMatrix</b> filter primitive applies a matrix transformation to color of each rendered pixel. This allows for effects like turning object to grayscale, modifying color saturation and changing color hue." msgstr "<b>feColorMatrix</b> filtra primitīvs pielieto matricas pārveidojumu katra renderētā pikseļa krāsai. Tas padara iespējamus tādus efektus, kā pārvēršanu par pelēktoņu attēlu, krāsu piesātinājuma un nokrāsas maiņu." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2732 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2745 msgid "The <b>feComponentTransfer</b> filter primitive manipulates the input's color components (red, green, blue, and alpha) according to particular transfer functions, allowing operations like brightness and contrast adjustment, color balance, and thresholding." msgstr "<b>feComponentTransfer</b> filtra primitīvs darbojas ar sākotnējo krāsu komponentēm (sarkano, zaļo, zilo un alfa) saskaņā ar īpašām pārneses funkcijām, nodrošinot tādas darbības kā spilgtuma un kontrasta maiņu, krāsu balansēšanu un krāsu sliekšņu iestatīšanu." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2736 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2749 msgid "The <b>feComposite</b> filter primitive composites two images using one of the Porter-Duff blending modes or the arithmetic mode described in SVG standard. Porter-Duff blending modes are essentially logical operations between the corresponding pixel values of the images." msgstr "<b>feComposite</b> filtra primitīvs kombinē divus attēlus izmantojot vienu no Portera-Dafa sajaukšanas metodēm vai SVG standartā aprakstīto aritmētisko metodi. Portera-Dafa sajaukšanas metodes pēc būtības ir loģiskās darbības ar atbilstošo attēlu pikseļu vērtībām." # http://www.w3.org/TR/SVG/intro.html#TermFilterPrimitiveElement # A filter primitive element is one that can be used as a child of a ‘filter’ element to specify a node in the filter graph. -#: ../src/ui/dialog/filter-effects-dialog.cpp:2740 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2753 msgid "The <b>feConvolveMatrix</b> lets you specify a Convolution to be applied on the image. Common effects created using convolution matrices are blur, sharpening, embossing and edge detection. Note that while gaussian blur can be created using this filter primitive, the special gaussian blur primitive is faster and resolution-independent." msgstr "<b>feConvolveMatrix</b> ļauj norādīt attēlam pielietojamo konvolūciju. Efekti, kurus iegūst ar konvolūcijas matricas palīdzību, ir izpludināšana, saasināšana, ciļņošana un malas noteikšana. Ņemiet vērā, ka lai arī Gausa izpludināšana ar šo filtra primitīvu arī ir iespējama, īpašais Gausa izpludināšanas primitīvs ir ātrāks un nav atkarīgs no izšķirtspējas." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2744 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2757 msgid "The <b>feDiffuseLighting</b> and feSpecularLighting filter primitives create \"embossed\" shadings. The input's alpha channel is used to provide depth information: higher opacity areas are raised toward the viewer and lower opacity areas recede away from the viewer." msgstr "<b>feDiffuseLighting</b> un <b>feSpecularLighting</b> filtru primitīvi rada \"ciļņotu \" ēnojumu. Sākotnējā attēla alfa kanāls tiks izmantots dziļuma informācijai: necaurspīdīgāki laukumi tiek tuvināti skatītājam, caurspīdīgāki - attālinānti." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2748 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2761 msgid "The <b>feDisplacementMap</b> 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." msgstr "<b>feDisplacementMap</b> filtra primitīvs nobīda pikseļus pirmajā attēlā izmantojot otro attēlu kā nobīžu karti, kas norāda no kāda attālumu pikseļiem jānāk. Klasiski piemēri ir virpuļa un knaibīšanas efekti." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2752 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2765 msgid "The <b>feFlood</b> filter primitive fills the region with a given color and opacity. It is usually used as an input to other filters to apply color to a graphic." msgstr "<b>feFlood</b> filtra primitīvs aizpilda laukumu ar norādīto krāsu un necaurspīdību. To parasti izmanto kā ievadi citiem filtriem, lai grafikai piešķirtu krāsas." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2756 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2769 msgid "The <b>feGaussianBlur</b> filter primitive uniformly blurs its input. It is commonly used together with feOffset to create a drop shadow effect." msgstr "<b>feGaussianBlur</b> filtrs vienādā mērā izpludina sākotnējo objektu. Visbiežāk to lieto kopā ar feOffset, lai izvedotu krītošas ēnas efektu." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2760 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2773 msgid "The <b>feImage</b> filter primitive fills the region with an external image or another part of the document." msgstr "<b>feImage</b> filtra primitīvs aizpilda apgabalu ar ārējā attēla vai citu dokumenta daļu kopijām." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2764 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2777 msgid "The <b>feMerge</b> 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." msgstr "<b>feMerge</b> filtra primitīvs apvieno vairākus filtra primitīvā esošus pagaidu attēlus vienā. Šai darbībai tiek izmantota vienkārša alfa salikšana. Tas ir līdzīgs dažu feBlend filtru primitīvu izmantošanai 'parastā' (normal) režīmā vai dažu feComposite filtru primitīvu - 'pāri' (over) režīmā." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2768 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2781 msgid "The <b>feMorphology</b> filter primitive provides erode and dilate effects. For single-color objects erode makes the object thinner and dilate makes it thicker." msgstr "<b>feMorphology</b> filtra primitīvs nodrošina erozijas un izplešanas efektus. Vienas krāsas objektu gadījumā erozija padara objektu plānāku, izplešana - biezāku." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2772 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2785 msgid "The <b>feOffset</b> 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." msgstr "<b>feOffset</b> filtra primitīvs nobīda attēlu par lietotāja noteiktu lielumu. Piemēram, tas ir noderīgs ēnu veidošanai, kurās ēna atrodas nedaudz citā stāvoklī nekā pats objekts." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2776 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2789 msgid "The <b>feDiffuseLighting</b> and <b>feSpecularLighting</b> filter primitives create \"embossed\" shadings. The input's alpha channel is used to provide depth information: higher opacity areas are raised toward the viewer and lower opacity areas recede away from the viewer." msgstr "<b>feDiffuseLighting</b> un <b>feSpecularLighting</b> filtru primitīvi rada \"ciļņotu \" ēnojumu. Sākotnējā attēla alfa kanāls tiks izmantots dziļuma informācijai: necaurspīdīgāki laukumi tiek tuvināti skatītājam, caurspīdīgāki - attālinānti." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2780 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2793 msgid "The <b>feTile</b> filter primitive tiles a region with its input graphic" msgstr "<b>feTile</b> filtra primitīvs aizpilda apgabalu ar ievadītās grafikas kopijām." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2784 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2797 msgid "The <b>feTurbulence</b> filter primitive renders 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." msgstr "<b>feTurbulence</b> filtra primitīvs renderē Perlina troksni. Šis trokšņa veids ir noderīgs dažādu dabas parādību atainošanai, piemēram - mākoņu, uguns un dūmu un tādu sarežģītu tekstūru veidošanai kā marmors vai granīts." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2803 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2816 msgid "Duplicate filter primitive" msgstr "Kopēt filtra primitīvu" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2856 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2869 msgid "Set filter primitive attribute" msgstr "Iestatīt filtra primitīva atribūtu" @@ -15070,7 +14897,7 @@ msgid "Search spirals" msgstr "Meklēt spirāles" #: ../src/ui/dialog/find.cpp:102 -#: ../src/widgets/toolbox.cpp:1736 +#: ../src/widgets/toolbox.cpp:1730 msgid "Paths" msgstr "Ceļi" @@ -15880,10 +15707,10 @@ msgstr "Kirilicas paplašinātais-B" msgid "Bamum" msgstr "Bamuma" +# Modifier Tone Letters is a Unicode block containing tone markings for Chinese, Chinantec, Africanist, and other phonetic transcriptions. #: ../src/ui/dialog/glyphs.cpp:271 -#, fuzzy msgid "Modifier Tone Letters" -msgstr "Toni mainošie burti" +msgstr "Toņa maiņas zīmes" #: ../src/ui/dialog/glyphs.cpp:272 msgid "Latin Extended-D" @@ -16362,13 +16189,13 @@ msgstr "Objekta krāsojuma stils" #. Zoom #: ../src/ui/dialog/inkscape-preferences.cpp:376 -#: ../src/widgets/desktop-widget.cpp:631 +#: ../src/widgets/desktop-widget.cpp:635 msgid "Zoom" msgstr "Tālummaiņa" #. Measure #: ../src/ui/dialog/inkscape-preferences.cpp:381 -#: ../src/verbs.cpp:2618 +#: ../src/verbs.cpp:2673 msgctxt "ContextVerb" msgid "Measure" msgstr "Mērīt" @@ -16415,7 +16242,7 @@ msgstr "Ja ieslēgts, tiks atlasīts katrs jaunizveidotais objekts (atceļot iep #. Text #: ../src/ui/dialog/inkscape-preferences.cpp:439 -#: ../src/verbs.cpp:2610 +#: ../src/verbs.cpp:2665 msgctxt "ContextVerb" msgid "Text" msgstr "Teksts" @@ -16436,6 +16263,30 @@ msgstr "Rādīt fontu aizvietošanas brīdinājuma dialoglodziņu" msgid "Show font substitution warning dialog when requested fonts are not available on the system" msgstr "Rādīt brīdinājumu par fontu aizvietošanu, ja nepieciešamie fonti nav atrodami sistēmā" +#: ../src/ui/dialog/inkscape-preferences.cpp:451 +msgid "Pixel" +msgstr "Pikselis" + +#: ../src/ui/dialog/inkscape-preferences.cpp:451 +msgid "Pica" +msgstr "Pica" + +#: ../src/ui/dialog/inkscape-preferences.cpp:451 +msgid "Millimeter" +msgstr "Milimetrs" + +#: ../src/ui/dialog/inkscape-preferences.cpp:451 +msgid "Centimeter" +msgstr "Centimetrs" + +#: ../src/ui/dialog/inkscape-preferences.cpp:451 +msgid "Inch" +msgstr "colla" + +#: ../src/ui/dialog/inkscape-preferences.cpp:451 +msgid "Em square" +msgstr "Em kvadrāts" + #. , _("Ex square"), _("Percent") #. , SP_CSS_UNIT_EX, SP_CSS_UNIT_PERCENT #: ../src/ui/dialog/inkscape-preferences.cpp:454 @@ -16475,8 +16326,8 @@ msgstr "Krāsas spainis" #. Gradient #: ../src/ui/dialog/inkscape-preferences.cpp:478 -#: ../src/widgets/gradient-selector.cpp:150 -#: ../src/widgets/gradient-selector.cpp:302 +#: ../src/widgets/gradient-selector.cpp:151 +#: ../src/widgets/gradient-selector.cpp:303 msgid "Gradient" msgstr "Krāsu pāreja" @@ -17202,9 +17053,9 @@ msgid "_Click/drag threshold:" msgstr "Klikšķa/pārvietojuma slieksnis:" #: ../src/ui/dialog/inkscape-preferences.cpp:852 -#: ../src/ui/dialog/inkscape-preferences.cpp:1190 #: ../src/ui/dialog/inkscape-preferences.cpp:1194 -#: ../src/ui/dialog/inkscape-preferences.cpp:1204 +#: ../src/ui/dialog/inkscape-preferences.cpp:1198 +#: ../src/ui/dialog/inkscape-preferences.cpp:1208 msgid "pixels" msgstr "pikseļi" @@ -17273,151 +17124,164 @@ msgstr "Tukšu vietu skaits atkāpēm, veidojot iegultus elementus; ievadiet 0, msgid "Path data" msgstr "Ceļa dati" -#: ../src/ui/dialog/inkscape-preferences.cpp:882 -msgid "Allow relative coordinates" -msgstr "Atļaut relatīvās koordinātes" +#: ../src/ui/dialog/inkscape-preferences.cpp:883 +msgid "Absolute" +msgstr "Absolūtas" #: ../src/ui/dialog/inkscape-preferences.cpp:883 -msgid "If set, relative coordinates may be used in path data" -msgstr "Ja ieslēgts, ceļu datos var tikt izmantotas relatīvās koordinātes" +msgid "Relative" +msgstr "Relatīvās" + +#: ../src/ui/dialog/inkscape-preferences.cpp:883 +#: ../src/ui/dialog/inkscape-preferences.cpp:1173 +msgid "Optimized" +msgstr "Optimizēts" + +#: ../src/ui/dialog/inkscape-preferences.cpp:887 +msgid "Path string format" +msgstr "Ceļa virknes formāts" + +#: ../src/ui/dialog/inkscape-preferences.cpp:887 +msgid "Path data should be written: only with absolute coordinates, only with relative coordinates, or optimized for string length (mixed absolute and relative coordinates)" +msgstr "Ceļa datus ir jāraksta: tikai absolūtās koordinātēs, tikai relatīvās koordinātēs vai arī optimizētas pēc virknes garuma (jauktas absolūtās un relatīvās koordinātes)" -#: ../src/ui/dialog/inkscape-preferences.cpp:885 +#: ../src/ui/dialog/inkscape-preferences.cpp:889 msgid "Force repeat commands" msgstr "Komandu piespiedu atkārtojums" -#: ../src/ui/dialog/inkscape-preferences.cpp:886 +#: ../src/ui/dialog/inkscape-preferences.cpp:890 msgid "Force repeating of the same path command (for example, 'L 1,2 L 3,4' instead of 'L 1,2 3,4')" msgstr "Piespiedu kārtā atkārtot to pašu ceļa komandu (piemēram,, 'L 1,2 L 3,4' ,nevis 'L 1,2 3,4')" -#: ../src/ui/dialog/inkscape-preferences.cpp:888 +#: ../src/ui/dialog/inkscape-preferences.cpp:892 msgid "Numbers" msgstr "Skaitļi" -#: ../src/ui/dialog/inkscape-preferences.cpp:891 +#: ../src/ui/dialog/inkscape-preferences.cpp:895 msgid "_Numeric precision:" msgstr "_Skaitliskā precizitāte:" -#: ../src/ui/dialog/inkscape-preferences.cpp:891 +#: ../src/ui/dialog/inkscape-preferences.cpp:895 msgid "Significant figures of the values written to the SVG file" msgstr "Vērtību zīmīgie cipari, ko ieraksta SVG failā" -#: ../src/ui/dialog/inkscape-preferences.cpp:894 +#: ../src/ui/dialog/inkscape-preferences.cpp:898 msgid "Minimum _exponent:" msgstr "Mazākā _eksponente:" -#: ../src/ui/dialog/inkscape-preferences.cpp:894 +#: ../src/ui/dialog/inkscape-preferences.cpp:898 msgid "The smallest number written to SVG is 10 to the power of this exponent; anything smaller is written as zero" msgstr "Mazākais SVG ierakstītais skaitlis ir 10 norādītajā pakāpē; jebkas, mazāks par šo tiks ierakstīts kā nulle" #. Code to add controls for attribute checking options #. Add incorrect style properties options -#: ../src/ui/dialog/inkscape-preferences.cpp:899 +#: ../src/ui/dialog/inkscape-preferences.cpp:903 msgid "Improper Attributes Actions" msgstr "Nepareizu atribūtu darbības" -#: ../src/ui/dialog/inkscape-preferences.cpp:901 -#: ../src/ui/dialog/inkscape-preferences.cpp:909 -#: ../src/ui/dialog/inkscape-preferences.cpp:917 +#: ../src/ui/dialog/inkscape-preferences.cpp:905 +#: ../src/ui/dialog/inkscape-preferences.cpp:913 +#: ../src/ui/dialog/inkscape-preferences.cpp:921 msgid "Print warnings" msgstr "Drukas brīdinājumi" -#: ../src/ui/dialog/inkscape-preferences.cpp:902 +#: ../src/ui/dialog/inkscape-preferences.cpp:906 msgid "Print warning if invalid or non-useful attributes found. Database files located in inkscape_data_dir/attributes." msgstr "Izvadīt paziņojumu, ja ir atrasts nederīgs vai neizmantojams atribūts. Datubāzes faili atrodas mapē inkscape_data_dir/attributes." -#: ../src/ui/dialog/inkscape-preferences.cpp:903 +#: ../src/ui/dialog/inkscape-preferences.cpp:907 msgid "Remove attributes" msgstr "Aizvākt atribūtus" -#: ../src/ui/dialog/inkscape-preferences.cpp:904 +#: ../src/ui/dialog/inkscape-preferences.cpp:908 msgid "Delete invalid or non-useful attributes from element tag" msgstr "Dzēst no elementa taga nederīgus vai neizmantojamus atribūtus" #. Add incorrect style properties options -#: ../src/ui/dialog/inkscape-preferences.cpp:907 +#: ../src/ui/dialog/inkscape-preferences.cpp:911 msgid "Inappropriate Style Properties Actions" msgstr "Nepiemērota stila īpašību darbības" -#: ../src/ui/dialog/inkscape-preferences.cpp:910 +#: ../src/ui/dialog/inkscape-preferences.cpp:914 msgid "Print warning if inappropriate style properties found (i.e. 'font-family' set on a <rect>). Database files located in inkscape_data_dir/attributes." msgstr "Rādīt paziņojumu, ja atrastas nederīgas stila īpašības (piem. 'font-family' piemērots <rect>). Datubāžu faili atrodas mapē inkscape_data_dir/attributes." -#: ../src/ui/dialog/inkscape-preferences.cpp:911 -#: ../src/ui/dialog/inkscape-preferences.cpp:919 +#: ../src/ui/dialog/inkscape-preferences.cpp:915 +#: ../src/ui/dialog/inkscape-preferences.cpp:923 msgid "Remove style properties" msgstr "Aizvākt stila īpašības" -#: ../src/ui/dialog/inkscape-preferences.cpp:912 +#: ../src/ui/dialog/inkscape-preferences.cpp:916 msgid "Delete inappropriate style properties" msgstr "Dzēst nepiemērotas stila īpašības" #. Add default or inherited style properties options -#: ../src/ui/dialog/inkscape-preferences.cpp:915 +#: ../src/ui/dialog/inkscape-preferences.cpp:919 msgid "Non-useful Style Properties Actions" msgstr "Darbības ar neizmantojamām stilu īpašībām" -#: ../src/ui/dialog/inkscape-preferences.cpp:918 +#: ../src/ui/dialog/inkscape-preferences.cpp:922 msgid "Print warning if redundant style properties found (i.e. if a property has the default value and a different value is not inherited or if value is the same as would be inherited). Database files located in inkscape_data_dir/attributes." msgstr "Rādīt paziņojumu, ja atrastas liekas stila īpašības (piem., ja īpašībai ir noklusētā vērtība un atšķirīgā vērtība nav mantota vai arī vērtība neatšķiras no mantojamās). Datubāžu faili atrodas mapē inkscape_data_dir/attributes." -#: ../src/ui/dialog/inkscape-preferences.cpp:920 +#: ../src/ui/dialog/inkscape-preferences.cpp:924 msgid "Delete redundant style properties" msgstr "Dzēst liekās stila īpašības" -#: ../src/ui/dialog/inkscape-preferences.cpp:922 +#: ../src/ui/dialog/inkscape-preferences.cpp:926 msgid "Check Attributes and Style Properties on" msgstr "Pārbaudīt atribūtus un stila īpašības" -#: ../src/ui/dialog/inkscape-preferences.cpp:924 +#: ../src/ui/dialog/inkscape-preferences.cpp:928 msgid "Reading" msgstr "Lasa" -#: ../src/ui/dialog/inkscape-preferences.cpp:925 +#: ../src/ui/dialog/inkscape-preferences.cpp:929 msgid "Check attributes and style properties on reading in SVG files (including those internal to Inkscape which will slow down startup)" msgstr "Pārbaudīt atribūtus un stila īpašības atverot SVG failus (ieskaitot Inkscape iekšējos, palielinot darba sākšanai nepieciešamo laiku)" -#: ../src/ui/dialog/inkscape-preferences.cpp:926 +#: ../src/ui/dialog/inkscape-preferences.cpp:930 msgid "Editing" msgstr "Labo" -#: ../src/ui/dialog/inkscape-preferences.cpp:927 +#: ../src/ui/dialog/inkscape-preferences.cpp:931 msgid "Check attributes and style properties while editing SVG files (may slow down Inkscape, mostly useful for debugging)" msgstr "Pārbaudīt atribūtus un stila īpašības SVG failu rediģēšanas laikā (var palēnināt Inkscape darbību, pamatā noderīgs atkļūdošanai)" -#: ../src/ui/dialog/inkscape-preferences.cpp:928 +#: ../src/ui/dialog/inkscape-preferences.cpp:932 msgid "Writing" msgstr "Raksta" -#: ../src/ui/dialog/inkscape-preferences.cpp:929 +#: ../src/ui/dialog/inkscape-preferences.cpp:933 msgid "Check attributes and style properties on writing out SVG files" msgstr "Pārbaudīt atribūtus un stila īpašības saglabājot SVG failus" -#: ../src/ui/dialog/inkscape-preferences.cpp:931 +#: ../src/ui/dialog/inkscape-preferences.cpp:935 msgid "SVG output" msgstr "SVG izvade" #. TRANSLATORS: see http://www.newsandtech.com/issues/2004/03-04/pt/03-04_rendering.htm -#: ../src/ui/dialog/inkscape-preferences.cpp:937 +#: ../src/ui/dialog/inkscape-preferences.cpp:941 msgid "Perceptual" msgstr "Uztverams" -#: ../src/ui/dialog/inkscape-preferences.cpp:937 +#: ../src/ui/dialog/inkscape-preferences.cpp:941 msgid "Relative Colorimetric" msgstr "Relatīvi kolorimetrisks" -#: ../src/ui/dialog/inkscape-preferences.cpp:937 +#: ../src/ui/dialog/inkscape-preferences.cpp:941 msgid "Absolute Colorimetric" msgstr "Absolūti kolorimetrisks" -#: ../src/ui/dialog/inkscape-preferences.cpp:941 +#: ../src/ui/dialog/inkscape-preferences.cpp:945 msgid "(Note: Color management has been disabled in this build)" msgstr "(Piezīme: krāsu vadība šajā versijā ir atslēgta)" -#: ../src/ui/dialog/inkscape-preferences.cpp:945 +#: ../src/ui/dialog/inkscape-preferences.cpp:949 msgid "Display adjustment" msgstr "Ekrāna pieskaņošana" -#: ../src/ui/dialog/inkscape-preferences.cpp:955 +#: ../src/ui/dialog/inkscape-preferences.cpp:959 #, c-format msgid "" "The ICC profile to use to calibrate display output.\n" @@ -17426,135 +17290,135 @@ msgstr "" "ICC profils ekrāna krāsu kalibrēšanai.\n" "Pārmeklētās mapes: %s" -#: ../src/ui/dialog/inkscape-preferences.cpp:956 +#: ../src/ui/dialog/inkscape-preferences.cpp:960 msgid "Display profile:" msgstr "Ekrāna profils:" -#: ../src/ui/dialog/inkscape-preferences.cpp:961 +#: ../src/ui/dialog/inkscape-preferences.cpp:965 msgid "Retrieve profile from display" msgstr "Iegūt profilu no ekrāna" -#: ../src/ui/dialog/inkscape-preferences.cpp:964 +#: ../src/ui/dialog/inkscape-preferences.cpp:968 msgid "Retrieve profiles from those attached to displays via XICC" msgstr "Iegūt profilus no ekrāniem pievienotajiem izmantojot XICC" -#: ../src/ui/dialog/inkscape-preferences.cpp:966 +#: ../src/ui/dialog/inkscape-preferences.cpp:970 msgid "Retrieve profiles from those attached to displays" msgstr "Iegūt profilus no ekrāniem pievienotajiem" -#: ../src/ui/dialog/inkscape-preferences.cpp:971 +#: ../src/ui/dialog/inkscape-preferences.cpp:975 msgid "Display rendering intent:" msgstr "Ekrāna renderējuma nolūks:" -#: ../src/ui/dialog/inkscape-preferences.cpp:972 +#: ../src/ui/dialog/inkscape-preferences.cpp:976 msgid "The rendering intent to use to calibrate display output" msgstr "Ekrāna renderējumu domāts ekrāna kalibrēšanai" -#: ../src/ui/dialog/inkscape-preferences.cpp:974 +#: ../src/ui/dialog/inkscape-preferences.cpp:978 msgid "Proofing" msgstr "Pārbaudes" -#: ../src/ui/dialog/inkscape-preferences.cpp:976 +#: ../src/ui/dialog/inkscape-preferences.cpp:980 msgid "Simulate output on screen" msgstr "Emulēt izvadi uz ekrāna" -#: ../src/ui/dialog/inkscape-preferences.cpp:978 +#: ../src/ui/dialog/inkscape-preferences.cpp:982 msgid "Simulates output of target device" msgstr "Emulē izvadi uz mērķa ierīci" -#: ../src/ui/dialog/inkscape-preferences.cpp:980 +#: ../src/ui/dialog/inkscape-preferences.cpp:984 msgid "Mark out of gamut colors" msgstr "Atzīmēt krāsas, kas neietilpst krāsu gammā" -#: ../src/ui/dialog/inkscape-preferences.cpp:982 +#: ../src/ui/dialog/inkscape-preferences.cpp:986 msgid "Highlights colors that are out of gamut for the target device" msgstr "Izceļ krāsas, kas ir ārpus mērķa ierīces krāsu gammas" -#: ../src/ui/dialog/inkscape-preferences.cpp:994 +#: ../src/ui/dialog/inkscape-preferences.cpp:998 msgid "Out of gamut warning color:" msgstr "Krāsa brīdinājumam par krāsu gammā neietilpstošām krāsām" -#: ../src/ui/dialog/inkscape-preferences.cpp:995 +#: ../src/ui/dialog/inkscape-preferences.cpp:999 msgid "Selects the color used for out of gamut warning" msgstr "Izvēlas krāsu, ko izmantot paziņojuma par neietilpšanu krāsu gammā" -#: ../src/ui/dialog/inkscape-preferences.cpp:997 +#: ../src/ui/dialog/inkscape-preferences.cpp:1001 msgid "Device profile:" msgstr "Ierīces profils:" -#: ../src/ui/dialog/inkscape-preferences.cpp:998 +#: ../src/ui/dialog/inkscape-preferences.cpp:1002 msgid "The ICC profile to use to simulate device output" msgstr "ICC profils, ko izmantot imitējot izvadi uz iekārtas" -#: ../src/ui/dialog/inkscape-preferences.cpp:1001 +#: ../src/ui/dialog/inkscape-preferences.cpp:1005 msgid "Device rendering intent:" msgstr "Iekārtas renderējuma nolūks:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1002 +#: ../src/ui/dialog/inkscape-preferences.cpp:1006 msgid "The rendering intent to use to calibrate device output" msgstr "Iekārtas renderējums domēts iekārtas kalibrēšanai" -#: ../src/ui/dialog/inkscape-preferences.cpp:1004 +#: ../src/ui/dialog/inkscape-preferences.cpp:1008 msgid "Black point compensation" msgstr "Melnā punkta kompensācija" -#: ../src/ui/dialog/inkscape-preferences.cpp:1006 +#: ../src/ui/dialog/inkscape-preferences.cpp:1010 msgid "Enables black point compensation" msgstr "Ieslēdz melnā punkta kompensāciju" -#: ../src/ui/dialog/inkscape-preferences.cpp:1008 +#: ../src/ui/dialog/inkscape-preferences.cpp:1012 msgid "Preserve black" msgstr "Saglabāt melno" -#: ../src/ui/dialog/inkscape-preferences.cpp:1015 +#: ../src/ui/dialog/inkscape-preferences.cpp:1019 msgid "(LittleCMS 1.15 or later required)" msgstr "(nepieciešama LittleCMS 1.15 vai jaunāka)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1017 +#: ../src/ui/dialog/inkscape-preferences.cpp:1021 msgid "Preserve K channel in CMYK -> CMYK transforms" msgstr "Saglabāt K kanālu CMYK -> CMYK transformācijās" -#: ../src/ui/dialog/inkscape-preferences.cpp:1031 -#: ../src/widgets/sp-color-icc-selector.cpp:472 -#: ../src/widgets/sp-color-icc-selector.cpp:764 +#: ../src/ui/dialog/inkscape-preferences.cpp:1035 +#: ../src/widgets/sp-color-icc-selector.cpp:474 +#: ../src/widgets/sp-color-icc-selector.cpp:766 msgid "<none>" msgstr "<nekas>" -#: ../src/ui/dialog/inkscape-preferences.cpp:1076 +#: ../src/ui/dialog/inkscape-preferences.cpp:1080 msgid "Color management" msgstr "Krāsu valdība" #. Autosave options -#: ../src/ui/dialog/inkscape-preferences.cpp:1079 +#: ../src/ui/dialog/inkscape-preferences.cpp:1083 msgid "Enable autosave (requires restart)" msgstr "Ieslēgt automātisko saglabāšanu (nepieciešama pārstartēšana)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1080 +#: ../src/ui/dialog/inkscape-preferences.cpp:1084 msgid "Automatically save the current document(s) at a given interval, thus minimizing loss in case of a crash" msgstr "Automātiski saglabāt dokumentu(s) ik pēc noteiktā laika intervāla, tādējādi mazinot iespējamos zudumus avārijas apstāšanās gadījumā" -#: ../src/ui/dialog/inkscape-preferences.cpp:1086 +#: ../src/ui/dialog/inkscape-preferences.cpp:1090 msgctxt "Filesystem" msgid "Autosave _directory:" msgstr "Mape automātiskai _saglabāšanai:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1086 +#: ../src/ui/dialog/inkscape-preferences.cpp:1090 msgid "The directory where autosaves will be written. This should be an absolute path (starts with / on UNIX or a drive letter such as C: on Windows). " msgstr "Mape, kurā tiks saglabātas automātiskās kopijas. Tam ir jābūt absolūtam ceļam (sākas ar / UNIX vai diska burtu, piemēram, C:, uz Windows)." -#: ../src/ui/dialog/inkscape-preferences.cpp:1088 +#: ../src/ui/dialog/inkscape-preferences.cpp:1092 msgid "_Interval (in minutes):" msgstr "_Intervāls (minūtēs):" -#: ../src/ui/dialog/inkscape-preferences.cpp:1088 +#: ../src/ui/dialog/inkscape-preferences.cpp:1092 msgid "Interval (in minutes) at which document will be autosaved" msgstr "Intervāls (minūtēs), pēc kura dokuments tiks automātiski saglabāts" -#: ../src/ui/dialog/inkscape-preferences.cpp:1090 +#: ../src/ui/dialog/inkscape-preferences.cpp:1094 msgid "_Maximum number of autosaves:" msgstr "_Maksimālais automātisko saglabājumu skaits:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1090 +#: ../src/ui/dialog/inkscape-preferences.cpp:1094 msgid "Maximum number of autosaved files; use this to limit the storage space used" msgstr "Maksimālais automātiski saglabāto failu skaits; izmantojiet šo iestatījumu, lai ierobežotu diska vietas izmantošanu" @@ -17570,241 +17434,237 @@ msgstr "Maksimālais automātiski saglabāto failu skaits; izmantojiet šo iesta #. _autosave_autosave_interval.signal_changed().connect( sigc::ptr_fun(inkscape_autosave_init), TRUE ); #. #. ----------- -#: ../src/ui/dialog/inkscape-preferences.cpp:1105 +#: ../src/ui/dialog/inkscape-preferences.cpp:1109 msgid "Autosave" msgstr "Automātiska saglabāšana" -#: ../src/ui/dialog/inkscape-preferences.cpp:1109 +#: ../src/ui/dialog/inkscape-preferences.cpp:1113 msgid "Open Clip Art Library _Server Name:" msgstr "Open Clip Art bibliotēkas _servera nosaukums:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1110 +#: ../src/ui/dialog/inkscape-preferences.cpp:1114 msgid "The server name of the Open Clip Art Library webdav server; it's used by the Import and Export to OCAL function" msgstr "Open Clip Art bibliotēkas webdav servera nosaukums; tiek izmantots importējot un eksportējot uz OCAL funkcijā" -#: ../src/ui/dialog/inkscape-preferences.cpp:1112 +#: ../src/ui/dialog/inkscape-preferences.cpp:1116 msgid "Open Clip Art Library _Username:" msgstr "Open Clip Art bibliotēkas lietotāja vārds:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1113 +#: ../src/ui/dialog/inkscape-preferences.cpp:1117 msgid "The username used to log into Open Clip Art Library" msgstr "Lietotāja vārds, ar kuru pieslēgties Open Clip Art bibliotēkai" -#: ../src/ui/dialog/inkscape-preferences.cpp:1115 +#: ../src/ui/dialog/inkscape-preferences.cpp:1119 msgid "Open Clip Art Library _Password:" msgstr "Open Clip Art bibliotēkas _parole:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1116 +#: ../src/ui/dialog/inkscape-preferences.cpp:1120 msgid "The password used to log into Open Clip Art Library" msgstr "Parole, ar kuru pieslēgties Open Clip Art bibliotēkai" -#: ../src/ui/dialog/inkscape-preferences.cpp:1117 +#: ../src/ui/dialog/inkscape-preferences.cpp:1121 msgid "Open Clip Art" msgstr "Open Clip Art" -#: ../src/ui/dialog/inkscape-preferences.cpp:1122 +#: ../src/ui/dialog/inkscape-preferences.cpp:1126 msgid "Behavior" msgstr "Uzvedība" -#: ../src/ui/dialog/inkscape-preferences.cpp:1126 +#: ../src/ui/dialog/inkscape-preferences.cpp:1130 msgid "_Simplification threshold:" msgstr "Vienkāršošana_s slieksnis:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1127 +#: ../src/ui/dialog/inkscape-preferences.cpp:1131 msgid "How strong is the Node tool's Simplify command by default. If you invoke this command several times in quick succession, it will act more and more aggressively; invoking it again after a pause restores the default threshold." msgstr "Nosaka Mezglu rīka Komanda Vienkāršot noklusēto spēku. Ja izmantosiet šo komandu vairākkārt ar īsā laikā, tā darbosies arvien agresīvāk, izsaucot to pēc garāka pārtraukuma tiks atjaunots sākotnējais slieksnis." -#: ../src/ui/dialog/inkscape-preferences.cpp:1129 +#: ../src/ui/dialog/inkscape-preferences.cpp:1133 msgid "Color stock markers the same color as object" msgstr "Krāsot standarta marķierus objekta krāsā" -#: ../src/ui/dialog/inkscape-preferences.cpp:1130 +#: ../src/ui/dialog/inkscape-preferences.cpp:1134 msgid "Color custom markers the same color as object" msgstr "Krāsot pielāgotos marķierus objekta krāsā" -#: ../src/ui/dialog/inkscape-preferences.cpp:1131 -#: ../src/ui/dialog/inkscape-preferences.cpp:1341 +#: ../src/ui/dialog/inkscape-preferences.cpp:1135 +#: ../src/ui/dialog/inkscape-preferences.cpp:1345 msgid "Update marker color when object color changes" msgstr "Atsvaidzināt marķiera krāsu mainoties objekta krāsai" #. Selecting options -#: ../src/ui/dialog/inkscape-preferences.cpp:1134 +#: ../src/ui/dialog/inkscape-preferences.cpp:1138 msgid "Select in all layers" msgstr "Atlasīt visos slāņos" -#: ../src/ui/dialog/inkscape-preferences.cpp:1135 +#: ../src/ui/dialog/inkscape-preferences.cpp:1139 msgid "Select only within current layer" msgstr "Iezīmēt tikai pašreizējā slānī" -#: ../src/ui/dialog/inkscape-preferences.cpp:1136 +#: ../src/ui/dialog/inkscape-preferences.cpp:1140 msgid "Select in current layer and sublayers" msgstr "Atlasīt pašreizējā slānī un apakšlāņos" -#: ../src/ui/dialog/inkscape-preferences.cpp:1137 +#: ../src/ui/dialog/inkscape-preferences.cpp:1141 msgid "Ignore hidden objects and layers" msgstr "Neņemt vērā slēptus objektus un slāņus" -#: ../src/ui/dialog/inkscape-preferences.cpp:1138 +#: ../src/ui/dialog/inkscape-preferences.cpp:1142 msgid "Ignore locked objects and layers" msgstr "Neņemt vērā slēgtus objektus un slāņus" -#: ../src/ui/dialog/inkscape-preferences.cpp:1139 +#: ../src/ui/dialog/inkscape-preferences.cpp:1143 msgid "Deselect upon layer change" msgstr "Atcelt atlasi mainoties slānim" -#: ../src/ui/dialog/inkscape-preferences.cpp:1142 +#: ../src/ui/dialog/inkscape-preferences.cpp:1146 msgid "Uncheck this to be able to keep the current objects selected when the current layer changes" msgstr "Atiestatiet šo, lai būtu iespējams saglabāt objektu atlasi mainoties aktīvajam slānim" -#: ../src/ui/dialog/inkscape-preferences.cpp:1144 +#: ../src/ui/dialog/inkscape-preferences.cpp:1148 msgid "Ctrl+A, Tab, Shift+Tab" msgstr "Ctrl+A, Tab, Shift+Tab" -#: ../src/ui/dialog/inkscape-preferences.cpp:1146 +#: ../src/ui/dialog/inkscape-preferences.cpp:1150 msgid "Make keyboard selection commands work on objects in all layers" msgstr "Klaviatūras atlasīšanas komandas darbosies ar objektiem visos slāņos" -#: ../src/ui/dialog/inkscape-preferences.cpp:1148 +#: ../src/ui/dialog/inkscape-preferences.cpp:1152 msgid "Make keyboard selection commands work on objects in current layer only" msgstr "Klaviatūras atlasīšanas komandas darbosies ar objektiem tikai pašreizējā slānī" -#: ../src/ui/dialog/inkscape-preferences.cpp:1150 +#: ../src/ui/dialog/inkscape-preferences.cpp:1154 msgid "Make keyboard selection commands work on objects in current layer and all its sublayers" msgstr "Klaviatūras atlasīšanas komandas darbosies ar objektiem tikai pašreizējā slānī un visos tā apakšslāņos" -#: ../src/ui/dialog/inkscape-preferences.cpp:1152 +#: ../src/ui/dialog/inkscape-preferences.cpp:1156 msgid "Uncheck this to be able to select objects that are hidden (either by themselves or by being in a hidden layer)" msgstr "Atiestatiet šo, lai būtu iespējams atlasīt slēptos objektus (slēptus kā tādus vai arī atrodošos slēptos slāņos)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1154 +#: ../src/ui/dialog/inkscape-preferences.cpp:1158 msgid "Uncheck this to be able to select objects that are locked (either by themselves or by being in a locked layer)" msgstr "Atiestatiet šo, lai būtu iespējams atlasīt slēgtos objektus (slēgtus kā tādus vai arī atrodošos slēgtos slāņos)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1156 +#: ../src/ui/dialog/inkscape-preferences.cpp:1160 msgid "Wrap when cycling objects in z-order" msgstr "Atsākt no sākuma ciklojot objektus gar z-asi" -#: ../src/ui/dialog/inkscape-preferences.cpp:1158 +#: ../src/ui/dialog/inkscape-preferences.cpp:1162 msgid "Alt+Scroll Wheel" msgstr "Alt+peles ritentiņš" -#: ../src/ui/dialog/inkscape-preferences.cpp:1160 +#: ../src/ui/dialog/inkscape-preferences.cpp:1164 msgid "Wrap around at start and end when cycling objects in z-order" msgstr "Iet uz riņķi sasniedzot sākumu vai beigas objektu ciklošanas gar z-asi laikā" -#: ../src/ui/dialog/inkscape-preferences.cpp:1162 +#: ../src/ui/dialog/inkscape-preferences.cpp:1166 msgid "Selecting" msgstr "Izvēlas" #. Transforms options -#: ../src/ui/dialog/inkscape-preferences.cpp:1165 -#: ../src/widgets/select-toolbar.cpp:572 +#: ../src/ui/dialog/inkscape-preferences.cpp:1169 +#: ../src/widgets/select-toolbar.cpp:576 msgid "Scale stroke width" msgstr "Mainīt apmales platumu" -#: ../src/ui/dialog/inkscape-preferences.cpp:1166 +#: ../src/ui/dialog/inkscape-preferences.cpp:1170 msgid "Scale rounded corners in rectangles" msgstr "Mērogot noapaļotos taisnstūra stūrus" -#: ../src/ui/dialog/inkscape-preferences.cpp:1167 +#: ../src/ui/dialog/inkscape-preferences.cpp:1171 msgid "Transform gradients" msgstr "Pārveidot krāsu pārejas" -#: ../src/ui/dialog/inkscape-preferences.cpp:1168 +#: ../src/ui/dialog/inkscape-preferences.cpp:1172 msgid "Transform patterns" msgstr "Pārveidot faktūras" -#: ../src/ui/dialog/inkscape-preferences.cpp:1169 -msgid "Optimized" -msgstr "Optimizēts" - -#: ../src/ui/dialog/inkscape-preferences.cpp:1170 +#: ../src/ui/dialog/inkscape-preferences.cpp:1174 msgid "Preserved" msgstr "Saglabāts" -#: ../src/ui/dialog/inkscape-preferences.cpp:1173 -#: ../src/widgets/select-toolbar.cpp:573 +#: ../src/ui/dialog/inkscape-preferences.cpp:1177 +#: ../src/widgets/select-toolbar.cpp:577 msgid "When scaling objects, scale the stroke width by the same proportion" msgstr "Mērogojot objektus, proporcionāli mērogot arī apmales platumu" -#: ../src/ui/dialog/inkscape-preferences.cpp:1175 -#: ../src/widgets/select-toolbar.cpp:584 +#: ../src/ui/dialog/inkscape-preferences.cpp:1179 +#: ../src/widgets/select-toolbar.cpp:588 msgid "When scaling rectangles, scale the radii of rounded corners" msgstr "Mērogojot taisnstūrus, mērogot arī noapaļoto stūru rādiusus" -#: ../src/ui/dialog/inkscape-preferences.cpp:1177 -#: ../src/widgets/select-toolbar.cpp:595 +#: ../src/ui/dialog/inkscape-preferences.cpp:1181 +#: ../src/widgets/select-toolbar.cpp:599 msgid "Move gradients (in fill or stroke) along with the objects" msgstr "Pārvietot krāsu pārejas (aizpildījumā vai apmalē) kopā ar objektiem" -#: ../src/ui/dialog/inkscape-preferences.cpp:1179 -#: ../src/widgets/select-toolbar.cpp:606 +#: ../src/ui/dialog/inkscape-preferences.cpp:1183 +#: ../src/widgets/select-toolbar.cpp:610 msgid "Move patterns (in fill or stroke) along with the objects" msgstr "Pārvietot faktūras (aizpildījumā vai apmalē) kopā ar objektiem" -#: ../src/ui/dialog/inkscape-preferences.cpp:1180 +#: ../src/ui/dialog/inkscape-preferences.cpp:1184 msgid "Store transformation" msgstr "Saglabāt pārveidojumu" -#: ../src/ui/dialog/inkscape-preferences.cpp:1182 +#: ../src/ui/dialog/inkscape-preferences.cpp:1186 msgid "If possible, apply transformation to objects without adding a transform= attribute" msgstr "Ja iespējams, pielietojot pārveidojumus objektiem nepievienot transform= atribūtu" -#: ../src/ui/dialog/inkscape-preferences.cpp:1184 +#: ../src/ui/dialog/inkscape-preferences.cpp:1188 msgid "Always store transformation as a transform= attribute on objects" msgstr "Vienmēr saglabāt pārveidojumu objektā kā transform= atribūtu " -#: ../src/ui/dialog/inkscape-preferences.cpp:1186 +#: ../src/ui/dialog/inkscape-preferences.cpp:1190 msgid "Transforms" msgstr "Pārveidojumi" -#: ../src/ui/dialog/inkscape-preferences.cpp:1190 +#: ../src/ui/dialog/inkscape-preferences.cpp:1194 msgid "Mouse _wheel scrolls by:" msgstr "Peles _rullītis ritina par:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1191 +#: ../src/ui/dialog/inkscape-preferences.cpp:1195 msgid "One mouse wheel notch scrolls by this distance in screen pixels (horizontally with Shift)" msgstr "Viens peles ritenīša robiņš ritina par norādīto, ekrāna pikseļos izteikto, attālumu (horizontālai ritināšanai - ar Shift)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1192 +#: ../src/ui/dialog/inkscape-preferences.cpp:1196 msgid "Ctrl+arrows" msgstr "Ctrl+bultiņas" -#: ../src/ui/dialog/inkscape-preferences.cpp:1194 +#: ../src/ui/dialog/inkscape-preferences.cpp:1198 msgid "Sc_roll by:" msgstr "_Ritināt par:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1195 +#: ../src/ui/dialog/inkscape-preferences.cpp:1199 msgid "Pressing Ctrl+arrow key scrolls by this distance (in screen pixels)" msgstr "Ctrl+bultiņa nospiešana ritina par norādīto, ekrāna pikseļos izteikto, attālumu" -#: ../src/ui/dialog/inkscape-preferences.cpp:1197 +#: ../src/ui/dialog/inkscape-preferences.cpp:1201 msgid "_Acceleration:" msgstr "_Paātrinājums:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1198 +#: ../src/ui/dialog/inkscape-preferences.cpp:1202 msgid "Pressing and holding Ctrl+arrow will gradually speed up scrolling (0 for no acceleration)" msgstr "Nospiežot un turot nospiestu Ctrl+bultiņa ritināšana pakāpeniski paātrināsies (0 - lai ritinātu bez paātrinājuma)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1199 +#: ../src/ui/dialog/inkscape-preferences.cpp:1203 msgid "Autoscrolling" msgstr "Autoritināšana" -#: ../src/ui/dialog/inkscape-preferences.cpp:1201 +#: ../src/ui/dialog/inkscape-preferences.cpp:1205 msgid "_Speed:" msgstr "Ātrum_s:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1202 +#: ../src/ui/dialog/inkscape-preferences.cpp:1206 msgid "How fast the canvas autoscrolls when you drag beyond canvas edge (0 to turn autoscroll off)" msgstr "Cik ātri audekls ritināsies, ja tiks vilkts pāri audekla malai (0, lai izslēgtu automātisko ritināšanu)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1204 +#: ../src/ui/dialog/inkscape-preferences.cpp:1208 #: ../src/ui/dialog/tracedialog.cpp:522 #: ../src/ui/dialog/tracedialog.cpp:721 msgid "_Threshold:" msgstr "S_lieksnis:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1205 +#: ../src/ui/dialog/inkscape-preferences.cpp:1209 msgid "How far (in screen pixels) you need to be from the canvas edge to trigger autoscroll; positive is outside the canvas, negative is within the canvas" msgstr "Cik tālu (ekrāna pikseļos) ir jāatrodas no audekla malas, lai ieslēgtos automātiskā ritināšanās; pozitīvs skaitlis - ārpus audekla malām, negatīvs - iekšpus" @@ -17813,653 +17673,658 @@ msgstr "Cik tālu (ekrāna pikseļos) ir jāatrodas no audekla malas, lai ieslē #. _page_scrolling.add_line( false, "", _scroll_space, "", #. _("When on, pressing and holding Space and dragging with left mouse button pans canvas (as in Adobe Illustrator); when off, Space temporarily switches to Selector tool (default)")); #. -#: ../src/ui/dialog/inkscape-preferences.cpp:1211 +#: ../src/ui/dialog/inkscape-preferences.cpp:1215 msgid "Mouse wheel zooms by default" msgstr "Peles ritenītis pēc noklusēšanas veic tālummaiņu " -#: ../src/ui/dialog/inkscape-preferences.cpp:1213 +#: ../src/ui/dialog/inkscape-preferences.cpp:1217 msgid "When on, mouse wheel zooms without Ctrl and scrolls canvas with Ctrl; when off, it zooms with Ctrl and scrolls without Ctrl" msgstr "Ja iespējots, peles ritenītis bez Ctrl izpilda tālummaiņu, ar Ctrl - ritina audeklu; ja atslēgts - tālummaina ar Ctrl un ritina - bez Ctrl." -#: ../src/ui/dialog/inkscape-preferences.cpp:1214 +#: ../src/ui/dialog/inkscape-preferences.cpp:1218 msgid "Scrolling" msgstr "Ritināšana" #. Snapping options -#: ../src/ui/dialog/inkscape-preferences.cpp:1217 +#: ../src/ui/dialog/inkscape-preferences.cpp:1221 msgid "Enable snap indicator" msgstr "Ieslēgt piesaistes rādītāju" -#: ../src/ui/dialog/inkscape-preferences.cpp:1219 +#: ../src/ui/dialog/inkscape-preferences.cpp:1223 msgid "After snapping, a symbol is drawn at the point that has snapped" msgstr "Pēc piesaistes, piesaistes punktā tiek attēlots simbols" -#: ../src/ui/dialog/inkscape-preferences.cpp:1222 +#: ../src/ui/dialog/inkscape-preferences.cpp:1226 msgid "_Delay (in ms):" msgstr "Aiz_ture (milisekundēs):" -#: ../src/ui/dialog/inkscape-preferences.cpp:1223 +#: ../src/ui/dialog/inkscape-preferences.cpp:1227 msgid "Postpone snapping as long as the mouse is moving, and then wait an additional fraction of a second. This additional delay is specified here. When set to zero or to a very small number, snapping will be immediate." msgstr "Atlikt piesaisti, kamēr pele pārvietojas un nogaidīt vēl mirkli. Šīs papildu noilgums jānorāda šeit. Ja norādīta nulle vai ļoti mazs skaitlis, piesaiste notiks acumirklīgi." -#: ../src/ui/dialog/inkscape-preferences.cpp:1225 +#: ../src/ui/dialog/inkscape-preferences.cpp:1229 msgid "Only snap the node closest to the pointer" msgstr "Piesaistīt tikai vistuvāk kursoram esošajam mezglam" -#: ../src/ui/dialog/inkscape-preferences.cpp:1227 +#: ../src/ui/dialog/inkscape-preferences.cpp:1231 msgid "Only try to snap the node that is initially closest to the mouse pointer" msgstr "Piesaistīt tikai sākotnēji vistuvāk peles kursoram esošajam mezglam" -#: ../src/ui/dialog/inkscape-preferences.cpp:1230 +#: ../src/ui/dialog/inkscape-preferences.cpp:1234 msgid "_Weight factor:" msgstr "_Svara faktors:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1231 +#: ../src/ui/dialog/inkscape-preferences.cpp:1235 msgid "When multiple snap solutions are found, then Inkscape can either prefer the closest transformation (when set to 0), or prefer the node that was initially the closest to the pointer (when set to 1)" msgstr "Ja ir atrasti vairāki piesaistes risinājumi, Inkscape var dot priekšroku tuvākajam pārveidojumam (ja norādīta 0) vai arī izmantot mezglu, kas sākotnēji atradās vistuvāk peles kursoram (ja norādīts 1)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1233 +#: ../src/ui/dialog/inkscape-preferences.cpp:1237 msgid "Snap the mouse pointer when dragging a constrained knot" msgstr "Piesaistīt peles kursoru velkot ierobežotu mezglu" -#: ../src/ui/dialog/inkscape-preferences.cpp:1235 +#: ../src/ui/dialog/inkscape-preferences.cpp:1239 msgid "When dragging a knot along a constraint line, then snap the position of the mouse pointer instead of snapping the projection of the knot onto the constraint line" msgstr "Velkot mezglu gar ierobežojošo līniju, piesaistīt mezglu peles kursora atrašanās vietai, nevis piesaistīt ierobežojošajai līnijai mezgla projekciju" -#: ../src/ui/dialog/inkscape-preferences.cpp:1237 +#: ../src/ui/dialog/inkscape-preferences.cpp:1241 msgid "Snapping" msgstr "Piesaiste" #. nudgedistance is limited to 1000 in select-context.cpp: use the same limit here -#: ../src/ui/dialog/inkscape-preferences.cpp:1242 +#: ../src/ui/dialog/inkscape-preferences.cpp:1246 msgid "_Arrow keys move by:" msgstr "Bultiņ_as pārvieto par:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1243 +#: ../src/ui/dialog/inkscape-preferences.cpp:1247 msgid "Pressing an arrow key moves selected object(s) or node(s) by this distance" msgstr "Nospiežot bultiņu, atlasītais (-ie) objekts (-i) vai mezgls (-i) tiks pārvietoti par norādīto attālumu" #. defaultscale is limited to 1000 in select-context.cpp: use the same limit here -#: ../src/ui/dialog/inkscape-preferences.cpp:1246 +#: ../src/ui/dialog/inkscape-preferences.cpp:1250 msgid "> and < _scale by:" msgstr "> un < _mērogo par:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1247 +#: ../src/ui/dialog/inkscape-preferences.cpp:1251 msgid "Pressing > or < scales selection up or down by this increment" msgstr "Nospiežot > vai < palielina vai samazina atlasītā mērogu par šeit norādīto soli" -#: ../src/ui/dialog/inkscape-preferences.cpp:1249 +#: ../src/ui/dialog/inkscape-preferences.cpp:1253 msgid "_Inset/Outset by:" msgstr "Saīs_ināt/Pagarināt par:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1250 +#: ../src/ui/dialog/inkscape-preferences.cpp:1254 msgid "Inset and Outset commands displace the path by this distance" msgstr "Komandas Saīsināt un Pagarināt izmaina ceļu par šo garumu" -#: ../src/ui/dialog/inkscape-preferences.cpp:1251 +#: ../src/ui/dialog/inkscape-preferences.cpp:1255 msgid "Compass-like display of angles" msgstr "Leņķu kompasveidīgs attēlojums" -#: ../src/ui/dialog/inkscape-preferences.cpp:1253 +#: ../src/ui/dialog/inkscape-preferences.cpp:1257 msgid "When on, angles are displayed with 0 at north, 0 to 360 range, positive clockwise; otherwise with 0 at east, -180 to 180 range, positive counterclockwise" msgstr "Ja ieslēgts, leņķi tiek rādīti ar 0 ziemeļos, 0 to 360 diapazonā, pozitīvi - pulksteņrādītāja virzienā; pretējā gadījumā - 0 - austrumos, -180 to 180 diapazons, pozitīvi 0 pretēji pulksteņrādītāja virzienam" -#: ../src/ui/dialog/inkscape-preferences.cpp:1259 +#: ../src/ui/dialog/inkscape-preferences.cpp:1263 msgid "_Rotation snaps every:" msgstr "Griešana piesaistās ik pēc:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1259 +#: ../src/ui/dialog/inkscape-preferences.cpp:1263 msgid "degrees" msgstr "grādi" -#: ../src/ui/dialog/inkscape-preferences.cpp:1260 +#: ../src/ui/dialog/inkscape-preferences.cpp:1264 msgid "Rotating with Ctrl pressed snaps every that much degrees; also, pressing [ or ] rotates by this amount" msgstr "Griešana ar nospiestu Ctrl piesaistīta norādītajiem grādiem (solim); [ vai ] nospiešana tāpat pagriež par norādīto lielumu" -#: ../src/ui/dialog/inkscape-preferences.cpp:1261 +#: ../src/ui/dialog/inkscape-preferences.cpp:1265 msgid "Relative snapping of guideline angles" msgstr "Relatīvā palīglīniju leņķu piesaiste" -#: ../src/ui/dialog/inkscape-preferences.cpp:1263 +#: ../src/ui/dialog/inkscape-preferences.cpp:1267 msgid "When on, the snap angles when rotating a guideline will be relative to the original angle" msgstr "Ja ieslēgts, griežot palīglīniju piesaistes leņķi būs relatīvi pret sākotnējo leņķi" -#: ../src/ui/dialog/inkscape-preferences.cpp:1265 +#: ../src/ui/dialog/inkscape-preferences.cpp:1269 msgid "_Zoom in/out by:" msgstr "_Tuvināt/tālināt par:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1266 +#: ../src/ui/dialog/inkscape-preferences.cpp:1269 +msgid "%" +msgstr "%" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1270 msgid "Zoom tool click, +/- keys, and middle click zoom in and out by this multiplier" msgstr "Tālummaiņas rīkā klikšķis, +/- pogas un vidējā peles pogas klikšķis tuvina vai tālina par norādīto reižu skaitu" -#: ../src/ui/dialog/inkscape-preferences.cpp:1267 +#: ../src/ui/dialog/inkscape-preferences.cpp:1271 msgid "Steps" msgstr "Soļi" #. Clones options -#: ../src/ui/dialog/inkscape-preferences.cpp:1270 +#: ../src/ui/dialog/inkscape-preferences.cpp:1274 msgid "Move in parallel" msgstr "Pārvietot paralēli" -#: ../src/ui/dialog/inkscape-preferences.cpp:1272 +#: ../src/ui/dialog/inkscape-preferences.cpp:1276 msgid "Stay unmoved" msgstr "Saglabāt nekustīgu" -#: ../src/ui/dialog/inkscape-preferences.cpp:1274 +#: ../src/ui/dialog/inkscape-preferences.cpp:1278 msgid "Move according to transform" msgstr "Pārvietoties atbilstoši pārveidojumam" -#: ../src/ui/dialog/inkscape-preferences.cpp:1276 +#: ../src/ui/dialog/inkscape-preferences.cpp:1280 msgid "Are unlinked" msgstr "Ir atsaistīti" -#: ../src/ui/dialog/inkscape-preferences.cpp:1278 +#: ../src/ui/dialog/inkscape-preferences.cpp:1282 msgid "Are deleted" msgstr "Ir izdzēsti" -#: ../src/ui/dialog/inkscape-preferences.cpp:1281 +#: ../src/ui/dialog/inkscape-preferences.cpp:1285 msgid "Moving original: clones and linked offsets" msgstr "Oriģināla pārvietošana: kloni un saistītās nobīdes" -#: ../src/ui/dialog/inkscape-preferences.cpp:1283 +#: ../src/ui/dialog/inkscape-preferences.cpp:1287 msgid "Clones are translated by the same vector as their original" msgstr "Kloni tiek nobīdīti gar to pašu vektoru, kā to oriģināls" -#: ../src/ui/dialog/inkscape-preferences.cpp:1285 +#: ../src/ui/dialog/inkscape-preferences.cpp:1289 msgid "Clones preserve their positions when their original is moved" msgstr "Kloni saglabā savas atrašanās vietas, ja tiek pārvietots oriģināls" -#: ../src/ui/dialog/inkscape-preferences.cpp:1287 +#: ../src/ui/dialog/inkscape-preferences.cpp:1291 msgid "Each clone moves according to the value of its transform= attribute; for example, a rotated clone will move in a different direction than its original" msgstr "Katrs klons pārvietojas atbilstoši transform= atribūta vērtībai, piemēram - pagriezts klons pārvietosies no tā oriģināla atšķirīgā virzienā" -#: ../src/ui/dialog/inkscape-preferences.cpp:1288 +#: ../src/ui/dialog/inkscape-preferences.cpp:1292 msgid "Deleting original: clones" msgstr "Dzēš oriģinālu: kloni" -#: ../src/ui/dialog/inkscape-preferences.cpp:1290 +#: ../src/ui/dialog/inkscape-preferences.cpp:1294 msgid "Orphaned clones are converted to regular objects" msgstr "Kloni-bāreņi tiek pārvērsti par patstāvīgiem objektiem" -#: ../src/ui/dialog/inkscape-preferences.cpp:1292 +#: ../src/ui/dialog/inkscape-preferences.cpp:1296 msgid "Orphaned clones are deleted along with their original" msgstr "Kloni-bāreņi tiek nodzēsti kopā ar to oriģinālu" -#: ../src/ui/dialog/inkscape-preferences.cpp:1294 +#: ../src/ui/dialog/inkscape-preferences.cpp:1298 msgid "Duplicating original+clones/linked offset" msgstr "Dublējot oriģinālus+klonus/saistītās nobīdes" -#: ../src/ui/dialog/inkscape-preferences.cpp:1296 +#: ../src/ui/dialog/inkscape-preferences.cpp:1300 msgid "Relink duplicated clones" msgstr "Atjaunot dublēto0 klonu sasaisti" -#: ../src/ui/dialog/inkscape-preferences.cpp:1298 +#: ../src/ui/dialog/inkscape-preferences.cpp:1302 msgid "When duplicating a selection containing both a clone and its original (possibly in groups), relink the duplicated clone to the duplicated original instead of the old original" msgstr "Dublējot atlasītos objektus, kas satur gan klonu, gan tā oriģinālu (iespējams - grupās), piesaistīt dublēto klonu dublētajam oriģinālam, nevis vecajam" #. TRANSLATORS: Heading for the Inkscape Preferences "Clones" Page -#: ../src/ui/dialog/inkscape-preferences.cpp:1301 +#: ../src/ui/dialog/inkscape-preferences.cpp:1305 msgid "Clones" msgstr "Kloni" #. Clip paths and masks options -#: ../src/ui/dialog/inkscape-preferences.cpp:1304 +#: ../src/ui/dialog/inkscape-preferences.cpp:1308 msgid "When applying, use the topmost selected object as clippath/mask" msgstr "Pielietojot par griešanas ceļu/masku izmantot augšējo atlasīto objektu" -#: ../src/ui/dialog/inkscape-preferences.cpp:1306 +#: ../src/ui/dialog/inkscape-preferences.cpp:1310 msgid "Uncheck this to use the bottom selected object as the clipping path or mask" msgstr "Atķeksējiet šo, lai par griešanas ceļu vai masku izmantotu apakšējo atlasīto objektu" -#: ../src/ui/dialog/inkscape-preferences.cpp:1307 +#: ../src/ui/dialog/inkscape-preferences.cpp:1311 msgid "Remove clippath/mask object after applying" msgstr "Aizvākt griešanas ceļa/maskas objektu pēc pielietošanas" -#: ../src/ui/dialog/inkscape-preferences.cpp:1309 +#: ../src/ui/dialog/inkscape-preferences.cpp:1313 msgid "After applying, remove the object used as the clipping path or mask from the drawing" msgstr "Pēc pielietošanas aizvākt no attēla objektu, kas kalpoja par griešanas ceļu vai masku" -#: ../src/ui/dialog/inkscape-preferences.cpp:1311 +#: ../src/ui/dialog/inkscape-preferences.cpp:1315 msgid "Before applying" msgstr "Pirms pielietošanas" -#: ../src/ui/dialog/inkscape-preferences.cpp:1313 +#: ../src/ui/dialog/inkscape-preferences.cpp:1317 msgid "Do not group clipped/masked objects" msgstr "Negrupēt izgrieztos/maskētos objektus" -#: ../src/ui/dialog/inkscape-preferences.cpp:1314 +#: ../src/ui/dialog/inkscape-preferences.cpp:1318 msgid "Put every clipped/masked object in its own group" msgstr "Ievietot ikvienu izgriezto/maskēto objektu atsevišķā grupā" -#: ../src/ui/dialog/inkscape-preferences.cpp:1315 +#: ../src/ui/dialog/inkscape-preferences.cpp:1319 msgid "Put all clipped/masked objects into one group" msgstr "Ievietot visus izgrieztos/maskētos objektus vienā grupā" -#: ../src/ui/dialog/inkscape-preferences.cpp:1318 +#: ../src/ui/dialog/inkscape-preferences.cpp:1322 msgid "Apply clippath/mask to every object" msgstr "Pielietot griešanas ceļu/masku katram objektam" -#: ../src/ui/dialog/inkscape-preferences.cpp:1321 +#: ../src/ui/dialog/inkscape-preferences.cpp:1325 msgid "Apply clippath/mask to groups containing single object" msgstr "Pielietot izgriešanas ceļu/masku grupām, kas satur tikai vienu objektu" -#: ../src/ui/dialog/inkscape-preferences.cpp:1324 +#: ../src/ui/dialog/inkscape-preferences.cpp:1328 msgid "Apply clippath/mask to group containing all objects" msgstr "Pielietot izgriešanas ceļu/masku grupai, kas satur visus objektus" -#: ../src/ui/dialog/inkscape-preferences.cpp:1326 +#: ../src/ui/dialog/inkscape-preferences.cpp:1330 msgid "After releasing" msgstr "Pēc atbrīvošanas" -#: ../src/ui/dialog/inkscape-preferences.cpp:1328 +#: ../src/ui/dialog/inkscape-preferences.cpp:1332 msgid "Ungroup automatically created groups" msgstr "Atgrupēt automātiski izveidotas grupas" -#: ../src/ui/dialog/inkscape-preferences.cpp:1330 +#: ../src/ui/dialog/inkscape-preferences.cpp:1334 msgid "Ungroup groups created when setting clip/mask" msgstr "Atgrupēt grupas, kas izveidojušas iestatot apgriešanas ceļu/masku" -#: ../src/ui/dialog/inkscape-preferences.cpp:1332 +#: ../src/ui/dialog/inkscape-preferences.cpp:1336 msgid "Clippaths and masks" msgstr "Izgriešanas ceļi un maskas" -#: ../src/ui/dialog/inkscape-preferences.cpp:1335 +#: ../src/ui/dialog/inkscape-preferences.cpp:1339 msgid "Stroke Style Markers" msgstr "Apmaļu stilu marķieri" -#: ../src/ui/dialog/inkscape-preferences.cpp:1337 -#: ../src/ui/dialog/inkscape-preferences.cpp:1339 +#: ../src/ui/dialog/inkscape-preferences.cpp:1341 +#: ../src/ui/dialog/inkscape-preferences.cpp:1343 msgid "Stroke color same as object, fill color either object fill color or marker fill color" msgstr "Apmales krāsa tāda pati, kā objektam, aizpildījuma krāsa - vai nu objekta aizpildījuma krāsa vai marķiera aizpildījuma krāsa" -#: ../src/ui/dialog/inkscape-preferences.cpp:1343 +#: ../src/ui/dialog/inkscape-preferences.cpp:1347 msgid "Markers" msgstr "Marķieri" -#: ../src/ui/dialog/inkscape-preferences.cpp:1346 +#: ../src/ui/dialog/inkscape-preferences.cpp:1350 msgid "Document cleanup" msgstr "Dokumenta uzkopšana" -#: ../src/ui/dialog/inkscape-preferences.cpp:1347 -#: ../src/ui/dialog/inkscape-preferences.cpp:1349 +#: ../src/ui/dialog/inkscape-preferences.cpp:1351 +#: ../src/ui/dialog/inkscape-preferences.cpp:1353 msgid "Remove unused swatches when doing a document cleanup" msgstr "Veicot dokumenta uzkopšanu aizvākt neizmantotās paletes" #. tooltip -#: ../src/ui/dialog/inkscape-preferences.cpp:1350 +#: ../src/ui/dialog/inkscape-preferences.cpp:1354 msgid "Cleanup" msgstr "Uzkopt" -#: ../src/ui/dialog/inkscape-preferences.cpp:1358 +#: ../src/ui/dialog/inkscape-preferences.cpp:1362 msgid "Number of _Threads:" msgstr "Pavedienu skai_ts:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1358 -#: ../src/ui/dialog/inkscape-preferences.cpp:1876 +#: ../src/ui/dialog/inkscape-preferences.cpp:1362 +#: ../src/ui/dialog/inkscape-preferences.cpp:1880 msgid "(requires restart)" msgstr "(nepieciešama pārstartēšana)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1359 +#: ../src/ui/dialog/inkscape-preferences.cpp:1363 msgid "Configure number of processors/threads to use when rendering filters" msgstr "Iestatiet filtru renderēšanai izmantojamo procesoru/pavedienu skaitu" -#: ../src/ui/dialog/inkscape-preferences.cpp:1363 +#: ../src/ui/dialog/inkscape-preferences.cpp:1367 msgid "Rendering _cache size:" msgstr "Renderēšanas bufera izmērs:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1363 +#: ../src/ui/dialog/inkscape-preferences.cpp:1367 msgctxt "mebibyte (2^20 bytes) abbreviation" msgid "MiB" msgstr "MiB" -#: ../src/ui/dialog/inkscape-preferences.cpp:1363 +#: ../src/ui/dialog/inkscape-preferences.cpp:1367 msgid "Set the amount of memory per document which can be used to store rendered parts of the drawing for later reuse; set to zero to disable caching" msgstr "Nosakiet katram dokumentam pieejamās atmiņas apjomu, kurā glabāt attēla renderētās daļas vēlākai izmantošanai; lai atslēgtu kešatmiņu, ievadiet 0" #. blur quality #. filter quality -#: ../src/ui/dialog/inkscape-preferences.cpp:1366 -#: ../src/ui/dialog/inkscape-preferences.cpp:1390 +#: ../src/ui/dialog/inkscape-preferences.cpp:1370 +#: ../src/ui/dialog/inkscape-preferences.cpp:1394 msgid "Best quality (slowest)" msgstr "Vislabākā kvalitāte (vislēnāk)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1368 -#: ../src/ui/dialog/inkscape-preferences.cpp:1392 +#: ../src/ui/dialog/inkscape-preferences.cpp:1372 +#: ../src/ui/dialog/inkscape-preferences.cpp:1396 msgid "Better quality (slower)" msgstr "Labāka kvalitāte (lēnāk)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1370 -#: ../src/ui/dialog/inkscape-preferences.cpp:1394 +#: ../src/ui/dialog/inkscape-preferences.cpp:1374 +#: ../src/ui/dialog/inkscape-preferences.cpp:1398 msgid "Average quality" msgstr "Vidēja kvalitāte" -#: ../src/ui/dialog/inkscape-preferences.cpp:1372 -#: ../src/ui/dialog/inkscape-preferences.cpp:1396 +#: ../src/ui/dialog/inkscape-preferences.cpp:1376 +#: ../src/ui/dialog/inkscape-preferences.cpp:1400 msgid "Lower quality (faster)" msgstr "Zemāka kvalitāte (ātrāk)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1374 -#: ../src/ui/dialog/inkscape-preferences.cpp:1398 +#: ../src/ui/dialog/inkscape-preferences.cpp:1378 +#: ../src/ui/dialog/inkscape-preferences.cpp:1402 msgid "Lowest quality (fastest)" msgstr "Viszemākā kvalitāte (visātrāk)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1377 +#: ../src/ui/dialog/inkscape-preferences.cpp:1381 msgid "Gaussian blur quality for display" msgstr "Gausa izpludināšanas kvalitāte ekrānam" -#: ../src/ui/dialog/inkscape-preferences.cpp:1379 -#: ../src/ui/dialog/inkscape-preferences.cpp:1403 +#: ../src/ui/dialog/inkscape-preferences.cpp:1383 +#: ../src/ui/dialog/inkscape-preferences.cpp:1407 msgid "Best quality, but display may be very slow at high zooms (bitmap export always uses best quality)" msgstr "Visaugstākā kvalitāte, taču attēlošanas ātrums var būt ļoti zems lielos palielinājumos (tuvinājumos); (bitkartes eksports vienmēr izmanto augstāko kvalitāti)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1381 -#: ../src/ui/dialog/inkscape-preferences.cpp:1405 +#: ../src/ui/dialog/inkscape-preferences.cpp:1385 +#: ../src/ui/dialog/inkscape-preferences.cpp:1409 msgid "Better quality, but slower display" msgstr "Labāka kvalitāte, taču lēnāka attēlošana" -#: ../src/ui/dialog/inkscape-preferences.cpp:1383 -#: ../src/ui/dialog/inkscape-preferences.cpp:1407 +#: ../src/ui/dialog/inkscape-preferences.cpp:1387 +#: ../src/ui/dialog/inkscape-preferences.cpp:1411 msgid "Average quality, acceptable display speed" msgstr "Vidēja kvalitāte, pieņemams attēlošanas ātrums" -#: ../src/ui/dialog/inkscape-preferences.cpp:1385 -#: ../src/ui/dialog/inkscape-preferences.cpp:1409 +#: ../src/ui/dialog/inkscape-preferences.cpp:1389 +#: ../src/ui/dialog/inkscape-preferences.cpp:1413 msgid "Lower quality (some artifacts), but display is faster" msgstr "Zemāka kvalitāte (daži traucējumi), taču lielāks attēlošanas ātrums" -#: ../src/ui/dialog/inkscape-preferences.cpp:1387 -#: ../src/ui/dialog/inkscape-preferences.cpp:1411 +#: ../src/ui/dialog/inkscape-preferences.cpp:1391 +#: ../src/ui/dialog/inkscape-preferences.cpp:1415 msgid "Lowest quality (considerable artifacts), but display is fastest" msgstr "Viszemākā kvalitāte (ievērojami traucējumi), taču vislielākaiss attēlošanas ātrums" -#: ../src/ui/dialog/inkscape-preferences.cpp:1401 +#: ../src/ui/dialog/inkscape-preferences.cpp:1405 msgid "Filter effects quality for display" msgstr "Filtru efektu kvalitāte attēlošanai uz ekrāna" #. build custom preferences tab -#: ../src/ui/dialog/inkscape-preferences.cpp:1413 +#: ../src/ui/dialog/inkscape-preferences.cpp:1417 #: ../src/ui/dialog/print.cpp:224 msgid "Rendering" msgstr "Renderēšana" -#: ../src/ui/dialog/inkscape-preferences.cpp:1419 +#: ../src/ui/dialog/inkscape-preferences.cpp:1423 msgid "2x2" msgstr "2x2" -#: ../src/ui/dialog/inkscape-preferences.cpp:1419 +#: ../src/ui/dialog/inkscape-preferences.cpp:1423 msgid "4x4" msgstr "4x4" -#: ../src/ui/dialog/inkscape-preferences.cpp:1419 +#: ../src/ui/dialog/inkscape-preferences.cpp:1423 msgid "8x8" msgstr "8x8" -#: ../src/ui/dialog/inkscape-preferences.cpp:1419 +#: ../src/ui/dialog/inkscape-preferences.cpp:1423 msgid "16x16" msgstr "16x16" -#: ../src/ui/dialog/inkscape-preferences.cpp:1423 +#: ../src/ui/dialog/inkscape-preferences.cpp:1427 msgid "Oversample bitmaps:" msgstr "Izlīdzināt rastru pēc punktiem:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1426 +#: ../src/ui/dialog/inkscape-preferences.cpp:1430 msgid "Automatically reload bitmaps" msgstr "Automātiski atsvaidzināt bitkartes attēlus" -#: ../src/ui/dialog/inkscape-preferences.cpp:1428 +#: ../src/ui/dialog/inkscape-preferences.cpp:1432 msgid "Automatically reload linked images when file is changed on disk" msgstr "Automātiski pārlādēt saistītos attēlus, ja fails uz diska ir mainījies" -#: ../src/ui/dialog/inkscape-preferences.cpp:1430 +#: ../src/ui/dialog/inkscape-preferences.cpp:1434 msgid "_Bitmap editor:" msgstr "_Bitkartes redaktors:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1432 +#: ../src/ui/dialog/inkscape-preferences.cpp:1436 msgid "Default export _resolution:" msgstr "Noklusētā eksporta izšķi_rtspēja" -#: ../src/ui/dialog/inkscape-preferences.cpp:1433 +#: ../src/ui/dialog/inkscape-preferences.cpp:1437 msgid "Default bitmap resolution (in dots per inch) in the Export dialog" msgstr "Noklusētā bitkartes izšķirtspēja (punktos uz collu) eksporta dialoglodzinņā" -#: ../src/ui/dialog/inkscape-preferences.cpp:1435 +#: ../src/ui/dialog/inkscape-preferences.cpp:1439 msgid "Resolution for Create Bitmap _Copy:" msgstr "Izšķirtspēja komandai 'Izveidot bitkartes kopiju':" -#: ../src/ui/dialog/inkscape-preferences.cpp:1436 +#: ../src/ui/dialog/inkscape-preferences.cpp:1440 msgid "Resolution used by the Create Bitmap Copy command" msgstr "Izšķirtspēja komandai 'Izveidot bitkartes kopiju'" -#: ../src/ui/dialog/inkscape-preferences.cpp:1438 +#: ../src/ui/dialog/inkscape-preferences.cpp:1442 msgid "Always embed" msgstr "Vienmēr iegult" -#: ../src/ui/dialog/inkscape-preferences.cpp:1438 +#: ../src/ui/dialog/inkscape-preferences.cpp:1442 msgid "Always link" msgstr "Vienmēr piesaistīt" -#: ../src/ui/dialog/inkscape-preferences.cpp:1438 +#: ../src/ui/dialog/inkscape-preferences.cpp:1442 msgid "Ask" msgstr "Jautāt" -#: ../src/ui/dialog/inkscape-preferences.cpp:1441 +#: ../src/ui/dialog/inkscape-preferences.cpp:1445 msgid "Bitmap import:" msgstr "Bitkartes imports:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1444 +#: ../src/ui/dialog/inkscape-preferences.cpp:1448 msgid "Bitmap import quality:" msgstr "Bitkartes importa kvalitāte:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1447 +#: ../src/ui/dialog/inkscape-preferences.cpp:1451 msgid "Default _import resolution:" msgstr "Noklusētā importa izšķirtspēja:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1448 +#: ../src/ui/dialog/inkscape-preferences.cpp:1452 msgid "Default bitmap resolution (in dots per inch) for bitmap import" msgstr "Noklusētā bitkartes izšķirtspēja (punktos uz collu) bitkartes importam" -#: ../src/ui/dialog/inkscape-preferences.cpp:1449 +#: ../src/ui/dialog/inkscape-preferences.cpp:1453 msgid "Override file resolution" msgstr "Neņemt vērā faila izšķirtspēju" -#: ../src/ui/dialog/inkscape-preferences.cpp:1451 +#: ../src/ui/dialog/inkscape-preferences.cpp:1455 msgid "Use default bitmap resolution in favor of information from file" msgstr "Dot priekšroku noklusētajai bitkartes izšķirtspējai attiecībā pret failā esošo informāciju" -#: ../src/ui/dialog/inkscape-preferences.cpp:1453 +#: ../src/ui/dialog/inkscape-preferences.cpp:1457 msgid "Bitmaps" msgstr "Bitkartes" -#: ../src/ui/dialog/inkscape-preferences.cpp:1465 +#: ../src/ui/dialog/inkscape-preferences.cpp:1469 msgid "Select a file of predefined shortcuts to use. Any customized shortcuts you create will be added seperately to " msgstr "Izvēlieties failu ar iepriekš definētām saīsnēm. Visas Jūsu izveidotās pielāgotās saīsnes tiks pievienotas pie" -#: ../src/ui/dialog/inkscape-preferences.cpp:1468 +#: ../src/ui/dialog/inkscape-preferences.cpp:1472 msgid "Shortcut file:" msgstr "Saīsņu fails:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1471 +#: ../src/ui/dialog/inkscape-preferences.cpp:1475 +#: ../src/ui/dialog/template-load-tab.cpp:46 msgid "Search:" msgstr "Meklēt:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1483 +#: ../src/ui/dialog/inkscape-preferences.cpp:1487 msgid "Shortcut" msgstr "Saīsne" -#: ../src/ui/dialog/inkscape-preferences.cpp:1484 -#: ../src/ui/widget/page-sizer.cpp:262 +#: ../src/ui/dialog/inkscape-preferences.cpp:1488 +#: ../src/ui/widget/page-sizer.cpp:260 msgid "Description" msgstr "Apraksts" -#: ../src/ui/dialog/inkscape-preferences.cpp:1539 +#: ../src/ui/dialog/inkscape-preferences.cpp:1543 #: ../src/ui/dialog/svg-fonts-dialog.cpp:694 #: ../src/ui/dialog/tracedialog.cpp:813 #: ../src/ui/widget/preferences-widget.cpp:749 msgid "Reset" msgstr "Atiestatīt" -#: ../src/ui/dialog/inkscape-preferences.cpp:1539 +#: ../src/ui/dialog/inkscape-preferences.cpp:1543 msgid "Remove all your customized keyboard shortcuts, and revert to the shortcuts in the shortcut file listed above" msgstr "Aizvākt visas Jūsu pielāgotās klaviatūras saīsnes un aizvietot ar saīsnēm ne zemāk norādītā faila" -#: ../src/ui/dialog/inkscape-preferences.cpp:1543 +#: ../src/ui/dialog/inkscape-preferences.cpp:1547 msgid "Import ..." msgstr "Importēt ..." -#: ../src/ui/dialog/inkscape-preferences.cpp:1543 +#: ../src/ui/dialog/inkscape-preferences.cpp:1547 msgid "Import custom keyboard shortcuts from a file" msgstr "Importēt pielāgotās klaviatūras saīsnes no faila" -#: ../src/ui/dialog/inkscape-preferences.cpp:1546 +#: ../src/ui/dialog/inkscape-preferences.cpp:1550 msgid "Export ..." msgstr "Eksportēt ..." -#: ../src/ui/dialog/inkscape-preferences.cpp:1546 +#: ../src/ui/dialog/inkscape-preferences.cpp:1550 msgid "Export custom keyboard shortcuts to a file" msgstr "Eksportēt pielāgotos klaviatūras īsinājumtaustiņus failā" -#: ../src/ui/dialog/inkscape-preferences.cpp:1556 +#: ../src/ui/dialog/inkscape-preferences.cpp:1560 msgid "Keyboard Shortcuts" msgstr "Klaviatūras saīsnes" #. Find this group in the tree -#: ../src/ui/dialog/inkscape-preferences.cpp:1719 +#: ../src/ui/dialog/inkscape-preferences.cpp:1723 msgid "Misc" msgstr "Dažādi" -#: ../src/ui/dialog/inkscape-preferences.cpp:1838 +#: ../src/ui/dialog/inkscape-preferences.cpp:1842 msgid "Set the main spell check language" msgstr "Iestatiet galveno pareizrakstības pārbaudes valodu" -#: ../src/ui/dialog/inkscape-preferences.cpp:1841 +#: ../src/ui/dialog/inkscape-preferences.cpp:1845 msgid "Second language:" msgstr "Otrā valoda:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1842 +#: ../src/ui/dialog/inkscape-preferences.cpp:1846 msgid "Set the second spell check language; checking will only stop on words unknown in ALL chosen languages" msgstr "Iestatiet otro pareizrakstības pārbaudes valodu, pārbaude apstāsies tikai pie vārdiem, kuri nav atrodami NEVIENĀ no izvēlētajām valodām" -#: ../src/ui/dialog/inkscape-preferences.cpp:1845 +#: ../src/ui/dialog/inkscape-preferences.cpp:1849 msgid "Third language:" msgstr "Trešā valoda:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1846 +#: ../src/ui/dialog/inkscape-preferences.cpp:1850 msgid "Set the third spell check language; checking will only stop on words unknown in ALL chosen languages" msgstr "Iestatiet trešo pareizrakstības pārbaudes valodu, pārbaude apstāsies tikai pie vārdiem, kuri nav atrodami NEVIENĀ no izvēlētajām valodām" -#: ../src/ui/dialog/inkscape-preferences.cpp:1848 +#: ../src/ui/dialog/inkscape-preferences.cpp:1852 msgid "Ignore words with digits" msgstr "Neņemt vērā vārdus ar skaitļiem " -#: ../src/ui/dialog/inkscape-preferences.cpp:1850 +#: ../src/ui/dialog/inkscape-preferences.cpp:1854 msgid "Ignore words containing digits, such as \"R2D2\"" msgstr "Neņemt vērā vārdus, kas satur arī ciparus, kā piem. \"R2D2\"" -#: ../src/ui/dialog/inkscape-preferences.cpp:1852 +#: ../src/ui/dialog/inkscape-preferences.cpp:1856 msgid "Ignore words in ALL CAPITALS" msgstr "Neņem vērā vārdus ar LIELAJIEM BURTIEM" -#: ../src/ui/dialog/inkscape-preferences.cpp:1854 +#: ../src/ui/dialog/inkscape-preferences.cpp:1858 msgid "Ignore words in all capitals, such as \"IUPAC\"" msgstr "Neņem vērā vārdus, kas uzrakstīti tikai ar lielajiem burtiem, piem. \"IUPAC\"" -#: ../src/ui/dialog/inkscape-preferences.cpp:1856 +#: ../src/ui/dialog/inkscape-preferences.cpp:1860 msgid "Spellcheck" msgstr "Pareizrakstība" -#: ../src/ui/dialog/inkscape-preferences.cpp:1876 +#: ../src/ui/dialog/inkscape-preferences.cpp:1880 msgid "Latency _skew:" msgstr "Aizture_s nobīde:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1877 +#: ../src/ui/dialog/inkscape-preferences.cpp:1881 msgid "Factor by which the event clock is skewed from the actual time (0.9766 on some systems)" msgstr "Lielums, par kuru notikumu pulkstenis ir nobīdīts attiecībā pret patieso laiku (0,9766 dažās sistēmās)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1879 +#: ../src/ui/dialog/inkscape-preferences.cpp:1883 msgid "Pre-render named icons" msgstr "Renderēt nosauktās ikonas" -#: ../src/ui/dialog/inkscape-preferences.cpp:1881 +#: ../src/ui/dialog/inkscape-preferences.cpp:1885 msgid "When on, named icons will be rendered before displaying the ui. This is for working around bugs in GTK+ named icon notification" msgstr "Ja ieslēgts, nosauktās ikonas tiks renderētas pirms saskarnes atvēršanas. Tas nepieciešams, lai apietu kļūdas GTK+ nosaukto ikonu notifikācijā" -#: ../src/ui/dialog/inkscape-preferences.cpp:1889 +#: ../src/ui/dialog/inkscape-preferences.cpp:1893 msgid "System info" msgstr "Sistēmas informācija" -#: ../src/ui/dialog/inkscape-preferences.cpp:1893 +#: ../src/ui/dialog/inkscape-preferences.cpp:1897 msgid "User config: " msgstr "Lietotāja konfigurācija:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1893 +#: ../src/ui/dialog/inkscape-preferences.cpp:1897 msgid "Location of users configuration" msgstr "Lietotāja konfigurācijas atrašanās vieta" -#: ../src/ui/dialog/inkscape-preferences.cpp:1897 +#: ../src/ui/dialog/inkscape-preferences.cpp:1901 msgid "User preferences: " msgstr "Lietotāja iestatījumi:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1897 +#: ../src/ui/dialog/inkscape-preferences.cpp:1901 msgid "Location of the users preferences file" msgstr "Lietotāja iestatījumu faila atrašanās vieta" -#: ../src/ui/dialog/inkscape-preferences.cpp:1901 +#: ../src/ui/dialog/inkscape-preferences.cpp:1905 msgid "User extensions: " msgstr "Lietotāja paplašinājumi:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1901 +#: ../src/ui/dialog/inkscape-preferences.cpp:1905 msgid "Location of the users extensions" msgstr "Lietotāja paplašinājumu atrašanās vieta" -#: ../src/ui/dialog/inkscape-preferences.cpp:1905 +#: ../src/ui/dialog/inkscape-preferences.cpp:1909 msgid "User cache: " msgstr "Lietotāja kešatmiņa:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1905 +#: ../src/ui/dialog/inkscape-preferences.cpp:1909 msgid "Location of users cache" msgstr "Lietotāja kešatmiņas atrašanās vieta" -#: ../src/ui/dialog/inkscape-preferences.cpp:1913 +#: ../src/ui/dialog/inkscape-preferences.cpp:1917 msgid "Temporary files: " msgstr "Pagaidu faili:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1913 +#: ../src/ui/dialog/inkscape-preferences.cpp:1917 msgid "Location of the temporary files used for autosave" msgstr "Automātiskās saglabāšanas pagaidu failu atrašanās vieta" -#: ../src/ui/dialog/inkscape-preferences.cpp:1917 +#: ../src/ui/dialog/inkscape-preferences.cpp:1921 msgid "Inkscape data: " msgstr "Inkscape dati:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1917 +#: ../src/ui/dialog/inkscape-preferences.cpp:1921 msgid "Location of Inkscape data" msgstr "Inkscape datu atrašanās vieta" -#: ../src/ui/dialog/inkscape-preferences.cpp:1921 +#: ../src/ui/dialog/inkscape-preferences.cpp:1925 msgid "Inkscape extensions: " msgstr "Inkscape paplašinājumi:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1921 +#: ../src/ui/dialog/inkscape-preferences.cpp:1925 msgid "Location of the Inkscape extensions" msgstr "Inkscape paplašinājumu atrašanās vieta" -#: ../src/ui/dialog/inkscape-preferences.cpp:1930 +#: ../src/ui/dialog/inkscape-preferences.cpp:1934 msgid "System data: " msgstr "Sistēmas dati:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1930 +#: ../src/ui/dialog/inkscape-preferences.cpp:1934 msgid "Locations of system data" msgstr "Sistēmas datu atrašanās vietas" -#: ../src/ui/dialog/inkscape-preferences.cpp:1954 +#: ../src/ui/dialog/inkscape-preferences.cpp:1958 msgid "Icon theme: " msgstr "Ikonu tēma:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1954 +#: ../src/ui/dialog/inkscape-preferences.cpp:1958 msgid "Locations of icon themes" msgstr "Ikonu tēmu atrašanās vietas" -#: ../src/ui/dialog/inkscape-preferences.cpp:1956 +#: ../src/ui/dialog/inkscape-preferences.cpp:1960 msgid "System" msgstr "Sistēma" @@ -18526,7 +18391,7 @@ msgid "_Use pressure-sensitive tablet (requires restart)" msgstr "Izmanto spiedienjūtīg_u planšeti (nepieciešama pārstartēšana)" #: ../src/ui/dialog/input.cpp:1082 -#: ../src/verbs.cpp:2301 +#: ../src/verbs.cpp:2354 msgid "_Save" msgstr "_Saglabāt" @@ -18543,9 +18408,9 @@ msgid "A device can be 'Disabled', its co-ordinates mapped to the whole 'Screen' msgstr "Iekārta var būt 'Atslēgta', tās koordinātes piešķirtas visam 'Ekrānam', vai arī (parasti fokusētam) 'Logam'" #: ../src/ui/dialog/input.cpp:1616 -#: ../src/widgets/calligraphy-toolbar.cpp:599 -#: ../src/widgets/spray-toolbar.cpp:240 -#: ../src/widgets/tweak-toolbar.cpp:390 +#: ../src/widgets/calligraphy-toolbar.cpp:595 +#: ../src/widgets/spray-toolbar.cpp:236 +#: ../src/widgets/tweak-toolbar.cpp:386 msgid "Pressure" msgstr "Spiediens" @@ -18589,8 +18454,8 @@ msgstr "Pārdēvēt slāni" #. TODO: find an unused layer number, forming name from _("Layer ") + "%d" #: ../src/ui/dialog/layer-properties.cpp:354 #: ../src/ui/dialog/layer-properties.cpp:410 -#: ../src/verbs.cpp:192 -#: ../src/verbs.cpp:2232 +#: ../src/verbs.cpp:194 +#: ../src/verbs.cpp:2285 msgid "Layer" msgstr "Slānis" @@ -18599,7 +18464,7 @@ msgid "_Rename" msgstr "_Pārdēvēt" #: ../src/ui/dialog/layer-properties.cpp:368 -#: ../src/ui/dialog/layers.cpp:749 +#: ../src/ui/dialog/layers.cpp:750 msgid "Rename layer" msgstr "Pārdēvēt slāni" @@ -18625,65 +18490,65 @@ msgid "Move to Layer" msgstr "Pārvietot uz slāni" #: ../src/ui/dialog/layer-properties.cpp:411 -#: ../src/ui/dialog/transformation.cpp:113 +#: ../src/ui/dialog/transformation.cpp:114 msgid "_Move" msgstr "Pār_vietot" -#: ../src/ui/dialog/layers.cpp:524 +#: ../src/ui/dialog/layers.cpp:525 #: ../src/ui/widget/layer-selector.cpp:613 msgid "Unhide layer" msgstr "Rādīt slāni" -#: ../src/ui/dialog/layers.cpp:524 +#: ../src/ui/dialog/layers.cpp:525 #: ../src/ui/widget/layer-selector.cpp:613 msgid "Hide layer" msgstr "Slēpt slāni" -#: ../src/ui/dialog/layers.cpp:535 +#: ../src/ui/dialog/layers.cpp:536 #: ../src/ui/widget/layer-selector.cpp:605 msgid "Lock layer" msgstr "Slēgt slāni" -#: ../src/ui/dialog/layers.cpp:535 +#: ../src/ui/dialog/layers.cpp:536 #: ../src/ui/widget/layer-selector.cpp:605 msgid "Unlock layer" msgstr "Atslēgt slāni" -#: ../src/ui/dialog/layers.cpp:623 -#: ../src/verbs.cpp:1347 +#: ../src/ui/dialog/layers.cpp:624 +#: ../src/verbs.cpp:1397 msgid "Toggle layer solo" msgstr "Pārslēgt tikai šo slāni" -#: ../src/ui/dialog/layers.cpp:626 -#: ../src/verbs.cpp:1371 +#: ../src/ui/dialog/layers.cpp:627 +#: ../src/verbs.cpp:1421 msgid "Lock other layers" msgstr "Slēdz citus slāņus" -#: ../src/ui/dialog/layers.cpp:720 +#: ../src/ui/dialog/layers.cpp:721 msgid "Moved layer" msgstr "Pārvietotais slānis" -#: ../src/ui/dialog/layers.cpp:882 +#: ../src/ui/dialog/layers.cpp:883 msgctxt "Layers" msgid "New" msgstr "Jauns" -#: ../src/ui/dialog/layers.cpp:887 +#: ../src/ui/dialog/layers.cpp:888 msgctxt "Layers" msgid "Bot" msgstr "Apakša" -#: ../src/ui/dialog/layers.cpp:893 +#: ../src/ui/dialog/layers.cpp:894 msgctxt "Layers" msgid "Dn" msgstr "Dn" -#: ../src/ui/dialog/layers.cpp:899 +#: ../src/ui/dialog/layers.cpp:900 msgctxt "Layers" msgid "Up" msgstr "Uz augšu" -#: ../src/ui/dialog/layers.cpp:905 +#: ../src/ui/dialog/layers.cpp:906 msgctxt "Layers" msgid "Top" msgstr "Augša" @@ -18811,6 +18676,43 @@ msgstr "Uzsākta ierakstīšana žurnālā." msgid "Log capture stopped." msgstr "Ierakstīšana žurnālā apturēta." +#: ../src/ui/dialog/new-from-template.cpp:24 +msgid "Create from template" +msgstr "Izveidot no sagataves" + +#: ../src/ui/dialog/new-from-template.cpp:26 +msgid "New From Template" +msgstr "Jaunu no sagataves" + +#: ../src/ui/dialog/template-widget.cpp:29 +msgid "More info" +msgstr "Vairāk info" + +#: ../src/ui/dialog/template-widget.cpp:30 +#: ../src/ui/dialog/template-widget.cpp:31 +msgid " " +msgstr " " + +#: ../src/ui/dialog/template-widget.cpp:32 +msgid "no template selected" +msgstr "nav izvēlēta sagatave" + +#: ../src/ui/dialog/template-widget.cpp:98 +msgid "Path: " +msgstr "Ceļš:" + +#: ../src/ui/dialog/template-widget.cpp:101 +msgid "Description: " +msgstr "Apraksts:" + +#: ../src/ui/dialog/template-widget.cpp:103 +msgid "Keywords: " +msgstr "Atslēgvārdi:" + +#: ../src/ui/dialog/template-widget.cpp:110 +msgid "By: " +msgstr "Autors:" + #: ../src/ui/dialog/object-attributes.cpp:47 msgid "Href:" msgstr "Href:" @@ -18844,16 +18746,16 @@ msgstr "URL:" #: ../src/ui/dialog/object-attributes.cpp:66 #: ../src/ui/dialog/object-attributes.cpp:74 #: ../src/ui/dialog/tile.cpp:618 -#: ../src/widgets/desktop-widget.cpp:666 -#: ../src/widgets/node-toolbar.cpp:590 +#: ../src/widgets/desktop-widget.cpp:670 +#: ../src/widgets/node-toolbar.cpp:593 msgid "X:" msgstr "X:" #: ../src/ui/dialog/object-attributes.cpp:67 #: ../src/ui/dialog/object-attributes.cpp:75 #: ../src/ui/dialog/tile.cpp:619 -#: ../src/widgets/desktop-widget.cpp:676 -#: ../src/widgets/node-toolbar.cpp:608 +#: ../src/widgets/desktop-widget.cpp:680 +#: ../src/widgets/node-toolbar.cpp:611 msgid "Y:" msgstr "Y:" @@ -18881,8 +18783,8 @@ msgid "L_ock" msgstr "&Slēgt" #: ../src/ui/dialog/object-properties.cpp:74 -#: ../src/verbs.cpp:2572 -#: ../src/verbs.cpp:2578 +#: ../src/verbs.cpp:2627 +#: ../src/verbs.cpp:2633 msgid "_Set" msgstr "Ie_statīt" @@ -19030,36 +18932,6 @@ msgstr "SVG dokuments" msgid "Print" msgstr "Drukāt" -#. ## Add a menu for clear() -#: ../src/ui/dialog/scriptdialog.cpp:178 -#: ../src/verbs.cpp:135 -msgid "File" -msgstr "Fails" - -#: ../src/ui/dialog/scriptdialog.cpp:186 -msgid "_Execute Javascript" -msgstr "I_zpildīt Javascript" - -#: ../src/ui/dialog/scriptdialog.cpp:190 -msgid "_Execute Python" -msgstr "I_zpildīt Python" - -#: ../src/ui/dialog/scriptdialog.cpp:194 -msgid "_Execute Ruby" -msgstr "I_zpildīt Ruby" - -#: ../src/ui/dialog/scriptdialog.cpp:205 -msgid "Script" -msgstr "Skripts" - -#: ../src/ui/dialog/scriptdialog.cpp:215 -msgid "Output" -msgstr "Izvade" - -#: ../src/ui/dialog/scriptdialog.cpp:225 -msgid "Errors" -msgstr "Kļūdas" - #: ../src/ui/dialog/svg-fonts-dialog.cpp:138 msgid "Set SVG Font attribute" msgstr "Iestatīt SVG fonta atribūtu" @@ -19220,59 +19092,59 @@ msgid "Preview Text:" msgstr "Teksta priekšskatījums:" #. ******************* Symbol Sets ************************ -#: ../src/ui/dialog/symbols.cpp:126 +#: ../src/ui/dialog/symbols.cpp:128 msgid "Symbol set: " msgstr "Simbolu kopa:" #. Fill in later -#: ../src/ui/dialog/symbols.cpp:135 -#: ../src/ui/dialog/symbols.cpp:136 +#: ../src/ui/dialog/symbols.cpp:137 +#: ../src/ui/dialog/symbols.cpp:138 msgid "Current Document" msgstr "Pašreizējais dokuments" -#: ../src/ui/dialog/symbols.cpp:203 +#: ../src/ui/dialog/symbols.cpp:205 msgid "Add Symbol from the current document." msgstr "Pievienot simbolu no pašreizējā dokumenta." -#: ../src/ui/dialog/symbols.cpp:212 +#: ../src/ui/dialog/symbols.cpp:214 msgid "Remove Symbol from the current document." msgstr "Aizvāklt simbolu no pašreizējā dokumenta." -#: ../src/ui/dialog/symbols.cpp:225 +#: ../src/ui/dialog/symbols.cpp:227 msgid "Make Icons bigger by zooming in." msgstr "Palieliniet ikonas tuvinot." -#: ../src/ui/dialog/symbols.cpp:234 +#: ../src/ui/dialog/symbols.cpp:236 msgid "Make Icons smaller by zooming out." msgstr "Samaziniet ikonu izmēru tālinot." -#: ../src/ui/dialog/symbols.cpp:243 +#: ../src/ui/dialog/symbols.cpp:245 msgid "Toggle 'fit' symbols in icon space." msgstr "Ieslēdziet simbolu \"ietilpināšanu\" ikonu laukā. " -#: ../src/ui/dialog/symbols.cpp:556 +#: ../src/ui/dialog/symbols.cpp:558 msgid "Unnamed Symbols" msgstr "Nenosaukti simboli" #. TRANSLATORS: An item in context menu on a colour in the swatches -#: ../src/ui/dialog/swatches.cpp:258 +#: ../src/ui/dialog/swatches.cpp:259 msgid "Set fill" msgstr "Iestatīt aizpildījumu" #. TRANSLATORS: An item in context menu on a colour in the swatches -#: ../src/ui/dialog/swatches.cpp:266 +#: ../src/ui/dialog/swatches.cpp:267 msgid "Set stroke" msgstr "Iestatīt apmali" -#: ../src/ui/dialog/swatches.cpp:287 +#: ../src/ui/dialog/swatches.cpp:288 msgid "Edit..." msgstr "Labot..." -#: ../src/ui/dialog/swatches.cpp:299 +#: ../src/ui/dialog/swatches.cpp:300 msgid "Convert" msgstr "Pārveidot" -#: ../src/ui/dialog/swatches.cpp:543 +#: ../src/ui/dialog/swatches.cpp:544 #, c-format msgid "Palettes directory (%s) is unavailable." msgstr "Palešu mape (%s) nav pieejama." @@ -19596,142 +19468,152 @@ msgstr "Atcelt notiekošo vektorizēšanu" msgid "Execute the trace" msgstr "Izpildīt vektorizēšanu" -#: ../src/ui/dialog/transformation.cpp:75 -#: ../src/ui/dialog/transformation.cpp:85 +#: ../src/ui/dialog/transformation.cpp:76 +#: ../src/ui/dialog/transformation.cpp:86 msgid "_Horizontal:" msgstr "_Horizontālā:" -#: ../src/ui/dialog/transformation.cpp:75 +#: ../src/ui/dialog/transformation.cpp:76 msgid "Horizontal displacement (relative) or position (absolute)" msgstr "Horizontālais pārvietojums (relatīvais) vai pozīcija (absolūtais)" -#: ../src/ui/dialog/transformation.cpp:77 -#: ../src/ui/dialog/transformation.cpp:87 +#: ../src/ui/dialog/transformation.cpp:78 +#: ../src/ui/dialog/transformation.cpp:88 msgid "_Vertical:" msgstr "_Vertikālā:" -#: ../src/ui/dialog/transformation.cpp:77 +#: ../src/ui/dialog/transformation.cpp:78 msgid "Vertical displacement (relative) or position (absolute)" msgstr "Vertikālais pārvietojums (relatīvais) vai pozīcija (absolūtais)" -#: ../src/ui/dialog/transformation.cpp:79 +#: ../src/ui/dialog/transformation.cpp:80 msgid "Horizontal size (absolute or percentage of current)" msgstr "Horizontālais izmērs (absolūtais vai procentos no pašreizējā)" -#: ../src/ui/dialog/transformation.cpp:81 +#: ../src/ui/dialog/transformation.cpp:82 msgid "Vertical size (absolute or percentage of current)" msgstr "Vertikālais izmērs (absolūtais vai procentos no pašreizējā)" -#: ../src/ui/dialog/transformation.cpp:83 +#: ../src/ui/dialog/transformation.cpp:84 msgid "A_ngle:" msgstr "L_eņķis:" -#: ../src/ui/dialog/transformation.cpp:83 -#: ../src/ui/dialog/transformation.cpp:1068 +#: ../src/ui/dialog/transformation.cpp:84 +#: ../src/ui/dialog/transformation.cpp:1103 msgid "Rotation angle (positive = counterclockwise)" msgstr "Pagrieziena leņķis (pozitīvs = pretēji pulksteņrādītājam)" -#: ../src/ui/dialog/transformation.cpp:85 +#: ../src/ui/dialog/transformation.cpp:86 msgid "Horizontal skew angle (positive = counterclockwise), or absolute displacement, or percentage displacement" msgstr "Horizontālās šķiebšanas leņķis (pozītīvs = pretēji pulksteņrādītājam), vai absolūtais pārvietojums, vai procentuālais pārvietojums" -#: ../src/ui/dialog/transformation.cpp:87 +#: ../src/ui/dialog/transformation.cpp:88 msgid "Vertical skew angle (positive = counterclockwise), or absolute displacement, or percentage displacement" msgstr "Vertikālās šķiebšanas leņķis (pozītīvs = pretēji pulksteņrādītājam), vai absolūtais pārvietojums, vai procentuālais pārvietojums" -#: ../src/ui/dialog/transformation.cpp:90 +#: ../src/ui/dialog/transformation.cpp:91 msgid "Transformation matrix element A" msgstr "Pārveidošanas matricas elements A" -#: ../src/ui/dialog/transformation.cpp:91 +#: ../src/ui/dialog/transformation.cpp:92 msgid "Transformation matrix element B" msgstr "Pārveidošanas matricas elements B" -#: ../src/ui/dialog/transformation.cpp:92 +#: ../src/ui/dialog/transformation.cpp:93 msgid "Transformation matrix element C" msgstr "Pārveidošanas matricas elements C" -#: ../src/ui/dialog/transformation.cpp:93 +#: ../src/ui/dialog/transformation.cpp:94 msgid "Transformation matrix element D" msgstr "Pārveidošanas matricas elements D" -#: ../src/ui/dialog/transformation.cpp:94 +#: ../src/ui/dialog/transformation.cpp:95 msgid "Transformation matrix element E" msgstr "Pārveidošanas matricas elements E" -#: ../src/ui/dialog/transformation.cpp:95 +#: ../src/ui/dialog/transformation.cpp:96 msgid "Transformation matrix element F" msgstr "Pārveidošanas matricas elements F" -#: ../src/ui/dialog/transformation.cpp:100 +#: ../src/ui/dialog/transformation.cpp:101 msgid "Rela_tive move" msgstr "Rela_tīvais pārvietojums" -#: ../src/ui/dialog/transformation.cpp:100 +#: ../src/ui/dialog/transformation.cpp:101 msgid "Add the specified relative displacement to the current position; otherwise, edit the current absolute position directly" msgstr "Pievienot pašreizējam novietojumam norādīto relatīvo nobīdi; pretējā gadījumā labot pašreizējo absolūto novietojumu" -#: ../src/ui/dialog/transformation.cpp:101 +#: ../src/ui/dialog/transformation.cpp:102 msgid "_Scale proportionally" msgstr "Mērogot _proporcionāli" -#: ../src/ui/dialog/transformation.cpp:101 +#: ../src/ui/dialog/transformation.cpp:102 msgid "Preserve the width/height ratio of the scaled objects" msgstr "Saglabāt platuma/augstuma attiecību mērogotajiem objektiem" -#: ../src/ui/dialog/transformation.cpp:102 +#: ../src/ui/dialog/transformation.cpp:103 msgid "Apply to each _object separately" msgstr "Pielietot katram _objektam atsevišķi" -#: ../src/ui/dialog/transformation.cpp:102 +#: ../src/ui/dialog/transformation.cpp:103 msgid "Apply the scale/rotate/skew to each selected object separately; otherwise, transform the selection as a whole" msgstr "Pielietot mērogošanu/griešanu/šķiebšanu katram atlasītajam objektam atsevišķi; pretējā gadījumā - pārveidot atlasīto kā vienu veselu" -#: ../src/ui/dialog/transformation.cpp:103 +#: ../src/ui/dialog/transformation.cpp:104 msgid "Edit c_urrent matrix" msgstr "Labot pašreizējo matric_u" -#: ../src/ui/dialog/transformation.cpp:103 +#: ../src/ui/dialog/transformation.cpp:104 msgid "Edit the current transform= matrix; otherwise, post-multiply transform= by this matrix" msgstr "Labojiet pašreizējo transform= matricu; pretējā gadījumā - vēlāk reiziniet transform= ar šo matricu" -#: ../src/ui/dialog/transformation.cpp:116 +#: ../src/ui/dialog/transformation.cpp:117 msgid "_Scale" msgstr "_Mērogot" -#: ../src/ui/dialog/transformation.cpp:119 +#: ../src/ui/dialog/transformation.cpp:120 msgid "_Rotate" msgstr "Pag_riezt" -#: ../src/ui/dialog/transformation.cpp:122 +#: ../src/ui/dialog/transformation.cpp:123 msgid "Ske_w" msgstr "Šķie_bt" -#: ../src/ui/dialog/transformation.cpp:125 +#: ../src/ui/dialog/transformation.cpp:126 msgid "Matri_x" msgstr "Matri_ca" -#: ../src/ui/dialog/transformation.cpp:149 +#: ../src/ui/dialog/transformation.cpp:150 msgid "Reset the values on the current tab to defaults" msgstr "Atiestatīt vērtības pašreizējā šķirklī uz noklusētajām" -#: ../src/ui/dialog/transformation.cpp:156 +#: ../src/ui/dialog/transformation.cpp:157 msgid "Apply transformation to selection" msgstr "Pielietot pārveidojumu atlasītajam" -#: ../src/ui/dialog/transformation.cpp:331 +#: ../src/ui/dialog/transformation.cpp:332 msgid "Rotate in a counterclockwise direction" msgstr "Pagriezt pretēji pulksteņrādītājam" -#: ../src/ui/dialog/transformation.cpp:337 +#: ../src/ui/dialog/transformation.cpp:338 msgid "Rotate in a clockwise direction" msgstr "Pagriezt pa pulksteņrādītājam" -#: ../src/ui/dialog/transformation.cpp:976 +#: ../src/ui/dialog/transformation.cpp:907 +#: ../src/ui/dialog/transformation.cpp:918 +#: ../src/ui/dialog/transformation.cpp:932 +#: ../src/ui/dialog/transformation.cpp:951 +#: ../src/ui/dialog/transformation.cpp:962 +#: ../src/ui/dialog/transformation.cpp:972 +#: ../src/ui/dialog/transformation.cpp:996 +msgid "Transform matrix is singular, <b>not used</b>." +msgstr "Pārveidošanas matrica ir singulāra, <b>netiek izmantota</b>." + +#: ../src/ui/dialog/transformation.cpp:1011 msgid "Edit transformation matrix" msgstr "Labot pārveidošanas matricu" -#: ../src/ui/dialog/transformation.cpp:1075 +#: ../src/ui/dialog/transformation.cpp:1110 msgid "Rotation angle (positive = clockwise)" msgstr "Pagrieziena leņķis (pozitīvs = pulksteņrādītāja virzienā)" @@ -19763,96 +19645,96 @@ msgctxt "Path segment tip" msgid "<b>Bezier segment</b>: drag to shape the segment, doubleclick to insert node, click to select (more: Shift, Ctrl+Alt)" msgstr "<b>Bezjē segments</b>: velciet, lai veidotu segmentu, dubultklikšķis - lai pievienotu mezglu, klikšķis - lai atlasītu (vairāk: Shift, Ctrl+Alt)" -#: ../src/ui/tool/multi-path-manipulator.cpp:322 +#: ../src/ui/tool/multi-path-manipulator.cpp:326 msgid "Retract handles" msgstr "Ievilkt mezglus" -#: ../src/ui/tool/multi-path-manipulator.cpp:322 -#: ../src/ui/tool/node.cpp:271 +#: ../src/ui/tool/multi-path-manipulator.cpp:326 +#: ../src/ui/tool/node.cpp:270 msgid "Change node type" msgstr "Mainīt mezgla tipu" -#: ../src/ui/tool/multi-path-manipulator.cpp:330 +#: ../src/ui/tool/multi-path-manipulator.cpp:334 msgid "Straighten segments" msgstr "Iztaisnot segmentus" -#: ../src/ui/tool/multi-path-manipulator.cpp:332 +#: ../src/ui/tool/multi-path-manipulator.cpp:336 msgid "Make segments curves" msgstr "Pārveidot segmentus par līknēm" -#: ../src/ui/tool/multi-path-manipulator.cpp:339 +#: ../src/ui/tool/multi-path-manipulator.cpp:343 msgid "Add nodes" msgstr "Pievienot mezglus" -#: ../src/ui/tool/multi-path-manipulator.cpp:344 +#: ../src/ui/tool/multi-path-manipulator.cpp:348 msgid "Add extremum nodes" msgstr "Pievienot papildu mezglus" -#: ../src/ui/tool/multi-path-manipulator.cpp:350 +#: ../src/ui/tool/multi-path-manipulator.cpp:354 msgid "Duplicate nodes" msgstr "Dublēt mezglus" -#: ../src/ui/tool/multi-path-manipulator.cpp:412 -#: ../src/widgets/node-toolbar.cpp:417 +#: ../src/ui/tool/multi-path-manipulator.cpp:416 +#: ../src/widgets/node-toolbar.cpp:420 msgid "Join nodes" msgstr "Savienot mezglus" -#: ../src/ui/tool/multi-path-manipulator.cpp:419 -#: ../src/widgets/node-toolbar.cpp:428 +#: ../src/ui/tool/multi-path-manipulator.cpp:423 +#: ../src/widgets/node-toolbar.cpp:431 msgid "Break nodes" msgstr "Lauzt mezglus" -#: ../src/ui/tool/multi-path-manipulator.cpp:426 +#: ../src/ui/tool/multi-path-manipulator.cpp:430 msgid "Delete nodes" msgstr "Dzēst mezglus" -#: ../src/ui/tool/multi-path-manipulator.cpp:756 +#: ../src/ui/tool/multi-path-manipulator.cpp:760 msgid "Move nodes" msgstr "Pārvietot mezglus" -#: ../src/ui/tool/multi-path-manipulator.cpp:759 +#: ../src/ui/tool/multi-path-manipulator.cpp:763 msgid "Move nodes horizontally" msgstr "Pārvietot mezglus horizontāli" -#: ../src/ui/tool/multi-path-manipulator.cpp:763 +#: ../src/ui/tool/multi-path-manipulator.cpp:767 msgid "Move nodes vertically" msgstr "Pārvietot mezglus vertikāli" -#: ../src/ui/tool/multi-path-manipulator.cpp:767 -#: ../src/ui/tool/multi-path-manipulator.cpp:770 +#: ../src/ui/tool/multi-path-manipulator.cpp:771 +#: ../src/ui/tool/multi-path-manipulator.cpp:774 msgid "Rotate nodes" msgstr "Pagriezt mezglus" -#: ../src/ui/tool/multi-path-manipulator.cpp:774 -#: ../src/ui/tool/multi-path-manipulator.cpp:780 +#: ../src/ui/tool/multi-path-manipulator.cpp:778 +#: ../src/ui/tool/multi-path-manipulator.cpp:784 msgid "Scale nodes uniformly" msgstr "Mērogot mezglus vienmērīgi" -#: ../src/ui/tool/multi-path-manipulator.cpp:777 +#: ../src/ui/tool/multi-path-manipulator.cpp:781 msgid "Scale nodes" msgstr "Mērogot mezglus" -#: ../src/ui/tool/multi-path-manipulator.cpp:784 +#: ../src/ui/tool/multi-path-manipulator.cpp:788 msgid "Scale nodes horizontally" msgstr "Mērogot mezglus horizontāli" -#: ../src/ui/tool/multi-path-manipulator.cpp:788 +#: ../src/ui/tool/multi-path-manipulator.cpp:792 msgid "Scale nodes vertically" msgstr "Mērogot mezglus vertikāli" -#: ../src/ui/tool/multi-path-manipulator.cpp:792 +#: ../src/ui/tool/multi-path-manipulator.cpp:796 msgid "Skew nodes horizontally" msgstr "Sašķiebt mezglus horizontāli" -#: ../src/ui/tool/multi-path-manipulator.cpp:796 +#: ../src/ui/tool/multi-path-manipulator.cpp:800 msgid "Skew nodes vertically" msgstr "Sašķiebt mezglus vertikāli" -#: ../src/ui/tool/multi-path-manipulator.cpp:800 +#: ../src/ui/tool/multi-path-manipulator.cpp:804 msgid "Flip nodes horizontally" msgstr "Apmest mezglus horizontāli" -#: ../src/ui/tool/multi-path-manipulator.cpp:803 +#: ../src/ui/tool/multi-path-manipulator.cpp:807 msgid "Flip nodes vertically" msgstr "Apmest mezglus vertikāli" @@ -19906,143 +19788,143 @@ msgctxt "Node tool tip" msgid "Drag to select objects to edit" msgstr "Velciet, lai atlasītu labojamos objektus" -#: ../src/ui/tool/node.cpp:246 +#: ../src/ui/tool/node.cpp:245 msgid "Cusp node handle" msgstr "Stūra mezgla turis" -#: ../src/ui/tool/node.cpp:247 +#: ../src/ui/tool/node.cpp:246 msgid "Smooth node handle" msgstr "Gludā mezgla turis" -#: ../src/ui/tool/node.cpp:248 +#: ../src/ui/tool/node.cpp:247 msgid "Symmetric node handle" msgstr "Simetriskā mezgla turis" -#: ../src/ui/tool/node.cpp:249 +#: ../src/ui/tool/node.cpp:248 msgid "Auto-smooth node handle" msgstr "Auto-gludā mezgla turis" -#: ../src/ui/tool/node.cpp:433 +#: ../src/ui/tool/node.cpp:432 msgctxt "Path handle tip" msgid "more: Shift, Ctrl, Alt" msgstr "vairāk: Shift, Ctrl, Alt" -#: ../src/ui/tool/node.cpp:435 +#: ../src/ui/tool/node.cpp:434 msgctxt "Path handle tip" msgid "more: Ctrl, Alt" msgstr "vairāk: Ctrl, Alt" -#: ../src/ui/tool/node.cpp:441 +#: ../src/ui/tool/node.cpp:440 #, c-format msgctxt "Path handle tip" msgid "<b>Shift+Ctrl+Alt</b>: preserve length and snap rotation angle to %g° increments while rotating both handles" msgstr "<b>Shift+Ctrl+Alt</b>: saglabāt garumu un piesaistīt griešanas leņķi ik %g° pieaugumam, griežot abus turus" -#: ../src/ui/tool/node.cpp:446 +#: ../src/ui/tool/node.cpp:445 #, c-format msgctxt "Path handle tip" msgid "<b>Ctrl+Alt</b>: preserve length and snap rotation angle to %g° increments" msgstr "<b>Ctrl+Alt</b>: saglabāt garumu un piesaistīt griešanas leņķi ik %g° pieaugumam" -#: ../src/ui/tool/node.cpp:452 +#: ../src/ui/tool/node.cpp:451 msgctxt "Path handle tip" msgid "<b>Shift+Alt</b>: preserve handle length and rotate both handles" msgstr "<b>Shift+Alt</b>: saglabāt turu garumu un griezt abus turus" -#: ../src/ui/tool/node.cpp:455 +#: ../src/ui/tool/node.cpp:454 msgctxt "Path handle tip" msgid "<b>Alt</b>: preserve handle length while dragging" msgstr "<b>Alt</b>: velkot saglabāt tura garumu" -#: ../src/ui/tool/node.cpp:462 +#: ../src/ui/tool/node.cpp:461 #, c-format msgctxt "Path handle tip" msgid "<b>Shift+Ctrl</b>: snap rotation angle to %g° increments and rotate both handles" msgstr "<b>Shift+Ctrl</b>: piesaistīt griešanas leņķi ik %g° pieaugumam un griezt abus turus" -#: ../src/ui/tool/node.cpp:466 +#: ../src/ui/tool/node.cpp:465 #, c-format msgctxt "Path handle tip" msgid "<b>Ctrl</b>: snap rotation angle to %g° increments, click to retract" msgstr "<b>Ctrl</b>: piesaistīt griešanas leņķi ik %g° pieaugumam, uzklikšķiniet - lai atsauktu" -#: ../src/ui/tool/node.cpp:471 +#: ../src/ui/tool/node.cpp:470 msgctxt "Path hande tip" msgid "<b>Shift</b>: rotate both handles by the same angle" msgstr "<b>Shift</b>: pagriezt abus turus par vienādu leņķi" -#: ../src/ui/tool/node.cpp:478 +#: ../src/ui/tool/node.cpp:477 #, c-format msgctxt "Path handle tip" msgid "<b>Auto node handle</b>: drag to convert to smooth node (%s)" msgstr "<b>Auto mezgla turis</b>: velciet, lai pārvērstu par gludo mezglu (%s)" -#: ../src/ui/tool/node.cpp:481 +#: ../src/ui/tool/node.cpp:480 #, c-format msgctxt "Path handle tip" msgid "<b>%s</b>: drag to shape the segment (%s)" msgstr "<b>%s</b>: velciet, lai veidotu posmu (sektoru) (%s)" -#: ../src/ui/tool/node.cpp:497 +#: ../src/ui/tool/node.cpp:500 #, c-format msgctxt "Path handle tip" msgid "Move handle by %s, %s; angle %.2f°, length %s" msgstr "Pārvietot turi par %s, %s; leņki - %.2f°, garumu - %s" -#: ../src/ui/tool/node.cpp:1263 +#: ../src/ui/tool/node.cpp:1266 msgctxt "Path node tip" msgid "<b>Shift</b>: drag out a handle, click to toggle selection" msgstr "<b>Shift</b>: izvilkt turi; klikšķiniet, lai pārslēgtu atlasi" -#: ../src/ui/tool/node.cpp:1265 +#: ../src/ui/tool/node.cpp:1268 msgctxt "Path node tip" msgid "<b>Shift</b>: click to toggle selection" msgstr "<b>Shift</b>: klikšķis, lai pārslēgtu atlasi" -#: ../src/ui/tool/node.cpp:1270 +#: ../src/ui/tool/node.cpp:1273 msgctxt "Path node tip" msgid "<b>Ctrl+Alt</b>: move along handle lines, click to delete node" msgstr "<b>Ctrl+Alt</b>: pārvietoties gar tura līnijām, uzklikšķiniet, lai dzēstu mezglu" -#: ../src/ui/tool/node.cpp:1273 +#: ../src/ui/tool/node.cpp:1276 msgctxt "Path node tip" msgid "<b>Ctrl</b>: move along axes, click to change node type" msgstr "<b>Ctrl</b>: pārvietoties gar asīm, uzklikšķiniet, lai mainītu mezgla tipu" -#: ../src/ui/tool/node.cpp:1277 +#: ../src/ui/tool/node.cpp:1280 msgctxt "Path node tip" msgid "<b>Alt</b>: sculpt nodes" msgstr "<b>Alt</b>: veidošanas mezgli" -#: ../src/ui/tool/node.cpp:1285 +#: ../src/ui/tool/node.cpp:1288 #, c-format msgctxt "Path node tip" msgid "<b>%s</b>: drag to shape the path (more: Shift, Ctrl, Alt)" msgstr "<b>%s</b>: velciet, lai veidotu ceļu (vairāk: Shift, Ctrl, Alt)" -#: ../src/ui/tool/node.cpp:1288 +#: ../src/ui/tool/node.cpp:1291 #, c-format msgctxt "Path node tip" msgid "<b>%s</b>: drag to shape the path, click to toggle scale/rotation handles (more: Shift, Ctrl, Alt)" msgstr "<b>%s</b>: velciet, lai veidotu ceļu; uzklikšķiniet, lai pārslēgtu mērogošanas/griešanas turus (vairāk: Shift, Ctrl, Alt)" -#: ../src/ui/tool/node.cpp:1291 +#: ../src/ui/tool/node.cpp:1294 #, c-format msgctxt "Path node tip" msgid "<b>%s</b>: drag to shape the path, click to select only this node (more: Shift, Ctrl, Alt)" msgstr "<b>%s</b>: velciet, lai veidotu ceļu; uzklikšķiniet, lai atlasītu tikai šo mezglu (vairāk: Shift, Ctrl, Alt)" -#: ../src/ui/tool/node.cpp:1299 +#: ../src/ui/tool/node.cpp:1305 #, c-format msgctxt "Path node tip" msgid "Move node by %s, %s" msgstr "Pārvietot mezglu par %s, %s" -#: ../src/ui/tool/node.cpp:1311 +#: ../src/ui/tool/node.cpp:1317 msgid "Symmetric node" msgstr "Simetrisks mezgls" -#: ../src/ui/tool/node.cpp:1312 +#: ../src/ui/tool/node.cpp:1318 msgid "Auto-smooth node" msgstr "Auto-gludais mezgls" @@ -20056,7 +19938,7 @@ msgstr "Griešanas turis " #. We need to call MPM's method because it could have been our last node #: ../src/ui/tool/path-manipulator.cpp:1374 -#: ../src/widgets/node-toolbar.cpp:406 +#: ../src/widgets/node-toolbar.cpp:409 msgid "Delete node" msgstr "Dzēst mezglu" @@ -20205,8 +20087,8 @@ msgid "MetadataLicence|Other" msgstr "MetadataLicence|Citas" #: ../src/ui/widget/object-composite-settings.cpp:67 -#: ../src/ui/widget/selected-style.cpp:1090 -#: ../src/ui/widget/selected-style.cpp:1091 +#: ../src/ui/widget/selected-style.cpp:1095 +#: ../src/ui/widget/selected-style.cpp:1096 msgid "Opacity (%)" msgstr "Necaurspīdība (%)" @@ -20215,86 +20097,88 @@ msgid "Change blur" msgstr "Mainīt izpludinājumu" #: ../src/ui/widget/object-composite-settings.cpp:220 -#: ../src/ui/widget/selected-style.cpp:922 -#: ../src/ui/widget/selected-style.cpp:1216 +#: ../src/ui/widget/selected-style.cpp:927 +#: ../src/ui/widget/selected-style.cpp:1221 msgid "Change opacity" msgstr "Mainīt necaurspīdību" -#: ../src/ui/widget/page-sizer.cpp:237 +#: ../src/ui/widget/page-sizer.cpp:235 msgid "U_nits:" msgstr "Vie_nības:" -#: ../src/ui/widget/page-sizer.cpp:238 +#: ../src/ui/widget/page-sizer.cpp:236 msgid "Width of paper" msgstr "Papīra platums" -#: ../src/ui/widget/page-sizer.cpp:239 +#: ../src/ui/widget/page-sizer.cpp:237 msgid "Height of paper" msgstr "Papīra augstums" -#: ../src/ui/widget/page-sizer.cpp:240 +#: ../src/ui/widget/page-sizer.cpp:238 msgid "T_op margin:" msgstr "Au_gšējā mala:" -#: ../src/ui/widget/page-sizer.cpp:240 +#: ../src/ui/widget/page-sizer.cpp:238 msgid "Top margin" msgstr "Augšējā mala" -#: ../src/ui/widget/page-sizer.cpp:241 +#: ../src/ui/widget/page-sizer.cpp:239 msgid "L_eft:" msgstr "K_reisā:" -#: ../src/ui/widget/page-sizer.cpp:241 +#: ../src/ui/widget/page-sizer.cpp:239 +#: ../share/extensions/guides_creator.inx.h:17 msgid "Left margin" msgstr "Kreisā mala" -#: ../src/ui/widget/page-sizer.cpp:242 +#: ../src/ui/widget/page-sizer.cpp:240 msgid "Ri_ght:" msgstr "La_bā:" -#: ../src/ui/widget/page-sizer.cpp:242 +#: ../src/ui/widget/page-sizer.cpp:240 +#: ../share/extensions/guides_creator.inx.h:18 msgid "Right margin" msgstr "Labā mala" -#: ../src/ui/widget/page-sizer.cpp:243 +#: ../src/ui/widget/page-sizer.cpp:241 msgid "Botto_m:" msgstr "Apakšē_jais:" -#: ../src/ui/widget/page-sizer.cpp:243 +#: ../src/ui/widget/page-sizer.cpp:241 msgid "Bottom margin" msgstr "Apakšējā mala" -#: ../src/ui/widget/page-sizer.cpp:303 +#: ../src/ui/widget/page-sizer.cpp:296 #: ../share/extensions/hpgl_output.inx.h:7 msgid "Orientation:" msgstr "Orientācija:" -#: ../src/ui/widget/page-sizer.cpp:306 +#: ../src/ui/widget/page-sizer.cpp:299 msgid "_Landscape" msgstr "_Ainava" -#: ../src/ui/widget/page-sizer.cpp:311 +#: ../src/ui/widget/page-sizer.cpp:304 msgid "_Portrait" msgstr "_Portrets" #. ## Set up custom size frame -#: ../src/ui/widget/page-sizer.cpp:329 +#: ../src/ui/widget/page-sizer.cpp:322 msgid "Custom size" msgstr "Pielāgots izmērs" -#: ../src/ui/widget/page-sizer.cpp:374 +#: ../src/ui/widget/page-sizer.cpp:367 msgid "Resi_ze page to content..." msgstr "Pie_lāgot lapu saturam..." -#: ../src/ui/widget/page-sizer.cpp:426 +#: ../src/ui/widget/page-sizer.cpp:419 msgid "_Resize page to drawing or selection" msgstr "_Pielāgot lapas izmēru zīmējuma vai iezīmētajam" -#: ../src/ui/widget/page-sizer.cpp:427 +#: ../src/ui/widget/page-sizer.cpp:420 msgid "Resize the page to fit the current selection, or the entire drawing if there is no selection" msgstr "Pielāgot lapas izmēru pašreiz iezīmētajam vai arī visas zīmējumam, ja nekas nav iezīmēts" -#: ../src/ui/widget/page-sizer.cpp:492 +#: ../src/ui/widget/page-sizer.cpp:485 msgid "Set page size" msgstr "Iestatiet lapas izmēru" @@ -20428,322 +20312,322 @@ msgstr "Renderēt izmantojot Cairo vektoru operācija. Iegūtais attēls parasti msgid "Render everything as bitmap. The resulting image is usually larger in file size and cannot be arbitrarily scaled without quality loss, but all objects will be rendered exactly as displayed." msgstr "Renderēt visu par bitkarti. Iegūtais attēls parasti ir lielāka izmēra un nav patvaļīgi mērogojams bez kvalitātes zuduma, taču visi objekti tiks renderēti tieši tā, kā ir redzami." -#: ../src/ui/widget/selected-style.cpp:127 -#: ../src/ui/widget/style-swatch.cpp:126 +#: ../src/ui/widget/selected-style.cpp:130 +#: ../src/ui/widget/style-swatch.cpp:127 msgid "Fill:" msgstr "Aizpildījums:" -#: ../src/ui/widget/selected-style.cpp:129 +#: ../src/ui/widget/selected-style.cpp:132 msgid "O:" msgstr "O:" -#: ../src/ui/widget/selected-style.cpp:174 +#: ../src/ui/widget/selected-style.cpp:177 msgid "N/A" msgstr "n/z" -#: ../src/ui/widget/selected-style.cpp:177 -#: ../src/ui/widget/selected-style.cpp:1083 -#: ../src/ui/widget/selected-style.cpp:1084 +#: ../src/ui/widget/selected-style.cpp:180 +#: ../src/ui/widget/selected-style.cpp:1088 +#: ../src/ui/widget/selected-style.cpp:1089 #: ../src/widgets/gradient-toolbar.cpp:176 msgid "Nothing selected" msgstr "Nekas nav izvēlēts" -#: ../src/ui/widget/selected-style.cpp:179 -#: ../src/ui/widget/style-swatch.cpp:319 +#: ../src/ui/widget/selected-style.cpp:182 +#: ../src/ui/widget/style-swatch.cpp:320 msgctxt "Fill and stroke" msgid "<i>None</i>" msgstr "<i>Nekas</i>" -#: ../src/ui/widget/selected-style.cpp:182 -#: ../src/ui/widget/style-swatch.cpp:321 +#: ../src/ui/widget/selected-style.cpp:185 +#: ../src/ui/widget/style-swatch.cpp:322 msgctxt "Fill and stroke" msgid "No fill" msgstr "Bez aizpildījuma" -#: ../src/ui/widget/selected-style.cpp:182 -#: ../src/ui/widget/style-swatch.cpp:321 +#: ../src/ui/widget/selected-style.cpp:185 +#: ../src/ui/widget/style-swatch.cpp:322 msgctxt "Fill and stroke" msgid "No stroke" msgstr "Nav apmales" -#: ../src/ui/widget/selected-style.cpp:184 -#: ../src/ui/widget/style-swatch.cpp:300 +#: ../src/ui/widget/selected-style.cpp:187 +#: ../src/ui/widget/style-swatch.cpp:301 #: ../src/widgets/paint-selector.cpp:242 msgid "Pattern" msgstr "Faktūra" -#: ../src/ui/widget/selected-style.cpp:187 -#: ../src/ui/widget/style-swatch.cpp:302 +#: ../src/ui/widget/selected-style.cpp:190 +#: ../src/ui/widget/style-swatch.cpp:303 msgid "Pattern fill" msgstr "Aizpildījums ar faktūru" -#: ../src/ui/widget/selected-style.cpp:187 -#: ../src/ui/widget/style-swatch.cpp:302 +#: ../src/ui/widget/selected-style.cpp:190 +#: ../src/ui/widget/style-swatch.cpp:303 msgid "Pattern stroke" msgstr "Faktūras apmale" -#: ../src/ui/widget/selected-style.cpp:189 +#: ../src/ui/widget/selected-style.cpp:192 msgid "<b>L</b>" msgstr "<b>K</b>" -#: ../src/ui/widget/selected-style.cpp:192 -#: ../src/ui/widget/style-swatch.cpp:294 +#: ../src/ui/widget/selected-style.cpp:195 +#: ../src/ui/widget/style-swatch.cpp:295 msgid "Linear gradient fill" msgstr "Lineārs krāsu pārejas aizpildījums" -#: ../src/ui/widget/selected-style.cpp:192 -#: ../src/ui/widget/style-swatch.cpp:294 +#: ../src/ui/widget/selected-style.cpp:195 +#: ../src/ui/widget/style-swatch.cpp:295 msgid "Linear gradient stroke" msgstr "Lineāra krāsu pārejas apmale" -#: ../src/ui/widget/selected-style.cpp:199 +#: ../src/ui/widget/selected-style.cpp:202 msgid "<b>R</b>" msgstr "<b>L</b>" -#: ../src/ui/widget/selected-style.cpp:202 -#: ../src/ui/widget/style-swatch.cpp:298 +#: ../src/ui/widget/selected-style.cpp:205 +#: ../src/ui/widget/style-swatch.cpp:299 msgid "Radial gradient fill" msgstr "Radiāls krāsu pārejas aizpildījums" -#: ../src/ui/widget/selected-style.cpp:202 -#: ../src/ui/widget/style-swatch.cpp:298 +#: ../src/ui/widget/selected-style.cpp:205 +#: ../src/ui/widget/style-swatch.cpp:299 msgid "Radial gradient stroke" msgstr "Radiāla krāsu pārejas apmale" -#: ../src/ui/widget/selected-style.cpp:209 +#: ../src/ui/widget/selected-style.cpp:212 msgid "Different" msgstr "Atšķirīgs" -#: ../src/ui/widget/selected-style.cpp:212 +#: ../src/ui/widget/selected-style.cpp:215 msgid "Different fills" msgstr "Atšķirīgi aizpildījumi" -#: ../src/ui/widget/selected-style.cpp:212 +#: ../src/ui/widget/selected-style.cpp:215 msgid "Different strokes" msgstr "Atšķirīgas apmales" -#: ../src/ui/widget/selected-style.cpp:214 -#: ../src/ui/widget/style-swatch.cpp:324 +#: ../src/ui/widget/selected-style.cpp:217 +#: ../src/ui/widget/style-swatch.cpp:325 msgid "<b>Unset</b>" msgstr "<b>atiestatīts</b>" #. TRANSLATORS COMMENT: unset is a verb here -#: ../src/ui/widget/selected-style.cpp:217 -#: ../src/ui/widget/selected-style.cpp:275 -#: ../src/ui/widget/selected-style.cpp:554 -#: ../src/ui/widget/style-swatch.cpp:326 +#: ../src/ui/widget/selected-style.cpp:220 +#: ../src/ui/widget/selected-style.cpp:278 +#: ../src/ui/widget/selected-style.cpp:559 +#: ../src/ui/widget/style-swatch.cpp:327 #: ../src/widgets/fill-style.cpp:712 msgid "Unset fill" msgstr "Atiestatīt aizpildījumu" -#: ../src/ui/widget/selected-style.cpp:217 -#: ../src/ui/widget/selected-style.cpp:275 -#: ../src/ui/widget/selected-style.cpp:570 -#: ../src/ui/widget/style-swatch.cpp:326 +#: ../src/ui/widget/selected-style.cpp:220 +#: ../src/ui/widget/selected-style.cpp:278 +#: ../src/ui/widget/selected-style.cpp:575 +#: ../src/ui/widget/style-swatch.cpp:327 #: ../src/widgets/fill-style.cpp:712 msgid "Unset stroke" msgstr "Atiestatīt apmali" -#: ../src/ui/widget/selected-style.cpp:220 +#: ../src/ui/widget/selected-style.cpp:223 msgid "Flat color fill" msgstr "Aizpildījums ar vienlaidu krāsu" -#: ../src/ui/widget/selected-style.cpp:220 +#: ../src/ui/widget/selected-style.cpp:223 msgid "Flat color stroke" msgstr "Apmale ar vienlaidu krāsu" #. TRANSLATOR COMMENT: A means "Averaged" -#: ../src/ui/widget/selected-style.cpp:223 +#: ../src/ui/widget/selected-style.cpp:226 msgid "<b>a</b>" msgstr "<b>v</b>" -#: ../src/ui/widget/selected-style.cpp:226 +#: ../src/ui/widget/selected-style.cpp:229 msgid "Fill is averaged over selected objects" msgstr "Aizpildījums ir izlīdzināts starp atlasītajiem objektiem" -#: ../src/ui/widget/selected-style.cpp:226 +#: ../src/ui/widget/selected-style.cpp:229 msgid "Stroke is averaged over selected objects" msgstr "Apmale ir izlīdzināta starp atlasītajiem objektiem" #. TRANSLATOR COMMENT: M means "Multiple" -#: ../src/ui/widget/selected-style.cpp:229 +#: ../src/ui/widget/selected-style.cpp:232 msgid "<b>m</b>" msgstr "<b>d</b>" -#: ../src/ui/widget/selected-style.cpp:232 +#: ../src/ui/widget/selected-style.cpp:235 msgid "Multiple selected objects have the same fill" msgstr "Vairākiem atlasītajiem objektiem ir vienāds aizpildījums" -#: ../src/ui/widget/selected-style.cpp:232 +#: ../src/ui/widget/selected-style.cpp:235 msgid "Multiple selected objects have the same stroke" msgstr "Vairākiem atlasītajiem objektiem ir viena un tā pati apmale" -#: ../src/ui/widget/selected-style.cpp:234 +#: ../src/ui/widget/selected-style.cpp:237 msgid "Edit fill..." msgstr "Labot aizpildījumu..." -#: ../src/ui/widget/selected-style.cpp:234 +#: ../src/ui/widget/selected-style.cpp:237 msgid "Edit stroke..." msgstr "Labot apmali..." -#: ../src/ui/widget/selected-style.cpp:238 +#: ../src/ui/widget/selected-style.cpp:241 msgid "Last set color" msgstr "Pēdējā iestatītā krāsa" -#: ../src/ui/widget/selected-style.cpp:242 +#: ../src/ui/widget/selected-style.cpp:245 msgid "Last selected color" msgstr "Pēdējā izvēlētā krāsa" -#: ../src/ui/widget/selected-style.cpp:258 +#: ../src/ui/widget/selected-style.cpp:261 msgid "Copy color" msgstr "Kopēt krāsu" -#: ../src/ui/widget/selected-style.cpp:262 +#: ../src/ui/widget/selected-style.cpp:265 msgid "Paste color" msgstr "Ielīmēt krāsu" -#: ../src/ui/widget/selected-style.cpp:266 -#: ../src/ui/widget/selected-style.cpp:847 +#: ../src/ui/widget/selected-style.cpp:269 +#: ../src/ui/widget/selected-style.cpp:852 msgid "Swap fill and stroke" msgstr "Apmainīt aizpildījumu un apmali" -#: ../src/ui/widget/selected-style.cpp:270 -#: ../src/ui/widget/selected-style.cpp:579 -#: ../src/ui/widget/selected-style.cpp:588 +#: ../src/ui/widget/selected-style.cpp:273 +#: ../src/ui/widget/selected-style.cpp:584 +#: ../src/ui/widget/selected-style.cpp:593 msgid "Make fill opaque" msgstr "Padarīt aizpildījumu necaurspīdīgu" -#: ../src/ui/widget/selected-style.cpp:270 +#: ../src/ui/widget/selected-style.cpp:273 msgid "Make stroke opaque" msgstr "Padarīt apmali necaurspīdīgu" -#: ../src/ui/widget/selected-style.cpp:279 -#: ../src/ui/widget/selected-style.cpp:536 +#: ../src/ui/widget/selected-style.cpp:282 +#: ../src/ui/widget/selected-style.cpp:541 #: ../src/widgets/fill-style.cpp:510 msgid "Remove fill" msgstr "Aizvākt aizpildījumu" -#: ../src/ui/widget/selected-style.cpp:279 -#: ../src/ui/widget/selected-style.cpp:545 +#: ../src/ui/widget/selected-style.cpp:282 +#: ../src/ui/widget/selected-style.cpp:550 #: ../src/widgets/fill-style.cpp:510 msgid "Remove stroke" msgstr "Aizvākt apmali" -#: ../src/ui/widget/selected-style.cpp:600 +#: ../src/ui/widget/selected-style.cpp:605 msgid "Apply last set color to fill" msgstr "Pielietot aizpildījumam pēdējo iestatīto krāsu" -#: ../src/ui/widget/selected-style.cpp:612 +#: ../src/ui/widget/selected-style.cpp:617 msgid "Apply last set color to stroke" msgstr "Pielietot apmalei pēdējo iestatīto krāsu" -#: ../src/ui/widget/selected-style.cpp:623 +#: ../src/ui/widget/selected-style.cpp:628 msgid "Apply last selected color to fill" msgstr "Pielietot aizpildījumam pēdējo izvēlēto krāsu" -#: ../src/ui/widget/selected-style.cpp:634 +#: ../src/ui/widget/selected-style.cpp:639 msgid "Apply last selected color to stroke" msgstr "Pielietot apmalei pēdējo izvēlēto krāsu" -#: ../src/ui/widget/selected-style.cpp:660 +#: ../src/ui/widget/selected-style.cpp:665 msgid "Invert fill" msgstr "Invertēt aizpildījumu" -#: ../src/ui/widget/selected-style.cpp:684 +#: ../src/ui/widget/selected-style.cpp:689 msgid "Invert stroke" msgstr "Invertēt apmali" -#: ../src/ui/widget/selected-style.cpp:696 +#: ../src/ui/widget/selected-style.cpp:701 msgid "White fill" msgstr "Aizpildīt ar baltu" -#: ../src/ui/widget/selected-style.cpp:708 +#: ../src/ui/widget/selected-style.cpp:713 msgid "White stroke" msgstr "Baltā apmale" -#: ../src/ui/widget/selected-style.cpp:720 +#: ../src/ui/widget/selected-style.cpp:725 msgid "Black fill" msgstr "Melnais aizpildījums" -#: ../src/ui/widget/selected-style.cpp:732 +#: ../src/ui/widget/selected-style.cpp:737 msgid "Black stroke" msgstr "Melnā apmale" -#: ../src/ui/widget/selected-style.cpp:775 +#: ../src/ui/widget/selected-style.cpp:780 msgid "Paste fill" msgstr "Ielīmēt aizpildījumu" -#: ../src/ui/widget/selected-style.cpp:793 +#: ../src/ui/widget/selected-style.cpp:798 msgid "Paste stroke" msgstr "Ielīmēt apmali" -#: ../src/ui/widget/selected-style.cpp:949 +#: ../src/ui/widget/selected-style.cpp:954 msgid "Change stroke width" msgstr "Mainīt apmales platumu" -#: ../src/ui/widget/selected-style.cpp:1044 +#: ../src/ui/widget/selected-style.cpp:1049 msgid ", drag to adjust" msgstr ", vilkt, lai pieskaņotu" -#: ../src/ui/widget/selected-style.cpp:1129 +#: ../src/ui/widget/selected-style.cpp:1134 #, c-format msgid "Stroke width: %.5g%s%s" msgstr "Apmales platums: %.5g%s%s" -#: ../src/ui/widget/selected-style.cpp:1133 +#: ../src/ui/widget/selected-style.cpp:1138 msgid " (averaged)" msgstr "(vidējais)" -#: ../src/ui/widget/selected-style.cpp:1161 +#: ../src/ui/widget/selected-style.cpp:1166 msgid "0 (transparent)" msgstr "0 (caurspīdīgs)" -#: ../src/ui/widget/selected-style.cpp:1185 +#: ../src/ui/widget/selected-style.cpp:1190 msgid "100% (opaque)" msgstr "100% (necaurspīdīgs)" -#: ../src/ui/widget/selected-style.cpp:1352 +#: ../src/ui/widget/selected-style.cpp:1357 msgid "Adjust alpha" msgstr "Pieskaņot alfa" -#: ../src/ui/widget/selected-style.cpp:1354 +#: ../src/ui/widget/selected-style.cpp:1359 #, c-format msgid "Adjusting <b>alpha</b>: was %.3g, now <b>%.3g</b> (diff %.3g); with <b>Ctrl</b> to adjust lightness, with <b>Shift</b> to adjust saturation, without modifiers to adjust hue" msgstr "Pieskaņo <b>alpha</b>: bija %.3g, tagad <b>%.3g</b> (starpība %.3g); ar <b>Ctrl</b> pieskaņo gaišumu, ar <b>Shift</b> - piesātinājumu, bez papildpogām - toni" -#: ../src/ui/widget/selected-style.cpp:1358 +#: ../src/ui/widget/selected-style.cpp:1363 msgid "Adjust saturation" msgstr "Pieskaņot piesātinājumu" -#: ../src/ui/widget/selected-style.cpp:1360 +#: ../src/ui/widget/selected-style.cpp:1365 #, c-format msgid "Adjusting <b>saturation</b>: was %.3g, now <b>%.3g</b> (diff %.3g); with <b>Ctrl</b> to adjust lightness, with <b>Alt</b> to adjust alpha, without modifiers to adjust hue" msgstr "Pieskaņo <b>piesātinājumu</b>: bija %.3g, tagad <b>%.3g</b> (starpība %.3g); ar <b>Ctrl</b> pieskaņo gaišumu, ar <b>Alt</b> - alfa, bez papildpogām - toni" -#: ../src/ui/widget/selected-style.cpp:1364 +#: ../src/ui/widget/selected-style.cpp:1369 msgid "Adjust lightness" msgstr "Pieskaņot gaišumu" -#: ../src/ui/widget/selected-style.cpp:1366 +#: ../src/ui/widget/selected-style.cpp:1371 #, c-format msgid "Adjusting <b>lightness</b>: was %.3g, now <b>%.3g</b> (diff %.3g); with <b>Shift</b> to adjust saturation, with <b>Alt</b> to adjust alpha, without modifiers to adjust hue" msgstr "Pieskaņo <b>gaišumu</b>: bija %.3g, tagad <b>%.3g</b> (starpība %.3g); ar <b>Shift</b> pieskaņo piesātinājumu, ar <b>Alt</b> - alfa, bez papildpogām - toni" -#: ../src/ui/widget/selected-style.cpp:1370 +#: ../src/ui/widget/selected-style.cpp:1375 msgid "Adjust hue" msgstr "Pieskaņot toni" -#: ../src/ui/widget/selected-style.cpp:1372 +#: ../src/ui/widget/selected-style.cpp:1377 #, c-format msgid "Adjusting <b>hue</b>: was %.3g, now <b>%.3g</b> (diff %.3g); with <b>Shift</b> to adjust saturation, with <b>Alt</b> to adjust alpha, with <b>Ctrl</b> to adjust lightness" msgstr "Pieskaņo <b>toni</b>: bija %.3g, tagad <b>%.3g</b> (starpība %.3g); ar <b>Shift</b> pieskaņo piesātinājumu, ar <b>Alt</b> - alfa, ar <b>Ctrl</b> gaišumu" -#: ../src/ui/widget/selected-style.cpp:1492 -#: ../src/ui/widget/selected-style.cpp:1506 +#: ../src/ui/widget/selected-style.cpp:1497 +#: ../src/ui/widget/selected-style.cpp:1511 msgid "Adjust stroke width" msgstr "Pielāgot apmales platumu" -#: ../src/ui/widget/selected-style.cpp:1493 +#: ../src/ui/widget/selected-style.cpp:1498 #, c-format msgid "Adjusting <b>stroke width</b>: was %.3g, now <b>%.3g</b> (diff %.3g)" msgstr "Pieskaņo <b>apmales platumu</b>: bija %.3g, tagad <b>%.3g</b> (starpība %.3g)" @@ -20755,35 +20639,35 @@ msgctxt "Sliders" msgid "Link" msgstr "Saite" -#: ../src/ui/widget/style-swatch.cpp:292 +#: ../src/ui/widget/style-swatch.cpp:293 msgid "L Gradient" msgstr "K krāsu pāreja" -#: ../src/ui/widget/style-swatch.cpp:296 +#: ../src/ui/widget/style-swatch.cpp:297 msgid "R Gradient" msgstr "L krāsu pāreja" -#: ../src/ui/widget/style-swatch.cpp:312 +#: ../src/ui/widget/style-swatch.cpp:313 #, c-format msgid "Fill: %06x/%.3g" msgstr "Aizpildījums: %06x/%.3g" -#: ../src/ui/widget/style-swatch.cpp:314 +#: ../src/ui/widget/style-swatch.cpp:315 #, c-format msgid "Stroke: %06x/%.3g" msgstr "Apmale: %06x/%.3g" -#: ../src/ui/widget/style-swatch.cpp:346 +#: ../src/ui/widget/style-swatch.cpp:347 #, c-format msgid "Stroke width: %.5g%s" msgstr "Apmales platums: %.5g%s" -#: ../src/ui/widget/style-swatch.cpp:362 +#: ../src/ui/widget/style-swatch.cpp:363 #, c-format msgid "O: %2.0f" msgstr "O: %2.0f" -#: ../src/ui/widget/style-swatch.cpp:367 +#: ../src/ui/widget/style-swatch.cpp:368 #, c-format msgid "Opacity: %2.1f %%" msgstr "Necaurspīdība: %2.1f %%" @@ -20826,27 +20710,31 @@ msgstr[0] "kopējs <b>%d</b> paralēlskaldnim; velciet ar <b>Shift</b>, lai atda msgstr[1] "kopējs <b>%d</b> paralēlskaldņiem; velciet ar <b>Shift</b>, lai atdalītu atlasīto(s) paralēlskaldni (-ņus)" msgstr[2] ", kopējs <b>%d</b> paralēlskaldņiem; velciet ar <b>Shift</b>, lai atdalītu atlasīto(s) paralēlskaldni (-ņus)" -#: ../src/verbs.cpp:154 -#: ../src/widgets/calligraphy-toolbar.cpp:647 +#: ../src/verbs.cpp:137 +msgid "File" +msgstr "Fails" + +#: ../src/verbs.cpp:156 +#: ../src/widgets/calligraphy-toolbar.cpp:643 msgid "Edit" msgstr "Labot" -#: ../src/verbs.cpp:230 +#: ../src/verbs.cpp:232 msgid "Context" msgstr "Konteksts" -#: ../src/verbs.cpp:249 -#: ../src/verbs.cpp:2166 +#: ../src/verbs.cpp:251 +#: ../src/verbs.cpp:2219 #: ../share/extensions/jessyInk_view.inx.h:1 #: ../share/extensions/polyhedron_3d.inx.h:26 msgid "View" msgstr "Skatīt" -#: ../src/verbs.cpp:269 +#: ../src/verbs.cpp:271 msgid "Dialog" msgstr "Dialoglodziņš" -#: ../src/verbs.cpp:326 +#: ../src/verbs.cpp:328 #: ../share/extensions/lorem_ipsum.inx.h:8 #: ../share/extensions/replace_font.inx.h:11 #: ../share/extensions/split.inx.h:10 @@ -20854,6 +20742,7 @@ msgstr "Dialoglodziņš" #: ../share/extensions/text_extract.inx.h:14 #: ../share/extensions/text_flipcase.inx.h:2 #: ../share/extensions/text_lowercase.inx.h:2 +#: ../share/extensions/text_merge.inx.h:16 #: ../share/extensions/text_randomcase.inx.h:2 #: ../share/extensions/text_sentencecase.inx.h:2 #: ../share/extensions/text_titlecase.inx.h:2 @@ -20861,2673 +20750,2713 @@ msgstr "Dialoglodziņš" msgid "Text" msgstr "Teksts" -#: ../src/verbs.cpp:1173 +#: ../src/verbs.cpp:1223 msgid "Switch to next layer" msgstr "Pārslēgties uz nākošo slāni" -#: ../src/verbs.cpp:1174 +#: ../src/verbs.cpp:1224 msgid "Switched to next layer." msgstr "Pārslēgts uz nākošo slāni." -#: ../src/verbs.cpp:1176 +#: ../src/verbs.cpp:1226 msgid "Cannot go past last layer." msgstr "Nevar pārvietoties tālāk par pēdējo slāni." -#: ../src/verbs.cpp:1185 +#: ../src/verbs.cpp:1235 msgid "Switch to previous layer" msgstr "Pārslēgties uz iepriekšējo slāni" -#: ../src/verbs.cpp:1186 +#: ../src/verbs.cpp:1236 msgid "Switched to previous layer." msgstr "Pārslēgts uz iepriekšējo slāni." -#: ../src/verbs.cpp:1188 +#: ../src/verbs.cpp:1238 msgid "Cannot go before first layer." msgstr "Nevar pārvietoties pirms pirmā slāņa." -#: ../src/verbs.cpp:1209 -#: ../src/verbs.cpp:1306 -#: ../src/verbs.cpp:1338 -#: ../src/verbs.cpp:1344 -#: ../src/verbs.cpp:1368 -#: ../src/verbs.cpp:1383 +#: ../src/verbs.cpp:1259 +#: ../src/verbs.cpp:1356 +#: ../src/verbs.cpp:1388 +#: ../src/verbs.cpp:1394 +#: ../src/verbs.cpp:1418 +#: ../src/verbs.cpp:1433 msgid "No current layer." msgstr "Nav pašreizējā slāņa." -#: ../src/verbs.cpp:1238 -#: ../src/verbs.cpp:1242 +#: ../src/verbs.cpp:1288 +#: ../src/verbs.cpp:1292 #, c-format msgid "Raised layer <b>%s</b>." msgstr "Līmenis <b>%s</b> pacelts." -#: ../src/verbs.cpp:1239 +#: ../src/verbs.cpp:1289 msgid "Layer to top" msgstr "Slāni uz virspusi" -#: ../src/verbs.cpp:1243 +#: ../src/verbs.cpp:1293 msgid "Raise layer" msgstr "Pacelt slāni" -#: ../src/verbs.cpp:1246 -#: ../src/verbs.cpp:1250 +#: ../src/verbs.cpp:1296 +#: ../src/verbs.cpp:1300 #, c-format msgid "Lowered layer <b>%s</b>." msgstr "Pazeminātais slānis <b>%s</b>." -#: ../src/verbs.cpp:1247 +#: ../src/verbs.cpp:1297 msgid "Layer to bottom" msgstr "Slāni uz apakšu" -#: ../src/verbs.cpp:1251 +#: ../src/verbs.cpp:1301 msgid "Lower layer" msgstr "Zemākais slānis" -#: ../src/verbs.cpp:1260 +#: ../src/verbs.cpp:1310 msgid "Cannot move layer any further." msgstr "Slāni tālāk pārvietot nav iespējams." -#: ../src/verbs.cpp:1274 -#: ../src/verbs.cpp:1293 +#: ../src/verbs.cpp:1324 +#: ../src/verbs.cpp:1343 #, c-format msgid "%s copy" msgstr "%s kopēt" -#: ../src/verbs.cpp:1301 +#: ../src/verbs.cpp:1351 msgid "Duplicate layer" msgstr "Dublēt slāni" #. TRANSLATORS: this means "The layer has been duplicated." -#: ../src/verbs.cpp:1304 +#: ../src/verbs.cpp:1354 msgid "Duplicated layer." msgstr "Dublētais slānis." -#: ../src/verbs.cpp:1333 +#: ../src/verbs.cpp:1383 msgid "Delete layer" msgstr "Dzēst slāni" #. TRANSLATORS: this means "The layer has been deleted." -#: ../src/verbs.cpp:1336 +#: ../src/verbs.cpp:1386 msgid "Deleted layer." msgstr "Dzēstais slānis." -#: ../src/verbs.cpp:1353 +#: ../src/verbs.cpp:1403 msgid "Show all layers" msgstr "Rādīt visus slāņus" -#: ../src/verbs.cpp:1358 +#: ../src/verbs.cpp:1408 msgid "Hide all layers" msgstr "Slēpt visus slāņus" -#: ../src/verbs.cpp:1363 +#: ../src/verbs.cpp:1413 msgid "Lock all layers" msgstr "Slēgt visus slāņus" -#: ../src/verbs.cpp:1377 +#: ../src/verbs.cpp:1427 msgid "Unlock all layers" msgstr "Atslēgt visus slāņus" -#: ../src/verbs.cpp:1451 +#: ../src/verbs.cpp:1511 msgid "Flip horizontally" msgstr "Apmest horizontāli" -#: ../src/verbs.cpp:1456 +#: ../src/verbs.cpp:1516 msgid "Flip vertically" msgstr "Apmest vertikāli" #. TRANSLATORS: If you have translated the tutorial-basic.en.svgz file to your language, #. then translate this string as "tutorial-basic.LANG.svgz" (where LANG is your language #. code); otherwise leave as "tutorial-basic.svg". -#: ../src/verbs.cpp:2049 +#: ../src/verbs.cpp:2104 msgid "tutorial-basic.svg" msgstr "tutorial-basic.svg" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:2053 +#: ../src/verbs.cpp:2108 msgid "tutorial-shapes.svg" msgstr "tutorial-shapes.svg" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:2057 +#: ../src/verbs.cpp:2112 msgid "tutorial-advanced.svg" msgstr "tutorial-advanced.svg" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:2061 +#: ../src/verbs.cpp:2116 msgid "tutorial-tracing.svg" msgstr "tutorial-tracing.svg" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:2065 +#: ../src/verbs.cpp:2120 msgid "tutorial-calligraphy.svg" msgstr "tutorial-calligraphy.svg" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:2069 +#: ../src/verbs.cpp:2124 msgid "tutorial-interpolate.svg" msgstr "tutorial-interpolate.svg" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:2073 +#: ../src/verbs.cpp:2128 msgid "tutorial-elements.svg" msgstr "tutorial-elements.svg" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:2077 +#: ../src/verbs.cpp:2132 msgid "tutorial-tips.svg" msgstr "tutorial-tips.svg" -#: ../src/verbs.cpp:2265 -#: ../src/verbs.cpp:2851 +#: ../src/verbs.cpp:2318 +#: ../src/verbs.cpp:2904 msgid "Unlock all objects in the current layer" msgstr "Atslēgt visus objektus pašreizējā slānī" -#: ../src/verbs.cpp:2269 -#: ../src/verbs.cpp:2853 +#: ../src/verbs.cpp:2322 +#: ../src/verbs.cpp:2906 msgid "Unlock all objects in all layers" msgstr "Atslēgt visus objektus visos slāņos" -#: ../src/verbs.cpp:2273 -#: ../src/verbs.cpp:2855 +#: ../src/verbs.cpp:2326 +#: ../src/verbs.cpp:2908 msgid "Unhide all objects in the current layer" msgstr "Parādīt visus objektus pašreizējā slānī" -#: ../src/verbs.cpp:2277 -#: ../src/verbs.cpp:2857 +#: ../src/verbs.cpp:2330 +#: ../src/verbs.cpp:2910 msgid "Unhide all objects in all layers" msgstr "Parādīt visus objektus visos slānī" -#: ../src/verbs.cpp:2292 +#: ../src/verbs.cpp:2345 msgid "Does nothing" msgstr "Nedara neko" -#: ../src/verbs.cpp:2295 +#: ../src/verbs.cpp:2348 msgid "Create new document from the default template" msgstr "Izveidot jaunu dokumentu no noklusētās sagataves" -#: ../src/verbs.cpp:2297 +#: ../src/verbs.cpp:2350 msgid "_Open..." msgstr "_Atvērt..." -#: ../src/verbs.cpp:2298 +#: ../src/verbs.cpp:2351 msgid "Open an existing document" msgstr "Atvērt jau esošu dokumentu" -#: ../src/verbs.cpp:2299 +#: ../src/verbs.cpp:2352 msgid "Re_vert" msgstr "Ielādēt iepriekš saglabāto" -#: ../src/verbs.cpp:2300 +#: ../src/verbs.cpp:2353 msgid "Revert to the last saved version of document (changes will be lost)" msgstr "Atgriezties pie pēdējās saglabātās versijas (visas izmaiņas tiks zaudētas)" -#: ../src/verbs.cpp:2301 +#: ../src/verbs.cpp:2354 msgid "Save document" msgstr "Saglabāt dokumentu" -#: ../src/verbs.cpp:2303 +#: ../src/verbs.cpp:2356 msgid "Save _As..." msgstr "S_aglabāt kā..." -#: ../src/verbs.cpp:2304 +#: ../src/verbs.cpp:2357 msgid "Save document under a new name" msgstr "Saglabāt programmu ar citu nosaukumu" -#: ../src/verbs.cpp:2305 +#: ../src/verbs.cpp:2358 msgid "Save a Cop_y..." msgstr "Saglabāt kopi_ju..." -#: ../src/verbs.cpp:2306 +#: ../src/verbs.cpp:2359 msgid "Save a copy of the document under a new name" msgstr "Saglabāt pašreizējā dokumenta kopiju ar jaunu nosaukumu" -#: ../src/verbs.cpp:2307 +#: ../src/verbs.cpp:2360 msgid "_Print..." msgstr "_Drukāt..." -#: ../src/verbs.cpp:2307 +#: ../src/verbs.cpp:2360 msgid "Print document" msgstr "Drukāt dokumentu" #. TRANSLATORS: "Vacuum Defs" means "Clean up defs" (so as to remove unused definitions) -#: ../src/verbs.cpp:2310 +#: ../src/verbs.cpp:2363 msgid "Clean _up document" msgstr "Uzkopt dokumentu" -#: ../src/verbs.cpp:2310 +#: ../src/verbs.cpp:2363 msgid "Remove unused definitions (such as gradients or clipping paths) from the <defs> of the document" msgstr "Aizvākt neizmantotos iestatījumus (piemēram, krāsu pārejas vai izgriešanas ceļus) no dokumenta <defs>" -#: ../src/verbs.cpp:2312 +#: ../src/verbs.cpp:2365 msgid "_Import..." msgstr "_Imports..." -#: ../src/verbs.cpp:2313 +#: ../src/verbs.cpp:2366 msgid "Import a bitmap or SVG image into this document" msgstr "Importēt bitkartes vai SVG attēlu šajā dokumentā" -#: ../src/verbs.cpp:2314 +#: ../src/verbs.cpp:2367 msgid "_Export Bitmap..." msgstr "_Eksportēt bitkarti..." -#: ../src/verbs.cpp:2315 +#: ../src/verbs.cpp:2368 msgid "Export this document or a selection as a bitmap image" msgstr "Eksportēt šo dokumentu vai iezīmēto apgabalu kā bitkartes attēlu" -#: ../src/verbs.cpp:2316 +#: ../src/verbs.cpp:2369 msgid "Import Clip Art..." msgstr "Importēt izgriezumkopu..." -#: ../src/verbs.cpp:2317 +#: ../src/verbs.cpp:2370 msgid "Import clipart from Open Clip Art Library" msgstr "Importēt izgriezumkopu no Open Clip Art bibliotēkas" #. new FileVerb(SP_VERB_FILE_EXPORT_TO_OCAL, "FileExportToOCAL", N_("Export To Open Clip Art Library"), N_("Export this document to Open Clip Art Library"), INKSCAPE_ICON_DOCUMENT_EXPORT_OCAL), -#: ../src/verbs.cpp:2319 +#: ../src/verbs.cpp:2372 msgid "N_ext Window" msgstr "_Nākošais logs" -#: ../src/verbs.cpp:2320 +#: ../src/verbs.cpp:2373 msgid "Switch to the next document window" msgstr "Pārslēgties uz nākošā dokumenta logu" -#: ../src/verbs.cpp:2321 +#: ../src/verbs.cpp:2374 msgid "P_revious Window" msgstr "Ie_priekšējais logs" -#: ../src/verbs.cpp:2322 +#: ../src/verbs.cpp:2375 msgid "Switch to the previous document window" msgstr "Pārslēgties uz iepriekšējā dokumenta logu" -#: ../src/verbs.cpp:2323 +#: ../src/verbs.cpp:2376 msgid "_Close" msgstr "_Aizvērt" -#: ../src/verbs.cpp:2324 +#: ../src/verbs.cpp:2377 msgid "Close this document window" msgstr "Aizvērt patreizējā dokumenta logu" -#: ../src/verbs.cpp:2325 +#: ../src/verbs.cpp:2378 msgid "_Quit" msgstr "_Iziet" -#: ../src/verbs.cpp:2325 +#: ../src/verbs.cpp:2378 msgid "Quit Inkscape" msgstr "Iziet no Inkscape" -#: ../src/verbs.cpp:2328 +#: ../src/verbs.cpp:2379 +msgid "_Templates..." +msgstr "Saga_taves..." + +#: ../src/verbs.cpp:2380 +msgid "Create new project from template" +msgstr "Izveidot jaunu projektu no sagataves" + +#: ../src/verbs.cpp:2383 msgid "Undo last action" msgstr "Atsaukt pēdējo darbību" -#: ../src/verbs.cpp:2331 +#: ../src/verbs.cpp:2386 msgid "Do again the last undone action" msgstr "Atkārtot pēdējo atsaukto darbību" -#: ../src/verbs.cpp:2332 +#: ../src/verbs.cpp:2387 msgid "Cu_t" msgstr "Griez_t" -#: ../src/verbs.cpp:2333 +#: ../src/verbs.cpp:2388 msgid "Cut selection to clipboard" msgstr "Izgriezt atlasīto uz starpliktuvi" -#: ../src/verbs.cpp:2334 +#: ../src/verbs.cpp:2389 msgid "_Copy" msgstr "_Kopēt" -#: ../src/verbs.cpp:2335 +#: ../src/verbs.cpp:2390 msgid "Copy selection to clipboard" msgstr "Kopēt atlasīto uz starpliktuvi" -#: ../src/verbs.cpp:2336 +#: ../src/verbs.cpp:2391 msgid "_Paste" msgstr "_Ielīmēt" -#: ../src/verbs.cpp:2337 +#: ../src/verbs.cpp:2392 msgid "Paste objects from clipboard to mouse point, or paste text" msgstr "Ielīmēt objektus vai tekstu no starpliktuves peles kursora norādītajā vietā" -#: ../src/verbs.cpp:2338 +#: ../src/verbs.cpp:2393 msgid "Paste _Style" msgstr "Ielīmēt stilu" -#: ../src/verbs.cpp:2339 +#: ../src/verbs.cpp:2394 msgid "Apply the style of the copied object to selection" msgstr "Pielietot atlasītajam nokopētā objekta stilu" -#: ../src/verbs.cpp:2341 +#: ../src/verbs.cpp:2396 msgid "Scale selection to match the size of the copied object" msgstr "Mērogot atlasīto, lai atbilstu nokopētā objekta izmēram" -#: ../src/verbs.cpp:2342 +#: ../src/verbs.cpp:2397 msgid "Paste _Width" msgstr "Ielīmēt pla_tumu" -#: ../src/verbs.cpp:2343 +#: ../src/verbs.cpp:2398 msgid "Scale selection horizontally to match the width of the copied object" msgstr "Mērogot atlasīto horizontāli, lai atbilstu nokopētā objekta platumam" -#: ../src/verbs.cpp:2344 +#: ../src/verbs.cpp:2399 msgid "Paste _Height" msgstr "Ielīmēt au_gstumu" -#: ../src/verbs.cpp:2345 +#: ../src/verbs.cpp:2400 msgid "Scale selection vertically to match the height of the copied object" msgstr "Mērogot atlasīto vertikāli, lai atbilstu nokopētā objekta augstumam" -#: ../src/verbs.cpp:2346 +#: ../src/verbs.cpp:2401 msgid "Paste Size Separately" msgstr "Ielīmēt izmērus atsevišķi" -#: ../src/verbs.cpp:2347 +#: ../src/verbs.cpp:2402 msgid "Scale each selected object to match the size of the copied object" msgstr "Mērogot katru atlasīto objektu, lai atbilstu nokopētā objekta izmēram" -#: ../src/verbs.cpp:2348 +#: ../src/verbs.cpp:2403 msgid "Paste Width Separately" msgstr "Ielīmēt platumu atsevišķi" -#: ../src/verbs.cpp:2349 +#: ../src/verbs.cpp:2404 msgid "Scale each selected object horizontally to match the width of the copied object" msgstr "Mērogot katru atlasīto objektu horizontāli, lai atbilstu nokopētā objekta platumam" -#: ../src/verbs.cpp:2350 +#: ../src/verbs.cpp:2405 msgid "Paste Height Separately" msgstr "Ielīmēt augstumu atsevišķi" -#: ../src/verbs.cpp:2351 +#: ../src/verbs.cpp:2406 msgid "Scale each selected object vertically to match the height of the copied object" msgstr "Mērogot katru atlasīto objektu vertikāli, lai atbilstu nokopētā objekta augstumam" -#: ../src/verbs.cpp:2352 +#: ../src/verbs.cpp:2407 msgid "Paste _In Place" msgstr "Ielīmēt vietā" -#: ../src/verbs.cpp:2353 +#: ../src/verbs.cpp:2408 msgid "Paste objects from clipboard to the original location" msgstr "Ielīmēt objektus no starpliktuves to sākotnējā atrašanās vietā" -#: ../src/verbs.cpp:2354 +#: ../src/verbs.cpp:2409 msgid "Paste Path _Effect" msgstr "Ielīmēt ceļa _efektu" -#: ../src/verbs.cpp:2355 +#: ../src/verbs.cpp:2410 msgid "Apply the path effect of the copied object to selection" msgstr "Pielietot nokopētā objekta ceļa efektu atlasītajam" -#: ../src/verbs.cpp:2356 +#: ../src/verbs.cpp:2411 msgid "Remove Path _Effect" msgstr "Aizvākt ceļa _efektu" -#: ../src/verbs.cpp:2357 +#: ../src/verbs.cpp:2412 msgid "Remove any path effects from selected objects" msgstr "Aizvākt visus ceļa efektus no atlasītajiem objektiem" -#: ../src/verbs.cpp:2358 +#: ../src/verbs.cpp:2413 msgid "_Remove Filters" msgstr "Izņemt filt_rus" -#: ../src/verbs.cpp:2359 +#: ../src/verbs.cpp:2414 msgid "Remove any filters from selected objects" msgstr "Aizvākt visus filtrus no atlasītajiem objektiem" -#: ../src/verbs.cpp:2360 +#: ../src/verbs.cpp:2415 msgid "_Delete" msgstr "_Dzēst" -#: ../src/verbs.cpp:2361 +#: ../src/verbs.cpp:2416 msgid "Delete selection" msgstr "Dzēst iezīmēto" -#: ../src/verbs.cpp:2362 +#: ../src/verbs.cpp:2417 msgid "Duplic_ate" msgstr "Du_blēt" -#: ../src/verbs.cpp:2363 +#: ../src/verbs.cpp:2418 msgid "Duplicate selected objects" msgstr "Dublēt iezīmētos objektus" -#: ../src/verbs.cpp:2364 +#: ../src/verbs.cpp:2419 msgid "Create Clo_ne" msgstr "Izveidot klo_nu" -#: ../src/verbs.cpp:2365 +#: ../src/verbs.cpp:2420 msgid "Create a clone (a copy linked to the original) of selected object" msgstr "Izveidot atlasītā objekta klonus (vai kopēt, piesaistot oriģinālam)" -#: ../src/verbs.cpp:2366 +#: ../src/verbs.cpp:2421 msgid "Unlin_k Clone" msgstr "Atsaistīt _klonu" -#: ../src/verbs.cpp:2367 +#: ../src/verbs.cpp:2422 msgid "Cut the selected clones' links to the originals, turning them into standalone objects" msgstr "Saraut atlasīto klonu saites ar oriģināliem, pārveidojot tos par neatkarīgiem objektiem" -#: ../src/verbs.cpp:2368 +#: ../src/verbs.cpp:2423 msgid "Relink to Copied" msgstr "No jauna piesaistīt kopetajam" -#: ../src/verbs.cpp:2369 +#: ../src/verbs.cpp:2424 msgid "Relink the selected clones to the object currently on the clipboard" msgstr "Atjaunot atlasīto klonu saites uz pašreiz starpliktuvē atrodošos objektu" -#: ../src/verbs.cpp:2370 +#: ../src/verbs.cpp:2425 msgid "Select _Original" msgstr "Atlasīt _oriģinālu" -#: ../src/verbs.cpp:2371 +#: ../src/verbs.cpp:2426 msgid "Select the object to which the selected clone is linked" msgstr "Atlasīt objektu, kuram ir piesaistīts atlasītais klons" -#: ../src/verbs.cpp:2372 +#: ../src/verbs.cpp:2427 msgid "Clone original path (LPE)" msgstr "Klonēt sākotnējo ceļu (LPE)" -#: ../src/verbs.cpp:2373 +#: ../src/verbs.cpp:2428 msgid "Creates a new path, applies the Clone original LPE, and refers it to the selected path" msgstr "Izveido jaunu ceļu, pielieto Klonēt sākotnējo LPE un izveido atsauci uz atlasīto ceļu" -#: ../src/verbs.cpp:2374 +#: ../src/verbs.cpp:2429 msgid "Objects to _Marker" msgstr "Objektus par _marķieriem" -#: ../src/verbs.cpp:2375 +#: ../src/verbs.cpp:2430 msgid "Convert selection to a line marker" msgstr "Pārvērst atlasīto par līnijas marķieri" -#: ../src/verbs.cpp:2376 +#: ../src/verbs.cpp:2431 msgid "Objects to Gu_ides" msgstr "Objektus par palīglīn_ijām" -#: ../src/verbs.cpp:2377 +#: ../src/verbs.cpp:2432 msgid "Convert selected objects to a collection of guidelines aligned with their edges" msgstr "Pārveidot atlasītos objektus par gar objektu malām izkārtotu palīglīniju kopu" -#: ../src/verbs.cpp:2378 +#: ../src/verbs.cpp:2433 msgid "Objects to Patter_n" msgstr "Objektus par _faktūru" -#: ../src/verbs.cpp:2379 +#: ../src/verbs.cpp:2434 msgid "Convert selection to a rectangle with tiled pattern fill" msgstr "Pārvērst atlasīto par ar faktūras elementiem aizpildītu taisnstūri" -#: ../src/verbs.cpp:2380 +#: ../src/verbs.cpp:2435 msgid "Pattern to _Objects" msgstr "Faktūru par _objektiem" -#: ../src/verbs.cpp:2381 +#: ../src/verbs.cpp:2436 msgid "Extract objects from a tiled pattern fill" msgstr "Ekstraģēt objektus no faktūras aizpildījuma" -#: ../src/verbs.cpp:2382 +#: ../src/verbs.cpp:2437 msgid "Group to Symbol" msgstr "Grupu par simbolu" -#: ../src/verbs.cpp:2383 +#: ../src/verbs.cpp:2438 msgid "Convert group to a symbol" msgstr "Pārvērst grupu par simbolu" -#: ../src/verbs.cpp:2384 +#: ../src/verbs.cpp:2439 msgid "Symbol to Group" msgstr "Simbolu par grupu" -#: ../src/verbs.cpp:2385 +#: ../src/verbs.cpp:2440 msgid "Extract group from a symbol" msgstr "Ekstraģēt grupu no simbola" -#: ../src/verbs.cpp:2386 +#: ../src/verbs.cpp:2441 msgid "Clea_r All" msgstr "Notī_rīt visu" -#: ../src/verbs.cpp:2387 +#: ../src/verbs.cpp:2442 msgid "Delete all objects from document" msgstr "Dzēst visus objektus dokumentā" -#: ../src/verbs.cpp:2388 +#: ../src/verbs.cpp:2443 msgid "Select Al_l" msgstr "Izvēlēties _visu" -#: ../src/verbs.cpp:2389 +#: ../src/verbs.cpp:2444 msgid "Select all objects or all nodes" msgstr "Iezīmēt visus objektus vai mezglus" -#: ../src/verbs.cpp:2390 +#: ../src/verbs.cpp:2445 msgid "Select All in All La_yers" msgstr "Iezīmēt visu visos s_lāņos" -#: ../src/verbs.cpp:2391 +#: ../src/verbs.cpp:2446 msgid "Select all objects in all visible and unlocked layers" msgstr "Izvēlēties visus objektus visos redzamajos un atvērtajos slāņos" -#: ../src/verbs.cpp:2392 +#: ../src/verbs.cpp:2447 msgid "Fill _and Stroke" msgstr "Aizpildījums un apmale" -#: ../src/verbs.cpp:2393 +#: ../src/verbs.cpp:2448 msgid "Select all objects with the same fill and stroke as the selected objects" msgstr "Atlasīt visus objektus ar līdzīgu aizpildījumu un apmales platumu, kā jau atlasītajiem" -#: ../src/verbs.cpp:2394 +#: ../src/verbs.cpp:2449 msgid "_Fill Color" msgstr "_Pildījuma krāsa" -#: ../src/verbs.cpp:2395 +#: ../src/verbs.cpp:2450 msgid "Select all objects with the same fill as the selected objects" msgstr "Atlasīt visus objektus ar līdzīgu aizpildījumu, kā jau atlasītajiem" -#: ../src/verbs.cpp:2396 +#: ../src/verbs.cpp:2451 msgid "_Stroke Color" msgstr "_Apmales krāsa" -#: ../src/verbs.cpp:2397 +#: ../src/verbs.cpp:2452 msgid "Select all objects with the same stroke as the selected objects" msgstr "Atlasīt visus objektus ar līdzīgu apmales platumu, kā jau atlasītajiem" -#: ../src/verbs.cpp:2398 +#: ../src/verbs.cpp:2453 msgid "Stroke St_yle" msgstr "Apmales sti_ls" -#: ../src/verbs.cpp:2399 +#: ../src/verbs.cpp:2454 msgid "Select all objects with the same stroke style (width, dash, markers) as the selected objects" msgstr "Atlasīt visus objektus ar līdzīgu apmales stilu (platums, dalījumu, marķieri), kā jau atlasītajiem" -#: ../src/verbs.cpp:2400 +#: ../src/verbs.cpp:2455 msgid "_Object Type" msgstr "_Objekta tips" -#: ../src/verbs.cpp:2401 +#: ../src/verbs.cpp:2456 msgid "Select all objects with the same object type (rect, arc, text, path, bitmap etc) as the selected objects" msgstr "Atlasīt visus objektus ar līdzīgu tipu, kā jau atlasītajiem (taisnstūris, loks, teksts, bitkarte, ceļš utml.)" -#: ../src/verbs.cpp:2402 +#: ../src/verbs.cpp:2457 msgid "In_vert Selection" msgstr "In_vertēt izvēlēto" -#: ../src/verbs.cpp:2403 +#: ../src/verbs.cpp:2458 msgid "Invert selection (unselect what is selected and select everything else)" msgstr "Invertēt iezīmēto (atceļ iepriekšējo izvēli un izvēlas visu pārējo)" -#: ../src/verbs.cpp:2404 +#: ../src/verbs.cpp:2459 msgid "Invert in All Layers" msgstr "Invertēt visus slāņus" -#: ../src/verbs.cpp:2405 +#: ../src/verbs.cpp:2460 msgid "Invert selection in all visible and unlocked layers" msgstr "Invertēt iezīmēto visos redzamajos un atvērtajos slāņos" -#: ../src/verbs.cpp:2406 +#: ../src/verbs.cpp:2461 msgid "Select Next" msgstr "Izvēlēties nākošo" -#: ../src/verbs.cpp:2407 +#: ../src/verbs.cpp:2462 msgid "Select next object or node" msgstr "Izvēlēties nākošo objektu vai mezglu" -#: ../src/verbs.cpp:2408 +#: ../src/verbs.cpp:2463 msgid "Select Previous" msgstr "Izvēlēties iepriekšējo" -#: ../src/verbs.cpp:2409 +#: ../src/verbs.cpp:2464 msgid "Select previous object or node" msgstr "Izvēlēties iepriekšējo objektu vai mezglu" -#: ../src/verbs.cpp:2410 +#: ../src/verbs.cpp:2465 msgid "D_eselect" msgstr "Atc_elt atlasi" -#: ../src/verbs.cpp:2411 +#: ../src/verbs.cpp:2466 msgid "Deselect any selected objects or nodes" msgstr "Atcelt visu objektu vai mezglu izvēli" -#: ../src/verbs.cpp:2412 -msgid "Create _Guides Around the Page" -msgstr "Izveidot palī_glīnija apkārt lapai" - -#: ../src/verbs.cpp:2413 -#: ../src/verbs.cpp:2415 +#: ../src/verbs.cpp:2468 +#: ../src/verbs.cpp:2470 msgid "Create four guides aligned with the page borders" msgstr "Izveidojiet četras gar lapas malām novietotas palīglīnijas" -#: ../src/verbs.cpp:2416 +#: ../src/verbs.cpp:2469 +msgid "Create _Guides Around the Page" +msgstr "Izveidot palī_glīnija apkārt lapai" + +#: ../src/verbs.cpp:2471 msgid "Next path effect parameter" msgstr "Nākošais ceļa efekta parametrs" -#: ../src/verbs.cpp:2417 +#: ../src/verbs.cpp:2472 msgid "Show next editable path effect parameter" msgstr "Rādīt nākošo labojamo ceļa efekta parametru" #. Selection -#: ../src/verbs.cpp:2420 +#: ../src/verbs.cpp:2475 msgid "Raise to _Top" msgstr "Pacelt _virspusē" -#: ../src/verbs.cpp:2421 +#: ../src/verbs.cpp:2476 msgid "Raise selection to top" msgstr "Pacelt izvēlēto pašā augšā" -#: ../src/verbs.cpp:2422 +#: ../src/verbs.cpp:2477 msgid "Lower to _Bottom" msgstr "Nolaist pašā apakšā" -#: ../src/verbs.cpp:2423 +#: ../src/verbs.cpp:2478 msgid "Lower selection to bottom" msgstr "Nolaist izvēlēto pašā apakšā" -#: ../src/verbs.cpp:2424 +#: ../src/verbs.cpp:2479 msgid "_Raise" msgstr "Pacelt" -#: ../src/verbs.cpp:2425 +#: ../src/verbs.cpp:2480 msgid "Raise selection one step" msgstr "Pacelt izvēlēto par vienu soli uz augšu" -#: ../src/verbs.cpp:2426 +#: ../src/verbs.cpp:2481 msgid "_Lower" msgstr "_Nolaist" -#: ../src/verbs.cpp:2427 +#: ../src/verbs.cpp:2482 msgid "Lower selection one step" msgstr "Pacelt izvēlēto par vienu soli uz leju" -#: ../src/verbs.cpp:2429 +#: ../src/verbs.cpp:2484 msgid "Group selected objects" msgstr "Grupēt iezīmētos objektus" -#: ../src/verbs.cpp:2431 +#: ../src/verbs.cpp:2486 msgid "Ungroup selected groups" msgstr "Atgrupēt iezīmētās grupas" -#: ../src/verbs.cpp:2433 +#: ../src/verbs.cpp:2488 msgid "_Put on Path" msgstr "Izvietot gar ceļu" -#: ../src/verbs.cpp:2435 +#: ../src/verbs.cpp:2490 msgid "_Remove from Path" msgstr "Aizvākt no ceļa" -#: ../src/verbs.cpp:2437 +#: ../src/verbs.cpp:2492 msgid "Remove Manual _Kerns" msgstr "aizvākt rokas rakstasavirzi" #. TRANSLATORS: "glyph": An image used in the visual representation of characters; #. roughly speaking, how a character looks. A font is a set of glyphs. -#: ../src/verbs.cpp:2440 +#: ../src/verbs.cpp:2495 msgid "Remove all manual kerns and glyph rotations from a text object" msgstr "Aizvākt no teksta objekta visas ar roku iestatītās rakstavirzes un glifu pagriezienus" -#: ../src/verbs.cpp:2442 +#: ../src/verbs.cpp:2497 msgid "_Union" msgstr "Ap_vienot" -#: ../src/verbs.cpp:2443 +#: ../src/verbs.cpp:2498 msgid "Create union of selected paths" msgstr "Apvienots atlasītos ceļus" -#: ../src/verbs.cpp:2444 +#: ../src/verbs.cpp:2499 msgid "_Intersection" msgstr "_Šķēlums" -#: ../src/verbs.cpp:2445 +#: ../src/verbs.cpp:2500 msgid "Create intersection of selected paths" msgstr "Izveidot atlasīto ceļu krustpunktu" -#: ../src/verbs.cpp:2446 +#: ../src/verbs.cpp:2501 msgid "_Difference" msgstr "_Atšķirība" -#: ../src/verbs.cpp:2447 +#: ../src/verbs.cpp:2502 msgid "Create difference of selected paths (bottom minus top)" msgstr "Izveidot atlasīto ceļu starpību (apakšējais mīnus augšējais)" -#: ../src/verbs.cpp:2448 +#: ../src/verbs.cpp:2503 msgid "E_xclusion" msgstr "I_zņēmums" -#: ../src/verbs.cpp:2449 +#: ../src/verbs.cpp:2504 msgid "Create exclusive OR of selected paths (those parts that belong to only one path)" msgstr "No atlasītajiem ceļiem izveidot izslēdzošo VAI (tās daļas, kas pieder tikai vienam ceļam)" -#: ../src/verbs.cpp:2450 +#: ../src/verbs.cpp:2505 msgid "Di_vision" msgstr "Ie_daļas" -#: ../src/verbs.cpp:2451 +#: ../src/verbs.cpp:2506 msgid "Cut the bottom path into pieces" msgstr "Sagriezt apakšējo ceļu gabalos" #. TRANSLATORS: "to cut a path" is not the same as "to break a path apart" - see the #. Advanced tutorial for more info -#: ../src/verbs.cpp:2454 +#: ../src/verbs.cpp:2509 msgid "Cut _Path" msgstr "Pārgriezt _ceļu" -#: ../src/verbs.cpp:2455 +#: ../src/verbs.cpp:2510 msgid "Cut the bottom path's stroke into pieces, removing fill" msgstr "Sagriezt apakšējā ceļa apmali posmos, aizvācot aizpildījumu" #. TRANSLATORS: "outset": expand a shape by offsetting the object's path, #. i.e. by displacing it perpendicular to the path in each point. #. See also the Advanced Tutorial for explanation. -#: ../src/verbs.cpp:2459 +#: ../src/verbs.cpp:2514 msgid "Outs_et" msgstr "Paga_rināt" -#: ../src/verbs.cpp:2460 +#: ../src/verbs.cpp:2515 msgid "Outset selected paths" msgstr "Pagarināt atlasīto ceļu" -#: ../src/verbs.cpp:2462 +#: ../src/verbs.cpp:2517 msgid "O_utset Path by 1 px" msgstr "Pagarināt atlasīto ceļ_u par 1 px" -#: ../src/verbs.cpp:2463 +#: ../src/verbs.cpp:2518 msgid "Outset selected paths by 1 px" msgstr "Pagarināt atlasīto ceļu par 1 px" -#: ../src/verbs.cpp:2465 +#: ../src/verbs.cpp:2520 msgid "O_utset Path by 10 px" msgstr "Pagarināt atlasīto ceļu par 10 px" -#: ../src/verbs.cpp:2466 +#: ../src/verbs.cpp:2521 msgid "Outset selected paths by 10 px" msgstr "Pagarināt atlasīto ceļu par 10 px" #. TRANSLATORS: "inset": contract a shape by offsetting the object's path, #. i.e. by displacing it perpendicular to the path in each point. #. See also the Advanced Tutorial for explanation. -#: ../src/verbs.cpp:2470 +#: ../src/verbs.cpp:2525 msgid "I_nset" msgstr "Saīsi_nāt" -#: ../src/verbs.cpp:2471 +#: ../src/verbs.cpp:2526 msgid "Inset selected paths" msgstr "Pārvietot atlasītos ceļus uz iekšu" -#: ../src/verbs.cpp:2473 +#: ../src/verbs.cpp:2528 msgid "I_nset Path by 1 px" msgstr "Saīsi_nāt ceļu par 1 px" -#: ../src/verbs.cpp:2474 +#: ../src/verbs.cpp:2529 msgid "Inset selected paths by 1 px" msgstr "Saīsināt atlasīto ceļu par 1 px" -#: ../src/verbs.cpp:2476 +#: ../src/verbs.cpp:2531 msgid "I_nset Path by 10 px" msgstr "Saīsi_nāt ceļu par 10 px" -#: ../src/verbs.cpp:2477 +#: ../src/verbs.cpp:2532 msgid "Inset selected paths by 10 px" msgstr "Saīsināt atlasīto ceļu par 10 px" -#: ../src/verbs.cpp:2479 +#: ../src/verbs.cpp:2534 msgid "D_ynamic Offset" msgstr "Dinamiskā nobīde" -#: ../src/verbs.cpp:2479 +#: ../src/verbs.cpp:2534 msgid "Create a dynamic offset object" msgstr "Izveidot dinamiski nobīdītu objektu" -#: ../src/verbs.cpp:2481 +#: ../src/verbs.cpp:2536 msgid "_Linked Offset" msgstr "Saistītā nobīde" -#: ../src/verbs.cpp:2482 +#: ../src/verbs.cpp:2537 msgid "Create a dynamic offset object linked to the original path" msgstr "Izveidot pie sākotnējā ceļa piesaistītu dinamisko nobīdītu objektu" -#: ../src/verbs.cpp:2484 +#: ../src/verbs.cpp:2539 msgid "_Stroke to Path" msgstr "Vilku_mu par ceļu" -#: ../src/verbs.cpp:2485 +#: ../src/verbs.cpp:2540 msgid "Convert selected object's stroke to paths" msgstr "Pārvērst atlasītā objekta apmali ceļos" -#: ../src/verbs.cpp:2486 +#: ../src/verbs.cpp:2541 msgid "Si_mplify" msgstr "V_ienkāršot" -#: ../src/verbs.cpp:2487 +#: ../src/verbs.cpp:2542 msgid "Simplify selected paths (remove extra nodes)" msgstr "Vienkāršo atlasītos ceļus (aizvāc liekos mezglus)" -#: ../src/verbs.cpp:2488 +#: ../src/verbs.cpp:2543 msgid "_Reverse" msgstr "Apg_rieztā secībā" -#: ../src/verbs.cpp:2489 +#: ../src/verbs.cpp:2544 msgid "Reverse the direction of selected paths (useful for flipping markers)" msgstr "Pagriezt atlasītos ceļus pretējā virzienā (noderīgs marķieru apgriešanai)" -#: ../src/verbs.cpp:2492 +#: ../src/verbs.cpp:2547 msgid "Create one or more paths from a bitmap by tracing it" msgstr "Vektorizējot izveido no bitkartes vienu vai vairākus ceļus" -#: ../src/verbs.cpp:2493 +#: ../src/verbs.cpp:2548 msgid "Make a _Bitmap Copy" msgstr "Izveidot _bitkartes kopiju" -#: ../src/verbs.cpp:2494 +#: ../src/verbs.cpp:2549 msgid "Export selection to a bitmap and insert it into document" msgstr "Eksportēt atlasīto uz bitkarti un ievietot to dokumentā" -#: ../src/verbs.cpp:2495 +#: ../src/verbs.cpp:2550 msgid "_Combine" msgstr "_Kombinēt" -#: ../src/verbs.cpp:2496 +#: ../src/verbs.cpp:2551 msgid "Combine several paths into one" msgstr "Apvieno vairākus ceļus vienā" #. TRANSLATORS: "to cut a path" is not the same as "to break a path apart" - see the #. Advanced tutorial for more info -#: ../src/verbs.cpp:2499 +#: ../src/verbs.cpp:2554 msgid "Break _Apart" msgstr "S_ašķelt" -#: ../src/verbs.cpp:2500 +#: ../src/verbs.cpp:2555 msgid "Break selected paths into subpaths" msgstr "Sašķelt atlasītos ceļus apakšceļos" -#: ../src/verbs.cpp:2501 +#: ../src/verbs.cpp:2556 msgid "Ro_ws and Columns..." msgstr "Rin_das un slejas..." -#: ../src/verbs.cpp:2502 +#: ../src/verbs.cpp:2557 msgid "Arrange selected objects in a table" msgstr "Sakārtot atlasītos objektus tabulā" #. Layer -#: ../src/verbs.cpp:2504 +#: ../src/verbs.cpp:2559 msgid "_Add Layer..." msgstr "Pie_vienot slāni..." -#: ../src/verbs.cpp:2505 +#: ../src/verbs.cpp:2560 msgid "Create a new layer" msgstr "Izveidot jaunu slāni" -#: ../src/verbs.cpp:2506 +#: ../src/verbs.cpp:2561 msgid "Re_name Layer..." msgstr "Pārdēvēt slā_ni..." -#: ../src/verbs.cpp:2507 +#: ../src/verbs.cpp:2562 msgid "Rename the current layer" msgstr "Pārdēvēt pašreizējo slāni" -#: ../src/verbs.cpp:2508 +#: ../src/verbs.cpp:2563 msgid "Switch to Layer Abov_e" msgstr "Pārslēgties uz virsējo slāni" -#: ../src/verbs.cpp:2509 +#: ../src/verbs.cpp:2564 msgid "Switch to the layer above the current" msgstr "Pārslēgties uz slāni virs pašreizējā" -#: ../src/verbs.cpp:2510 +#: ../src/verbs.cpp:2565 msgid "Switch to Layer Belo_w" msgstr "Pārslēgties uz apakšējo slāni" -#: ../src/verbs.cpp:2511 +#: ../src/verbs.cpp:2566 msgid "Switch to the layer below the current" msgstr "Pārslēgties uz slāni zem pašreizējā" -#: ../src/verbs.cpp:2512 +#: ../src/verbs.cpp:2567 msgid "Move Selection to Layer Abo_ve" msgstr "Pārvietot atlasīto uz slāni _virs šī" -#: ../src/verbs.cpp:2513 +#: ../src/verbs.cpp:2568 msgid "Move selection to the layer above the current" msgstr "Pārvietot izvēlēto uz slāni virs pašreizējā" -#: ../src/verbs.cpp:2514 +#: ../src/verbs.cpp:2569 msgid "Move Selection to Layer Bel_ow" msgstr "Pārvietot atlasīto uz slāni _zem šī" -#: ../src/verbs.cpp:2515 +#: ../src/verbs.cpp:2570 msgid "Move selection to the layer below the current" msgstr "Pārvietot izvēlēto uz slāni zem pašreizējā" -#: ../src/verbs.cpp:2516 +#: ../src/verbs.cpp:2571 msgid "Move Selection to Layer..." msgstr "Pārvietot atlasīto uz slāni..." -#: ../src/verbs.cpp:2518 +#: ../src/verbs.cpp:2573 msgid "Layer to _Top" msgstr "Slāni uz _virspusi" -#: ../src/verbs.cpp:2519 +#: ../src/verbs.cpp:2574 msgid "Raise the current layer to the top" msgstr "Pacelt pašreizējo slāni virspusē" -#: ../src/verbs.cpp:2520 +#: ../src/verbs.cpp:2575 msgid "Layer to _Bottom" msgstr "Slāni uz a_pakšu" -#: ../src/verbs.cpp:2521 +#: ../src/verbs.cpp:2576 msgid "Lower the current layer to the bottom" msgstr "Nolaist pašreizējo slāni apakšā" -#: ../src/verbs.cpp:2522 +#: ../src/verbs.cpp:2577 msgid "_Raise Layer" msgstr "_Pacelt slāni" -#: ../src/verbs.cpp:2523 +#: ../src/verbs.cpp:2578 msgid "Raise the current layer" msgstr "Pacelt pašreizējo slāni" -#: ../src/verbs.cpp:2524 +#: ../src/verbs.cpp:2579 msgid "_Lower Layer" msgstr "No_laist slāni" -#: ../src/verbs.cpp:2525 +#: ../src/verbs.cpp:2580 msgid "Lower the current layer" msgstr "Nolaist pašreizējo slāni" -#: ../src/verbs.cpp:2526 +#: ../src/verbs.cpp:2581 msgid "D_uplicate Current Layer" msgstr "Dublēt pašreizējo slāni" -#: ../src/verbs.cpp:2527 +#: ../src/verbs.cpp:2582 msgid "Duplicate an existing layer" msgstr "Dublēt esošu slāni" -#: ../src/verbs.cpp:2528 +#: ../src/verbs.cpp:2583 msgid "_Delete Current Layer" msgstr "_Dzēst pašreizējo slāni" -#: ../src/verbs.cpp:2529 +#: ../src/verbs.cpp:2584 msgid "Delete the current layer" msgstr "Dzēst pašreizējo slāni" -#: ../src/verbs.cpp:2530 +#: ../src/verbs.cpp:2585 msgid "_Show/hide other layers" msgstr "_Rādīt/slēpt citus slāņus" -#: ../src/verbs.cpp:2531 +#: ../src/verbs.cpp:2586 msgid "Solo the current layer" msgstr "Tikai šo slāni" -#: ../src/verbs.cpp:2532 +#: ../src/verbs.cpp:2587 msgid "_Show all layers" msgstr "Rādīt vi_sus slāņus" -#: ../src/verbs.cpp:2533 +#: ../src/verbs.cpp:2588 msgid "Show all the layers" msgstr "Rādīt visus slāņus" -#: ../src/verbs.cpp:2534 +#: ../src/verbs.cpp:2589 msgid "_Hide all layers" msgstr "Slē_pt visus slāņus" -#: ../src/verbs.cpp:2535 +#: ../src/verbs.cpp:2590 msgid "Hide all the layers" msgstr "Slēpt visus slāņus" -#: ../src/verbs.cpp:2536 +#: ../src/verbs.cpp:2591 msgid "_Lock all layers" msgstr "S_lēgt visus slāņus" -#: ../src/verbs.cpp:2537 +#: ../src/verbs.cpp:2592 msgid "Lock all the layers" msgstr "Slēdz visus slāņus" -#: ../src/verbs.cpp:2538 +#: ../src/verbs.cpp:2593 msgid "Lock/Unlock _other layers" msgstr "Aizslēgt/atslēgt citus slāņus" -#: ../src/verbs.cpp:2539 +#: ../src/verbs.cpp:2594 msgid "Lock all the other layers" msgstr "Slēdz visus citus slāņus" -#: ../src/verbs.cpp:2540 +#: ../src/verbs.cpp:2595 msgid "_Unlock all layers" msgstr "Atslēgt visus slāņ_us" -#: ../src/verbs.cpp:2541 +#: ../src/verbs.cpp:2596 msgid "Unlock all the layers" msgstr "Atslēdz visus slāņus" -#: ../src/verbs.cpp:2542 +#: ../src/verbs.cpp:2597 msgid "_Lock/Unlock Current Layer" msgstr "Slē_gt/atslēgt pašreizējo slāni" -#: ../src/verbs.cpp:2543 +#: ../src/verbs.cpp:2598 msgid "Toggle lock on current layer" msgstr "Pārslēdz pašreizējā slāņa slēdzeni" -#: ../src/verbs.cpp:2544 +#: ../src/verbs.cpp:2599 msgid "_Show/hide Current Layer" msgstr "Paslēpt/rādīt pašreizējo slāni" -#: ../src/verbs.cpp:2545 +#: ../src/verbs.cpp:2600 msgid "Toggle visibility of current layer" msgstr "Pārslēdz pašreizējā slāņa redzamību" #. Object -#: ../src/verbs.cpp:2548 +#: ../src/verbs.cpp:2603 msgid "Rotate _90° CW" msgstr "Pagriezt _90° CW" #. This is shared between tooltips and statusbar, so they #. must use UTF-8, not HTML entities for special characters. -#: ../src/verbs.cpp:2551 +#: ../src/verbs.cpp:2606 msgid "Rotate selection 90° clockwise" msgstr "Pagriezt izvēlēto par 90° pulksteņrādītāja virzienā" -#: ../src/verbs.cpp:2552 +#: ../src/verbs.cpp:2607 msgid "Rotate 9_0° CCW" msgstr "Pagriezt 9_0° CCW" #. This is shared between tooltips and statusbar, so they #. must use UTF-8, not HTML entities for special characters. -#: ../src/verbs.cpp:2555 +#: ../src/verbs.cpp:2610 msgid "Rotate selection 90° counter-clockwise" msgstr "Pagriezt izvēlēto par 90° pretēji pulksteņrādītāja virzienam" -#: ../src/verbs.cpp:2556 +#: ../src/verbs.cpp:2611 msgid "Remove _Transformations" msgstr "Aizvāk_t pārveidojumus" -#: ../src/verbs.cpp:2557 +#: ../src/verbs.cpp:2612 msgid "Remove transformations from object" msgstr "Aizvākt pārveidojumus no objekta" -#: ../src/verbs.cpp:2558 +#: ../src/verbs.cpp:2613 msgid "_Object to Path" msgstr "_Objektu par ceļu" -#: ../src/verbs.cpp:2559 +#: ../src/verbs.cpp:2614 msgid "Convert selected object to path" msgstr "Pārvērst atlasīto objektu par ceļu" -#: ../src/verbs.cpp:2560 +#: ../src/verbs.cpp:2615 msgid "_Flow into Frame" msgstr "_Aizpildīt rāmi" -#: ../src/verbs.cpp:2561 +#: ../src/verbs.cpp:2616 msgid "Put text into a frame (path or shape), creating a flowed text linked to the frame object" msgstr "Ievietojiet tekstu rāmī (ceļā vai figūrā), izveidojot ar tekstu aizpildītu rāmja objektu" -#: ../src/verbs.cpp:2562 +#: ../src/verbs.cpp:2617 msgid "_Unflow" msgstr "Aizvākt teksta aizpildīj_umu" -#: ../src/verbs.cpp:2563 +#: ../src/verbs.cpp:2618 msgid "Remove text from frame (creates a single-line text object)" msgstr "Izņemt tekstu no rāmja (izveido vienas rindas teksta objektu)" -#: ../src/verbs.cpp:2564 +#: ../src/verbs.cpp:2619 msgid "_Convert to Text" msgstr "_Pārveidot par tekstu" -#: ../src/verbs.cpp:2565 +#: ../src/verbs.cpp:2620 msgid "Convert flowed text to regular text object (preserves appearance)" msgstr "Pārvērš teksta aizpildījumu par vienkāršu teksta objektu (saglabājot izskatu)" -#: ../src/verbs.cpp:2567 +#: ../src/verbs.cpp:2622 msgid "Flip _Horizontal" msgstr "Apmest horizontāli" -#: ../src/verbs.cpp:2567 +#: ../src/verbs.cpp:2622 msgid "Flip selected objects horizontally" msgstr "Apmest izvēlēto objektu horizontāli" -#: ../src/verbs.cpp:2570 +#: ../src/verbs.cpp:2625 msgid "Flip _Vertical" msgstr "Apmest vertikāli" -#: ../src/verbs.cpp:2570 +#: ../src/verbs.cpp:2625 msgid "Flip selected objects vertically" msgstr "Apmest izvēlēto objektu vertikāli" -#: ../src/verbs.cpp:2573 +#: ../src/verbs.cpp:2628 msgid "Apply mask to selection (using the topmost object as mask)" msgstr "Uzlieciet masku atlasītajam (izmantojot augšējo objektu kā masku)" -#: ../src/verbs.cpp:2575 +#: ../src/verbs.cpp:2630 msgid "Edit mask" msgstr "Labot masku" -#: ../src/verbs.cpp:2576 -#: ../src/verbs.cpp:2582 +#: ../src/verbs.cpp:2631 +#: ../src/verbs.cpp:2637 msgid "_Release" msgstr "At_laist" -#: ../src/verbs.cpp:2577 +#: ../src/verbs.cpp:2632 msgid "Remove mask from selection" msgstr "Noņemt maskas no atlasītā" -#: ../src/verbs.cpp:2579 +#: ../src/verbs.cpp:2634 msgid "Apply clipping path to selection (using the topmost object as clipping path)" msgstr "Pielietot atlasītajam izgriešanas ceļu (par izgriešanas ceļu izmantojot augšpusē esošo objektu)" -#: ../src/verbs.cpp:2581 +#: ../src/verbs.cpp:2636 msgid "Edit clipping path" msgstr "Labot izgriešanas ceļu" -#: ../src/verbs.cpp:2583 +#: ../src/verbs.cpp:2638 msgid "Remove clipping path from selection" msgstr "Aizvākt izgriešanas ceļu no atlasītā" #. Tools -#: ../src/verbs.cpp:2586 +#: ../src/verbs.cpp:2641 msgctxt "ContextVerb" msgid "Select" msgstr "Iezīmēt" -#: ../src/verbs.cpp:2587 +#: ../src/verbs.cpp:2642 msgid "Select and transform objects" msgstr "Atlasīt un pārveidot objektus" -#: ../src/verbs.cpp:2588 +#: ../src/verbs.cpp:2643 msgctxt "ContextVerb" msgid "Node Edit" msgstr "Labot mezglu" -#: ../src/verbs.cpp:2589 +#: ../src/verbs.cpp:2644 msgid "Edit paths by nodes" msgstr "Labot ceļus pa mezgliem" -#: ../src/verbs.cpp:2590 +#: ../src/verbs.cpp:2645 msgctxt "ContextVerb" msgid "Tweak" msgstr "Pieskaņot" -#: ../src/verbs.cpp:2591 +#: ../src/verbs.cpp:2646 msgid "Tweak objects by sculpting or painting" msgstr "Pieskaņot objektus veidojot vai krāsojot" -#: ../src/verbs.cpp:2592 +#: ../src/verbs.cpp:2647 msgctxt "ContextVerb" msgid "Spray" msgstr "Smidzināt" -#: ../src/verbs.cpp:2593 +#: ../src/verbs.cpp:2648 msgid "Spray objects by sculpting or painting" msgstr "Izsmidzināt objektus veidojot vai krāsojot" -#: ../src/verbs.cpp:2594 +#: ../src/verbs.cpp:2649 msgctxt "ContextVerb" msgid "Rectangle" msgstr "Taisnstūris" -#: ../src/verbs.cpp:2595 +#: ../src/verbs.cpp:2650 msgid "Create rectangles and squares" msgstr "Zīmēt taisnstūrus un kvadrātus" -#: ../src/verbs.cpp:2596 +#: ../src/verbs.cpp:2651 msgctxt "ContextVerb" msgid "3D Box" msgstr "3D paralēlskaldnis" -#: ../src/verbs.cpp:2597 +#: ../src/verbs.cpp:2652 msgid "Create 3D boxes" msgstr "Izveidot 3D paralēlskaldņus" -#: ../src/verbs.cpp:2598 +#: ../src/verbs.cpp:2653 msgctxt "ContextVerb" msgid "Ellipse" msgstr "Elipse" -#: ../src/verbs.cpp:2599 +#: ../src/verbs.cpp:2654 msgid "Create circles, ellipses, and arcs" msgstr "Izveidot riņķus, elipses un lokus" -#: ../src/verbs.cpp:2600 +#: ../src/verbs.cpp:2655 msgctxt "ContextVerb" msgid "Star" msgstr "Zvaigzne" -#: ../src/verbs.cpp:2601 +#: ../src/verbs.cpp:2656 msgid "Create stars and polygons" msgstr "Izveidot zvaigznes un daudzstūrus" -#: ../src/verbs.cpp:2602 +#: ../src/verbs.cpp:2657 msgctxt "ContextVerb" msgid "Spiral" msgstr "Spirāle" -#: ../src/verbs.cpp:2603 +#: ../src/verbs.cpp:2658 msgid "Create spirals" msgstr "Izveidot spirāles" -#: ../src/verbs.cpp:2604 +#: ../src/verbs.cpp:2659 msgctxt "ContextVerb" msgid "Pencil" msgstr "Zīmulis" -#: ../src/verbs.cpp:2605 +#: ../src/verbs.cpp:2660 msgid "Draw freehand lines" msgstr "Zīmēt brīvas rokas līnijas" -#: ../src/verbs.cpp:2606 +#: ../src/verbs.cpp:2661 msgctxt "ContextVerb" msgid "Pen" msgstr "Spalva" -#: ../src/verbs.cpp:2607 +#: ../src/verbs.cpp:2662 msgid "Draw Bezier curves and straight lines" msgstr "Zīmējiet Bezjē līknes un taisnas līnijas" -#: ../src/verbs.cpp:2608 +#: ../src/verbs.cpp:2663 msgctxt "ContextVerb" msgid "Calligraphy" msgstr "Kaligrāfija" -#: ../src/verbs.cpp:2609 +#: ../src/verbs.cpp:2664 msgid "Draw calligraphic or brush strokes" msgstr "Zīmējiet kaligrāfiskās vai otas līnijas" -#: ../src/verbs.cpp:2611 +#: ../src/verbs.cpp:2666 msgid "Create and edit text objects" msgstr "Izveidot un labot teksta objektus" -#: ../src/verbs.cpp:2612 +#: ../src/verbs.cpp:2667 msgctxt "ContextVerb" msgid "Gradient" msgstr "Krāsu pāreja" -#: ../src/verbs.cpp:2613 +#: ../src/verbs.cpp:2668 msgid "Create and edit gradients" msgstr "Izveidot un labot krāsu pārejas" -#: ../src/verbs.cpp:2614 +#: ../src/verbs.cpp:2669 msgctxt "ContextVerb" msgid "Mesh" msgstr "Tīkls" -#: ../src/verbs.cpp:2615 +#: ../src/verbs.cpp:2670 msgid "Create and edit meshes" msgstr "Izveidot un labot tīklus" -#: ../src/verbs.cpp:2616 +#: ../src/verbs.cpp:2671 msgctxt "ContextVerb" msgid "Zoom" msgstr "Tuvināt/tālināt" -#: ../src/verbs.cpp:2617 +#: ../src/verbs.cpp:2672 msgid "Zoom in or out" msgstr "Tuvināt vai tālināt" -#: ../src/verbs.cpp:2619 +#: ../src/verbs.cpp:2674 msgid "Measurement tool" msgstr "Mērinstruments" -#: ../src/verbs.cpp:2620 +#: ../src/verbs.cpp:2675 msgctxt "ContextVerb" msgid "Dropper" msgstr "Pipete" -#: ../src/verbs.cpp:2621 +#: ../src/verbs.cpp:2676 #: ../src/widgets/sp-color-notebook.cpp:411 msgid "Pick colors from image" msgstr "Izvēlēties krāsas no attēla" -#: ../src/verbs.cpp:2622 +#: ../src/verbs.cpp:2677 msgctxt "ContextVerb" msgid "Connector" msgstr "Savienotājs" -#: ../src/verbs.cpp:2623 +#: ../src/verbs.cpp:2678 msgid "Create diagram connectors" msgstr "Izveidot diagrammu savienotājus" -#: ../src/verbs.cpp:2624 +#: ../src/verbs.cpp:2679 msgctxt "ContextVerb" msgid "Paint Bucket" msgstr "Krāsas spainis" -#: ../src/verbs.cpp:2625 +#: ../src/verbs.cpp:2680 msgid "Fill bounded areas" msgstr "Aizpildīt noslēgtos apgabalus" -#: ../src/verbs.cpp:2626 +#: ../src/verbs.cpp:2681 msgctxt "ContextVerb" msgid "LPE Edit" msgstr "LPE labošana" -#: ../src/verbs.cpp:2627 +#: ../src/verbs.cpp:2682 msgid "Edit Path Effect parameters" msgstr "Labot ceļa efekta parametrus" -#: ../src/verbs.cpp:2628 +#: ../src/verbs.cpp:2683 msgctxt "ContextVerb" msgid "Eraser" msgstr "Dzēšgumija" -#: ../src/verbs.cpp:2629 +#: ../src/verbs.cpp:2684 msgid "Erase existing paths" msgstr "Dzēst pastāvošos ceļus" -#: ../src/verbs.cpp:2630 +#: ../src/verbs.cpp:2685 msgctxt "ContextVerb" msgid "LPE Tool" msgstr "LPE rīks" -#: ../src/verbs.cpp:2631 +#: ../src/verbs.cpp:2686 msgid "Do geometric constructions" msgstr "Izveidot ģeometriskas figūras" #. Tool prefs -#: ../src/verbs.cpp:2633 +#: ../src/verbs.cpp:2688 msgid "Selector Preferences" msgstr "Atlasītāja iestatījumi" -#: ../src/verbs.cpp:2634 +#: ../src/verbs.cpp:2689 msgid "Open Preferences for the Selector tool" msgstr "Atvērt iestatījumus atlasīšanas rīkam" -#: ../src/verbs.cpp:2635 +#: ../src/verbs.cpp:2690 msgid "Node Tool Preferences" msgstr "Mezglu rīka iestatījumi" -#: ../src/verbs.cpp:2636 +#: ../src/verbs.cpp:2691 msgid "Open Preferences for the Node tool" msgstr "Atvērt iestatījumus mezglu rīkam" -#: ../src/verbs.cpp:2637 +#: ../src/verbs.cpp:2692 msgid "Tweak Tool Preferences" msgstr "Pieskaņošanas rīka iestatījumi" -#: ../src/verbs.cpp:2638 +#: ../src/verbs.cpp:2693 msgid "Open Preferences for the Tweak tool" msgstr "Atvērt iestatījumus pieskaņošanas rīkam" -#: ../src/verbs.cpp:2639 +#: ../src/verbs.cpp:2694 msgid "Spray Tool Preferences" msgstr "Smidzinātāja iestatījumi" -#: ../src/verbs.cpp:2640 +#: ../src/verbs.cpp:2695 msgid "Open Preferences for the Spray tool" msgstr "Atvērt iestatījumus smidzināšanas rīkam" -#: ../src/verbs.cpp:2641 +#: ../src/verbs.cpp:2696 msgid "Rectangle Preferences" msgstr "Taisnstūra iestatījumi" -#: ../src/verbs.cpp:2642 +#: ../src/verbs.cpp:2697 msgid "Open Preferences for the Rectangle tool" msgstr "Atvērt iestatījumus taisnstūru rīkam" -#: ../src/verbs.cpp:2643 +#: ../src/verbs.cpp:2698 msgid "3D Box Preferences" msgstr "3D paralēlskaldņa iestatījumi" -#: ../src/verbs.cpp:2644 +#: ../src/verbs.cpp:2699 msgid "Open Preferences for the 3D Box tool" msgstr "Atvērt iestatījumus 3D paralēlskaldņa rīkam" -#: ../src/verbs.cpp:2645 +#: ../src/verbs.cpp:2700 msgid "Ellipse Preferences" msgstr "Elipses iestatījumi" -#: ../src/verbs.cpp:2646 +#: ../src/verbs.cpp:2701 msgid "Open Preferences for the Ellipse tool" msgstr "Atvērt iestatījumus elipses rīkam" -#: ../src/verbs.cpp:2647 +#: ../src/verbs.cpp:2702 msgid "Star Preferences" msgstr "Zvaigznes iestatījumi" -#: ../src/verbs.cpp:2648 +#: ../src/verbs.cpp:2703 msgid "Open Preferences for the Star tool" msgstr "Atvērt iestatījumus zvaigznes rīkam" -#: ../src/verbs.cpp:2649 +#: ../src/verbs.cpp:2704 msgid "Spiral Preferences" msgstr "Spirāles iestatījumi" -#: ../src/verbs.cpp:2650 +#: ../src/verbs.cpp:2705 msgid "Open Preferences for the Spiral tool" msgstr "Atvērt iestatījumus spirāles rīkam" -#: ../src/verbs.cpp:2651 +#: ../src/verbs.cpp:2706 msgid "Pencil Preferences" msgstr "Zīmuļa iestatījumi" -#: ../src/verbs.cpp:2652 +#: ../src/verbs.cpp:2707 msgid "Open Preferences for the Pencil tool" msgstr "Atvērt iestatījumus zīmuļa rīkam" -#: ../src/verbs.cpp:2653 +#: ../src/verbs.cpp:2708 msgid "Pen Preferences" msgstr "Spalvas iestatījumi" -#: ../src/verbs.cpp:2654 +#: ../src/verbs.cpp:2709 msgid "Open Preferences for the Pen tool" msgstr "Atvērt iestatījumus spalvas rīkam" -#: ../src/verbs.cpp:2655 +#: ../src/verbs.cpp:2710 msgid "Calligraphic Preferences" msgstr "Kaligrāfijas iestatījumi" -#: ../src/verbs.cpp:2656 +#: ../src/verbs.cpp:2711 msgid "Open Preferences for the Calligraphy tool" msgstr "Atvērt iestatījumus kaligrāfijas rīkam" -#: ../src/verbs.cpp:2657 +#: ../src/verbs.cpp:2712 msgid "Text Preferences" msgstr "Teksta iestatījumi" -#: ../src/verbs.cpp:2658 +#: ../src/verbs.cpp:2713 msgid "Open Preferences for the Text tool" msgstr "Atvērt iestatījumus teksta rīkam" -#: ../src/verbs.cpp:2659 +#: ../src/verbs.cpp:2714 msgid "Gradient Preferences" msgstr "Krāsu pārejas iestatījumi" -#: ../src/verbs.cpp:2660 +#: ../src/verbs.cpp:2715 msgid "Open Preferences for the Gradient tool" msgstr "Atvērt iestatījumus krāsu pārejas rīkam " -#: ../src/verbs.cpp:2661 +#: ../src/verbs.cpp:2716 msgid "Mesh Preferences" msgstr "Tīkla iestatījumi" -#: ../src/verbs.cpp:2662 +#: ../src/verbs.cpp:2717 msgid "Open Preferences for the Mesh tool" msgstr "Atvērt iestatījumus režģtīkla rīkam" -#: ../src/verbs.cpp:2663 +#: ../src/verbs.cpp:2718 msgid "Zoom Preferences" msgstr "Tālummaiņas iestatījumi" -#: ../src/verbs.cpp:2664 +#: ../src/verbs.cpp:2719 msgid "Open Preferences for the Zoom tool" msgstr "Atvērt iestatījumus tālummaiņas rīkam" -#: ../src/verbs.cpp:2665 +#: ../src/verbs.cpp:2720 msgid "Measure Preferences" msgstr "Mērīšanas iestatījumi" -#: ../src/verbs.cpp:2666 +#: ../src/verbs.cpp:2721 msgid "Open Preferences for the Measure tool" msgstr "Atvērt iestatījumus mērīšanas rīkam" -#: ../src/verbs.cpp:2667 +#: ../src/verbs.cpp:2722 msgid "Dropper Preferences" msgstr "Pipetes iestatījumi" -#: ../src/verbs.cpp:2668 +#: ../src/verbs.cpp:2723 msgid "Open Preferences for the Dropper tool" msgstr "Atvērt pipetes rīka iestatījumus" -#: ../src/verbs.cpp:2669 +#: ../src/verbs.cpp:2724 msgid "Connector Preferences" msgstr "Savienotāja iestatījumi" -#: ../src/verbs.cpp:2670 +#: ../src/verbs.cpp:2725 msgid "Open Preferences for the Connector tool" msgstr "Atvērt iestatījumus savienotāju rīkam" -#: ../src/verbs.cpp:2671 +#: ../src/verbs.cpp:2726 msgid "Paint Bucket Preferences" msgstr "Krāsas spaiņa iestatījumi" -#: ../src/verbs.cpp:2672 +#: ../src/verbs.cpp:2727 msgid "Open Preferences for the Paint Bucket tool" msgstr "Atvērt iestatījumus kāras spaiņa rīkam" -#: ../src/verbs.cpp:2673 +#: ../src/verbs.cpp:2728 msgid "Eraser Preferences" msgstr "Dzēšgumijas iestatījumi" -#: ../src/verbs.cpp:2674 +#: ../src/verbs.cpp:2729 msgid "Open Preferences for the Eraser tool" msgstr "Atvērt iestatījumus dzēšgumijas rīkam" -#: ../src/verbs.cpp:2675 +#: ../src/verbs.cpp:2730 msgid "LPE Tool Preferences" msgstr "LPE rīka iestatījumi" -#: ../src/verbs.cpp:2676 +#: ../src/verbs.cpp:2731 msgid "Open Preferences for the LPETool tool" msgstr "Atvērt iestatījumus LPE rīkam" #. Zoom/View -#: ../src/verbs.cpp:2678 +#: ../src/verbs.cpp:2733 msgid "Zoom In" msgstr "Tuvināt" -#: ../src/verbs.cpp:2678 +#: ../src/verbs.cpp:2733 msgid "Zoom in" msgstr "Tuvināt" -#: ../src/verbs.cpp:2679 +#: ../src/verbs.cpp:2734 msgid "Zoom Out" msgstr "Tālināt" -#: ../src/verbs.cpp:2679 +#: ../src/verbs.cpp:2734 msgid "Zoom out" msgstr "Tālināt" -#: ../src/verbs.cpp:2680 +#: ../src/verbs.cpp:2735 msgid "_Rulers" msgstr "_Lineāli" -#: ../src/verbs.cpp:2680 +#: ../src/verbs.cpp:2735 msgid "Show or hide the canvas rulers" msgstr "Parādīt vai paslēpt audekla ritjoslas" -#: ../src/verbs.cpp:2681 +#: ../src/verbs.cpp:2736 msgid "Scroll_bars" msgstr "Rit_joslas" -#: ../src/verbs.cpp:2681 +#: ../src/verbs.cpp:2736 msgid "Show or hide the canvas scrollbars" msgstr "Parādīt vai paslēpt audekla ritjoslas" -#: ../src/verbs.cpp:2682 +#: ../src/verbs.cpp:2737 msgid "_Grid" msgstr "_Tīkls" -#: ../src/verbs.cpp:2682 +#: ../src/verbs.cpp:2737 msgid "Show or hide the grid" msgstr "Rādīt vai slēpt tīklu." -#: ../src/verbs.cpp:2683 +#: ../src/verbs.cpp:2738 msgid "G_uides" msgstr "Palīglīnijas" -#: ../src/verbs.cpp:2683 +#: ../src/verbs.cpp:2738 msgid "Show or hide guides (drag from a ruler to create a guide)" msgstr "Rādīt vai slēpt palīglīnijas (lai izveidotu palīglīniju, velciet no lineāla)" -#: ../src/verbs.cpp:2684 +#: ../src/verbs.cpp:2739 msgid "Enable snapping" msgstr "Ieslēgt piesaistīšanu" -#: ../src/verbs.cpp:2685 +#: ../src/verbs.cpp:2740 msgid "_Commands Bar" msgstr "_Komandu josla" -#: ../src/verbs.cpp:2685 +#: ../src/verbs.cpp:2740 msgid "Show or hide the Commands bar (under the menu)" msgstr "Rādīt vai slēpt komandu joslu (zem izvēlnes)" -#: ../src/verbs.cpp:2686 +#: ../src/verbs.cpp:2741 msgid "Sn_ap Controls Bar" msgstr "Pies_aistes vadīklu josla" -#: ../src/verbs.cpp:2686 +#: ../src/verbs.cpp:2741 msgid "Show or hide the snapping controls" msgstr "Rādīt vai slēpt piesaistes vadīklu joslu" -#: ../src/verbs.cpp:2687 +#: ../src/verbs.cpp:2742 msgid "T_ool Controls Bar" msgstr "Rīku vadīklu j_osla" -#: ../src/verbs.cpp:2687 +#: ../src/verbs.cpp:2742 msgid "Show or hide the Tool Controls bar" msgstr "Rādīt vai slēpt rīku vadīklu joslu" -#: ../src/verbs.cpp:2688 +#: ../src/verbs.cpp:2743 msgid "_Toolbox" msgstr "_Rīkjosla" -#: ../src/verbs.cpp:2688 +#: ../src/verbs.cpp:2743 msgid "Show or hide the main toolbox (on the left)" msgstr "Rādīt vai slēpt galveno rīku kasti (kreisajā malā)" -#: ../src/verbs.cpp:2689 +#: ../src/verbs.cpp:2744 msgid "_Palette" msgstr "_Palete" -#: ../src/verbs.cpp:2689 +#: ../src/verbs.cpp:2744 msgid "Show or hide the color palette" msgstr "Rādīt vai slēpt krāsu paleti" -#: ../src/verbs.cpp:2690 +#: ../src/verbs.cpp:2745 msgid "_Statusbar" msgstr "_Statusa josla" -#: ../src/verbs.cpp:2690 +#: ../src/verbs.cpp:2745 msgid "Show or hide the statusbar (at the bottom of the window)" msgstr "Rādīt vai slēpt stāvokļa joslu (loga apakšā)" -#: ../src/verbs.cpp:2691 +#: ../src/verbs.cpp:2746 msgid "Nex_t Zoom" msgstr "_Nākošā tālummaiņa" -#: ../src/verbs.cpp:2691 +#: ../src/verbs.cpp:2746 msgid "Next zoom (from the history of zooms)" msgstr "Nākošā tālummaiņa (no tālummaiņas vēstures)" -#: ../src/verbs.cpp:2693 +#: ../src/verbs.cpp:2748 msgid "Pre_vious Zoom" msgstr "Ie_priekšējā tālummaiņa" -#: ../src/verbs.cpp:2693 +#: ../src/verbs.cpp:2748 msgid "Previous zoom (from the history of zooms)" msgstr "Iepriekšējā tālummaiņa (no tālummaiņas vēstures)" -#: ../src/verbs.cpp:2695 +#: ../src/verbs.cpp:2750 msgid "Zoom 1:_1" msgstr "Tālummaiņa 1:_1" -#: ../src/verbs.cpp:2695 +#: ../src/verbs.cpp:2750 msgid "Zoom to 1:1" msgstr "Tālummainīt 1:1" -#: ../src/verbs.cpp:2697 +#: ../src/verbs.cpp:2752 msgid "Zoom 1:_2" msgstr "Tālummaiņa 1:_2" -#: ../src/verbs.cpp:2697 +#: ../src/verbs.cpp:2752 msgid "Zoom to 1:2" msgstr "Tālummainīt 1:2" -#: ../src/verbs.cpp:2699 +#: ../src/verbs.cpp:2754 msgid "_Zoom 2:1" msgstr "_Tālummaiņa 2:1" -#: ../src/verbs.cpp:2699 +#: ../src/verbs.cpp:2754 msgid "Zoom to 2:1" msgstr "Tālummainīt 2:1" -#: ../src/verbs.cpp:2702 +#: ../src/verbs.cpp:2757 msgid "_Fullscreen" msgstr "_Pilnekrāna" -#: ../src/verbs.cpp:2702 -#: ../src/verbs.cpp:2704 +#: ../src/verbs.cpp:2757 +#: ../src/verbs.cpp:2759 msgid "Stretch this document window to full screen" msgstr "Izplest šī dokumenta logu pa visu ekrānu" -#: ../src/verbs.cpp:2704 +#: ../src/verbs.cpp:2759 msgid "Fullscreen & Focus Mode" msgstr "Pilnekrāna un fokusēšanas režīms" -#: ../src/verbs.cpp:2707 +#: ../src/verbs.cpp:2762 msgid "Toggle _Focus Mode" msgstr "Pārslēgt fokusēšanas režīmu" -#: ../src/verbs.cpp:2707 +#: ../src/verbs.cpp:2762 msgid "Remove excess toolbars to focus on drawing" msgstr "Aizvākt liekās rīkjoslas, lai atbrīvotu lielāku laukumu zīmējumam" -#: ../src/verbs.cpp:2709 +#: ../src/verbs.cpp:2764 msgid "Duplic_ate Window" msgstr "Dublēt logu" -#: ../src/verbs.cpp:2709 +#: ../src/verbs.cpp:2764 msgid "Open a new window with the same document" msgstr "Atvērt šo pašu dokumentu jaunā logā" -#: ../src/verbs.cpp:2711 +#: ../src/verbs.cpp:2766 msgid "_New View Preview" msgstr "Jau_na skata priekšskatījums" -#: ../src/verbs.cpp:2712 +#: ../src/verbs.cpp:2767 msgid "New View Preview" msgstr "Jauna skata priekšskatījums" #. "view_new_preview" -#: ../src/verbs.cpp:2714 -#: ../src/verbs.cpp:2722 +#: ../src/verbs.cpp:2769 +#: ../src/verbs.cpp:2777 msgid "_Normal" msgstr "_Normāls" -#: ../src/verbs.cpp:2715 +#: ../src/verbs.cpp:2770 msgid "Switch to normal display mode" msgstr "Pārslēgt uz normālu ekrāna režīmu" -#: ../src/verbs.cpp:2716 +#: ../src/verbs.cpp:2771 msgid "No _Filters" msgstr "Nav _filtru" -#: ../src/verbs.cpp:2717 +#: ../src/verbs.cpp:2772 msgid "Switch to normal display without filters" msgstr "Pārslēgt uz normālu ekrānu bez filtriem" -#: ../src/verbs.cpp:2718 +#: ../src/verbs.cpp:2773 msgid "_Outline" msgstr "Ār_līnija" -#: ../src/verbs.cpp:2719 +#: ../src/verbs.cpp:2774 msgid "Switch to outline (wireframe) display mode" msgstr "Pārslēgt uz aprišu (karkasa) ekrāna režīmu" #. new ZoomVerb(SP_VERB_VIEW_COLOR_MODE_PRINT_COLORS_PREVIEW, "ViewColorModePrintColorsPreview", N_("_Print Colors Preview"), #. N_("Switch to print colors preview mode"), NULL), -#: ../src/verbs.cpp:2720 -#: ../src/verbs.cpp:2728 +#: ../src/verbs.cpp:2775 +#: ../src/verbs.cpp:2783 msgid "_Toggle" msgstr "Pārslēg_t" -#: ../src/verbs.cpp:2721 +#: ../src/verbs.cpp:2776 msgid "Toggle between normal and outline display modes" msgstr "Pārslēgties starp parasto un aprišu ekrāna režīmu" -#: ../src/verbs.cpp:2723 +#: ../src/verbs.cpp:2778 msgid "Switch to normal color display mode" msgstr "Pārslēgt uz normālu krāsu ekrāna režīmu" -#: ../src/verbs.cpp:2724 +#: ../src/verbs.cpp:2779 msgid "_Grayscale" msgstr "_Pelēktoņu" -#: ../src/verbs.cpp:2725 +#: ../src/verbs.cpp:2780 msgid "Switch to grayscale display mode" msgstr "Pārslēgt uz pelēktoņu ekrāna režīmu" -#: ../src/verbs.cpp:2729 +#: ../src/verbs.cpp:2784 msgid "Toggle between normal and grayscale color display modes" msgstr "Pārslēgt starp parasto un pelēktoņu ekrāna režīmu" -#: ../src/verbs.cpp:2731 +#: ../src/verbs.cpp:2786 msgid "Color-managed view" msgstr "Skats ar krāsu vadību" -#: ../src/verbs.cpp:2732 +#: ../src/verbs.cpp:2787 msgid "Toggle color-managed display for this document window" msgstr "Ieslēgt ekrāna krāsu vadību šī dokumenta logam" -#: ../src/verbs.cpp:2734 +#: ../src/verbs.cpp:2789 msgid "Ico_n Preview..." msgstr "Ikonu priekšskatījums..." -#: ../src/verbs.cpp:2735 +#: ../src/verbs.cpp:2790 msgid "Open a window to preview objects at different icon resolutions" msgstr "Atveriet logu, lai priekšskatītu objektus atšķirīgā ikonu izšķirtspējā" -#: ../src/verbs.cpp:2737 +#: ../src/verbs.cpp:2792 msgid "Zoom to fit page in window" msgstr "Tālummainīt, lai Ietilpināt lapu logā" -#: ../src/verbs.cpp:2738 +#: ../src/verbs.cpp:2793 msgid "Page _Width" msgstr "Lapas _platums" -#: ../src/verbs.cpp:2739 +#: ../src/verbs.cpp:2794 msgid "Zoom to fit page width in window" msgstr "Tālummainīt, lai ietilpinātu lapu logā tās pilnā platumā." -#: ../src/verbs.cpp:2741 +#: ../src/verbs.cpp:2796 msgid "Zoom to fit drawing in window" msgstr "Tālummainīt, lai Ietilpinātu zīmējumu logā" -#: ../src/verbs.cpp:2743 +#: ../src/verbs.cpp:2798 msgid "Zoom to fit selection in window" msgstr "Tālummainīt, lai ietilpinātu atlasīto logā" #. Dialogs -#: ../src/verbs.cpp:2746 +#: ../src/verbs.cpp:2801 msgid "P_references..." msgstr "Iestatījumi..." -#: ../src/verbs.cpp:2747 +#: ../src/verbs.cpp:2802 msgid "Edit global Inkscape preferences" msgstr "Labot globālos Inkscape iestatījumus" -#: ../src/verbs.cpp:2748 +#: ../src/verbs.cpp:2803 msgid "_Document Properties..." msgstr "_Dokumenta īpašības..." -#: ../src/verbs.cpp:2749 +#: ../src/verbs.cpp:2804 msgid "Edit properties of this document (to be saved with the document)" msgstr "Labot šī dokumenta īpašības (tiks saglabātas kopā ar dokumentu)" -#: ../src/verbs.cpp:2750 +#: ../src/verbs.cpp:2805 msgid "Document _Metadata..." msgstr "Dokumenta _metadati..." -#: ../src/verbs.cpp:2751 +#: ../src/verbs.cpp:2806 msgid "Edit document metadata (to be saved with the document)" msgstr "Labot šī dokumenta matadatus (tiks saglabāti kopā ar dokumentu)" -#: ../src/verbs.cpp:2753 +#: ../src/verbs.cpp:2808 msgid "Edit objects' colors, gradients, arrowheads, and other fill and stroke properties..." msgstr "Labojiet objekta krāsas, krāsu pārejas, bultu galus un citas aizpildījuma un apmales īpašības..." -#: ../src/verbs.cpp:2754 +#: ../src/verbs.cpp:2809 msgid "Gl_yphs..." msgstr "Glifi..." -#: ../src/verbs.cpp:2755 +#: ../src/verbs.cpp:2810 msgid "Select characters from a glyphs palette" msgstr "Izvēlieties simbolus no glifu paletes" #. TRANSLATORS: "Swatches" means: color samples -#: ../src/verbs.cpp:2757 +#: ../src/verbs.cpp:2812 msgid "S_watches..." msgstr "Krāsu paraugi..." -#: ../src/verbs.cpp:2758 +#: ../src/verbs.cpp:2813 msgid "Select colors from a swatches palette" msgstr "Izvēlieties krāsas no krāsu paraugu paletes" -#: ../src/verbs.cpp:2759 +#: ../src/verbs.cpp:2814 msgid "S_ymbols..." msgstr "S_imboli..." -#: ../src/verbs.cpp:2760 +#: ../src/verbs.cpp:2815 msgid "Select symbol from a symbols palette" msgstr "Izvēlieties simbolu no simbolu paletes" -#: ../src/verbs.cpp:2761 +#: ../src/verbs.cpp:2816 msgid "Transfor_m..." msgstr "Pārveidot..." -#: ../src/verbs.cpp:2762 +#: ../src/verbs.cpp:2817 msgid "Precisely control objects' transformations" msgstr "Precīzi kontrolēt objekta pārveidojumus" -#: ../src/verbs.cpp:2763 +#: ../src/verbs.cpp:2818 msgid "_Align and Distribute..." msgstr "Lī_dzināt un izkliedēt..." -#: ../src/verbs.cpp:2764 +#: ../src/verbs.cpp:2819 msgid "Align and distribute objects" msgstr "Līdzināt un izkliedēt objektus" -#: ../src/verbs.cpp:2765 +#: ../src/verbs.cpp:2820 msgid "_Spray options..." msgstr "_Smidzināšanas iestatījumi..." -#: ../src/verbs.cpp:2766 +#: ../src/verbs.cpp:2821 msgid "Some options for the spray" msgstr "Daži smidzināšanas iestaījumi" -#: ../src/verbs.cpp:2767 +#: ../src/verbs.cpp:2822 msgid "Undo _History..." msgstr "Atsaukumu _vēsture..." -#: ../src/verbs.cpp:2768 +#: ../src/verbs.cpp:2823 msgid "Undo History" msgstr "Atsaukumu vēsture" -#: ../src/verbs.cpp:2770 +#: ../src/verbs.cpp:2825 msgid "View and select font family, font size and other text properties" msgstr "Aplūkojiet un izvēlieties fontu saimi, fonta izmēru un citas teksta īpašības" -#: ../src/verbs.cpp:2771 +#: ../src/verbs.cpp:2826 msgid "_XML Editor..." msgstr "XML redaktors..." -#: ../src/verbs.cpp:2772 +#: ../src/verbs.cpp:2827 msgid "View and edit the XML tree of the document" msgstr "Aplūkot un labot dokumenta XML koku" -#: ../src/verbs.cpp:2773 +#: ../src/verbs.cpp:2828 msgid "_Find/Replace..." msgstr "_Meklēt/aizvietot..." -#: ../src/verbs.cpp:2774 +#: ../src/verbs.cpp:2829 msgid "Find objects in document" msgstr "Meklēt objektus dokumentā " -#: ../src/verbs.cpp:2775 +#: ../src/verbs.cpp:2830 msgid "Find and _Replace Text..." msgstr "Meklēt un aizvietot tekstu..." -#: ../src/verbs.cpp:2776 +#: ../src/verbs.cpp:2831 msgid "Find and replace text in document" msgstr "Meklēt un aizvietot tekstu" -#: ../src/verbs.cpp:2778 +#: ../src/verbs.cpp:2833 msgid "Check spelling of text in document" msgstr "Pārbaudīt teksta pareizrakstību dokumentā" -#: ../src/verbs.cpp:2779 +#: ../src/verbs.cpp:2834 msgid "_Messages..." msgstr "_Vēstules..." -#: ../src/verbs.cpp:2780 +#: ../src/verbs.cpp:2835 msgid "View debug messages" msgstr "Skatīt atkļūdošanas paziņojumus" -#: ../src/verbs.cpp:2781 -msgid "S_cripts..." -msgstr "S_kripti..." - -#: ../src/verbs.cpp:2782 -msgid "Run scripts" -msgstr "Palaist skriptus" - -#: ../src/verbs.cpp:2783 +#: ../src/verbs.cpp:2836 msgid "Show/Hide D_ialogs" msgstr "Rādīt/slēpt dialogus" -#: ../src/verbs.cpp:2784 +#: ../src/verbs.cpp:2837 msgid "Show or hide all open dialogs" msgstr "Rādīt vai paslēpt visus atvērtos dialogus" -#: ../src/verbs.cpp:2785 +#: ../src/verbs.cpp:2838 msgid "Create Tiled Clones..." msgstr "Izveidot klonu rakstu..." -#: ../src/verbs.cpp:2786 +#: ../src/verbs.cpp:2839 msgid "Create multiple clones of selected object, arranging them into a pattern or scattering" msgstr "Izveidot vairākus objekta klonus, izkārtojot tos rakstā (faktūrā) vai izkliedējot" -#: ../src/verbs.cpp:2787 +#: ../src/verbs.cpp:2840 msgid "_Object attributes..." msgstr "_Objekta atribūti..." -#: ../src/verbs.cpp:2788 +#: ../src/verbs.cpp:2841 msgid "Edit the object attributes..." msgstr "Labot objekta atribūtus..." -#: ../src/verbs.cpp:2790 +#: ../src/verbs.cpp:2843 msgid "Edit the ID, locked and visible status, and other object properties" msgstr "Labojiet ID, slēgšanas un redzamības stāvokli un citas objekta īpašības" -#: ../src/verbs.cpp:2791 +#: ../src/verbs.cpp:2844 msgid "_Input Devices..." msgstr "_Ievadierīces..." -#: ../src/verbs.cpp:2792 +#: ../src/verbs.cpp:2845 msgid "Configure extended input devices, such as a graphics tablet" msgstr "Konfigurējiet paplašināto iespēju ievades ierīces, piem. grafiskās planšetes" -#: ../src/verbs.cpp:2793 +#: ../src/verbs.cpp:2846 msgid "_Extensions..." msgstr "_Paplašinājumi..." -#: ../src/verbs.cpp:2794 +#: ../src/verbs.cpp:2847 msgid "Query information about extensions" msgstr "Vaicājuma informācija par paplašinājumiem" -#: ../src/verbs.cpp:2795 +#: ../src/verbs.cpp:2848 msgid "Layer_s..." msgstr "_Slāņi..." -#: ../src/verbs.cpp:2796 +#: ../src/verbs.cpp:2849 msgid "View Layers" msgstr "Skatīt slāņus" -#: ../src/verbs.cpp:2797 +#: ../src/verbs.cpp:2850 msgid "Path E_ffects ..." msgstr "Ceļa e_fekti..." -#: ../src/verbs.cpp:2798 +#: ../src/verbs.cpp:2851 msgid "Manage, edit, and apply path effects" msgstr "Vadīt, labot un pielietot ceļa efektus" -#: ../src/verbs.cpp:2799 +#: ../src/verbs.cpp:2852 msgid "Filter _Editor..." msgstr "Filtru r_edaktors" -#: ../src/verbs.cpp:2800 +#: ../src/verbs.cpp:2853 msgid "Manage, edit, and apply SVG filters" msgstr "Vadīt, labot un pielietot SVG filtrus" -#: ../src/verbs.cpp:2801 +#: ../src/verbs.cpp:2854 msgid "SVG Font Editor..." msgstr "SVG fontu redaktors" -#: ../src/verbs.cpp:2802 +#: ../src/verbs.cpp:2855 msgid "Edit SVG fonts" msgstr "Labot SVG fontus" -#: ../src/verbs.cpp:2803 +#: ../src/verbs.cpp:2856 msgid "Print Colors..." msgstr "Drukāt krāsas..." -#: ../src/verbs.cpp:2804 +#: ../src/verbs.cpp:2857 msgid "Select which color separations to render in Print Colors Preview rendermode" msgstr "Izvēlieties, kuru krāsu dalījumus renderēt Krāsu drukas priekšskatījuma renderēšanas režīmā" -#: ../src/verbs.cpp:2805 +#: ../src/verbs.cpp:2858 msgid "_Export PNG Image..." msgstr "_Eksportēt PNG attēlu..." -#: ../src/verbs.cpp:2806 +#: ../src/verbs.cpp:2859 msgid "Export this document or a selection as a PNG image" msgstr "Eksportēt šo dokumentu vai atlasīto kā PNG attēlu" #. Help -#: ../src/verbs.cpp:2808 +#: ../src/verbs.cpp:2861 msgid "About E_xtensions" msgstr "Par _paplašinājumiem" -#: ../src/verbs.cpp:2809 +#: ../src/verbs.cpp:2862 msgid "Information on Inkscape extensions" msgstr "Informācija par Inkscape paplašinājumiem" -#: ../src/verbs.cpp:2810 +#: ../src/verbs.cpp:2863 msgid "About _Memory" msgstr "Par at_miņu" -#: ../src/verbs.cpp:2811 +#: ../src/verbs.cpp:2864 msgid "Memory usage information" msgstr "Atmiņas izmantošanas informācija" -#: ../src/verbs.cpp:2812 +#: ../src/verbs.cpp:2865 msgid "_About Inkscape" msgstr "P_ar Inkscape" -#: ../src/verbs.cpp:2813 +#: ../src/verbs.cpp:2866 msgid "Inkscape version, authors, license" msgstr "Inkscape versija, autori, licence" #. new HelpVerb(SP_VERB_SHOW_LICENSE, "ShowLicense", N_("_License"), #. N_("Distribution terms"), /*"show_license"*/"inkscape_options"), #. Tutorials -#: ../src/verbs.cpp:2818 +#: ../src/verbs.cpp:2871 msgid "Inkscape: _Basic" msgstr "Inkscape: pamati" -#: ../src/verbs.cpp:2819 +#: ../src/verbs.cpp:2872 msgid "Getting started with Inkscape" msgstr "Sākt darbu ar Inkscape" #. "tutorial_basic" -#: ../src/verbs.cpp:2820 +#: ../src/verbs.cpp:2873 msgid "Inkscape: _Shapes" msgstr "Inkscape: figūra_s" -#: ../src/verbs.cpp:2821 +#: ../src/verbs.cpp:2874 msgid "Using shape tools to create and edit shapes" msgstr "Figūru rīku izmantošana figūru izveidošanai un labošanai" -#: ../src/verbs.cpp:2822 +#: ../src/verbs.cpp:2875 msgid "Inkscape: _Advanced" msgstr "Inkscape: Padziļināti" -#: ../src/verbs.cpp:2823 +#: ../src/verbs.cpp:2876 msgid "Advanced Inkscape topics" msgstr "Padziļinātie Inkscape temati" #. "tutorial_advanced" #. TRANSLATORS: "to trace" means "to convert a bitmap to vector graphics" (to vectorize) -#: ../src/verbs.cpp:2825 +#: ../src/verbs.cpp:2878 msgid "Inkscape: T_racing" msgstr "Inkscape: vekto_rizēšana" -#: ../src/verbs.cpp:2826 +#: ../src/verbs.cpp:2879 msgid "Using bitmap tracing" msgstr "Izmanto bitkartes vektorizēšanu" #. "tutorial_tracing" -#: ../src/verbs.cpp:2827 +#: ../src/verbs.cpp:2880 msgid "Inkscape: _Calligraphy" msgstr "Inkscape: kaligrāfija" -#: ../src/verbs.cpp:2828 +#: ../src/verbs.cpp:2881 msgid "Using the Calligraphy pen tool" msgstr "Kaligrāfiskās spalvas lietošana" -#: ../src/verbs.cpp:2829 +#: ../src/verbs.cpp:2882 msgid "Inkscape: _Interpolate" msgstr "Inkscape: _interpolēt" -#: ../src/verbs.cpp:2830 +#: ../src/verbs.cpp:2883 msgid "Using the interpolate extension" msgstr "Izmanto interpolācijas paplašinājumu" #. "tutorial_interpolate" -#: ../src/verbs.cpp:2831 +#: ../src/verbs.cpp:2884 msgid "_Elements of Design" msgstr "Dizaina _elementi" -#: ../src/verbs.cpp:2832 +#: ../src/verbs.cpp:2885 msgid "Principles of design in the tutorial form" msgstr "Dizaina principi mācību materiālu formā" #. "tutorial_design" -#: ../src/verbs.cpp:2833 +#: ../src/verbs.cpp:2886 msgid "_Tips and Tricks" msgstr "Padomi un vil_tības" -#: ../src/verbs.cpp:2834 +#: ../src/verbs.cpp:2887 msgid "Miscellaneous tips and tricks" msgstr "Dažādi padomi un triki" #. "tutorial_tips" #. Effect -- renamed Extension -#: ../src/verbs.cpp:2837 +#: ../src/verbs.cpp:2890 msgid "Previous Exte_nsion" msgstr "Iepriekšējais paplaši_nājums" -#: ../src/verbs.cpp:2838 +#: ../src/verbs.cpp:2891 msgid "Repeat the last extension with the same settings" msgstr "Atkārtot pēdējo paplašinājumu ar tiem pašiem iestatījumiem" -#: ../src/verbs.cpp:2839 +#: ../src/verbs.cpp:2892 msgid "_Previous Extension Settings..." msgstr "Ie_priekšējā paplašinājuma iestatījumi" -#: ../src/verbs.cpp:2840 +#: ../src/verbs.cpp:2893 msgid "Repeat the last extension with new settings" msgstr "Atkārtot pēdējo paplašinājumu ar jaunajiem iestatījumiem" -#: ../src/verbs.cpp:2844 +#: ../src/verbs.cpp:2897 msgid "Fit the page to the current selection" msgstr "Pielāgot lapu pašreiz atlasītajam" -#: ../src/verbs.cpp:2846 +#: ../src/verbs.cpp:2899 msgid "Fit the page to the drawing" msgstr "Pielāgot lapu zīmējumam" -#: ../src/verbs.cpp:2848 +#: ../src/verbs.cpp:2901 msgid "Fit the page to the current selection or the drawing if there is no selection" msgstr "Pielāgot lapu iezīmētajam apgabalam vai zīmējumam, ja nekas nav iezīmēts" #. LockAndHide -#: ../src/verbs.cpp:2850 +#: ../src/verbs.cpp:2903 msgid "Unlock All" msgstr "Atslēgt visus" -#: ../src/verbs.cpp:2852 +#: ../src/verbs.cpp:2905 msgid "Unlock All in All Layers" msgstr "Atslēgt visus visos slāņos" -#: ../src/verbs.cpp:2854 +#: ../src/verbs.cpp:2907 msgid "Unhide All" msgstr "Rādīt visus" -#: ../src/verbs.cpp:2856 +#: ../src/verbs.cpp:2909 msgid "Unhide All in All Layers" msgstr "Rādīt visus visos slāņos" -#: ../src/verbs.cpp:2860 +#: ../src/verbs.cpp:2913 msgid "Link an ICC color profile" msgstr "Piesaistīt ICC krāsu profilu" -#: ../src/verbs.cpp:2861 +#: ../src/verbs.cpp:2914 msgid "Remove Color Profile" msgstr "Aizvākt krāsu profilu" -#: ../src/verbs.cpp:2862 +#: ../src/verbs.cpp:2915 msgid "Remove a linked ICC color profile" msgstr "Aizvākt piesaistīto ICC krāsu profilu" -#: ../src/verbs.cpp:2885 -#: ../src/verbs.cpp:2886 +#: ../src/verbs.cpp:2918 +msgid "Add External Script" +msgstr "Pievienot ārējo skriptu" + +#: ../src/verbs.cpp:2918 +msgid "Add an external script" +msgstr "Pievienot ārēju skriptu" + +#: ../src/verbs.cpp:2920 +msgid "Add Embedded Script" +msgstr "Pievienot iegulto skriptu" + +#: ../src/verbs.cpp:2920 +msgid "Add an embedded script" +msgstr "Pievienot iegultu skriptu" + +#: ../src/verbs.cpp:2922 +msgid "Edit Embedded Script" +msgstr "Labot iegulto skriptu" + +#: ../src/verbs.cpp:2922 +msgid "Edit an embedded script" +msgstr "Labot iegultu skriptu" + +#: ../src/verbs.cpp:2924 +msgid "Remove External Script" +msgstr "Aizvākt ārējo skriptu" + +#: ../src/verbs.cpp:2924 +msgid "Remove an external script" +msgstr "Aizvākt ārēju skriptu" + +#: ../src/verbs.cpp:2926 +msgid "Remove Embedded Script" +msgstr "Aizvākt iegulto skriptu" + +#: ../src/verbs.cpp:2926 +msgid "Remove an embedded script" +msgstr "Aizvākt iegultu skriptu" + +#: ../src/verbs.cpp:2948 +#: ../src/verbs.cpp:2949 msgid "Center on horizontal and vertical axis" msgstr "Centrēt uz horizontālās un vertikālās ass" -#: ../src/widgets/arc-toolbar.cpp:146 +#: ../src/widgets/arc-toolbar.cpp:142 msgid "Arc: Change start/end" msgstr "Loks: mainīt sākumu/beigas" -#: ../src/widgets/arc-toolbar.cpp:212 +#: ../src/widgets/arc-toolbar.cpp:208 msgid "Arc: Change open/closed" msgstr "Loks: mainīt uz atvērtu/slēgtu" -#: ../src/widgets/arc-toolbar.cpp:303 -#: ../src/widgets/arc-toolbar.cpp:332 -#: ../src/widgets/rect-toolbar.cpp:259 -#: ../src/widgets/rect-toolbar.cpp:297 -#: ../src/widgets/spiral-toolbar.cpp:229 -#: ../src/widgets/spiral-toolbar.cpp:253 -#: ../src/widgets/star-toolbar.cpp:395 -#: ../src/widgets/star-toolbar.cpp:456 +#: ../src/widgets/arc-toolbar.cpp:299 +#: ../src/widgets/arc-toolbar.cpp:328 +#: ../src/widgets/rect-toolbar.cpp:261 +#: ../src/widgets/rect-toolbar.cpp:299 +#: ../src/widgets/spiral-toolbar.cpp:225 +#: ../src/widgets/spiral-toolbar.cpp:249 +#: ../src/widgets/star-toolbar.cpp:391 +#: ../src/widgets/star-toolbar.cpp:452 msgid "<b>New:</b>" msgstr "<b>Jauns:</b>" #. FIXME: implement averaging of all parameters for multiple selected #. gtk_label_set_markup(GTK_LABEL(l), _("<b>Average:</b>")); -#: ../src/widgets/arc-toolbar.cpp:306 -#: ../src/widgets/arc-toolbar.cpp:317 -#: ../src/widgets/rect-toolbar.cpp:267 -#: ../src/widgets/rect-toolbar.cpp:285 -#: ../src/widgets/spiral-toolbar.cpp:231 -#: ../src/widgets/spiral-toolbar.cpp:242 -#: ../src/widgets/star-toolbar.cpp:397 +#: ../src/widgets/arc-toolbar.cpp:302 +#: ../src/widgets/arc-toolbar.cpp:313 +#: ../src/widgets/rect-toolbar.cpp:269 +#: ../src/widgets/rect-toolbar.cpp:287 +#: ../src/widgets/spiral-toolbar.cpp:227 +#: ../src/widgets/spiral-toolbar.cpp:238 +#: ../src/widgets/star-toolbar.cpp:393 msgid "<b>Change:</b>" msgstr "<b>Mainīt:</b>" -#: ../src/widgets/arc-toolbar.cpp:341 +#: ../src/widgets/arc-toolbar.cpp:337 msgid "Start:" msgstr "Sākums:" -#: ../src/widgets/arc-toolbar.cpp:342 +#: ../src/widgets/arc-toolbar.cpp:338 msgid "The angle (in degrees) from the horizontal to the arc's start point" msgstr "Leņķis (grādos) no horizontāles līdz loka sākumpunktam" -#: ../src/widgets/arc-toolbar.cpp:354 +#: ../src/widgets/arc-toolbar.cpp:350 msgid "End:" msgstr "Beigas:" -#: ../src/widgets/arc-toolbar.cpp:355 +#: ../src/widgets/arc-toolbar.cpp:351 msgid "The angle (in degrees) from the horizontal to the arc's end point" msgstr "Leņķis (grādos) no horizontāles līdz loka sākumpunktam" -#: ../src/widgets/arc-toolbar.cpp:371 +#: ../src/widgets/arc-toolbar.cpp:367 msgid "Closed arc" msgstr "Slēgts loks" -#: ../src/widgets/arc-toolbar.cpp:372 +#: ../src/widgets/arc-toolbar.cpp:368 msgid "Switch to segment (closed shape with two radii)" msgstr "Pārslēgt uz segmentu (slēgta figūra ar diviem rādiusiem)" -#: ../src/widgets/arc-toolbar.cpp:378 +#: ../src/widgets/arc-toolbar.cpp:374 msgid "Open Arc" msgstr "Vaļējs loks" -#: ../src/widgets/arc-toolbar.cpp:379 +#: ../src/widgets/arc-toolbar.cpp:375 msgid "Switch to arc (unclosed shape)" msgstr "Pārslēgt uz loku (nenoslēgta figūra)" -#: ../src/widgets/arc-toolbar.cpp:402 +#: ../src/widgets/arc-toolbar.cpp:398 msgid "Make whole" msgstr "Izveidot veselu" -#: ../src/widgets/arc-toolbar.cpp:403 +#: ../src/widgets/arc-toolbar.cpp:399 msgid "Make the shape a whole ellipse, not arc or segment" msgstr "Izveidot figūru kā pilnu elipsi. nevis loku vai sektoru" #. TODO: use the correct axis here, too -#: ../src/widgets/box3d-toolbar.cpp:253 +#: ../src/widgets/box3d-toolbar.cpp:248 msgid "3D Box: Change perspective (angle of infinite axis)" msgstr "3D paralēlskaldnis: perspektīvas maiņa (leņķis vai bezgalīga ass)" -#: ../src/widgets/box3d-toolbar.cpp:320 +#: ../src/widgets/box3d-toolbar.cpp:315 msgid "Angle in X direction" msgstr "Leņķis X virzienā" #. Translators: PL is short for 'perspective line' -#: ../src/widgets/box3d-toolbar.cpp:322 +#: ../src/widgets/box3d-toolbar.cpp:317 msgid "Angle of PLs in X direction" msgstr "Leņķis starp PL X virzienā" #. Translators: VP is short for 'vanishing point' -#: ../src/widgets/box3d-toolbar.cpp:344 +#: ../src/widgets/box3d-toolbar.cpp:339 msgid "State of VP in X direction" msgstr "SP stāvoklis X virzienā" -#: ../src/widgets/box3d-toolbar.cpp:345 +#: ../src/widgets/box3d-toolbar.cpp:340 msgid "Toggle VP in X direction between 'finite' and 'infinite' (=parallel)" msgstr "Pārslēdziet SP X virzienā starp 'galīgs' un 'bezgalīgs' (=paralēls)" -#: ../src/widgets/box3d-toolbar.cpp:360 +#: ../src/widgets/box3d-toolbar.cpp:355 msgid "Angle in Y direction" msgstr "Leņķis Y virzienā" -#: ../src/widgets/box3d-toolbar.cpp:360 +#: ../src/widgets/box3d-toolbar.cpp:355 msgid "Angle Y:" msgstr "Leņķis Y:" #. Translators: PL is short for 'perspective line' -#: ../src/widgets/box3d-toolbar.cpp:362 +#: ../src/widgets/box3d-toolbar.cpp:357 msgid "Angle of PLs in Y direction" msgstr "Leņķis starp PL Y virzienā" #. Translators: VP is short for 'vanishing point' -#: ../src/widgets/box3d-toolbar.cpp:383 +#: ../src/widgets/box3d-toolbar.cpp:378 msgid "State of VP in Y direction" msgstr "SP stāvoklis Y virzienā" -#: ../src/widgets/box3d-toolbar.cpp:384 +#: ../src/widgets/box3d-toolbar.cpp:379 msgid "Toggle VP in Y direction between 'finite' and 'infinite' (=parallel)" msgstr "Pārslēdziet SP Y virzienā starp 'galīgs' un 'bezgalīgs' (=paralēls)" -#: ../src/widgets/box3d-toolbar.cpp:399 +#: ../src/widgets/box3d-toolbar.cpp:394 msgid "Angle in Z direction" msgstr "Leņķis Z virzienā" #. Translators: PL is short for 'perspective line' -#: ../src/widgets/box3d-toolbar.cpp:401 +#: ../src/widgets/box3d-toolbar.cpp:396 msgid "Angle of PLs in Z direction" msgstr "Leņķis starp PL Z virzienā" #. Translators: VP is short for 'vanishing point' -#: ../src/widgets/box3d-toolbar.cpp:422 +#: ../src/widgets/box3d-toolbar.cpp:417 msgid "State of VP in Z direction" msgstr "SP stāvoklis Z virzienā" -#: ../src/widgets/box3d-toolbar.cpp:423 +#: ../src/widgets/box3d-toolbar.cpp:418 msgid "Toggle VP in Z direction between 'finite' and 'infinite' (=parallel)" msgstr "Pārslēdziet SP Z virzienā starp 'galīgs' un 'bezgalīgs' (=paralēls)" #. gint preset_index = ege_select_one_action_get_active( sel ); -#: ../src/widgets/calligraphy-toolbar.cpp:239 -#: ../src/widgets/calligraphy-toolbar.cpp:283 -#: ../src/widgets/calligraphy-toolbar.cpp:288 +#: ../src/widgets/calligraphy-toolbar.cpp:235 +#: ../src/widgets/calligraphy-toolbar.cpp:279 +#: ../src/widgets/calligraphy-toolbar.cpp:284 msgid "No preset" msgstr "Nav sākumiestatījuma" #. Width -#: ../src/widgets/calligraphy-toolbar.cpp:448 -#: ../src/widgets/erasor-toolbar.cpp:146 +#: ../src/widgets/calligraphy-toolbar.cpp:444 +#: ../src/widgets/eraser-toolbar.cpp:142 msgid "(hairline)" msgstr "(mata līnija)" #. Mean #. Rotation #. Scale -#: ../src/widgets/calligraphy-toolbar.cpp:448 -#: ../src/widgets/calligraphy-toolbar.cpp:481 -#: ../src/widgets/erasor-toolbar.cpp:146 -#: ../src/widgets/pencil-toolbar.cpp:303 -#: ../src/widgets/spray-toolbar.cpp:129 -#: ../src/widgets/spray-toolbar.cpp:145 -#: ../src/widgets/spray-toolbar.cpp:161 -#: ../src/widgets/spray-toolbar.cpp:221 -#: ../src/widgets/spray-toolbar.cpp:251 -#: ../src/widgets/spray-toolbar.cpp:269 -#: ../src/widgets/tweak-toolbar.cpp:143 -#: ../src/widgets/tweak-toolbar.cpp:160 -#: ../src/widgets/tweak-toolbar.cpp:368 +#: ../src/widgets/calligraphy-toolbar.cpp:444 +#: ../src/widgets/calligraphy-toolbar.cpp:477 +#: ../src/widgets/eraser-toolbar.cpp:142 +#: ../src/widgets/pencil-toolbar.cpp:298 +#: ../src/widgets/spray-toolbar.cpp:125 +#: ../src/widgets/spray-toolbar.cpp:141 +#: ../src/widgets/spray-toolbar.cpp:157 +#: ../src/widgets/spray-toolbar.cpp:217 +#: ../src/widgets/spray-toolbar.cpp:247 +#: ../src/widgets/spray-toolbar.cpp:265 +#: ../src/widgets/tweak-toolbar.cpp:139 +#: ../src/widgets/tweak-toolbar.cpp:156 +#: ../src/widgets/tweak-toolbar.cpp:364 msgid "(default)" msgstr "(noklusētais)" -#: ../src/widgets/calligraphy-toolbar.cpp:448 -#: ../src/widgets/erasor-toolbar.cpp:146 +#: ../src/widgets/calligraphy-toolbar.cpp:444 +#: ../src/widgets/eraser-toolbar.cpp:142 msgid "(broad stroke)" msgstr "(plata apmale)" -#: ../src/widgets/calligraphy-toolbar.cpp:451 -#: ../src/widgets/erasor-toolbar.cpp:149 +#: ../src/widgets/calligraphy-toolbar.cpp:447 +#: ../src/widgets/eraser-toolbar.cpp:145 msgid "Pen Width" msgstr "Spalvas platums" -#: ../src/widgets/calligraphy-toolbar.cpp:452 +#: ../src/widgets/calligraphy-toolbar.cpp:448 msgid "The width of the calligraphic pen (relative to the visible canvas area)" msgstr "Kaligrāfijas spalvas platums (attiecībā pret redzamo auduma laukumu)" #. Thinning -#: ../src/widgets/calligraphy-toolbar.cpp:465 +#: ../src/widgets/calligraphy-toolbar.cpp:461 msgid "(speed blows up stroke)" msgstr "(ātrums paplašina apmali)" -#: ../src/widgets/calligraphy-toolbar.cpp:465 +#: ../src/widgets/calligraphy-toolbar.cpp:461 msgid "(slight widening)" msgstr "(viegla paplašināšanās)" -#: ../src/widgets/calligraphy-toolbar.cpp:465 +#: ../src/widgets/calligraphy-toolbar.cpp:461 msgid "(constant width)" msgstr "(nemainīgs platums)" -#: ../src/widgets/calligraphy-toolbar.cpp:465 +#: ../src/widgets/calligraphy-toolbar.cpp:461 msgid "(slight thinning, default)" msgstr "(viegla sašaurināšanās, noklusētais)" -#: ../src/widgets/calligraphy-toolbar.cpp:465 +#: ../src/widgets/calligraphy-toolbar.cpp:461 msgid "(speed deflates stroke)" msgstr "(ātrums sašaurina apmali)" -#: ../src/widgets/calligraphy-toolbar.cpp:468 +#: ../src/widgets/calligraphy-toolbar.cpp:464 msgid "Stroke Thinning" msgstr "Apmales sašaurināšanās" -#: ../src/widgets/calligraphy-toolbar.cpp:468 +#: ../src/widgets/calligraphy-toolbar.cpp:464 msgid "Thinning:" msgstr "Sašaurināšanās:" -#: ../src/widgets/calligraphy-toolbar.cpp:469 +#: ../src/widgets/calligraphy-toolbar.cpp:465 msgid "How much velocity thins the stroke (> 0 makes fast strokes thinner, < 0 makes them broader, 0 makes width independent of velocity)" msgstr "Cik lielā mērā ātrums ietekmē apmales platumu (>0 padara ātri vilktas apmales šaurākas, <0 - platākas, 0 - padara apmales platumu nejūtīgu pret ātrumu)" #. Angle -#: ../src/widgets/calligraphy-toolbar.cpp:481 +#: ../src/widgets/calligraphy-toolbar.cpp:477 msgid "(left edge up)" msgstr "(kreisais stūris augšup)" -#: ../src/widgets/calligraphy-toolbar.cpp:481 +#: ../src/widgets/calligraphy-toolbar.cpp:477 msgid "(horizontal)" msgstr "(horizontāli)" -#: ../src/widgets/calligraphy-toolbar.cpp:481 +#: ../src/widgets/calligraphy-toolbar.cpp:477 msgid "(right edge up)" msgstr "(labais stūris augšup)" -#: ../src/widgets/calligraphy-toolbar.cpp:484 +#: ../src/widgets/calligraphy-toolbar.cpp:480 msgid "Pen Angle" msgstr "Spalvas leņķis" -#: ../src/widgets/calligraphy-toolbar.cpp:484 +#: ../src/widgets/calligraphy-toolbar.cpp:480 #: ../share/extensions/motion.inx.h:3 #: ../share/extensions/restack.inx.h:10 msgid "Angle:" msgstr "Leņķis:" -#: ../src/widgets/calligraphy-toolbar.cpp:485 +#: ../src/widgets/calligraphy-toolbar.cpp:481 msgid "The angle of the pen's nib (in degrees; 0 = horizontal; has no effect if fixation = 0)" msgstr "Spalvas gala leņķis (grādos; 0 - horizontāls; neatstāj ietekmi, ja fiksācija = 0)" #. Fixation -#: ../src/widgets/calligraphy-toolbar.cpp:499 +#: ../src/widgets/calligraphy-toolbar.cpp:495 msgid "(perpendicular to stroke, \"brush\")" msgstr "(perpendikulārs apmalei, \"brush\")" -#: ../src/widgets/calligraphy-toolbar.cpp:499 +#: ../src/widgets/calligraphy-toolbar.cpp:495 msgid "(almost fixed, default)" msgstr "(gandrīz fiksēts, noklusētais)" -#: ../src/widgets/calligraphy-toolbar.cpp:499 +#: ../src/widgets/calligraphy-toolbar.cpp:495 msgid "(fixed by Angle, \"pen\")" msgstr "(noteiktā leņķī, \"pen\")" -#: ../src/widgets/calligraphy-toolbar.cpp:502 +#: ../src/widgets/calligraphy-toolbar.cpp:498 msgid "Fixation" msgstr "Fiksācija" -#: ../src/widgets/calligraphy-toolbar.cpp:502 +#: ../src/widgets/calligraphy-toolbar.cpp:498 msgid "Fixation:" msgstr "Fiksācija:" -#: ../src/widgets/calligraphy-toolbar.cpp:503 +#: ../src/widgets/calligraphy-toolbar.cpp:499 msgid "Angle behavior (0 = nib always perpendicular to stroke direction, 100 = fixed angle)" msgstr "Leņķa uzvedība (0 = spalvas gals vienmēr perpendikulārs apmales virzienam , 100 = nemainīgs leņķis)" #. Cap Rounding -#: ../src/widgets/calligraphy-toolbar.cpp:515 +#: ../src/widgets/calligraphy-toolbar.cpp:511 msgid "(blunt caps, default)" msgstr "(truli gali, noklusētais)" -#: ../src/widgets/calligraphy-toolbar.cpp:515 +#: ../src/widgets/calligraphy-toolbar.cpp:511 msgid "(slightly bulging)" msgstr "(nedaudz izspiedies)" -#: ../src/widgets/calligraphy-toolbar.cpp:515 +#: ../src/widgets/calligraphy-toolbar.cpp:511 msgid "(approximately round)" msgstr "(aptuveni apaļi)" -#: ../src/widgets/calligraphy-toolbar.cpp:515 +#: ../src/widgets/calligraphy-toolbar.cpp:511 msgid "(long protruding caps)" msgstr "(gari, izspiedušies gali)" -#: ../src/widgets/calligraphy-toolbar.cpp:519 +#: ../src/widgets/calligraphy-toolbar.cpp:515 msgid "Cap rounding" msgstr "Galu noapaļošana" -#: ../src/widgets/calligraphy-toolbar.cpp:519 +#: ../src/widgets/calligraphy-toolbar.cpp:515 msgid "Caps:" msgstr "Gali:" -#: ../src/widgets/calligraphy-toolbar.cpp:520 +#: ../src/widgets/calligraphy-toolbar.cpp:516 msgid "Increase to make caps at the ends of strokes protrude more (0 = no caps, 1 = round caps)" msgstr "Palieliniet, lai apmales beigās tās gali vairāk izvirzītos uz āru (0 - nav, 1 - apaļi gali)" #. Tremor -#: ../src/widgets/calligraphy-toolbar.cpp:532 +#: ../src/widgets/calligraphy-toolbar.cpp:528 msgid "(smooth line)" msgstr "(gluda līnija)" -#: ../src/widgets/calligraphy-toolbar.cpp:532 +#: ../src/widgets/calligraphy-toolbar.cpp:528 msgid "(slight tremor)" msgstr "(neliela trīcēšana)" -#: ../src/widgets/calligraphy-toolbar.cpp:532 +#: ../src/widgets/calligraphy-toolbar.cpp:528 msgid "(noticeable tremor)" msgstr "(manāma trīcēšana)" -#: ../src/widgets/calligraphy-toolbar.cpp:532 +#: ../src/widgets/calligraphy-toolbar.cpp:528 msgid "(maximum tremor)" msgstr "(maksimāla trīcēšana)" -#: ../src/widgets/calligraphy-toolbar.cpp:535 +#: ../src/widgets/calligraphy-toolbar.cpp:531 msgid "Stroke Tremor" msgstr "Apmales trīcēšana" -#: ../src/widgets/calligraphy-toolbar.cpp:535 +#: ../src/widgets/calligraphy-toolbar.cpp:531 msgid "Tremor:" msgstr "Trīcēšana:" -#: ../src/widgets/calligraphy-toolbar.cpp:536 +#: ../src/widgets/calligraphy-toolbar.cpp:532 msgid "Increase to make strokes rugged and trembling" msgstr "Palieliniet, lai padarītu apmales raupjas un trīcošas" #. Wiggle -#: ../src/widgets/calligraphy-toolbar.cpp:550 +#: ../src/widgets/calligraphy-toolbar.cpp:546 msgid "(no wiggle)" msgstr "(nav grozīšanās)" -#: ../src/widgets/calligraphy-toolbar.cpp:550 +#: ../src/widgets/calligraphy-toolbar.cpp:546 msgid "(slight deviation)" msgstr "(neliela novirze)" -#: ../src/widgets/calligraphy-toolbar.cpp:550 +#: ../src/widgets/calligraphy-toolbar.cpp:546 msgid "(wild waves and curls)" msgstr "(mežonīgi viļņi un vērpetes)" -#: ../src/widgets/calligraphy-toolbar.cpp:553 +#: ../src/widgets/calligraphy-toolbar.cpp:549 msgid "Pen Wiggle" msgstr "Spalvas grozīšanās" -#: ../src/widgets/calligraphy-toolbar.cpp:553 +#: ../src/widgets/calligraphy-toolbar.cpp:549 msgid "Wiggle:" msgstr "Grozīšanās:" -#: ../src/widgets/calligraphy-toolbar.cpp:554 +#: ../src/widgets/calligraphy-toolbar.cpp:550 msgid "Increase to make the pen waver and wiggle" msgstr "Palieliniet, lai liktu spalvai svārstīties un grozīties" #. Mass -#: ../src/widgets/calligraphy-toolbar.cpp:567 +#: ../src/widgets/calligraphy-toolbar.cpp:563 msgid "(no inertia)" msgstr "(bez inerces)" -#: ../src/widgets/calligraphy-toolbar.cpp:567 +#: ../src/widgets/calligraphy-toolbar.cpp:563 msgid "(slight smoothing, default)" msgstr "(viegla nogludināšana, noklusētais)" -#: ../src/widgets/calligraphy-toolbar.cpp:567 +#: ../src/widgets/calligraphy-toolbar.cpp:563 msgid "(noticeable lagging)" msgstr "(manāma atpalikšana)" -#: ../src/widgets/calligraphy-toolbar.cpp:567 +#: ../src/widgets/calligraphy-toolbar.cpp:563 msgid "(maximum inertia)" msgstr "(maksimāla inerce)" -#: ../src/widgets/calligraphy-toolbar.cpp:570 +#: ../src/widgets/calligraphy-toolbar.cpp:566 msgid "Pen Mass" msgstr "Spalvas masa" -#: ../src/widgets/calligraphy-toolbar.cpp:570 +#: ../src/widgets/calligraphy-toolbar.cpp:566 msgid "Mass:" msgstr "Masa:" -#: ../src/widgets/calligraphy-toolbar.cpp:571 +#: ../src/widgets/calligraphy-toolbar.cpp:567 msgid "Increase to make the pen drag behind, as if slowed by inertia" msgstr "Palieliniet, lai pele atpaliktu it kā inerces pēc" -#: ../src/widgets/calligraphy-toolbar.cpp:586 +#: ../src/widgets/calligraphy-toolbar.cpp:582 msgid "Trace Background" msgstr "Vektorizēt fonu" -#: ../src/widgets/calligraphy-toolbar.cpp:587 +#: ../src/widgets/calligraphy-toolbar.cpp:583 msgid "Trace the lightness of the background by the width of the pen (white - minimum width, black - maximum width)" msgstr "Vektorizēt fona gaišumu ar spalvas platumu (balts - minimāls platums, melns - maksimāls)" -#: ../src/widgets/calligraphy-toolbar.cpp:600 +#: ../src/widgets/calligraphy-toolbar.cpp:596 msgid "Use the pressure of the input device to alter the width of the pen" msgstr "Izmantojiet spiedienu uz ievadierīci, lai mainītu spalvas platumu" -#: ../src/widgets/calligraphy-toolbar.cpp:612 +#: ../src/widgets/calligraphy-toolbar.cpp:608 msgid "Tilt" msgstr "Slīpums" -#: ../src/widgets/calligraphy-toolbar.cpp:613 +#: ../src/widgets/calligraphy-toolbar.cpp:609 msgid "Use the tilt of the input device to alter the angle of the pen's nib" msgstr "Izmantot ievadierīces slīpumu spalvas gala leņķa maiņai" -#: ../src/widgets/calligraphy-toolbar.cpp:628 +#: ../src/widgets/calligraphy-toolbar.cpp:624 msgid "Choose a preset" msgstr "Izvēlieties sākumiestaījumu" -#: ../src/widgets/calligraphy-toolbar.cpp:643 +#: ../src/widgets/calligraphy-toolbar.cpp:639 msgid "Add/Edit Profile" msgstr "Pievienot/labot profilu" -#: ../src/widgets/calligraphy-toolbar.cpp:644 +#: ../src/widgets/calligraphy-toolbar.cpp:640 msgid "Add or edit calligraphic profile" msgstr "Pievienot vai labot kaligrāfisko profilu" -#: ../src/widgets/connector-toolbar.cpp:136 +#: ../src/widgets/connector-toolbar.cpp:132 msgid "Set connector type: orthogonal" msgstr "Iestatīt savienotāja tipu: taisnleņķa" -#: ../src/widgets/connector-toolbar.cpp:136 +#: ../src/widgets/connector-toolbar.cpp:132 msgid "Set connector type: polyline" msgstr "Iestatīt savienotāja tipu: daudzlīniju" -#: ../src/widgets/connector-toolbar.cpp:185 +#: ../src/widgets/connector-toolbar.cpp:181 msgid "Change connector curvature" msgstr "Mainīt savienotāja izliekumu" -#: ../src/widgets/connector-toolbar.cpp:236 +#: ../src/widgets/connector-toolbar.cpp:232 msgid "Change connector spacing" msgstr "Mainīt savienotāja atstarpi" -#: ../src/widgets/connector-toolbar.cpp:329 +#: ../src/widgets/connector-toolbar.cpp:325 msgid "Avoid" msgstr "Izvairīties" -#: ../src/widgets/connector-toolbar.cpp:339 +#: ../src/widgets/connector-toolbar.cpp:335 msgid "Ignore" msgstr "Ignorēt" -#: ../src/widgets/connector-toolbar.cpp:350 +#: ../src/widgets/connector-toolbar.cpp:346 msgid "Orthogonal" msgstr "Ortogonāls" -#: ../src/widgets/connector-toolbar.cpp:351 +#: ../src/widgets/connector-toolbar.cpp:347 msgid "Make connector orthogonal or polyline" msgstr "Iestatīt noklusēto savienotāja tipu - taisnstūra vai daudzlīniju" -#: ../src/widgets/connector-toolbar.cpp:365 +#: ../src/widgets/connector-toolbar.cpp:361 msgid "Connector Curvature" msgstr "Savienotāja izliekums" -#: ../src/widgets/connector-toolbar.cpp:365 +#: ../src/widgets/connector-toolbar.cpp:361 msgid "Curvature:" msgstr "Izliekums:" -#: ../src/widgets/connector-toolbar.cpp:366 +#: ../src/widgets/connector-toolbar.cpp:362 msgid "The amount of connectors curvature" msgstr "Savienotāja izliekuma lielums" -#: ../src/widgets/connector-toolbar.cpp:376 +#: ../src/widgets/connector-toolbar.cpp:372 msgid "Connector Spacing" msgstr "Savienotāja atstarpe" -#: ../src/widgets/connector-toolbar.cpp:376 +#: ../src/widgets/connector-toolbar.cpp:372 msgid "Spacing:" msgstr "Intervāls:" -#: ../src/widgets/connector-toolbar.cpp:377 +#: ../src/widgets/connector-toolbar.cpp:373 msgid "The amount of space left around objects by auto-routing connectors" msgstr "Atstājamā brīvā vieta ap objektiem, izmantojot automātisko savienotāju izvietošanu" -#: ../src/widgets/connector-toolbar.cpp:388 +#: ../src/widgets/connector-toolbar.cpp:384 msgid "Graph" msgstr "Grafs" -#: ../src/widgets/connector-toolbar.cpp:398 +#: ../src/widgets/connector-toolbar.cpp:394 msgid "Connector Length" msgstr "Savienotāja garums" -#: ../src/widgets/connector-toolbar.cpp:398 +#: ../src/widgets/connector-toolbar.cpp:394 msgid "Length:" msgstr "Garums:" -#: ../src/widgets/connector-toolbar.cpp:399 +#: ../src/widgets/connector-toolbar.cpp:395 msgid "Ideal length for connectors when layout is applied" msgstr "Ideālais savienotāju garums pēc izkārtojuma pielietošanas" -#: ../src/widgets/connector-toolbar.cpp:411 +#: ../src/widgets/connector-toolbar.cpp:407 msgid "Downwards" msgstr "Lejup" -#: ../src/widgets/connector-toolbar.cpp:412 +#: ../src/widgets/connector-toolbar.cpp:408 msgid "Make connectors with end-markers (arrows) point downwards" msgstr "Izveidot savienotājus ar galu marķieriem (bultiņām) vērstiem lejup" -#: ../src/widgets/connector-toolbar.cpp:428 +#: ../src/widgets/connector-toolbar.cpp:424 msgid "Do not allow overlapping shapes" msgstr "Nepieļaut figūru pārklāšanos" @@ -23539,88 +23468,88 @@ msgstr "Punktējums" msgid "Pattern offset" msgstr "Faktūras nobīde" -#: ../src/widgets/desktop-widget.cpp:461 +#: ../src/widgets/desktop-widget.cpp:465 msgid "Zoom drawing if window size changes" msgstr "Tālummainīt attēlu, ja mainās loga izmēri" -#: ../src/widgets/desktop-widget.cpp:665 +#: ../src/widgets/desktop-widget.cpp:669 msgid "Cursor coordinates" msgstr "Kursora koordinātes" -#: ../src/widgets/desktop-widget.cpp:691 +#: ../src/widgets/desktop-widget.cpp:695 msgid "Z:" msgstr "Z:" #. display the initial welcome message in the statusbar -#: ../src/widgets/desktop-widget.cpp:734 +#: ../src/widgets/desktop-widget.cpp:738 msgid "<b>Welcome to Inkscape!</b> Use shape or freehand tools to create objects; use selector (arrow) to move or transform them." msgstr "<b>Laipni lūdzam Inkscape!</b> Izmantojiet figūru zīmēšanas vai brīvrokas līdzekļus, lai izveidotu objektus; izmantojiet kursora bultiņu, lai tos pārvietotu vai pārveidotu." -#: ../src/widgets/desktop-widget.cpp:828 +#: ../src/widgets/desktop-widget.cpp:832 msgid "grayscale" msgstr "pelēktoņu" -#: ../src/widgets/desktop-widget.cpp:829 +#: ../src/widgets/desktop-widget.cpp:833 msgid ", grayscale" msgstr ", pelēktoņu" -#: ../src/widgets/desktop-widget.cpp:830 +#: ../src/widgets/desktop-widget.cpp:834 msgid "print colors preview" msgstr "krāsu drukas priekšskatījums" -#: ../src/widgets/desktop-widget.cpp:831 +#: ../src/widgets/desktop-widget.cpp:835 msgid ", print colors preview" msgstr ", krāsu drukas priekšskatījums" -#: ../src/widgets/desktop-widget.cpp:832 +#: ../src/widgets/desktop-widget.cpp:836 msgid "outline" msgstr "aprises" -#: ../src/widgets/desktop-widget.cpp:833 +#: ../src/widgets/desktop-widget.cpp:837 msgid "no filters" msgstr "bez filtriem" -#: ../src/widgets/desktop-widget.cpp:860 +#: ../src/widgets/desktop-widget.cpp:864 #, c-format msgid "%s%s: %d (%s%s) - Inkscape" msgstr "%s%s: %d (%s%s) - Inkscape" -#: ../src/widgets/desktop-widget.cpp:862 #: ../src/widgets/desktop-widget.cpp:866 +#: ../src/widgets/desktop-widget.cpp:870 #, c-format msgid "%s%s: %d (%s) - Inkscape" msgstr "%s%s: %d (%s) - Inkscape" -#: ../src/widgets/desktop-widget.cpp:868 +#: ../src/widgets/desktop-widget.cpp:872 #, c-format msgid "%s%s: %d - Inkscape" msgstr "%s%s: %d - Inkscape" -#: ../src/widgets/desktop-widget.cpp:874 +#: ../src/widgets/desktop-widget.cpp:878 #, c-format msgid "%s%s (%s%s) - Inkscape" msgstr "%s%s (%s%s) - Inkscape" -#: ../src/widgets/desktop-widget.cpp:876 #: ../src/widgets/desktop-widget.cpp:880 +#: ../src/widgets/desktop-widget.cpp:884 #, c-format msgid "%s%s (%s) - Inkscape" msgstr "%s%s (%s) - Inkscape" -#: ../src/widgets/desktop-widget.cpp:882 +#: ../src/widgets/desktop-widget.cpp:886 #, c-format msgid "%s%s - Inkscape" msgstr "%s%s - Inkscape" -#: ../src/widgets/desktop-widget.cpp:1051 +#: ../src/widgets/desktop-widget.cpp:1055 msgid "Color-managed display is <b>enabled</b> in this window" msgstr "Ekrāna krāsu vadība <b>ir ieslēgta</b> šajā logā" -#: ../src/widgets/desktop-widget.cpp:1053 +#: ../src/widgets/desktop-widget.cpp:1057 msgid "Color-managed display is <b>disabled</b> in this window" msgstr "Ekrāna krāsu vadība <b>ir izslēgta</b> šajā logā" -#: ../src/widgets/desktop-widget.cpp:1108 +#: ../src/widgets/desktop-widget.cpp:1112 #, c-format msgid "" "<span weight=\"bold\" size=\"larger\">Save changes to document \"%s\" before closing?</span>\n" @@ -23631,12 +23560,12 @@ msgstr "" "\n" "Ja aizvērsiet nesaglabājot, visas izdarītās izmaiņas tiks zaudētas." -#: ../src/widgets/desktop-widget.cpp:1118 -#: ../src/widgets/desktop-widget.cpp:1177 +#: ../src/widgets/desktop-widget.cpp:1122 +#: ../src/widgets/desktop-widget.cpp:1181 msgid "Close _without saving" msgstr "Aizvērt _nesaglabājot" -#: ../src/widgets/desktop-widget.cpp:1167 +#: ../src/widgets/desktop-widget.cpp:1171 #, c-format msgid "" "<span weight=\"bold\" size=\"larger\">The file \"%s\" was saved with a format that may cause data loss!</span>\n" @@ -23647,35 +23576,35 @@ msgstr "" "\n" "Vai vēlaties saglabāt šo failu kā Inkscape SVG?" -#: ../src/widgets/desktop-widget.cpp:1179 +#: ../src/widgets/desktop-widget.cpp:1183 msgid "_Save as Inkscape SVG" msgstr "_Saglabāt kā Inkscape SVG" -#: ../src/widgets/desktop-widget.cpp:1389 +#: ../src/widgets/desktop-widget.cpp:1393 msgid "Note:" msgstr "Piezīme:" -#: ../src/widgets/dropper-toolbar.cpp:118 +#: ../src/widgets/dropper-toolbar.cpp:114 msgid "Pick opacity" msgstr "Izvēlēties necaurspīdību" -#: ../src/widgets/dropper-toolbar.cpp:119 +#: ../src/widgets/dropper-toolbar.cpp:115 msgid "Pick both the color and the alpha (transparency) under cursor; otherwise, pick only the visible color premultiplied by alpha" msgstr "Paņemt gan krāsu, gan alfa (caurspīdīgumu) zem kursora; pretējā gadījumā paņemt tikai redzamo krāsu sareizinātu ar alfa" -#: ../src/widgets/dropper-toolbar.cpp:122 +#: ../src/widgets/dropper-toolbar.cpp:118 msgid "Pick" msgstr "Paņemt" -#: ../src/widgets/dropper-toolbar.cpp:131 +#: ../src/widgets/dropper-toolbar.cpp:127 msgid "Assign opacity" msgstr "Norādīt necaurspīdību" -#: ../src/widgets/dropper-toolbar.cpp:132 +#: ../src/widgets/dropper-toolbar.cpp:128 msgid "If alpha was picked, assign it to selection as fill or stroke transparency" msgstr "Ja ir izvēlēta alfa, piešķiriet to atlasītajam kā aizpildījuma vai apmales caurspīdīgumu" -#: ../src/widgets/dropper-toolbar.cpp:135 +#: ../src/widgets/dropper-toolbar.cpp:131 msgid "Assign" msgstr "Piešķirt" @@ -23683,19 +23612,19 @@ msgstr "Piešķirt" msgid "remove" msgstr "aizvākt" -#: ../src/widgets/erasor-toolbar.cpp:115 +#: ../src/widgets/eraser-toolbar.cpp:111 msgid "Delete objects touched by the eraser" msgstr "Dzēst objektus, kam pieskārusies dzēšgumija" -#: ../src/widgets/erasor-toolbar.cpp:121 +#: ../src/widgets/eraser-toolbar.cpp:117 msgid "Cut" msgstr "Izgriezt" -#: ../src/widgets/erasor-toolbar.cpp:122 +#: ../src/widgets/eraser-toolbar.cpp:118 msgid "Cut out from objects" msgstr "Izgriezt no objektiem" -#: ../src/widgets/erasor-toolbar.cpp:150 +#: ../src/widgets/eraser-toolbar.cpp:146 msgid "The width of the eraser pen (relative to the visible canvas area)" msgstr "Dzēšgumijas platums (attiecībā pret redzamo auduma laukumu)" @@ -23729,42 +23658,42 @@ msgstr "Iestatīt aizpildījuma faktūru" msgid "Set pattern on stroke" msgstr "Iestatīt apmales faktūru" -#: ../src/widgets/font-selector.cpp:135 -#: ../src/widgets/text-toolbar.cpp:966 -#: ../src/widgets/text-toolbar.cpp:1284 +#: ../src/widgets/font-selector.cpp:134 +#: ../src/widgets/text-toolbar.cpp:962 +#: ../src/widgets/text-toolbar.cpp:1275 msgid "Font size" msgstr "Fonta izmērs" #. Family frame -#: ../src/widgets/font-selector.cpp:149 +#: ../src/widgets/font-selector.cpp:148 msgid "Font family" msgstr "Fonta saime" #. Style frame -#: ../src/widgets/font-selector.cpp:192 +#: ../src/widgets/font-selector.cpp:191 msgctxt "Font selector" msgid "Style" msgstr "Stils" -#: ../src/widgets/font-selector.cpp:243 +#: ../src/widgets/font-selector.cpp:242 #: ../share/extensions/dots.inx.h:3 msgid "Font size:" msgstr "Fonta izmērs:" -#: ../src/widgets/gradient-selector.cpp:207 +#: ../src/widgets/gradient-selector.cpp:208 msgid "Create a duplicate gradient" msgstr "Dublēt šo krāsu pāreju" -#: ../src/widgets/gradient-selector.cpp:217 +#: ../src/widgets/gradient-selector.cpp:218 msgid "Edit gradient" msgstr "Labot krāsu pāreju" -#: ../src/widgets/gradient-selector.cpp:288 +#: ../src/widgets/gradient-selector.cpp:289 #: ../src/widgets/paint-selector.cpp:244 msgid "Swatch" msgstr "Palete" -#: ../src/widgets/gradient-selector.cpp:338 +#: ../src/widgets/gradient-selector.cpp:339 msgid "Rename gradient" msgstr "Pārdēvēt krāsu pāreju" @@ -23926,6 +23855,7 @@ msgstr "Sasaistīt krāsu pārejas, lai mainītu visas saistītās krāsu pārej #: ../src/widgets/gradient-vector.cpp:332 #: ../src/widgets/paint-selector.cpp:922 +#: ../src/widgets/stroke-marker-selector.cpp:154 msgid "No document selected" msgstr "Nav izvēlēts neviens dokuments" @@ -23963,81 +23893,90 @@ msgstr "Krāsu pāreju redaktors" msgid "Change gradient stop color" msgstr "Mainīt krāsu pārejas atbalsta punkta krāsu" -#: ../src/widgets/lpe-toolbar.cpp:249 +#: ../src/widgets/lpe-toolbar.cpp:252 msgid "Closed" msgstr "Aizvērts" -#: ../src/widgets/lpe-toolbar.cpp:251 +#: ../src/widgets/lpe-toolbar.cpp:254 msgid "Open start" msgstr "Atvērt sākumu" -#: ../src/widgets/lpe-toolbar.cpp:253 +#: ../src/widgets/lpe-toolbar.cpp:256 msgid "Open end" msgstr "Atvērt galu" -#: ../src/widgets/lpe-toolbar.cpp:255 +#: ../src/widgets/lpe-toolbar.cpp:258 msgid "Open both" msgstr "Atvērt abus" -#: ../src/widgets/lpe-toolbar.cpp:314 +#: ../src/widgets/lpe-toolbar.cpp:317 msgid "All inactive" msgstr "Visi neaktīvi" -#: ../src/widgets/lpe-toolbar.cpp:315 +#: ../src/widgets/lpe-toolbar.cpp:318 msgid "No geometric tool is active" msgstr "Nav aktīva ģeometrijas rīka" -#: ../src/widgets/lpe-toolbar.cpp:348 +#: ../src/widgets/lpe-toolbar.cpp:351 msgid "Show limiting bounding box" msgstr "Rādīt ierobežojošo robežrāmi" -#: ../src/widgets/lpe-toolbar.cpp:349 +#: ../src/widgets/lpe-toolbar.cpp:352 msgid "Show bounding box (used to cut infinite lines)" msgstr "Rādīt robežrāmi (izmantots bezgalīgu līniju griešanai)" -#: ../src/widgets/lpe-toolbar.cpp:360 +#: ../src/widgets/lpe-toolbar.cpp:363 msgid "Get limiting bounding box from selection" msgstr "Iegūt atlasītā ierobežojošo robežrāmi" -#: ../src/widgets/lpe-toolbar.cpp:361 +#: ../src/widgets/lpe-toolbar.cpp:364 msgid "Set limiting bounding box (used to cut infinite lines) to the bounding box of current selection" msgstr "Iestatīt ierobežojošo robežrāmi (izmantots bezgalīgu līniju griešanai) pašreiz atlasītā robežrāmim" -#: ../src/widgets/lpe-toolbar.cpp:373 +#: ../src/widgets/lpe-toolbar.cpp:376 msgid "Choose a line segment type" msgstr "Izvēlieties līnijas posma tipu" -#: ../src/widgets/lpe-toolbar.cpp:389 +#: ../src/widgets/lpe-toolbar.cpp:392 msgid "Display measuring info" msgstr "Rādīt mērījumu informāciju" -#: ../src/widgets/lpe-toolbar.cpp:390 +#: ../src/widgets/lpe-toolbar.cpp:393 msgid "Display measuring info for selected items" msgstr "Rādīt atlasīto objektu mērījumu informāciju" -#: ../src/widgets/lpe-toolbar.cpp:410 +#. Add the units menu. +#: ../src/widgets/lpe-toolbar.cpp:403 +#: ../src/widgets/node-toolbar.cpp:625 +#: ../src/widgets/paintbucket-toolbar.cpp:186 +#: ../src/widgets/rect-toolbar.cpp:378 +#: ../src/widgets/select-toolbar.cpp:542 +msgid "Units" +msgstr "Mērvienības" + +#: ../src/widgets/lpe-toolbar.cpp:413 msgid "Open LPE dialog" msgstr "Atvērt LPE dialoglodziņu" -#: ../src/widgets/lpe-toolbar.cpp:411 +#: ../src/widgets/lpe-toolbar.cpp:414 msgid "Open LPE dialog (to adapt parameters numerically)" msgstr "Atvērt LPE dialoglodziņu (lai pieskaņotu parametrus skaitliski)" -#: ../src/widgets/measure-toolbar.cpp:102 -#: ../src/widgets/text-toolbar.cpp:1287 +#: ../src/widgets/measure-toolbar.cpp:103 +#: ../src/widgets/text-toolbar.cpp:1278 msgid "Font Size" msgstr "Fonta izmērs" -#: ../src/widgets/measure-toolbar.cpp:102 +#: ../src/widgets/measure-toolbar.cpp:103 msgid "Font Size:" msgstr "Fonta izmērs:" -#: ../src/widgets/measure-toolbar.cpp:103 +#: ../src/widgets/measure-toolbar.cpp:104 msgid "The font size to be used in the measurement labels" msgstr "Izmēru iezīmēs izmantojamā fonta lielums" -#: ../src/widgets/measure-toolbar.cpp:115 -#: ../src/widgets/measure-toolbar.cpp:123 +#: ../src/widgets/measure-toolbar.cpp:116 +#: ../src/widgets/measure-toolbar.cpp:124 msgid "The units to be used for the measurements" msgstr "Mērīšanai izmantojamās mērvienības" @@ -24058,6 +23997,7 @@ msgid "Create conical gradient" msgstr "Izveidot konisku krāsu pāreju" #: ../src/widgets/mesh-toolbar.cpp:263 +#: ../share/extensions/guides_creator.inx.h:5 msgid "Rows" msgstr "Rindas" @@ -24071,6 +24011,7 @@ msgid "Number of rows in new mesh" msgstr "Rindu skaits jaunajā režģtīklā" #: ../src/widgets/mesh-toolbar.cpp:279 +#: ../share/extensions/guides_creator.inx.h:4 msgid "Columns" msgstr "Slejas" @@ -24099,7 +24040,7 @@ msgid "Edit stroke mesh" msgstr "Labot apmales režgtīklu" #: ../src/widgets/mesh-toolbar.cpp:317 -#: ../src/widgets/node-toolbar.cpp:530 +#: ../src/widgets/node-toolbar.cpp:533 msgid "Show Handles" msgstr "Rādīt turus" @@ -24107,195 +24048,195 @@ msgstr "Rādīt turus" msgid "Show side and tensor handles" msgstr "Rādīt malas un tenzora turus" -#: ../src/widgets/node-toolbar.cpp:350 +#: ../src/widgets/node-toolbar.cpp:353 msgid "Insert node" msgstr "Pievienot mezglu" -#: ../src/widgets/node-toolbar.cpp:351 +#: ../src/widgets/node-toolbar.cpp:354 msgid "Insert new nodes into selected segments" msgstr "Ievietot jaunus mezglus atlasītajos posmos" -#: ../src/widgets/node-toolbar.cpp:354 +#: ../src/widgets/node-toolbar.cpp:357 msgid "Insert" msgstr "Ievietot" -#: ../src/widgets/node-toolbar.cpp:365 +#: ../src/widgets/node-toolbar.cpp:368 msgid "Insert node at min X" msgstr "Pievienot mezglu pie min. X" -#: ../src/widgets/node-toolbar.cpp:366 +#: ../src/widgets/node-toolbar.cpp:369 msgid "Insert new nodes at min X into selected segments" msgstr "Ievietot jaunus mezglus pie atlasīto posmu min X" -#: ../src/widgets/node-toolbar.cpp:369 +#: ../src/widgets/node-toolbar.cpp:372 msgid "Insert min X" msgstr "Pievienot min. X" -#: ../src/widgets/node-toolbar.cpp:375 +#: ../src/widgets/node-toolbar.cpp:378 msgid "Insert node at max X" msgstr "Pievienot mezglu pie maks. X" -#: ../src/widgets/node-toolbar.cpp:376 +#: ../src/widgets/node-toolbar.cpp:379 msgid "Insert new nodes at max X into selected segments" msgstr "Ievietot jaunus mezglus pie atlasīto posmu maks X" -#: ../src/widgets/node-toolbar.cpp:379 +#: ../src/widgets/node-toolbar.cpp:382 msgid "Insert max X" msgstr "Pievienot max. X" -#: ../src/widgets/node-toolbar.cpp:385 +#: ../src/widgets/node-toolbar.cpp:388 msgid "Insert node at min Y" msgstr "Pievienot mezglu pie min. Y" -#: ../src/widgets/node-toolbar.cpp:386 +#: ../src/widgets/node-toolbar.cpp:389 msgid "Insert new nodes at min Y into selected segments" msgstr "Ievietot jaunus mezglus pie atlasīto posmu min Y" -#: ../src/widgets/node-toolbar.cpp:389 +#: ../src/widgets/node-toolbar.cpp:392 msgid "Insert min Y" msgstr "Pievienot min. Y" -#: ../src/widgets/node-toolbar.cpp:395 +#: ../src/widgets/node-toolbar.cpp:398 msgid "Insert node at max Y" msgstr "Pievienot mezglu pie maks. Y" -#: ../src/widgets/node-toolbar.cpp:396 +#: ../src/widgets/node-toolbar.cpp:399 msgid "Insert new nodes at max Y into selected segments" msgstr "Ievietot jaunus mezglus pie atlasīto posmu maks Y" -#: ../src/widgets/node-toolbar.cpp:399 +#: ../src/widgets/node-toolbar.cpp:402 msgid "Insert max Y" msgstr "Pievienot max. Y" -#: ../src/widgets/node-toolbar.cpp:407 +#: ../src/widgets/node-toolbar.cpp:410 msgid "Delete selected nodes" msgstr "Dzēst iezīmētos mezglus" -#: ../src/widgets/node-toolbar.cpp:418 +#: ../src/widgets/node-toolbar.cpp:421 msgid "Join selected nodes" msgstr "savienot atlasītos mezglus" -#: ../src/widgets/node-toolbar.cpp:421 +#: ../src/widgets/node-toolbar.cpp:424 msgid "Join" msgstr "Savienot" -#: ../src/widgets/node-toolbar.cpp:429 +#: ../src/widgets/node-toolbar.cpp:432 msgid "Break path at selected nodes" msgstr "Lauzt ceļu pie atlasītajiem mezgliem" -#: ../src/widgets/node-toolbar.cpp:439 +#: ../src/widgets/node-toolbar.cpp:442 msgid "Join with segment" msgstr "Savienot ar posmu" -#: ../src/widgets/node-toolbar.cpp:440 +#: ../src/widgets/node-toolbar.cpp:443 msgid "Join selected endnodes with a new segment" msgstr "Savienot atlasītos galu mezglus ar jaunu posmu" -#: ../src/widgets/node-toolbar.cpp:449 +#: ../src/widgets/node-toolbar.cpp:452 msgid "Delete segment" msgstr "Dzēst segmentu" -#: ../src/widgets/node-toolbar.cpp:450 +#: ../src/widgets/node-toolbar.cpp:453 msgid "Delete segment between two non-endpoint nodes" msgstr "Dzēst posmu starp diviem nenoslēdzošajiem mezgliem" -#: ../src/widgets/node-toolbar.cpp:459 +#: ../src/widgets/node-toolbar.cpp:462 msgid "Node Cusp" msgstr "Mezgla stūrainums" -#: ../src/widgets/node-toolbar.cpp:460 +#: ../src/widgets/node-toolbar.cpp:463 msgid "Make selected nodes corner" msgstr "Pārveidot atlasītos mezglus par stūriem" -#: ../src/widgets/node-toolbar.cpp:469 +#: ../src/widgets/node-toolbar.cpp:472 msgid "Node Smooth" msgstr "Mezgla nogludināšana" -#: ../src/widgets/node-toolbar.cpp:470 +#: ../src/widgets/node-toolbar.cpp:473 msgid "Make selected nodes smooth" msgstr "Nogludināt atlasītos mezglus" -#: ../src/widgets/node-toolbar.cpp:479 +#: ../src/widgets/node-toolbar.cpp:482 msgid "Node Symmetric" msgstr "Mezgla simetrija" -#: ../src/widgets/node-toolbar.cpp:480 +#: ../src/widgets/node-toolbar.cpp:483 msgid "Make selected nodes symmetric" msgstr "Padarīt atlasītos mezglus simetriskus" -#: ../src/widgets/node-toolbar.cpp:489 +#: ../src/widgets/node-toolbar.cpp:492 msgid "Node Auto" msgstr "Mezgls Auto" -#: ../src/widgets/node-toolbar.cpp:490 +#: ../src/widgets/node-toolbar.cpp:493 msgid "Make selected nodes auto-smooth" msgstr "Padarīt atlasītos mezglus pašizgludionošos" -#: ../src/widgets/node-toolbar.cpp:499 +#: ../src/widgets/node-toolbar.cpp:502 msgid "Node Line" msgstr "Mezgla līnija" -#: ../src/widgets/node-toolbar.cpp:500 +#: ../src/widgets/node-toolbar.cpp:503 msgid "Make selected segments lines" msgstr "Pārveidot atlasītos posmus par līnijām" -#: ../src/widgets/node-toolbar.cpp:509 +#: ../src/widgets/node-toolbar.cpp:512 msgid "Node Curve" msgstr "Mezgla līkne" -#: ../src/widgets/node-toolbar.cpp:510 +#: ../src/widgets/node-toolbar.cpp:513 msgid "Make selected segments curves" msgstr "Pārveidot atlasītos posmus par līknēm" -#: ../src/widgets/node-toolbar.cpp:519 +#: ../src/widgets/node-toolbar.cpp:522 msgid "Show Transform Handles" msgstr "Rādīt pārveidošanas turus" -#: ../src/widgets/node-toolbar.cpp:520 +#: ../src/widgets/node-toolbar.cpp:523 msgid "Show transformation handles for selected nodes" msgstr "Rādīt atlasīto mezglu pārveidošanas turus" -#: ../src/widgets/node-toolbar.cpp:531 +#: ../src/widgets/node-toolbar.cpp:534 msgid "Show Bezier handles of selected nodes" msgstr "Rādīt atlasīto mezglu Bezjē turus " -#: ../src/widgets/node-toolbar.cpp:541 +#: ../src/widgets/node-toolbar.cpp:544 msgid "Show Outline" msgstr "Rādīt aprises" -#: ../src/widgets/node-toolbar.cpp:542 +#: ../src/widgets/node-toolbar.cpp:545 msgid "Show path outline (without path effects)" msgstr "Rādīt ceļa aprises (bez ceļa efektiem)" -#: ../src/widgets/node-toolbar.cpp:564 +#: ../src/widgets/node-toolbar.cpp:567 msgid "Edit clipping paths" msgstr "Labot izgriešanas ceļus" -#: ../src/widgets/node-toolbar.cpp:565 +#: ../src/widgets/node-toolbar.cpp:568 msgid "Show clipping path(s) of selected object(s)" msgstr "Rādīt atlasītā(-o) objekta(-u) izgriešanas ceļu(s)" -#: ../src/widgets/node-toolbar.cpp:575 +#: ../src/widgets/node-toolbar.cpp:578 msgid "Edit masks" msgstr "Labot maskas" -#: ../src/widgets/node-toolbar.cpp:576 +#: ../src/widgets/node-toolbar.cpp:579 msgid "Show mask(s) of selected object(s)" msgstr "Rādīt atlasītā objekta(-u) masku(-as)" -#: ../src/widgets/node-toolbar.cpp:590 +#: ../src/widgets/node-toolbar.cpp:593 msgid "X coordinate:" msgstr "X koordināte:" -#: ../src/widgets/node-toolbar.cpp:590 +#: ../src/widgets/node-toolbar.cpp:593 msgid "X coordinate of selected node(s)" msgstr "Izvēlētā(-o) mezgla(-u) X koordināte" -#: ../src/widgets/node-toolbar.cpp:608 +#: ../src/widgets/node-toolbar.cpp:611 msgid "Y coordinate:" msgstr "Y koordināte:" -#: ../src/widgets/node-toolbar.cpp:608 +#: ../src/widgets/node-toolbar.cpp:611 msgid "Y coordinate of selected node(s)" msgstr "Izvēlētā(-o) mezgla(-u) Y koordināte" @@ -24315,34 +24256,34 @@ msgstr "Aizpildīšanas slieksnis" msgid "The maximum allowed difference between the clicked pixel and the neighboring pixels to be counted in the fill" msgstr "Maksimālā pieļaujamā atšķirība aizpildījumā starp izvēlēto pikseli un apkārtējiem pikseļiem" -#: ../src/widgets/paintbucket-toolbar.cpp:193 +#: ../src/widgets/paintbucket-toolbar.cpp:194 msgid "Grow/shrink by" msgstr "Palielināt/samazināt par" -#: ../src/widgets/paintbucket-toolbar.cpp:193 +#: ../src/widgets/paintbucket-toolbar.cpp:194 msgid "Grow/shrink by:" msgstr "Palielināt/samazināt par:" -#: ../src/widgets/paintbucket-toolbar.cpp:194 +#: ../src/widgets/paintbucket-toolbar.cpp:195 msgid "The amount to grow (positive) or shrink (negative) the created fill path" msgstr "Izveidotā aizpildījuma ceļa paplašinājums (pozitīvs) vai sašaurinājums (negatīvs)" -#: ../src/widgets/paintbucket-toolbar.cpp:219 +#: ../src/widgets/paintbucket-toolbar.cpp:220 msgid "Close gaps" msgstr "Aizpildīt spraugas" -#: ../src/widgets/paintbucket-toolbar.cpp:220 +#: ../src/widgets/paintbucket-toolbar.cpp:221 msgid "Close gaps:" msgstr "Aizpildīt spraugas:" -#: ../src/widgets/paintbucket-toolbar.cpp:231 -#: ../src/widgets/pencil-toolbar.cpp:326 -#: ../src/widgets/spiral-toolbar.cpp:304 -#: ../src/widgets/star-toolbar.cpp:576 +#: ../src/widgets/paintbucket-toolbar.cpp:232 +#: ../src/widgets/pencil-toolbar.cpp:321 +#: ../src/widgets/spiral-toolbar.cpp:300 +#: ../src/widgets/star-toolbar.cpp:572 msgid "Defaults" msgstr "Noklusētie" -#: ../src/widgets/paintbucket-toolbar.cpp:232 +#: ../src/widgets/paintbucket-toolbar.cpp:233 msgid "Reset paint bucket parameters to defaults (use Inkscape Preferences > Tools to change defaults)" msgstr "Atiestatīt krāsas spaiņa parametrus uz noklusētajiem (izmantojiet Inkscape Iestatījumi > Rīki, lai manītu noklusētās vērtības)" @@ -24413,472 +24354,504 @@ msgstr "Izmantojiet <b>Mezglu rīks</b>, lai pielāgotu faktūras novietojumu, m msgid "<b>Pattern fill</b>" msgstr "<b>Aizpildījums ar faktūru</b>" -#: ../src/widgets/paint-selector.cpp:1164 +#: ../src/widgets/paint-selector.cpp:1162 msgid "<b>Swatch fill</b>" msgstr "<b>Paletes aizpildījums</b>" -#: ../src/widgets/pencil-toolbar.cpp:130 +#: ../src/widgets/pencil-toolbar.cpp:125 msgid "Bezier" msgstr "Bezjē" -#: ../src/widgets/pencil-toolbar.cpp:131 +#: ../src/widgets/pencil-toolbar.cpp:126 msgid "Create regular Bezier path" msgstr "Izveidot parastu Bezjē ceļu" -#: ../src/widgets/pencil-toolbar.cpp:138 +#: ../src/widgets/pencil-toolbar.cpp:133 msgid "Create Spiro path" msgstr "Izveidot spirāles ceļu" -#: ../src/widgets/pencil-toolbar.cpp:145 +#: ../src/widgets/pencil-toolbar.cpp:140 msgid "Zigzag" msgstr "Zigzag" -#: ../src/widgets/pencil-toolbar.cpp:146 +#: ../src/widgets/pencil-toolbar.cpp:141 msgid "Create a sequence of straight line segments" msgstr "Izveidot taisnas līnijas posmu sekvenci" -#: ../src/widgets/pencil-toolbar.cpp:152 +#: ../src/widgets/pencil-toolbar.cpp:147 msgid "Paraxial" msgstr "Paraksiāls" -#: ../src/widgets/pencil-toolbar.cpp:153 +#: ../src/widgets/pencil-toolbar.cpp:148 msgid "Create a sequence of paraxial line segments" msgstr "Izveidot taisnu nogriežņu secību" -#: ../src/widgets/pencil-toolbar.cpp:161 +#: ../src/widgets/pencil-toolbar.cpp:156 msgid "Mode of new lines drawn by this tool" msgstr "Ar šo rīku zīmēto jauno līniju režīms" -#: ../src/widgets/pencil-toolbar.cpp:190 +#: ../src/widgets/pencil-toolbar.cpp:185 msgid "Triangle in" msgstr "Sašaurināšanās" -#: ../src/widgets/pencil-toolbar.cpp:191 +#: ../src/widgets/pencil-toolbar.cpp:186 msgid "Triangle out" msgstr "Paplašināšanās" -#: ../src/widgets/pencil-toolbar.cpp:193 +#: ../src/widgets/pencil-toolbar.cpp:188 msgid "From clipboard" msgstr "No starpliktuves" -#: ../src/widgets/pencil-toolbar.cpp:218 -#: ../src/widgets/pencil-toolbar.cpp:219 +#: ../src/widgets/pencil-toolbar.cpp:213 +#: ../src/widgets/pencil-toolbar.cpp:214 msgid "Shape:" msgstr "Forma:" -#: ../src/widgets/pencil-toolbar.cpp:218 +#: ../src/widgets/pencil-toolbar.cpp:213 msgid "Shape of new paths drawn by this tool" msgstr "Ar šo rīku zīmēto jauno ceļu veids" -#: ../src/widgets/pencil-toolbar.cpp:303 +#: ../src/widgets/pencil-toolbar.cpp:298 msgid "(many nodes, rough)" msgstr "(daudz mezglu, raupjš)" -#: ../src/widgets/pencil-toolbar.cpp:303 +#: ../src/widgets/pencil-toolbar.cpp:298 msgid "(few nodes, smooth)" msgstr "(nedaudzi mezgli, nogludināti)" -#: ../src/widgets/pencil-toolbar.cpp:306 +#: ../src/widgets/pencil-toolbar.cpp:301 msgid "Smoothing:" msgstr "Nogludināšana:" -#: ../src/widgets/pencil-toolbar.cpp:306 +#: ../src/widgets/pencil-toolbar.cpp:301 msgid "Smoothing: " msgstr "Nogludināšana:" -#: ../src/widgets/pencil-toolbar.cpp:307 +#: ../src/widgets/pencil-toolbar.cpp:302 msgid "How much smoothing (simplifying) is applied to the line" msgstr "Cik liela nogludināšana (vienkāršošana) tiek pielietota līnijai" -#: ../src/widgets/pencil-toolbar.cpp:327 +#: ../src/widgets/pencil-toolbar.cpp:322 msgid "Reset pencil parameters to defaults (use Inkscape Preferences > Tools to change defaults)" msgstr "Atiestatīt zīmuļa parametrus uz noklusētajiem (izmantojiet Inkscape Iestatījumi > Rīki, lai mainītu noklusētos)" -#: ../src/widgets/rect-toolbar.cpp:128 +#: ../src/widgets/rect-toolbar.cpp:130 msgid "Change rectangle" msgstr "Izveidot taisnstūri" -#: ../src/widgets/rect-toolbar.cpp:315 +#: ../src/widgets/rect-toolbar.cpp:317 msgid "W:" msgstr "P:" -#: ../src/widgets/rect-toolbar.cpp:315 +#: ../src/widgets/rect-toolbar.cpp:317 msgid "Width of rectangle" msgstr "Taisnstūra platums" -#: ../src/widgets/rect-toolbar.cpp:332 +#: ../src/widgets/rect-toolbar.cpp:334 msgid "H:" msgstr "H:" -#: ../src/widgets/rect-toolbar.cpp:332 +#: ../src/widgets/rect-toolbar.cpp:334 msgid "Height of rectangle" msgstr "Taisnstūra augstums" -#: ../src/widgets/rect-toolbar.cpp:346 -#: ../src/widgets/rect-toolbar.cpp:361 +#: ../src/widgets/rect-toolbar.cpp:348 +#: ../src/widgets/rect-toolbar.cpp:363 msgid "not rounded" msgstr "nav noapaļoti" -#: ../src/widgets/rect-toolbar.cpp:349 +#: ../src/widgets/rect-toolbar.cpp:351 msgid "Horizontal radius" msgstr "Horizontālais rādiuss" -#: ../src/widgets/rect-toolbar.cpp:349 +#: ../src/widgets/rect-toolbar.cpp:351 msgid "Rx:" msgstr "Rx:" -#: ../src/widgets/rect-toolbar.cpp:349 +#: ../src/widgets/rect-toolbar.cpp:351 msgid "Horizontal radius of rounded corners" msgstr "Noapaļoto stūru horizontālais rādiuss" -#: ../src/widgets/rect-toolbar.cpp:364 +#: ../src/widgets/rect-toolbar.cpp:366 msgid "Vertical radius" msgstr "Vertikālais rādiuss" -#: ../src/widgets/rect-toolbar.cpp:364 +#: ../src/widgets/rect-toolbar.cpp:366 msgid "Ry:" msgstr "Ry:" -#: ../src/widgets/rect-toolbar.cpp:364 +#: ../src/widgets/rect-toolbar.cpp:366 msgid "Vertical radius of rounded corners" msgstr "Noapaļoto stūru vertikālais rādiuss" -#: ../src/widgets/rect-toolbar.cpp:383 +#: ../src/widgets/rect-toolbar.cpp:385 msgid "Not rounded" msgstr "Nenoapaļoti" -#: ../src/widgets/rect-toolbar.cpp:384 +#: ../src/widgets/rect-toolbar.cpp:386 msgid "Make corners sharp" msgstr "Padarīt stūrus asus" -#: ../src/widgets/select-toolbar.cpp:263 +#: ../src/widgets/ruler.cpp:192 +msgid "The orientation of the ruler" +msgstr "Mērjoslas orinetācija" + +#: ../src/widgets/ruler.cpp:202 +msgid "Unit of the ruler" +msgstr "Mērjoslas vienība" + +#: ../src/widgets/ruler.cpp:210 +msgid "Lower limit of ruler" +msgstr "Mērjoslas apakšējā robeža" + +#: ../src/widgets/ruler.cpp:219 +msgid "Upper" +msgstr "Augšējā" + +#: ../src/widgets/ruler.cpp:220 +msgid "Upper limit of ruler" +msgstr "Mērjoslas augšējā robeža" + +#: ../src/widgets/ruler.cpp:230 +msgid "Position of mark on the ruler" +msgstr "Aizzīmju atrašanās vieta uz mējoslas" + +#: ../src/widgets/ruler.cpp:239 +msgid "Max Size" +msgstr "Maks. izmērs" + +#: ../src/widgets/ruler.cpp:240 +msgid "Maximum size of the ruler" +msgstr "Mērjoslas maksimālais izmērs" + +#: ../src/widgets/select-toolbar.cpp:267 msgid "Transform by toolbar" msgstr "Pārveidošana ar rīkjoslas palīdzību" -#: ../src/widgets/select-toolbar.cpp:341 +#: ../src/widgets/select-toolbar.cpp:345 msgid "Now <b>stroke width</b> is <b>scaled</b> when objects are scaled." msgstr "Tagad mērogojot objektus <b>apmales platums <u>tiek</u></b> mērogots." -#: ../src/widgets/select-toolbar.cpp:343 +#: ../src/widgets/select-toolbar.cpp:347 msgid "Now <b>stroke width</b> is <b>not scaled</b> when objects are scaled." msgstr "Tagad mērogojot objektus <b>apmales platums <u>netiek</u></b> mērogots." -#: ../src/widgets/select-toolbar.cpp:354 +#: ../src/widgets/select-toolbar.cpp:358 msgid "Now <b>rounded rectangle corners</b> are <b>scaled</b> when rectangles are scaled." msgstr "Tagad mērogojot taisnstūrus <b>noapaļotie taisnstūra stūri <u>tiek</u></b> mērogoti." -#: ../src/widgets/select-toolbar.cpp:356 +#: ../src/widgets/select-toolbar.cpp:360 msgid "Now <b>rounded rectangle corners</b> are <b>not scaled</b> when rectangles are scaled." msgstr "Tagad mērogojot taisnstūrus <b>noapaļotie taisnstūra stūri <u>netiek</u></b> mērogoti." -#: ../src/widgets/select-toolbar.cpp:367 +#: ../src/widgets/select-toolbar.cpp:371 msgid "Now <b>gradients</b> are <b>transformed</b> along with their objects when those are transformed (moved, scaled, rotated, or skewed)." msgstr "Tagad pārveidojot objektus (pārvietojot, mērogojot, griežot vai šķiebjot) <b>krāsu pārejas <u>tiek</u></b> pārveidotas līdz ar objektiem." -#: ../src/widgets/select-toolbar.cpp:369 +#: ../src/widgets/select-toolbar.cpp:373 msgid "Now <b>gradients</b> remain <b>fixed</b> when objects are transformed (moved, scaled, rotated, or skewed)." msgstr "Tagad pārveidojot objektus (pārvietojot, mērogojot, griežot vai šķiebjot) <b>krāsu pārejas <u>netiek</u></b> pārveidotas." -#: ../src/widgets/select-toolbar.cpp:380 +#: ../src/widgets/select-toolbar.cpp:384 msgid "Now <b>patterns</b> are <b>transformed</b> along with their objects when those are transformed (moved, scaled, rotated, or skewed)." msgstr "Tagad pārveidojot objektu (pārvietojot, mērogojot, griežot vai šķiebjot) <b>faktūra</b> tiek <b>pārveidota</b>." -#: ../src/widgets/select-toolbar.cpp:382 +#: ../src/widgets/select-toolbar.cpp:386 msgid "Now <b>patterns</b> remain <b>fixed</b> when objects are transformed (moved, scaled, rotated, or skewed)." msgstr "Tagad pārveidojot objektu (pārvietojot, mērogojot, griežot vai šķiebjot) <b>faktūra</b> paliek <b>nemainīga</b>." #. four spinbuttons -#: ../src/widgets/select-toolbar.cpp:500 +#: ../src/widgets/select-toolbar.cpp:504 msgctxt "Select toolbar" msgid "X position" msgstr "X pozīcija" -#: ../src/widgets/select-toolbar.cpp:500 +#: ../src/widgets/select-toolbar.cpp:504 msgctxt "Select toolbar" msgid "X:" msgstr "X:" -#: ../src/widgets/select-toolbar.cpp:502 +#: ../src/widgets/select-toolbar.cpp:506 msgid "Horizontal coordinate of selection" msgstr "Iezīmējuma horizontalā koordināte" -#: ../src/widgets/select-toolbar.cpp:506 +#: ../src/widgets/select-toolbar.cpp:510 msgctxt "Select toolbar" msgid "Y position" msgstr "Y pozīcija" -#: ../src/widgets/select-toolbar.cpp:506 +#: ../src/widgets/select-toolbar.cpp:510 msgctxt "Select toolbar" msgid "Y:" msgstr "Y:" -#: ../src/widgets/select-toolbar.cpp:508 +#: ../src/widgets/select-toolbar.cpp:512 msgid "Vertical coordinate of selection" msgstr "Iezīmējuma vertikālā koordināte" -#: ../src/widgets/select-toolbar.cpp:512 +#: ../src/widgets/select-toolbar.cpp:516 msgctxt "Select toolbar" msgid "Width" msgstr "Platums" -#: ../src/widgets/select-toolbar.cpp:512 +#: ../src/widgets/select-toolbar.cpp:516 msgctxt "Select toolbar" msgid "W:" msgstr "P:" -#: ../src/widgets/select-toolbar.cpp:514 +#: ../src/widgets/select-toolbar.cpp:518 msgid "Width of selection" msgstr "Iezīmējuma platums" -#: ../src/widgets/select-toolbar.cpp:521 +#: ../src/widgets/select-toolbar.cpp:525 msgid "Lock width and height" msgstr "Slēgt platumu un augstumu" -#: ../src/widgets/select-toolbar.cpp:522 +#: ../src/widgets/select-toolbar.cpp:526 msgid "When locked, change both width and height by the same proportion" msgstr "Ja slēgts, mainīt platumu un augstumu vienādās proporcijās" -#: ../src/widgets/select-toolbar.cpp:531 +#: ../src/widgets/select-toolbar.cpp:535 msgctxt "Select toolbar" msgid "Height" msgstr "Augstums" -#: ../src/widgets/select-toolbar.cpp:531 +#: ../src/widgets/select-toolbar.cpp:535 msgctxt "Select toolbar" msgid "H:" msgstr "H:" -#: ../src/widgets/select-toolbar.cpp:533 +#: ../src/widgets/select-toolbar.cpp:537 msgid "Height of selection" msgstr "Iezīmējuma augstums" -#: ../src/widgets/select-toolbar.cpp:583 +#: ../src/widgets/select-toolbar.cpp:587 msgid "Scale rounded corners" msgstr "Mērogot noapaļotos stūrus" -#: ../src/widgets/select-toolbar.cpp:594 +#: ../src/widgets/select-toolbar.cpp:598 msgid "Move gradients" msgstr "Pārvietot krāsu pārejas" -#: ../src/widgets/select-toolbar.cpp:605 +#: ../src/widgets/select-toolbar.cpp:609 msgid "Move patterns" msgstr "Pārvietot faktūras" -#: ../src/widgets/spiral-toolbar.cpp:115 +#: ../src/widgets/spiral-toolbar.cpp:111 msgid "Change spiral" msgstr "Mainīt spirāli" -#: ../src/widgets/spiral-toolbar.cpp:261 +#: ../src/widgets/spiral-toolbar.cpp:257 msgid "just a curve" msgstr "tikai līkne" -#: ../src/widgets/spiral-toolbar.cpp:261 +#: ../src/widgets/spiral-toolbar.cpp:257 msgid "one full revolution" msgstr "vienu pilnu apgriezienu" -#: ../src/widgets/spiral-toolbar.cpp:264 +#: ../src/widgets/spiral-toolbar.cpp:260 msgid "Number of turns" msgstr "Pilnu apgriezienu skaits" -#: ../src/widgets/spiral-toolbar.cpp:264 +#: ../src/widgets/spiral-toolbar.cpp:260 msgid "Turns:" msgstr "Apgriezieni:" -#: ../src/widgets/spiral-toolbar.cpp:264 +#: ../src/widgets/spiral-toolbar.cpp:260 msgid "Number of revolutions" msgstr "Apgriezienu skaits" -#: ../src/widgets/spiral-toolbar.cpp:275 +#: ../src/widgets/spiral-toolbar.cpp:271 msgid "circle" msgstr "riņķis" -#: ../src/widgets/spiral-toolbar.cpp:275 +#: ../src/widgets/spiral-toolbar.cpp:271 msgid "edge is much denser" msgstr "malas ir daudz blīvākas" -#: ../src/widgets/spiral-toolbar.cpp:275 +#: ../src/widgets/spiral-toolbar.cpp:271 msgid "edge is denser" msgstr "malas ir blīvākas" -#: ../src/widgets/spiral-toolbar.cpp:275 +#: ../src/widgets/spiral-toolbar.cpp:271 msgid "even" msgstr "pāra" -#: ../src/widgets/spiral-toolbar.cpp:275 +#: ../src/widgets/spiral-toolbar.cpp:271 msgid "center is denser" msgstr "centrs ir blīvāks" -#: ../src/widgets/spiral-toolbar.cpp:275 +#: ../src/widgets/spiral-toolbar.cpp:271 msgid "center is much denser" msgstr "centrs ir daudz blīvāks" -#: ../src/widgets/spiral-toolbar.cpp:278 +#: ../src/widgets/spiral-toolbar.cpp:274 msgid "Divergence" msgstr "Novirze" -#: ../src/widgets/spiral-toolbar.cpp:278 +#: ../src/widgets/spiral-toolbar.cpp:274 msgid "Divergence:" msgstr "Novirze:" -#: ../src/widgets/spiral-toolbar.cpp:278 +#: ../src/widgets/spiral-toolbar.cpp:274 msgid "How much denser/sparser are outer revolutions; 1 = uniform" msgstr "Cik blīvāki/retāki ir ārējie vijumi; 1 - vienādi nemainīgi" -#: ../src/widgets/spiral-toolbar.cpp:289 +#: ../src/widgets/spiral-toolbar.cpp:285 msgid "starts from center" msgstr "sākas no centra" -#: ../src/widgets/spiral-toolbar.cpp:289 +#: ../src/widgets/spiral-toolbar.cpp:285 msgid "starts mid-way" msgstr "sākas pusceļā" -#: ../src/widgets/spiral-toolbar.cpp:289 +#: ../src/widgets/spiral-toolbar.cpp:285 msgid "starts near edge" msgstr "sākas pie malas" -#: ../src/widgets/spiral-toolbar.cpp:292 +#: ../src/widgets/spiral-toolbar.cpp:288 msgid "Inner radius" msgstr "Iekšējais rādiuss" -#: ../src/widgets/spiral-toolbar.cpp:292 +#: ../src/widgets/spiral-toolbar.cpp:288 msgid "Inner radius:" msgstr "Iekšējais rādiuss:" -#: ../src/widgets/spiral-toolbar.cpp:292 +#: ../src/widgets/spiral-toolbar.cpp:288 msgid "Radius of the innermost revolution (relative to the spiral size)" msgstr "Iekšējā vijuma rādiuss (attiecībā pret spirāles izmēru)" -#: ../src/widgets/spiral-toolbar.cpp:305 -#: ../src/widgets/star-toolbar.cpp:577 +#: ../src/widgets/spiral-toolbar.cpp:301 +#: ../src/widgets/star-toolbar.cpp:573 msgid "Reset shape parameters to defaults (use Inkscape Preferences > Tools to change defaults)" msgstr "Atiestatīt figūras parametrus uz noklusētajiem (izmantojiet Inkscape Iestatījumi > Rīki, lai mainītu noklusētos)" #. Width -#: ../src/widgets/spray-toolbar.cpp:129 +#: ../src/widgets/spray-toolbar.cpp:125 msgid "(narrow spray)" msgstr "(šaurs smidzinājums)" -#: ../src/widgets/spray-toolbar.cpp:129 +#: ../src/widgets/spray-toolbar.cpp:125 msgid "(broad spray)" msgstr "(plats smidzinājums)" -#: ../src/widgets/spray-toolbar.cpp:132 +#: ../src/widgets/spray-toolbar.cpp:128 msgid "The width of the spray area (relative to the visible canvas area)" msgstr "Smidzināšanas joslas platums (attiecībā pret redzamo auduma laukumu)" -#: ../src/widgets/spray-toolbar.cpp:145 +#: ../src/widgets/spray-toolbar.cpp:141 msgid "(maximum mean)" msgstr "(maksimālais vidējais)" -#: ../src/widgets/spray-toolbar.cpp:148 +#: ../src/widgets/spray-toolbar.cpp:144 msgid "Focus" msgstr "Fokuss" -#: ../src/widgets/spray-toolbar.cpp:148 +#: ../src/widgets/spray-toolbar.cpp:144 msgid "Focus:" msgstr "Fokuss:" -#: ../src/widgets/spray-toolbar.cpp:148 +#: ../src/widgets/spray-toolbar.cpp:144 msgid "0 to spray a spot; increase to enlarge the ring radius" msgstr "0, lai apsmidzinātu to vietu; palieliniet vērtību, lai palielinātu riņķa rādiusu" #. Standard_deviation -#: ../src/widgets/spray-toolbar.cpp:161 +#: ../src/widgets/spray-toolbar.cpp:157 msgid "(minimum scatter)" msgstr "(minimāla izkliede)" -#: ../src/widgets/spray-toolbar.cpp:161 +#: ../src/widgets/spray-toolbar.cpp:157 msgid "(maximum scatter)" msgstr "(maksimāla izkliede)" -#: ../src/widgets/spray-toolbar.cpp:164 +#: ../src/widgets/spray-toolbar.cpp:160 msgctxt "Spray tool" msgid "Scatter" msgstr "Izkliedēšana" -#: ../src/widgets/spray-toolbar.cpp:164 +#: ../src/widgets/spray-toolbar.cpp:160 msgctxt "Spray tool" msgid "Scatter:" msgstr "Izkliedēšana:" -#: ../src/widgets/spray-toolbar.cpp:164 +#: ../src/widgets/spray-toolbar.cpp:160 msgid "Increase to scatter sprayed objects" msgstr "Palieliniet, lai izkliedētu izsmidzinātos objektus" -#: ../src/widgets/spray-toolbar.cpp:183 +#: ../src/widgets/spray-toolbar.cpp:179 msgid "Spray copies of the initial selection" msgstr "Izsmidzināt sākotnējās atlases kopijas" -#: ../src/widgets/spray-toolbar.cpp:190 +#: ../src/widgets/spray-toolbar.cpp:186 msgid "Spray clones of the initial selection" msgstr "Izsmidzināt sākotnējās atlases klonus" -#: ../src/widgets/spray-toolbar.cpp:196 +#: ../src/widgets/spray-toolbar.cpp:192 msgid "Spray single path" msgstr "Izsmidzināt vienā ceļā" -#: ../src/widgets/spray-toolbar.cpp:197 +#: ../src/widgets/spray-toolbar.cpp:193 msgid "Spray objects in a single path" msgstr "Izsmidzināt objektus vienā ceļā" -#: ../src/widgets/spray-toolbar.cpp:201 -#: ../src/widgets/tweak-toolbar.cpp:271 +#: ../src/widgets/spray-toolbar.cpp:197 +#: ../src/widgets/tweak-toolbar.cpp:267 msgid "Mode" msgstr "Režīms" #. Population -#: ../src/widgets/spray-toolbar.cpp:221 +#: ../src/widgets/spray-toolbar.cpp:217 msgid "(low population)" msgstr "(zems blīvums)" -#: ../src/widgets/spray-toolbar.cpp:221 +#: ../src/widgets/spray-toolbar.cpp:217 msgid "(high population)" msgstr "(augsts blīvums)" -#: ../src/widgets/spray-toolbar.cpp:224 +#: ../src/widgets/spray-toolbar.cpp:220 msgid "Amount" msgstr "Daudzums" -#: ../src/widgets/spray-toolbar.cpp:225 +#: ../src/widgets/spray-toolbar.cpp:221 msgid "Adjusts the number of items sprayed per click" msgstr "Pielāgo vienā klikšķī izsmidzināto objektu skaitu" -#: ../src/widgets/spray-toolbar.cpp:241 +#: ../src/widgets/spray-toolbar.cpp:237 msgid "Use the pressure of the input device to alter the amount of sprayed objects" msgstr "Maniet spiedienu uz ievadierīci, lai mainītu izsmidzināto objektu skaitu" -#: ../src/widgets/spray-toolbar.cpp:251 +#: ../src/widgets/spray-toolbar.cpp:247 msgid "(high rotation variation)" msgstr "(augsta griešanas pārmaiņa)" -#: ../src/widgets/spray-toolbar.cpp:254 +#: ../src/widgets/spray-toolbar.cpp:250 msgid "Rotation" msgstr "Rotācija" -#: ../src/widgets/spray-toolbar.cpp:254 +#: ../src/widgets/spray-toolbar.cpp:250 msgid "Rotation:" msgstr "Rotācija: " -#: ../src/widgets/spray-toolbar.cpp:256 +#: ../src/widgets/spray-toolbar.cpp:252 #, no-c-format msgid "Variation of the rotation of the sprayed objects; 0% for the same rotation than the original object" msgstr "Izsmidzināto objektu pagrieziena variācijas; 0% atbilst sākotnējā objekta pagriezienam" -#: ../src/widgets/spray-toolbar.cpp:269 +#: ../src/widgets/spray-toolbar.cpp:265 msgid "(high scale variation)" msgstr "(augsta izmēru pārmaiņa)" -#: ../src/widgets/spray-toolbar.cpp:272 +#: ../src/widgets/spray-toolbar.cpp:268 msgctxt "Spray tool" msgid "Scale" msgstr "Mērogs" -#: ../src/widgets/spray-toolbar.cpp:272 +#: ../src/widgets/spray-toolbar.cpp:268 msgctxt "Spray tool" msgid "Scale:" msgstr "Mērogs:" -#: ../src/widgets/spray-toolbar.cpp:274 +#: ../src/widgets/spray-toolbar.cpp:270 #, no-c-format msgid "Variation in the scale of the sprayed objects; 0% for the same scale than the original object" msgstr "Izsmidzināto objektu lieluma variācijas; 0% atbilst sākotnējā objekta izmēriem" @@ -24891,85 +24864,85 @@ msgstr "Iestatīt atribūtu" msgid "CMS" msgstr "CMS" -#: ../src/widgets/sp-color-icc-selector.cpp:354 +#: ../src/widgets/sp-color-icc-selector.cpp:355 #: ../src/widgets/sp-color-scales.cpp:428 msgid "_R:" msgstr "_R" #. TYPE_RGB_16 -#: ../src/widgets/sp-color-icc-selector.cpp:355 +#: ../src/widgets/sp-color-icc-selector.cpp:356 #: ../src/widgets/sp-color-scales.cpp:431 msgid "_G:" msgstr "_G" -#: ../src/widgets/sp-color-icc-selector.cpp:356 +#: ../src/widgets/sp-color-icc-selector.cpp:357 #: ../src/widgets/sp-color-scales.cpp:434 msgid "_B:" msgstr "_B" -#: ../src/widgets/sp-color-icc-selector.cpp:358 +#: ../src/widgets/sp-color-icc-selector.cpp:359 msgid "G:" msgstr "G:" -#: ../src/widgets/sp-color-icc-selector.cpp:358 +#: ../src/widgets/sp-color-icc-selector.cpp:359 msgid "Gray" msgstr "Pelēks" #. TYPE_GRAY_16 -#: ../src/widgets/sp-color-icc-selector.cpp:360 -#: ../src/widgets/sp-color-icc-selector.cpp:364 +#: ../src/widgets/sp-color-icc-selector.cpp:361 +#: ../src/widgets/sp-color-icc-selector.cpp:365 #: ../src/widgets/sp-color-scales.cpp:454 msgid "_H:" msgstr "_H" #. TYPE_HSV_16 -#: ../src/widgets/sp-color-icc-selector.cpp:361 -#: ../src/widgets/sp-color-icc-selector.cpp:366 +#: ../src/widgets/sp-color-icc-selector.cpp:362 +#: ../src/widgets/sp-color-icc-selector.cpp:367 #: ../src/widgets/sp-color-scales.cpp:457 msgid "_S:" msgstr "_S" #. TYPE_HLS_16 -#: ../src/widgets/sp-color-icc-selector.cpp:365 +#: ../src/widgets/sp-color-icc-selector.cpp:366 #: ../src/widgets/sp-color-scales.cpp:460 msgid "_L:" msgstr "_L:" -#: ../src/widgets/sp-color-icc-selector.cpp:368 -#: ../src/widgets/sp-color-icc-selector.cpp:373 +#: ../src/widgets/sp-color-icc-selector.cpp:369 +#: ../src/widgets/sp-color-icc-selector.cpp:374 #: ../src/widgets/sp-color-scales.cpp:482 msgid "_C:" msgstr "_C" #. TYPE_CMYK_16 #. TYPE_CMY_16 -#: ../src/widgets/sp-color-icc-selector.cpp:369 -#: ../src/widgets/sp-color-icc-selector.cpp:374 +#: ../src/widgets/sp-color-icc-selector.cpp:370 +#: ../src/widgets/sp-color-icc-selector.cpp:375 #: ../src/widgets/sp-color-scales.cpp:485 msgid "_M:" msgstr "_M" -#: ../src/widgets/sp-color-icc-selector.cpp:370 -#: ../src/widgets/sp-color-icc-selector.cpp:375 +#: ../src/widgets/sp-color-icc-selector.cpp:371 +#: ../src/widgets/sp-color-icc-selector.cpp:376 #: ../src/widgets/sp-color-scales.cpp:488 msgid "_Y:" msgstr "_Y:" -#: ../src/widgets/sp-color-icc-selector.cpp:371 +#: ../src/widgets/sp-color-icc-selector.cpp:372 #: ../src/widgets/sp-color-scales.cpp:491 msgid "_K:" msgstr "_K" -#: ../src/widgets/sp-color-icc-selector.cpp:453 +#: ../src/widgets/sp-color-icc-selector.cpp:455 msgid "Fix" msgstr "Izlabot" -#: ../src/widgets/sp-color-icc-selector.cpp:456 +#: ../src/widgets/sp-color-icc-selector.cpp:458 msgid "Fix RGB fallback to match icc-color() value." msgstr "Labot RGB alternatīvo vērtību, lai atbilstu icc-color() vērtībai." #. Label -#: ../src/widgets/sp-color-icc-selector.cpp:559 +#: ../src/widgets/sp-color-icc-selector.cpp:561 #: ../src/widgets/sp-color-scales.cpp:437 #: ../src/widgets/sp-color-scales.cpp:463 #: ../src/widgets/sp-color-scales.cpp:494 @@ -24977,8 +24950,8 @@ msgstr "Labot RGB alternatīvo vērtību, lai atbilstu icc-color() vērtībai." msgid "_A:" msgstr "_A" -#: ../src/widgets/sp-color-icc-selector.cpp:570 -#: ../src/widgets/sp-color-icc-selector.cpp:583 +#: ../src/widgets/sp-color-icc-selector.cpp:572 +#: ../src/widgets/sp-color-icc-selector.cpp:585 #: ../src/widgets/sp-color-scales.cpp:438 #: ../src/widgets/sp-color-scales.cpp:439 #: ../src/widgets/sp-color-scales.cpp:464 @@ -25035,182 +25008,182 @@ msgstr "Vērtība" msgid "Type text in a text node" msgstr "Ierakstiet tekstu teksta mezglā" -#: ../src/widgets/star-toolbar.cpp:114 +#: ../src/widgets/star-toolbar.cpp:110 msgid "Star: Change number of corners" msgstr "Zvaigzne: manīt stūru skaitu" -#: ../src/widgets/star-toolbar.cpp:167 +#: ../src/widgets/star-toolbar.cpp:163 msgid "Star: Change spoke ratio" msgstr "Zvaigzne: manīt rādiusu attiecību" -#: ../src/widgets/star-toolbar.cpp:212 +#: ../src/widgets/star-toolbar.cpp:208 msgid "Make polygon" msgstr "Izveidot daudzstūri" -#: ../src/widgets/star-toolbar.cpp:212 +#: ../src/widgets/star-toolbar.cpp:208 msgid "Make star" msgstr "Izveidot zvaigzni" -#: ../src/widgets/star-toolbar.cpp:251 +#: ../src/widgets/star-toolbar.cpp:247 msgid "Star: Change rounding" msgstr "Zvaigzne: manīt noapaļojumu" -#: ../src/widgets/star-toolbar.cpp:291 +#: ../src/widgets/star-toolbar.cpp:287 msgid "Star: Change randomization" msgstr "Zvaigzne: manīt dažādošanu" -#: ../src/widgets/star-toolbar.cpp:475 +#: ../src/widgets/star-toolbar.cpp:471 msgid "Regular polygon (with one handle) instead of a star" msgstr "Vienādmalu daudzstūris (ar vienu turi) zvaigznes vietā" -#: ../src/widgets/star-toolbar.cpp:482 +#: ../src/widgets/star-toolbar.cpp:478 msgid "Star instead of a regular polygon (with one handle)" msgstr "Zvaigzne regulāra daudzstūra vietā (ar vienu turi)" -#: ../src/widgets/star-toolbar.cpp:503 +#: ../src/widgets/star-toolbar.cpp:499 msgid "triangle/tri-star" msgstr "trīsstūra/trīsstaru" -#: ../src/widgets/star-toolbar.cpp:503 +#: ../src/widgets/star-toolbar.cpp:499 msgid "square/quad-star" msgstr "četrstūra/četrstaru" -#: ../src/widgets/star-toolbar.cpp:503 +#: ../src/widgets/star-toolbar.cpp:499 msgid "pentagon/five-pointed star" msgstr "piecstūris/piecu staru zvaigzne" -#: ../src/widgets/star-toolbar.cpp:503 +#: ../src/widgets/star-toolbar.cpp:499 msgid "hexagon/six-pointed star" msgstr "sešstūris/sešuu staru zvaigzne" -#: ../src/widgets/star-toolbar.cpp:506 +#: ../src/widgets/star-toolbar.cpp:502 msgid "Corners" msgstr "Stūri" -#: ../src/widgets/star-toolbar.cpp:506 +#: ../src/widgets/star-toolbar.cpp:502 msgid "Corners:" msgstr "Stūri:" -#: ../src/widgets/star-toolbar.cpp:506 +#: ../src/widgets/star-toolbar.cpp:502 msgid "Number of corners of a polygon or star" msgstr "Daudzstūra stūru vai zvaigznes staru skaits" -#: ../src/widgets/star-toolbar.cpp:519 +#: ../src/widgets/star-toolbar.cpp:515 msgid "thin-ray star" msgstr "zvaigzne ar tieviem stariem" -#: ../src/widgets/star-toolbar.cpp:519 +#: ../src/widgets/star-toolbar.cpp:515 msgid "pentagram" msgstr "pentagramma" -#: ../src/widgets/star-toolbar.cpp:519 +#: ../src/widgets/star-toolbar.cpp:515 msgid "hexagram" msgstr "heksagramma" -#: ../src/widgets/star-toolbar.cpp:519 +#: ../src/widgets/star-toolbar.cpp:515 msgid "heptagram" msgstr "heptagramma" -#: ../src/widgets/star-toolbar.cpp:519 +#: ../src/widgets/star-toolbar.cpp:515 msgid "octagram" msgstr "octagramma" -#: ../src/widgets/star-toolbar.cpp:519 +#: ../src/widgets/star-toolbar.cpp:515 msgid "regular polygon" msgstr "regulārs daudzstūris" -#: ../src/widgets/star-toolbar.cpp:522 +#: ../src/widgets/star-toolbar.cpp:518 msgid "Spoke ratio" msgstr "Rādiusu attiecība" -#: ../src/widgets/star-toolbar.cpp:522 +#: ../src/widgets/star-toolbar.cpp:518 msgid "Spoke ratio:" msgstr "Rādiusu attiecība:" #. TRANSLATORS: Tip radius of a star is the distance from the center to the farthest handle. #. Base radius is the same for the closest handle. -#: ../src/widgets/star-toolbar.cpp:525 +#: ../src/widgets/star-toolbar.cpp:521 msgid "Base radius to tip radius ratio" msgstr "Bāzes un virsotnes rādiusu attiecība" -#: ../src/widgets/star-toolbar.cpp:543 +#: ../src/widgets/star-toolbar.cpp:539 msgid "stretched" msgstr "izstiepts" -#: ../src/widgets/star-toolbar.cpp:543 +#: ../src/widgets/star-toolbar.cpp:539 msgid "twisted" msgstr "savīts" -#: ../src/widgets/star-toolbar.cpp:543 +#: ../src/widgets/star-toolbar.cpp:539 msgid "slightly pinched" msgstr "viegli saknaibīts" -#: ../src/widgets/star-toolbar.cpp:543 +#: ../src/widgets/star-toolbar.cpp:539 msgid "NOT rounded" msgstr "Nenopaļoti" -#: ../src/widgets/star-toolbar.cpp:543 +#: ../src/widgets/star-toolbar.cpp:539 msgid "slightly rounded" msgstr "viegli noapaļoti" -#: ../src/widgets/star-toolbar.cpp:543 +#: ../src/widgets/star-toolbar.cpp:539 msgid "visibly rounded" msgstr "redzami noapaļoti" -#: ../src/widgets/star-toolbar.cpp:543 +#: ../src/widgets/star-toolbar.cpp:539 msgid "well rounded" msgstr "labi noapaļoti" -#: ../src/widgets/star-toolbar.cpp:543 +#: ../src/widgets/star-toolbar.cpp:539 msgid "amply rounded" msgstr "pilnīgi noapaļoti" -#: ../src/widgets/star-toolbar.cpp:543 -#: ../src/widgets/star-toolbar.cpp:558 +#: ../src/widgets/star-toolbar.cpp:539 +#: ../src/widgets/star-toolbar.cpp:554 msgid "blown up" msgstr "uzpūsts" -#: ../src/widgets/star-toolbar.cpp:546 +#: ../src/widgets/star-toolbar.cpp:542 msgid "Rounded:" msgstr "Noapaļots:" -#: ../src/widgets/star-toolbar.cpp:546 +#: ../src/widgets/star-toolbar.cpp:542 msgid "How much rounded are the corners (0 for sharp)" msgstr "Cik noapaļoti ir stūri (0 - asi)" -#: ../src/widgets/star-toolbar.cpp:558 +#: ../src/widgets/star-toolbar.cpp:554 msgid "NOT randomized" msgstr "Nav dažādots" -#: ../src/widgets/star-toolbar.cpp:558 +#: ../src/widgets/star-toolbar.cpp:554 msgid "slightly irregular" msgstr "viegli neregulārs" -#: ../src/widgets/star-toolbar.cpp:558 +#: ../src/widgets/star-toolbar.cpp:554 msgid "visibly randomized" msgstr "ievērojami dažādots" -#: ../src/widgets/star-toolbar.cpp:558 +#: ../src/widgets/star-toolbar.cpp:554 msgid "strongly randomized" msgstr "stipri dažādots" -#: ../src/widgets/star-toolbar.cpp:561 +#: ../src/widgets/star-toolbar.cpp:557 msgid "Randomized" msgstr "Dažādots" -#: ../src/widgets/star-toolbar.cpp:561 +#: ../src/widgets/star-toolbar.cpp:557 msgid "Randomized:" msgstr "Dažādots:" -#: ../src/widgets/star-toolbar.cpp:561 +#: ../src/widgets/star-toolbar.cpp:557 msgid "Scatter randomly the corners and angles" msgstr "Brīvi izkliedēt stūrus un leņķus" -#: ../src/widgets/stroke-style.cpp:185 +#: ../src/widgets/stroke-style.cpp:188 msgid "Stroke width" msgstr "Apmales platums" -#: ../src/widgets/stroke-style.cpp:187 +#: ../src/widgets/stroke-style.cpp:190 msgctxt "Stroke width" msgid "_Width:" msgstr "_Platums:" @@ -25218,87 +25191,87 @@ msgstr "_Platums:" #. TRANSLATORS: Miter join: joining lines with a sharp (pointed) corner. #. For an example, draw a triangle with a large stroke width and modify the #. "Join" option (in the Fill and Stroke dialog). -#: ../src/widgets/stroke-style.cpp:232 +#: ../src/widgets/stroke-style.cpp:235 msgid "Miter join" msgstr "Salaidums" #. TRANSLATORS: Round join: joining lines with a rounded corner. #. For an example, draw a triangle with a large stroke width and modify the #. "Join" option (in the Fill and Stroke dialog). -#: ../src/widgets/stroke-style.cpp:240 +#: ../src/widgets/stroke-style.cpp:243 msgid "Round join" msgstr "Apaļš savienojums" #. TRANSLATORS: Bevel join: joining lines with a blunted (flattened) corner. #. For an example, draw a triangle with a large stroke width and modify the #. "Join" option (in the Fill and Stroke dialog). -#: ../src/widgets/stroke-style.cpp:248 +#: ../src/widgets/stroke-style.cpp:251 msgid "Bevel join" msgstr "Nošķelts savienojums" -#: ../src/widgets/stroke-style.cpp:273 +#: ../src/widgets/stroke-style.cpp:276 msgid "Miter _limit:" msgstr "Salaiduma ierobežojums:" #. Cap type #. TRANSLATORS: cap type specifies the shape for the ends of lines #. spw_label(t, _("_Cap:"), 0, i); -#: ../src/widgets/stroke-style.cpp:289 +#: ../src/widgets/stroke-style.cpp:292 msgid "Cap:" msgstr "Līnijas gals:" #. TRANSLATORS: Butt cap: the line shape does not extend beyond the end point #. of the line; the ends of the line are square -#: ../src/widgets/stroke-style.cpp:300 +#: ../src/widgets/stroke-style.cpp:303 msgid "Butt cap" msgstr "Nošķelts gals" #. TRANSLATORS: Round cap: the line shape extends beyond the end point of the #. line; the ends of the line are rounded -#: ../src/widgets/stroke-style.cpp:307 +#: ../src/widgets/stroke-style.cpp:310 msgid "Round cap" msgstr "Apaļs gals" #. TRANSLATORS: Square cap: the line shape extends beyond the end point of the #. line; the ends of the line are square -#: ../src/widgets/stroke-style.cpp:314 +#: ../src/widgets/stroke-style.cpp:317 msgid "Square cap" msgstr "Stūrains, noslēgts gals" #. Dash -#: ../src/widgets/stroke-style.cpp:319 +#: ../src/widgets/stroke-style.cpp:322 msgid "Dashes:" msgstr "Svītras:" #. Drop down marker selectors #. TRANSLATORS: Path markers are an SVG feature that allows you to attach arbitrary shapes #. (arrowheads, bullets, faces, whatever) to the start, end, or middle nodes of a path. -#: ../src/widgets/stroke-style.cpp:345 +#: ../src/widgets/stroke-style.cpp:348 msgid "Markers:" msgstr "Marķieri:" -#: ../src/widgets/stroke-style.cpp:351 +#: ../src/widgets/stroke-style.cpp:354 msgid "Start Markers are drawn on the first node of a path or shape" msgstr "Sākuma marķieri tiek pievienoti ceļa vai figūras pirmajam mezglam" -#: ../src/widgets/stroke-style.cpp:360 +#: ../src/widgets/stroke-style.cpp:363 msgid "Mid Markers are drawn on every node of a path or shape except the first and last nodes" msgstr "Vidus marķieri tiek pievienoti katram ceļa vai figūras mezglam, izņemot pirmo un pēdējo" -#: ../src/widgets/stroke-style.cpp:369 +#: ../src/widgets/stroke-style.cpp:372 msgid "End Markers are drawn on the last node of a path or shape" msgstr "Beigu marķieri tiek pievienoti ceļa vai figūras pēdējam mezglam" -#: ../src/widgets/stroke-style.cpp:487 +#: ../src/widgets/stroke-style.cpp:490 msgid "Set markers" msgstr "Iestatīt marķierus" -#: ../src/widgets/stroke-style.cpp:1075 -#: ../src/widgets/stroke-style.cpp:1160 +#: ../src/widgets/stroke-style.cpp:1020 +#: ../src/widgets/stroke-style.cpp:1105 msgid "Set stroke style" msgstr "Iestatīt apmales stilu" -#: ../src/widgets/stroke-style.cpp:1248 +#: ../src/widgets/stroke-style.cpp:1193 msgid "Set marker color" msgstr "Iestatīt marķiera krāsu" @@ -25306,618 +25279,618 @@ msgstr "Iestatīt marķiera krāsu" msgid "Change swatch color" msgstr "Mainiet krāsu paraugu krāsu" -#: ../src/widgets/text-toolbar.cpp:178 +#: ../src/widgets/text-toolbar.cpp:174 msgid "Text: Change font family" msgstr "Teksts: mainīt fonta saimi" -#: ../src/widgets/text-toolbar.cpp:242 +#: ../src/widgets/text-toolbar.cpp:238 msgid "Text: Change font size" msgstr "Teksts: mainīt fonta izmēru" -#: ../src/widgets/text-toolbar.cpp:280 +#: ../src/widgets/text-toolbar.cpp:276 msgid "Text: Change font style" msgstr "Teksts: mainīt fonta stilu" -#: ../src/widgets/text-toolbar.cpp:358 +#: ../src/widgets/text-toolbar.cpp:354 msgid "Text: Change superscript or subscript" msgstr "Teksts: mainīt uz augšrakstu vai apakšrakstu" -#: ../src/widgets/text-toolbar.cpp:503 +#: ../src/widgets/text-toolbar.cpp:499 msgid "Text: Change alignment" msgstr "Teksts: mainīt līdzināšanu" -#: ../src/widgets/text-toolbar.cpp:546 +#: ../src/widgets/text-toolbar.cpp:542 msgid "Text: Change line-height" msgstr "Teksts: mainīt rindas augstumu" -#: ../src/widgets/text-toolbar.cpp:595 +#: ../src/widgets/text-toolbar.cpp:591 msgid "Text: Change word-spacing" msgstr "Teksts: mainīt attālumu starp vārdiem" -#: ../src/widgets/text-toolbar.cpp:636 +#: ../src/widgets/text-toolbar.cpp:632 msgid "Text: Change letter-spacing" msgstr "Teksts: mainīt attālumu starp burtiem" -#: ../src/widgets/text-toolbar.cpp:676 +#: ../src/widgets/text-toolbar.cpp:672 msgid "Text: Change dx (kern)" msgstr "Teksts: mainīt dx (rakstsavirzi)" -#: ../src/widgets/text-toolbar.cpp:710 +#: ../src/widgets/text-toolbar.cpp:706 msgid "Text: Change dy" msgstr "Teksts: mainīt dy" -#: ../src/widgets/text-toolbar.cpp:745 +#: ../src/widgets/text-toolbar.cpp:741 msgid "Text: Change rotate" msgstr "Teksts: mainīt pagriezienu" -#: ../src/widgets/text-toolbar.cpp:793 +#: ../src/widgets/text-toolbar.cpp:789 msgid "Text: Change orientation" msgstr "Teksts: mainīt orientāciju" -#: ../src/widgets/text-toolbar.cpp:1235 +#: ../src/widgets/text-toolbar.cpp:1226 msgid "Font Family" msgstr "Fonta saime" -#: ../src/widgets/text-toolbar.cpp:1236 +#: ../src/widgets/text-toolbar.cpp:1227 msgid "Select Font Family (Alt-X to access)" msgstr "Izvēlieties fontu ģimeni (saīsne - Alt-X)" #. Focus widget #. Enable entry completion -#: ../src/widgets/text-toolbar.cpp:1246 +#: ../src/widgets/text-toolbar.cpp:1237 msgid "Select all text with this font-family" msgstr "Atlasīt visu tekstu, kas formatēts ar šo fontu grupu" -#: ../src/widgets/text-toolbar.cpp:1250 +#: ../src/widgets/text-toolbar.cpp:1241 msgid "Font not found on system" msgstr "Fonts nav atrasts" -#: ../src/widgets/text-toolbar.cpp:1309 +#: ../src/widgets/text-toolbar.cpp:1300 msgid "Font Style" msgstr "Fonta stils" -#: ../src/widgets/text-toolbar.cpp:1310 +#: ../src/widgets/text-toolbar.cpp:1301 msgid "Font style" msgstr "Fonta stils" #. Name -#: ../src/widgets/text-toolbar.cpp:1327 +#: ../src/widgets/text-toolbar.cpp:1318 msgid "Toggle Superscript" msgstr "Ieslēgt augšrakstu" #. Label -#: ../src/widgets/text-toolbar.cpp:1328 +#: ../src/widgets/text-toolbar.cpp:1319 msgid "Toggle superscript" msgstr "Ieslēgt augšrakstu" #. Name -#: ../src/widgets/text-toolbar.cpp:1340 +#: ../src/widgets/text-toolbar.cpp:1331 msgid "Toggle Subscript" msgstr "Ieslēgt apakšrakstu" #. Label -#: ../src/widgets/text-toolbar.cpp:1341 +#: ../src/widgets/text-toolbar.cpp:1332 msgid "Toggle subscript" msgstr "Ieslēgt apakšrakstu" -#: ../src/widgets/text-toolbar.cpp:1382 +#: ../src/widgets/text-toolbar.cpp:1373 msgid "Justify" msgstr "Izlīdzināt" #. Name -#: ../src/widgets/text-toolbar.cpp:1389 +#: ../src/widgets/text-toolbar.cpp:1380 msgid "Alignment" msgstr "Izlīdzinājums" #. Label -#: ../src/widgets/text-toolbar.cpp:1390 +#: ../src/widgets/text-toolbar.cpp:1381 msgid "Text alignment" msgstr "Teksta līdzināšana" -#: ../src/widgets/text-toolbar.cpp:1417 +#: ../src/widgets/text-toolbar.cpp:1408 msgid "Horizontal" msgstr "Horizontāls" -#: ../src/widgets/text-toolbar.cpp:1424 +#: ../src/widgets/text-toolbar.cpp:1415 msgid "Vertical" msgstr "Vertikāls" #. Label -#: ../src/widgets/text-toolbar.cpp:1431 +#: ../src/widgets/text-toolbar.cpp:1422 msgid "Text orientation" msgstr "Teksta orientācija" #. Drop down menu -#: ../src/widgets/text-toolbar.cpp:1454 +#: ../src/widgets/text-toolbar.cpp:1445 msgid "Smaller spacing" msgstr "Mazāka atstarpe" -#: ../src/widgets/text-toolbar.cpp:1454 -#: ../src/widgets/text-toolbar.cpp:1485 -#: ../src/widgets/text-toolbar.cpp:1516 +#: ../src/widgets/text-toolbar.cpp:1445 +#: ../src/widgets/text-toolbar.cpp:1475 +#: ../src/widgets/text-toolbar.cpp:1505 msgctxt "Text tool" msgid "Normal" msgstr "Parasts" -#: ../src/widgets/text-toolbar.cpp:1454 +#: ../src/widgets/text-toolbar.cpp:1445 msgid "Larger spacing" msgstr "Lielāka atstarpe" #. name -#: ../src/widgets/text-toolbar.cpp:1459 +#: ../src/widgets/text-toolbar.cpp:1450 msgid "Line Height" msgstr "Rindas augstums" #. label -#: ../src/widgets/text-toolbar.cpp:1460 +#: ../src/widgets/text-toolbar.cpp:1451 msgid "Line:" msgstr "Rinda:" #. short label -#: ../src/widgets/text-toolbar.cpp:1461 +#: ../src/widgets/text-toolbar.cpp:1452 msgid "Spacing between lines (times font size)" msgstr "Atstarpe starp rindām (fonta izmēra reizēs)" #. Drop down menu -#: ../src/widgets/text-toolbar.cpp:1485 -#: ../src/widgets/text-toolbar.cpp:1516 +#: ../src/widgets/text-toolbar.cpp:1475 +#: ../src/widgets/text-toolbar.cpp:1505 msgid "Negative spacing" msgstr "Negatīva atstarpe" -#: ../src/widgets/text-toolbar.cpp:1485 -#: ../src/widgets/text-toolbar.cpp:1516 +#: ../src/widgets/text-toolbar.cpp:1475 +#: ../src/widgets/text-toolbar.cpp:1505 msgid "Positive spacing" msgstr "Pozitīva atstarpe" #. name -#: ../src/widgets/text-toolbar.cpp:1490 +#: ../src/widgets/text-toolbar.cpp:1480 msgid "Word spacing" msgstr "Vārdu atstatums" #. label -#: ../src/widgets/text-toolbar.cpp:1491 +#: ../src/widgets/text-toolbar.cpp:1481 msgid "Word:" msgstr "Vārds:" #. short label -#: ../src/widgets/text-toolbar.cpp:1492 +#: ../src/widgets/text-toolbar.cpp:1482 msgid "Spacing between words (px)" msgstr "Atstarpe starp vārdiem (px)" #. name -#: ../src/widgets/text-toolbar.cpp:1521 +#: ../src/widgets/text-toolbar.cpp:1510 msgid "Letter spacing" msgstr "Burtu atstatums" #. label -#: ../src/widgets/text-toolbar.cpp:1522 +#: ../src/widgets/text-toolbar.cpp:1511 msgid "Letter:" msgstr "Burts:" #. short label -#: ../src/widgets/text-toolbar.cpp:1523 +#: ../src/widgets/text-toolbar.cpp:1512 msgid "Spacing between letters (px)" msgstr "Atstarpe starp burtiem (px)" #. name -#: ../src/widgets/text-toolbar.cpp:1552 +#: ../src/widgets/text-toolbar.cpp:1540 msgid "Kerning" msgstr "Rakstsavirze" #. label -#: ../src/widgets/text-toolbar.cpp:1553 +#: ../src/widgets/text-toolbar.cpp:1541 msgid "Kern:" msgstr "Rakstsavirze:" #. short label -#: ../src/widgets/text-toolbar.cpp:1554 +#: ../src/widgets/text-toolbar.cpp:1542 msgid "Horizontal kerning (px)" msgstr "Horizontālā rakstsavirze (px)" #. name -#: ../src/widgets/text-toolbar.cpp:1583 +#: ../src/widgets/text-toolbar.cpp:1570 msgid "Vertical Shift" msgstr "Vertikālā pārbīde" #. label -#: ../src/widgets/text-toolbar.cpp:1584 +#: ../src/widgets/text-toolbar.cpp:1571 msgid "Vert:" msgstr "Vert:" #. short label -#: ../src/widgets/text-toolbar.cpp:1585 +#: ../src/widgets/text-toolbar.cpp:1572 msgid "Vertical shift (px)" msgstr "Vertikālā pārbīde (px)" #. name -#: ../src/widgets/text-toolbar.cpp:1614 +#: ../src/widgets/text-toolbar.cpp:1600 msgid "Letter rotation" msgstr "Burta pagrieziens" #. label -#: ../src/widgets/text-toolbar.cpp:1615 +#: ../src/widgets/text-toolbar.cpp:1601 msgid "Rot:" msgstr "Pagr.:" #. short label -#: ../src/widgets/text-toolbar.cpp:1616 +#: ../src/widgets/text-toolbar.cpp:1602 msgid "Character rotation (degrees)" msgstr "Rakstzīmju pagrieziens (grādos)" -#: ../src/widgets/toolbox.cpp:181 +#: ../src/widgets/toolbox.cpp:179 msgid "Color/opacity used for color tweaking" msgstr "Krāsu korekcijai izmantojamā krāsa/necauspīdība" -#: ../src/widgets/toolbox.cpp:189 +#: ../src/widgets/toolbox.cpp:187 msgid "Style of new stars" msgstr "Jauno zvaigžņu stils" -#: ../src/widgets/toolbox.cpp:191 +#: ../src/widgets/toolbox.cpp:189 msgid "Style of new rectangles" msgstr "Jauno taisnstūru stils" -#: ../src/widgets/toolbox.cpp:193 +#: ../src/widgets/toolbox.cpp:191 msgid "Style of new 3D boxes" msgstr "Jauno 3D paralēlskaldņu stils" -#: ../src/widgets/toolbox.cpp:195 +#: ../src/widgets/toolbox.cpp:193 msgid "Style of new ellipses" msgstr "Jauno elipšu stils" -#: ../src/widgets/toolbox.cpp:197 +#: ../src/widgets/toolbox.cpp:195 msgid "Style of new spirals" msgstr "Jauno spirāļu stils" -#: ../src/widgets/toolbox.cpp:199 +#: ../src/widgets/toolbox.cpp:197 msgid "Style of new paths created by Pencil" msgstr "Jauno, ar zīmuļa rīku veidoto ceļu stils" -#: ../src/widgets/toolbox.cpp:201 +#: ../src/widgets/toolbox.cpp:199 msgid "Style of new paths created by Pen" msgstr "Jauno, ar spalvas rīku veidoto ceļu stils" -#: ../src/widgets/toolbox.cpp:203 +#: ../src/widgets/toolbox.cpp:201 msgid "Style of new calligraphic strokes" msgstr "Jauno kaligrāfisko apmaļu stils" +#: ../src/widgets/toolbox.cpp:203 #: ../src/widgets/toolbox.cpp:205 -#: ../src/widgets/toolbox.cpp:207 msgid "TBD" msgstr "TBD" -#: ../src/widgets/toolbox.cpp:219 +#: ../src/widgets/toolbox.cpp:217 msgid "Style of Paint Bucket fill objects" msgstr "Krāsas spaiņa objektu aizpildījuma stils" -#: ../src/widgets/toolbox.cpp:1682 +#: ../src/widgets/toolbox.cpp:1676 msgid "Bounding box" msgstr "Robežrāmis" -#: ../src/widgets/toolbox.cpp:1682 +#: ../src/widgets/toolbox.cpp:1676 msgid "Snap bounding boxes" msgstr "Piesaistīt robežrāmjus" -#: ../src/widgets/toolbox.cpp:1691 +#: ../src/widgets/toolbox.cpp:1685 msgid "Bounding box edges" msgstr "Robežrāmju malas" -#: ../src/widgets/toolbox.cpp:1691 +#: ../src/widgets/toolbox.cpp:1685 msgid "Snap to edges of a bounding box" msgstr "Piesaistīt robežrāmju malām" -#: ../src/widgets/toolbox.cpp:1700 +#: ../src/widgets/toolbox.cpp:1694 msgid "Bounding box corners" msgstr "Robežrāmju stūri" -#: ../src/widgets/toolbox.cpp:1700 +#: ../src/widgets/toolbox.cpp:1694 msgid "Snap bounding box corners" msgstr "Piesaistīt robežrāmju stūriem" -#: ../src/widgets/toolbox.cpp:1709 +#: ../src/widgets/toolbox.cpp:1703 msgid "BBox Edge Midpoints" msgstr "Robežrāmju malu viduspunktiem" -#: ../src/widgets/toolbox.cpp:1709 +#: ../src/widgets/toolbox.cpp:1703 msgid "Snap midpoints of bounding box edges" msgstr "Piesaistīt robežrāmju malu viduspunktiem" -#: ../src/widgets/toolbox.cpp:1719 +#: ../src/widgets/toolbox.cpp:1713 msgid "BBox Centers" msgstr "Robežrāmju centriem" -#: ../src/widgets/toolbox.cpp:1719 +#: ../src/widgets/toolbox.cpp:1713 msgid "Snapping centers of bounding boxes" msgstr "Piesaistīt robežrāmju centriem" -#: ../src/widgets/toolbox.cpp:1728 +#: ../src/widgets/toolbox.cpp:1722 msgid "Snap nodes, paths, and handles" msgstr "Piesaistīt mezglus, ceļus un turus" -#: ../src/widgets/toolbox.cpp:1736 +#: ../src/widgets/toolbox.cpp:1730 msgid "Snap to paths" msgstr "Piesaistīt ceļiem" -#: ../src/widgets/toolbox.cpp:1745 +#: ../src/widgets/toolbox.cpp:1739 msgid "Path intersections" msgstr "Ceļu krustpunkti" -#: ../src/widgets/toolbox.cpp:1745 +#: ../src/widgets/toolbox.cpp:1739 msgid "Snap to path intersections" msgstr "Piesaistīt ceļu krustpunktiem" -#: ../src/widgets/toolbox.cpp:1754 +#: ../src/widgets/toolbox.cpp:1748 msgid "To nodes" msgstr "Pie mezgliem" -#: ../src/widgets/toolbox.cpp:1754 +#: ../src/widgets/toolbox.cpp:1748 msgid "Snap cusp nodes, incl. rectangle corners" msgstr "Piesaistīt asos mezglus, ieskaitot taisnstūru stūrus" -#: ../src/widgets/toolbox.cpp:1763 +#: ../src/widgets/toolbox.cpp:1757 msgid "Smooth nodes" msgstr "Gludi mezgli" -#: ../src/widgets/toolbox.cpp:1763 +#: ../src/widgets/toolbox.cpp:1757 msgid "Snap smooth nodes, incl. quadrant points of ellipses" msgstr "Piesaistīt gludos mezglus, ieskaitot elipšu kvadrantu punktus" -#: ../src/widgets/toolbox.cpp:1772 +#: ../src/widgets/toolbox.cpp:1766 msgid "Line Midpoints" msgstr "Līnijas viduspunkti" -#: ../src/widgets/toolbox.cpp:1772 +#: ../src/widgets/toolbox.cpp:1766 msgid "Snap midpoints of line segments" msgstr "Piesaistīt līnijas posmu viduspunktus" -#: ../src/widgets/toolbox.cpp:1781 +#: ../src/widgets/toolbox.cpp:1775 msgid "Others" msgstr "Citi" -#: ../src/widgets/toolbox.cpp:1781 +#: ../src/widgets/toolbox.cpp:1775 msgid "Snap other points (centers, guide origins, gradient handles, etc.)" msgstr "Piesaistīt citus punktus (centrus, vadlīniju sākumus, krāsu pāreju turus utt.)" -#: ../src/widgets/toolbox.cpp:1789 +#: ../src/widgets/toolbox.cpp:1783 msgid "Object Centers" msgstr "Objekta centri" -#: ../src/widgets/toolbox.cpp:1789 +#: ../src/widgets/toolbox.cpp:1783 msgid "Snap centers of objects" msgstr "Piesaistīt objektu centrus" -#: ../src/widgets/toolbox.cpp:1798 +#: ../src/widgets/toolbox.cpp:1792 msgid "Rotation Centers" msgstr "Griešanās centrs" -#: ../src/widgets/toolbox.cpp:1798 +#: ../src/widgets/toolbox.cpp:1792 msgid "Snap an item's rotation center" msgstr "Piesaistīt objekta griešanās centram" -#: ../src/widgets/toolbox.cpp:1807 +#: ../src/widgets/toolbox.cpp:1801 msgid "Text baseline" msgstr "Teksta bāzes līnija" -#: ../src/widgets/toolbox.cpp:1807 +#: ../src/widgets/toolbox.cpp:1801 msgid "Snap text anchors and baselines" msgstr "Piesaistīt teksta enkurus un bāzes līnijas" -#: ../src/widgets/toolbox.cpp:1817 +#: ../src/widgets/toolbox.cpp:1811 msgid "Page border" msgstr "Lapas robeža" -#: ../src/widgets/toolbox.cpp:1817 +#: ../src/widgets/toolbox.cpp:1811 msgid "Snap to the page border" msgstr "Piesaistīt lapas robežām" -#: ../src/widgets/toolbox.cpp:1826 +#: ../src/widgets/toolbox.cpp:1820 msgid "Snap to grids" msgstr "Piesaistīt režģim" -#: ../src/widgets/toolbox.cpp:1835 +#: ../src/widgets/toolbox.cpp:1829 msgid "Snap guides" msgstr "Piesaistes palīglīnijas" #. Width -#: ../src/widgets/tweak-toolbar.cpp:143 +#: ../src/widgets/tweak-toolbar.cpp:139 msgid "(pinch tweak)" msgstr "(šaura ota)" -#: ../src/widgets/tweak-toolbar.cpp:143 +#: ../src/widgets/tweak-toolbar.cpp:139 msgid "(broad tweak)" msgstr "(plata ota)" -#: ../src/widgets/tweak-toolbar.cpp:146 +#: ../src/widgets/tweak-toolbar.cpp:142 msgid "The width of the tweak area (relative to the visible canvas area)" msgstr "Pieskaņošanas laukuma platums (attiecībā pret redzamo audekla laukumu)" #. Force -#: ../src/widgets/tweak-toolbar.cpp:160 +#: ../src/widgets/tweak-toolbar.cpp:156 msgid "(minimum force)" msgstr "(minimāls spēks)" -#: ../src/widgets/tweak-toolbar.cpp:160 +#: ../src/widgets/tweak-toolbar.cpp:156 msgid "(maximum force)" msgstr "(maksimāls spēks)" -#: ../src/widgets/tweak-toolbar.cpp:163 +#: ../src/widgets/tweak-toolbar.cpp:159 msgid "Force" msgstr "Spēks" -#: ../src/widgets/tweak-toolbar.cpp:163 +#: ../src/widgets/tweak-toolbar.cpp:159 msgid "Force:" msgstr "Spēks" -#: ../src/widgets/tweak-toolbar.cpp:163 +#: ../src/widgets/tweak-toolbar.cpp:159 msgid "The force of the tweak action" msgstr "Pieskaņošanas darbības spēks" -#: ../src/widgets/tweak-toolbar.cpp:181 +#: ../src/widgets/tweak-toolbar.cpp:177 msgid "Move mode" msgstr "Pārvietot mezglu" -#: ../src/widgets/tweak-toolbar.cpp:182 +#: ../src/widgets/tweak-toolbar.cpp:178 msgid "Move objects in any direction" msgstr "Pārvietot objektu jebkurā virzienā" -#: ../src/widgets/tweak-toolbar.cpp:188 +#: ../src/widgets/tweak-toolbar.cpp:184 msgid "Move in/out mode" msgstr "Iekšā/ārā pārvietošanas režīms" -#: ../src/widgets/tweak-toolbar.cpp:189 +#: ../src/widgets/tweak-toolbar.cpp:185 msgid "Move objects towards cursor; with Shift from cursor" msgstr "Pārvietot objektus uz kursora pusi; ar Shift - prom no kursora" -#: ../src/widgets/tweak-toolbar.cpp:195 +#: ../src/widgets/tweak-toolbar.cpp:191 msgid "Move jitter mode" msgstr "Trīcošas pārvietošanas režīms" -#: ../src/widgets/tweak-toolbar.cpp:196 +#: ../src/widgets/tweak-toolbar.cpp:192 msgid "Move objects in random directions" msgstr "Pārvietot objektus dažādos virzienos" -#: ../src/widgets/tweak-toolbar.cpp:202 +#: ../src/widgets/tweak-toolbar.cpp:198 msgid "Scale mode" msgstr "Mērogošanas režīms" -#: ../src/widgets/tweak-toolbar.cpp:203 +#: ../src/widgets/tweak-toolbar.cpp:199 msgid "Shrink objects, with Shift enlarge" msgstr "Samazināt objektus, ar Shift - palielināt" -#: ../src/widgets/tweak-toolbar.cpp:209 +#: ../src/widgets/tweak-toolbar.cpp:205 msgid "Rotate mode" msgstr "Griešanas režīms" -#: ../src/widgets/tweak-toolbar.cpp:210 +#: ../src/widgets/tweak-toolbar.cpp:206 msgid "Rotate objects, with Shift counterclockwise" msgstr "Griezt objektus, ar Shift - pretēji pulksteņrādītājam" -#: ../src/widgets/tweak-toolbar.cpp:216 +#: ../src/widgets/tweak-toolbar.cpp:212 msgid "Duplicate/delete mode" msgstr "Dublēšanas/dzēšanas režīms" -#: ../src/widgets/tweak-toolbar.cpp:217 +#: ../src/widgets/tweak-toolbar.cpp:213 msgid "Duplicate objects, with Shift delete" msgstr "Dublēt objektus, ar Shift - dzēst" -#: ../src/widgets/tweak-toolbar.cpp:223 +#: ../src/widgets/tweak-toolbar.cpp:219 msgid "Push mode" msgstr "Stumšanas režīms" -#: ../src/widgets/tweak-toolbar.cpp:224 +#: ../src/widgets/tweak-toolbar.cpp:220 msgid "Push parts of paths in any direction" msgstr "Stumiet ceļa daļas jebkurā virzienā" -#: ../src/widgets/tweak-toolbar.cpp:230 +#: ../src/widgets/tweak-toolbar.cpp:226 msgid "Shrink/grow mode" msgstr "Samazināšanas/palielināšanas režīms" # Re kur ir inset/outset!!! -#: ../src/widgets/tweak-toolbar.cpp:231 +#: ../src/widgets/tweak-toolbar.cpp:227 msgid "Shrink (inset) parts of paths; with Shift grow (outset)" msgstr "Saīsināt ceļu posmus; ar <b>Shitf</b> - pagarināt" -#: ../src/widgets/tweak-toolbar.cpp:237 +#: ../src/widgets/tweak-toolbar.cpp:233 msgid "Attract/repel mode" msgstr "Pievilkšanas/atgrūšanas režīms" -#: ../src/widgets/tweak-toolbar.cpp:238 +#: ../src/widgets/tweak-toolbar.cpp:234 msgid "Attract parts of paths towards cursor; with Shift from cursor" msgstr "Pievilkt ceļa daļas uz kursora pusi; ar Shift - prom no kursora" -#: ../src/widgets/tweak-toolbar.cpp:244 +#: ../src/widgets/tweak-toolbar.cpp:240 msgid "Roughen mode" msgstr "Raupjošanas režīms" -#: ../src/widgets/tweak-toolbar.cpp:245 +#: ../src/widgets/tweak-toolbar.cpp:241 msgid "Roughen parts of paths" msgstr "Raupjot ceļu daļas" -#: ../src/widgets/tweak-toolbar.cpp:251 +#: ../src/widgets/tweak-toolbar.cpp:247 msgid "Color paint mode" msgstr "Objektu krāsošanas režīms" -#: ../src/widgets/tweak-toolbar.cpp:252 +#: ../src/widgets/tweak-toolbar.cpp:248 msgid "Paint the tool's color upon selected objects" msgstr "Krāsot atlasītos objektus ar rīka krāsu" -#: ../src/widgets/tweak-toolbar.cpp:258 +#: ../src/widgets/tweak-toolbar.cpp:254 msgid "Color jitter mode" msgstr "Trīcošu krāsu režīms" -#: ../src/widgets/tweak-toolbar.cpp:259 +#: ../src/widgets/tweak-toolbar.cpp:255 msgid "Jitter the colors of selected objects" msgstr "Satricināt atlasītā objekta krāsas" -#: ../src/widgets/tweak-toolbar.cpp:265 +#: ../src/widgets/tweak-toolbar.cpp:261 msgid "Blur mode" msgstr "Izpludināšanas režīms" -#: ../src/widgets/tweak-toolbar.cpp:266 +#: ../src/widgets/tweak-toolbar.cpp:262 msgid "Blur selected objects more; with Shift, blur less" msgstr "Izpludināt atlasītos objektu vairāk; ar Shift - mazāk" -#: ../src/widgets/tweak-toolbar.cpp:293 +#: ../src/widgets/tweak-toolbar.cpp:289 msgid "Channels:" msgstr "Kanāli:" -#: ../src/widgets/tweak-toolbar.cpp:305 +#: ../src/widgets/tweak-toolbar.cpp:301 msgid "In color mode, act on objects' hue" msgstr "Krāsu režīmā iedarboties uz objekta nokrāsu" #. TRANSLATORS: "H" here stands for hue -#: ../src/widgets/tweak-toolbar.cpp:309 +#: ../src/widgets/tweak-toolbar.cpp:305 msgid "H" msgstr "H" -#: ../src/widgets/tweak-toolbar.cpp:321 +#: ../src/widgets/tweak-toolbar.cpp:317 msgid "In color mode, act on objects' saturation" msgstr "Krāsu režīmā iedarboties uz objekta piesātinājumu" #. TRANSLATORS: "S" here stands for Saturation -#: ../src/widgets/tweak-toolbar.cpp:325 +#: ../src/widgets/tweak-toolbar.cpp:321 msgid "S" msgstr "S" -#: ../src/widgets/tweak-toolbar.cpp:337 +#: ../src/widgets/tweak-toolbar.cpp:333 msgid "In color mode, act on objects' lightness" msgstr "Krāsu režīmā iedarboties uz objekta gaišumu" #. TRANSLATORS: "L" here stands for Lightness -#: ../src/widgets/tweak-toolbar.cpp:341 +#: ../src/widgets/tweak-toolbar.cpp:337 msgid "L" msgstr "L" -#: ../src/widgets/tweak-toolbar.cpp:353 +#: ../src/widgets/tweak-toolbar.cpp:349 msgid "In color mode, act on objects' opacity" msgstr "Krāsu režīmā iedarboties uz objekta necauspīdīgumu" #. TRANSLATORS: "O" here stands for Opacity -#: ../src/widgets/tweak-toolbar.cpp:357 +#: ../src/widgets/tweak-toolbar.cpp:353 msgid "O" msgstr "O" #. Fidelity -#: ../src/widgets/tweak-toolbar.cpp:368 +#: ../src/widgets/tweak-toolbar.cpp:364 msgid "(rough, simplified)" msgstr "(raupjš, vienkāršots)" -#: ../src/widgets/tweak-toolbar.cpp:368 +#: ../src/widgets/tweak-toolbar.cpp:364 msgid "(fine, but many nodes)" msgstr "(precīzs, taču daudz mezglu)" -#: ../src/widgets/tweak-toolbar.cpp:371 +#: ../src/widgets/tweak-toolbar.cpp:367 msgid "Fidelity" msgstr "Precizitāte" -#: ../src/widgets/tweak-toolbar.cpp:371 +#: ../src/widgets/tweak-toolbar.cpp:367 msgid "Fidelity:" msgstr "Precizitāte:" -#: ../src/widgets/tweak-toolbar.cpp:372 +#: ../src/widgets/tweak-toolbar.cpp:368 msgid "Low fidelity simplifies paths; high fidelity preserves path features but may generate a lot of new nodes" msgstr "Zema precizitāte vienkāršo ceļus, augsta precizitāte saglabā ceļa īpatnības, taču vienlaikus var izveidot daudz jaunu mezglu" -#: ../src/widgets/tweak-toolbar.cpp:391 +#: ../src/widgets/tweak-toolbar.cpp:387 msgid "Use the pressure of the input device to alter the force of tweak action" msgstr "Izmantojiet spiedienu uz ievadierīci, lai mainītu pieskaņošanas darbības spēku" @@ -25970,6 +25943,11 @@ msgstr "Pusperimetrs (px):" msgid "Area (px^2): " msgstr "Laukums (px^2): " +#: ../share/extensions/dxf_input.py:504 +#, python-format +msgid "%d ENTITIES of type POLYLINE encountered and ignored. Please try to convert to Release 13 format using QCad." +msgstr "Atrastas un ignorētas %d POLYLINE tipa ENTITIES. Lūdzu, mēģiniet pārvērst Release 13 formātā izmantojot QCad." + #: ../share/extensions/dxf_outlines.py:49 msgid "Failed to import the numpy or numpy.linalg modules. These modules are required by this extension. Please install them and try again." msgstr "Neizdevās importēt numpy vai numpy.linalg moduļus. Šie moduļi ir nepieciešami šim paplašinājuma. Lūdzu, uzstādiet tos un mēģiniet vēlreiz." @@ -26244,6 +26222,14 @@ msgstr "Šim paplašinājumam nepieciešams vismaz viens slānis, kas nav tukšs msgid "The sliced bitmaps have been saved as:" msgstr "Sagrieztā bitkarte tika saglabāta kā:" +#: ../share/extensions/hpgl_input.py:59 +msgid "No HPGL data found." +msgstr "Nav atrasti HPGL dati" + +#: ../share/extensions/hpgl_input.py:111 +msgid "The HPGL data contained unknown (unsupported) commands, there is a possibility that the drawing is missing some content." +msgstr "HPGL dati satur nezināmas (neatbalstītas) komandas. Iespējams, zīmējumam trūkst daļa no satura." + #: ../share/extensions/inkex.py:133 #, python-format msgid "" @@ -27362,6 +27348,55 @@ msgstr "Eksportējamā slāņa atlasīšana" msgid "Layer match name" msgstr "Slāņa nosaukuma atbilstība" +#: ../share/extensions/dxf_outlines.inx.h:9 +msgid "pt" +msgstr "pt" + +#: ../share/extensions/dxf_outlines.inx.h:10 +msgid "pc" +msgstr "pc" + +#: ../share/extensions/dxf_outlines.inx.h:11 +#: ../share/extensions/render_gears.inx.h:7 +msgid "px" +msgstr " px" + +#: ../share/extensions/dxf_outlines.inx.h:12 +#: ../share/extensions/gcodetools_area.inx.h:46 +#: ../share/extensions/gcodetools_dxf_points.inx.h:18 +#: ../share/extensions/gcodetools_engraving.inx.h:24 +#: ../share/extensions/gcodetools_graffiti.inx.h:18 +#: ../share/extensions/gcodetools_lathe.inx.h:39 +#: ../share/extensions/gcodetools_orientation_points.inx.h:11 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:28 +#: ../share/extensions/render_gears.inx.h:9 +msgid "mm" +msgstr "mm" + +#: ../share/extensions/dxf_outlines.inx.h:13 +msgid "cm" +msgstr "cm" + +#: ../share/extensions/dxf_outlines.inx.h:14 +msgid "m" +msgstr "m" + +#: ../share/extensions/dxf_outlines.inx.h:15 +#: ../share/extensions/gcodetools_area.inx.h:47 +#: ../share/extensions/gcodetools_dxf_points.inx.h:19 +#: ../share/extensions/gcodetools_engraving.inx.h:25 +#: ../share/extensions/gcodetools_graffiti.inx.h:19 +#: ../share/extensions/gcodetools_lathe.inx.h:40 +#: ../share/extensions/gcodetools_orientation_points.inx.h:12 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:29 +#: ../share/extensions/render_gears.inx.h:8 +msgid "in" +msgstr "colla" + +#: ../share/extensions/dxf_outlines.inx.h:16 +msgid "ft" +msgstr "pēdas" + #: ../share/extensions/dxf_outlines.inx.h:17 msgid "Latin 1" msgstr "Latin 1" @@ -27706,30 +27741,6 @@ msgstr "Zīmēt asis" msgid "Add x-axis endpoints" msgstr "Pievienojiet x-ass gala punktus" -#: ../share/extensions/gears.inx.h:1 -msgid "Gear" -msgstr "Zobrats" - -#: ../share/extensions/gears.inx.h:2 -msgid "Number of teeth:" -msgstr "Zobu skaits:" - -#: ../share/extensions/gears.inx.h:3 -msgid "Circular pitch (tooth size):" -msgstr "Zoba izmērs:" - -#: ../share/extensions/gears.inx.h:4 -msgid "Pressure angle (degrees):" -msgstr "Spiediena leņķis (grādos):" - -#: ../share/extensions/gears.inx.h:5 -msgid "Diameter of center hole (0 for none):" -msgstr "Centra cauruma diametrs (0 - bez cauruma):" - -#: ../share/extensions/gears.inx.h:10 -msgid "Unit of measurement for both circular pitch and center diameter." -msgstr "Mērvienība gan zobrata zoba augstumam, gan centra diametram" - #: ../share/extensions/gcodetools_about.inx.h:1 msgid "About" msgstr "Par" @@ -28617,72 +28628,56 @@ msgid "Guides creator" msgstr "Palīglīniju redaktors" #: ../share/extensions/guides_creator.inx.h:2 -msgid "Preset:" -msgstr "Iepriekšnoteikts:" +msgid "Regular guides" +msgstr "Regulāras palīglīnijas" #: ../share/extensions/guides_creator.inx.h:3 -msgid "Custom..." -msgstr "Pielāgots..." - -#: ../share/extensions/guides_creator.inx.h:4 -msgid "Golden ratio" -msgstr "Zelta attiecība" - -#: ../share/extensions/guides_creator.inx.h:5 -msgid "Rule-of-third" -msgstr "Trešdaļu likums" +msgid "Guides preset" +msgstr "Palīglīniju iestatījumi" #: ../share/extensions/guides_creator.inx.h:6 -msgid "Vertical guide each:" -msgstr "Vertikālā palīglīnija ik pēc:" +msgid "Start from edges" +msgstr "Sākt no malām" + +#: ../share/extensions/guides_creator.inx.h:7 +msgid "Delete existing guides" +msgstr "Dzēst esošās palīglīnijas" #: ../share/extensions/guides_creator.inx.h:8 -msgid "1/2" -msgstr "1/2" +msgid "Diagonal guides" +msgstr "Diagonālās palīglīnijas" #: ../share/extensions/guides_creator.inx.h:9 -msgid "1/3" -msgstr "1/3" +msgid "Upper left corner" +msgstr "Augšējais kreisais stūris" #: ../share/extensions/guides_creator.inx.h:10 -msgid "1/4" -msgstr "1/4" +msgid "Upper right corner" +msgstr "Apakšējais labais stūris" #: ../share/extensions/guides_creator.inx.h:11 -msgid "1/5" -msgstr "1/5" +msgid "Lower left corner" +msgstr "Apakšējais kreisais stūris" #: ../share/extensions/guides_creator.inx.h:12 -msgid "1/6" -msgstr "1/6" +msgid "Lower right corner" +msgstr "Apakšējais labais stūris" #: ../share/extensions/guides_creator.inx.h:13 -msgid "1/7" -msgstr "1/7" +msgid "Margins" +msgstr "Malas" #: ../share/extensions/guides_creator.inx.h:14 -msgid "1/8" -msgstr "1/8" +msgid "Margins preset" +msgstr "Malu iestatījumi" #: ../share/extensions/guides_creator.inx.h:15 -msgid "1/9" -msgstr "1/9" +msgid "Header margin" +msgstr "Galvenes apmales" #: ../share/extensions/guides_creator.inx.h:16 -msgid "1/10" -msgstr "1/10" - -#: ../share/extensions/guides_creator.inx.h:17 -msgid "Horizontal guide each:" -msgstr "Horizontālā palīglīnija ik pēc:" - -#: ../share/extensions/guides_creator.inx.h:18 -msgid "Start from edges" -msgstr "Sākt no malām" - -#: ../share/extensions/guides_creator.inx.h:19 -msgid "Delete existing guides" -msgstr "Dzēst esošās palīglīnijas" +msgid "Footer margin" +msgstr "Kājenes apmales" #: ../share/extensions/guillotine.inx.h:1 msgid "Guillotine" @@ -30020,6 +30015,10 @@ msgstr "Lapas collā (PPI)" msgid "Caliper (inches)" msgstr "Bīdmērs (collas)" +#: ../share/extensions/perfectboundcover.inx.h:11 +msgid "Points" +msgstr "Punkti" + #: ../share/extensions/perfectboundcover.inx.h:12 msgid "Bond Weight #" msgstr "Saites biezuma #" @@ -30458,6 +30457,47 @@ msgstr "H (apm 30%)" msgid "Square size (px):" msgstr "Kvadrāta izmērs (px):" +#: ../share/extensions/render_gears.inx.h:1 +#: ../share/extensions/render_gear_rack.inx.h:6 +msgid "Gear" +msgstr "Zobrats" + +#: ../share/extensions/render_gears.inx.h:2 +msgid "Number of teeth:" +msgstr "Zobu skaits:" + +#: ../share/extensions/render_gears.inx.h:3 +msgid "Circular pitch (tooth size):" +msgstr "Zoba augstums:" + +#: ../share/extensions/render_gears.inx.h:4 +msgid "Pressure angle (degrees):" +msgstr "Spiediena leņķis (grādos):" + +#: ../share/extensions/render_gears.inx.h:5 +msgid "Diameter of center hole (0 for none):" +msgstr "Centra cauruma diametrs (0 - bez cauruma):" + +#: ../share/extensions/render_gears.inx.h:10 +msgid "Unit of measurement for both circular pitch and center diameter." +msgstr "Mērvienība zobrata zoba augstumam un centra diametram" + +#: ../share/extensions/render_gear_rack.inx.h:1 +msgid "Rack Gear" +msgstr "Zobstienis" + +#: ../share/extensions/render_gear_rack.inx.h:2 +msgid "Rack Length:" +msgstr "Zobstieņa garums:" + +#: ../share/extensions/render_gear_rack.inx.h:3 +msgid "Tooth Spacing:" +msgstr "Attālums starp zobiem:" + +#: ../share/extensions/render_gear_rack.inx.h:4 +msgid "Contact Angle:" +msgstr "Kontakta leņķis:" + #: ../share/extensions/replace_font.inx.h:1 msgid "Replace font" msgstr "Aizvietot fontu" @@ -30540,6 +30580,7 @@ msgstr "Horizontālais punkts:" #: ../share/extensions/restack.inx.h:13 #: ../share/extensions/text_extract.inx.h:9 +#: ../share/extensions/text_merge.inx.h:9 msgid "Middle" msgstr "Vidū" @@ -30549,11 +30590,13 @@ msgstr "Vertikālais punkts:" #: ../share/extensions/restack.inx.h:16 #: ../share/extensions/text_extract.inx.h:12 +#: ../share/extensions/text_merge.inx.h:12 msgid "Top" msgstr "Augša" #: ../share/extensions/restack.inx.h:17 #: ../share/extensions/text_extract.inx.h:13 +#: ../share/extensions/text_merge.inx.h:13 msgid "Bottom" msgstr "Apakša" @@ -31085,30 +31128,37 @@ msgid "Extract" msgstr "Atspiest" #: ../share/extensions/text_extract.inx.h:2 +#: ../share/extensions/text_merge.inx.h:2 msgid "Text direction:" msgstr "Teksta virziens:" #: ../share/extensions/text_extract.inx.h:3 +#: ../share/extensions/text_merge.inx.h:3 msgid "Left to right" msgstr "No kreisās uz labo" #: ../share/extensions/text_extract.inx.h:4 +#: ../share/extensions/text_merge.inx.h:4 msgid "Bottom to top" msgstr "No lejas uz augšu" #: ../share/extensions/text_extract.inx.h:5 +#: ../share/extensions/text_merge.inx.h:5 msgid "Right to left" msgstr "No labās uz kreiso" #: ../share/extensions/text_extract.inx.h:6 +#: ../share/extensions/text_merge.inx.h:6 msgid "Top to bottom" msgstr "No augšas uz leju" #: ../share/extensions/text_extract.inx.h:7 +#: ../share/extensions/text_merge.inx.h:7 msgid "Horizontal point:" msgstr "Horizontālais punkts:" #: ../share/extensions/text_extract.inx.h:11 +#: ../share/extensions/text_merge.inx.h:11 msgid "Vertical point:" msgstr "Vertikālais punkts:" @@ -31129,6 +31179,14 @@ msgstr "Mainīt reģistru" msgid "lowercase" msgstr "mazie burti" +#: ../share/extensions/text_merge.inx.h:14 +msgid "Flow text" +msgstr "Teksta aizpildījums" + +#: ../share/extensions/text_merge.inx.h:15 +msgid "Keep style" +msgstr "Saglabāt teksta" + #: ../share/extensions/text_randomcase.inx.h:1 msgid "rANdOm CasE" msgstr "dAžāDa LielUMa" @@ -31643,6 +31701,182 @@ msgstr "Populārs izgriezumkopu grafiskais formāts" msgid "XAML Input" msgstr "XAML ievade" +#~ msgid "Pt" +#~ msgstr "pt" + +#~ msgid "Picas" +#~ msgstr "picas" + +#~ msgid "Pc" +#~ msgstr "pc" + +#~ msgid "Pixels" +#~ msgstr "Pikseļi" + +#~ msgid "Px" +#~ msgstr " px" + +#~ msgid "Percent" +#~ msgstr "Procenti" + +#~ msgid "Percents" +#~ msgstr "Procenti" + +#~ msgid "Millimeters" +#~ msgstr "Milimetri" + +#~ msgid "Centimeters" +#~ msgstr "Centrimetri" + +#~ msgid "Meter" +#~ msgstr "Metrs" + +#~ msgid "Meters" +#~ msgstr "Metri" + +#~ msgid "Inches" +#~ msgstr "Collas" + +#~ msgid "Foot" +#~ msgstr "Pēda" + +#~ msgid "Feet" +#~ msgstr "Pēdas" + +#~ msgid "em" +#~ msgstr "em" + +#~ msgid "Em squares" +#~ msgstr "Em kvadrāti" + +#~ msgid "Ex square" +#~ msgstr "Ex kvadrāts" + +#~ msgid "ex" +#~ msgstr "ex" + +#~ msgid "Ex squares" +#~ msgstr "Ex kvadrāti" + +#~ msgid "Name by which this document is formally known" +#~ msgstr "Nosaukums, ar kuru šis dokumenta ir formāli pazīstams" + +#~ msgid "Date associated with the creation of this document (YYYY-MM-DD)" +#~ msgstr "Datums, kas saistīts ar šī dokumenta izveidošanu (GGGG-MM-DD)" + +#~ msgid "The physical or digital manifestation of this document (MIME type)" +#~ msgstr "Dokumenta fiziskais vai ciparu tips (MIME tips)" + +#~ msgid "Type of document (DCMI Type)" +#~ msgstr "Dokumenta tips (DCMI tips)" + +#~ msgid "" +#~ "Name of entity with rights to the Intellectual Property of this document" +#~ msgstr "" +#~ "Šī dokumenta autortiesību turētāja personas vārds vai organizācijas " +#~ "nosaukums" + +#~ msgid "Unique URI to reference this document" +#~ msgstr "Unikāls URI atsaucei uz šo dokumentu" + +#~ msgid "Unique URI to reference the source of this document" +#~ msgstr "Unikāls URI atsaucei uz šī dokumenta avotu" + +#~ msgid "Unique URI to a related document" +#~ msgstr "Unikāls URI uz šo dokumentu" + +#~ msgid "" +#~ "Two-letter language tag with optional subtags for the language of this " +#~ "document (e.g. 'en-GB')" +#~ msgstr "" +#~ "Dokumenta valodas divu burtu valodas tags ar papildu apakštagiem (piem. " +#~ "lv_LV)" + +#~ msgid "" +#~ "The topic of this document as comma-separated key words, phrases, or " +#~ "classifications" +#~ msgstr "" +#~ "Šī dokumenta temats ar komatu atdalītu atslēgas vārdu, frāžu vai " +#~ "klasifikatoru formā" + +#~ msgid "Extent or scope of this document" +#~ msgstr "Apjoms vai šī dokumenta aptvertā joma" + +#~ msgid "Allow relative coordinates" +#~ msgstr "Atļaut relatīvās koordinātes" + +#~ msgid "If set, relative coordinates may be used in path data" +#~ msgstr "Ja ieslēgts, ceļu datos var tikt izmantotas relatīvās koordinātes" + +#~ msgid "_Execute Javascript" +#~ msgstr "I_zpildīt Javascript" + +#~ msgid "_Execute Python" +#~ msgstr "I_zpildīt Python" + +#~ msgid "_Execute Ruby" +#~ msgstr "I_zpildīt Ruby" + +#~ msgid "Script" +#~ msgstr "Skripts" + +#~ msgid "Output" +#~ msgstr "Izvade" + +#~ msgid "Errors" +#~ msgstr "Kļūdas" + +#~ msgid "S_cripts..." +#~ msgstr "S_kripti..." + +#~ msgid "Run scripts" +#~ msgstr "Palaist skriptus" + +#~ msgid "Preset:" +#~ msgstr "Iepriekšnoteikts:" + +#~ msgid "Custom..." +#~ msgstr "Pielāgots..." + +#~ msgid "Golden ratio" +#~ msgstr "Zelta attiecība" + +#~ msgid "Rule-of-third" +#~ msgstr "Trešdaļu likums" + +#~ msgid "Vertical guide each:" +#~ msgstr "Vertikālā palīglīnija ik pēc:" + +#~ msgid "1/2" +#~ msgstr "1/2" + +#~ msgid "1/3" +#~ msgstr "1/3" + +#~ msgid "1/4" +#~ msgstr "1/4" + +#~ msgid "1/5" +#~ msgstr "1/5" + +#~ msgid "1/6" +#~ msgstr "1/6" + +#~ msgid "1/7" +#~ msgstr "1/7" + +#~ msgid "1/8" +#~ msgstr "1/8" + +#~ msgid "1/9" +#~ msgstr "1/9" + +#~ msgid "1/10" +#~ msgstr "1/10" + +#~ msgid "Horizontal guide each:" +#~ msgstr "Horizontālā palīglīnija ik pēc:" + #~ msgid "Preview scale: " #~ msgstr "Priekšskatījuma mērogs:" @@ -31756,9 +31990,6 @@ msgstr "XAML ievade" #~ msgid "Blur type:" #~ msgstr "Izpludināšanas veids:" -#~ msgid "Blend source:" -#~ msgstr "Sapludināšanas avots" - #~ msgid "Composite:" #~ msgstr "Salikts:" @@ -31921,10 +32152,6 @@ msgstr "XAML ievade" #~ msgid "_Blur:" #~ msgstr "_Izpludināt:" -#~ msgctxt "Filesystem" - -#~ msgid "Path:" -#~ msgstr "Ceļš:" #, fuzzy #~ msgid "<big><b>Bitmap size</b></big>" diff --git a/share/branding/inkscape.svg b/share/branding/inkscape.svg index 121bc3aef..617e66ef4 100644 --- a/share/branding/inkscape.svg +++ b/share/branding/inkscape.svg @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.0" width="128" height="128" id="svg2" sodipodi:version="0.32" inkscape:version="0.48+devel r10484 custom" sodipodi:docname="inkscape.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" inkscape:export-filename="/home/valessio/Desenvolvimento/inkscape/inkscape/inkscape.png" inkscape:export-xdpi="45" inkscape:export-ydpi="45"> -<sodipodi:namedview bordercohor="#666666" inkscape:window-height="577" inkscape:window-width="862" inkscape:pageshadow="2" inkscape:pageopacity="0.0" guidetolerance="10.0" gridtolerance="10.0" objecttolerance="10.0" borderopacity="1.0" bordercolor="#666666" pagecolor="#ffffff" id="base" inkscape:zoom="1" inkscape:cx="-56" inkscape:cy="64" inkscape:window-x="192" inkscape:window-y="122" inkscape:current-layer="svg2" showgrid="false" inkscape:window-maximized="0" /> +<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.0" width="128" height="128" id="svg2" sodipodi:version="0.32" inkscape:version="0.48+devel r" sodipodi:docname="inkscape.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" inkscape:export-filename="/home/valessio/Desenvolvimento/inkscape/inkscape/inkscape.png" inkscape:export-xdpi="45" inkscape:export-ydpi="45"> +<title id="title7387">Inkscape Logo</title> +<sodipodi:namedview bordercohor="#666666" inkscape:window-height="577" inkscape:window-width="862" inkscape:pageshadow="2" inkscape:pageopacity="0.0" guidetolerance="10.0" gridtolerance="10.0" objecttolerance="10.0" borderopacity="1.0" bordercolor="#666666" pagecolor="#ffffff" id="base" inkscape:zoom="1" inkscape:cx="-232" inkscape:cy="64" inkscape:window-x="192" inkscape:window-y="122" inkscape:current-layer="svg2" showgrid="false" inkscape:window-maximized="0" /> <defs id="defs4"> <linearGradient id="WhiteTransparent" gradientUnits="userSpaceOnUse"> <stop style="stop-color:white;stop-opacity:1" offset="0" id="stop7" /> @@ -170,15 +171,16 @@ </dc:publisher> <dc:identifier>http://andy.fitzsimon.com.au</dc:identifier> <dc:date>2006</dc:date> -<cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/2/" /> +<cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" /> +<dc:title>Inkscape Logo</dc:title> </cc:Work> -<cc:License rdf:about="http://creativecommons.org/licenses/by-sa/2/"> -<cc:permits rdf:resource="http://web.resource.org/cc/Reproduction" /> -<cc:permits rdf:resource="http://web.resource.org/cc/Distribution" /> -<cc:requires rdf:resource="http://web.resource.org/cc/Notice" /> -<cc:requires rdf:resource="http://web.resource.org/cc/Attribution" /> -<cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" /> -<cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike" /> +<cc:License rdf:about="http://creativecommons.org/licenses/by-sa/3.0/"> +<cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /> +<cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /> +<cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /> +<cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /> +<cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> +<cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /> </cc:License> </rdf:RDF> </metadata> @@ -208,7 +210,7 @@ <path transform="matrix(0.7131486,0,0,1.140781,-126.6101,-124.8917)" d="m 237.875,199.0625 c 0,1.3462 -3.5537,2.4375 -7.9375,2.4375 -4.3838,0 -7.9375,-1.0913 -7.9375,-2.4375 0,-1.3462 3.5537,-2.4375 7.9375,-2.4375 4.3838,0 7.9375,1.0913 7.9375,2.4375 z" sodipodi:ry="2.4375" sodipodi:rx="7.9375" sodipodi:cy="199.0625" sodipodi:cx="229.9375" id="path9008" style="opacity:0.6206894;fill:url(#linearGradient9025);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter8906);enable-background:accumulate" sodipodi:type="arc" /> </g> <path inkscape:connector-curvature="0" style="opacity:0.6157635;fill:url(#radialGradient9046);fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter9068)" d="m 80.5,220.0625 c 0,0 2.10339,5.6508 7.875,5.9375 5.83887,0.2901 12.5032,-7.007 13.0625,-9.625 -1,2.25 -6.59033,9.0333 -13.8125,8.9375 -4.09986,-0.054 -7.125,-5.25 -7.125,-5.25 z" id="path9038" transform="matrix(0.5296484,0,0,0.5296484,-11.62295,-14.42691)" sodipodi:nodetypes="czczc" /> -<path inkscape:label="top_inner_highlight" d="m 63.40625,10.21875 c -3.09818,0 -6.1346,1.12204 -8.28125,3.3125 l -41.1875,42.1875 c -3.76562,3.76562 -4.670241,6.23069 -4.4375,7.625 0.116371,0.69716 0.458599,1.30303 1.1875,1.9375 0.7289,0.63447 1.83149,1.25639 3.15625,1.8125 2.64951,1.11222 6.21796,2.00808 9.71875,2.96875 3.50079,0.96067 6.92981,1.97463 9.53125,3.625 0.39662,0.25827 0.76909,0.57647 1.03125,1.03125 0.26216,0.45478 0.35422,1.05609 0.25,1.5625 -0.20843,1.01282 -0.83202,1.54698 -1.46875,2.03125 -1.27346,0.96853 -3.02326,1.77323 -4.78125,2.625 -1.75799,0.85177 -3.52492,1.72324 -4.40625,2.4375 -0.44066,0.35713 -0.60011,0.67813 -0.59375,0.65625 0.006,-0.0219 -0.11685,-0.2731 0.0937,-0.0625 0.55176,0.56709 2.27408,1.53816 4.46875,2.40625 2.19467,0.86809 4.88065,1.74562 7.59375,2.625 2.7131,0.87938 5.4575,1.74996 7.78125,2.65625 2.32375,0.90629 4.21769,1.74894 5.46875,3 0.62268,0.63998 1.06263,1.43596 1.15625,2.25 0.0936,0.81404 -0.12681,1.57803 -0.4375,2.21875 -0.62138,1.2814 -1.62031,2.2672 -2.53125,3.2188 -0.91094,0.9515 -1.73623,1.8603 -2.03125,2.4687 -0.14751,0.3042 -0.17035,0.5024 -0.15625,0.625 0.0141,0.1226 0.0352,0.2462 0.3125,0.5313 A 1.456677,1.456677 0 0 1 44.875,106 c 1.1936,1.2618 3.787,1.4392 6.71875,2.125 1.46587,0.3429 2.99891,0.862 4.3125,2 1.31359,1.138 2.29944,2.8706 2.71875,5.2188 0.17646,0.9945 0.70272,1.4788 1.96875,1.875 1.26603,0.3961 3.19435,0.4655 5.3125,0.1562 4.2363,-0.6186 9.26003,-2.6953 12.15625,-5.0938 0.17999,-0.1529 0.12996,-0.1125 0.1875,-0.1874 -0.1948,-0.1394 -0.65164,-0.4366 -1.40625,-0.8126 -0.89153,-0.4441 -1.9447,-0.8595 -2.75,-1.875 -0.40265,-0.5077 -0.67988,-1.3093 -0.5625,-2.0937 0.11738,-0.7844 0.54683,-1.437 1.125,-2.0313 4.74575,-4.7984 9.42194,-5.94409 12.9375,-6.87495 1.75778,-0.46543 3.22929,-0.89123 4.34375,-1.59375 1.11446,-0.70252 1.98508,-1.66373 2.71875,-3.53125 0.0809,-0.20217 0.0786,-0.26085 -0.0312,-0.5 C 94.5152,92.5421 94.22054,92.15952 93.75,91.75 92.80892,90.93096 91.23958,90.0508 89.6875,89.1875 88.13542,88.3242 86.62703,87.51926 85.53125,86.5 c -0.54789,-0.50963 -1.12202,-1.15163 -1.1875,-2.125 -0.0655,-0.97337 0.57257,-1.85163 1.3125,-2.375 2.74572,-1.93321 6.89628,-3.40491 11.40625,-4.96875 4.51,-1.56384 9.3611,-3.18213 13.3125,-5.03125 3.9514,-1.84912 6.8573,-3.97867 7.7812,-6.125 0.462,-1.07317 0.5467,-2.15861 0.063,-3.5625 -0.4842,-1.40389 -1.5896,-3.12083 -3.5626,-5.09375 L 72,13.5625 c -0.0107,-0.0101 -0.0205,-0.0212 -0.0312,-0.0312 -2.35772,-2.20774 -5.47837,-3.3125 -8.5625,-3.3125 z m 45.93755,80 c -2.6352,0.0951 -5.0596,1.30141 -6.0938,3.1875 0.2938,0.11052 0.5584,0.23497 1.0312,0.34375 1.3757,0.31646 3.2955,0.52074 5.1876,0.5625 1.892,0.0418 3.7841,-0.11747 4.9374,-0.4375 0.5049,-0.14009 0.7724,-0.28178 0.9063,-0.375 -0.2558,-1.09109 -0.8649,-1.86212 -1.9063,-2.4375 -1.0786,-0.59595 -2.5566,-0.89811 -4.0624,-0.84375 z m -70.50005,9.0625 c -2.08988,-0.14535 -4.71655,0.68656 -6,1.71875 -0.64172,0.5161 -0.91327,0.9944 -0.9375,1.3125 -0.0242,0.3181 0.0773,0.742 0.9375,1.4687 a 1.456677,1.456677 0 0 1 0,0.031 c 1.35282,1.17 2.88226,1.048 4.625,0.094 1.46095,-0.7999 2.7572,-2.3007 3.625,-3.875 -0.58503,-0.37729 -1.28454,-0.68281 -2.25,-0.74995 z m 61,0.625 c -0.4473,0.56855 -0.6909,1.09795 -0.71875,1.46875 -0.0384,0.5117 0.10661,0.9072 0.5,1.2812 0.7373,0.701 2.3391,1.0028 3.9688,0.125 -0.032,-0.189 -0.093,-0.4759 -0.3438,-0.8437 -0.4999,-0.7341 -1.6686,-1.5251 -3.40625,-2.03125 z" inkscape:href="#use7639" id="87235" style="fill:none;stroke:url(#radialGradient11553);stroke-width:1.0035907;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter9298)" xlink:href="#use7639" inkscape:original="M 63.40625 8.75 C 59.95625 8.75 56.54375 10 54.09375 12.5 L 12.90625 54.6875 C -2.69375 70.2875 23.0125 69.00625 32.3125 74.90625 C 36.6125 77.70625 18.4875 81.3 22.1875 85 C 25.7875 88.7 43.9 92.0875 47.5 95.6875 C 51.1 99.3875 40.2125 103.3 43.8125 107 C 47.3125 110.7 55.6875 107.1938 57.1875 115.5938 C 58.2875 121.7938 72.6 118.7062 79 113.4062 C 83 110.0062 72.0875 110.0125 75.6875 106.3125 C 84.6875 97.2125 92.7 102.2125 96 93.8125 C 97.8 89.3125 82.4 86.0875 86.5 83.1875 C 96.3 76.2875 132.2875 72.7875 115.6875 56.1875 L 73 12.5 C 70.35 10 66.85625 8.75 63.40625 8.75 z M 109.2812 88.75 C 105.8188 88.875 102.3062 90.6125 101.4062 93.8125 C 101.4062 95.9125 117.7125 97.1125 116.8125 93.3125 C 116.1625 90.1125 112.7437 88.625 109.2812 88.75 z M 38.9375 97.84375 C 33.95 97.49688 27.55625 101.2312 31.90625 104.9062 C 35.60625 108.1063 41.2 104.1875 43 99.6875 C 42.1 98.5125 40.6 97.95937 38.9375 97.84375 z M 99.40625 98.1875 C 94.80625 102.3875 100.1875 106.8062 104.6875 103.9062 C 105.8875 103.1063 104.6063 99.1875 99.40625 98.1875 z " inkscape:radius="-1.456531" sodipodi:type="inkscape:offset" /> +<path inkscape:label="top_inner_highlight" d="m 63.40625,10.21875 c -3.09818,0 -6.1346,1.12204 -8.28125,3.3125 l -41.1875,42.1875 c -3.76562,3.76562 -4.670241,6.23069 -4.4375,7.625 0.116371,0.69716 0.458599,1.30303 1.1875,1.9375 0.7289,0.63447 1.83149,1.25639 3.15625,1.8125 2.64951,1.11222 6.21796,2.00808 9.71875,2.96875 3.50079,0.96067 6.92981,1.97463 9.53125,3.625 0.39662,0.25827 0.76909,0.57647 1.03125,1.03125 0.26216,0.45478 0.35422,1.05609 0.25,1.5625 -0.20843,1.01282 -0.83202,1.54698 -1.46875,2.03125 -1.27346,0.96853 -3.02326,1.77323 -4.78125,2.625 -1.75799,0.85177 -3.52492,1.72324 -4.40625,2.4375 -0.44066,0.35713 -0.60011,0.67813 -0.59375,0.65625 0.006,-0.0219 -0.11685,-0.2731 0.0937,-0.0625 0.55176,0.56709 2.27408,1.53816 4.46875,2.40625 2.19467,0.86809 4.88065,1.74562 7.59375,2.625 2.7131,0.87938 5.4575,1.74996 7.78125,2.65625 2.32375,0.90629 4.21769,1.74894 5.46875,3 0.62268,0.63998 1.06263,1.43596 1.15625,2.25 0.0936,0.81404 -0.12681,1.57803 -0.4375,2.21875 -0.62138,1.2814 -1.62031,2.2672 -2.53125,3.2188 -0.91094,0.9515 -1.73623,1.8603 -2.03125,2.4687 -0.14751,0.3042 -0.17035,0.5024 -0.15625,0.625 0.0141,0.1226 0.0352,0.2462 0.3125,0.5313 A 1.456677,1.456677 0 0 1 44.875,106 c 1.1936,1.2618 3.787,1.4392 6.71875,2.125 1.46587,0.3429 2.99891,0.862 4.3125,2 1.31359,1.138 2.29944,2.8706 2.71875,5.2188 0.17646,0.9945 0.70272,1.4788 1.96875,1.875 1.26603,0.3961 3.19435,0.4655 5.3125,0.1562 4.2363,-0.6186 9.26003,-2.6953 12.15625,-5.0938 0.17999,-0.1529 0.12996,-0.1125 0.1875,-0.1874 -0.1948,-0.1394 -0.65164,-0.4366 -1.40625,-0.8126 -0.89153,-0.4441 -1.9447,-0.8595 -2.75,-1.875 -0.40265,-0.5077 -0.67988,-1.3093 -0.5625,-2.0937 0.11738,-0.7844 0.54683,-1.437 1.125,-2.0313 4.74575,-4.7984 9.42194,-5.94409 12.9375,-6.87495 1.75778,-0.46543 3.22929,-0.89123 4.34375,-1.59375 1.11446,-0.70252 1.98508,-1.66373 2.71875,-3.53125 0.0809,-0.20217 0.0786,-0.26085 -0.0312,-0.5 C 94.5152,92.5421 94.22054,92.15952 93.75,91.75 92.80892,90.93096 91.23958,90.0508 89.6875,89.1875 88.13542,88.3242 86.62703,87.51926 85.53125,86.5 c -0.54789,-0.50963 -1.12202,-1.15163 -1.1875,-2.125 -0.0655,-0.97337 0.57257,-1.85163 1.3125,-2.375 2.74572,-1.93321 6.89628,-3.40491 11.40625,-4.96875 4.51,-1.56384 9.3611,-3.18213 13.3125,-5.03125 3.9514,-1.84912 6.8573,-3.97867 7.7812,-6.125 0.462,-1.07317 0.5467,-2.15861 0.063,-3.5625 -0.4842,-1.40389 -1.5896,-3.12083 -3.5626,-5.09375 L 72,13.5625 c -0.0107,-0.0101 -0.0205,-0.0212 -0.0312,-0.0312 -2.35772,-2.20774 -5.47837,-3.3125 -8.5625,-3.3125 z m 45.93755,80 c -2.6352,0.0951 -5.0596,1.30141 -6.0938,3.1875 0.2938,0.11052 0.5584,0.23497 1.0312,0.34375 1.3757,0.31646 3.2955,0.52074 5.1876,0.5625 1.892,0.0418 3.7841,-0.11747 4.9374,-0.4375 0.5049,-0.14009 0.7724,-0.28178 0.9063,-0.375 -0.2558,-1.09109 -0.8649,-1.86212 -1.9063,-2.4375 -1.0786,-0.59595 -2.5566,-0.89811 -4.0624,-0.84375 z m -70.50005,9.0625 c -2.08988,-0.14535 -4.71655,0.68656 -6,1.71875 -0.64172,0.5161 -0.91327,0.9944 -0.9375,1.3125 -0.0242,0.3181 0.0773,0.742 0.9375,1.4687 a 1.456677,1.456677 0 0 1 0,0.031 c 1.35282,1.17 2.88226,1.048 4.625,0.094 1.46095,-0.7999 2.7572,-2.3007 3.625,-3.875 -0.58503,-0.37729 -1.28454,-0.68281 -2.25,-0.74995 z m 61,0.625 c -0.4473,0.56855 -0.6909,1.09795 -0.71875,1.46875 -0.0384,0.5117 0.10661,0.9072 0.5,1.2812 0.7373,0.701 2.3391,1.0028 3.9688,0.125 -0.032,-0.189 -0.093,-0.4759 -0.3438,-0.8437 -0.4999,-0.7341 -1.6686,-1.5251 -3.40625,-2.03125 z" inkscape:href="#use7639" id="87235" style="fill:none;stroke:url(#radialGradient11553);stroke-width:1.0035907;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter9298)" xlink:href="#use7639" inkscape:original="M 63.40039 8.75 C 59.95039 8.75 56.54961 10 54.09961 12.5 L 12.90039 54.69922 C -2.699609 70.29922 23.00078 69.00039 32.30078 74.90039 C 36.60078 77.70039 18.49922 81.3 22.19922 85 C 25.79922 88.7 43.9 92.09922 47.5 95.69922 C 51.1 99.39922 40.20078 103.3 43.80078 107 C 47.30078 110.7 55.69922 107.1996 57.19922 115.5996 C 58.29922 121.7996 72.6 118.7004 79 113.4004 C 83 110.0004 72.09922 110.0008 75.69922 106.3008 C 84.69922 97.20078 92.7 102.2008 96 93.80078 C 97.8 89.30078 82.4 86.09922 86.5 83.19922 C 96.3 76.29922 132.2992 72.79922 115.6992 56.19922 L 73 12.5 C 70.35 10 66.85039 8.75 63.40039 8.75 z M 109.2871 88.75 C 105.8246 88.875 102.3004 90.60078 101.4004 93.80078 C 101.4004 95.90078 117.7008 97.10078 116.8008 93.30078 C 116.1508 90.10078 112.7496 88.625 109.2871 88.75 z M 38.93164 97.83984 C 33.94414 97.49297 27.55039 101.2254 31.90039 104.9004 C 35.60039 108.1004 41.2 104.1992 43 99.69922 C 42.1 98.52422 40.59414 97.95547 38.93164 97.83984 z M 99.40039 98.19922 C 94.80039 102.3992 100.1992 106.8004 104.6992 103.9004 C 105.8992 103.1004 104.6004 99.19922 99.40039 98.19922 z " inkscape:radius="-1.456531" sodipodi:type="inkscape:offset" /> <path inkscape:connector-curvature="0" sodipodi:nodetypes="csssssscs" transform="matrix(0.4883067,0,0,0.4883067,-5.810401,-7.704252)" id="path5897" d="m 95.5,172 c -5.09061,1.5019 -21.59202,7.7371 -19.25,12.5 2.2436,4.5627 40.6114,6.4013 46.5,20 2.5679,5.9301 -5.8924,10.4033 -3.75,16.5 1.6497,4.6948 14.412,16.4908 22.486,22.0678 6.333,4.3744 14.651,-3.5224 11.264,-10.0678 -5.3959,-10.4276 18.4427,-23.1991 29.25,-29 6.3052,-3.3844 -13,-20 -13,-20 0,0 -73.5,-12 -73.5,-12 z" style="opacity:0.3251231;fill:url(#linearGradient5905);fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter5983-5)" /> <path inkscape:connector-curvature="0" sodipodi:nodetypes="cssssssssss" id="path5783" d="m 41.74217,78.53304 c 2.23193,1.63922 6.63675,0.65053 9.28212,1.84176 6.34952,2.85921 14.15494,6.04542 12.71857,0.40455 0,0 -1.61577,1.34204 -1.61577,1.34204 0,0 -0.0315,-2.55754 -0.0315,-2.55754 0,0 -3.75198,0.91629 -3.75198,0.91629 0,0 -2.90617,-2.33276 -4.23852,-3.10199 -0.27829,-0.16067 -1.7077,1.29281 -1.7077,1.29281 0,0 -0.25697,-1.5438 -0.25697,-1.5438 -1.85737,-0.19764 -3.69616,-0.28481 -5.31515,-0.27182 -3.88094,0.0311 -6.49906,0.63774 -5.08307,1.6777 z" style="fill:url(#linearGradient5801);fill-opacity:1;fill-rule:evenodd;stroke:none" /> <path inkscape:connector-curvature="0" sodipodi:nodetypes="csssssc" transform="matrix(0.4883067,0,0,0.4883067,-5.810401,-7.704252)" id="path5803" d="m 182.75,187.25 c -1.7598,6.4783 21.6278,15.2799 19.875,19.75 -3.859,9.8416 -24.976,3.1375 -41.125,23.75 -2.3132,2.9525 3.25,13.5 2.5,12.25 -0.75,-1.25 -6.4649,-9.9629 -5,-14.25 4.5942,-13.4452 49.0128,-18.4575 40.875,-24.875 -4.6799,-3.6906 -21.5055,-13.8872 -17.125,-16.625 z" style="opacity:0.4778325;fill:url(#radialGradient5811);fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter5845)" /> diff --git a/share/examples/blend_modes.svg b/share/examples/blend_modes.svg index d0acf6e4c..6e229b1e5 100644 --- a/share/examples/blend_modes.svg +++ b/share/examples/blend_modes.svg @@ -1,4702 +1,753 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://web.resource.org/cc/" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="210mm" - height="297mm" - id="svg1901" - sodipodi:version="0.32" - inkscape:version="0.45+devel" - sodipodi:docname="blend_modes.svg" - sodipodi:docbase="/home/tsoots/ohj/translations/po" - enable-background="new" - inkscape:output_extension="org.inkscape.output.svg.inkscape"> - <defs - id="defs1903"> - <linearGradient - inkscape:collect="always" - id="linearGradient4602"> - <stop - style="stop-color:#0000ff;stop-opacity:1" - offset="0" - id="stop4604" /> - <stop - style="stop-color:#ffff00;stop-opacity:1" - offset="1" - id="stop4606" /> - </linearGradient> - <linearGradient - id="linearGradient4508" - inkscape:collect="always"> - <stop - id="stop4510" - offset="0" - style="stop-color:#ff0000;stop-opacity:1" /> - <stop - id="stop4512" - offset="1" - style="stop-color:#00ffff;stop-opacity:1" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - id="linearGradient4496"> - <stop - style="stop-color:#00ff00;stop-opacity:1" - offset="0" - id="stop4498" /> - <stop - style="stop-color:#ff00ff;stop-opacity:1" - offset="1" - id="stop4500" /> - </linearGradient> - <linearGradient - id="linearGradient4220"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop4222" /> - <stop - style="stop-color:#000000;stop-opacity:0;" - offset="1" - id="stop4224" /> - </linearGradient> - <linearGradient - id="linearGradient4214"> - <stop - style="stop-color:#ffff00;stop-opacity:1;" - offset="0" - id="stop4216" /> - <stop - style="stop-color:#ffff00;stop-opacity:0;" - offset="1" - id="stop4218" /> - </linearGradient> - <linearGradient - id="linearGradient4208"> - <stop - style="stop-color:#ff00ff;stop-opacity:1;" - offset="0" - id="stop4210" /> - <stop - style="stop-color:#ff00ff;stop-opacity:0;" - offset="1" - id="stop4212" /> - </linearGradient> - <linearGradient - id="linearGradient4202"> - <stop - style="stop-color:#00ffff;stop-opacity:1;" - offset="0" - id="stop4204" /> - <stop - style="stop-color:#00ffff;stop-opacity:0;" - offset="1" - id="stop4206" /> - </linearGradient> - <linearGradient - id="linearGradient3536" - inkscape:collect="always"> - <stop - id="stop3538" - offset="0" - style="stop-color:#0000ff;stop-opacity:1" /> - <stop - id="stop3540" - offset="1" - style="stop-color:#0000ff;stop-opacity:0" /> - </linearGradient> - <linearGradient - id="linearGradient3530" - inkscape:collect="always"> - <stop - id="stop3532" - offset="0" - style="stop-color:#00ff00;stop-opacity:1" /> - <stop - id="stop3534" - offset="1" - style="stop-color:#00ff00;stop-opacity:0" /> - </linearGradient> - <linearGradient - id="linearGradient3524" - inkscape:collect="always"> - <stop - id="stop3526" - offset="0" - style="stop-color:#ff0000;stop-opacity:1" /> - <stop - id="stop3528" - offset="1" - style="stop-color:#ff0000;stop-opacity:0" /> - </linearGradient> - <linearGradient - id="linearGradient3518"> - <stop - id="stop3520" - offset="0" - style="stop-color:#000000;stop-opacity:1" /> - <stop - id="stop3522" - offset="1" - style="stop-color:#000000;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - id="linearGradient2959"> - <stop - style="stop-color:#0000ff;stop-opacity:1" - offset="0" - id="stop2961" /> - <stop - style="stop-color:#ffffff;stop-opacity:1" - offset="1" - id="stop2963" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - id="linearGradient2951"> - <stop - style="stop-color:#00ff00;stop-opacity:1" - offset="0" - id="stop2953" /> - <stop - style="stop-color:#ffffff;stop-opacity:1" - offset="1" - id="stop2955" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - id="linearGradient2937"> - <stop - style="stop-color:#ff0000;stop-opacity:1" - offset="0" - id="stop2939" /> - <stop - style="stop-color:#ffffff;stop-opacity:1" - offset="1" - id="stop2941" /> - </linearGradient> - <linearGradient - id="linearGradient2927"> - <stop - style="stop-color:#000000;stop-opacity:1" - offset="0" - id="stop2929" /> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="1" - id="stop2931" /> - </linearGradient> - <filter - inkscape:collect="always" - id="filter2849"> - <feBlend - inkscape:collect="always" - mode="screen" - in2="BackgroundImage" - id="feBlend2851" /> - </filter> - <filter - inkscape:collect="always" - id="filter2853"> - <feBlend - inkscape:collect="always" - mode="screen" - in2="BackgroundImage" - id="feBlend2855" /> - </filter> - <filter - inkscape:collect="always" - id="filter2857"> - <feBlend - inkscape:collect="always" - mode="screen" - in2="BackgroundImage" - id="feBlend2859" /> - </filter> - <filter - inkscape:collect="always" - id="filter2877"> - <feBlend - inkscape:collect="always" - mode="multiply" - in2="BackgroundImage" - id="feBlend2879" /> - </filter> - <filter - inkscape:collect="always" - id="filter2881"> - <feBlend - inkscape:collect="always" - mode="multiply" - in2="BackgroundImage" - id="feBlend2883" /> - </filter> - <filter - inkscape:collect="always" - id="filter2885"> - <feBlend - inkscape:collect="always" - mode="multiply" - in2="BackgroundImage" - id="feBlend2887" /> - </filter> - <filter - inkscape:collect="always" - id="filter2995"> - <feBlend - inkscape:collect="always" - mode="multiply" - in2="BackgroundImage" - id="feBlend2997" /> - </filter> - <filter - inkscape:collect="always" - id="filter3017"> - <feBlend - inkscape:collect="always" - mode="screen" - in2="BackgroundImage" - id="feBlend3019" /> - </filter> - <filter - inkscape:collect="always" - id="filter3039"> - <feBlend - inkscape:collect="always" - mode="darken" - in2="BackgroundImage" - id="feBlend3041" /> - </filter> - <filter - inkscape:collect="always" - id="filter3061"> - <feBlend - inkscape:collect="always" - mode="lighten" - in2="BackgroundImage" - id="feBlend3063" /> - </filter> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2927" - id="linearGradient3120" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2937" - id="linearGradient3122" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2951" - id="linearGradient3124" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2959" - id="linearGradient3126" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2927" - id="linearGradient3128" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2937" - id="linearGradient3130" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2951" - id="linearGradient3132" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2959" - id="linearGradient3134" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2927" - id="linearGradient3136" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2937" - id="linearGradient3138" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2951" - id="linearGradient3140" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2959" - id="linearGradient3142" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2927" - id="linearGradient3144" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2937" - id="linearGradient3146" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2951" - id="linearGradient3148" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2959" - id="linearGradient3150" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2927" - id="linearGradient3152" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2937" - id="linearGradient3154" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2951" - id="linearGradient3156" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2959" - id="linearGradient3158" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2927" - id="linearGradient3254" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2937" - id="linearGradient3256" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2951" - id="linearGradient3258" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2959" - id="linearGradient3260" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2927" - id="linearGradient3262" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2937" - id="linearGradient3264" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2951" - id="linearGradient3266" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2959" - id="linearGradient3268" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2927" - id="linearGradient3270" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2937" - id="linearGradient3272" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2951" - id="linearGradient3274" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2959" - id="linearGradient3276" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2927" - id="linearGradient3278" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2937" - id="linearGradient3280" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2951" - id="linearGradient3282" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2959" - id="linearGradient3284" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2927" - id="linearGradient3286" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2937" - id="linearGradient3288" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2951" - id="linearGradient3290" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2959" - id="linearGradient3292" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2927" - id="linearGradient3366" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2937" - id="linearGradient3368" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2951" - id="linearGradient3370" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2959" - id="linearGradient3372" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2927" - id="linearGradient3374" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2937" - id="linearGradient3376" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2951" - id="linearGradient3378" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2959" - id="linearGradient3380" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2927" - id="linearGradient3382" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2937" - id="linearGradient3384" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2951" - id="linearGradient3386" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2959" - id="linearGradient3388" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2927" - id="linearGradient3390" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2937" - id="linearGradient3392" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2951" - id="linearGradient3394" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2959" - id="linearGradient3396" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2927" - id="linearGradient3398" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2937" - id="linearGradient3400" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2951" - id="linearGradient3402" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2959" - id="linearGradient3404" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3518" - id="linearGradient3478" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3524" - id="linearGradient3480" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3530" - id="linearGradient3482" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3536" - id="linearGradient3484" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3518" - id="linearGradient3552" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3524" - id="linearGradient3554" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3530" - id="linearGradient3556" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3536" - id="linearGradient3558" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3518" - id="linearGradient3570" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3524" - id="linearGradient3572" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3530" - id="linearGradient3574" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3536" - id="linearGradient3576" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3518" - id="linearGradient3588" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3524" - id="linearGradient3590" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3530" - id="linearGradient3592" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3536" - id="linearGradient3594" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3518" - id="linearGradient3606" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3524" - id="linearGradient3608" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3530" - id="linearGradient3610" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3536" - id="linearGradient3612" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <filter - inkscape:collect="always" - id="filter3614"> - <feBlend - inkscape:collect="always" - mode="multiply" - in2="BackgroundImage" - id="feBlend3616" /> - </filter> - <filter - inkscape:collect="always" - id="filter3618"> - <feBlend - inkscape:collect="always" - mode="screen" - in2="BackgroundImage" - id="feBlend3620" /> - </filter> - <filter - inkscape:collect="always" - id="filter3622"> - <feBlend - inkscape:collect="always" - mode="darken" - in2="BackgroundImage" - id="feBlend3624" /> - </filter> - <filter - inkscape:collect="always" - id="filter3626"> - <feBlend - inkscape:collect="always" - mode="lighten" - in2="BackgroundImage" - id="feBlend3628" /> - </filter> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3518" - id="linearGradient3702" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3524" - id="linearGradient3704" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3530" - id="linearGradient3706" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3536" - id="linearGradient3708" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3518" - id="linearGradient3710" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3524" - id="linearGradient3712" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3530" - id="linearGradient3714" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3536" - id="linearGradient3716" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3518" - id="linearGradient3718" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3524" - id="linearGradient3720" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3530" - id="linearGradient3722" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3536" - id="linearGradient3724" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3518" - id="linearGradient3726" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3524" - id="linearGradient3728" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3530" - id="linearGradient3730" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3536" - id="linearGradient3732" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3518" - id="linearGradient3734" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3524" - id="linearGradient3736" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3530" - id="linearGradient3738" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3536" - id="linearGradient3740" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3518" - id="linearGradient3814" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3524" - id="linearGradient3816" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3530" - id="linearGradient3818" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3536" - id="linearGradient3820" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3518" - id="linearGradient3822" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3524" - id="linearGradient3824" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3530" - id="linearGradient3826" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3536" - id="linearGradient3828" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3518" - id="linearGradient3830" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3524" - id="linearGradient3832" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3530" - id="linearGradient3834" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3536" - id="linearGradient3836" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3518" - id="linearGradient3838" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3524" - id="linearGradient3840" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3530" - id="linearGradient3842" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3536" - id="linearGradient3844" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3518" - id="linearGradient3846" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29814" - x2="699.81165" - y2="468.29814" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3524" - id="linearGradient3848" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3530" - id="linearGradient3850" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3536" - id="linearGradient3852" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4202" - id="linearGradient4082" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29813" - x2="699.81165" - y2="468.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4208" - id="linearGradient4084" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4214" - id="linearGradient4086" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4220" - id="linearGradient4088" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4202" - id="linearGradient4236" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29813" - x2="699.81165" - y2="468.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4208" - id="linearGradient4238" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4214" - id="linearGradient4240" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4220" - id="linearGradient4242" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4202" - id="linearGradient4254" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29813" - x2="699.81165" - y2="468.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4208" - id="linearGradient4256" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4214" - id="linearGradient4258" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4220" - id="linearGradient4260" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4202" - id="linearGradient4272" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29813" - x2="699.81165" - y2="468.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4208" - id="linearGradient4274" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4214" - id="linearGradient4276" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4220" - id="linearGradient4278" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4202" - id="linearGradient4290" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29813" - x2="699.81165" - y2="468.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4208" - id="linearGradient4292" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4214" - id="linearGradient4294" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4220" - id="linearGradient4296" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <filter - inkscape:collect="always" - id="filter4298"> - <feBlend - inkscape:collect="always" - mode="multiply" - in2="BackgroundImage" - id="feBlend4300" /> - </filter> - <filter - inkscape:collect="always" - id="filter4302"> - <feBlend - inkscape:collect="always" - mode="screen" - in2="BackgroundImage" - id="feBlend4304" /> - </filter> - <filter - inkscape:collect="always" - id="filter4306"> - <feBlend - inkscape:collect="always" - mode="darken" - in2="BackgroundImage" - id="feBlend4308" /> - </filter> - <filter - inkscape:collect="always" - id="filter4310"> - <feBlend - inkscape:collect="always" - mode="lighten" - in2="BackgroundImage" - id="feBlend4312" /> - </filter> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4202" - id="linearGradient4364" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29813" - x2="699.81165" - y2="468.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4208" - id="linearGradient4366" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4214" - id="linearGradient4368" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4220" - id="linearGradient4370" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4202" - id="linearGradient4372" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29813" - x2="699.81165" - y2="468.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4208" - id="linearGradient4374" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4214" - id="linearGradient4376" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4220" - id="linearGradient4378" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4202" - id="linearGradient4380" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29813" - x2="699.81165" - y2="468.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4208" - id="linearGradient4382" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4214" - id="linearGradient4384" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4220" - id="linearGradient4386" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4202" - id="linearGradient4388" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29813" - x2="699.81165" - y2="468.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4208" - id="linearGradient4390" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4214" - id="linearGradient4392" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4220" - id="linearGradient4394" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4202" - id="linearGradient4396" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29813" - x2="699.81165" - y2="468.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4208" - id="linearGradient4398" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4214" - id="linearGradient4400" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4220" - id="linearGradient4402" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4202" - id="linearGradient4454" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29813" - x2="699.81165" - y2="468.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4208" - id="linearGradient4456" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4214" - id="linearGradient4458" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4220" - id="linearGradient4460" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4202" - id="linearGradient4462" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29813" - x2="699.81165" - y2="468.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4208" - id="linearGradient4464" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4214" - id="linearGradient4466" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4220" - id="linearGradient4468" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4202" - id="linearGradient4470" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29813" - x2="699.81165" - y2="468.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4208" - id="linearGradient4472" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4214" - id="linearGradient4474" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4220" - id="linearGradient4476" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4202" - id="linearGradient4478" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29813" - x2="699.81165" - y2="468.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4208" - id="linearGradient4480" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4214" - id="linearGradient4482" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4220" - id="linearGradient4484" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4202" - id="linearGradient4486" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="468.29813" - x2="699.81165" - y2="468.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4208" - id="linearGradient4488" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="484.29813" - x2="699.81165" - y2="484.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4214" - id="linearGradient4490" - gradientUnits="userSpaceOnUse" - x1="290.77213" - y1="500.29813" - x2="699.81165" - y2="500.29813" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4220" - id="linearGradient4492" - gradientUnits="userSpaceOnUse" - x1="289.26553" - y1="515.26233" - x2="699.81165" - y2="516.29816" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4496" - id="linearGradient4502" - x1="-242.53761" - y1="423.03714" - x2="-242.53761" - y2="141.60864" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.5593907,0,0,0.5593907,15.135684,-65.605922)" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4508" - id="linearGradient4506" - gradientUnits="userSpaceOnUse" - x1="-383.25186" - y1="282.32288" - x2="-101.82336" - y2="282.32288" - gradientTransform="translate(80,-100)" /> - <filter - inkscape:collect="always" - id="filter4514"> - <feBlend - inkscape:collect="always" - mode="multiply" - in2="BackgroundImage" - id="feBlend4516" /> - </filter> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4496" - id="linearGradient4522" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.5593907,0,0,0.5593907,15.135684,102.2113)" - x1="-242.53761" - y1="423.03714" - x2="-242.53761" - y2="141.60864" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4508" - id="linearGradient4524" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(80,200)" - x1="-383.25186" - y1="282.32288" - x2="-101.82336" - y2="282.32288" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4496" - id="linearGradient4534" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.5593907,0,0,0.5593907,15.135684,270.02853)" - x1="-242.53761" - y1="423.03714" - x2="-242.53761" - y2="141.60864" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4508" - id="linearGradient4536" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(80,500)" - x1="-383.25186" - y1="282.32288" - x2="-101.82336" - y2="282.32288" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4496" - id="linearGradient4554" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.5593907,0,0,0.5593907,15.135684,114.39408)" - x1="-242.53761" - y1="423.03714" - x2="-242.53761" - y2="141.60864" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4508" - id="linearGradient4556" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(80,-100)" - x1="-383.25186" - y1="282.32288" - x2="-101.82336" - y2="282.32288" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4496" - id="linearGradient4562" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.5593907,0,0,0.5593907,15.135684,294.39408)" - x1="-242.53761" - y1="423.03714" - x2="-242.53761" - y2="141.60864" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4508" - id="linearGradient4564" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(80,-100)" - x1="-383.25186" - y1="282.32288" - x2="-101.82336" - y2="282.32288" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4496" - id="linearGradient4570" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.5593907,0,0,0.5593907,15.135684,474.39408)" - x1="-242.53761" - y1="423.03714" - x2="-242.53761" - y2="141.60864" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4508" - id="linearGradient4572" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(80,-100)" - x1="-383.25186" - y1="282.32288" - x2="-101.82336" - y2="282.32288" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4496" - id="linearGradient4578" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.5593907,0,0,0.5593907,15.135684,814.39408)" - x1="-242.53761" - y1="423.03714" - x2="-242.53761" - y2="141.60864" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4508" - id="linearGradient4580" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(80,-100)" - x1="-383.25186" - y1="282.32288" - x2="-101.82336" - y2="282.32288" /> - <filter - inkscape:collect="always" - id="filter4582"> - <feBlend - inkscape:collect="always" - mode="screen" - in2="BackgroundImage" - id="feBlend4584" /> - </filter> - <filter - inkscape:collect="always" - id="filter4586"> - <feBlend - inkscape:collect="always" - mode="darken" - in2="BackgroundImage" - id="feBlend4588" /> - </filter> - <filter - inkscape:collect="always" - id="filter4590"> - <feBlend - inkscape:collect="always" - mode="lighten" - in2="BackgroundImage" - id="feBlend4592" /> - </filter> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4496" - id="linearGradient4598" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.5593907,0,0,0.5593907,995.13568,814.39408)" - x1="-242.53761" - y1="423.03714" - x2="-242.53761" - y2="141.60864" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4602" - id="linearGradient4600" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.5593907,0,0,0.5593907,995.13568,654.39408)" - x1="-383.25186" - y1="282.32288" - x2="-101.82336" - y2="282.32288" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4496" - id="linearGradient4612" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.5593907,0,0,0.5593907,995.13568,474.39408)" - x1="-242.53761" - y1="423.03714" - x2="-242.53761" - y2="141.60864" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4602" - id="linearGradient4614" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.5593907,0,0,0.5593907,995.13568,474.39408)" - x1="-383.25186" - y1="282.32288" - x2="-101.82336" - y2="282.32288" /> - <filter - inkscape:collect="always" - id="filter4616"> - <feBlend - inkscape:collect="always" - mode="lighten" - in2="BackgroundImage" - id="feBlend4618" /> - </filter> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4496" - id="linearGradient4624" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.5593907,0,0,0.5593907,995.13568,294.39408)" - x1="-242.53761" - y1="423.03714" - x2="-242.53761" - y2="141.60864" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4602" - id="linearGradient4626" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.5593907,0,0,0.5593907,995.13568,294.39408)" - x1="-383.25186" - y1="282.32288" - x2="-101.82336" - y2="282.32288" /> - <filter - inkscape:collect="always" - id="filter4628"> - <feBlend - inkscape:collect="always" - mode="darken" - in2="BackgroundImage" - id="feBlend4630" /> - </filter> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4496" - id="linearGradient4636" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.5593907,0,0,0.5593907,995.13568,114.39408)" - x1="-242.53761" - y1="423.03714" - x2="-242.53761" - y2="141.60864" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4602" - id="linearGradient4638" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.5593907,0,0,0.5593907,995.13568,114.39408)" - x1="-383.25186" - y1="282.32288" - x2="-101.82336" - y2="282.32288" /> - <filter - inkscape:collect="always" - id="filter4640"> - <feBlend - inkscape:collect="always" - mode="screen" - in2="BackgroundImage" - id="feBlend4642" /> - </filter> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4496" - id="linearGradient4648" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.5593907,0,0,0.5593907,995.13568,-65.60592)" - x1="-242.53761" - y1="423.03714" - x2="-242.53761" - y2="141.60864" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4602" - id="linearGradient4650" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.5593907,0,0,0.5593907,995.13568,-65.60592)" - x1="-383.25186" - y1="282.32288" - x2="-101.82336" - y2="282.32288" /> - <filter - inkscape:collect="always" - id="filter4652"> - <feBlend - inkscape:collect="always" - mode="multiply" - in2="BackgroundImage" - id="feBlend4654" /> - </filter> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.50027544" - inkscape:cx="369.4624" - inkscape:cy="520.03929" - inkscape:document-units="px" - inkscape:current-layer="layer1" - gridtolerance="10000" - inkscape:window-width="877" - inkscape:window-height="739" - inkscape:window-x="96" - inkscape:window-y="2" - showguides="true" - inkscape:guide-bbox="true" - guidetolerance="4" /> - <metadata - id="metadata1906"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:creator> - <cc:Agent> - <dc:title>Niko Kiirala <niko@kiirala.com></dc:title> - </cc:Agent> - </dc:creator> - <dc:title>Blending modes test</dc:title> - <dc:date>2007-07-03</dc:date> - <cc:license - rdf:resource="http://creativecommons.org/licenses/by-sa/2.5/" /> - <dc:language>en</dc:language> - <dc:subject> - <rdf:Bag> - <rdf:li>feBlend</rdf:li> - <rdf:li>blending modes</rdf:li> - <rdf:li>multiply</rdf:li> - <rdf:li>screen</rdf:li> - <rdf:li>darken</rdf:li> - <rdf:li>lighten</rdf:li> - </rdf:Bag> - </dc:subject> - <dc:rights> - <cc:Agent> - <dc:title>Copyright 2007 Niko Kiirala, licensed under Creative Commons by-sa 2.5</dc:title> - </cc:Agent> - </dc:rights> - </cc:Work> - <cc:License - rdf:about="http://creativecommons.org/licenses/by-sa/3.0/"> - <cc:permits - rdf:resource="http://web.resource.org/cc/Reproduction" /> - <cc:permits - rdf:resource="http://web.resource.org/cc/Distribution" /> - <cc:requires - rdf:resource="http://web.resource.org/cc/Notice" /> - <cc:requires - rdf:resource="http://web.resource.org/cc/Attribution" /> - <cc:permits - rdf:resource="http://web.resource.org/cc/DerivativeWorks" /> - <cc:requires - rdf:resource="http://web.resource.org/cc/ShareAlike" /> - </cc:License> - </rdf:RDF> - </metadata> - <g - inkscape:label="Taso 1" - inkscape:groupmode="layer" - id="layer1" - style="opacity:1"> - <g - id="g2861" - transform="translate(-103.06778,-166.47537)" - style="font-size:11"> - <path - transform="matrix(0.9598922,0,0,0.9598922,-15.224797,38.350228)" - d="M 511.47814,294.8725 A 104.17837,104.17837 0 1 1 303.12141,294.8725 A 104.17837,104.17837 0 1 1 511.47814,294.8725 z" - sodipodi:ry="104.17837" - sodipodi:rx="104.17837" - sodipodi:cy="294.8725" - sodipodi:cx="407.29977" - id="path2841" - style="opacity:1;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.04178368999999993;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:11.45962015" - sodipodi:type="arc" /> - <path - transform="matrix(1.0335704,0,0,1.0335704,-234.315,-41.213277)" - d="M 648.2907,312.13095 A 58.051197,58.051197 0 1 1 532.1883,312.13095 A 58.051197,58.051197 0 1 1 648.2907,312.13095 z" - sodipodi:ry="58.051197" - sodipodi:rx="58.051197" - sodipodi:cy="312.13095" - sodipodi:cx="590.2395" - id="path2843" - style="opacity:1;color:#000000;fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter2849);enable-background:accumulate;font-size:10.64271964" - sodipodi:type="arc" /> - <path - sodipodi:type="arc" - style="opacity:1;color:#000000;fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter2857);enable-background:accumulate;font-size:10.64271964" - id="path2845" - sodipodi:cx="590.2395" - sodipodi:cy="312.13095" - sodipodi:rx="58.051197" - sodipodi:ry="58.051197" - d="M 648.2907,312.13095 A 58.051197,58.051197 0 1 1 532.1883,312.13095 A 58.051197,58.051197 0 1 1 648.2907,312.13095 z" - transform="matrix(1.0335704,0,0,1.0335704,-267.75004,20.786723)" /> - <path - transform="matrix(1.0335704,0,0,1.0335704,-200.87996,20.786723)" - d="M 648.2907,312.13095 A 58.051197,58.051197 0 1 1 532.1883,312.13095 A 58.051197,58.051197 0 1 1 648.2907,312.13095 z" - sodipodi:ry="58.051197" - sodipodi:rx="58.051197" - sodipodi:cy="312.13095" - sodipodi:cx="590.2395" - id="path2847" - style="opacity:1;color:#000000;fill:#00ff00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter2853);enable-background:accumulate;font-size:10.64271964" - sodipodi:type="arc" /> - </g> - <g - id="g2867" - transform="translate(116.93222,-166.47537)" - style="font-size:11"> - <path - sodipodi:type="arc" - style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.04178368999999993;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:11.45962015" - id="path2869" - sodipodi:cx="407.29977" - sodipodi:cy="294.8725" - sodipodi:rx="104.17837" - sodipodi:ry="104.17837" - d="M 511.47814,294.8725 A 104.17837,104.17837 0 1 1 303.12141,294.8725 A 104.17837,104.17837 0 1 1 511.47814,294.8725 z" - transform="matrix(0.9598922,0,0,0.9598922,-15.224797,38.350228)" /> - <path - sodipodi:type="arc" - style="opacity:1;color:#000000;fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter2877);enable-background:accumulate;font-size:10.64271964" - id="path2871" - sodipodi:cx="590.2395" - sodipodi:cy="312.13095" - sodipodi:rx="58.051197" - sodipodi:ry="58.051197" - d="M 648.2907,312.13095 A 58.051197,58.051197 0 1 1 532.1883,312.13095 A 58.051197,58.051197 0 1 1 648.2907,312.13095 z" - transform="matrix(1.0335704,0,0,1.0335704,-234.315,-41.213277)" /> - <path - transform="matrix(1.0335704,0,0,1.0335704,-267.75004,20.786723)" - d="M 648.2907,312.13095 A 58.051197,58.051197 0 1 1 532.1883,312.13095 A 58.051197,58.051197 0 1 1 648.2907,312.13095 z" - sodipodi:ry="58.051197" - sodipodi:rx="58.051197" - sodipodi:cy="312.13095" - sodipodi:cx="590.2395" - id="path2873" - style="opacity:1;color:#000000;fill:#ff00ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter2885);enable-background:accumulate;font-size:10.64271964" - sodipodi:type="arc" /> - <path - sodipodi:type="arc" - style="opacity:1;color:#000000;fill:#00ffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter2881);enable-background:accumulate;font-size:10.64271964" - id="path2875" - sodipodi:cx="590.2395" - sodipodi:cy="312.13095" - sodipodi:rx="58.051197" - sodipodi:ry="58.051197" - d="M 648.2907,312.13095 A 58.051197,58.051197 0 1 1 532.1883,312.13095 A 58.051197,58.051197 0 1 1 648.2907,312.13095 z" - transform="matrix(1.0335704,0,0,1.0335704,-200.87996,20.786723)" /> - </g> - <rect - style="opacity:1;color:#000000;fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:11" - id="rect2917" - width="217.79048" - height="218.19157" - x="260.9502" - y="291.53549" /> - <g - id="g2967" - transform="matrix(0.5324436,0,0,0.5324436,106.13043,58.09832)" - style="font-size:20.65946515"> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3152);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect2919" - width="409.03952" - height="15.065946" - x="290.77213" - y="460.76517" /> - <rect - y="476.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect2921" - style="opacity:1;color:#000000;fill:url(#linearGradient3154);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3156);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect2923" - width="409.03952" - height="15.065946" - x="290.77213" - y="492.76517" /> - <rect - y="508.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect2925" - style="opacity:1;color:#000000;fill:url(#linearGradient3158);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - </g> - <g - id="g2977" - transform="matrix(0.5324436,0,0,0.5324436,106.13043,100.69381)" - style="filter:url(#filter2995);font-size:20.65946515"> - <rect - y="460.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect2979" - style="opacity:1;color:#000000;fill:url(#linearGradient3144);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3146);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect2981" - width="409.03952" - height="15.065946" - x="290.77213" - y="476.76517" /> - <rect - y="492.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect2983" - style="opacity:1;color:#000000;fill:url(#linearGradient3148);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3150);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect2985" - width="409.03952" - height="15.065946" - x="290.77213" - y="508.76517" /> - </g> - <g - style="filter:url(#filter3017);font-size:20.65946515" - transform="matrix(0.5324436,0,0,0.5324436,106.13043,143.28929)" - id="g2999"> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3136);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3001" - width="409.03952" - height="15.065946" - x="290.77213" - y="460.76517" /> - <rect - y="476.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3003" - style="opacity:1;color:#000000;fill:url(#linearGradient3138);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3140);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3005" - width="409.03952" - height="15.065946" - x="290.77213" - y="492.76517" /> - <rect - y="508.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3007" - style="opacity:1;color:#000000;fill:url(#linearGradient3142);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - </g> - <g - id="g3021" - transform="matrix(0.5324436,0,0,0.5324436,106.13043,185.88478)" - style="filter:url(#filter3039);font-size:20.65946515"> - <rect - y="460.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3023" - style="opacity:1;color:#000000;fill:url(#linearGradient3128);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3130);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3025" - width="409.03952" - height="15.065946" - x="290.77213" - y="476.76517" /> - <rect - y="492.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3027" - style="opacity:1;color:#000000;fill:url(#linearGradient3132);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3134);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3029" - width="409.03952" - height="15.065946" - x="290.77213" - y="508.76517" /> - </g> - <g - style="filter:url(#filter3061);font-size:20.65946515" - transform="matrix(0.5324436,0,0,0.5324436,106.13043,228.48026)" - id="g3043"> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3120);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3045" - width="409.03952" - height="15.065946" - x="290.77213" - y="460.76517" /> - <rect - y="476.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3047" - style="opacity:1;color:#000000;fill:url(#linearGradient3122);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3124);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3049" - width="409.03952" - height="15.065946" - x="290.77213" - y="492.76517" /> - <rect - y="508.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3051" - style="opacity:1;color:#000000;fill:url(#linearGradient3126);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - </g> - <text - xml:space="preserve" - style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="253.79825" - y="45.830627" - id="text3110" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3112" - x="253.79825" - y="45.830627">Screen</tspan></text> - <text - xml:space="preserve" - style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="471.92325" - y="45.830627" - id="text3114" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3116" - x="471.92325" - y="45.830627">Multiply</tspan></text> - <text - xml:space="preserve" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="263.07996" - y="301.25674" - id="text3162" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3164" - x="263.07996" - y="301.25674">Normal</tspan></text> - <text - xml:space="preserve" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="263.07996" - y="344.6597" - id="text3166" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3168" - x="263.07996" - y="344.6597">Multiply</tspan></text> - <text - xml:space="preserve" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="263.07996" - y="387.06519" - id="text3170" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3172" - x="263.07996" - y="387.06519">Screen</tspan></text> - <text - xml:space="preserve" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="263.07996" - y="430.13126" - id="text3174" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3176" - x="263.07996" - y="430.13126">Darken</tspan></text> - <text - xml:space="preserve" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="263.07996" - y="472.16821" - id="text3178" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3180" - x="263.07996" - y="472.16821">Lighten</tspan></text> - <rect - y="291.53549" - x="37.323883" - height="218.19157" - width="217.79048" - id="rect3182" - style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.53244358000000003;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:11" /> - <g - transform="matrix(0.5324436,0,0,0.5324436,-117.49588,58.09832)" - id="g3184" - style="font-size:20.65946515"> - <rect - y="460.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3186" - style="opacity:1;color:#000000;fill:url(#linearGradient3254);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3256);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3188" - width="409.03952" - height="15.065946" - x="290.77213" - y="476.76517" /> - <rect - y="492.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3190" - style="opacity:1;color:#000000;fill:url(#linearGradient3258);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3260);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3192" - width="409.03952" - height="15.065946" - x="290.77213" - y="508.76517" /> - </g> - <g - style="filter:url(#filter2995);font-size:20.65946515" - transform="matrix(0.5324436,0,0,0.5324436,-117.49588,100.69381)" - id="g3194"> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3262);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3196" - width="409.03952" - height="15.065946" - x="290.77213" - y="460.76517" /> - <rect - y="476.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3198" - style="opacity:1;color:#000000;fill:url(#linearGradient3264);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3266);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3200" - width="409.03952" - height="15.065946" - x="290.77213" - y="492.76517" /> - <rect - y="508.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3202" - style="opacity:1;color:#000000;fill:url(#linearGradient3268);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - </g> - <g - id="g3204" - transform="matrix(0.5324436,0,0,0.5324436,-117.49588,143.28929)" - style="filter:url(#filter3017);font-size:20.65946515"> - <rect - y="460.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3206" - style="opacity:1;color:#000000;fill:url(#linearGradient3270);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3272);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3208" - width="409.03952" - height="15.065946" - x="290.77213" - y="476.76517" /> - <rect - y="492.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3210" - style="opacity:1;color:#000000;fill:url(#linearGradient3274);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3276);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3212" - width="409.03952" - height="15.065946" - x="290.77213" - y="508.76517" /> - </g> - <g - style="filter:url(#filter3039);font-size:20.65946515" - transform="matrix(0.5324436,0,0,0.5324436,-117.49588,185.88478)" - id="g3214"> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3278);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3216" - width="409.03952" - height="15.065946" - x="290.77213" - y="460.76517" /> - <rect - y="476.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3218" - style="opacity:1;color:#000000;fill:url(#linearGradient3280);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3282);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3220" - width="409.03952" - height="15.065946" - x="290.77213" - y="492.76517" /> - <rect - y="508.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3222" - style="opacity:1;color:#000000;fill:url(#linearGradient3284);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - </g> - <g - id="g3224" - transform="matrix(0.5324436,0,0,0.5324436,-117.49588,228.48026)" - style="filter:url(#filter3061);font-size:20.65946515"> - <rect - y="460.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3226" - style="opacity:1;color:#000000;fill:url(#linearGradient3286);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3288);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3228" - width="409.03952" - height="15.065946" - x="290.77213" - y="476.76517" /> - <rect - y="492.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3230" - style="opacity:1;color:#000000;fill:url(#linearGradient3290);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3292);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3232" - width="409.03952" - height="15.065946" - x="290.77213" - y="508.76517" /> - </g> - <text - sodipodi:linespacing="125%" - id="text3234" - y="301.25674" - x="39.453655" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="301.25674" - x="39.453655" - id="tspan3236" - sodipodi:role="line">Normal</tspan></text> - <text - sodipodi:linespacing="125%" - id="text3238" - y="344.6597" - x="39.453655" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="344.6597" - x="39.453655" - id="tspan3240" - sodipodi:role="line">Multiply</tspan></text> - <text - sodipodi:linespacing="125%" - id="text3242" - y="387.06519" - x="39.453655" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="387.06519" - x="39.453655" - id="tspan3244" - sodipodi:role="line">Screen</tspan></text> - <text - sodipodi:linespacing="125%" - id="text3246" - y="430.13126" - x="39.453655" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="430.13126" - x="39.453655" - id="tspan3248" - sodipodi:role="line">Darken</tspan></text> - <text - sodipodi:linespacing="125%" - id="text3250" - y="472.16821" - x="39.453655" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="472.16821" - x="39.453655" - id="tspan3252" - sodipodi:role="line">Lighten</tspan></text> - <rect - y="291.53549" - x="484.57645" - height="218.19157" - width="217.79048" - id="rect3294" - style="opacity:1;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:11" /> - <g - transform="matrix(0.5324436,0,0,0.5324436,329.75672,58.09832)" - id="g3296" - style="font-size:20.65946515"> - <rect - y="460.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3298" - style="opacity:1;color:#000000;fill:url(#linearGradient3366);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3368);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3300" - width="409.03952" - height="15.065946" - x="290.77213" - y="476.76517" /> - <rect - y="492.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3302" - style="opacity:1;color:#000000;fill:url(#linearGradient3370);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3372);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3304" - width="409.03952" - height="15.065946" - x="290.77213" - y="508.76517" /> - </g> - <g - style="filter:url(#filter2995);font-size:20.65946515" - transform="matrix(0.5324436,0,0,0.5324436,329.75672,100.69381)" - id="g3306"> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3374);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3308" - width="409.03952" - height="15.065946" - x="290.77213" - y="460.76517" /> - <rect - y="476.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3310" - style="opacity:1;color:#000000;fill:url(#linearGradient3376);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3378);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3312" - width="409.03952" - height="15.065946" - x="290.77213" - y="492.76517" /> - <rect - y="508.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3314" - style="opacity:1;color:#000000;fill:url(#linearGradient3380);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - </g> - <g - id="g3316" - transform="matrix(0.5324436,0,0,0.5324436,329.75672,143.28929)" - style="filter:url(#filter3017);font-size:20.65946515"> - <rect - y="460.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3318" - style="opacity:1;color:#000000;fill:url(#linearGradient3382);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3384);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3320" - width="409.03952" - height="15.065946" - x="290.77213" - y="476.76517" /> - <rect - y="492.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3322" - style="opacity:1;color:#000000;fill:url(#linearGradient3386);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3388);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3324" - width="409.03952" - height="15.065946" - x="290.77213" - y="508.76517" /> - </g> - <g - style="filter:url(#filter3039);font-size:20.65946515" - transform="matrix(0.5324436,0,0,0.5324436,329.75672,185.88478)" - id="g3326"> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3390);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3328" - width="409.03952" - height="15.065946" - x="290.77213" - y="460.76517" /> - <rect - y="476.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3330" - style="opacity:1;color:#000000;fill:url(#linearGradient3392);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3394);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3332" - width="409.03952" - height="15.065946" - x="290.77213" - y="492.76517" /> - <rect - y="508.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3334" - style="opacity:1;color:#000000;fill:url(#linearGradient3396);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - </g> - <g - id="g3336" - transform="matrix(0.5324436,0,0,0.5324436,329.75672,228.48026)" - style="filter:url(#filter3061);font-size:20.65946515"> - <rect - y="460.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3338" - style="opacity:1;color:#000000;fill:url(#linearGradient3398);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3400);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3340" - width="409.03952" - height="15.065946" - x="290.77213" - y="476.76517" /> - <rect - y="492.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3342" - style="opacity:1;color:#000000;fill:url(#linearGradient3402);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3404);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3344" - width="409.03952" - height="15.065946" - x="290.77213" - y="508.76517" /> - </g> - <text - sodipodi:linespacing="125%" - id="text3346" - y="301.25674" - x="486.70624" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="301.25674" - x="486.70624" - id="tspan3348" - sodipodi:role="line">Normal</tspan></text> - <text - sodipodi:linespacing="125%" - id="text3350" - y="344.6597" - x="486.70624" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="344.6597" - x="486.70624" - id="tspan3352" - sodipodi:role="line">Multiply</tspan></text> - <text - sodipodi:linespacing="125%" - id="text3354" - y="387.06519" - x="486.70624" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="387.06519" - x="486.70624" - id="tspan3356" - sodipodi:role="line">Screen</tspan></text> - <text - sodipodi:linespacing="125%" - id="text3358" - y="430.13126" - x="486.70624" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="430.13126" - x="486.70624" - id="tspan3360" - sodipodi:role="line">Darken</tspan></text> - <text - sodipodi:linespacing="125%" - id="text3362" - y="472.16821" - x="486.70624" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="472.16821" - x="486.70624" - id="tspan3364" - sodipodi:role="line">Lighten</tspan></text> - <rect - y="535.1618" - x="260.9502" - height="218.19157" - width="217.79048" - id="rect3406" - style="opacity:1;color:#000000;fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:11" /> - <g - transform="matrix(0.5324436,0,0,0.5324436,106.13043,301.72462)" - id="g3408" - style="font-size:20.65946515"> - <rect - y="460.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3410" - style="opacity:1;color:#000000;fill:url(#linearGradient3478);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3480);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3412" - width="409.03952" - height="15.065946" - x="290.77213" - y="476.76517" /> - <rect - y="492.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3414" - style="opacity:1;color:#000000;fill:url(#linearGradient3482);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3484);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3416" - width="409.03952" - height="15.065946" - x="290.77213" - y="508.76517" /> - </g> - <text - sodipodi:linespacing="125%" - id="text3458" - y="544.883" - x="263.07996" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="544.883" - x="263.07996" - id="tspan3460" - sodipodi:role="line">Normal</tspan></text> - <text - sodipodi:linespacing="125%" - id="text3462" - y="588.28601" - x="263.07996" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="588.28601" - x="263.07996" - id="tspan3464" - sodipodi:role="line">Multiply</tspan></text> - <text - sodipodi:linespacing="125%" - id="text3466" - y="630.69147" - x="263.07996" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="630.69147" - x="263.07996" - id="tspan3468" - sodipodi:role="line">Screen</tspan></text> - <text - sodipodi:linespacing="125%" - id="text3470" - y="673.75757" - x="263.07996" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="673.75757" - x="263.07996" - id="tspan3472" - sodipodi:role="line">Darken</tspan></text> - <text - sodipodi:linespacing="125%" - id="text3474" - y="715.79443" - x="263.07996" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="715.79443" - x="263.07996" - id="tspan3476" - sodipodi:role="line">Lighten</tspan></text> - <g - id="g3542" - transform="matrix(0.5324436,0,0,0.5324436,106.13043,344.3201)" - style="filter:url(#filter3614);font-size:20.65946515"> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3552);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3544" - width="409.03952" - height="15.065946" - x="290.77213" - y="460.76517" /> - <rect - y="476.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3546" - style="opacity:1;color:#000000;fill:url(#linearGradient3554);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3556);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3548" - width="409.03952" - height="15.065946" - x="290.77213" - y="492.76517" /> - <rect - y="508.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3550" - style="opacity:1;color:#000000;fill:url(#linearGradient3558);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - </g> - <g - transform="matrix(0.5324436,0,0,0.5324436,106.13043,386.91559)" - id="g3560" - style="filter:url(#filter3618);font-size:20.65946515"> - <rect - y="460.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3562" - style="opacity:1;color:#000000;fill:url(#linearGradient3570);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3572);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3564" - width="409.03952" - height="15.065946" - x="290.77213" - y="476.76517" /> - <rect - y="492.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3566" - style="opacity:1;color:#000000;fill:url(#linearGradient3574);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3576);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3568" - width="409.03952" - height="15.065946" - x="290.77213" - y="508.76517" /> - </g> - <g - id="g3578" - transform="matrix(0.5324436,0,0,0.5324436,106.13043,429.51108)" - style="filter:url(#filter3622);font-size:20.65946515"> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3588);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3580" - width="409.03952" - height="15.065946" - x="290.77213" - y="460.76517" /> - <rect - y="476.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3582" - style="opacity:1;color:#000000;fill:url(#linearGradient3590);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3592);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3584" - width="409.03952" - height="15.065946" - x="290.77213" - y="492.76517" /> - <rect - y="508.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3586" - style="opacity:1;color:#000000;fill:url(#linearGradient3594);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - </g> - <g - transform="matrix(0.5324436,0,0,0.5324436,106.13043,472.10656)" - id="g3596" - style="filter:url(#filter3626);font-size:20.65946515"> - <rect - y="460.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3598" - style="opacity:1;color:#000000;fill:url(#linearGradient3606);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3608);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3600" - width="409.03952" - height="15.065946" - x="290.77213" - y="476.76517" /> - <rect - y="492.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3602" - style="opacity:1;color:#000000;fill:url(#linearGradient3610);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3612);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3604" - width="409.03952" - height="15.065946" - x="290.77213" - y="508.76517" /> - </g> - <rect - style="opacity:1;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:11" - id="rect3630" - width="217.79048" - height="218.19157" - x="484.57645" - y="535.1618" /> - <g - id="g3632" - transform="matrix(0.5324436,0,0,0.5324436,329.75672,301.72462)" - style="font-size:20.65946515"> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3702);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3634" - width="409.03952" - height="15.065946" - x="290.77213" - y="460.76517" /> - <rect - y="476.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3636" - style="opacity:1;color:#000000;fill:url(#linearGradient3704);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3706);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3638" - width="409.03952" - height="15.065946" - x="290.77213" - y="492.76517" /> - <rect - y="508.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3640" - style="opacity:1;color:#000000;fill:url(#linearGradient3708);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - </g> - <text - xml:space="preserve" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="486.70624" - y="544.883" - id="text3642" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3644" - x="486.70624" - y="544.883">Normal</tspan></text> - <text - xml:space="preserve" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="486.70624" - y="588.28601" - id="text3646" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3648" - x="486.70624" - y="588.28601">Multiply</tspan></text> - <text - xml:space="preserve" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="486.70624" - y="630.69147" - id="text3650" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3652" - x="486.70624" - y="630.69147">Screen</tspan></text> - <text - xml:space="preserve" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="486.70624" - y="673.75757" - id="text3654" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3656" - x="486.70624" - y="673.75757">Darken</tspan></text> - <text - xml:space="preserve" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="486.70624" - y="715.79443" - id="text3658" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3660" - x="486.70624" - y="715.79443">Lighten</tspan></text> - <g - style="filter:url(#filter3614);font-size:20.65946515" - transform="matrix(0.5324436,0,0,0.5324436,329.75672,344.3201)" - id="g3662"> - <rect - y="460.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3664" - style="opacity:1;color:#000000;fill:url(#linearGradient3710);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3712);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3666" - width="409.03952" - height="15.065946" - x="290.77213" - y="476.76517" /> - <rect - y="492.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3668" - style="opacity:1;color:#000000;fill:url(#linearGradient3714);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3716);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3670" - width="409.03952" - height="15.065946" - x="290.77213" - y="508.76517" /> - </g> - <g - style="filter:url(#filter3618);font-size:20.65946515" - id="g3672" - transform="matrix(0.5324436,0,0,0.5324436,329.75672,386.91559)"> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3718);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3674" - width="409.03952" - height="15.065946" - x="290.77213" - y="460.76517" /> - <rect - y="476.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3676" - style="opacity:1;color:#000000;fill:url(#linearGradient3720);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3722);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3678" - width="409.03952" - height="15.065946" - x="290.77213" - y="492.76517" /> - <rect - y="508.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3680" - style="opacity:1;color:#000000;fill:url(#linearGradient3724);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - </g> - <g - style="filter:url(#filter3622);font-size:20.65946515" - transform="matrix(0.5324436,0,0,0.5324436,329.75672,429.51108)" - id="g3682"> - <rect - y="460.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3684" - style="opacity:1;color:#000000;fill:url(#linearGradient3726);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3728);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3686" - width="409.03952" - height="15.065946" - x="290.77213" - y="476.76517" /> - <rect - y="492.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3688" - style="opacity:1;color:#000000;fill:url(#linearGradient3730);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3732);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3690" - width="409.03952" - height="15.065946" - x="290.77213" - y="508.76517" /> - </g> - <g - style="filter:url(#filter3626);font-size:20.65946515" - id="g3692" - transform="matrix(0.5324436,0,0,0.5324436,329.75672,472.10656)"> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3734);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3694" - width="409.03952" - height="15.065946" - x="290.77213" - y="460.76517" /> - <rect - y="476.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3696" - style="opacity:1;color:#000000;fill:url(#linearGradient3736);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3738);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3698" - width="409.03952" - height="15.065946" - x="290.77213" - y="492.76517" /> - <rect - y="508.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3700" - style="opacity:1;color:#000000;fill:url(#linearGradient3740);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - </g> - <rect - style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.53244358000000003;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:11" - id="rect3742" - width="217.79048" - height="218.19157" - x="37.323883" - y="535.1618" /> - <g - id="g3744" - transform="matrix(0.5324436,0,0,0.5324436,-117.49588,301.72462)" - style="font-size:20.65946515"> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3814);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3746" - width="409.03952" - height="15.065946" - x="290.77213" - y="460.76517" /> - <rect - y="476.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3748" - style="opacity:1;color:#000000;fill:url(#linearGradient3816);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3818);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3750" - width="409.03952" - height="15.065946" - x="290.77213" - y="492.76517" /> - <rect - y="508.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3752" - style="opacity:1;color:#000000;fill:url(#linearGradient3820);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - </g> - <text - xml:space="preserve" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="39.453655" - y="544.883" - id="text3754" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3756" - x="39.453655" - y="544.883">Normal</tspan></text> - <text - xml:space="preserve" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="39.453655" - y="588.28601" - id="text3758" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3760" - x="39.453655" - y="588.28601">Multiply</tspan></text> - <text - xml:space="preserve" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="39.453655" - y="630.69147" - id="text3762" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3764" - x="39.453655" - y="630.69147">Screen</tspan></text> - <text - xml:space="preserve" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="39.453655" - y="673.75757" - id="text3766" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3768" - x="39.453655" - y="673.75757">Darken</tspan></text> - <text - xml:space="preserve" - style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="39.453655" - y="715.79443" - id="text3770" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3772" - x="39.453655" - y="715.79443">Lighten</tspan></text> - <g - style="filter:url(#filter3614);font-size:20.65946515" - transform="matrix(0.5324436,0,0,0.5324436,-117.49588,344.3201)" - id="g3774"> - <rect - y="460.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3776" - style="opacity:1;color:#000000;fill:url(#linearGradient3822);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3824);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3778" - width="409.03952" - height="15.065946" - x="290.77213" - y="476.76517" /> - <rect - y="492.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3780" - style="opacity:1;color:#000000;fill:url(#linearGradient3826);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3828);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3782" - width="409.03952" - height="15.065946" - x="290.77213" - y="508.76517" /> - </g> - <g - style="filter:url(#filter3618);font-size:20.65946515" - id="g3784" - transform="matrix(0.5324436,0,0,0.5324436,-117.49588,386.91559)"> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3830);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3786" - width="409.03952" - height="15.065946" - x="290.77213" - y="460.76517" /> - <rect - y="476.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3788" - style="opacity:1;color:#000000;fill:url(#linearGradient3832);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3834);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3790" - width="409.03952" - height="15.065946" - x="290.77213" - y="492.76517" /> - <rect - y="508.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3792" - style="opacity:1;color:#000000;fill:url(#linearGradient3836);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - </g> - <g - style="filter:url(#filter3622);font-size:20.65946515" - transform="matrix(0.5324436,0,0,0.5324436,-117.49588,429.51108)" - id="g3794"> - <rect - y="460.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3796" - style="opacity:1;color:#000000;fill:url(#linearGradient3838);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3840);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3798" - width="409.03952" - height="15.065946" - x="290.77213" - y="476.76517" /> - <rect - y="492.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3800" - style="opacity:1;color:#000000;fill:url(#linearGradient3842);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3844);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3802" - width="409.03952" - height="15.065946" - x="290.77213" - y="508.76517" /> - </g> - <g - style="filter:url(#filter3626);font-size:20.65946515" - id="g3804" - transform="matrix(0.5324436,0,0,0.5324436,-117.49588,472.10656)"> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3846);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3806" - width="409.03952" - height="15.065946" - x="290.77213" - y="460.76517" /> - <rect - y="476.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3808" - style="opacity:1;color:#000000;fill:url(#linearGradient3848);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient3850);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" - id="rect3810" - width="409.03952" - height="15.065946" - x="290.77213" - y="492.76517" /> - <rect - y="508.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3812" - style="opacity:1;color:#000000;fill:url(#linearGradient3852);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> - </g> - <text - xml:space="preserve" - style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="36.460007" - y="288.6987" - id="text3854" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3856" - x="36.460007" - y="288.6987">Colour to white</tspan></text> - <text - xml:space="preserve" - style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="36.460007" - y="530.5387" - id="text3858" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3860" - x="36.460007" - y="530.5387">Colour to transparent</tspan></text> - <rect - style="font-size:11px;opacity:1;color:#000000;fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect3862" - width="217.79048" - height="218.19157" - x="260.9502" - y="775.1618" /> - <g - style="font-size:20.65946579px" - id="g3864" - transform="matrix(0.5324436,0,0,0.5324436,106.13043,541.72462)"> - <rect - style="font-size:20.65946578999999872px;opacity:1;color:#000000;fill:url(#linearGradient4082);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect3866" - width="409.03952" - height="15.065946" - x="290.77213" - y="460.76517" /> - <rect - y="476.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3868" - style="font-size:20.65946578999999872px;opacity:1;color:#000000;fill:url(#linearGradient4084);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="font-size:20.65946578999999872px;opacity:1;color:#000000;fill:url(#linearGradient4086);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect3870" - width="409.03952" - height="15.065946" - x="290.77213" - y="492.76517" /> - <rect - y="508.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect3872" - style="font-size:20.65946578999999872px;opacity:1;color:#000000;fill:url(#linearGradient4088);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - </g> - <text - xml:space="preserve" - style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="263.07996" - y="784.883" - id="text3874" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3876" - x="263.07996" - y="784.883">Normal</tspan></text> - <text - xml:space="preserve" - style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="263.07996" - y="828.28601" - id="text3878" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3880" - x="263.07996" - y="828.28601">Multiply</tspan></text> - <text - xml:space="preserve" - style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="263.07996" - y="870.69147" - id="text3882" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3884" - x="263.07996" - y="870.69147">Screen</tspan></text> - <text - xml:space="preserve" - style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="263.07996" - y="913.75757" - id="text3886" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3888" - x="263.07996" - y="913.75757">Darken</tspan></text> - <text - xml:space="preserve" - style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - x="263.07996" - y="955.79443" - id="text3890" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3892" - x="263.07996" - y="955.79443">Lighten</tspan></text> - <rect - y="775.1618" - x="484.57645" - height="218.19157" - width="217.79048" - id="rect3934" - style="font-size:11px;opacity:1;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <text - sodipodi:linespacing="125%" - id="text3946" - y="784.883" - x="486.70624" - style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="784.883" - x="486.70624" - id="tspan3948" - sodipodi:role="line">Normal</tspan></text> - <text - sodipodi:linespacing="125%" - id="text3950" - y="828.28601" - x="486.70624" - style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="828.28601" - x="486.70624" - id="tspan3952" - sodipodi:role="line">Multiply</tspan></text> - <text - sodipodi:linespacing="125%" - id="text3954" - y="870.69147" - x="486.70624" - style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="870.69147" - x="486.70624" - id="tspan3956" - sodipodi:role="line">Screen</tspan></text> - <text - sodipodi:linespacing="125%" - id="text3958" - y="913.75757" - x="486.70624" - style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="913.75757" - x="486.70624" - id="tspan3960" - sodipodi:role="line">Darken</tspan></text> - <text - sodipodi:linespacing="125%" - id="text3962" - y="955.79443" - x="486.70624" - style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="955.79443" - x="486.70624" - id="tspan3964" - sodipodi:role="line">Lighten</tspan></text> - <rect - y="775.1618" - x="37.323883" - height="218.19157" - width="217.79048" - id="rect4006" - style="font-size:11px;opacity:1;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.53244358;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <text - sodipodi:linespacing="125%" - id="text4018" - y="784.883" - x="39.453655" - style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="784.883" - x="39.453655" - id="tspan4020" - sodipodi:role="line">Normal</tspan></text> - <text - sodipodi:linespacing="125%" - id="text4022" - y="828.28601" - x="39.453655" - style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="828.28601" - x="39.453655" - id="tspan4024" - sodipodi:role="line">Multiply</tspan></text> - <text - sodipodi:linespacing="125%" - id="text4026" - y="870.69147" - x="39.453655" - style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="870.69147" - x="39.453655" - id="tspan4028" - sodipodi:role="line">Screen</tspan></text> - <text - sodipodi:linespacing="125%" - id="text4030" - y="913.75757" - x="39.453655" - style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="913.75757" - x="39.453655" - id="tspan4032" - sodipodi:role="line">Darken</tspan></text> - <text - sodipodi:linespacing="125%" - id="text4034" - y="955.79443" - x="39.453655" - style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="955.79443" - x="39.453655" - id="tspan4036" - sodipodi:role="line">Lighten</tspan></text> - <text - sodipodi:linespacing="125%" - id="text4078" - y="770.5387" - x="36.460007" - style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" - xml:space="preserve"><tspan - y="770.5387" - x="36.460007" - id="tspan4080" - sodipodi:role="line">Colour to transparent (CMYK)</tspan></text> - <g - transform="matrix(0.5324436,0,0,0.5324436,106.13043,584.3201)" - id="g4226" - style="font-size:20.65946578999999872px;filter:url(#filter4298)"> - <rect - y="460.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4228" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4236);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4238);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4230" - width="409.03952" - height="15.065946" - x="290.77213" - y="476.76517" /> - <rect - y="492.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4232" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4240);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4242);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4234" - width="409.03952" - height="15.065946" - x="290.77213" - y="508.76517" /> - </g> - <g - transform="matrix(0.5324436,0,0,0.5324436,106.13043,626.91559)" - id="g4244" - style="font-size:20.65946578999999872px;filter:url(#filter4302)"> - <rect - y="460.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4246" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4254);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4256);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4248" - width="409.03952" - height="15.065946" - x="290.77213" - y="476.76517" /> - <rect - y="492.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4250" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4258);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4260);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4252" - width="409.03952" - height="15.065946" - x="290.77213" - y="508.76517" /> - </g> - <g - transform="matrix(0.5324436,0,0,0.5324436,106.13043,669.51108)" - id="g4262" - style="font-size:20.65946578999999872px;filter:url(#filter4306)"> - <rect - y="460.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4264" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4272);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4274);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4266" - width="409.03952" - height="15.065946" - x="290.77213" - y="476.76517" /> - <rect - y="492.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4268" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4276);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4278);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4270" - width="409.03952" - height="15.065946" - x="290.77213" - y="508.76517" /> - </g> - <g - style="font-size:20.65946578999999872px;filter:url(#filter4310)" - id="g4280" - transform="matrix(0.5324436,0,0,0.5324436,106.13043,712.10656)"> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4290);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4282" - width="409.03952" - height="15.065946" - x="290.77213" - y="460.76517" /> - <rect - y="476.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4284" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4292);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4294);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4286" - width="409.03952" - height="15.065946" - x="290.77213" - y="492.76517" /> - <rect - y="508.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4288" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4296);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - </g> - <g - transform="matrix(0.5324436,0,0,0.5324436,-117.7621,541.72462)" - id="g4314" - style="font-size:20.65946579px"> - <rect - y="460.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4316" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4364);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4366);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4318" - width="409.03952" - height="15.065946" - x="290.77213" - y="476.76517" /> - <rect - y="492.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4320" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4368);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4370);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4322" - width="409.03952" - height="15.065946" - x="290.77213" - y="508.76517" /> - </g> - <g - style="font-size:20.65946579px;filter:url(#filter4298)" - id="g4324" - transform="matrix(0.5324436,0,0,0.5324436,-117.7621,584.3201)"> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4372);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4326" - width="409.03952" - height="15.065946" - x="290.77213" - y="460.76517" /> - <rect - y="476.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4328" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4374);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4376);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4330" - width="409.03952" - height="15.065946" - x="290.77213" - y="492.76517" /> - <rect - y="508.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4332" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4378);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - </g> - <g - style="font-size:20.65946579px;filter:url(#filter4302)" - id="g4334" - transform="matrix(0.5324436,0,0,0.5324436,-117.7621,626.91559)"> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4380);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4336" - width="409.03952" - height="15.065946" - x="290.77213" - y="460.76517" /> - <rect - y="476.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4338" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4382);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4384);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4340" - width="409.03952" - height="15.065946" - x="290.77213" - y="492.76517" /> - <rect - y="508.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4342" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4386);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - </g> - <g - style="font-size:20.65946579px;filter:url(#filter4306)" - id="g4344" - transform="matrix(0.5324436,0,0,0.5324436,-117.7621,669.51108)"> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4388);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4346" - width="409.03952" - height="15.065946" - x="290.77213" - y="460.76517" /> - <rect - y="476.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4348" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4390);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4392);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4350" - width="409.03952" - height="15.065946" - x="290.77213" - y="492.76517" /> - <rect - y="508.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4352" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4394);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - </g> - <g - transform="matrix(0.5324436,0,0,0.5324436,-117.7621,712.10656)" - id="g4354" - style="font-size:20.65946579px;filter:url(#filter4310)"> - <rect - y="460.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4356" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4396);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4398);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4358" - width="409.03952" - height="15.065946" - x="290.77213" - y="476.76517" /> - <rect - y="492.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4360" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4400);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4402);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4362" - width="409.03952" - height="15.065946" - x="290.77213" - y="508.76517" /> - </g> - <g - transform="matrix(0.5324436,0,0,0.5324436,329.75669,541.72462)" - id="g4404" - style="font-size:20.65946579px"> - <rect - y="460.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4406" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4454);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4456);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4408" - width="409.03952" - height="15.065946" - x="290.77213" - y="476.76517" /> - <rect - y="492.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4410" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4458);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4460);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4412" - width="409.03952" - height="15.065946" - x="290.77213" - y="508.76517" /> - </g> - <g - style="font-size:20.65946579px;filter:url(#filter4298)" - id="g4414" - transform="matrix(0.5324436,0,0,0.5324436,329.75669,584.3201)"> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4462);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4416" - width="409.03952" - height="15.065946" - x="290.77213" - y="460.76517" /> - <rect - y="476.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4418" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4464);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4466);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4420" - width="409.03952" - height="15.065946" - x="290.77213" - y="492.76517" /> - <rect - y="508.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4422" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4468);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - </g> - <g - style="font-size:20.65946579px;filter:url(#filter4302)" - id="g4424" - transform="matrix(0.5324436,0,0,0.5324436,329.75669,626.91559)"> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4470);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4426" - width="409.03952" - height="15.065946" - x="290.77213" - y="460.76517" /> - <rect - y="476.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4428" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4472);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4474);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4430" - width="409.03952" - height="15.065946" - x="290.77213" - y="492.76517" /> - <rect - y="508.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4432" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4476);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - </g> - <g - style="font-size:20.65946579px;filter:url(#filter4306)" - id="g4434" - transform="matrix(0.5324436,0,0,0.5324436,329.75669,669.51108)"> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4478);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4436" - width="409.03952" - height="15.065946" - x="290.77213" - y="460.76517" /> - <rect - y="476.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4438" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4480);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4482);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4440" - width="409.03952" - height="15.065946" - x="290.77213" - y="492.76517" /> - <rect - y="508.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4442" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4484);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - </g> - <g - transform="matrix(0.5324436,0,0,0.5324436,329.75669,712.10656)" - id="g4444" - style="font-size:20.65946579px;filter:url(#filter4310)"> - <rect - y="460.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4446" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4486);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4488);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4448" - width="409.03952" - height="15.065946" - x="290.77213" - y="476.76517" /> - <rect - y="492.76517" - x="290.77213" - height="15.065946" - width="409.03952" - id="rect4450" - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4490);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4492);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4452" - width="409.03952" - height="15.065946" - x="290.77213" - y="508.76517" /> - </g> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient4502);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4494" - width="157.4285" - height="157.4285" - x="-199.25186" - y="13.608643" /> - <rect - y="41.608643" - x="-303.25186" - height="281.4285" - width="281.4285" - id="rect4504" - style="opacity:1;color:#000000;fill:url(#linearGradient4506);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter4514);enable-background:accumulate" - transform="matrix(0.5593907,0,0,0.5593907,-29.61558,-9.666847)" /> - <rect - y="193.60864" - x="-199.25186" - height="157.4285" - width="157.4285" - id="rect4550" - style="opacity:1;color:#000000;fill:url(#linearGradient4554);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - transform="matrix(0.5593907,0,0,0.5593907,-29.61558,170.33315)" - style="opacity:1;color:#000000;fill:url(#linearGradient4556);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter4582);enable-background:accumulate" - id="rect4552" - width="281.4285" - height="281.4285" - x="-303.25186" - y="41.608643" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient4562);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4558" - width="157.4285" - height="157.4285" - x="-199.25186" - y="373.60864" /> - <rect - y="41.608643" - x="-303.25186" - height="281.4285" - width="281.4285" - id="rect4560" - style="opacity:1;color:#000000;fill:url(#linearGradient4564);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter4586);enable-background:accumulate" - transform="matrix(0.5593907,0,0,0.5593907,-29.61558,350.33315)" /> - <rect - y="553.60864" - x="-199.25186" - height="157.4285" - width="157.4285" - id="rect4566" - style="opacity:1;color:#000000;fill:url(#linearGradient4570);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - transform="matrix(0.5593907,0,0,0.5593907,-29.61558,530.33315)" - style="opacity:1;color:#000000;fill:url(#linearGradient4572);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter4590);enable-background:accumulate" - id="rect4568" - width="281.4285" - height="281.4285" - x="-303.25186" - y="41.608643" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient4578);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4574" - width="157.4285" - height="157.4285" - x="-199.25186" - y="893.60864" /> - <rect - y="41.608643" - x="-303.25186" - height="281.4285" - width="281.4285" - id="rect4576" - style="opacity:1;color:#000000;fill:url(#linearGradient4580);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - transform="matrix(0.5593907,0,0,0.5593907,-29.61558,710.33315)" /> - <rect - y="893.60864" - x="780.74817" - height="157.4285" - width="157.4285" - id="rect4594" - style="opacity:1;color:#000000;fill:url(#linearGradient4598);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient4600);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4596" - width="157.42848" - height="157.42848" - x="780.74817" - y="733.60864" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient4612);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4608" - width="157.4285" - height="157.4285" - x="780.74817" - y="553.60864" /> - <rect - y="553.60864" - x="780.74817" - height="157.42848" - width="157.42848" - id="rect4610" - style="opacity:1;color:#000000;fill:url(#linearGradient4614);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;filter:url(#filter4616)" /> - <rect - y="373.60864" - x="780.74817" - height="157.4285" - width="157.4285" - id="rect4620" - style="opacity:1;color:#000000;fill:url(#linearGradient4624);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient4626);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter4628);enable-background:accumulate" - id="rect4622" - width="157.42848" - height="157.42848" - x="780.74817" - y="373.60864" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient4636);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4632" - width="157.4285" - height="157.4285" - x="780.74817" - y="193.60864" /> - <rect - y="193.60864" - x="780.74817" - height="157.42848" - width="157.42848" - id="rect4634" - style="opacity:1;color:#000000;fill:url(#linearGradient4638);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter4640);enable-background:accumulate" /> - <rect - y="13.608643" - x="780.74817" - height="157.4285" - width="157.4285" - id="rect4644" - style="opacity:1;color:#000000;fill:url(#linearGradient4648);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - style="opacity:1;color:#000000;fill:url(#linearGradient4650);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter4652);enable-background:accumulate" - id="rect4646" - width="157.42848" - height="157.42848" - x="780.74817" - y="13.608643" /> - </g> + +<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="210mm" height="297mm" id="svg1901" sodipodi:version="0.32" inkscape:version="0.48+devel r" sodipodi:docname="blend_modes.svg" enable-background="new" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1"> +<defs id="defs1903"> +<linearGradient inkscape:collect="always" id="linearGradient4602"> +<stop style="stop-color:#0000ff;stop-opacity:1" offset="0" id="stop4604" /> +<stop style="stop-color:#ffff00;stop-opacity:1" offset="1" id="stop4606" /> +</linearGradient> +<linearGradient id="linearGradient4508" inkscape:collect="always"> +<stop id="stop4510" offset="0" style="stop-color:#ff0000;stop-opacity:1" /> +<stop id="stop4512" offset="1" style="stop-color:#00ffff;stop-opacity:1" /> +</linearGradient> +<linearGradient inkscape:collect="always" id="linearGradient4496"> +<stop style="stop-color:#00ff00;stop-opacity:1" offset="0" id="stop4498" /> +<stop style="stop-color:#ff00ff;stop-opacity:1" offset="1" id="stop4500" /> +</linearGradient> +<linearGradient id="linearGradient4220"> +<stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop4222" /> +<stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop4224" /> +</linearGradient> +<linearGradient id="linearGradient4214"> +<stop style="stop-color:#ffff00;stop-opacity:1;" offset="0" id="stop4216" /> +<stop style="stop-color:#ffff00;stop-opacity:0;" offset="1" id="stop4218" /> +</linearGradient> +<linearGradient id="linearGradient4208"> +<stop style="stop-color:#ff00ff;stop-opacity:1;" offset="0" id="stop4210" /> +<stop style="stop-color:#ff00ff;stop-opacity:0;" offset="1" id="stop4212" /> +</linearGradient> +<linearGradient id="linearGradient4202"> +<stop style="stop-color:#00ffff;stop-opacity:1;" offset="0" id="stop4204" /> +<stop style="stop-color:#00ffff;stop-opacity:0;" offset="1" id="stop4206" /> +</linearGradient> +<linearGradient id="linearGradient3536" inkscape:collect="always"> +<stop id="stop3538" offset="0" style="stop-color:#0000ff;stop-opacity:1" /> +<stop id="stop3540" offset="1" style="stop-color:#0000ff;stop-opacity:0" /> +</linearGradient> +<linearGradient id="linearGradient3530" inkscape:collect="always"> +<stop id="stop3532" offset="0" style="stop-color:#00ff00;stop-opacity:1" /> +<stop id="stop3534" offset="1" style="stop-color:#00ff00;stop-opacity:0" /> +</linearGradient> +<linearGradient id="linearGradient3524" inkscape:collect="always"> +<stop id="stop3526" offset="0" style="stop-color:#ff0000;stop-opacity:1" /> +<stop id="stop3528" offset="1" style="stop-color:#ff0000;stop-opacity:0" /> +</linearGradient> +<linearGradient id="linearGradient3518"> +<stop id="stop3520" offset="0" style="stop-color:#000000;stop-opacity:1" /> +<stop id="stop3522" offset="1" style="stop-color:#000000;stop-opacity:0" /> +</linearGradient> +<linearGradient inkscape:collect="always" id="linearGradient2959"> +<stop style="stop-color:#0000ff;stop-opacity:1" offset="0" id="stop2961" /> +<stop style="stop-color:#ffffff;stop-opacity:1" offset="1" id="stop2963" /> +</linearGradient> +<linearGradient inkscape:collect="always" id="linearGradient2951"> +<stop style="stop-color:#00ff00;stop-opacity:1" offset="0" id="stop2953" /> +<stop style="stop-color:#ffffff;stop-opacity:1" offset="1" id="stop2955" /> +</linearGradient> +<linearGradient inkscape:collect="always" id="linearGradient2937"> +<stop style="stop-color:#ff0000;stop-opacity:1" offset="0" id="stop2939" /> +<stop style="stop-color:#ffffff;stop-opacity:1" offset="1" id="stop2941" /> +</linearGradient> +<linearGradient id="linearGradient2927"> +<stop style="stop-color:#000000;stop-opacity:1" offset="0" id="stop2929" /> +<stop style="stop-color:#ffffff;stop-opacity:1;" offset="1" id="stop2931" /> +</linearGradient> +<filter inkscape:collect="always" id="filter2849"> +<feBlend inkscape:collect="always" mode="screen" in2="BackgroundImage" id="feBlend2851" /> +</filter> +<filter inkscape:collect="always" id="filter2853"> +<feBlend inkscape:collect="always" mode="screen" in2="BackgroundImage" id="feBlend2855" /> +</filter> +<filter inkscape:collect="always" id="filter2857"> +<feBlend inkscape:collect="always" mode="screen" in2="BackgroundImage" id="feBlend2859" /> +</filter> +<filter inkscape:collect="always" id="filter2877"> +<feBlend inkscape:collect="always" mode="multiply" in2="BackgroundImage" id="feBlend2879" /> +</filter> +<filter inkscape:collect="always" id="filter2881"> +<feBlend inkscape:collect="always" mode="multiply" in2="BackgroundImage" id="feBlend2883" /> +</filter> +<filter inkscape:collect="always" id="filter2885"> +<feBlend inkscape:collect="always" mode="multiply" in2="BackgroundImage" id="feBlend2887" /> +</filter> +<filter inkscape:collect="always" id="filter2995"> +<feBlend inkscape:collect="always" mode="multiply" in2="BackgroundImage" id="feBlend2997" /> +</filter> +<filter inkscape:collect="always" id="filter3017"> +<feBlend inkscape:collect="always" mode="screen" in2="BackgroundImage" id="feBlend3019" /> +</filter> +<filter inkscape:collect="always" id="filter3039"> +<feBlend inkscape:collect="always" mode="darken" in2="BackgroundImage" id="feBlend3041" /> +</filter> +<filter inkscape:collect="always" id="filter3061"> +<feBlend inkscape:collect="always" mode="lighten" in2="BackgroundImage" id="feBlend3063" /> +</filter> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2927" id="linearGradient3120" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2937" id="linearGradient3122" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2951" id="linearGradient3124" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2959" id="linearGradient3126" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2927" id="linearGradient3128" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2937" id="linearGradient3130" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2951" id="linearGradient3132" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2959" id="linearGradient3134" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2927" id="linearGradient3136" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2937" id="linearGradient3138" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2951" id="linearGradient3140" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2959" id="linearGradient3142" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2927" id="linearGradient3144" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2937" id="linearGradient3146" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2951" id="linearGradient3148" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2959" id="linearGradient3150" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2927" id="linearGradient3152" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2937" id="linearGradient3154" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2951" id="linearGradient3156" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2959" id="linearGradient3158" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2927" id="linearGradient3254" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2937" id="linearGradient3256" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2951" id="linearGradient3258" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2959" id="linearGradient3260" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2927" id="linearGradient3262" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2937" id="linearGradient3264" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2951" id="linearGradient3266" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2959" id="linearGradient3268" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2927" id="linearGradient3270" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2937" id="linearGradient3272" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2951" id="linearGradient3274" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2959" id="linearGradient3276" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2927" id="linearGradient3278" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2937" id="linearGradient3280" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2951" id="linearGradient3282" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2959" id="linearGradient3284" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2927" id="linearGradient3286" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2937" id="linearGradient3288" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2951" id="linearGradient3290" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2959" id="linearGradient3292" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2927" id="linearGradient3366" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2937" id="linearGradient3368" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2951" id="linearGradient3370" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2959" id="linearGradient3372" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2927" id="linearGradient3374" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2937" id="linearGradient3376" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2951" id="linearGradient3378" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2959" id="linearGradient3380" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2927" id="linearGradient3382" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2937" id="linearGradient3384" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2951" id="linearGradient3386" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2959" id="linearGradient3388" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2927" id="linearGradient3390" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2937" id="linearGradient3392" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2951" id="linearGradient3394" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2959" id="linearGradient3396" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2927" id="linearGradient3398" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2937" id="linearGradient3400" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2951" id="linearGradient3402" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient2959" id="linearGradient3404" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3518" id="linearGradient3478" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3524" id="linearGradient3480" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3530" id="linearGradient3482" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3536" id="linearGradient3484" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3518" id="linearGradient3552" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3524" id="linearGradient3554" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3530" id="linearGradient3556" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3536" id="linearGradient3558" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3518" id="linearGradient3570" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3524" id="linearGradient3572" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3530" id="linearGradient3574" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3536" id="linearGradient3576" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3518" id="linearGradient3588" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3524" id="linearGradient3590" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3530" id="linearGradient3592" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3536" id="linearGradient3594" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3518" id="linearGradient3606" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3524" id="linearGradient3608" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3530" id="linearGradient3610" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3536" id="linearGradient3612" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<filter inkscape:collect="always" id="filter3614"> +<feBlend inkscape:collect="always" mode="multiply" in2="BackgroundImage" id="feBlend3616" /> +</filter> +<filter inkscape:collect="always" id="filter3618"> +<feBlend inkscape:collect="always" mode="screen" in2="BackgroundImage" id="feBlend3620" /> +</filter> +<filter inkscape:collect="always" id="filter3622"> +<feBlend inkscape:collect="always" mode="darken" in2="BackgroundImage" id="feBlend3624" /> +</filter> +<filter inkscape:collect="always" id="filter3626"> +<feBlend inkscape:collect="always" mode="lighten" in2="BackgroundImage" id="feBlend3628" /> +</filter> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3518" id="linearGradient3702" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3524" id="linearGradient3704" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3530" id="linearGradient3706" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3536" id="linearGradient3708" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3518" id="linearGradient3710" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3524" id="linearGradient3712" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3530" id="linearGradient3714" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3536" id="linearGradient3716" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3518" id="linearGradient3718" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3524" id="linearGradient3720" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3530" id="linearGradient3722" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3536" id="linearGradient3724" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3518" id="linearGradient3726" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3524" id="linearGradient3728" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3530" id="linearGradient3730" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3536" id="linearGradient3732" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3518" id="linearGradient3734" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3524" id="linearGradient3736" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3530" id="linearGradient3738" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3536" id="linearGradient3740" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3518" id="linearGradient3814" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3524" id="linearGradient3816" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3530" id="linearGradient3818" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3536" id="linearGradient3820" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3518" id="linearGradient3822" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3524" id="linearGradient3824" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3530" id="linearGradient3826" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3536" id="linearGradient3828" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3518" id="linearGradient3830" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3524" id="linearGradient3832" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3530" id="linearGradient3834" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3536" id="linearGradient3836" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3518" id="linearGradient3838" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3524" id="linearGradient3840" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3530" id="linearGradient3842" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3536" id="linearGradient3844" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3518" id="linearGradient3846" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29814" x2="699.81165" y2="468.29814" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3524" id="linearGradient3848" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3530" id="linearGradient3850" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient3536" id="linearGradient3852" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4202" id="linearGradient4082" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29813" x2="699.81165" y2="468.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4208" id="linearGradient4084" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4214" id="linearGradient4086" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4220" id="linearGradient4088" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4202" id="linearGradient4236" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29813" x2="699.81165" y2="468.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4208" id="linearGradient4238" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4214" id="linearGradient4240" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4220" id="linearGradient4242" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4202" id="linearGradient4254" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29813" x2="699.81165" y2="468.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4208" id="linearGradient4256" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4214" id="linearGradient4258" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4220" id="linearGradient4260" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4202" id="linearGradient4272" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29813" x2="699.81165" y2="468.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4208" id="linearGradient4274" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4214" id="linearGradient4276" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4220" id="linearGradient4278" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4202" id="linearGradient4290" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29813" x2="699.81165" y2="468.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4208" id="linearGradient4292" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4214" id="linearGradient4294" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4220" id="linearGradient4296" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<filter inkscape:collect="always" id="filter4298"> +<feBlend inkscape:collect="always" mode="multiply" in2="BackgroundImage" id="feBlend4300" /> +</filter> +<filter inkscape:collect="always" id="filter4302"> +<feBlend inkscape:collect="always" mode="screen" in2="BackgroundImage" id="feBlend4304" /> +</filter> +<filter inkscape:collect="always" id="filter4306"> +<feBlend inkscape:collect="always" mode="darken" in2="BackgroundImage" id="feBlend4308" /> +</filter> +<filter inkscape:collect="always" id="filter4310"> +<feBlend inkscape:collect="always" mode="lighten" in2="BackgroundImage" id="feBlend4312" /> +</filter> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4202" id="linearGradient4364" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29813" x2="699.81165" y2="468.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4208" id="linearGradient4366" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4214" id="linearGradient4368" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4220" id="linearGradient4370" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4202" id="linearGradient4372" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29813" x2="699.81165" y2="468.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4208" id="linearGradient4374" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4214" id="linearGradient4376" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4220" id="linearGradient4378" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4202" id="linearGradient4380" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29813" x2="699.81165" y2="468.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4208" id="linearGradient4382" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4214" id="linearGradient4384" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4220" id="linearGradient4386" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4202" id="linearGradient4388" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29813" x2="699.81165" y2="468.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4208" id="linearGradient4390" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4214" id="linearGradient4392" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4220" id="linearGradient4394" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4202" id="linearGradient4396" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29813" x2="699.81165" y2="468.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4208" id="linearGradient4398" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4214" id="linearGradient4400" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4220" id="linearGradient4402" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4202" id="linearGradient4454" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29813" x2="699.81165" y2="468.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4208" id="linearGradient4456" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4214" id="linearGradient4458" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4220" id="linearGradient4460" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4202" id="linearGradient4462" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29813" x2="699.81165" y2="468.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4208" id="linearGradient4464" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4214" id="linearGradient4466" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4220" id="linearGradient4468" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4202" id="linearGradient4470" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29813" x2="699.81165" y2="468.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4208" id="linearGradient4472" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4214" id="linearGradient4474" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4220" id="linearGradient4476" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4202" id="linearGradient4478" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29813" x2="699.81165" y2="468.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4208" id="linearGradient4480" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4214" id="linearGradient4482" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4220" id="linearGradient4484" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4202" id="linearGradient4486" gradientUnits="userSpaceOnUse" x1="290.77213" y1="468.29813" x2="699.81165" y2="468.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4208" id="linearGradient4488" gradientUnits="userSpaceOnUse" x1="290.77213" y1="484.29813" x2="699.81165" y2="484.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4214" id="linearGradient4490" gradientUnits="userSpaceOnUse" x1="290.77213" y1="500.29813" x2="699.81165" y2="500.29813" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4220" id="linearGradient4492" gradientUnits="userSpaceOnUse" x1="289.26553" y1="515.26233" x2="699.81165" y2="516.29816" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4496" id="linearGradient4502" x1="-242.53761" y1="423.03714" x2="-242.53761" y2="141.60864" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.5593907,0,0,0.5593907,15.135684,-65.605922)" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4508" id="linearGradient4506" gradientUnits="userSpaceOnUse" x1="-383.25186" y1="282.32288" x2="-101.82336" y2="282.32288" gradientTransform="translate(80,-100)" /> +<filter inkscape:collect="always" id="filter4514"> +<feBlend inkscape:collect="always" mode="multiply" in2="BackgroundImage" id="feBlend4516" /> +</filter> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4496" id="linearGradient4522" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.5593907,0,0,0.5593907,15.135684,102.2113)" x1="-242.53761" y1="423.03714" x2="-242.53761" y2="141.60864" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4508" id="linearGradient4524" gradientUnits="userSpaceOnUse" gradientTransform="translate(80,200)" x1="-383.25186" y1="282.32288" x2="-101.82336" y2="282.32288" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4496" id="linearGradient4534" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.5593907,0,0,0.5593907,15.135684,270.02853)" x1="-242.53761" y1="423.03714" x2="-242.53761" y2="141.60864" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4508" id="linearGradient4536" gradientUnits="userSpaceOnUse" gradientTransform="translate(80,500)" x1="-383.25186" y1="282.32288" x2="-101.82336" y2="282.32288" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4496" id="linearGradient4554" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.5593907,0,0,0.5593907,15.135684,114.39408)" x1="-242.53761" y1="423.03714" x2="-242.53761" y2="141.60864" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4508" id="linearGradient4556" gradientUnits="userSpaceOnUse" gradientTransform="translate(80,-100)" x1="-383.25186" y1="282.32288" x2="-101.82336" y2="282.32288" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4496" id="linearGradient4562" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.5593907,0,0,0.5593907,15.135684,294.39408)" x1="-242.53761" y1="423.03714" x2="-242.53761" y2="141.60864" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4508" id="linearGradient4564" gradientUnits="userSpaceOnUse" gradientTransform="translate(80,-100)" x1="-383.25186" y1="282.32288" x2="-101.82336" y2="282.32288" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4496" id="linearGradient4570" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.5593907,0,0,0.5593907,15.135684,474.39408)" x1="-242.53761" y1="423.03714" x2="-242.53761" y2="141.60864" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4508" id="linearGradient4572" gradientUnits="userSpaceOnUse" gradientTransform="translate(80,-100)" x1="-383.25186" y1="282.32288" x2="-101.82336" y2="282.32288" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4496" id="linearGradient4578" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.5593907,0,0,0.5593907,15.135684,814.39408)" x1="-242.53761" y1="423.03714" x2="-242.53761" y2="141.60864" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4508" id="linearGradient4580" gradientUnits="userSpaceOnUse" gradientTransform="translate(80,-100)" x1="-383.25186" y1="282.32288" x2="-101.82336" y2="282.32288" /> +<filter inkscape:collect="always" id="filter4582"> +<feBlend inkscape:collect="always" mode="screen" in2="BackgroundImage" id="feBlend4584" /> +</filter> +<filter inkscape:collect="always" id="filter4586"> +<feBlend inkscape:collect="always" mode="darken" in2="BackgroundImage" id="feBlend4588" /> +</filter> +<filter inkscape:collect="always" id="filter4590"> +<feBlend inkscape:collect="always" mode="lighten" in2="BackgroundImage" id="feBlend4592" /> +</filter> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4496" id="linearGradient4598" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.5593907,0,0,0.5593907,995.13568,814.39408)" x1="-242.53761" y1="423.03714" x2="-242.53761" y2="141.60864" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4602" id="linearGradient4600" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.5593907,0,0,0.5593907,995.13568,654.39408)" x1="-383.25186" y1="282.32288" x2="-101.82336" y2="282.32288" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4496" id="linearGradient4612" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.5593907,0,0,0.5593907,995.13568,474.39408)" x1="-242.53761" y1="423.03714" x2="-242.53761" y2="141.60864" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4602" id="linearGradient4614" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.5593907,0,0,0.5593907,995.13568,474.39408)" x1="-383.25186" y1="282.32288" x2="-101.82336" y2="282.32288" /> +<filter inkscape:collect="always" id="filter4616"> +<feBlend inkscape:collect="always" mode="lighten" in2="BackgroundImage" id="feBlend4618" /> +</filter> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4496" id="linearGradient4624" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.5593907,0,0,0.5593907,995.13568,294.39408)" x1="-242.53761" y1="423.03714" x2="-242.53761" y2="141.60864" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4602" id="linearGradient4626" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.5593907,0,0,0.5593907,995.13568,294.39408)" x1="-383.25186" y1="282.32288" x2="-101.82336" y2="282.32288" /> +<filter inkscape:collect="always" id="filter4628"> +<feBlend inkscape:collect="always" mode="darken" in2="BackgroundImage" id="feBlend4630" /> +</filter> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4496" id="linearGradient4636" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.5593907,0,0,0.5593907,995.13568,114.39408)" x1="-242.53761" y1="423.03714" x2="-242.53761" y2="141.60864" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4602" id="linearGradient4638" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.5593907,0,0,0.5593907,995.13568,114.39408)" x1="-383.25186" y1="282.32288" x2="-101.82336" y2="282.32288" /> +<filter inkscape:collect="always" id="filter4640"> +<feBlend inkscape:collect="always" mode="screen" in2="BackgroundImage" id="feBlend4642" /> +</filter> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4496" id="linearGradient4648" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.5593907,0,0,0.5593907,995.13568,-65.60592)" x1="-242.53761" y1="423.03714" x2="-242.53761" y2="141.60864" /> +<linearGradient inkscape:collect="always" xlink:href="#linearGradient4602" id="linearGradient4650" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.5593907,0,0,0.5593907,995.13568,-65.60592)" x1="-383.25186" y1="282.32288" x2="-101.82336" y2="282.32288" /> +<filter inkscape:collect="always" id="filter4652"> +<feBlend inkscape:collect="always" mode="multiply" in2="BackgroundImage" id="feBlend4654" /> +</filter> +</defs> +<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.5002754" inkscape:cx="369.4624" inkscape:cy="520.0393" inkscape:document-units="px" inkscape:current-layer="layer1" gridtolerance="10000" inkscape:window-width="877" inkscape:window-height="715" inkscape:window-x="96" inkscape:window-y="24" showguides="true" inkscape:guide-bbox="true" guidetolerance="4" showgrid="false" inkscape:window-maximized="0" /> +<metadata id="metadata1906"> +<rdf:RDF> +<cc:Work rdf:about=""> +<dc:format>image/svg+xml</dc:format> +<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> +<dc:creator> +<cc:Agent> +<dc:title>Niko Kiirala <niko@kiirala.com></dc:title> +</cc:Agent> +</dc:creator> +<dc:title>Blending modes test</dc:title> +<dc:date>2007-07-03</dc:date> +<cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" /> +<dc:language>en</dc:language> +<dc:subject> +<rdf:Bag> +<rdf:li>feBlend</rdf:li> +<rdf:li>blending modes</rdf:li> +<rdf:li>multiply</rdf:li> +<rdf:li>screen</rdf:li> +<rdf:li>darken</rdf:li> +<rdf:li>lighten</rdf:li> +</rdf:Bag> +</dc:subject> +<dc:rights> +<cc:Agent> +<dc:title>Copyright 2007 Niko Kiirala</dc:title> +</cc:Agent> +</dc:rights> +</cc:Work> +<cc:License rdf:about="http://creativecommons.org/licenses/by-sa/3.0/"> +<cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /> +<cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /> +<cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /> +<cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /> +<cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> +<cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /> +</cc:License> +</rdf:RDF> +</metadata> +<g inkscape:label="Taso 1" inkscape:groupmode="layer" id="layer1" style="opacity:1"> +<g id="g2861" transform="translate(-103.06778,-166.47537)" style="font-size:11"> +<path transform="matrix(0.9598922,0,0,0.9598922,-15.224797,38.350228)" d="m 511.4781,294.8725 c 0,57.5361 -46.6422,104.1784 -104.1783,104.1784 -57.5361,0 -104.1784,-46.6423 -104.1784,-104.1784 0,-57.5361 46.6423,-104.1784 104.1784,-104.1784 57.5361,0 104.1783,46.6423 104.1783,104.1784 z" sodipodi:ry="104.17837" sodipodi:rx="104.17837" sodipodi:cy="294.8725" sodipodi:cx="407.29977" id="path2841" style="opacity:1;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.04178368999999993;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:11.45962015" sodipodi:type="arc" /> +<path transform="matrix(1.0335704,0,0,1.0335704,-234.315,-41.213277)" d="m 648.2907,312.131 c 0,32.0607 -25.9904,58.0511 -58.0512,58.0511 -32.0608,0 -58.0512,-25.9904 -58.0512,-58.0511 0,-32.0608 25.9904,-58.0512 58.0512,-58.0512 32.0608,0 58.0512,25.9904 58.0512,58.0512 z" sodipodi:ry="58.051197" sodipodi:rx="58.051197" sodipodi:cy="312.13095" sodipodi:cx="590.2395" id="path2843" style="opacity:1;color:#000000;fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter2849);enable-background:accumulate;font-size:10.64271964" sodipodi:type="arc" /> +<path sodipodi:type="arc" style="opacity:1;color:#000000;fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter2857);enable-background:accumulate;font-size:10.64271964" id="path2845" sodipodi:cx="590.2395" sodipodi:cy="312.13095" sodipodi:rx="58.051197" sodipodi:ry="58.051197" d="m 648.2907,312.131 c 0,32.0607 -25.9904,58.0511 -58.0512,58.0511 -32.0608,0 -58.0512,-25.9904 -58.0512,-58.0511 0,-32.0608 25.9904,-58.0512 58.0512,-58.0512 32.0608,0 58.0512,25.9904 58.0512,58.0512 z" transform="matrix(1.0335704,0,0,1.0335704,-267.75004,20.786723)" /> +<path transform="matrix(1.0335704,0,0,1.0335704,-200.87996,20.786723)" d="m 648.2907,312.131 c 0,32.0607 -25.9904,58.0511 -58.0512,58.0511 -32.0608,0 -58.0512,-25.9904 -58.0512,-58.0511 0,-32.0608 25.9904,-58.0512 58.0512,-58.0512 32.0608,0 58.0512,25.9904 58.0512,58.0512 z" sodipodi:ry="58.051197" sodipodi:rx="58.051197" sodipodi:cy="312.13095" sodipodi:cx="590.2395" id="path2847" style="opacity:1;color:#000000;fill:#00ff00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter2853);enable-background:accumulate;font-size:10.64271964" sodipodi:type="arc" /> +</g> +<g id="g2867" transform="translate(116.93222,-166.47537)" style="font-size:11"> +<path sodipodi:type="arc" style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.04178368999999993;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:11.45962015" id="path2869" sodipodi:cx="407.29977" sodipodi:cy="294.8725" sodipodi:rx="104.17837" sodipodi:ry="104.17837" d="m 511.4781,294.8725 c 0,57.5361 -46.6422,104.1784 -104.1783,104.1784 -57.5361,0 -104.1784,-46.6423 -104.1784,-104.1784 0,-57.5361 46.6423,-104.1784 104.1784,-104.1784 57.5361,0 104.1783,46.6423 104.1783,104.1784 z" transform="matrix(0.9598922,0,0,0.9598922,-15.224797,38.350228)" /> +<path sodipodi:type="arc" style="opacity:1;color:#000000;fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter2877);enable-background:accumulate;font-size:10.64271964" id="path2871" sodipodi:cx="590.2395" sodipodi:cy="312.13095" sodipodi:rx="58.051197" sodipodi:ry="58.051197" d="m 648.2907,312.131 c 0,32.0607 -25.9904,58.0511 -58.0512,58.0511 -32.0608,0 -58.0512,-25.9904 -58.0512,-58.0511 0,-32.0608 25.9904,-58.0512 58.0512,-58.0512 32.0608,0 58.0512,25.9904 58.0512,58.0512 z" transform="matrix(1.0335704,0,0,1.0335704,-234.315,-41.213277)" /> +<path transform="matrix(1.0335704,0,0,1.0335704,-267.75004,20.786723)" d="m 648.2907,312.131 c 0,32.0607 -25.9904,58.0511 -58.0512,58.0511 -32.0608,0 -58.0512,-25.9904 -58.0512,-58.0511 0,-32.0608 25.9904,-58.0512 58.0512,-58.0512 32.0608,0 58.0512,25.9904 58.0512,58.0512 z" sodipodi:ry="58.051197" sodipodi:rx="58.051197" sodipodi:cy="312.13095" sodipodi:cx="590.2395" id="path2873" style="opacity:1;color:#000000;fill:#ff00ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter2885);enable-background:accumulate;font-size:10.64271964" sodipodi:type="arc" /> +<path sodipodi:type="arc" style="opacity:1;color:#000000;fill:#00ffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter2881);enable-background:accumulate;font-size:10.64271964" id="path2875" sodipodi:cx="590.2395" sodipodi:cy="312.13095" sodipodi:rx="58.051197" sodipodi:ry="58.051197" d="m 648.2907,312.131 c 0,32.0607 -25.9904,58.0511 -58.0512,58.0511 -32.0608,0 -58.0512,-25.9904 -58.0512,-58.0511 0,-32.0608 25.9904,-58.0512 58.0512,-58.0512 32.0608,0 58.0512,25.9904 58.0512,58.0512 z" transform="matrix(1.0335704,0,0,1.0335704,-200.87996,20.786723)" /> +</g> +<rect style="opacity:1;color:#000000;fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:11" id="rect2917" width="217.79048" height="218.19157" x="260.9502" y="291.53549" /> +<g id="g2967" transform="matrix(0.5324436,0,0,0.5324436,106.13043,58.09832)" style="font-size:20.65946515"> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3152);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect2919" width="409.03952" height="15.065946" x="290.77213" y="460.76517" /> +<rect y="476.76517" x="290.77213" height="15.065946" width="409.03952" id="rect2921" style="opacity:1;color:#000000;fill:url(#linearGradient3154);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3156);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect2923" width="409.03952" height="15.065946" x="290.77213" y="492.76517" /> +<rect y="508.76517" x="290.77213" height="15.065946" width="409.03952" id="rect2925" style="opacity:1;color:#000000;fill:url(#linearGradient3158);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +</g> +<g id="g2977" transform="matrix(0.5324436,0,0,0.5324436,106.13043,100.69381)" style="filter:url(#filter2995);font-size:20.65946515"> +<rect y="460.76517" x="290.77213" height="15.065946" width="409.03952" id="rect2979" style="opacity:1;color:#000000;fill:url(#linearGradient3144);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3146);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect2981" width="409.03952" height="15.065946" x="290.77213" y="476.76517" /> +<rect y="492.76517" x="290.77213" height="15.065946" width="409.03952" id="rect2983" style="opacity:1;color:#000000;fill:url(#linearGradient3148);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3150);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect2985" width="409.03952" height="15.065946" x="290.77213" y="508.76517" /> +</g> +<g style="filter:url(#filter3017);font-size:20.65946515" transform="matrix(0.5324436,0,0,0.5324436,106.13043,143.28929)" id="g2999"> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3136);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3001" width="409.03952" height="15.065946" x="290.77213" y="460.76517" /> +<rect y="476.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3003" style="opacity:1;color:#000000;fill:url(#linearGradient3138);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3140);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3005" width="409.03952" height="15.065946" x="290.77213" y="492.76517" /> +<rect y="508.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3007" style="opacity:1;color:#000000;fill:url(#linearGradient3142);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +</g> +<g id="g3021" transform="matrix(0.5324436,0,0,0.5324436,106.13043,185.88478)" style="filter:url(#filter3039);font-size:20.65946515"> +<rect y="460.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3023" style="opacity:1;color:#000000;fill:url(#linearGradient3128);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3130);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3025" width="409.03952" height="15.065946" x="290.77213" y="476.76517" /> +<rect y="492.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3027" style="opacity:1;color:#000000;fill:url(#linearGradient3132);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3134);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3029" width="409.03952" height="15.065946" x="290.77213" y="508.76517" /> +</g> +<g style="filter:url(#filter3061);font-size:20.65946515" transform="matrix(0.5324436,0,0,0.5324436,106.13043,228.48026)" id="g3043"> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3120);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3045" width="409.03952" height="15.065946" x="290.77213" y="460.76517" /> +<rect y="476.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3047" style="opacity:1;color:#000000;fill:url(#linearGradient3122);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3124);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3049" width="409.03952" height="15.065946" x="290.77213" y="492.76517" /> +<rect y="508.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3051" style="opacity:1;color:#000000;fill:url(#linearGradient3126);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +</g> +<text xml:space="preserve" style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="253.79825" y="45.830627" id="text3110" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3112" x="253.79825" y="45.830627">Screen</tspan></text> +<text xml:space="preserve" style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="471.92325" y="45.830627" id="text3114" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3116" x="471.92325" y="45.830627">Multiply</tspan></text> +<text xml:space="preserve" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="263.07996" y="301.25674" id="text3162" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3164" x="263.07996" y="301.25674">Normal</tspan></text> +<text xml:space="preserve" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="263.07996" y="344.6597" id="text3166" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3168" x="263.07996" y="344.6597">Multiply</tspan></text> +<text xml:space="preserve" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="263.07996" y="387.06519" id="text3170" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3172" x="263.07996" y="387.06519">Screen</tspan></text> +<text xml:space="preserve" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="263.07996" y="430.13126" id="text3174" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3176" x="263.07996" y="430.13126">Darken</tspan></text> +<text xml:space="preserve" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="263.07996" y="472.16821" id="text3178" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3180" x="263.07996" y="472.16821">Lighten</tspan></text> +<rect y="291.53549" x="37.323883" height="218.19157" width="217.79048" id="rect3182" style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.53244358000000003;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:11" /> +<g transform="matrix(0.5324436,0,0,0.5324436,-117.49588,58.09832)" id="g3184" style="font-size:20.65946515"> +<rect y="460.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3186" style="opacity:1;color:#000000;fill:url(#linearGradient3254);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3256);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3188" width="409.03952" height="15.065946" x="290.77213" y="476.76517" /> +<rect y="492.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3190" style="opacity:1;color:#000000;fill:url(#linearGradient3258);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3260);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3192" width="409.03952" height="15.065946" x="290.77213" y="508.76517" /> +</g> +<g style="filter:url(#filter2995);font-size:20.65946515" transform="matrix(0.5324436,0,0,0.5324436,-117.49588,100.69381)" id="g3194"> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3262);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3196" width="409.03952" height="15.065946" x="290.77213" y="460.76517" /> +<rect y="476.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3198" style="opacity:1;color:#000000;fill:url(#linearGradient3264);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3266);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3200" width="409.03952" height="15.065946" x="290.77213" y="492.76517" /> +<rect y="508.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3202" style="opacity:1;color:#000000;fill:url(#linearGradient3268);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +</g> +<g id="g3204" transform="matrix(0.5324436,0,0,0.5324436,-117.49588,143.28929)" style="filter:url(#filter3017);font-size:20.65946515"> +<rect y="460.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3206" style="opacity:1;color:#000000;fill:url(#linearGradient3270);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3272);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3208" width="409.03952" height="15.065946" x="290.77213" y="476.76517" /> +<rect y="492.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3210" style="opacity:1;color:#000000;fill:url(#linearGradient3274);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3276);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3212" width="409.03952" height="15.065946" x="290.77213" y="508.76517" /> +</g> +<g style="filter:url(#filter3039);font-size:20.65946515" transform="matrix(0.5324436,0,0,0.5324436,-117.49588,185.88478)" id="g3214"> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3278);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3216" width="409.03952" height="15.065946" x="290.77213" y="460.76517" /> +<rect y="476.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3218" style="opacity:1;color:#000000;fill:url(#linearGradient3280);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3282);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3220" width="409.03952" height="15.065946" x="290.77213" y="492.76517" /> +<rect y="508.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3222" style="opacity:1;color:#000000;fill:url(#linearGradient3284);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +</g> +<g id="g3224" transform="matrix(0.5324436,0,0,0.5324436,-117.49588,228.48026)" style="filter:url(#filter3061);font-size:20.65946515"> +<rect y="460.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3226" style="opacity:1;color:#000000;fill:url(#linearGradient3286);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3288);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3228" width="409.03952" height="15.065946" x="290.77213" y="476.76517" /> +<rect y="492.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3230" style="opacity:1;color:#000000;fill:url(#linearGradient3290);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3292);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3232" width="409.03952" height="15.065946" x="290.77213" y="508.76517" /> +</g> +<text sodipodi:linespacing="125%" id="text3234" y="301.25674" x="39.453655" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="301.25674" x="39.453655" id="tspan3236" sodipodi:role="line">Normal</tspan></text> +<text sodipodi:linespacing="125%" id="text3238" y="344.6597" x="39.453655" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="344.6597" x="39.453655" id="tspan3240" sodipodi:role="line">Multiply</tspan></text> +<text sodipodi:linespacing="125%" id="text3242" y="387.06519" x="39.453655" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="387.06519" x="39.453655" id="tspan3244" sodipodi:role="line">Screen</tspan></text> +<text sodipodi:linespacing="125%" id="text3246" y="430.13126" x="39.453655" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="430.13126" x="39.453655" id="tspan3248" sodipodi:role="line">Darken</tspan></text> +<text sodipodi:linespacing="125%" id="text3250" y="472.16821" x="39.453655" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="472.16821" x="39.453655" id="tspan3252" sodipodi:role="line">Lighten</tspan></text> +<rect y="291.53549" x="484.57645" height="218.19157" width="217.79048" id="rect3294" style="opacity:1;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:11" /> +<g transform="matrix(0.5324436,0,0,0.5324436,329.75672,58.09832)" id="g3296" style="font-size:20.65946515"> +<rect y="460.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3298" style="opacity:1;color:#000000;fill:url(#linearGradient3366);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3368);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3300" width="409.03952" height="15.065946" x="290.77213" y="476.76517" /> +<rect y="492.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3302" style="opacity:1;color:#000000;fill:url(#linearGradient3370);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3372);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3304" width="409.03952" height="15.065946" x="290.77213" y="508.76517" /> +</g> +<g style="filter:url(#filter2995);font-size:20.65946515" transform="matrix(0.5324436,0,0,0.5324436,329.75672,100.69381)" id="g3306"> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3374);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3308" width="409.03952" height="15.065946" x="290.77213" y="460.76517" /> +<rect y="476.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3310" style="opacity:1;color:#000000;fill:url(#linearGradient3376);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3378);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3312" width="409.03952" height="15.065946" x="290.77213" y="492.76517" /> +<rect y="508.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3314" style="opacity:1;color:#000000;fill:url(#linearGradient3380);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +</g> +<g id="g3316" transform="matrix(0.5324436,0,0,0.5324436,329.75672,143.28929)" style="filter:url(#filter3017);font-size:20.65946515"> +<rect y="460.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3318" style="opacity:1;color:#000000;fill:url(#linearGradient3382);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3384);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3320" width="409.03952" height="15.065946" x="290.77213" y="476.76517" /> +<rect y="492.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3322" style="opacity:1;color:#000000;fill:url(#linearGradient3386);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3388);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3324" width="409.03952" height="15.065946" x="290.77213" y="508.76517" /> +</g> +<g style="filter:url(#filter3039);font-size:20.65946515" transform="matrix(0.5324436,0,0,0.5324436,329.75672,185.88478)" id="g3326"> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3390);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3328" width="409.03952" height="15.065946" x="290.77213" y="460.76517" /> +<rect y="476.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3330" style="opacity:1;color:#000000;fill:url(#linearGradient3392);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3394);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3332" width="409.03952" height="15.065946" x="290.77213" y="492.76517" /> +<rect y="508.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3334" style="opacity:1;color:#000000;fill:url(#linearGradient3396);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +</g> +<g id="g3336" transform="matrix(0.5324436,0,0,0.5324436,329.75672,228.48026)" style="filter:url(#filter3061);font-size:20.65946515"> +<rect y="460.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3338" style="opacity:1;color:#000000;fill:url(#linearGradient3398);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3400);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3340" width="409.03952" height="15.065946" x="290.77213" y="476.76517" /> +<rect y="492.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3342" style="opacity:1;color:#000000;fill:url(#linearGradient3402);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3404);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3344" width="409.03952" height="15.065946" x="290.77213" y="508.76517" /> +</g> +<text sodipodi:linespacing="125%" id="text3346" y="301.25674" x="486.70624" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="301.25674" x="486.70624" id="tspan3348" sodipodi:role="line">Normal</tspan></text> +<text sodipodi:linespacing="125%" id="text3350" y="344.6597" x="486.70624" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="344.6597" x="486.70624" id="tspan3352" sodipodi:role="line">Multiply</tspan></text> +<text sodipodi:linespacing="125%" id="text3354" y="387.06519" x="486.70624" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="387.06519" x="486.70624" id="tspan3356" sodipodi:role="line">Screen</tspan></text> +<text sodipodi:linespacing="125%" id="text3358" y="430.13126" x="486.70624" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="430.13126" x="486.70624" id="tspan3360" sodipodi:role="line">Darken</tspan></text> +<text sodipodi:linespacing="125%" id="text3362" y="472.16821" x="486.70624" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="472.16821" x="486.70624" id="tspan3364" sodipodi:role="line">Lighten</tspan></text> +<rect y="535.1618" x="260.9502" height="218.19157" width="217.79048" id="rect3406" style="opacity:1;color:#000000;fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:11" /> +<g transform="matrix(0.5324436,0,0,0.5324436,106.13043,301.72462)" id="g3408" style="font-size:20.65946515"> +<rect y="460.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3410" style="opacity:1;color:#000000;fill:url(#linearGradient3478);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3480);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3412" width="409.03952" height="15.065946" x="290.77213" y="476.76517" /> +<rect y="492.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3414" style="opacity:1;color:#000000;fill:url(#linearGradient3482);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3484);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3416" width="409.03952" height="15.065946" x="290.77213" y="508.76517" /> +</g> +<text sodipodi:linespacing="125%" id="text3458" y="544.883" x="263.07996" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="544.883" x="263.07996" id="tspan3460" sodipodi:role="line">Normal</tspan></text> +<text sodipodi:linespacing="125%" id="text3462" y="588.28601" x="263.07996" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="588.28601" x="263.07996" id="tspan3464" sodipodi:role="line">Multiply</tspan></text> +<text sodipodi:linespacing="125%" id="text3466" y="630.69147" x="263.07996" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="630.69147" x="263.07996" id="tspan3468" sodipodi:role="line">Screen</tspan></text> +<text sodipodi:linespacing="125%" id="text3470" y="673.75757" x="263.07996" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="673.75757" x="263.07996" id="tspan3472" sodipodi:role="line">Darken</tspan></text> +<text sodipodi:linespacing="125%" id="text3474" y="715.79443" x="263.07996" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="715.79443" x="263.07996" id="tspan3476" sodipodi:role="line">Lighten</tspan></text> +<g id="g3542" transform="matrix(0.5324436,0,0,0.5324436,106.13043,344.3201)" style="filter:url(#filter3614);font-size:20.65946515"> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3552);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3544" width="409.03952" height="15.065946" x="290.77213" y="460.76517" /> +<rect y="476.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3546" style="opacity:1;color:#000000;fill:url(#linearGradient3554);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3556);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3548" width="409.03952" height="15.065946" x="290.77213" y="492.76517" /> +<rect y="508.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3550" style="opacity:1;color:#000000;fill:url(#linearGradient3558);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +</g> +<g transform="matrix(0.5324436,0,0,0.5324436,106.13043,386.91559)" id="g3560" style="filter:url(#filter3618);font-size:20.65946515"> +<rect y="460.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3562" style="opacity:1;color:#000000;fill:url(#linearGradient3570);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3572);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3564" width="409.03952" height="15.065946" x="290.77213" y="476.76517" /> +<rect y="492.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3566" style="opacity:1;color:#000000;fill:url(#linearGradient3574);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3576);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3568" width="409.03952" height="15.065946" x="290.77213" y="508.76517" /> +</g> +<g id="g3578" transform="matrix(0.5324436,0,0,0.5324436,106.13043,429.51108)" style="filter:url(#filter3622);font-size:20.65946515"> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3588);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3580" width="409.03952" height="15.065946" x="290.77213" y="460.76517" /> +<rect y="476.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3582" style="opacity:1;color:#000000;fill:url(#linearGradient3590);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3592);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3584" width="409.03952" height="15.065946" x="290.77213" y="492.76517" /> +<rect y="508.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3586" style="opacity:1;color:#000000;fill:url(#linearGradient3594);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +</g> +<g transform="matrix(0.5324436,0,0,0.5324436,106.13043,472.10656)" id="g3596" style="filter:url(#filter3626);font-size:20.65946515"> +<rect y="460.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3598" style="opacity:1;color:#000000;fill:url(#linearGradient3606);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3608);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3600" width="409.03952" height="15.065946" x="290.77213" y="476.76517" /> +<rect y="492.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3602" style="opacity:1;color:#000000;fill:url(#linearGradient3610);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3612);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3604" width="409.03952" height="15.065946" x="290.77213" y="508.76517" /> +</g> +<rect style="opacity:1;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:11" id="rect3630" width="217.79048" height="218.19157" x="484.57645" y="535.1618" /> +<g id="g3632" transform="matrix(0.5324436,0,0,0.5324436,329.75672,301.72462)" style="font-size:20.65946515"> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3702);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3634" width="409.03952" height="15.065946" x="290.77213" y="460.76517" /> +<rect y="476.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3636" style="opacity:1;color:#000000;fill:url(#linearGradient3704);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3706);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3638" width="409.03952" height="15.065946" x="290.77213" y="492.76517" /> +<rect y="508.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3640" style="opacity:1;color:#000000;fill:url(#linearGradient3708);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +</g> +<text xml:space="preserve" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="486.70624" y="544.883" id="text3642" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3644" x="486.70624" y="544.883">Normal</tspan></text> +<text xml:space="preserve" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="486.70624" y="588.28601" id="text3646" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3648" x="486.70624" y="588.28601">Multiply</tspan></text> +<text xml:space="preserve" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="486.70624" y="630.69147" id="text3650" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3652" x="486.70624" y="630.69147">Screen</tspan></text> +<text xml:space="preserve" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="486.70624" y="673.75757" id="text3654" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3656" x="486.70624" y="673.75757">Darken</tspan></text> +<text xml:space="preserve" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="486.70624" y="715.79443" id="text3658" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3660" x="486.70624" y="715.79443">Lighten</tspan></text> +<g style="filter:url(#filter3614);font-size:20.65946515" transform="matrix(0.5324436,0,0,0.5324436,329.75672,344.3201)" id="g3662"> +<rect y="460.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3664" style="opacity:1;color:#000000;fill:url(#linearGradient3710);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3712);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3666" width="409.03952" height="15.065946" x="290.77213" y="476.76517" /> +<rect y="492.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3668" style="opacity:1;color:#000000;fill:url(#linearGradient3714);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3716);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3670" width="409.03952" height="15.065946" x="290.77213" y="508.76517" /> +</g> +<g style="filter:url(#filter3618);font-size:20.65946515" id="g3672" transform="matrix(0.5324436,0,0,0.5324436,329.75672,386.91559)"> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3718);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3674" width="409.03952" height="15.065946" x="290.77213" y="460.76517" /> +<rect y="476.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3676" style="opacity:1;color:#000000;fill:url(#linearGradient3720);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3722);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3678" width="409.03952" height="15.065946" x="290.77213" y="492.76517" /> +<rect y="508.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3680" style="opacity:1;color:#000000;fill:url(#linearGradient3724);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +</g> +<g style="filter:url(#filter3622);font-size:20.65946515" transform="matrix(0.5324436,0,0,0.5324436,329.75672,429.51108)" id="g3682"> +<rect y="460.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3684" style="opacity:1;color:#000000;fill:url(#linearGradient3726);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3728);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3686" width="409.03952" height="15.065946" x="290.77213" y="476.76517" /> +<rect y="492.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3688" style="opacity:1;color:#000000;fill:url(#linearGradient3730);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3732);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3690" width="409.03952" height="15.065946" x="290.77213" y="508.76517" /> +</g> +<g style="filter:url(#filter3626);font-size:20.65946515" id="g3692" transform="matrix(0.5324436,0,0,0.5324436,329.75672,472.10656)"> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3734);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3694" width="409.03952" height="15.065946" x="290.77213" y="460.76517" /> +<rect y="476.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3696" style="opacity:1;color:#000000;fill:url(#linearGradient3736);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3738);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3698" width="409.03952" height="15.065946" x="290.77213" y="492.76517" /> +<rect y="508.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3700" style="opacity:1;color:#000000;fill:url(#linearGradient3740);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +</g> +<rect style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.53244358000000003;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:11" id="rect3742" width="217.79048" height="218.19157" x="37.323883" y="535.1618" /> +<g id="g3744" transform="matrix(0.5324436,0,0,0.5324436,-117.49588,301.72462)" style="font-size:20.65946515"> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3814);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3746" width="409.03952" height="15.065946" x="290.77213" y="460.76517" /> +<rect y="476.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3748" style="opacity:1;color:#000000;fill:url(#linearGradient3816);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3818);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3750" width="409.03952" height="15.065946" x="290.77213" y="492.76517" /> +<rect y="508.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3752" style="opacity:1;color:#000000;fill:url(#linearGradient3820);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +</g> +<text xml:space="preserve" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="39.453655" y="544.883" id="text3754" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3756" x="39.453655" y="544.883">Normal</tspan></text> +<text xml:space="preserve" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="39.453655" y="588.28601" id="text3758" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3760" x="39.453655" y="588.28601">Multiply</tspan></text> +<text xml:space="preserve" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="39.453655" y="630.69147" id="text3762" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3764" x="39.453655" y="630.69147">Screen</tspan></text> +<text xml:space="preserve" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="39.453655" y="673.75757" id="text3766" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3768" x="39.453655" y="673.75757">Darken</tspan></text> +<text xml:space="preserve" style="font-size:11;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="39.453655" y="715.79443" id="text3770" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3772" x="39.453655" y="715.79443">Lighten</tspan></text> +<g style="filter:url(#filter3614);font-size:20.65946515" transform="matrix(0.5324436,0,0,0.5324436,-117.49588,344.3201)" id="g3774"> +<rect y="460.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3776" style="opacity:1;color:#000000;fill:url(#linearGradient3822);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3824);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3778" width="409.03952" height="15.065946" x="290.77213" y="476.76517" /> +<rect y="492.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3780" style="opacity:1;color:#000000;fill:url(#linearGradient3826);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3828);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3782" width="409.03952" height="15.065946" x="290.77213" y="508.76517" /> +</g> +<g style="filter:url(#filter3618);font-size:20.65946515" id="g3784" transform="matrix(0.5324436,0,0,0.5324436,-117.49588,386.91559)"> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3830);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3786" width="409.03952" height="15.065946" x="290.77213" y="460.76517" /> +<rect y="476.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3788" style="opacity:1;color:#000000;fill:url(#linearGradient3832);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3834);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3790" width="409.03952" height="15.065946" x="290.77213" y="492.76517" /> +<rect y="508.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3792" style="opacity:1;color:#000000;fill:url(#linearGradient3836);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +</g> +<g style="filter:url(#filter3622);font-size:20.65946515" transform="matrix(0.5324436,0,0,0.5324436,-117.49588,429.51108)" id="g3794"> +<rect y="460.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3796" style="opacity:1;color:#000000;fill:url(#linearGradient3838);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3840);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3798" width="409.03952" height="15.065946" x="290.77213" y="476.76517" /> +<rect y="492.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3800" style="opacity:1;color:#000000;fill:url(#linearGradient3842);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3844);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3802" width="409.03952" height="15.065946" x="290.77213" y="508.76517" /> +</g> +<g style="filter:url(#filter3626);font-size:20.65946515" id="g3804" transform="matrix(0.5324436,0,0,0.5324436,-117.49588,472.10656)"> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3846);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3806" width="409.03952" height="15.065946" x="290.77213" y="460.76517" /> +<rect y="476.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3808" style="opacity:1;color:#000000;fill:url(#linearGradient3848);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient3850);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" id="rect3810" width="409.03952" height="15.065946" x="290.77213" y="492.76517" /> +<rect y="508.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3812" style="opacity:1;color:#000000;fill:url(#linearGradient3852);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-size:20.65946515" /> +</g> +<text xml:space="preserve" style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="36.460007" y="288.6987" id="text3854" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3856" x="36.460007" y="288.6987">Colour to white</tspan></text> +<text xml:space="preserve" style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="36.460007" y="530.5387" id="text3858" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3860" x="36.460007" y="530.5387">Colour to transparent</tspan></text> +<rect style="font-size:11px;opacity:1;color:#000000;fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect3862" width="217.79048" height="218.19157" x="260.9502" y="775.1618" /> +<g style="font-size:20.65946579px" id="g3864" transform="matrix(0.5324436,0,0,0.5324436,106.13043,541.72462)"> +<rect style="font-size:20.65946578999999872px;opacity:1;color:#000000;fill:url(#linearGradient4082);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect3866" width="409.03952" height="15.065946" x="290.77213" y="460.76517" /> +<rect y="476.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3868" style="font-size:20.65946578999999872px;opacity:1;color:#000000;fill:url(#linearGradient4084);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="font-size:20.65946578999999872px;opacity:1;color:#000000;fill:url(#linearGradient4086);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect3870" width="409.03952" height="15.065946" x="290.77213" y="492.76517" /> +<rect y="508.76517" x="290.77213" height="15.065946" width="409.03952" id="rect3872" style="font-size:20.65946578999999872px;opacity:1;color:#000000;fill:url(#linearGradient4088);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +</g> +<text xml:space="preserve" style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="263.07996" y="784.883" id="text3874" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3876" x="263.07996" y="784.883">Normal</tspan></text> +<text xml:space="preserve" style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="263.07996" y="828.28601" id="text3878" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3880" x="263.07996" y="828.28601">Multiply</tspan></text> +<text xml:space="preserve" style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="263.07996" y="870.69147" id="text3882" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3884" x="263.07996" y="870.69147">Screen</tspan></text> +<text xml:space="preserve" style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="263.07996" y="913.75757" id="text3886" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3888" x="263.07996" y="913.75757">Darken</tspan></text> +<text xml:space="preserve" style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" x="263.07996" y="955.79443" id="text3890" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3892" x="263.07996" y="955.79443">Lighten</tspan></text> +<rect y="775.1618" x="484.57645" height="218.19157" width="217.79048" id="rect3934" style="font-size:11px;opacity:1;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<text sodipodi:linespacing="125%" id="text3946" y="784.883" x="486.70624" style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="784.883" x="486.70624" id="tspan3948" sodipodi:role="line">Normal</tspan></text> +<text sodipodi:linespacing="125%" id="text3950" y="828.28601" x="486.70624" style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="828.28601" x="486.70624" id="tspan3952" sodipodi:role="line">Multiply</tspan></text> +<text sodipodi:linespacing="125%" id="text3954" y="870.69147" x="486.70624" style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="870.69147" x="486.70624" id="tspan3956" sodipodi:role="line">Screen</tspan></text> +<text sodipodi:linespacing="125%" id="text3958" y="913.75757" x="486.70624" style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="913.75757" x="486.70624" id="tspan3960" sodipodi:role="line">Darken</tspan></text> +<text sodipodi:linespacing="125%" id="text3962" y="955.79443" x="486.70624" style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="955.79443" x="486.70624" id="tspan3964" sodipodi:role="line">Lighten</tspan></text> +<rect y="775.1618" x="37.323883" height="218.19157" width="217.79048" id="rect4006" style="font-size:11px;opacity:1;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.53244358;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<text sodipodi:linespacing="125%" id="text4018" y="784.883" x="39.453655" style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="784.883" x="39.453655" id="tspan4020" sodipodi:role="line">Normal</tspan></text> +<text sodipodi:linespacing="125%" id="text4022" y="828.28601" x="39.453655" style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="828.28601" x="39.453655" id="tspan4024" sodipodi:role="line">Multiply</tspan></text> +<text sodipodi:linespacing="125%" id="text4026" y="870.69147" x="39.453655" style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="870.69147" x="39.453655" id="tspan4028" sodipodi:role="line">Screen</tspan></text> +<text sodipodi:linespacing="125%" id="text4030" y="913.75757" x="39.453655" style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="913.75757" x="39.453655" id="tspan4032" sodipodi:role="line">Darken</tspan></text> +<text sodipodi:linespacing="125%" id="text4034" y="955.79443" x="39.453655" style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="955.79443" x="39.453655" id="tspan4036" sodipodi:role="line">Lighten</tspan></text> +<text sodipodi:linespacing="125%" id="text4078" y="770.5387" x="36.460007" style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" xml:space="preserve"><tspan y="770.5387" x="36.460007" id="tspan4080" sodipodi:role="line">Colour to transparent (CMYK)</tspan></text> +<g transform="matrix(0.5324436,0,0,0.5324436,106.13043,584.3201)" id="g4226" style="font-size:20.65946578999999872px;filter:url(#filter4298)"> +<rect y="460.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4228" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4236);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4238);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4230" width="409.03952" height="15.065946" x="290.77213" y="476.76517" /> +<rect y="492.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4232" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4240);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4242);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4234" width="409.03952" height="15.065946" x="290.77213" y="508.76517" /> +</g> +<g transform="matrix(0.5324436,0,0,0.5324436,106.13043,626.91559)" id="g4244" style="font-size:20.65946578999999872px;filter:url(#filter4302)"> +<rect y="460.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4246" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4254);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4256);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4248" width="409.03952" height="15.065946" x="290.77213" y="476.76517" /> +<rect y="492.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4250" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4258);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4260);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4252" width="409.03952" height="15.065946" x="290.77213" y="508.76517" /> +</g> +<g transform="matrix(0.5324436,0,0,0.5324436,106.13043,669.51108)" id="g4262" style="font-size:20.65946578999999872px;filter:url(#filter4306)"> +<rect y="460.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4264" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4272);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4274);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4266" width="409.03952" height="15.065946" x="290.77213" y="476.76517" /> +<rect y="492.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4268" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4276);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4278);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4270" width="409.03952" height="15.065946" x="290.77213" y="508.76517" /> +</g> +<g style="font-size:20.65946578999999872px;filter:url(#filter4310)" id="g4280" transform="matrix(0.5324436,0,0,0.5324436,106.13043,712.10656)"> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4290);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4282" width="409.03952" height="15.065946" x="290.77213" y="460.76517" /> +<rect y="476.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4284" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4292);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4294);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4286" width="409.03952" height="15.065946" x="290.77213" y="492.76517" /> +<rect y="508.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4288" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4296);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +</g> +<g transform="matrix(0.5324436,0,0,0.5324436,-117.7621,541.72462)" id="g4314" style="font-size:20.65946579px"> +<rect y="460.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4316" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4364);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4366);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4318" width="409.03952" height="15.065946" x="290.77213" y="476.76517" /> +<rect y="492.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4320" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4368);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4370);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4322" width="409.03952" height="15.065946" x="290.77213" y="508.76517" /> +</g> +<g style="font-size:20.65946579px;filter:url(#filter4298)" id="g4324" transform="matrix(0.5324436,0,0,0.5324436,-117.7621,584.3201)"> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4372);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4326" width="409.03952" height="15.065946" x="290.77213" y="460.76517" /> +<rect y="476.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4328" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4374);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4376);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4330" width="409.03952" height="15.065946" x="290.77213" y="492.76517" /> +<rect y="508.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4332" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4378);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +</g> +<g style="font-size:20.65946579px;filter:url(#filter4302)" id="g4334" transform="matrix(0.5324436,0,0,0.5324436,-117.7621,626.91559)"> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4380);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4336" width="409.03952" height="15.065946" x="290.77213" y="460.76517" /> +<rect y="476.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4338" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4382);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4384);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4340" width="409.03952" height="15.065946" x="290.77213" y="492.76517" /> +<rect y="508.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4342" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4386);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +</g> +<g style="font-size:20.65946579px;filter:url(#filter4306)" id="g4344" transform="matrix(0.5324436,0,0,0.5324436,-117.7621,669.51108)"> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4388);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4346" width="409.03952" height="15.065946" x="290.77213" y="460.76517" /> +<rect y="476.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4348" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4390);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4392);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4350" width="409.03952" height="15.065946" x="290.77213" y="492.76517" /> +<rect y="508.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4352" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4394);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +</g> +<g transform="matrix(0.5324436,0,0,0.5324436,-117.7621,712.10656)" id="g4354" style="font-size:20.65946579px;filter:url(#filter4310)"> +<rect y="460.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4356" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4396);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4398);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4358" width="409.03952" height="15.065946" x="290.77213" y="476.76517" /> +<rect y="492.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4360" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4400);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4402);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4362" width="409.03952" height="15.065946" x="290.77213" y="508.76517" /> +</g> +<g transform="matrix(0.5324436,0,0,0.5324436,329.75669,541.72462)" id="g4404" style="font-size:20.65946579px"> +<rect y="460.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4406" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4454);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4456);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4408" width="409.03952" height="15.065946" x="290.77213" y="476.76517" /> +<rect y="492.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4410" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4458);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4460);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4412" width="409.03952" height="15.065946" x="290.77213" y="508.76517" /> +</g> +<g style="font-size:20.65946579px;filter:url(#filter4298)" id="g4414" transform="matrix(0.5324436,0,0,0.5324436,329.75669,584.3201)"> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4462);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4416" width="409.03952" height="15.065946" x="290.77213" y="460.76517" /> +<rect y="476.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4418" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4464);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4466);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4420" width="409.03952" height="15.065946" x="290.77213" y="492.76517" /> +<rect y="508.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4422" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4468);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +</g> +<g style="font-size:20.65946579px;filter:url(#filter4302)" id="g4424" transform="matrix(0.5324436,0,0,0.5324436,329.75669,626.91559)"> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4470);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4426" width="409.03952" height="15.065946" x="290.77213" y="460.76517" /> +<rect y="476.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4428" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4472);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4474);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4430" width="409.03952" height="15.065946" x="290.77213" y="492.76517" /> +<rect y="508.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4432" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4476);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +</g> +<g style="font-size:20.65946579px;filter:url(#filter4306)" id="g4434" transform="matrix(0.5324436,0,0,0.5324436,329.75669,669.51108)"> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4478);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4436" width="409.03952" height="15.065946" x="290.77213" y="460.76517" /> +<rect y="476.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4438" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4480);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4482);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4440" width="409.03952" height="15.065946" x="290.77213" y="492.76517" /> +<rect y="508.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4442" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4484);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +</g> +<g transform="matrix(0.5324436,0,0,0.5324436,329.75669,712.10656)" id="g4444" style="font-size:20.65946579px;filter:url(#filter4310)"> +<rect y="460.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4446" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4486);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4488);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4448" width="409.03952" height="15.065946" x="290.77213" y="476.76517" /> +<rect y="492.76517" x="290.77213" height="15.065946" width="409.03952" id="rect4450" style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4490);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="font-size:20.65946579px;opacity:1;color:#000000;fill:url(#linearGradient4492);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4452" width="409.03952" height="15.065946" x="290.77213" y="508.76517" /> +</g> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient4502);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4494" width="157.4285" height="157.4285" x="-199.25186" y="13.608643" /> +<rect y="41.608643" x="-303.25186" height="281.4285" width="281.4285" id="rect4504" style="opacity:1;color:#000000;fill:url(#linearGradient4506);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter4514);enable-background:accumulate" transform="matrix(0.5593907,0,0,0.5593907,-29.61558,-9.666847)" /> +<rect y="193.60864" x="-199.25186" height="157.4285" width="157.4285" id="rect4550" style="opacity:1;color:#000000;fill:url(#linearGradient4554);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect transform="matrix(0.5593907,0,0,0.5593907,-29.61558,170.33315)" style="opacity:1;color:#000000;fill:url(#linearGradient4556);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter4582);enable-background:accumulate" id="rect4552" width="281.4285" height="281.4285" x="-303.25186" y="41.608643" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient4562);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4558" width="157.4285" height="157.4285" x="-199.25186" y="373.60864" /> +<rect y="41.608643" x="-303.25186" height="281.4285" width="281.4285" id="rect4560" style="opacity:1;color:#000000;fill:url(#linearGradient4564);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter4586);enable-background:accumulate" transform="matrix(0.5593907,0,0,0.5593907,-29.61558,350.33315)" /> +<rect y="553.60864" x="-199.25186" height="157.4285" width="157.4285" id="rect4566" style="opacity:1;color:#000000;fill:url(#linearGradient4570);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect transform="matrix(0.5593907,0,0,0.5593907,-29.61558,530.33315)" style="opacity:1;color:#000000;fill:url(#linearGradient4572);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter4590);enable-background:accumulate" id="rect4568" width="281.4285" height="281.4285" x="-303.25186" y="41.608643" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient4578);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4574" width="157.4285" height="157.4285" x="-199.25186" y="893.60864" /> +<rect y="41.608643" x="-303.25186" height="281.4285" width="281.4285" id="rect4576" style="opacity:1;color:#000000;fill:url(#linearGradient4580);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" transform="matrix(0.5593907,0,0,0.5593907,-29.61558,710.33315)" /> +<rect y="893.60864" x="780.74817" height="157.4285" width="157.4285" id="rect4594" style="opacity:1;color:#000000;fill:url(#linearGradient4598);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient4600);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4596" width="157.42848" height="157.42848" x="780.74817" y="733.60864" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient4612);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4608" width="157.4285" height="157.4285" x="780.74817" y="553.60864" /> +<rect y="553.60864" x="780.74817" height="157.42848" width="157.42848" id="rect4610" style="opacity:1;color:#000000;fill:url(#linearGradient4614);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;filter:url(#filter4616)" /> +<rect y="373.60864" x="780.74817" height="157.4285" width="157.4285" id="rect4620" style="opacity:1;color:#000000;fill:url(#linearGradient4624);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient4626);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter4628);enable-background:accumulate" id="rect4622" width="157.42848" height="157.42848" x="780.74817" y="373.60864" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient4636);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect4632" width="157.4285" height="157.4285" x="780.74817" y="193.60864" /> +<rect y="193.60864" x="780.74817" height="157.42848" width="157.42848" id="rect4634" style="opacity:1;color:#000000;fill:url(#linearGradient4638);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter4640);enable-background:accumulate" /> +<rect y="13.608643" x="780.74817" height="157.4285" width="157.4285" id="rect4644" style="opacity:1;color:#000000;fill:url(#linearGradient4648);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> +<rect style="opacity:1;color:#000000;fill:url(#linearGradient4650);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter4652);enable-background:accumulate" id="rect4646" width="157.42848" height="157.42848" x="780.74817" y="13.608643" /> +</g> </svg> diff --git a/share/examples/lighting_filters.svg b/share/examples/lighting_filters.svg index d1de369be..ec2cac8fa 100644 --- a/share/examples/lighting_filters.svg +++ b/share/examples/lighting_filters.svg @@ -1,172 +1,63 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://web.resource.org/cc/" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="768" - height="256" - id="svg1901" - sodipodi:version="0.32" - inkscape:version="0.45+devel" - sodipodi:docname="lighting_effects.svg" - sodipodi:docbase="/home/tsoots/ohj/translations/po" - version="1.0" - inkscape:output_extension="org.inkscape.output.svg.inkscape" - inkscape:export-filename="/home/niko/inkscape/complex-lighting.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <defs - id="defs1903"> - <filter - id="metallic-lighting" - filterRes="256"> - <feGaussianBlur - stdDeviation="10.0437" - id="feGaussianBlur2792" - in="SourceGraphic" - result="result0" /> - <feDiffuseLighting - id="feDiffuseLighting2794" - in="result0" - result="result1" - diffuseConstant="1" - surfaceScale="10" - lighting-color="#ffffff"> - <feDistantLight - id="feDistantLight1" - azimuth="205" - elevation="45" /> - </feDiffuseLighting> - <feSpecularLighting - id="feSpecularLighting2796" - in="result0" - result="result3" - specularConstant="0.5" - surfaceScale="20" - specularExponent="20" - lighting-color="#ffffff"> - <feDistantLight - id="feDistantLight2" - azimuth="205" - elevation="45" /> - </feSpecularLighting> - <feComposite - id="feComposite2798" - in="result1" - in2="SourceGraphic" - operator="arithmetic" - k1="1" - result="result2" - k4="0" - k2="0" - k3="0" /> - <feComposite - id="feComposite2800" - in="result2" - in2="result3" - operator="arithmetic" - k2="1" - k3="1" - k4="0" - k1="0" - result="result4" /> - <feComposite - inkscape:collect="always" - id="feComposite2799" - in="result4" - in2="SourceAlpha" - operator="in" /> - </filter> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="1.0371094" - inkscape:cx="552.25612" - inkscape:cy="112.56562" - inkscape:document-units="px" - inkscape:current-layer="layer1" - gridtolerance="10000" - inkscape:window-width="1278" - inkscape:window-height="751" - inkscape:window-x="0" - inkscape:window-y="0" - width="768px" - height="256px" /> - <metadata - id="metadata1906"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <cc:license - rdf:resource="http://creativecommons.org/licenses/by-sa/2.5/" /> - <dc:title>Lighting effects example</dc:title> - <dc:date>25 July 2007</dc:date> - <dc:creator> - <cc:Agent> - <dc:title>Niko Kiirala</dc:title> - </cc:Agent> - </dc:creator> - <dc:rights> - <cc:Agent> - <dc:title>Copyright 2007 Niko Kiirala, licensed under Creatice Commons by-sa 2.5</dc:title> - </cc:Agent> - </dc:rights> - <dc:subject> - <rdf:Bag> - <rdf:li>feDiffuseLighting</rdf:li> - <rdf:li>feSpecularLighting</rdf:li> - <rdf:li>light</rdf:li> - <rdf:li>lighting effects</rdf:li> - </rdf:Bag> - </dc:subject> - <dc:description>An example, how to make metallic-looking objects with SVG lighting effects</dc:description> - </cc:Work> - <cc:License - rdf:about="http://creativecommons.org/licenses/by-sa/3.0/"> - <cc:permits - rdf:resource="http://web.resource.org/cc/Reproduction" /> - <cc:permits - rdf:resource="http://web.resource.org/cc/Distribution" /> - <cc:requires - rdf:resource="http://web.resource.org/cc/Notice" /> - <cc:requires - rdf:resource="http://web.resource.org/cc/Attribution" /> - <cc:permits - rdf:resource="http://web.resource.org/cc/DerivativeWorks" /> - <cc:requires - rdf:resource="http://web.resource.org/cc/ShareAlike" /> - </cc:License> - </rdf:RDF> - </metadata> - <g - inkscape:label="Taso 1" - inkscape:groupmode="layer" - id="layer1" - style="opacity:1"> - <path - style="opacity:1;color:#000000;fill:#dad645;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:14;stroke-linecap:round;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#metallic-lighting);enable-background:accumulate" - d="M 121.53125,18.281251 L 115.65625,30.625001 L 87.5625,89.812501 L 23.1875,102.125 L 9.75,104.6875 L 19.6875,114.09375 L 67.3125,159.125 L 59.125,224.125 L 57.40625,237.71875 L 69.40625,231.15625 L 126.9375,199.75 L 186.25,227.65625 L 198.625,233.46875 L 196.125,220.03125 L 184.03125,155.65625 L 228.90625,107.84375 L 238.25,97.875002 L 224.6875,96.093752 L 159.6875,87.687502 L 128.09375,30.250001 L 121.53125,18.281251 z M 122.4375,49.000002 L 149.15625,97.531251 L 150.84375,100.65625 L 154.375,101.09375 L 209.3125,108.25 L 171.40625,148.625 L 168.96875,151.21875 L 169.625,154.71875 L 179.8125,209.15625 L 129.6875,185.59375 L 126.46875,184.09375 L 123.34375,185.78125 L 74.71875,212.34375 L 81.65625,157.34375 L 82.09375,153.8125 L 79.5,151.375 L 39.25,113.3125 L 93.65625,102.90625 L 97.15625,102.25 L 98.6875,99.031251 L 122.4375,49.000002 z" - id="path2803" /> - <path - id="path2799" - d="M 381.53125,18.281251 L 375.65625,30.625001 L 347.5625,89.812501 L 283.1875,102.125 L 269.75,104.6875 L 279.6875,114.09375 L 327.3125,159.125 L 319.125,224.125 L 317.40625,237.71875 L 329.40625,231.15625 L 386.9375,199.75 L 446.25,227.65625 L 458.625,233.46875 L 456.125,220.03125 L 444.03125,155.65625 L 488.90625,107.84375 L 498.25,97.875002 L 484.6875,96.093752 L 419.6875,87.687502 L 388.09375,30.250001 L 381.53125,18.281251 z M 382.4375,49.000002 L 409.15625,97.531251 L 410.84375,100.65625 L 414.375,101.09375 L 469.3125,108.25 L 431.40625,148.625 L 428.96875,151.21875 L 429.625,154.71875 L 439.8125,209.15625 L 389.6875,185.59375 L 386.46875,184.09375 L 383.34375,185.78125 L 334.71875,212.34375 L 341.65625,157.34375 L 342.09375,153.8125 L 339.5,151.375 L 299.25,113.3125 L 353.65625,102.90625 L 357.15625,102.25 L 358.6875,99.031251 L 382.4375,49.000002 z" - style="opacity:1;color:#000000;fill:#c7e1e2;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:14;stroke-linecap:round;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#metallic-lighting);enable-background:accumulate" /> - <path - style="opacity:1;color:#000000;fill:#f4a430;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:14;stroke-linecap:round;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#metallic-lighting);enable-background:accumulate" - d="M 641.53125,18.281251 L 635.65625,30.625001 L 607.5625,89.812501 L 543.1875,102.125 L 529.75,104.6875 L 539.6875,114.09375 L 587.3125,159.125 L 579.125,224.125 L 577.40625,237.71875 L 589.40625,231.15625 L 646.9375,199.75 L 706.25,227.65625 L 718.625,233.46875 L 716.125,220.03125 L 704.03125,155.65625 L 748.90625,107.84375 L 758.25,97.875002 L 744.6875,96.093752 L 679.6875,87.687502 L 648.09375,30.250001 L 641.53125,18.281251 z M 642.4375,49.000002 L 669.15625,97.531251 L 670.84375,100.65625 L 674.375,101.09375 L 729.3125,108.25 L 691.40625,148.625 L 688.96875,151.21875 L 689.625,154.71875 L 699.8125,209.15625 L 649.6875,185.59375 L 646.46875,184.09375 L 643.34375,185.78125 L 594.71875,212.34375 L 601.65625,157.34375 L 602.09375,153.8125 L 599.5,151.375 L 559.25,113.3125 L 613.65625,102.90625 L 617.15625,102.25 L 618.6875,99.031251 L 642.4375,49.000002 z" - id="path2805" /> - </g> + +<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="768" height="256" id="svg1901" sodipodi:version="0.32" inkscape:version="0.48+devel r" sodipodi:docname="lighting_filters.svg" version="1.0" inkscape:output_extension="org.inkscape.output.svg.inkscape" inkscape:export-filename="/home/niko/inkscape/complex-lighting.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> +<defs id="defs1903"> +<filter id="metallic-lighting" filterRes="256"> +<feGaussianBlur stdDeviation="10.0437" id="feGaussianBlur2792" in="SourceGraphic" result="result0" /> +<feDiffuseLighting id="feDiffuseLighting2794" in="result0" result="result1" diffuseConstant="1" surfaceScale="10" lighting-color="#ffffff"> +<feDistantLight id="feDistantLight1" azimuth="205" elevation="45" /> +</feDiffuseLighting> +<feSpecularLighting id="feSpecularLighting2796" in="result0" result="result3" specularConstant="0.5" surfaceScale="20" specularExponent="20" lighting-color="#ffffff"> +<feDistantLight id="feDistantLight2" azimuth="205" elevation="45" /> +</feSpecularLighting> +<feComposite id="feComposite2798" in="result1" in2="SourceGraphic" operator="arithmetic" k1="1" result="result2" k4="0" k2="0" k3="0" /> +<feComposite id="feComposite2800" in="result2" in2="result3" operator="arithmetic" k2="1" k3="1" k4="0" k1="0" result="result4" /> +<feComposite inkscape:collect="always" id="feComposite2799" in="result4" in2="SourceAlpha" operator="in" /> +</filter> +</defs> +<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="1.037109" inkscape:cx="100.3928" inkscape:cy="103.4055" inkscape:document-units="px" inkscape:current-layer="layer1" gridtolerance="10000" inkscape:window-width="1278" inkscape:window-height="715" inkscape:window-x="51" inkscape:window-y="24" width="768px" height="256px" showgrid="false" inkscape:window-maximized="0" /> +<metadata id="metadata1906"> +<rdf:RDF> +<cc:Work rdf:about=""> +<dc:format>image/svg+xml</dc:format> +<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> +<cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" /> +<dc:title>Lighting effects example</dc:title> +<dc:date>25 July 2007</dc:date> +<dc:creator> +<cc:Agent> +<dc:title>Niko Kiirala</dc:title> +</cc:Agent> +</dc:creator> +<dc:rights> +<cc:Agent> +<dc:title>Copyright 2007 Niko Kiirala</dc:title> +</cc:Agent> +</dc:rights> +<dc:subject> +<rdf:Bag> +<rdf:li>feDiffuseLighting</rdf:li> +<rdf:li>feSpecularLighting</rdf:li> +<rdf:li>light</rdf:li> +<rdf:li>lighting effects</rdf:li> +</rdf:Bag> +</dc:subject> +<dc:description>An example, how to make metallic-looking objects with SVG lighting effects</dc:description> +</cc:Work> +<cc:License rdf:about="http://creativecommons.org/licenses/by-sa/3.0/"> +<cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /> +<cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /> +<cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /> +<cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /> +<cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> +<cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /> +</cc:License> +</rdf:RDF> +</metadata> +<g inkscape:label="Taso 1" inkscape:groupmode="layer" id="layer1" style="opacity:1"> +<path style="opacity:1;color:#000000;fill:#dad645;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:14;stroke-linecap:round;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#metallic-lighting);enable-background:accumulate" d="M 121.53125,18.281251 L 115.65625,30.625001 L 87.5625,89.812501 L 23.1875,102.125 L 9.75,104.6875 L 19.6875,114.09375 L 67.3125,159.125 L 59.125,224.125 L 57.40625,237.71875 L 69.40625,231.15625 L 126.9375,199.75 L 186.25,227.65625 L 198.625,233.46875 L 196.125,220.03125 L 184.03125,155.65625 L 228.90625,107.84375 L 238.25,97.875002 L 224.6875,96.093752 L 159.6875,87.687502 L 128.09375,30.250001 L 121.53125,18.281251 z M 122.4375,49.000002 L 149.15625,97.531251 L 150.84375,100.65625 L 154.375,101.09375 L 209.3125,108.25 L 171.40625,148.625 L 168.96875,151.21875 L 169.625,154.71875 L 179.8125,209.15625 L 129.6875,185.59375 L 126.46875,184.09375 L 123.34375,185.78125 L 74.71875,212.34375 L 81.65625,157.34375 L 82.09375,153.8125 L 79.5,151.375 L 39.25,113.3125 L 93.65625,102.90625 L 97.15625,102.25 L 98.6875,99.031251 L 122.4375,49.000002 z" id="path2803" /> +<path id="path2799" d="M 381.53125,18.281251 L 375.65625,30.625001 L 347.5625,89.812501 L 283.1875,102.125 L 269.75,104.6875 L 279.6875,114.09375 L 327.3125,159.125 L 319.125,224.125 L 317.40625,237.71875 L 329.40625,231.15625 L 386.9375,199.75 L 446.25,227.65625 L 458.625,233.46875 L 456.125,220.03125 L 444.03125,155.65625 L 488.90625,107.84375 L 498.25,97.875002 L 484.6875,96.093752 L 419.6875,87.687502 L 388.09375,30.250001 L 381.53125,18.281251 z M 382.4375,49.000002 L 409.15625,97.531251 L 410.84375,100.65625 L 414.375,101.09375 L 469.3125,108.25 L 431.40625,148.625 L 428.96875,151.21875 L 429.625,154.71875 L 439.8125,209.15625 L 389.6875,185.59375 L 386.46875,184.09375 L 383.34375,185.78125 L 334.71875,212.34375 L 341.65625,157.34375 L 342.09375,153.8125 L 339.5,151.375 L 299.25,113.3125 L 353.65625,102.90625 L 357.15625,102.25 L 358.6875,99.031251 L 382.4375,49.000002 z" style="opacity:1;color:#000000;fill:#c7e1e2;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:14;stroke-linecap:round;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#metallic-lighting);enable-background:accumulate" /> +<path style="opacity:1;color:#000000;fill:#f4a430;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:14;stroke-linecap:round;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#metallic-lighting);enable-background:accumulate" d="M 641.53125,18.281251 L 635.65625,30.625001 L 607.5625,89.812501 L 543.1875,102.125 L 529.75,104.6875 L 539.6875,114.09375 L 587.3125,159.125 L 579.125,224.125 L 577.40625,237.71875 L 589.40625,231.15625 L 646.9375,199.75 L 706.25,227.65625 L 718.625,233.46875 L 716.125,220.03125 L 704.03125,155.65625 L 748.90625,107.84375 L 758.25,97.875002 L 744.6875,96.093752 L 679.6875,87.687502 L 648.09375,30.250001 L 641.53125,18.281251 z M 642.4375,49.000002 L 669.15625,97.531251 L 670.84375,100.65625 L 674.375,101.09375 L 729.3125,108.25 L 691.40625,148.625 L 688.96875,151.21875 L 689.625,154.71875 L 699.8125,209.15625 L 649.6875,185.59375 L 646.46875,184.09375 L 643.34375,185.78125 L 594.71875,212.34375 L 601.65625,157.34375 L 602.09375,153.8125 L 599.5,151.375 L 559.25,113.3125 L 613.65625,102.90625 L 617.15625,102.25 L 618.6875,99.031251 L 642.4375,49.000002 z" id="path2805" /> +</g> </svg> diff --git a/share/extensions/simplestyle.py b/share/extensions/simplestyle.py index c97d57e75..99b5938dd 100755..100644 --- a/share/extensions/simplestyle.py +++ b/share/extensions/simplestyle.py @@ -176,7 +176,7 @@ def parseStyle(s): if s is None: return {} else: - return dict([[x.strip() for x in i.split(":")] for i in s.split(";") if len(i)]) + return dict([[x.strip() for x in i.split(":")] for i in s.split(";") if len(i.strip())]) def formatStyle(a): """Format an inline style attribute from a dictionary""" diff --git a/share/extensions/test/Makefile.am b/share/extensions/test/Makefile.am index f7c59970f..9c3124351 100644 --- a/share/extensions/test/Makefile.am +++ b/share/extensions/test/Makefile.am @@ -20,7 +20,6 @@ EXTRA_DIST = \ foldablebox.test.py \ fractalize.test.py \ funcplot.test.py \ - gears.test.py \ gimp_xcf.test.py \ grid_cartesian.test.py \ grid_polar.test.py \ @@ -45,6 +44,7 @@ EXTRA_DIST = \ radiusrand.test.py \ render_alphabetsoup.test.py \ render_barcode.test.py \ + render_gears.test.py \ restack.test.py \ rtree.test.py \ run-all-extension-tests \ diff --git a/share/icons/inkscape.file.svg b/share/icons/inkscape.file.svg index 8d52ad39b..5803d94bf 100644 --- a/share/icons/inkscape.file.svg +++ b/share/icons/inkscape.file.svg @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.0" width="48" height="48" id="svg2" sodipodi:version="0.32" inkscape:version="0.48+devel r10484 custom" sodipodi:docname="inkscape.file.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" inkscape:export-filename="/usr/src/inkscape-svn/share/icons/inkscape.file.png" inkscape:export-xdpi="60" inkscape:export-ydpi="60"> -<sodipodi:namedview bordercohor="#666666" inkscape:window-height="744" inkscape:window-width="1366" inkscape:pageshadow="2" inkscape:pageopacity="0.0" guidetolerance="10.0" gridtolerance="10.0" objecttolerance="10.0" borderopacity="1.0" bordercolor="#666666" pagecolor="#ffffff" id="base" inkscape:zoom="11.3137" inkscape:cx="14.0316" inkscape:cy="22.7128" inkscape:window-x="0" inkscape:window-y="24" inkscape:current-layer="g1919" showgrid="false" inkscape:snap-bbox="false" inkscape:snap-page="true" inkscape:window-maximized="1" /> +<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.0" width="48" height="48" id="svg2" sodipodi:version="0.32" inkscape:version="0.48+devel r" sodipodi:docname="inkscape.file.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" inkscape:export-filename="/usr/src/inkscape-svn/share/icons/inkscape.file.png" inkscape:export-xdpi="60" inkscape:export-ydpi="60"> +<title id="title7353">Inkscape Filetype Icon</title> +<sodipodi:namedview bordercohor="#666666" inkscape:window-height="744" inkscape:window-width="1315" inkscape:pageshadow="2" inkscape:pageopacity="0.0" guidetolerance="10.0" gridtolerance="10.0" objecttolerance="10.0" borderopacity="1.0" bordercolor="#666666" pagecolor="#ffffff" id="base" inkscape:zoom="11.3137" inkscape:cx="-1.524761" inkscape:cy="21.87311" inkscape:window-x="51" inkscape:window-y="24" inkscape:current-layer="g1919" showgrid="false" inkscape:snap-bbox="false" inkscape:snap-page="true" inkscape:window-maximized="1" /> <defs id="defs4"> <filter color-interpolation-filters="sRGB" inkscape:collect="always" id="filter9372-1"> <feGaussianBlur inkscape:collect="always" stdDeviation="0.31260252" id="feGaussianBlur9374-5" /> @@ -126,15 +127,16 @@ </dc:publisher> <dc:identifier>http://andy.fitzsimon.com.au</dc:identifier> <dc:date>2006</dc:date> -<cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/2/" /> +<cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" /> +<dc:title>Inkscape Filetype Icon</dc:title> </cc:Work> -<cc:License rdf:about="http://creativecommons.org/licenses/by-sa/2/"> -<cc:permits rdf:resource="http://web.resource.org/cc/Reproduction" /> -<cc:permits rdf:resource="http://web.resource.org/cc/Distribution" /> -<cc:requires rdf:resource="http://web.resource.org/cc/Notice" /> -<cc:requires rdf:resource="http://web.resource.org/cc/Attribution" /> -<cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" /> -<cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike" /> +<cc:License rdf:about="http://creativecommons.org/licenses/by-sa/3.0/"> +<cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /> +<cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /> +<cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /> +<cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /> +<cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> +<cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /> </cc:License> </rdf:RDF> </metadata> @@ -158,7 +160,7 @@ <g id="g9200" transform="matrix(0.92776,0,0,0.92776,14.4185,-0.412514)"> <path sodipodi:nodetypes="ccccccscccccccccccsscccccc" id="path9354" d="m 151.971,10.2956 -9.589,9.8195 c -3.631,3.6299 2.351,3.3274 4.515,4.7002 1.001,0.6516 -3.211,1.4892 -2.35,2.3502 0.838,0.8609 5.05,1.6521 5.888,2.4897 0.838,0.861 -1.699,1.7685 -0.861,2.6294 0.815,0.8609 2.77,0.047 3.119,2.0011 0.256,1.4427 3.584,0.7213 5.074,-0.5119 0.931,-0.7911 -1.606,-0.7911 -0.768,-1.6521 2.094,-2.1174 3.956,-0.954 4.724,-2.9086 0.419,-1.0471 -3.165,-1.7917 -2.211,-2.4665 2.281,-1.6055 10.66,-2.4199 6.796,-6.2825 L 156.32,10.2326 c -1.234,-1.16347 -3.208,-1.10039 -4.349,0.063 z m -2.304,15.0549 c 0.21,0 7.169,0.9308 4.492,1.6521 -1.024,0.2792 -5.725,-1.6521 -4.492,-1.6521 z m 13.313,3.8626 c -0.1,0.6354 3.526,1.0335 3.459,0.1334 -0.124,-1.6695 -3.219,-1.6509 -3.459,-0.1334 z m -16.176,2.5829 c 0.861,0.7446 2.165,-0.1629 2.584,-1.21 -0.838,-1.0936 -3.934,0.07 -2.584,1.21 z m 15.711,-1.559 c -1.071,0.9772 0.186,2.0011 1.233,1.3263 0.279,-0.1862 -0.02,-1.0937 -1.233,-1.3263 z" style="opacity:0.46798;filter:url(#filter9372-1)" inkscape:connector-curvature="0" /> <path d="m 152.128,9.82579 -9.589,9.81941 c -3.631,3.6299 2.35,3.3274 4.515,4.7003 1.001,0.6515 -3.212,1.4892 -2.351,2.3501 0.838,0.861 5.051,1.6521 5.889,2.4898 0.838,0.8609 -1.699,1.7684 -0.861,2.6293 0.814,0.861 2.769,0.047 3.118,2.0012 0.256,1.4426 3.585,0.7213 5.074,-0.512 0.931,-0.7911 -1.606,-0.7911 -0.768,-1.652 2.095,-2.1175 3.957,-0.9541 4.725,-2.9086 0.419,-1.0471 -3.165,-1.7917 -2.211,-2.4665 2.281,-1.6056 10.66,-2.42 6.796,-6.2826 L 156.476,9.76271 c -1.233,-1.16344 -3.208,-1.10036 -4.348,0.0631 z m 11.009,18.91751 c -0.101,0.6353 3.526,1.0335 3.459,0.1334 -0.124,-1.6696 -3.219,-1.651 -3.459,-0.1334 z m -16.176,2.5828 c 0.861,0.7446 2.164,-0.1629 2.583,-1.21 -0.837,-1.0936 -3.933,0.07 -2.583,1.21 z m 15.71,-1.559 c -1.07,0.9773 0.186,2.0011 1.234,1.3263 0.279,-0.1861 -0.02,-1.0936 -1.234,-1.3263 z" id="path9202" sodipodi:nodetypes="ccccccsccccccccsscccccc" inkscape:connector-curvature="0" /> -<path sodipodi:type="inkscape:offset" inkscape:radius="-1.09997" inkscape:original="M 154.2812 8.90625 C 153.4909 8.922022 152.695 9.23077 152.125 9.8125 L 142.5312 19.65625 C 138.9002 23.28615 144.8975 22.97085 147.0625 24.34375 C 148.0635 24.99525 143.8265 25.8266 144.6875 26.6875 C 145.5255 27.5485 149.7557 28.3498 150.5938 29.1875 C 151.4317 30.0484 148.8807 30.9516 149.7188 31.8125 C 150.5327 32.6735 152.4948 31.8583 152.8438 33.8125 C 153.0998 35.2551 156.4485 34.5458 157.9375 33.3125 C 158.8685 32.5214 156.3183 32.51715 157.1562 31.65625 C 159.2512 29.53875 161.107 30.7045 161.875 28.75 C 162.294 27.7029 158.7023 26.95605 159.6562 26.28125 C 161.9373 24.67565 170.3327 23.8626 166.4688 20 L 156.4688 9.75 C 155.8522 9.16828 155.0716 8.890478 154.2812 8.90625 z M 164.9062 27.625 C 164.087 27.61065 163.245 27.9912 163.125 28.75 C 163.024 29.3853 166.6608 29.7751 166.5938 28.875 C 166.5317 28.0402 165.7255 27.63935 164.9062 27.625 z M 148.5938 29.6875 C 147.4332 29.60684 145.9563 30.4575 146.9688 31.3125 C 147.8297 32.0571 149.1123 31.1721 149.5312 30.125 C 149.322 29.8516 148.9806 29.71439 148.5938 29.6875 z M 162.6562 29.78125 C 161.5863 30.75855 162.8582 31.76855 163.9062 31.09375 C 164.1852 30.90765 163.8703 30.01395 162.6562 29.78125 z " xlink:href="#path9202" id="path9238" inkscape:href="#path9202" d="m 154.312,10 c -0.518,0.01 -1.058,0.2387 -1.406,0.5938 l -9.594,9.8437 c -0.806,0.8061 -0.798,1.1766 -0.812,1.0937 -0,-0.041 -0.04,-0.066 0.03,0 0.08,0.066 0.235,0.2025 0.5,0.3126 0.53,0.2201 1.357,0.3991 2.188,0.625 0.83,0.2258 1.686,0.4608 2.437,0.9374 0.16,0.1036 0.356,0.2501 0.5,0.5 0.144,0.25 0.185,0.6208 0.125,0.9063 -0.12,0.5709 -0.414,0.7787 -0.625,0.9375 -0.393,0.296 -0.775,0.476 -1.156,0.6562 0.441,0.1651 0.929,0.3242 1.469,0.5 0.633,0.2061 1.3,0.4001 1.875,0.625 0.575,0.225 1.056,0.4004 1.531,0.875 0.236,0.242 0.427,0.628 0.469,1 0.04,0.3721 -0.04,0.6698 -0.156,0.9063 -0.209,0.4223 -0.453,0.6712 -0.657,0.875 0.194,0.046 0.228,0.049 0.688,0.1563 0.398,0.093 0.868,0.2417 1.312,0.625 0.405,0.3493 0.702,0.8969 0.844,1.5 0.125,0.039 0.484,0.06 0.906,0 0.503,-0.072 0.961,-0.3589 1.469,-0.5938 -0.02,-0.026 -0.04,-0 -0.06,-0.031 -0.186,-0.2328 -0.341,-0.6569 -0.282,-1.0626 0.06,-0.4056 0.267,-0.6985 0.469,-0.9062 1.233,-1.2459 2.541,-1.5687 3.344,-1.7812 0.401,-0.1063 0.68,-0.1978 0.812,-0.2813 0.03,-0.02 0.04,-0.1035 0.06,-0.125 -0.164,-0.1086 -0.314,-0.2061 -0.563,-0.3437 -0.36,-0.1992 -0.735,-0.3581 -1.125,-0.7188 -0.195,-0.1803 -0.462,-0.4597 -0.5,-1 -0.04,-0.5403 0.334,-1.044 0.625,-1.25 0.794,-0.559 1.783,-0.8831 2.844,-1.25 1.061,-0.3669 2.173,-0.7245 3.031,-1.125 0.859,-0.4005 1.362,-0.8888 1.438,-1.0625 0.04,-0.087 0.06,-0.109 0,-0.2813 -0.06,-0.1722 -0.251,-0.4694 -0.656,-0.875 l -9.969,-10.2187 c -0.01,-0.01 -0.02,-0.021 -0.03,-0.031 -0.401,-0.3627 -0.87,-0.54127 -1.376,-0.5312 z m 8.907,20.2812 c -0.03,0.031 -0,0.061 -0.03,0.094 l 0.124,0.125 c -0.02,-0.091 -0.06,-0.1738 -0.09,-0.2188 z" style="fill:url(#linearGradient1968);fill-opacity:1" /> +<path sodipodi:type="inkscape:offset" inkscape:radius="-1.09997" inkscape:original="M 154.2676 8.921875 C 153.4772 8.937648 152.6989 9.244442 152.1289 9.826172 L 142.5391 19.64453 C 138.9081 23.27443 144.8897 22.9728 147.0547 24.3457 C 148.0557 24.9972 143.8421 25.83441 144.7031 26.69531 C 145.5411 27.55631 149.7538 28.34785 150.5918 29.18555 C 151.4298 30.04645 148.8925 30.95355 149.7305 31.81445 C 150.5445 32.67545 152.5006 31.86221 152.8496 33.81641 C 153.1056 35.25901 156.4348 34.53799 157.9238 33.30469 C 158.8548 32.51359 156.3163 32.51324 157.1543 31.65234 C 159.2493 29.53484 161.1129 30.69864 161.8809 28.74414 C 162.2999 27.69704 158.7159 26.95214 159.6699 26.27734 C 161.9509 24.67174 170.3288 23.85674 166.4648 19.99414 L 156.4766 9.763672 C 155.8601 9.181952 155.058 8.906102 154.2676 8.921875 z M 164.9102 27.61523 C 164.0909 27.60088 163.2567 27.98534 163.1367 28.74414 C 163.0357 29.37944 166.6627 29.77705 166.5957 28.87695 C 166.5337 28.04215 165.7294 27.62958 164.9102 27.61523 z M 148.5977 29.68359 C 147.4371 29.60293 145.9484 30.47117 146.9609 31.32617 C 147.8219 32.07077 149.1259 31.16233 149.5449 30.11523 C 149.3357 29.84183 148.9845 29.71048 148.5977 29.68359 z M 162.6719 29.76758 C 161.6019 30.74488 162.8563 31.76855 163.9043 31.09375 C 164.1833 30.90765 163.8859 30.00028 162.6719 29.76758 z " xlink:href="#path9202" id="path9238" inkscape:href="#path9202" d="m 154.312,10 c -0.518,0.01 -1.058,0.2387 -1.406,0.5938 l -9.594,9.8437 c -0.806,0.8061 -0.798,1.1766 -0.812,1.0937 -0,-0.041 -0.04,-0.066 0.03,0 0.08,0.066 0.235,0.2025 0.5,0.3126 0.53,0.2201 1.357,0.3991 2.188,0.625 0.83,0.2258 1.686,0.4608 2.437,0.9374 0.16,0.1036 0.356,0.2501 0.5,0.5 0.144,0.25 0.185,0.6208 0.125,0.9063 -0.12,0.5709 -0.414,0.7787 -0.625,0.9375 -0.393,0.296 -0.775,0.476 -1.156,0.6562 0.441,0.1651 0.929,0.3242 1.469,0.5 0.633,0.2061 1.3,0.4001 1.875,0.625 0.575,0.225 1.056,0.4004 1.531,0.875 0.236,0.242 0.427,0.628 0.469,1 0.04,0.3721 -0.04,0.6698 -0.156,0.9063 -0.209,0.4223 -0.453,0.6712 -0.657,0.875 0.194,0.046 0.228,0.049 0.688,0.1563 0.398,0.093 0.868,0.2417 1.312,0.625 0.405,0.3493 0.702,0.8969 0.844,1.5 0.125,0.039 0.484,0.06 0.906,0 0.503,-0.072 0.961,-0.3589 1.469,-0.5938 -0.02,-0.026 -0.04,-0 -0.06,-0.031 -0.186,-0.2328 -0.341,-0.6569 -0.282,-1.0626 0.06,-0.4056 0.267,-0.6985 0.469,-0.9062 1.233,-1.2459 2.541,-1.5687 3.344,-1.7812 0.401,-0.1063 0.68,-0.1978 0.812,-0.2813 0.03,-0.02 0.04,-0.1035 0.06,-0.125 -0.164,-0.1086 -0.314,-0.2061 -0.563,-0.3437 -0.36,-0.1992 -0.735,-0.3581 -1.125,-0.7188 -0.195,-0.1803 -0.462,-0.4597 -0.5,-1 -0.04,-0.5403 0.334,-1.044 0.625,-1.25 0.794,-0.559 1.783,-0.8831 2.844,-1.25 1.061,-0.3669 2.173,-0.7245 3.031,-1.125 0.859,-0.4005 1.362,-0.8888 1.438,-1.0625 0.04,-0.087 0.06,-0.109 0,-0.2813 -0.06,-0.1722 -0.251,-0.4694 -0.656,-0.875 l -9.969,-10.2187 c -0.01,-0.01 -0.02,-0.021 -0.03,-0.031 -0.401,-0.3627 -0.87,-0.54127 -1.376,-0.5312 z m 8.907,20.2812 c -0.03,0.031 -0,0.061 -0.03,0.094 l 0.124,0.125 c -0.02,-0.091 -0.06,-0.1738 -0.09,-0.2188 z" style="fill:url(#linearGradient1968);fill-opacity:1" /> <path d="m 155.903,10.3924 5.868,6.2544 c 0.38,0.3802 0.38,1.2767 0.152,1.5048 l -2.054,-1.6728 -0.405,2.4586 -4.069,-0.9915 -3.119,2.1044 -0.557,-4.0308 -1.55,2.8777 -3.613,-0.3816 c -0.71,0 -0.727,-0.8536 0,-1.5886 1.445,-1.5968 5.54,-5.5803 6.427,-6.5181 0.913,-0.93779 1.999,-0.92894 2.912,-0.016 z" style="fill:url(#linearGradient1970)" class="full-specularity" id="path9206" sodipodi:nodetypes="ccccccccccccc" inkscape:connector-curvature="0" /> </g> <path sodipodi:type="arc" style="opacity:0.527094;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="path9212" sodipodi:cx="338.453" sodipodi:cy="74.6406" sodipodi:rx="1.32812" sodipodi:ry="0.328125" d="m 339.7811,74.6406 c 0,0.18122 -0.5946,0.32813 -1.3281,0.32813 -0.7335,0 -1.3281,-0.14691 -1.3281,-0.32813 0,-0.18122 0.5946,-0.32812 1.3281,-0.32812 0.7335,0 1.3281,0.1469 1.3281,0.32812 z" transform="matrix(0.629347,0,0,0.706198,-45.5979,-27.0999)" /> diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4f7592119..42e091f43 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -235,7 +235,7 @@ set(inkscape_SRC knotholder.cpp layer-fns.cpp layer-manager.cpp - layer-model.cpp + layer-model.cpp line-geometry.cpp line-snapper.cpp lpe-tool-context.cpp @@ -323,6 +323,7 @@ set(inkscape_SRC color-profile.h color-rgba.h color.h + colorspace.h common-context.h composite-undo-stack-observer.h conditions.h @@ -555,6 +556,7 @@ add_subdirectory(libavoid) add_subdirectory(libcola) add_subdirectory(libcroco) add_subdirectory(libgdl) +add_subdirectory(libuemf) add_subdirectory(libvpsc) add_subdirectory(livarot) add_subdirectory(libnrtype) @@ -594,6 +596,7 @@ target_link_libraries(inkscape cola_LIB vpsc_LIB livarot_LIB + uemf_LIB 2geom_LIB ${INKSCAPE_LIBS} diff --git a/src/Makefile.am b/src/Makefile.am index f8b85ac54..6fcfa421d 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -27,6 +27,7 @@ noinst_LIBRARIES = \ libcroco/libcroco.a \ libavoid/libavoid.a \ $(internal_GDL) \ + libuemf/libuemf.a \ libcola/libcola.a \ libvpsc/libvpsc.a \ livarot/libvarot.a \ @@ -123,7 +124,7 @@ include live_effects/Makefile_insert include live_effects/parameter/Makefile_insert include libvpsc/Makefile_insert include libcola/Makefile_insert -include libunicode-convert/Makefile_insert +include libuemf/Makefile_insert include svg/Makefile_insert include widgets/Makefile_insert include debug/Makefile_insert @@ -140,9 +141,7 @@ include 2geom/Makefile_insert # Extra files not mentioned as sources to include in the source tarball EXTRA_DIST += \ - $(top_srcdir)/Doxyfile \ - sp-skeleton.cpp sp-skeleton.h \ - util/makefile.in \ + 2geom/makefile.in \ debug/makefile.in \ dialogs/makefile.in \ display/makefile.in \ @@ -153,32 +152,36 @@ EXTRA_DIST += \ filters/makefile.in \ helper/makefile.in \ io/makefile.in \ - io/crystalegg.xml \ - io/doc2html.xsl \ - libgdl/makefile.in \ + libavoid/makefile.in \ libcroco/makefile.in \ + libgdl/makefile.in \ libnrtype/makefile.in \ - libavoid/makefile.in \ + libuemf/makefile.in \ livarot/makefile.in \ live_effects/makefile.in \ live_effects/parameter/makefile.in \ svg/makefile.in \ trace/makefile.in \ - ui/makefile.in \ ui/cache/makefile.in \ ui/dialog/makefile.in \ + ui/makefile.in \ ui/view/makefile.in \ ui/widget/makefile.in \ util/makefile.in \ + util/makefile.in \ widgets/makefile.in \ xml/makefile.in \ - 2geom/makefile.in \ + \ + $(top_srcdir)/Doxyfile \ extension/internal/emf-inout.cpp \ extension/internal/emf-inout.h \ extension/internal/emf-print.cpp \ extension/internal/emf-print.h \ helper/sp-marshal.list \ + io/crystalegg.xml \ + io/doc2html.xsl \ show-preview.bmp \ + sp-skeleton.cpp sp-skeleton.h \ winconsole.cpp \ $(CXXTEST_TEMPLATE) diff --git a/src/display/cairo-utils.cpp b/src/display/cairo-utils.cpp index fc56c7b26..755553033 100644 --- a/src/display/cairo-utils.cpp +++ b/src/display/cairo-utils.cpp @@ -28,16 +28,13 @@ #include "helper/geom-curves.h" #include "display/cairo-templates.h" -namespace { - /** * Key for cairo_surface_t to keep track of current color interpolation value * Only the address of the structure is used, it is never initialized. See: * http://www.cairographics.org/manual/cairo-Types.html#cairo-user-data-key-t */ -cairo_user_data_key_t ci_key; - -} // namespace +cairo_user_data_key_t ink_color_interpolation_key; +cairo_user_data_key_t ink_pixbuf_key; namespace Inkscape { @@ -291,7 +288,7 @@ feed_pathvector_to_cairo (cairo_t *ct, Geom::PathVector const &pathv) SPColorInterpolation get_cairo_surface_ci(cairo_surface_t *surface) { - void* data = cairo_surface_get_user_data( surface, &ci_key ); + void* data = cairo_surface_get_user_data( surface, &ink_color_interpolation_key ); if( data != NULL ) { return (SPColorInterpolation)GPOINTER_TO_INT( data ); } else { @@ -317,13 +314,13 @@ set_cairo_surface_ci(cairo_surface_t *surface, SPColorInterpolation ci) { ink_cairo_surface_linear_to_srgb( surface ); } - cairo_surface_set_user_data(surface, &ci_key, GINT_TO_POINTER (ci), NULL); + cairo_surface_set_user_data(surface, &ink_color_interpolation_key, GINT_TO_POINTER (ci), NULL); } } void copy_cairo_surface_ci(cairo_surface_t *in, cairo_surface_t *out) { - cairo_surface_set_user_data(out, &ci_key, cairo_surface_get_user_data(in, &ci_key), NULL); + cairo_surface_set_user_data(out, &ink_color_interpolation_key, cairo_surface_get_user_data(in, &ink_color_interpolation_key), NULL); } void @@ -375,27 +372,117 @@ ink_cairo_pattern_set_matrix(cairo_pattern_t *cp, Geom::Affine const &m) } void -ink_cairo_set_source_argb32_pixbuf(cairo_t *ct, GdkPixbuf *pb, double x, double y) +ink_cairo_set_source_pixbuf(cairo_t *ct, GdkPixbuf *pb, double x, double y) { - cairo_surface_t *pbs = ink_cairo_surface_create_for_argb32_pixbuf(pb); + cairo_surface_t *pbs = ink_cairo_surface_get_for_pixbuf(pb); cairo_set_source_surface(ct, pbs, x, y); - cairo_surface_destroy(pbs); } +/* The functions below implement the following hack: + * + * The pixels formats of Cairo and GdkPixbuf are different. + * GdkPixbuf accesses pixels as bytes, alpha is not premultiplied, + * and successive bytes of a single pixel contain R, G, B and A components. + * Cairo accesses pixels as 32-bit ints, alpha is premultiplied, + * and each int contains as 0xAARRGGBB, accessed with bitwise operations. + * + * In other words, on a little endian system, a GdkPixbuf will contain: + * char *data = "rgbargbargba...." + * int *data = { 0xAABBGGRR, 0xAABBGGRR, 0xAABBGGRR, ... } + * while a Cairo image surface will contain: + * char *data = "bgrabgrabgra...." + * int *data = { 0xAARRGGBB, 0xAARRGGBB, 0xAARRGGBB, ... } + * + * It is possible to convert between these two formats (almost) losslessly. + * Some color information from partially transparent regions of the image + * is lost, but the result when displaying this image will remain the same. + * + * The functions below allow interoperation between GdkPixbuf + * and Cairo surfaces, allowing pixbufs to be used as Cairo sources, + * and saving Cairo surfaces using GdkPixbuf APIs. + * This is implemented by creating a GdkPixbuf and a Cairo image surface + * which share their data. Depending on what is needed at a given time, + * the pixels are converted in place to the Cairo or the GdkPixbuf format. + * In this way, only one copy of the image data is needed. + * + * Given either a GdkPixbuf or a Cairo surface, these functions create + * the other object and convert to its format. The returned object should be + * freed using cairo_surface_destroy or g_object_unref when it's no longer + * needed. + * + * Memory ownership semantics: + * Regardless of whether the pixels are stored in memory originally belonging + * to Cairo surface or to GdkPixbuf, the GdkPixbuf is the master object. + * To free the memory, unref the GdkPixbuf ONLY. + */ + +/** + * Converts the pixbuf to Cairo pixel format and returns an image surface + * which can be used as a source. + * + * The returned surface is owned by the GdkPixbuf and should not be freed. + * Calling this function causes the pixbuf to be unsuitable for use + * with GTK drawing functions until ink_pixbuf_ensure_normal() is called. + * + * @bug You have to call g_object_set_data(G_OBJECT(pb), "cairo_surface", NULL) + * when unrefing the last reference to the pixbuf. Otherwise there will be + * crashes, because cairo_surface_destroy is called after the pixbuf data + * is already freed. + */ cairo_surface_t * -ink_cairo_surface_create_for_argb32_pixbuf(GdkPixbuf *pb) +ink_cairo_surface_get_for_pixbuf(GdkPixbuf *pb) { - guchar *data = gdk_pixbuf_get_pixels(pb); - int w = gdk_pixbuf_get_width(pb); - int h = gdk_pixbuf_get_height(pb); - int stride = gdk_pixbuf_get_rowstride(pb); + cairo_surface_t *pbs = + reinterpret_cast<cairo_surface_t*>(g_object_get_data(G_OBJECT(pb), "cairo_surface")); + + ink_pixbuf_ensure_argb32(pb); + + if (pbs == NULL) { + guchar *data = gdk_pixbuf_get_pixels(pb); + int w = gdk_pixbuf_get_width(pb); + int h = gdk_pixbuf_get_height(pb); + int stride = gdk_pixbuf_get_rowstride(pb); + + // create a surface that stores the data + pbs = cairo_image_surface_create_for_data( + data, CAIRO_FORMAT_ARGB32, w, h, stride); + + g_object_set_data_full(G_OBJECT(pb), "cairo_surface", pbs, (GDestroyNotify) cairo_surface_destroy); + cairo_surface_set_user_data(pbs, &ink_pixbuf_key, pb, NULL); + } - cairo_surface_t *pbs = cairo_image_surface_create_for_data( - data, CAIRO_FORMAT_ARGB32, w, h, stride); return pbs; } /** + * Converts the Cairo surface to GdkPixbuf pixel format. + * GdkPixbuf takes ownership of the passed surface reference, + * so it should NOT be freed after calling this function. + */ +GdkPixbuf *ink_pixbuf_create_from_cairo_surface(cairo_surface_t *s) +{ + GdkPixbuf *pb = reinterpret_cast<GdkPixbuf*>(cairo_surface_get_user_data(s, &ink_pixbuf_key)); + if (pb == NULL) { + pb = gdk_pixbuf_new_from_data( + cairo_image_surface_get_data(s), GDK_COLORSPACE_RGB, TRUE, 8, + cairo_image_surface_get_width(s), cairo_image_surface_get_height(s), + cairo_image_surface_get_stride(s), NULL, NULL); + + g_object_set_data_full(G_OBJECT(pb), "pixel_format", g_strdup("argb32"), g_free); + g_object_set_data_full(G_OBJECT(pb), "cairo_surface", s, (GDestroyNotify) cairo_surface_destroy); + + cairo_surface_set_user_data(s, &ink_pixbuf_key, pb, NULL); + } else { + g_warning("Received surface which is already owned by GdkPixbuf"); + g_object_ref(pb); + } + + ink_pixbuf_ensure_normal(pb); + + return pb; +} + +/** * Cleanup function for GdkPixbuf. * This function should be passed as the GdkPixbufDestroyNotify parameter * to gdk_pixbuf_new_from_data when creating a GdkPixbuf backed by @@ -445,7 +532,7 @@ cairo_surface_t * ink_cairo_surface_create_identical(cairo_surface_t *s) { cairo_surface_t *ns = ink_cairo_surface_create_same_size(s, cairo_surface_get_content(s)); - cairo_surface_set_user_data(ns, &ci_key, cairo_surface_get_user_data(s, &ci_key), NULL); + cairo_surface_set_user_data(ns, &ink_color_interpolation_key, cairo_surface_get_user_data(s, &ink_color_interpolation_key), NULL); return ns; } @@ -845,13 +932,20 @@ convert_pixels_argb32_to_pixbuf(guchar *data, int w, int h, int stride) * using it with GTK will result in corrupted drawings. */ void -convert_pixbuf_normal_to_argb32(GdkPixbuf *pb) +ink_pixbuf_ensure_argb32(GdkPixbuf *pb) { + gchar *pixel_format = reinterpret_cast<gchar*>(g_object_get_data(G_OBJECT(pb), "pixel_format")); + if (pixel_format != NULL && strcmp(pixel_format, "argb32") == 0) { + // nothing to do + return; + } + convert_pixels_pixbuf_to_argb32( gdk_pixbuf_get_pixels(pb), gdk_pixbuf_get_width(pb), gdk_pixbuf_get_height(pb), gdk_pixbuf_get_rowstride(pb)); + g_object_set_data_full(G_OBJECT(pb), "pixel_format", g_strdup("argb32"), g_free); } /** @@ -859,13 +953,20 @@ convert_pixbuf_normal_to_argb32(GdkPixbuf *pb) * Once this is done, the pixbuf can be used with GTK again. */ void -convert_pixbuf_argb32_to_normal(GdkPixbuf *pb) +ink_pixbuf_ensure_normal(GdkPixbuf *pb) { + gchar *pixel_format = reinterpret_cast<gchar*>(g_object_get_data(G_OBJECT(pb), "pixel_format")); + if (pixel_format == NULL || strcmp(pixel_format, "pixbuf") == 0) { + // nothing to do + return; + } + convert_pixels_argb32_to_pixbuf( gdk_pixbuf_get_pixels(pb), gdk_pixbuf_get_width(pb), gdk_pixbuf_get_height(pb), gdk_pixbuf_get_rowstride(pb)); + g_object_set_data_full(G_OBJECT(pb), "pixel_format", g_strdup("pixbuf"), g_free); } guint32 argb32_from_rgba(guint32 in) diff --git a/src/display/cairo-utils.h b/src/display/cairo-utils.h index 016f72d00..289d4e01f 100644 --- a/src/display/cairo-utils.h +++ b/src/display/cairo-utils.h @@ -82,6 +82,17 @@ public: } // namespace Inkscape +enum InkPixelFormat { + INK_PIXEL_FORMAT_NONE, + INK_PIXEL_FORMAT_CAIRO, + INK_PIXEL_FORMAT_PIXBUF, + INK_PIXEL_FORMAT_LAST +}; + +// TODO: these declarations may not be needed in the header +extern cairo_user_data_key_t ink_color_interpolation_key; +extern cairo_user_data_key_t ink_pixbuf_key; + SPColorInterpolation get_cairo_surface_ci(cairo_surface_t *surface); void set_cairo_surface_ci(cairo_surface_t *surface, SPColorInterpolation cif); void copy_cairo_surface_ci(cairo_surface_t *in, cairo_surface_t *out); @@ -91,7 +102,7 @@ void ink_cairo_set_source_color(cairo_t *ct, SPColor const &color, double opacit void ink_cairo_set_source_rgba32(cairo_t *ct, guint32 rgba); void ink_cairo_transform(cairo_t *ct, Geom::Affine const &m); void ink_cairo_pattern_set_matrix(cairo_pattern_t *cp, Geom::Affine const &m); -void ink_cairo_set_source_argb32_pixbuf(cairo_t *ct, GdkPixbuf *pb, double x, double y); +void ink_cairo_set_source_pixbuf(cairo_t *ct, GdkPixbuf *pb, double x, double y); void ink_matrix_to_2geom(Geom::Affine &, cairo_matrix_t const &); void ink_matrix_to_cairo(cairo_matrix_t &, Geom::Affine const &); @@ -116,9 +127,10 @@ cairo_pattern_t *ink_cairo_pattern_create_checkerboard(); void convert_pixels_pixbuf_to_argb32(guchar *data, int w, int h, int rs); void convert_pixels_argb32_to_pixbuf(guchar *data, int w, int h, int rs); -void convert_pixbuf_normal_to_argb32(GdkPixbuf *); -void convert_pixbuf_argb32_to_normal(GdkPixbuf *); -cairo_surface_t *ink_cairo_surface_create_for_argb32_pixbuf(GdkPixbuf *pb); +void ink_pixbuf_ensure_argb32(GdkPixbuf *); +void ink_pixbuf_ensure_normal(GdkPixbuf *); +cairo_surface_t *ink_cairo_surface_get_for_pixbuf(GdkPixbuf *pb); +GdkPixbuf *ink_pixbuf_create_from_cairo_surface(cairo_surface_t *s); void ink_cairo_pixbuf_cleanup(guchar *pixels, void *surface); G_GNUC_CONST guint32 argb32_from_pixbuf(guint32 in); diff --git a/src/display/drawing-image.cpp b/src/display/drawing-image.cpp index bdb7c15b0..46f066b8e 100644 --- a/src/display/drawing-image.cpp +++ b/src/display/drawing-image.cpp @@ -22,7 +22,7 @@ namespace Inkscape { DrawingImage::DrawingImage(Drawing &drawing) : DrawingItem(drawing) , _pixbuf(NULL) - , _surface(NULL) + , _surface(NULL) // this is owned by _pixbuf! , _style(NULL) , _new_surface(NULL) {} @@ -33,7 +33,6 @@ DrawingImage::~DrawingImage() sp_style_unref(_style); if (_pixbuf) { if (_new_surface) cairo_surface_destroy(_new_surface); - cairo_surface_destroy(_surface); g_object_unref(_pixbuf); } } @@ -47,10 +46,10 @@ DrawingImage::setARGB32Pixbuf(GdkPixbuf *pb) } if (_pixbuf != NULL) { g_object_unref(_pixbuf); - cairo_surface_destroy(_surface); + // unrefing the pixbuf also destroys surface } _pixbuf = pb; - _surface = pb ? ink_cairo_surface_create_for_argb32_pixbuf(pb) : NULL; + _surface = pb ? ink_cairo_surface_get_for_pixbuf(pb) : NULL; _markForUpdate(STATE_ALL, false); } @@ -207,7 +206,7 @@ unsigned DrawingImage::_renderItem(DrawingContext &ct, Geom::IntRect const &/*ar int orgstride = cairo_image_surface_get_stride(_surface); int newstride = cairo_image_surface_get_stride(_new_surface); - cairo_surface_flush(_surface); + //cairo_surface_flush(_surface); cairo_surface_flush(_new_surface); for(int y=0; y<newheight; y++) { diff --git a/src/display/nr-filter-image.cpp b/src/display/nr-filter-image.cpp index 7a27d857e..b9d73f0ad 100644 --- a/src/display/nr-filter-image.cpp +++ b/src/display/nr-filter-image.cpp @@ -30,7 +30,6 @@ FilterImage::FilterImage() : SVGElem(0) , document(0) , feImageHref(0) - , image_surface(0) , broken_ref(false) { } @@ -42,6 +41,7 @@ FilterImage::~FilterImage() { if (feImageHref) g_free(feImageHref); + g_object_set_data(G_OBJECT(image->gobj()), "cairo_surface", NULL); } void FilterImage::render_cairo(FilterSlot &slot) @@ -172,18 +172,10 @@ void FilterImage::render_cairo(FilterSlot &slot) if (!has_alpha) { image = image->add_alpha(false, 0, 0, 0); } - - // Native size of image - // width = image->get_width(); - // height = image->get_height(); - // rowstride = image->get_rowstride(); - - convert_pixbuf_normal_to_argb32(image->gobj()); - - image_surface = cairo_image_surface_create_for_data(image->get_pixels(), - CAIRO_FORMAT_ARGB32, image->get_width(), image->get_height(), image->get_rowstride()); } + cairo_surface_t *image_surface = ink_cairo_surface_get_for_pixbuf(image->gobj()); + Geom::Rect sa = slot.get_slot_area(); cairo_surface_t *out = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, sa.width(), sa.height()); @@ -310,9 +302,7 @@ void FilterImage::set_href(const gchar *href){ if (feImageHref) g_free (feImageHref); feImageHref = (href) ? g_strdup (href) : NULL; - if (image_surface) { - cairo_surface_destroy(image_surface); - } + g_object_set_data(G_OBJECT(image->gobj()), "cairo_surface", NULL); image.reset(); broken_ref = false; } diff --git a/src/display/nr-filter-image.h b/src/display/nr-filter-image.h index 05b7d65a8..f45f42265 100644 --- a/src/display/nr-filter-image.h +++ b/src/display/nr-filter-image.h @@ -44,7 +44,6 @@ private: SPDocument *document; gchar *feImageHref; Glib::RefPtr<Gdk::Pixbuf> image; - cairo_surface_t *image_surface; float feImageX, feImageY, feImageWidth, feImageHeight; unsigned int aspect_align, aspect_clip; bool broken_ref; diff --git a/src/extension/CMakeLists.txt b/src/extension/CMakeLists.txt index e3e15a19f..6310ceaea 100644 --- a/src/extension/CMakeLists.txt +++ b/src/extension/CMakeLists.txt @@ -45,6 +45,7 @@ set(extension_SRC internal/image-resolution.cpp internal/latex-pstricks.cpp internal/latex-pstricks-out.cpp + internal/metafile-print.cpp internal/odf.cpp internal/latex-text-renderer.cpp internal/pdf-input-cairo.cpp @@ -52,6 +53,7 @@ set(extension_SRC internal/javafx-out.cpp internal/svg.cpp internal/svgz.cpp + internal/text_reassemble.c internal/vsd-input.cpp internal/wmf-inout.cpp internal/wmf-print.cpp @@ -127,6 +129,7 @@ set(extension_SRC internal/latex-pstricks-out.h internal/latex-pstricks.h internal/latex-text-renderer.h + internal/metafile-print.h internal/odf.h internal/pdf-input-cairo.h internal/pdfinput/pdf-input.h @@ -135,6 +138,7 @@ set(extension_SRC internal/pov-out.h internal/svg.h internal/svgz.h + internal/text_reassemble.h internal/vsd-input.h internal/wmf-inout.h internal/wmf-print.h diff --git a/src/extension/internal/Makefile_insert b/src/extension/internal/Makefile_insert index 341973870..726bca28f 100644 --- a/src/extension/internal/Makefile_insert +++ b/src/extension/internal/Makefile_insert @@ -158,20 +158,12 @@ ink_common_sources += \ extension/internal/filter/filter.h \ extension/internal/text_reassemble.c \ extension/internal/text_reassemble.h \ - extension/internal/uemf.c \ - extension/internal/uemf.h \ - extension/internal/uemf_utf.c \ - extension/internal/uemf_utf.h \ - extension/internal/uemf_endian.c \ - extension/internal/uemf_endian.h \ - extension/internal/uwmf.c \ - extension/internal/uwmf.h \ - extension/internal/uwmf_endian.c \ - extension/internal/uwmf_endian.h \ extension/internal/emf-print.h \ extension/internal/emf-print.cpp \ extension/internal/emf-inout.h \ extension/internal/emf-inout.cpp \ + extension/internal/metafile-print.h \ + extension/internal/metafile-print.cpp \ extension/internal/wmf-print.h \ extension/internal/wmf-print.cpp \ extension/internal/wmf-inout.h \ diff --git a/src/extension/internal/cairo-ps-out.cpp b/src/extension/internal/cairo-ps-out.cpp index bfbdd8149..e06c9f30d 100644 --- a/src/extension/internal/cairo-ps-out.cpp +++ b/src/extension/internal/cairo-ps-out.cpp @@ -97,7 +97,7 @@ ps_print_document_to_file(SPDocument *doc, gchar const *filename, unsigned int l ctx->setPSLevel(level); ctx->setEPS(eps); ctx->setTextToPath(texttopath); - renderer->_omitText = omittext; + ctx->setOmitText(omittext); ctx->setFilterToBitmap(filtertobitmap); ctx->setBitmapResolution(resolution); diff --git a/src/extension/internal/cairo-render-context.cpp b/src/extension/internal/cairo-render-context.cpp index 0ea1fd591..a950fa177 100644 --- a/src/extension/internal/cairo-render-context.cpp +++ b/src/extension/internal/cairo-render-context.cpp @@ -111,6 +111,7 @@ CairoRenderContext::CairoRenderContext(CairoRenderer *parent) : _ps_level(1), _eps(false), _is_texttopath(FALSE), + _is_omittext(FALSE), _is_filtertobitmap(FALSE), _bitmapresolution(72), _stream(NULL), @@ -124,7 +125,8 @@ CairoRenderContext::CairoRenderContext(CairoRenderer *parent) : _state(NULL), _renderer(parent), _render_mode(RENDER_MODE_NORMAL), - _clip_mode(CLIP_MODE_MASK) + _clip_mode(CLIP_MODE_MASK), + _omittext_state(EMPTY) { font_table = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, font_data_free); } @@ -426,6 +428,16 @@ void CairoRenderContext::setTextToPath(bool texttopath) _is_texttopath = texttopath; } +void CairoRenderContext::setOmitText(bool omittext) +{ + _is_omittext = omittext; +} + +bool CairoRenderContext::getOmitText(void) +{ + return _is_omittext; +} + void CairoRenderContext::setFilterToBitmap(bool filtertobitmap) { _is_filtertobitmap = filtertobitmap; @@ -1294,7 +1306,7 @@ CairoRenderContext::_setStrokeStyle(SPStyle const *style, Geom::OptRect const &p { cairo_set_dash(_cr, style->stroke_dash.dash, style->stroke_dash.n_dash, style->stroke_dash.offset); } else { - cairo_set_dash(_cr, NULL, 0, 0.0); // disable dashing + cairo_set_dash(_cr, NULL, 0, 0.0); // disable dashing } cairo_set_line_width(_cr, style->stroke_width.computed); @@ -1302,40 +1314,65 @@ CairoRenderContext::_setStrokeStyle(SPStyle const *style, Geom::OptRect const &p // set line join type cairo_line_join_t join = CAIRO_LINE_JOIN_MITER; switch (style->stroke_linejoin.computed) { - case SP_STROKE_LINEJOIN_MITER: - join = CAIRO_LINE_JOIN_MITER; - break; - case SP_STROKE_LINEJOIN_ROUND: - join = CAIRO_LINE_JOIN_ROUND; - break; - case SP_STROKE_LINEJOIN_BEVEL: - join = CAIRO_LINE_JOIN_BEVEL; - break; + case SP_STROKE_LINEJOIN_MITER: + join = CAIRO_LINE_JOIN_MITER; + break; + case SP_STROKE_LINEJOIN_ROUND: + join = CAIRO_LINE_JOIN_ROUND; + break; + case SP_STROKE_LINEJOIN_BEVEL: + join = CAIRO_LINE_JOIN_BEVEL; + break; } cairo_set_line_join(_cr, join); // set line cap type cairo_line_cap_t cap = CAIRO_LINE_CAP_BUTT; switch (style->stroke_linecap.computed) { - case SP_STROKE_LINECAP_BUTT: - cap = CAIRO_LINE_CAP_BUTT; - break; - case SP_STROKE_LINECAP_ROUND: - cap = CAIRO_LINE_CAP_ROUND; - break; - case SP_STROKE_LINECAP_SQUARE: - cap = CAIRO_LINE_CAP_SQUARE; - break; + case SP_STROKE_LINECAP_BUTT: + cap = CAIRO_LINE_CAP_BUTT; + break; + case SP_STROKE_LINECAP_ROUND: + cap = CAIRO_LINE_CAP_ROUND; + break; + case SP_STROKE_LINECAP_SQUARE: + cap = CAIRO_LINE_CAP_SQUARE; + break; } cairo_set_line_cap(_cr, cap); cairo_set_miter_limit(_cr, MAX(1, style->stroke_miterlimit.value)); } +void +CairoRenderContext::_prepareRenderGraphic() +{ + // Only PDFLaTeX supports importing a single page of a graphics file, + // so only PDF backend gets interleaved text/graphics + if (_is_omittext && _target == CAIRO_SURFACE_TYPE_PDF) { + if (_omittext_state == NEW_PAGE_ON_GRAPHIC) + cairo_show_page(_cr); + _omittext_state = GRAPHIC_ON_TOP; + } +} + +void +CairoRenderContext::_prepareRenderText() +{ + // Only PDFLaTeX supports importing a single page of a graphics file, + // so only PDF backend gets interleaved text/graphics + if (_is_omittext && _target == CAIRO_SURFACE_TYPE_PDF) { + if (_omittext_state == GRAPHIC_ON_TOP) + _omittext_state = NEW_PAGE_ON_GRAPHIC; + } +} + bool CairoRenderContext::renderPathVector(Geom::PathVector const & pathv, SPStyle const *style, Geom::OptRect const &pbox) { g_assert( _is_valid ); + _prepareRenderGraphic(); + if (_render_mode == RENDER_MODE_CLIP) { if (_clip_mode == CLIP_MODE_PATH) { addClipPath(pathv, &style->fill_rule); @@ -1408,16 +1445,18 @@ bool CairoRenderContext::renderImage(GdkPixbuf *pb, return true; } + _prepareRenderGraphic(); + int w = gdk_pixbuf_get_width (pb); int h = gdk_pixbuf_get_height (pb); // TODO: reenable merge_opacity if useful float opacity = _state->opacity; - cairo_surface_t *image_surface = ink_cairo_surface_create_for_argb32_pixbuf(pb); + cairo_surface_t *image_surface = ink_cairo_surface_get_for_pixbuf(pb); if (cairo_surface_status(image_surface)) { TRACE(("Image surface creation failed:\n%s\n", cairo_status_to_string(cairo_surface_status(image_surface)))); - return false; + return false; } cairo_save(_cr); @@ -1436,7 +1475,6 @@ bool CairoRenderContext::renderImage(GdkPixbuf *pb, cairo_paint_with_alpha(_cr, opacity); cairo_restore(_cr); - cairo_surface_destroy(image_surface); return true; } @@ -1489,7 +1527,12 @@ unsigned int CairoRenderContext::_showGlyphs(cairo_t *cr, PangoFont * /*font*/, bool CairoRenderContext::renderGlyphtext(PangoFont *font, Geom::Affine const &font_matrix, std::vector<CairoGlyphInfo> const &glyphtext, SPStyle const *style) -{ +{ + + _prepareRenderText(); + if (_is_omittext) + return true; + // create a cairo_font_face from PangoFont double size = style->font_size.computed; /// \fixme why is this variable never used? gpointer fonthash = (gpointer)font; @@ -1632,9 +1675,9 @@ _write_callback(void *closure, const unsigned char *data, unsigned int length) written = fwrite (data, 1, length, file); if (written == length) - return CAIRO_STATUS_SUCCESS; + return CAIRO_STATUS_SUCCESS; else - return CAIRO_STATUS_WRITE_ERROR; + return CAIRO_STATUS_WRITE_ERROR; } #include "clear-n_.h" diff --git a/src/extension/internal/cairo-render-context.h b/src/extension/internal/cairo-render-context.h index 9ea4559a0..91e1cdf7d 100644 --- a/src/extension/internal/cairo-render-context.h +++ b/src/extension/internal/cairo-render-context.h @@ -94,6 +94,8 @@ public: void setPDFLevel(unsigned int level); void setTextToPath(bool texttopath); bool getTextToPath(void); + void setOmitText(bool omittext); + bool getOmitText(void); void setFilterToBitmap(bool filtertobitmap); bool getFilterToBitmap(void); void setBitmapResolution(int resolution); @@ -109,6 +111,9 @@ public: /** Saves the contents of the context to a PNG file. */ bool saveAsPng(const char *file_name); + /** On targets supporting multiple pages, sends subsequent rendering to a new page*/ + void newPage(void); + /* Render/clip mode setting/query */ void setRenderMode(CairoRenderMode mode); CairoRenderMode getRenderMode(void) const; @@ -150,6 +155,12 @@ protected: CairoRenderContext(CairoRenderer *renderer); virtual ~CairoRenderContext(void); + enum CairoOmitTextPageState { + EMPTY, + GRAPHIC_ON_TOP, + NEW_PAGE_ON_GRAPHIC + }; + float _width; float _height; unsigned short _dpi; @@ -157,6 +168,7 @@ protected: unsigned int _ps_level; bool _eps; bool _is_texttopath; + bool _is_omittext; bool _is_filtertobitmap; int _bitmapresolution; @@ -182,6 +194,8 @@ protected: CairoRenderMode _render_mode; CairoClipMode _clip_mode; + CairoOmitTextPageState _omittext_state; + cairo_pattern_t *_createPatternForPaintServer(SPPaintServer const *const paintserver, Geom::OptRect const &pbox, float alpha); cairo_pattern_t *_createPatternPainter(SPPaintServer const *const paintserver, Geom::OptRect const &pbox); @@ -196,6 +210,9 @@ protected: void _concatTransform(cairo_t *cr, double xx, double yx, double xy, double yy, double x0, double y0); void _concatTransform(cairo_t *cr, Geom::Affine const &transform); + void _prepareRenderGraphic(void); + void _prepareRenderText(void); + GHashTable *font_table; static void font_data_free(gpointer data); diff --git a/src/extension/internal/cairo-renderer-pdf-out.cpp b/src/extension/internal/cairo-renderer-pdf-out.cpp index 0a0c3f44a..b9125582a 100644 --- a/src/extension/internal/cairo-renderer-pdf-out.cpp +++ b/src/extension/internal/cairo-renderer-pdf-out.cpp @@ -94,7 +94,7 @@ pdf_render_document_to_file(SPDocument *doc, gchar const *filename, unsigned int CairoRenderContext *ctx = renderer->createContext(); ctx->setPDFLevel(level); ctx->setTextToPath(texttopath); - renderer->_omitText = omittext; + ctx->setOmitText(omittext); ctx->setFilterToBitmap(filtertobitmap); ctx->setBitmapResolution(resolution); diff --git a/src/extension/internal/cairo-renderer.cpp b/src/extension/internal/cairo-renderer.cpp index f7ab63c98..3463925b6 100644 --- a/src/extension/internal/cairo-renderer.cpp +++ b/src/extension/internal/cairo-renderer.cpp @@ -101,7 +101,6 @@ namespace Extension { namespace Internal { CairoRenderer::CairoRenderer(void) - : _omitText(false) {} CairoRenderer::~CairoRenderer(void) @@ -450,7 +449,7 @@ static void sp_asbitmap_render(SPItem *item, CairoRenderContext *ctx) Geom::OptRect bbox = item->desktopVisualBounds(); // no bbox, e.g. empty group - if (!bbox) { + if (!bbox) { return; } @@ -504,8 +503,13 @@ static void sp_asbitmap_render(SPItem *item, CairoRenderContext *ctx) if (pb) { TEST(gdk_pixbuf_save( pb, "bitmap.png", "png", NULL, NULL )); - // TODO this is stupid - we just converted to pixbuf format when generating the bitmap! - convert_pixbuf_normal_to_argb32(pb); + + /* TODO: find a way to avoid a duplicate conversion between + * Cairo and GdkPixbuf pixel formats here. + * Internally, generate_internal_bitmap creates a Cairo surface, + * but then converts it to pixbuf format. In turn, renderImage() + * below converts back to Cairo format. + */ ctx->renderImage(pb, t, item->style); g_object_unref(pb); pb = 0; @@ -578,11 +582,6 @@ CairoRenderer::setStateForItem(CairoRenderContext *ctx, SPItem const *item) // TODO change this to accept a const SPItem: void CairoRenderer::renderItem(CairoRenderContext *ctx, SPItem *item) { - if ( _omitText && (SP_IS_TEXT(item) || SP_IS_FLOWTEXT(item)) ) { - // skip text if _omitText is true - return; - } - ctx->pushState(); setStateForItem(ctx, item); diff --git a/src/extension/internal/cairo-renderer.h b/src/extension/internal/cairo-renderer.h index db3068fed..cfef6bdea 100644 --- a/src/extension/internal/cairo-renderer.h +++ b/src/extension/internal/cairo-renderer.h @@ -57,10 +57,6 @@ public: /** Traverses the object tree and invokes the render methods. */ void renderItem(CairoRenderContext *ctx, SPItem *item); - - /** If _omitText is true, no text will be output to the PDF document. - The PDF will be exactly the same as if the text was written to it and then erased. */ - bool _omitText; }; // FIXME: this should be a static method of CairoRenderer diff --git a/src/extension/internal/emf-inout.cpp b/src/extension/internal/emf-inout.cpp index 9dba3b77c..b185d3348 100644 --- a/src/extension/internal/emf-inout.cpp +++ b/src/extension/internal/emf-inout.cpp @@ -30,7 +30,8 @@ #include <stdio.h> #include <stdlib.h> #include <stdint.h> -#define EMF_DRIVER // work around for SPStyle issue +#include <libuemf/symbol_convert.h> + #include "sp-root.h" #include "sp-path.h" #include "style.h" @@ -44,7 +45,6 @@ #include "display/drawing-item.h" #include "clear-n_.h" #include "document.h" -#include "libunicode-convert/unicode-convert.h" #include "util/units.h" #include "emf-print.h" @@ -317,10 +317,6 @@ Emf::save(Inkscape::Extension::Output *mod, SPDocument *doc, gchar const *filena } -enum drawmode {DRAW_PAINT, DRAW_PATTERN, DRAW_IMAGE}; // apply to either fill or stroke - - - /* given the transformation matrix from worldTranform return the scale in the matrix part. Assumes that the matrix is not used to skew, invert, or make another distorting transformation. */ double Emf::current_scale(PEMF_CALLBACK_DATA d){ diff --git a/src/extension/internal/emf-inout.h b/src/extension/internal/emf-inout.h index b723f067f..787a2fdb3 100644 --- a/src/extension/internal/emf-inout.h +++ b/src/extension/internal/emf-inout.h @@ -13,9 +13,9 @@ #define PNG_SKIP_SETJMP_CHECK // else any further png.h include blows up in the compiler #include <png.h> +#include <libuemf/uemf.h> #include "extension/implementation/implementation.h" #include "style.h" -#include "uemf.h" #include "text_reassemble.h" namespace Inkscape { diff --git a/src/extension/internal/emf-print.cpp b/src/extension/internal/emf-print.cpp index 33834bea8..826a52ade 100644 --- a/src/extension/internal/emf-print.cpp +++ b/src/extension/internal/emf-print.cpp @@ -1,7 +1,7 @@ /** @file * @brief Enhanced Metafile printing - */ -/* Authors: + *//* + * Authors: * Ulf Erikson <ulferikson@users.sf.net> * Jon A. Cruz <jon@joncruz.org> * Abhishek Sharma @@ -10,8 +10,7 @@ * Copyright (C) 2006-2009 Authors * * Released under GNU GPL, read the file 'COPYING' for more information - */ -/* + * * References: * - How to Create & Play Enhanced Metafiles in Win32 * http://support.microsoft.com/kb/q145999/ @@ -23,20 +22,19 @@ * http://msdn.microsoft.com/library/en-us/gdi/metafile_5hkj.asp */ - #ifdef HAVE_CONFIG_H # include "config.h" #endif +#include <string.h> +#include <glibmm/miscutils.h> +#include <libuemf/symbol_convert.h> +#include <2geom/sbasis-to-bezier.h> +#include <2geom/path.h> +#include <2geom/pathvector.h> +#include <2geom/rect.h> +#include <2geom/curves.h> -#include "2geom/sbasis-to-bezier.h" -#include "2geom/svg-elliptical-arc.h" - -#include "2geom/path.h" -#include "2geom/pathvector.h" -#include "2geom/rect.h" -#include "2geom/bezier-curve.h" -#include "2geom/hvlinesegment.h" #include "helper/geom.h" #include "helper/geom-curves.h" #include "sp-item.h" @@ -63,12 +61,6 @@ #include "emf-print.h" -#include <string.h> -extern "C" { -#include "libunicode-convert/unicode-convert.h" -} - - namespace Inkscape { namespace Extension { namespace Internal { @@ -76,219 +68,56 @@ namespace Internal { #define PXPERMETER 2835 -enum drawmode {DRAW_PAINT, DRAW_PATTERN, DRAW_IMAGE, DRAW_LINEAR_GRADIENT, DRAW_RADIAL_GRADIENT}; - -struct FFNEXUS { - char *fontname; //Font name - FFNEXUS *next; //link to next nexus, NULL if this is the last - double f1; //Vertical (rotating) offset factor (* font height) - double f2; //Vertical (nonrotating) offset factor (* font height) - double f3; //Horizontal (nonrotating) offset factor (* font height) -}; - -struct GRADVALUES{ - Geom::Point p1; // center or start - Geom::Point p2; // xhandle or end - Geom::Point p3; // yhandle or unused - double r; // radius or unused - void *grad; // to access the stops information - int mode; // DRAW_LINEAR_GRADIENT or DRAW_RADIAL_GRADIENT, if GRADVALUES is valid, else any value - U_COLORREF bgc; // document background color, this is as good a place as any to keep it - float rgb[3]; // also background color, but as 0-1 float. -}; - /* globals */ static double PX2WORLD = 20.0f; static U_XFORM worldTransform; static bool FixPPTCharPos, FixPPTDashLine, FixPPTGrad2Polys, FixPPTPatternAsHatch, FixImageRot; -static FFNEXUS *emf_short_fflist = NULL; //only those fonts so far encountered. This is SHARED with wmf-print.cpp -static FFNEXUS *emf_long_fflist = NULL; //all the fonts described in ...\share\extensions\fontfix.conf static EMFTRACK *et = NULL; static EMFHANDLES *eht = NULL; -static GRADVALUES gv; - -void PrintEmf::read_system_fflist(void){ //this is not called by any other source files - FFNEXUS *temp=NULL; - FFNEXUS *ptr=NULL; - std::fstream fffile; - std::string instr; - char fontname[128]; - double f1,f2,f3; - std::string path_to_ffconf; - - if(emf_long_fflist)return; - char *oldlocale = g_strdup(setlocale(LC_NUMERIC, NULL)); - setlocale(LC_NUMERIC, "C"); - - path_to_ffconf=INKSCAPE_EXTENSIONDIR; -#ifdef WIN32 - path_to_ffconf.append("\\fontfix.conf"); //Windows path syntax -#else - path_to_ffconf.append("/fontfix.conf"); //Unix/linx path syntax -#endif - //open the input - fffile.open(path_to_ffconf.c_str(), std::ios::in); - if(!fffile.is_open()){ - g_error("Unable to open file: %s\n", path_to_ffconf.c_str()); - } - while (std::getline(fffile,instr)){ - if(instr[0]=='#')continue; - // not a comment, get the 4 values from the line - int elements=sscanf(instr.c_str(),"%lf %lf %lf %127[^\n]",&f1,&f2,&f3, &fontname[0]); - if(elements!=4){ - g_error("Expected \"f1 f2 f3 Fontname\" but did not find it in file: %s\n", path_to_ffconf.c_str()); - } - temp=(FFNEXUS *) calloc(1,sizeof(FFNEXUS)); //This will never be freed - temp->f1=f1; - temp->f2=f2; - temp->f3=f3; - temp->fontname=strdup(fontname); //This will never be freed - temp->next=NULL; //just to be explicit, it is already 0 - if(ptr){ - ptr->next=temp; - ptr=temp; - } - else { - emf_long_fflist=ptr=temp; - } - } - fffile.close(); - - setlocale(LC_NUMERIC, oldlocale); - g_free(oldlocale); -} - -/* Looks for the fontname in the long list. If it does not find it, it adds the default values -to the short list with this fontname. If it does find it, then it adds the specified values. -*/ -void PrintEmf::search_long_fflist(const char *fontname, double *f1, double *f2, double *f3){ //this is not called by any other source files - FFNEXUS *ptr=NULL; - FFNEXUS *tmp=emf_long_fflist; - if(!emf_long_fflist){ - g_error("Programming error search_long_fflist called before read_system_fflist\n"); - } - ptr=emf_long_fflist; - while(ptr){ - if(!strcmp(ptr->fontname,fontname)){ tmp=ptr; break; } - ptr=ptr->next; - } - //tmp points at either the found name, or the default, the first entry in long_fflist - if(!emf_short_fflist){ - ptr=emf_short_fflist=(FFNEXUS *) malloc(sizeof(FFNEXUS)); - } - else { - ptr=emf_short_fflist; - while(ptr->next){ ptr=ptr->next; } - ptr->next=(FFNEXUS *) malloc(sizeof(FFNEXUS)); - ptr=ptr->next; - } - ptr->fontname=strdup(tmp->fontname); - *f1 = ptr->f1 = tmp->f1; - *f2 = ptr->f2 = tmp->f2; - *f3 = ptr->f3 = tmp->f3; - ptr->next=NULL; -} -/* Looks for the fontname in the short list. If it does not find it, it looks in the long_fflist. -Either way it returns the f1, f2, f3 parameters for the font, even if these are for the default. -*/ -void PrintEmf::search_short_fflist(const char *fontname, double *f1, double *f2, double *f3){ //this is not called by any other source files - FFNEXUS *ptr=NULL; - static FFNEXUS *last=NULL; - - if(!emf_long_fflist){ - g_error("Programming error search_short_fflist called before read_system_fflist\n"); - } - // This speeds things up a lot - if the same font is called twice in a row, pull it out immediately - if(last && !strcmp(last->fontname,fontname)){ ptr=last; } - else { ptr=emf_short_fflist; } // short_fflist may still be NULL - while(ptr){ - if(!strcmp(ptr->fontname,fontname)){ *f1=ptr->f1; *f2=ptr->f2; *f3=ptr->f3; last=ptr; return; } - ptr=ptr->next; - } - //reach this point only if there is no match - search_long_fflist(fontname, f1, f2, f3); -} - -void PrintEmf::smuggle_adxkyrtl_out(const char *string, uint32_t **adx, double *ky, int *rtl, int *ndx, float scale){ +void PrintEmf::smuggle_adxkyrtl_out(const char *string, uint32_t **adx, double *ky, int *rtl, int *ndx, float scale) +{ float fdx; int i; uint32_t *ladx; - const char *cptr=&string[strlen(string)+1]; // this works because of the first fake terminator + const char *cptr = &string[strlen(string) + 1]; // this works because of the first fake terminator *adx = NULL; *ky = 0.0; // set a default value - sscanf(cptr,"%7d",ndx); - if(!*ndx)return; // this could happen with an empty string + sscanf(cptr, "%7d", ndx); + if (!*ndx) { + return; // this could happen with an empty string + } cptr += 7; - ladx = (uint32_t *) malloc(*ndx * sizeof(uint32_t) ); - if(!ladx)g_message("Out of memory"); - *adx=ladx; - for(i=0; i<*ndx; i++,cptr+=7, ladx++){ - sscanf(cptr,"%7f",&fdx); - *ladx=(uint32_t) round(fdx * scale); + ladx = (uint32_t *) malloc(*ndx * sizeof(uint32_t)); + if (!ladx) { + g_message("Out of memory"); + } + *adx = ladx; + for (i = 0; i < *ndx; i++, cptr += 7, ladx++) { + sscanf(cptr, "%7f", &fdx); + *ladx = (uint32_t) round(fdx * scale); } cptr++; // skip 2nd fake terminator - sscanf(cptr,"%7f",&fdx); - *ky=fdx; + sscanf(cptr, "%7f", &fdx); + *ky = fdx; cptr += 7; // advance over ky and its space - sscanf(cptr,"%07d",rtl); -} - -/* convert an 0RGB color to EMF U_COLORREF. -inverse of sethexcolor() in emf-inout.cpp -*/ -U_COLORREF PrintEmf::gethexcolor(uint32_t color){ - U_COLORREF out; - out = U_RGB( - (color >> 16) & 0xFF, - (color >> 8) & 0xFF, - (color >> 0) & 0xFF - ); - return(out); -} - - -/* Translate inkscape weights to EMF weights. -*/ -uint32_t PrintEmf::transweight(const unsigned int inkweight){ - if(inkweight == SP_CSS_FONT_WEIGHT_400)return(U_FW_NORMAL); - if(inkweight == SP_CSS_FONT_WEIGHT_100)return(U_FW_THIN); - if(inkweight == SP_CSS_FONT_WEIGHT_200)return(U_FW_EXTRALIGHT); - if(inkweight == SP_CSS_FONT_WEIGHT_300)return(U_FW_LIGHT); - // 400 is tested first, as it is the most common case - if(inkweight == SP_CSS_FONT_WEIGHT_500)return(U_FW_MEDIUM); - if(inkweight == SP_CSS_FONT_WEIGHT_600)return(U_FW_SEMIBOLD); - if(inkweight == SP_CSS_FONT_WEIGHT_700)return(U_FW_BOLD); - if(inkweight == SP_CSS_FONT_WEIGHT_800)return(U_FW_EXTRABOLD); - if(inkweight == SP_CSS_FONT_WEIGHT_900)return(U_FW_HEAVY); - return(U_FW_NORMAL); + sscanf(cptr, "%07d", rtl); } -PrintEmf::PrintEmf (void) +PrintEmf::PrintEmf() { // all of the class variables are initialized elsewhere, many in PrintEmf::Begin, } -PrintEmf::~PrintEmf (void) -{ - - /* restore default signal handling for SIGPIPE */ -#if !defined(_WIN32) && !defined(__WIN32__) - (void) signal(SIGPIPE, SIG_DFL); -#endif - return; -} - - -unsigned int PrintEmf::setup (Inkscape::Extension::Print * /*mod*/) +unsigned int PrintEmf::setup(Inkscape::Extension::Print * /*mod*/) { return TRUE; } -unsigned int PrintEmf::begin (Inkscape::Extension::Print *mod, SPDocument *doc) +unsigned int PrintEmf::begin(Inkscape::Extension::Print *mod, SPDocument *doc) { U_SIZEL szlDev, szlMm; U_RECTL rclBounds, rclFrame; @@ -316,16 +145,18 @@ unsigned int PrintEmf::begin (Inkscape::Extension::Print *mod, SPDocument *doc) htextalignment = U_TA_BASELINE | U_TA_LEFT; use_stroke = use_fill = simple_shape = usebk = false; - Inkscape::XML::Node *nv = sp_repr_lookup_name (doc->rroot, "sodipodi:namedview"); - if(nv){ + Inkscape::XML::Node *nv = sp_repr_lookup_name(doc->rroot, "sodipodi:namedview"); + if (nv) { const char *p1 = nv->attribute("pagecolor"); char *p2; - uint32_t lc = strtoul( &p1[1], &p2, 16 ); // it looks like "#ABC123" - if(*p2)lc=0; - gv.bgc = gethexcolor(lc); - gv.rgb[0] = (float) U_RGBAGetR(gv.bgc)/255.0; - gv.rgb[1] = (float) U_RGBAGetG(gv.bgc)/255.0; - gv.rgb[2] = (float) U_RGBAGetB(gv.bgc)/255.0; + uint32_t lc = strtoul(&p1[1], &p2, 16); // it looks like "#ABC123" + if (*p2) { + lc = 0; + } + gv.bgc = _gethexcolor(lc); + gv.rgb[0] = (float) U_RGBAGetR(gv.bgc) / 255.0; + gv.rgb[1] = (float) U_RGBAGetG(gv.bgc) / 255.0; + gv.rgb[2] = (float) U_RGBAGetB(gv.bgc) / 255.0; } bool pageBoundingBox; @@ -335,9 +166,11 @@ unsigned int PrintEmf::begin (Inkscape::Extension::Print *mod, SPDocument *doc) if (pageBoundingBox) { d = Geom::Rect::from_xywh(0, 0, _width, _height); } else { - SPItem* doc_item = doc->getRoot(); + SPItem *doc_item = doc->getRoot(); Geom::OptRect bbox = doc_item->desktopVisualBounds(); - if (bbox) d = *bbox; + if (bbox) { + d = *bbox; + } } d *= Geom::Scale(Inkscape::Util::Quantity::convert(1, "px", "in")); @@ -346,71 +179,72 @@ unsigned int PrintEmf::begin (Inkscape::Extension::Print *mod, SPDocument *doc) float dwInchesY = d.height(); // dwInchesX x dwInchesY in micrometer units, dpi=90 -> 3543.3 dpm - (void) drawing_size((int) ceil(dwInchesX*25.4), (int) ceil(dwInchesY*25.4), 3.543307, &rclBounds, &rclFrame); + (void) drawing_size((int) ceil(dwInchesX * 25.4), (int) ceil(dwInchesY * 25.4), 3.543307, &rclBounds, &rclFrame); // set up the reference device as 100 X A4 horizontal, (1200 dpi/25.4 -> dpmm). Extra digits maintain dpi better in EMF int MMX = 21600; int MMY = 27900; - (void) device_size(MMX, MMY, 1200.0/25.4, &szlDev, &szlMm); + (void) device_size(MMX, MMY, 1200.0 / 25.4, &szlDev, &szlMm); int PixelsX = szlDev.cx; int PixelsY = szlDev.cy; - // set up the description: (version string)0(file)00 + // set up the description: (version string)0(file)00 char buff[1024]; - memset(buff,0, sizeof(buff)); + memset(buff, 0, sizeof(buff)); char *p1 = strrchr(ansi_uri, '\\'); char *p2 = strrchr(ansi_uri, '/'); char *p = MAX(p1, p2); - if (p) + if (p) { p++; - else + } else { p = ansi_uri; - snprintf(buff, sizeof(buff)-1, "Inkscape %s (%s)\1%s\1", Inkscape::version_string, __DATE__,p); - uint16_t *Description = U_Utf8ToUtf16le(buff, 0, NULL); + } + snprintf(buff, sizeof(buff) - 1, "Inkscape %s (%s)\1%s\1", Inkscape::version_string, __DATE__, p); + uint16_t *Description = U_Utf8ToUtf16le(buff, 0, NULL); int cbDesc = 2 + wchar16len(Description); // also count the final terminator (void) U_Utf16leEdit(Description, '\1', '\0'); // swap the temporary \1 characters for nulls - + // construct the EMRHEADER record and append it to the EMF in memory - rec = U_EMRHEADER_set( rclBounds, rclFrame, NULL, cbDesc, Description, szlDev, szlMm, 0); + rec = U_EMRHEADER_set(rclBounds, rclFrame, NULL, cbDesc, Description, szlDev, szlMm, 0); free(Description); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::begin at EMRHEADER"); } // Simplest mapping mode, supply all coordinates in pixels rec = U_EMRSETMAPMODE_set(U_MM_TEXT); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::begin at EMRSETMAPMODE"); } - + // Correct for dpi in EMF (1200) vs dpi in Inkscape (always 90). // Also correct for the scaling in PX2WORLD, which is set to 20. - worldTransform.eM11 = 1200./(90.0*PX2WORLD); + worldTransform.eM11 = 1200. / (90.0 * PX2WORLD); worldTransform.eM12 = 0.0; worldTransform.eM21 = 0.0; - worldTransform.eM22 = 1200./(90.0*PX2WORLD); + worldTransform.eM22 = 1200. / (90.0 * PX2WORLD); worldTransform.eDx = 0; worldTransform.eDy = 0; rec = U_EMRMODIFYWORLDTRANSFORM_set(worldTransform, U_MWT_LEFTMULTIPLY); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::begin at EMRMODIFYWORLDTRANSFORM"); } if (1) { - snprintf(buff, sizeof(buff)-1, "Screen=%dx%dpx, %dx%dmm", PixelsX, PixelsY, MMX, MMY); + snprintf(buff, sizeof(buff) - 1, "Screen=%dx%dpx, %dx%dmm", PixelsX, PixelsY, MMX, MMY); rec = textcomment_set(buff); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::begin at textcomment_set 1"); } - snprintf(buff, sizeof(buff)-1, "Drawing=%.1lfx%.1lfpx, %.1lfx%.1lfmm", _width, _height, dwInchesX * Inkscape::Util::Quantity::convert(1, "in", "mm"), dwInchesY * Inkscape::Util::Quantity::convert(1, "in", "mm")); + snprintf(buff, sizeof(buff) - 1, "Drawing=%.1lfx%.1lfpx, %.1lfx%.1lfmm", _width, _height, dwInchesX * Inkscape::Util::Quantity::convert(1, "in", "mm"), dwInchesY * Inkscape::Util::Quantity::convert(1, "in", "mm")); rec = textcomment_set(buff); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::begin at textcomment_set 1"); } } @@ -418,13 +252,13 @@ unsigned int PrintEmf::begin (Inkscape::Extension::Print *mod, SPDocument *doc) /* set some parameters, else the program that reads the EMF may default to other values */ rec = U_EMRSETBKMODE_set(U_TRANSPARENT); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::begin at U_EMRSETBKMODE_set"); } - hpolyfillmode=U_WINDING; + hpolyfillmode = U_WINDING; rec = U_EMRSETPOLYFILLMODE_set(U_WINDING); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::begin at U_EMRSETPOLYFILLMODE_set"); } @@ -434,37 +268,39 @@ unsigned int PrintEmf::begin (Inkscape::Extension::Print *mod, SPDocument *doc) // - for this reason, the EMF text alignment must always be TA_BASELINE|TA_LEFT. htextalignment = U_TA_BASELINE | U_TA_LEFT; rec = U_EMRSETTEXTALIGN_set(U_TA_BASELINE | U_TA_LEFT); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::begin at U_EMRSETTEXTALIGN_set"); } - htextcolor_rgb[0] = htextcolor_rgb[1] = htextcolor_rgb[2] = 0.0; - rec = U_EMRSETTEXTCOLOR_set(U_RGB(0,0,0)); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + htextcolor_rgb[0] = htextcolor_rgb[1] = htextcolor_rgb[2] = 0.0; + rec = U_EMRSETTEXTCOLOR_set(U_RGB(0, 0, 0)); + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::begin at U_EMRSETTEXTCOLOR_set"); } rec = U_EMRSETROP2_set(U_R2_COPYPEN); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::begin at U_EMRSETROP2_set"); } - + /* miterlimit is set with eah pen, so no need to check for it changes as in WMF */ return 0; } -unsigned int PrintEmf::finish (Inkscape::Extension::Print * /*mod*/) +unsigned int PrintEmf::finish(Inkscape::Extension::Print * /*mod*/) { char *rec; - if (!et) return 0; + if (!et) { + return 0; + } + - // earlier versions had flush of fill here, but it never executed and was removed - rec = U_EMREOF_set(0,NULL,et); // generate the EOF record - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + rec = U_EMREOF_set(0, NULL, et); // generate the EOF record + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::finish"); } (void) emf_finish(et, eht); // Finalize and write out the EMF @@ -475,176 +311,19 @@ unsigned int PrintEmf::finish (Inkscape::Extension::Print * /*mod*/) } -unsigned int PrintEmf::comment ( +unsigned int PrintEmf::comment( Inkscape::Extension::Print * /*module*/, const char * /*comment*/) { - if (!et) return 0; + if (!et) { + return 0; + } // earlier versions had flush of fill here, but it never executed and was removed return 0; } -// Extract hatchType, hatchColor from a name like -// EMFhatch<hatchType>_<hatchColor> -// Where the first one is a number and the second a color in hex. -// hatchType and hatchColor have been set with defaults before this is called. -// -void PrintEmf::hatch_classify(char *name, int *hatchType, U_COLORREF *hatchColor, U_COLORREF *bkColor){ - int val; - uint32_t hcolor=0; - uint32_t bcolor=0; - - // name should be EMFhatch or WMFhatch but *MFhatch will be accepted - if(0!=strncmp(&name[1],"MFhatch",7)){ return; } // not anything we can parse - name += 8; // EMFhatch already detected - val = 0; - while(*name && isdigit(*name)){ - val = 10*val + *name - '0'; - name++; - } - *hatchType = val; - if(*name != '_' || val > U_HS_DITHEREDBKCLR){ // wrong syntax, cannot classify - *hatchType = -1; - } - else { - name++; - if(2 != sscanf(name,"%X_%X", &hcolor, &bcolor)){ // not a pattern with background - if(1 != sscanf(name,"%X", &hcolor)){ *hatchType = -1; } // not a pattern, cannot classify - *hatchColor = gethexcolor(hcolor); - } - else { - *hatchColor = gethexcolor(hcolor); - *bkColor = gethexcolor(bcolor); - usebk = true; - } - } - /* Everything > U_HS_SOLIDCLR is solid, just specify the color in the brush rather than messing around with background or textcolor */ - if(*hatchType > U_HS_SOLIDCLR)*hatchType = U_HS_SOLIDCLR; -} - -// -// Recurse down from a brush pattern, try to figure out what it is. -// If an image is found set a pointer to the epixbuf, else set that to NULL -// If a pattern is found with a name like [EW]MFhatch3_3F7FFF return hatchType=3, hatchColor=3F7FFF (as a uint32_t), -// otherwise hatchType is set to -1 and hatchColor is not defined. -// - -void PrintEmf::brush_classify(SPObject *parent, int depth, GdkPixbuf **epixbuf, int *hatchType, U_COLORREF *hatchColor, U_COLORREF *bkColor){ - if(depth==0){ - *epixbuf = NULL; - *hatchType = -1; - *hatchColor = U_RGB(0,0,0); - *bkColor = U_RGB(255,255,255); - } - depth++; - // first look along the pattern chain, if there is one - if(SP_IS_PATTERN(parent)){ - for (SPPattern *pat_i = SP_PATTERN(parent); pat_i != NULL; pat_i = pat_i->ref ? pat_i->ref->getObject() : NULL) { - if(SP_IS_IMAGE(pat_i)){ - *epixbuf = ((SPImage *)pat_i)->pixbuf; - return; - } - char temp[32]; // large enough - temp[31]='\0'; - strncpy(temp,pat_i->getAttribute("id"),31); // Some names may be longer than [EW]MFhatch#_###### - hatch_classify(temp, hatchType, hatchColor, bkColor); - if(*hatchType != -1)return; - - // still looking? Look at this pattern's children, if there are any - SPObject *child = pat_i->firstChild(); - while(child && !(*epixbuf) && (*hatchType == -1)){ - brush_classify(child, depth, epixbuf, hatchType, hatchColor, bkColor); - child = child->getNext(); - } - } - } - else if(SP_IS_IMAGE(parent)){ - *epixbuf = ((SPImage *)parent)->pixbuf; - return; - } - else { // some inkscape rearrangements pass through nodes between pattern and image which are not classified as either. - SPObject *child = parent->firstChild(); - while(child && !(*epixbuf) && (*hatchType == -1)){ - brush_classify(child, depth, epixbuf, hatchType, hatchColor, bkColor); - child = child->getNext(); - } - } -} - -//swap R/B in 4 byte pixel -void PrintEmf::swapRBinRGBA(char *px, int pixels){ - char tmp; - for(int i=0;i<pixels*4;px+=4,i+=4){ - tmp=px[2]; - px[2]=px[0]; - px[0]=tmp; - } -} - -/* opacity weighting of two colors as float. v1 is the color, op is its opacity, v2 is the background color */ -inline float opweight(float v1, float v2, float op){ - return v1*op + v2*(1.0-op); -} - -U_COLORREF PrintEmf::avg_stop_color(SPGradient *gr){ - U_COLORREF cr; - int last = gr->vector.stops.size() -1; - if(last>=1){ - float rgbs[3]; - float rgbe[3]; - float ops,ope; - - ops = gr->vector.stops[0 ].opacity; - ope = gr->vector.stops[last].opacity; - sp_color_get_rgb_floatv(&gr->vector.stops[0 ].color, rgbs); - sp_color_get_rgb_floatv(&gr->vector.stops[last].color, rgbe); - - /* Replace opacity at start & stop with that fraction background color, then average those two for final color. */ - cr = U_RGB( - 255*(( opweight(rgbs[0],gv.rgb[0],ops) + opweight(rgbe[0],gv.rgb[0],ope) )/2.0), - 255*(( opweight(rgbs[1],gv.rgb[1],ops) + opweight(rgbe[1],gv.rgb[1],ope) )/2.0), - 255*(( opweight(rgbs[2],gv.rgb[2],ops) + opweight(rgbe[2],gv.rgb[2],ope) )/2.0) - ); - } - else { - cr = U_RGB(0, 0, 0); // The default fill - } - return cr; -} - -int PrintEmf::hold_gradient(void *gr, int mode){ - gv.mode = mode; - gv.grad = gr; - if(mode==DRAW_RADIAL_GRADIENT){ - SPRadialGradient *rg = (SPRadialGradient *) gr; - gv.r = rg->r.computed; // radius, but of what??? - gv.p1 = Geom::Point(rg->cx.computed, rg->cy.computed); // center - gv.p2 = Geom::Point(gv.r, 0) + gv.p1; // xhandle - gv.p3 = Geom::Point(0, -gv.r) + gv.p1; // yhandle - if (rg->gradientTransform_set) { - gv.p1 = gv.p1 * rg->gradientTransform; - gv.p2 = gv.p2 * rg->gradientTransform; - gv.p3 = gv.p3 * rg->gradientTransform; - } - } - else if(mode==DRAW_LINEAR_GRADIENT){ - SPLinearGradient *lg = (SPLinearGradient *) gr; - gv.r = 0; // unused - gv.p1 = Geom::Point (lg->x1.computed, lg->y1.computed); // start - gv.p2 = Geom::Point (lg->x2.computed, lg->y2.computed); // end - gv.p3 = Geom::Point (0, 0); // unused - if (lg->gradientTransform_set) { - gv.p1 = gv.p1 * lg->gradientTransform; - gv.p2 = gv.p2 * lg->gradientTransform; - } - } - else { - g_error("Fatal programming error, hold_gradient() in emf-print.cpp called with invalid draw mode"); - } - return 1; -} // fcolor is defined when gradients are being expanded, it is the color of one stripe or ring. int PrintEmf::create_brush(SPStyle const *style, PU_COLORREF fcolor) @@ -653,7 +332,7 @@ int PrintEmf::create_brush(SPStyle const *style, PU_COLORREF fcolor) char *rec; U_LOGBRUSH lb; uint32_t brush, fmode; - enum drawmode fill_mode; + MFDrawMode fill_mode; GdkPixbuf *pixbuf; uint32_t brushStyle; int hatchType; @@ -662,7 +341,9 @@ int PrintEmf::create_brush(SPStyle const *style, PU_COLORREF fcolor) uint32_t width = 0; // quiets a harmless compiler warning, initialization not otherwise required. uint32_t height = 0; - if (!et) return 0; + if (!et) { + return 0; + } // set a default fill in case we can't figure out a better way to do it fmode = U_ALTERNATE; @@ -670,138 +351,144 @@ int PrintEmf::create_brush(SPStyle const *style, PU_COLORREF fcolor) brushStyle = U_BS_SOLID; hatchType = U_HS_SOLIDCLR; bkColor = U_RGB(0, 0, 0); - if(fcolor){ hatchColor = *fcolor; } - else { hatchColor = U_RGB(0, 0, 0); } + if (fcolor) { + hatchColor = *fcolor; + } else { + hatchColor = U_RGB(0, 0, 0); + } if (!fcolor && style) { - if(style->fill.isColor()){ + if (style->fill.isColor()) { fill_mode = DRAW_PAINT; float opacity = SP_SCALE24_TO_FLOAT(style->fill_opacity.value); - if (opacity <= 0.0)opacity = 0.0; // basically the same as no fill + if (opacity <= 0.0) { + opacity = 0.0; // basically the same as no fill + } - sp_color_get_rgb_floatv( &style->fill.value.color, rgb ); - hatchColor = U_RGB(255*rgb[0], 255*rgb[1], 255*rgb[2]); + sp_color_get_rgb_floatv(&style->fill.value.color, rgb); + hatchColor = U_RGB(255 * rgb[0], 255 * rgb[1], 255 * rgb[2]); fmode = style->fill_rule.computed == 0 ? U_WINDING : (style->fill_rule.computed == 2 ? U_ALTERNATE : U_ALTERNATE); - } - else if(SP_IS_PATTERN(SP_STYLE_FILL_SERVER(style))){ // must be paint-server + } else if (SP_IS_PATTERN(SP_STYLE_FILL_SERVER(style))) { // must be paint-server SPPaintServer *paintserver = style->fill.value.href->getObject(); - SPPattern *pat = SP_PATTERN (paintserver); + SPPattern *pat = SP_PATTERN(paintserver); double dwidth = pattern_width(pat); double dheight = pattern_height(pat); width = dwidth; height = dheight; - brush_classify(pat,0,&pixbuf,&hatchType,&hatchColor,&bkColor); - if(pixbuf){ fill_mode = DRAW_IMAGE; } - else { // pattern + brush_classify(pat, 0, &pixbuf, &hatchType, &hatchColor, &bkColor); + if (pixbuf) { + fill_mode = DRAW_IMAGE; + } else { // pattern fill_mode = DRAW_PATTERN; - if(hatchType == -1){ // Not a standard hatch, so force it to something + if (hatchType == -1) { // Not a standard hatch, so force it to something hatchType = U_HS_CROSS; - hatchColor = U_RGB(0xFF,0xC3,0xC3); + hatchColor = U_RGB(0xFF, 0xC3, 0xC3); } } - if(FixPPTPatternAsHatch){ - if(hatchType == -1){ // image or unclassified + if (FixPPTPatternAsHatch) { + if (hatchType == -1) { // image or unclassified fill_mode = DRAW_PATTERN; hatchType = U_HS_DIAGCROSS; - hatchColor = U_RGB(0xFF,0xC3,0xC3); - } + hatchColor = U_RGB(0xFF, 0xC3, 0xC3); + } } brushStyle = U_BS_HATCHED; - } - else if(SP_IS_GRADIENT(SP_STYLE_FILL_SERVER(style))){ // must be a gradient + } else if (SP_IS_GRADIENT(SP_STYLE_FILL_SERVER(style))) { // must be a gradient // currently we do not do anything with gradients, the code below just sets the color to the average of the stops SPPaintServer *paintserver = style->fill.value.href->getObject(); SPLinearGradient *lg = NULL; SPRadialGradient *rg = NULL; - if (SP_IS_LINEARGRADIENT (paintserver)) { + if (SP_IS_LINEARGRADIENT(paintserver)) { lg = SP_LINEARGRADIENT(paintserver); SP_GRADIENT(lg)->ensureVector(); // when exporting from commandline, vector is not built fill_mode = DRAW_LINEAR_GRADIENT; - } - else if (SP_IS_RADIALGRADIENT (paintserver)) { + } else if (SP_IS_RADIALGRADIENT(paintserver)) { rg = SP_RADIALGRADIENT(paintserver); SP_GRADIENT(rg)->ensureVector(); // when exporting from commandline, vector is not built fill_mode = DRAW_RADIAL_GRADIENT; - } - else { + } else { // default fill } - if(rg){ - if(FixPPTGrad2Polys){ return hold_gradient(rg, fill_mode); } - else { hatchColor = avg_stop_color(rg); } - } - else if(lg){ - if(FixPPTGrad2Polys){ return hold_gradient(lg, fill_mode); } - else { hatchColor = avg_stop_color(lg); } + if (rg) { + if (FixPPTGrad2Polys) { + return hold_gradient(rg, fill_mode); + } else { + hatchColor = avg_stop_color(rg); + } + } else if (lg) { + if (FixPPTGrad2Polys) { + return hold_gradient(lg, fill_mode); + } else { + hatchColor = avg_stop_color(lg); + } } } - } - else { // if (!style) - // default fill + } else { // if (!style) + // default fill } lb = logbrush_set(brushStyle, hatchColor, hatchType); - switch(fill_mode){ - case DRAW_LINEAR_GRADIENT: // fill with average color unless gradients are converted to slices - case DRAW_RADIAL_GRADIENT: // ditto - case DRAW_PAINT: - case DRAW_PATTERN: - // SVG text has no background attribute, so OPAQUE mode ALWAYS cancels after the next draw, otherwise it would mess up future text output. - if(usebk){ - rec = U_EMRSETBKCOLOR_set(bkColor); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ - g_error("Fatal programming error in PrintEmf::create_brush at U_EMRSETBKCOLOR_set"); - } - rec = U_EMRSETBKMODE_set(U_OPAQUE); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ - g_error("Fatal programming error in PrintEmf::create_brush at U_EMRSETBKMODE_set"); - } + switch (fill_mode) { + case DRAW_LINEAR_GRADIENT: // fill with average color unless gradients are converted to slices + case DRAW_RADIAL_GRADIENT: // ditto + case DRAW_PAINT: + case DRAW_PATTERN: + // SVG text has no background attribute, so OPAQUE mode ALWAYS cancels after the next draw, otherwise it would mess up future text output. + if (usebk) { + rec = U_EMRSETBKCOLOR_set(bkColor); + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { + g_error("Fatal programming error in PrintEmf::create_brush at U_EMRSETBKCOLOR_set"); } - rec = createbrushindirect_set(&brush, eht, lb); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ - g_error("Fatal programming error in PrintEmf::create_brush at createbrushindirect_set"); - } - break; - case DRAW_IMAGE: - char *px; - char *rgba_px; - uint32_t cbPx; - uint32_t colortype; - PU_RGBQUAD ct; - int numCt; - U_BITMAPINFOHEADER Bmih; - PU_BITMAPINFO Bmi; - rgba_px = (char *) gdk_pixbuf_get_pixels(pixbuf); // Do NOT free this!!! - colortype = U_BCBM_COLOR32; - (void) RGBA_to_DIB(&px, &cbPx, &ct, &numCt, rgba_px, width, height, width*4, colortype, 0, 1); - // Not sure why the next swap is needed because the preceding does it, and the code is identical - // to that in stretchdibits_set, which does not need this. - swapRBinRGBA(px, width*height); - Bmih = bitmapinfoheader_set(width, height, 1, colortype, U_BI_RGB, 0, PXPERMETER, PXPERMETER, numCt, 0); - Bmi = bitmapinfo_set(Bmih, ct); - rec = createdibpatternbrushpt_set(&brush, eht, U_DIB_RGB_COLORS, Bmi, cbPx, px); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ - g_error("Fatal programming error in PrintEmf::create_brush at createdibpatternbrushpt_set"); + rec = U_EMRSETBKMODE_set(U_OPAQUE); + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { + g_error("Fatal programming error in PrintEmf::create_brush at U_EMRSETBKMODE_set"); } - free(px); - free(Bmi); // ct will be NULL because of colortype - break; + } + rec = createbrushindirect_set(&brush, eht, lb); + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { + g_error("Fatal programming error in PrintEmf::create_brush at createbrushindirect_set"); + } + break; + case DRAW_IMAGE: + char *px; + char *rgba_px; + uint32_t cbPx; + uint32_t colortype; + PU_RGBQUAD ct; + int numCt; + U_BITMAPINFOHEADER Bmih; + PU_BITMAPINFO Bmi; + rgba_px = (char *) gdk_pixbuf_get_pixels(pixbuf); // Do NOT free this!!! + colortype = U_BCBM_COLOR32; + (void) RGBA_to_DIB(&px, &cbPx, &ct, &numCt, rgba_px, width, height, width * 4, colortype, 0, 1); + // Not sure why the next swap is needed because the preceding does it, and the code is identical + // to that in stretchdibits_set, which does not need this. + swapRBinRGBA(px, width * height); + Bmih = bitmapinfoheader_set(width, height, 1, colortype, U_BI_RGB, 0, PXPERMETER, PXPERMETER, numCt, 0); + Bmi = bitmapinfo_set(Bmih, ct); + rec = createdibpatternbrushpt_set(&brush, eht, U_DIB_RGB_COLORS, Bmi, cbPx, px); + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { + g_error("Fatal programming error in PrintEmf::create_brush at createdibpatternbrushpt_set"); + } + free(px); + free(Bmi); // ct will be NULL because of colortype + break; } hbrush = brush; // need this later for destroy_brush rec = selectobject_set(brush, eht); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::create_brush at selectobject_set"); } - if(fmode != hpolyfillmode){ - hpolyfillmode=fmode; - rec = U_EMRSETPOLYFILLMODE_set(fmode); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (fmode != hpolyfillmode) { + hpolyfillmode = fmode; + rec = U_EMRSETPOLYFILLMODE_set(fmode); + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::create_brush at U_EMRSETPOLYdrawmode_set"); } } @@ -817,12 +504,12 @@ void PrintEmf::destroy_brush() // select in a stock object to deselect this one, the stock object should // never be used because we always select in a new one before drawing anythingrestore previous brush, necessary??? Would using a default stock object not work? rec = selectobject_set(U_NULL_BRUSH, eht); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::destroy_brush at selectobject_set"); } - if (hbrush){ + if (hbrush) { rec = deleteobject_set(&hbrush, eht); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::destroy_brush"); } hbrush = 0; @@ -845,17 +532,19 @@ int PrintEmf::create_pen(SPStyle const *style, const Geom::Affine &transform) int hatchType; U_COLORREF hatchColor; U_COLORREF bkColor; - uint32_t width,height; - char *px=NULL; + uint32_t width, height; + char *px = NULL; char *rgba_px; - uint32_t cbPx=0; + uint32_t cbPx = 0; uint32_t colortype; - PU_RGBQUAD ct=NULL; - int numCt=0; + PU_RGBQUAD ct = NULL; + int numCt = 0; U_BITMAPINFOHEADER Bmih; - PU_BITMAPINFO Bmi=NULL; - - if (!et) return 0; + PU_BITMAPINFO Bmi = NULL; + + if (!et) { + return 0; + } // set a default stroke in case we can't figure out a better way to do it brushStyle = U_BS_SOLID; @@ -866,75 +555,72 @@ int PrintEmf::create_pen(SPStyle const *style, const Geom::Affine &transform) if (style) { float rgb[3]; - if(SP_IS_PATTERN(SP_STYLE_STROKE_SERVER(style))){ // must be paint-server + if (SP_IS_PATTERN(SP_STYLE_STROKE_SERVER(style))) { // must be paint-server SPPaintServer *paintserver = style->stroke.value.href->getObject(); - SPPattern *pat = SP_PATTERN (paintserver); + SPPattern *pat = SP_PATTERN(paintserver); double dwidth = pattern_width(pat); double dheight = pattern_height(pat); width = dwidth; height = dheight; - brush_classify(pat,0,&pixbuf,&hatchType,&hatchColor,&bkColor); - if(pixbuf){ + brush_classify(pat, 0, &pixbuf, &hatchType, &hatchColor, &bkColor); + if (pixbuf) { brushStyle = U_BS_DIBPATTERN; rgba_px = (char *) gdk_pixbuf_get_pixels(pixbuf); // Do NOT free this!!! colortype = U_BCBM_COLOR32; - (void) RGBA_to_DIB(&px, &cbPx, &ct, &numCt, rgba_px, width, height, width*4, colortype, 0, 1); + (void) RGBA_to_DIB(&px, &cbPx, &ct, &numCt, rgba_px, width, height, width * 4, colortype, 0, 1); // Not sure why the next swap is needed because the preceding does it, and the code is identical // to that in stretchdibits_set, which does not need this. - swapRBinRGBA(px, width*height); + swapRBinRGBA(px, width * height); Bmih = bitmapinfoheader_set(width, height, 1, colortype, U_BI_RGB, 0, PXPERMETER, PXPERMETER, numCt, 0); Bmi = bitmapinfo_set(Bmih, ct); - } - else { // pattern + } else { // pattern brushStyle = U_BS_HATCHED; - if(usebk){ // OPAQUE mode ALWAYS cancels after the next draw, otherwise it would mess up future text output. + if (usebk) { // OPAQUE mode ALWAYS cancels after the next draw, otherwise it would mess up future text output. rec = U_EMRSETBKCOLOR_set(bkColor); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::create_pen at U_EMRSETBKCOLOR_set"); } rec = U_EMRSETBKMODE_set(U_OPAQUE); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::create_pen at U_EMRSETBKMODE_set"); } } - if(hatchType == -1){ // Not a standard hatch, so force it to something + if (hatchType == -1) { // Not a standard hatch, so force it to something hatchType = U_HS_CROSS; - hatchColor = U_RGB(0xFF,0xC3,0xC3); + hatchColor = U_RGB(0xFF, 0xC3, 0xC3); } } - if(FixPPTPatternAsHatch){ - if(hatchType == -1){ // image or unclassified + if (FixPPTPatternAsHatch) { + if (hatchType == -1) { // image or unclassified brushStyle = U_BS_HATCHED; hatchType = U_HS_DIAGCROSS; - hatchColor = U_RGB(0xFF,0xC3,0xC3); - } + hatchColor = U_RGB(0xFF, 0xC3, 0xC3); + } } - } - else if(SP_IS_GRADIENT(SP_STYLE_STROKE_SERVER(style))){ // must be a gradient + } else if (SP_IS_GRADIENT(SP_STYLE_STROKE_SERVER(style))) { // must be a gradient // currently we do not do anything with gradients, the code below has no net effect. SPPaintServer *paintserver = style->stroke.value.href->getObject(); - if (SP_IS_LINEARGRADIENT (paintserver)) { - SPLinearGradient *lg=SP_LINEARGRADIENT(paintserver); + if (SP_IS_LINEARGRADIENT(paintserver)) { + SPLinearGradient *lg = SP_LINEARGRADIENT(paintserver); SP_GRADIENT(lg)->ensureVector(); // when exporting from commandline, vector is not built - Geom::Point p1 (lg->x1.computed, lg->y1.computed); - Geom::Point p2 (lg->x2.computed, lg->y2.computed); + Geom::Point p1(lg->x1.computed, lg->y1.computed); + Geom::Point p2(lg->x2.computed, lg->y2.computed); if (lg->gradientTransform_set) { p1 = p1 * lg->gradientTransform; p2 = p2 * lg->gradientTransform; } hatchColor = avg_stop_color(lg); - } - else if (SP_IS_RADIALGRADIENT (paintserver)) { - SPRadialGradient *rg=SP_RADIALGRADIENT(paintserver); + } else if (SP_IS_RADIALGRADIENT(paintserver)) { + SPRadialGradient *rg = SP_RADIALGRADIENT(paintserver); SP_GRADIENT(rg)->ensureVector(); // when exporting from commandline, vector is not built double r = rg->r.computed; - Geom::Point c (rg->cx.computed, rg->cy.computed); + Geom::Point c(rg->cx.computed, rg->cy.computed); Geom::Point xhandle_point(r, 0); Geom::Point yhandle_point(0, -r); yhandle_point += c; @@ -945,18 +631,15 @@ int PrintEmf::create_pen(SPStyle const *style, const Geom::Affine &transform) xhandle_point = xhandle_point * rg->gradientTransform; } hatchColor = avg_stop_color(rg); - } - else { + } else { // default fill } - } - else if(style->stroke.isColor()){ // test last, always seems to be set, even for other types above - sp_color_get_rgb_floatv( &style->stroke.value.color, rgb ); + } else if (style->stroke.isColor()) { // test last, always seems to be set, even for other types above + sp_color_get_rgb_floatv(&style->stroke.value.color, rgb); brushStyle = U_BS_SOLID; - hatchColor = U_RGB(255*rgb[0], 255*rgb[1], 255*rgb[2]); + hatchColor = U_RGB(255 * rgb[0], 255 * rgb[1], 255 * rgb[2]); hatchType = U_HS_SOLIDCLR; - } - else { + } else { // default fill } @@ -971,30 +654,40 @@ int PrintEmf::create_pen(SPStyle const *style, const Geom::Affine &transform) Geom::Point p1(one * transform); Geom::Point p(p1 - p0); - double scale = sqrt( (p[X]*p[X]) + (p[Y]*p[Y]) ) / sqrt(2); - - if(!style->stroke_width.computed){return 0;} //if width is 0 do not (reset) the pen, it should already be NULL_PEN - uint32_t linewidth = MAX( 1, (uint32_t) round(scale * style->stroke_width.computed * PX2WORLD) ); + double scale = sqrt((p[X] * p[X]) + (p[Y] * p[Y])) / sqrt(2); - if ( style->stroke_linecap.computed == 0){ linecap = U_PS_ENDCAP_FLAT; } - else if (style->stroke_linecap.computed == 1){ linecap = U_PS_ENDCAP_ROUND; } - else if (style->stroke_linecap.computed == 2){ linecap = U_PS_ENDCAP_SQUARE; } + if (!style->stroke_width.computed) { + return 0; //if width is 0 do not (reset) the pen, it should already be NULL_PEN + } + uint32_t linewidth = MAX(1, (uint32_t) round(scale * style->stroke_width.computed * PX2WORLD)); + + if (style->stroke_linecap.computed == 0) { + linecap = U_PS_ENDCAP_FLAT; + } else if (style->stroke_linecap.computed == 1) { + linecap = U_PS_ENDCAP_ROUND; + } else if (style->stroke_linecap.computed == 2) { + linecap = U_PS_ENDCAP_SQUARE; + } - if ( style->stroke_linejoin.computed == 0){ linejoin = U_PS_JOIN_MITER; } - else if (style->stroke_linejoin.computed == 1){ linejoin = U_PS_JOIN_ROUND; } - else if (style->stroke_linejoin.computed == 2){ linejoin = U_PS_JOIN_BEVEL; } + if (style->stroke_linejoin.computed == 0) { + linejoin = U_PS_JOIN_MITER; + } else if (style->stroke_linejoin.computed == 1) { + linejoin = U_PS_JOIN_ROUND; + } else if (style->stroke_linejoin.computed == 2) { + linejoin = U_PS_JOIN_BEVEL; + } if (style->stroke_dash.n_dash && - style->stroke_dash.dash ) - { - if(FixPPTDashLine){ // will break up line into many smaller lines. Override gradient if that was set, cannot do both. + style->stroke_dash.dash) { + if (FixPPTDashLine) { // will break up line into many smaller lines. Override gradient if that was set, cannot do both. brushStyle = U_BS_SOLID; hatchType = U_HS_HORIZONTAL; - } - else { + } else { int i = 0; - while ( (linestyle != U_PS_USERSTYLE) && (i < style->stroke_dash.n_dash) ){ - if (style->stroke_dash.dash[i] > 0.00000001){ linestyle = U_PS_USERSTYLE; } + while ((linestyle != U_PS_USERSTYLE) && (i < style->stroke_dash.n_dash)) { + if (style->stroke_dash.dash[i] > 0.00000001) { + linestyle = U_PS_USERSTYLE; + } i++; } @@ -1002,44 +695,47 @@ int PrintEmf::create_pen(SPStyle const *style, const Geom::Affine &transform) n_dash = style->stroke_dash.n_dash; dash = new uint32_t[n_dash]; for (i = 0; i < style->stroke_dash.n_dash; i++) { - dash[i] = (uint32_t) (style->stroke_dash.dash[i]); + dash[i] = (uint32_t)(style->stroke_dash.dash[i]); } } - } + } } elp = extlogpen_set( - U_PS_GEOMETRIC | linestyle | linecap | linejoin, - linewidth, - brushStyle, - hatchColor, - hatchType, - n_dash, - dash); - - } - else { // if (!style) - linejoin=0; + U_PS_GEOMETRIC | linestyle | linecap | linejoin, + linewidth, + brushStyle, + hatchColor, + hatchType, + n_dash, + dash); + + } else { // if (!style) + linejoin = 0; elp = extlogpen_set( - linestyle, - 1, - U_BS_SOLID, - U_RGB(0,0,0), - U_HS_HORIZONTAL, - 0, - NULL); + linestyle, + 1, + U_BS_SOLID, + U_RGB(0, 0, 0), + U_HS_HORIZONTAL, + 0, + NULL); } - rec = extcreatepen_set(&pen, eht, Bmi, cbPx, px, elp ); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + rec = extcreatepen_set(&pen, eht, Bmi, cbPx, px, elp); + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::create_pen at extcreatepen_set"); } free(elp); - if(Bmi)free(Bmi); - if(px)free(px); // ct will always be NULL + if (Bmi) { + free(Bmi); + } + if (px) { + free(px); // ct will always be NULL + } rec = selectobject_set(pen, eht); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::create_pen at selectobject_set"); } hpen = pen; // need this later for destroy_pen @@ -1047,15 +743,19 @@ int PrintEmf::create_pen(SPStyle const *style, const Geom::Affine &transform) if (linejoin == U_PS_JOIN_MITER) { float miterlimit = style->stroke_miterlimit.value; // This is a ratio. - if (miterlimit < 1)miterlimit = 1; + if (miterlimit < 1) { + miterlimit = 1; + } rec = U_EMRSETMITERLIMIT_set((uint32_t) miterlimit); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::create_pen at U_EMRSETMITERLIMIT_set"); } } - if (n_dash) { delete[] dash; } + if (n_dash) { + delete[] dash; + } return 0; } @@ -1067,12 +767,12 @@ void PrintEmf::destroy_pen() // select in a stock object to deselect this one, the stock object should // never be used because we always select in a new one before drawing anythingrestore previous brush, necessary??? Would using a default stock object not work? rec = selectobject_set(U_NULL_PEN, eht); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::destroy_pen at selectobject_set"); } - if (hpen){ + if (hpen) { rec = deleteobject_set(&hpen, eht); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::destroy_pen"); } hpen = 0; @@ -1080,169 +780,6 @@ void PrintEmf::destroy_pen() } - -unsigned int PrintEmf::bind(Inkscape::Extension::Print * /*mod*/, Geom::Affine const &transform, float /*opacity*/) -{ - if (!m_tr_stack.empty()) { - Geom::Affine tr_top = m_tr_stack.top(); - m_tr_stack.push(transform * tr_top); - } else { - m_tr_stack.push(transform); - } - - return 1; -} - -unsigned int PrintEmf::release(Inkscape::Extension::Print * /*mod*/) -{ - m_tr_stack.pop(); - return 1; -} - -#define clrweight(a,b,t) ((1-t)*((double) a) + (t)*((double) b)) -inline U_COLORREF PrintEmf::weight_opacity(U_COLORREF c1){ - float opa = c1.Reserved/255.0; - U_COLORREF result = U_RGB( - 255*opweight((float)c1.Red /255.0, gv.rgb[0], opa), - 255*opweight((float)c1.Green/255.0, gv.rgb[1], opa), - 255*opweight((float)c1.Blue /255.0, gv.rgb[2], opa) - ); - return result; -} - - -// return the color between c1 and c2, c1 for t=0, c2 for t=1.0 -U_COLORREF PrintEmf::weight_colors(U_COLORREF c1, U_COLORREF c2, double t){ - U_COLORREF result; - result.Red = clrweight(c1.Red, c2.Red, t); - result.Green = clrweight(c1.Green, c2.Green, t); - result.Blue = clrweight(c1.Blue, c2.Blue, t); - result.Reserved = clrweight(c1.Reserved, c2.Reserved, t); - - // now handle the opacity, mix the RGB with background at the weighted opacity - - if(result.Reserved != 255)result = weight_opacity(result); - - return result; -} - -/* convert from center ellipse to SVGEllipticalArc ellipse - - From: - http://www.w3.org/TR/SVG/implnote.html#ArcConversionEndpointToCenter - A point (x,y) on the arc can be found by: - - {x,y} = {cx,cy} + {cosF,-sinF,sinF,cosF} x {rxcosT,rysinT} - - where - {cx,cy} is the center of the ellipse - F is the rotation angle of the X axis of the ellipse from the true X axis - T is the rotation angle around the ellipse - {,,,} is the rotation matrix - rx,ry are the radii of the ellipse's axes - - For SVG parameterization need two points. - Arbitrarily we can use T=0 and T=pi - Since the sweep is 180 the flags are always 0: - - F is in RADIANS, but the SVGEllipticalArc needs degrees! - -*/ -Geom::PathVector PrintEmf::center_ellipse_as_SVG_PathV(Geom::Point ctr, double rx, double ry, double F){ - using Geom::X; - using Geom::Y; - double x1,y1,x2,y2; - Geom::Path SVGep; - - x1 = ctr[X] + cos(F) * rx * cos(0) + sin(-F) * ry * sin(0); - y1 = ctr[Y] + sin(F) * rx * cos(0) + cos(F) * ry * sin(0); - x2 = ctr[X] + cos(F) * rx * cos(M_PI) + sin(-F) * ry * sin(M_PI); - y2 = ctr[Y] + sin(F) * rx * cos(M_PI) + cos(F) * ry * sin(M_PI); - - char text[256]; - sprintf(text," M %f,%f A %f %f %f 0 0 %f %f A %f %f %f 0 0 %f %f z",x1,y1, rx,ry,F*360./(2.*M_PI),x2,y2, rx,ry,F*360./(2.*M_PI),x1,y1); - std::vector<Geom::Path> outres = Geom::parse_svg_path(text); - return outres; -} - - -/* rx2,ry2 must be larger than rx1,ry1! - angle is in RADIANS -*/ -Geom::PathVector PrintEmf::center_elliptical_ring_as_SVG_PathV(Geom::Point ctr, double rx1, double ry1, double rx2, double ry2, double F){ - using Geom::X; - using Geom::Y; - double x11,y11,x12,y12; - double x21,y21,x22,y22; - double degrot = F*360./(2.*M_PI); - - x11 = ctr[X] + cos(F) * rx1 * cos(0) + sin(-F) * ry1 * sin(0); - y11 = ctr[Y] + sin(F) * rx1 * cos(0) + cos(F) * ry1 * sin(0); - x12 = ctr[X] + cos(F) * rx1 * cos(M_PI) + sin(-F) * ry1 * sin(M_PI); - y12 = ctr[Y] + sin(F) * rx1 * cos(M_PI) + cos(F) * ry1 * sin(M_PI); - - x21 = ctr[X] + cos(F) * rx2 * cos(0) + sin(-F) * ry2 * sin(0); - y21 = ctr[Y] + sin(F) * rx2 * cos(0) + cos(F) * ry2 * sin(0); - x22 = ctr[X] + cos(F) * rx2 * cos(M_PI) + sin(-F) * ry2 * sin(M_PI); - y22 = ctr[Y] + sin(F) * rx2 * cos(M_PI) + cos(F) * ry2 * sin(M_PI); - - char text[512]; - sprintf(text," M %f,%f A %f %f %f 0 1 %f %f A %f %f %f 0 1 %f %f z M %f,%f A %f %f %f 0 0 %f %f A %f %f %f 0 0 %f %f z", - x11,y11, rx1,ry1,degrot,x12,y12, rx1,ry1,degrot,x11,y11, - x21,y21, rx2,ry2,degrot,x22,y22, rx2,ry2,degrot,x21,y21); - std::vector<Geom::Path> outres = Geom::parse_svg_path(text); - - return outres; -} - -/* Elliptical hole in a large square extending from -50k to +50k */ -Geom::PathVector PrintEmf::center_elliptical_hole_as_SVG_PathV(Geom::Point ctr, double rx, double ry, double F){ - using Geom::X; - using Geom::Y; - double x1,y1,x2,y2; - Geom::Path SVGep; - - x1 = ctr[X] + cos(F) * rx * cos(0) + sin(-F) * ry * sin(0); - y1 = ctr[Y] + sin(F) * rx * cos(0) + cos(F) * ry * sin(0); - x2 = ctr[X] + cos(F) * rx * cos(M_PI) + sin(-F) * ry * sin(M_PI); - y2 = ctr[Y] + sin(F) * rx * cos(M_PI) + cos(F) * ry * sin(M_PI); - - char text[256]; - sprintf(text," M %f,%f A %f %f %f 0 0 %f %f A %f %f %f 0 0 %f %f z M 50000,50000 50000,-50000 -50000,-50000 -50000,50000 z", - x1,y1, rx,ry,F*360./(2.*M_PI),x2,y2, rx,ry,F*360./(2.*M_PI),x1,y1); - std::vector<Geom::Path> outres = Geom::parse_svg_path(text); - return outres; -} - -/* rectangular cutter. -ctr "center" of rectangle (might not actually be in the center with respect to leading/trailing edges -pos vector from center to leading edge -neg vector from center to trailing edge -width vector to side edge -*/ -Geom::PathVector PrintEmf::rect_cutter(Geom::Point ctr, Geom::Point pos, Geom::Point neg, Geom::Point width){ - std::vector<Geom::Path> outres; - Geom::Path cutter; - cutter.start( ctr + pos - width); - cutter.appendNew<Geom::LineSegment>(ctr + pos + width); - cutter.appendNew<Geom::LineSegment>(ctr + neg + width); - cutter.appendNew<Geom::LineSegment>(ctr + neg - width); - cutter.close(); - outres.push_back(cutter); - return outres; -} - -/* Convert from SPWindRule to livarot's FillRule - This is similar to what sp_selected_path_boolop() does -*/ -FillRule PrintEmf::SPWR_to_LVFR(SPWindRule wr){ - FillRule fr; - if(wr == SP_WIND_RULE_EVENODD){ fr = fill_oddEven; } - else { fr = fill_nonZero; } - return fr; -} - - unsigned int PrintEmf::fill( Inkscape::Extension::Print * /*mod*/, Geom::PathVector const &pathv, Geom::Affine const & /*transform*/, SPStyle const *style, @@ -1258,7 +795,7 @@ unsigned int PrintEmf::fill( fill_transform = tf; - if (create_brush(style, NULL)){ // only happens if the style is a gradient + if (create_brush(style, NULL)) { // only happens if the style is a gradient /* Handle gradients. Uses modified livarot as 2geom boolops is currently broken. Can handle gradients with multiple stops. @@ -1270,36 +807,36 @@ unsigned int PrintEmf::fill( destroy_pen(); //this sets the NULL_PEN, otherwise gradient slices may display with boundaries, see longer explanation below Geom::Path cutter; float rgb[3]; - U_COLORREF wc,c1,c2; - FillRule frb = SPWR_to_LVFR( (SPWindRule) style->fill_rule.computed); - double doff,doff_base,doff_range; - double divisions= 128.0; + U_COLORREF wc, c1, c2; + FillRule frb = SPWR_to_LVFR((SPWindRule) style->fill_rule.computed); + double doff, doff_base, doff_range; + double divisions = 128.0; int nstops; int istop = 1; float opa; // opacity at stop - SPRadialGradient *tg = (SPRadialGradient *) (gv.grad); // linear/radial are the same here + SPRadialGradient *tg = (SPRadialGradient *)(gv.grad); // linear/radial are the same here nstops = tg->vector.stops.size(); sp_color_get_rgb_floatv(&tg->vector.stops[0].color, rgb); opa = tg->vector.stops[0].opacity; - c1 = U_RGBA( 255*rgb[0], 255*rgb[1], 255*rgb[2], 255*opa ); - sp_color_get_rgb_floatv(&tg->vector.stops[nstops-1].color, rgb); - opa = tg->vector.stops[nstops-1].opacity; - c2 = U_RGBA( 255*rgb[0], 255*rgb[1], 255*rgb[2], 255*opa ); + c1 = U_RGBA(255 * rgb[0], 255 * rgb[1], 255 * rgb[2], 255 * opa); + sp_color_get_rgb_floatv(&tg->vector.stops[nstops - 1].color, rgb); + opa = tg->vector.stops[nstops - 1].opacity; + c2 = U_RGBA(255 * rgb[0], 255 * rgb[1], 255 * rgb[2], 255 * opa); doff = 0.0; doff_base = 0.0; doff_range = tg->vector.stops[1].offset; // next or last stop - if(gv.mode==DRAW_RADIAL_GRADIENT){ + if (gv.mode == DRAW_RADIAL_GRADIENT) { Geom::Point xv = gv.p2 - gv.p1; // X' vector Geom::Point yv = gv.p3 - gv.p1; // Y' vector Geom::Point xuv = Geom::unit_vector(xv); // X' unit vector - double rx = hypot(xv[X],xv[Y]); - double ry = hypot(yv[X],yv[Y]); - double range = fmax(rx,ry); // length along the gradient - double step = range/divisions; // adequate approximation for gradient - double overlap = step/4.0; // overlap slices slightly + double rx = hypot(xv[X], xv[Y]); + double ry = hypot(yv[X], yv[Y]); + double range = fmax(rx, ry); // length along the gradient + double step = range / divisions; // adequate approximation for gradient + double overlap = step / 4.0; // overlap slices slightly double start; double stop; Geom::PathVector pathvc, pathvr; @@ -1307,103 +844,108 @@ unsigned int PrintEmf::fill( /* radial gradient might stop part way through the shape, fill with outer color from there to "infinity". Do this first so that outer colored ring will overlay it. */ - pathvc = center_elliptical_hole_as_SVG_PathV(gv.p1, rx*(1.0 - overlap/range), ry*(1.0 - overlap/range), asin(xuv[Y])); + pathvc = center_elliptical_hole_as_SVG_PathV(gv.p1, rx * (1.0 - overlap / range), ry * (1.0 - overlap / range), asin(xuv[Y])); pathvr = sp_pathvector_boolop(pathvc, pathv, bool_op_inters, (FillRule) fill_oddEven, frb); - wc = weight_opacity(c2); + wc = weight_opacity(c2); (void) create_brush(style, &wc); print_pathv(pathvr, fill_transform); sp_color_get_rgb_floatv(&tg->vector.stops[istop].color, rgb); opa = tg->vector.stops[istop].opacity; - c2 = U_RGBA( 255*rgb[0], 255*rgb[1], 255*rgb[2], 255*opa ); + c2 = U_RGBA(255 * rgb[0], 255 * rgb[1], 255 * rgb[2], 255 * opa); - for(start = 0.0; start < range; start += step, doff += 1./divisions){ + for (start = 0.0; start < range; start += step, doff += 1. / divisions) { stop = start + step + overlap; - if(stop > range)stop=range; - wc = weight_colors(c1, c2, (doff - doff_base)/(doff_range-doff_base) ); + if (stop > range) { + stop = range; + } + wc = weight_colors(c1, c2, (doff - doff_base) / (doff_range - doff_base)); (void) create_brush(style, &wc); - pathvc = center_elliptical_ring_as_SVG_PathV(gv.p1, rx*start/range, ry*start/range, rx*stop/range, ry*stop/range, asin(xuv[Y])); + pathvc = center_elliptical_ring_as_SVG_PathV(gv.p1, rx * start / range, ry * start / range, rx * stop / range, ry * stop / range, asin(xuv[Y])); pathvr = sp_pathvector_boolop(pathvc, pathv, bool_op_inters, (FillRule) fill_nonZero, frb); print_pathv(pathvr, fill_transform); // show the intersection - if(doff >= doff_range - doff_base){ + if (doff >= doff_range - doff_base) { istop++; - if(istop >= nstops)continue; // could happen on a rounding error + if (istop >= nstops) { + continue; // could happen on a rounding error + } doff_base = doff_range; doff_range = tg->vector.stops[istop].offset; // next or last stop - c1=c2; + c1 = c2; sp_color_get_rgb_floatv(&tg->vector.stops[istop].color, rgb); opa = tg->vector.stops[istop].opacity; - c2 = U_RGBA( 255*rgb[0], 255*rgb[1], 255*rgb[2], 255*opa ); + c2 = U_RGBA(255 * rgb[0], 255 * rgb[1], 255 * rgb[2], 255 * opa); } } - } - else if(gv.mode == DRAW_LINEAR_GRADIENT){ + } else if (gv.mode == DRAW_LINEAR_GRADIENT) { Geom::Point uv = Geom::unit_vector(gv.p2 - gv.p1); // unit vector Geom::Point puv = uv.cw(); // perp. to unit vector - double range = Geom::distance(gv.p1,gv.p2); // length along the gradient - double step = range/divisions; // adequate approximation for gradient - double overlap = step/4.0; // overlap slices slightly + double range = Geom::distance(gv.p1, gv.p2); // length along the gradient + double step = range / divisions; // adequate approximation for gradient + double overlap = step / 4.0; // overlap slices slightly double start; double stop; Geom::PathVector pathvc, pathvr; /* before lower end of gradient, overlap first slice position */ - wc = weight_opacity(c1); + wc = weight_opacity(c1); (void) create_brush(style, &wc); - pathvc = rect_cutter(gv.p1, uv*(overlap), uv*(-50000.0), puv*50000.0); + pathvc = rect_cutter(gv.p1, uv * (overlap), uv * (-50000.0), puv * 50000.0); pathvr = sp_pathvector_boolop(pathvc, pathv, bool_op_inters, (FillRule) fill_nonZero, frb); print_pathv(pathvr, fill_transform); /* after high end of gradient, overlap last slice poosition */ - wc = weight_opacity(c2); + wc = weight_opacity(c2); (void) create_brush(style, &wc); - pathvc = rect_cutter(gv.p2, uv*(-overlap), uv*(50000.0), puv*50000.0); + pathvc = rect_cutter(gv.p2, uv * (-overlap), uv * (50000.0), puv * 50000.0); pathvr = sp_pathvector_boolop(pathvc, pathv, bool_op_inters, (FillRule) fill_nonZero, frb); print_pathv(pathvr, fill_transform); sp_color_get_rgb_floatv(&tg->vector.stops[istop].color, rgb); opa = tg->vector.stops[istop].opacity; - c2 = U_RGBA( 255*rgb[0], 255*rgb[1], 255*rgb[2], 255*opa ); + c2 = U_RGBA(255 * rgb[0], 255 * rgb[1], 255 * rgb[2], 255 * opa); - for(start = 0.0; start < range; start += step, doff += 1./divisions){ + for (start = 0.0; start < range; start += step, doff += 1. / divisions) { stop = start + step + overlap; - if(stop > range)stop=range; - pathvc = rect_cutter(gv.p1, uv*start, uv*stop, puv*50000.0); + if (stop > range) { + stop = range; + } + pathvc = rect_cutter(gv.p1, uv * start, uv * stop, puv * 50000.0); - wc = weight_colors(c1, c2, (doff - doff_base)/(doff_range-doff_base) ); + wc = weight_colors(c1, c2, (doff - doff_base) / (doff_range - doff_base)); (void) create_brush(style, &wc); Geom::PathVector pathvr = sp_pathvector_boolop(pathvc, pathv, bool_op_inters, (FillRule) fill_nonZero, frb); print_pathv(pathvr, fill_transform); // show the intersection - if(doff >= doff_range - doff_base){ + if (doff >= doff_range - doff_base) { istop++; - if(istop >= nstops)continue; // could happen on a rounding error + if (istop >= nstops) { + continue; // could happen on a rounding error + } doff_base = doff_range; doff_range = tg->vector.stops[istop].offset; // next or last stop - c1=c2; + c1 = c2; sp_color_get_rgb_floatv(&tg->vector.stops[istop].color, rgb); opa = tg->vector.stops[istop].opacity; - c2 = U_RGBA( 255*rgb[0], 255*rgb[1], 255*rgb[2], 255*opa ); + c2 = U_RGBA(255 * rgb[0], 255 * rgb[1], 255 * rgb[2], 255 * opa); } } - } - else { + } else { g_error("Fatal programming error in PrintEmf::fill, invalid gradient type detected"); } use_fill = false; // gradients handled, be sure stroke does not use stroke and fill - } - else { + } else { /* - Inkscape was not calling create_pen for objects with no border. + Inkscape was not calling create_pen for objects with no border. This was because it never called stroke() (next method). PPT, and presumably others, pick whatever they want for the border if it is not specified, so no border can become a visible border. To avoid this force the pen to NULL_PEN if we can determine that no pen will be needed after the fill. */ - if (style->stroke.noneSet || style->stroke_width.computed == 0.0){ + if (style->stroke.noneSet || style->stroke_width.computed == 0.0) { destroy_pen(); //this sets the NULL_PEN } @@ -1411,16 +953,18 @@ unsigned int PrintEmf::fill( Dashes converted to line segments will "open" a closed path. */ bool all_closed = true; - for (Geom::PathVector::const_iterator pit = pathv.begin(); pit != pathv.end(); ++pit){ - for (Geom::Path::const_iterator cit = pit->begin(); cit != pit->end_open(); ++cit){ - if (pit->end_default() != pit->end_closed()) { all_closed=false; } + for (Geom::PathVector::const_iterator pit = pathv.begin(); pit != pathv.end(); ++pit) { + for (Geom::Path::const_iterator cit = pit->begin(); cit != pit->end_open(); ++cit) { + if (pit->end_default() != pit->end_closed()) { + all_closed = false; + } } } if ( (style->stroke.isNone() || style->stroke.noneSet || style->stroke_width.computed == 0.0) || (style->stroke_dash.n_dash && style->stroke_dash.dash && FixPPTDashLine) || !all_closed - ){ + ) { print_pathv(pathv, fill_transform); // do any fills. side effect: clears fill_pathv use_fill = false; } @@ -1430,63 +974,71 @@ unsigned int PrintEmf::fill( } -unsigned int PrintEmf::stroke ( +unsigned int PrintEmf::stroke( Inkscape::Extension::Print * /*mod*/, Geom::PathVector const &pathv, const Geom::Affine &/*transform*/, const SPStyle *style, Geom::OptRect const &/*pbox*/, Geom::OptRect const &/*dbox*/, Geom::OptRect const &/*bbox*/) { - + char *rec = NULL; Geom::Affine tf = m_tr_stack.top(); use_stroke = true; -// use_fill was set in ::fill, if it is needed + // use_fill was set in ::fill, if it is needed + + if (create_pen(style, tf)) { + return 0; + } - if (create_pen(style, tf))return 0; - - if (style->stroke_dash.n_dash && style->stroke_dash.dash && FixPPTDashLine ){ + if (style->stroke_dash.n_dash && style->stroke_dash.dash && FixPPTDashLine) { // convert the path, gets its complete length, and then make a new path with parameter length instead of t Geom::Piecewise<Geom::D2<Geom::SBasis> > tmp_pathpw; // pathv-> sbasis Geom::Piecewise<Geom::D2<Geom::SBasis> > tmp_pathpw2; // sbasis using arc length parameter Geom::Piecewise<Geom::D2<Geom::SBasis> > tmp_pathpw3; // new (discontinuous) path, composed of dots/dashes Geom::Piecewise<Geom::D2<Geom::SBasis> > first_frag; // first fragment, will be appended at end int n_dash = style->stroke_dash.n_dash; - int i=0; //dash index + int i = 0; //dash index double tlength; // length of tmp_pathpw - double slength=0.0; // start of gragment + double slength = 0.0; // start of gragment double elength; // end of gragment - for (unsigned int i=0; i < pathv.size(); i++) { + for (unsigned int i = 0; i < pathv.size(); i++) { tmp_pathpw.concat(pathv[i].toPwSb()); } - tlength = length(tmp_pathpw,0.1); + tlength = length(tmp_pathpw, 0.1); tmp_pathpw2 = arc_length_parametrization(tmp_pathpw); // go around the dash array repeatedly until the entire path is consumed (but not beyond). - while(slength < tlength){ + while (slength < tlength) { elength = slength + style->stroke_dash.dash[i++]; - if(elength > tlength)elength = tlength; + if (elength > tlength) { + elength = tlength; + } Geom::Piecewise<Geom::D2<Geom::SBasis> > fragment(portion(tmp_pathpw2, slength, elength)); - if(slength){ tmp_pathpw3.concat(fragment); } - else { first_frag = fragment; } + if (slength) { + tmp_pathpw3.concat(fragment); + } else { + first_frag = fragment; + } slength = elength; slength += style->stroke_dash.dash[i++]; // the gap - if(i>=n_dash)i=0; + if (i >= n_dash) { + i = 0; + } } tmp_pathpw3.concat(first_frag); // may merge line around start point - Geom::PathVector out_pathv = Geom::path_from_piecewise(tmp_pathpw3, 0.01); + Geom::PathVector out_pathv = Geom::path_from_piecewise(tmp_pathpw3, 0.01); print_pathv(out_pathv, tf); - } - else { + } else { print_pathv(pathv, tf); } use_stroke = false; use_fill = false; - if(usebk){ // OPAQUE was set, revert to TRANSPARENT + if (usebk) { // OPAQUE was set, revert to TRANSPARENT usebk = false; rec = U_EMRSETBKMODE_set(U_TRANSPARENT); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::stroke at U_EMRSETBKMODE_set"); } } @@ -1501,39 +1053,40 @@ unsigned int PrintEmf::stroke ( bool PrintEmf::print_simple_shape(Geom::PathVector const &pathv, const Geom::Affine &transform) { - Geom::PathVector pv = pathv_to_linear_and_cubic_beziers( pathv * transform ); - + Geom::PathVector pv = pathv_to_linear_and_cubic_beziers(pathv * transform); + int nodes = 0; int moves = 0; int lines = 0; int curves = 0; char *rec = NULL; - for (Geom::PathVector::const_iterator pit = pv.begin(); pit != pv.end(); ++pit) - { + for (Geom::PathVector::const_iterator pit = pv.begin(); pit != pv.end(); ++pit) { moves++; nodes++; - - for (Geom::Path::const_iterator cit = pit->begin(); cit != pit->end_open(); ++cit) - { + + for (Geom::Path::const_iterator cit = pit->begin(); cit != pit->end_open(); ++cit) { nodes++; - - if ( is_straight_curve(*cit) ) { lines++; } - else if(&*cit) { curves++; } + + if (is_straight_curve(*cit)) { + lines++; + } else if (&*cit) { + curves++; + } } } - if (!nodes) + if (!nodes) { return false; - - U_POINT *lpPoints = new U_POINT[moves + lines + curves*3]; + } + + U_POINT *lpPoints = new U_POINT[moves + lines + curves * 3]; int i = 0; /** * For all Subpaths in the <path> */ - for (Geom::PathVector::const_iterator pit = pv.begin(); pit != pv.end(); ++pit) - { + for (Geom::PathVector::const_iterator pit = pv.begin(); pit != pv.end(); ++pit) { using Geom::X; using Geom::Y; @@ -1541,7 +1094,7 @@ bool PrintEmf::print_simple_shape(Geom::PathVector const &pathv, const Geom::Aff p0[X] = (p0[X] * PX2WORLD); p0[Y] = (p0[Y] * PX2WORLD); - + int32_t const x0 = (int32_t) round(p0[X]); int32_t const y0 = (int32_t) round(p0[Y]); @@ -1552,10 +1105,8 @@ bool PrintEmf::print_simple_shape(Geom::PathVector const &pathv, const Geom::Aff /** * For all segments in the subpath */ - for (Geom::Path::const_iterator cit = pit->begin(); cit != pit->end_open(); ++cit) - { - if ( is_straight_curve(*cit) ) - { + for (Geom::Path::const_iterator cit = pit->begin(); cit != pit->end_open(); ++cit) { + if (is_straight_curve(*cit)) { //Geom::Point p0 = cit->initialPoint(); Geom::Point p1 = cit->finalPoint(); @@ -1572,9 +1123,7 @@ bool PrintEmf::print_simple_shape(Geom::PathVector const &pathv, const Geom::Aff lpPoints[i].x = x1; lpPoints[i].y = y1; i = i + 1; - } - else if (Geom::CubicBezier const *cubic = dynamic_cast<Geom::CubicBezier const*>(&*cit)) - { + } else if (Geom::CubicBezier const *cubic = dynamic_cast<Geom::CubicBezier const *>(&*cit)) { std::vector<Geom::Point> points = cubic->points(); //Geom::Point p0 = points[0]; Geom::Point p1 = points[1]; @@ -1589,7 +1138,7 @@ bool PrintEmf::print_simple_shape(Geom::PathVector const &pathv, const Geom::Aff p1[Y] = (p1[Y] * PX2WORLD); p2[Y] = (p2[Y] * PX2WORLD); p3[Y] = (p3[Y] * PX2WORLD); - + //int32_t const x0 = (int32_t) round(p0[X]); //int32_t const y0 = (int32_t) round(p0[Y]); int32_t const x1 = (int32_t) round(p1[X]); @@ -1601,107 +1150,110 @@ bool PrintEmf::print_simple_shape(Geom::PathVector const &pathv, const Geom::Aff lpPoints[i].x = x1; lpPoints[i].y = y1; - lpPoints[i+1].x = x2; - lpPoints[i+1].y = y2; - lpPoints[i+2].x = x3; - lpPoints[i+2].y = y3; + lpPoints[i + 1].x = x2; + lpPoints[i + 1].y = y2; + lpPoints[i + 2].x = x3; + lpPoints[i + 2].y = y3; i = i + 3; } } } bool done = false; - bool closed = (lpPoints[0].x == lpPoints[i-1].x) && (lpPoints[0].y == lpPoints[i-1].y); + bool closed = (lpPoints[0].x == lpPoints[i - 1].x) && (lpPoints[0].y == lpPoints[i - 1].y); bool polygon = false; bool rectangle = false; bool ellipse = false; - - if (moves == 1 && moves+lines == nodes && closed) { + + if (moves == 1 && moves + lines == nodes && closed) { polygon = true; -// if (nodes==5) { // disable due to LP Bug 407394 -// if (lpPoints[0].x == lpPoints[3].x && lpPoints[1].x == lpPoints[2].x && -// lpPoints[0].y == lpPoints[1].y && lpPoints[2].y == lpPoints[3].y) -// { -// rectangle = true; -// } -// } - } - else if (moves == 1 && nodes == 5 && moves+curves == nodes && closed) { -// if (lpPoints[0].x == lpPoints[1].x && lpPoints[1].x == lpPoints[11].x && -// lpPoints[5].x == lpPoints[6].x && lpPoints[6].x == lpPoints[7].x && -// lpPoints[2].x == lpPoints[10].x && lpPoints[3].x == lpPoints[9].x && lpPoints[4].x == lpPoints[8].x && -// lpPoints[2].y == lpPoints[3].y && lpPoints[3].y == lpPoints[4].y && -// lpPoints[8].y == lpPoints[9].y && lpPoints[9].y == lpPoints[10].y && -// lpPoints[5].y == lpPoints[1].y && lpPoints[6].y == lpPoints[0].y && lpPoints[7].y == lpPoints[11].y) -// { // disable due to LP Bug 407394 -// ellipse = true; -// } + // if (nodes==5) { // disable due to LP Bug 407394 + // if (lpPoints[0].x == lpPoints[3].x && lpPoints[1].x == lpPoints[2].x && + // lpPoints[0].y == lpPoints[1].y && lpPoints[2].y == lpPoints[3].y) + // { + // rectangle = true; + // } + // } + } else if (moves == 1 && nodes == 5 && moves + curves == nodes && closed) { + // if (lpPoints[0].x == lpPoints[1].x && lpPoints[1].x == lpPoints[11].x && + // lpPoints[5].x == lpPoints[6].x && lpPoints[6].x == lpPoints[7].x && + // lpPoints[2].x == lpPoints[10].x && lpPoints[3].x == lpPoints[9].x && lpPoints[4].x == lpPoints[8].x && + // lpPoints[2].y == lpPoints[3].y && lpPoints[3].y == lpPoints[4].y && + // lpPoints[8].y == lpPoints[9].y && lpPoints[9].y == lpPoints[10].y && + // lpPoints[5].y == lpPoints[1].y && lpPoints[6].y == lpPoints[0].y && lpPoints[7].y == lpPoints[11].y) + // { // disable due to LP Bug 407394 + // ellipse = true; + // } } if (polygon || ellipse) { - + if (use_fill && !use_stroke) { // only fill rec = selectobject_set(U_NULL_PEN, eht); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::print_simple_shape at selectobject_set pen"); } - } - else if(!use_fill && use_stroke) { // only stroke + } else if (!use_fill && use_stroke) { // only stroke rec = selectobject_set(U_NULL_BRUSH, eht); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::print_simple_shape at selectobject_set brush"); } } if (polygon) { - if (rectangle){ - U_RECTL rcl = rectl_set((U_POINTL) {lpPoints[0].x, lpPoints[0].y}, (U_POINTL) {lpPoints[2].x, lpPoints[2].y}); + if (rectangle) { + U_RECTL rcl = rectl_set((U_POINTL) { + lpPoints[0].x, lpPoints[0].y + }, (U_POINTL) { + lpPoints[2].x, lpPoints[2].y + }); rec = U_EMRRECTANGLE_set(rcl); - } - else { + } else { rec = U_EMRPOLYGON_set(U_RCL_DEF, nodes, lpPoints); } - } - else if (ellipse) { - U_RECTL rcl = rectl_set((U_POINTL) {lpPoints[6].x, lpPoints[3].y}, (U_POINTL) {lpPoints[0].x, lpPoints[9].y}); + } else if (ellipse) { + U_RECTL rcl = rectl_set((U_POINTL) { + lpPoints[6].x, lpPoints[3].y + }, (U_POINTL) { + lpPoints[0].x, lpPoints[9].y + }); rec = U_EMRELLIPSE_set(rcl); } - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::print_simple_shape at retangle/ellipse/polygon"); } - + done = true; // replace the handle we moved above, assuming there was something set already if (use_fill && !use_stroke && hpen) { // only fill rec = selectobject_set(hpen, eht); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::print_simple_shape at selectobject_set pen"); } - } - else if (!use_fill && use_stroke && hbrush){ // only stroke + } else if (!use_fill && use_stroke && hbrush) { // only stroke rec = selectobject_set(hbrush, eht); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::print_simple_shape at selectobject_set brush"); } } } delete[] lpPoints; - + return done; } /** Some parts based on win32.cpp by Lauris Kaplinski <lauris@kaplinski.com>. Was a part of Inkscape in the past (or will be in the future?) Not in current trunk. (4/19/2012) - + Limitations of this code: 1. Transparency is lost on export. (Apparently a limitation of the EMF format.) 2. Probably messes up if row stride != w*4 3. There is still a small memory leak somewhere, possibly in a pixbuf created in a routine that calls this one and passes px, but never removes the rest of the pixbuf. The first time this is called it leaked 5M (in one test) and each subsequent call leaked around 200K more. - If this routine is reduced to + If this routine is reduced to if(1)return(0); and called for a single 1280 x 1024 image then the program leaks 11M per call, or roughly the size of two bitmaps. @@ -1716,20 +1268,20 @@ unsigned int PrintEmf::image( Geom::Affine const &/*tf_ignore*/, /** WRONG affine transform, use the one from m_tr_stack */ SPStyle const *style) /** provides indirect link to image object */ { - double x1,y1,dw,dh; + double x1, y1, dw, dh; char *rec = NULL; Geom::Affine tf = m_tr_stack.top(); rec = U_EMRSETSTRETCHBLTMODE_set(U_COLORONCOLOR); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ - g_error("Fatal programming error in PrintEmf::image at EMRHEADER"); + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { + g_error("Fatal programming error in PrintEmf::image at EMRHEADER"); } - x1= atof(style->object->getAttribute("x")); - y1= atof(style->object->getAttribute("y")); - dw= atof(style->object->getAttribute("width")); - dh= atof(style->object->getAttribute("height")); - Geom::Point pLL(x1,y1); + x1 = atof(style->object->getAttribute("x")); + y1 = atof(style->object->getAttribute("y")); + dw = atof(style->object->getAttribute("width")); + dh = atof(style->object->getAttribute("height")); + Geom::Point pLL(x1, y1); Geom::Point pLL2 = pLL * tf; //location of LL corner in Inkscape coordinates char *px; @@ -1740,15 +1292,15 @@ unsigned int PrintEmf::image( U_BITMAPINFOHEADER Bmih; PU_BITMAPINFO Bmi; colortype = U_BCBM_COLOR32; - (void) RGBA_to_DIB(&px, &cbPx, &ct, &numCt, (char *) rgba_px, w, h, w*4, colortype, 0, 1); + (void) RGBA_to_DIB(&px, &cbPx, &ct, &numCt, (char *) rgba_px, w, h, w * 4, colortype, 0, 1); Bmih = bitmapinfoheader_set(w, h, 1, colortype, U_BI_RGB, 0, PXPERMETER, PXPERMETER, numCt, 0); Bmi = bitmapinfo_set(Bmih, ct); U_POINTL Dest = pointl_set(round(pLL2[Geom::X] * PX2WORLD), round(pLL2[Geom::Y] * PX2WORLD)); U_POINTL cDest = pointl_set(round(dw * PX2WORLD), round(dh * PX2WORLD)); - U_POINTL Src = pointl_set(0,0); - U_POINTL cSrc = pointl_set(w,h); - if(!FixImageRot){ /* Rotate images - some programs cannot read them in correctly if they are rotated */ + U_POINTL Src = pointl_set(0, 0); + U_POINTL cSrc = pointl_set(w, h); + if (!FixImageRot) { /* Rotate images - some programs cannot read them in correctly if they are rotated */ tf[4] = tf[5] = 0.0; // get rid of the offset in the transform Geom::Point pLL2prime = pLL2 * tf; U_XFORM tmpTransform; @@ -1756,58 +1308,64 @@ unsigned int PrintEmf::image( tmpTransform.eM12 = tf[1]; tmpTransform.eM21 = tf[2]; tmpTransform.eM22 = tf[3]; - tmpTransform.eDx = (pLL2[Geom::X] - pLL2prime[Geom::X]) * PX2WORLD; //map pLL2 (now in EMF coordinates) back onto itself after the rotation - tmpTransform.eDy = (pLL2[Geom::Y] - pLL2prime[Geom::Y]) * PX2WORLD; + tmpTransform.eDx = (pLL2[Geom::X] - pLL2prime[Geom::X]) * PX2WORLD; //map pLL2 (now in EMF coordinates) back onto itself after the rotation + tmpTransform.eDy = (pLL2[Geom::Y] - pLL2prime[Geom::Y]) * PX2WORLD; - rec=U_EMRSAVEDC_set(); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + rec = U_EMRSAVEDC_set(); + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::image at U_EMRSAVEDC_set"); } rec = U_EMRMODIFYWORLDTRANSFORM_set(tmpTransform, U_MWT_LEFTMULTIPLY); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::image at EMRMODIFYWORLDTRANSFORM"); } } rec = U_EMRSTRETCHDIBITS_set( - U_RCL_DEF, //! Bounding rectangle in device units - Dest, //! Destination UL corner in logical units - cDest, //! Destination W & H in logical units - Src, //! Source UL corner in logical units - cSrc, //! Source W & H in logical units - U_DIB_RGB_COLORS, //! DIBColors Enumeration - U_SRCCOPY, //! RasterOPeration Enumeration - Bmi, //! (Optional) bitmapbuffer (U_BITMAPINFO section) - h*rs, //! size in bytes of px - px //! (Optional) bitmapbuffer (U_BITMAPINFO section) - ); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + U_RCL_DEF, //! Bounding rectangle in device units + Dest, //! Destination UL corner in logical units + cDest, //! Destination W & H in logical units + Src, //! Source UL corner in logical units + cSrc, //! Source W & H in logical units + U_DIB_RGB_COLORS, //! DIBColors Enumeration + U_SRCCOPY, //! RasterOPeration Enumeration + Bmi, //! (Optional) bitmapbuffer (U_BITMAPINFO section) + h * rs, //! size in bytes of px + px //! (Optional) bitmapbuffer (U_BITMAPINFO section) + ); + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::image at U_EMRSTRETCHDIBITS_set"); } free(px); free(Bmi); - if(numCt)free(ct); - - if(!FixImageRot){ - rec=U_EMRRESTOREDC_set(-1); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ - g_error("Fatal programming error in PrintEmf::image at U_EMRRESTOREDC_set"); - } - } - + if (numCt) { + free(ct); + } + + if (!FixImageRot) { + rec = U_EMRRESTOREDC_set(-1); + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { + g_error("Fatal programming error in PrintEmf::image at U_EMRRESTOREDC_set"); + } + } + return 0; } // may also be called with a simple_shape or an empty path, whereupon it just returns without doing anything unsigned int PrintEmf::print_pathv(Geom::PathVector const &pathv, const Geom::Affine &transform) { - Geom::Affine tf = transform; - char *rec = NULL; + Geom::Affine tf = transform; + char *rec = NULL; simple_shape = print_simple_shape(pathv, tf); - if (simple_shape || pathv.empty()){ - if (use_fill){ destroy_brush(); } // these must be cleared even if nothing is drawn or hbrush,hpen fill up - if (use_stroke){ destroy_pen(); } + if (simple_shape || pathv.empty()) { + if (use_fill) { + destroy_brush(); // these must be cleared even if nothing is drawn or hbrush,hpen fill up + } + if (use_stroke) { + destroy_pen(); + } return TRUE; } @@ -1815,40 +1373,37 @@ unsigned int PrintEmf::print_pathv(Geom::PathVector const &pathv, const Geom::Af that is handled by the EMF MODIFYWORLDTRANSFORM record */ - Geom::PathVector pv = pathv_to_linear_and_cubic_beziers( pathv * tf ); - + Geom::PathVector pv = pathv_to_linear_and_cubic_beziers(pathv * tf); + rec = U_EMRBEGINPATH_set(); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::print_pathv at U_EMRBEGINPATH_set"); } /** * For all Subpaths in the <path> */ - for (Geom::PathVector::const_iterator pit = pv.begin(); pit != pv.end(); ++pit) - { + for (Geom::PathVector::const_iterator pit = pv.begin(); pit != pv.end(); ++pit) { using Geom::X; using Geom::Y; - + Geom::Point p0 = pit->initialPoint(); p0[X] = (p0[X] * PX2WORLD); p0[Y] = (p0[Y] * PX2WORLD); - + U_POINTL ptl = pointl_set((int32_t) round(p0[X]), (int32_t) round(p0[Y])); rec = U_EMRMOVETOEX_set(ptl); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::print_pathv at U_EMRMOVETOEX_set"); } /** * For all segments in the subpath */ - for (Geom::Path::const_iterator cit = pit->begin(); cit != pit->end_open(); ++cit) - { - if ( is_straight_curve(*cit) ) - { + for (Geom::Path::const_iterator cit = pit->begin(); cit != pit->end_open(); ++cit) { + if (is_straight_curve(*cit)) { //Geom::Point p0 = cit->initialPoint(); Geom::Point p1 = cit->finalPoint(); @@ -1856,18 +1411,16 @@ unsigned int PrintEmf::print_pathv(Geom::PathVector const &pathv, const Geom::Af p1[X] = (p1[X] * PX2WORLD); //p0[Y] = (p0[Y] * PX2WORLD); p1[Y] = (p1[Y] * PX2WORLD); - + //int32_t const x0 = (int32_t) round(p0[X]); //int32_t const y0 = (int32_t) round(p0[Y]); ptl = pointl_set((int32_t) round(p1[X]), (int32_t) round(p1[Y])); rec = U_EMRLINETO_set(ptl); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::print_pathv at U_EMRLINETO_set"); } - } - else if (Geom::CubicBezier const *cubic = dynamic_cast<Geom::CubicBezier const*>(&*cit)) - { + } else if (Geom::CubicBezier const *cubic = dynamic_cast<Geom::CubicBezier const *>(&*cit)) { std::vector<Geom::Point> points = cubic->points(); //Geom::Point p0 = points[0]; Geom::Point p1 = points[1]; @@ -1882,7 +1435,7 @@ unsigned int PrintEmf::print_pathv(Geom::PathVector const &pathv, const Geom::Af p1[Y] = (p1[Y] * PX2WORLD); p2[Y] = (p2[Y] * PX2WORLD); p3[Y] = (p3[Y] * PX2WORLD); - + //int32_t const x0 = (int32_t) round(p0[X]); //int32_t const y0 = (int32_t) round(p0[Y]); int32_t const x1 = (int32_t) round(p1[X]); @@ -1901,19 +1454,17 @@ unsigned int PrintEmf::print_pathv(Geom::PathVector const &pathv, const Geom::Af pt[2].y = y3; rec = U_EMRPOLYBEZIERTO_set(U_RCL_DEF, 3, pt); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::print_pathv at U_EMRPOLYBEZIERTO_set"); } - } - else - { + } else { g_warning("logical error, because pathv_to_linear_and_cubic_beziers was used"); } } if (pit->end_default() == pit->end_closed()) { // there may be multiples of this on a single path rec = U_EMRCLOSEFIGURE_set(); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::print_pathv at U_EMRCLOSEFIGURE_set"); } } @@ -1921,35 +1472,33 @@ unsigned int PrintEmf::print_pathv(Geom::PathVector const &pathv, const Geom::Af } rec = U_EMRENDPATH_set(); // there may be only be one of these on a single path - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::print_pathv at U_EMRENDPATH_set"); } // explicit FILL/STROKE commands are needed for each sub section of the path - if (use_fill && !use_stroke){ + if (use_fill && !use_stroke) { rec = U_EMRFILLPATH_set(U_RCL_DEF); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ - g_error("Fatal programming error in PrintEmf::fill at U_EMRFILLPATH_set"); + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { + g_error("Fatal programming error in PrintEmf::fill at U_EMRFILLPATH_set"); } - } - else if (use_fill && use_stroke) { + } else if (use_fill && use_stroke) { rec = U_EMRSTROKEANDFILLPATH_set(U_RCL_DEF); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ - g_error("Fatal programming error in PrintEmf::stroke at U_EMRSTROKEANDFILLPATH_set"); - } - } - else if (!use_fill && use_stroke){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { + g_error("Fatal programming error in PrintEmf::stroke at U_EMRSTROKEANDFILLPATH_set"); + } + } else if (!use_fill && use_stroke) { rec = U_EMRSTROKEPATH_set(U_RCL_DEF); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ - g_error("Fatal programming error in PrintEmf::stroke at U_EMRSTROKEPATH_set"); - } + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { + g_error("Fatal programming error in PrintEmf::stroke at U_EMRSTROKEPATH_set"); + } } // clean out brush and pen, but only after all parts of the draw complete - if (use_fill){ + if (use_fill) { destroy_brush(); } - if (use_stroke){ + if (use_stroke) { destroy_pen(); } @@ -1957,45 +1506,44 @@ unsigned int PrintEmf::print_pathv(Geom::PathVector const &pathv, const Geom::Af } -bool PrintEmf::textToPath(Inkscape::Extension::Print * ext) -{ - return ext->get_param_bool("textToPath"); -} - unsigned int PrintEmf::text(Inkscape::Extension::Print * /*mod*/, char const *text, Geom::Point const &p, - SPStyle const *const style) + SPStyle const *const style) { - if (!et) return 0; + if (!et) { + return 0; + } char *rec = NULL; - int ccount,newfont; - int fix90n=0; + int ccount, newfont; + int fix90n = 0; uint32_t hfont = 0; Geom::Affine tf = m_tr_stack.top(); - double rot = -1800.0*std::atan2(tf[1], tf[0])/M_PI; // 0.1 degree rotation, - sign for MM_TEXT + double rot = -1800.0 * std::atan2(tf[1], tf[0]) / M_PI; // 0.1 degree rotation, - sign for MM_TEXT double rotb = -std::atan2(tf[1], tf[0]); // rotation for baseline offset for superscript/subscript, used below - double dx,dy; - double f1,f2,f3; + double dx, dy; double ky; // the dx array is smuggled in like: text<nul>w1 w2 w3 ...wn<nul><nul>, where the widths are floats 7 characters wide, including the space int ndx, rtl; uint32_t *adx; - smuggle_adxkyrtl_out(text, &adx, &ky, &rtl, &ndx, PX2WORLD * std::min(tf.expansionX(),tf.expansionY())); // side effect: free() adx - + smuggle_adxkyrtl_out(text, &adx, &ky, &rtl, &ndx, PX2WORLD * std::min(tf.expansionX(), tf.expansionY())); // side effect: free() adx + uint32_t textalignment; - if(rtl > 0){ textalignment = U_TA_BASELINE | U_TA_LEFT; } - else { textalignment = U_TA_BASELINE | U_TA_RIGHT | U_TA_RTLREADING; } - if(textalignment != htextalignment){ + if (rtl > 0) { + textalignment = U_TA_BASELINE | U_TA_LEFT; + } else { + textalignment = U_TA_BASELINE | U_TA_RIGHT | U_TA_RTLREADING; + } + if (textalignment != htextalignment) { htextalignment = textalignment; rec = U_EMRSETTEXTALIGN_set(textalignment); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::text at U_EMRSETTEXTALIGN_set"); } } char *text2 = strdup(text); // because U_Utf8ToUtf16le calls iconv which does not like a const char * - uint16_t *unicode_text = U_Utf8ToUtf16le( text2, 0, NULL ); + uint16_t *unicode_text = U_Utf8ToUtf16le(text2, 0, NULL); free(text2); //translates Unicode to NonUnicode, if possible. If any translate, all will, and all to //the same font, because of code in Layout::print @@ -2005,85 +1553,92 @@ unsigned int PrintEmf::text(Inkscape::Extension::Print * /*mod*/, char const *te //Some funky ones: Arial, Times New Roman //Some not funky ones: Symbol and Verdana. //Without a huge table we cannot catch them all, so just the most common problem ones. - if(FixPPTCharPos){ - switch(newfont){ + FontfixParams params; + + if (FixPPTCharPos) { + switch (newfont) { case CVTSYM: - search_short_fflist("Convert To Symbol", &f1, &f2, &f3); - break; + _lookup_ppt_fontfix("Convert To Symbol", params); + break; case CVTZDG: - search_short_fflist("Convert To Zapf Dingbats", &f1, &f2, &f3); - break; + _lookup_ppt_fontfix("Convert To Zapf Dingbats", params); + break; case CVTWDG: - search_short_fflist("Convert To Wingdings", &f1, &f2, &f3); - break; + _lookup_ppt_fontfix("Convert To Wingdings", params); + break; default: //also CVTNON - search_short_fflist(style->text->font_family.value, &f1, &f2, &f3); - break; - } - if(f2 || f3){ - int irem = ((int) round(rot)) % 900 ; - if(irem <=9 && irem >= -9){ - fix90n=1; //assume vertical - rot = (double) (((int) round(rot)) - irem); - rotb = rot*M_PI/1800.0; - if( abs(rot) == 900.0 ){ fix90n = 2; } + _lookup_ppt_fontfix(style->text->font_family.value, params); + break; + } + if (params.f2 != 0 || params.f3 != 0) { + int irem = ((int) round(rot)) % 900 ; + if (irem <= 9 && irem >= -9) { + fix90n = 1; //assume vertical + rot = (double)(((int) round(rot)) - irem); + rotb = rot * M_PI / 1800.0; + if (abs(rot) == 900.0) { + fix90n = 2; + } + } } - } } - /* Note that text font sizes are stored into the EMF as fairly small integers and that limits their precision. + /* Note that text font sizes are stored into the EMF as fairly small integers and that limits their precision. The EMF output files produced here have been designed so that the integer valued pt sizes land right on an integer value in the EMF file, so those are exact. However, something like 18.1 pt will be - somewhat off, so that when it is read back in it becomes 18.11 pt. (For instance.) + somewhat off, so that when it is read back in it becomes 18.11 pt. (For instance.) */ - int textheight = round(-style->font_size.computed * PX2WORLD * std::min(tf.expansionX(),tf.expansionY())); - if (!hfont) { + int textheight = round(-style->font_size.computed * PX2WORLD * std::min(tf.expansionX(), tf.expansionY())); + if (!hfont) { // Get font face name. Use changed font name if unicode mapped to one // of the special fonts. uint16_t *wfacename; - if(!newfont){ wfacename = U_Utf8ToUtf16le(style->text->font_family.value, 0, NULL); } - else { wfacename = U_Utf8ToUtf16le(FontName(newfont), 0, NULL); } + if (!newfont) { + wfacename = U_Utf8ToUtf16le(style->text->font_family.value, 0, NULL); + } else { + wfacename = U_Utf8ToUtf16le(FontName(newfont), 0, NULL); + } // Scale the text to the minimum stretch. (It tends to stay within bounding rectangles even if // it was streteched asymmetrically.) Few applications support text from EMF which is scaled - // differently by height/width, so leave lfWidth alone. + // differently by height/width, so leave lfWidth alone. U_LOGFONT lf = logfont_set( - textheight, - 0, - round(rot), - round(rot), - transweight(style->font_weight.computed), - (style->font_style.computed == SP_CSS_FONT_STYLE_ITALIC), - style->text_decoration_line.underline, - style->text_decoration_line.line_through, - U_DEFAULT_CHARSET, - U_OUT_DEFAULT_PRECIS, - U_CLIP_DEFAULT_PRECIS, - U_DEFAULT_QUALITY, - U_DEFAULT_PITCH | U_FF_DONTCARE, - wfacename); - free(wfacename); - - rec = extcreatefontindirectw_set(&hfont, eht, (char *) &lf, NULL); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + textheight, + 0, + round(rot), + round(rot), + _translate_weight(style->font_weight.computed), + (style->font_style.computed == SP_CSS_FONT_STYLE_ITALIC), + style->text_decoration_line.underline, + style->text_decoration_line.line_through, + U_DEFAULT_CHARSET, + U_OUT_DEFAULT_PRECIS, + U_CLIP_DEFAULT_PRECIS, + U_DEFAULT_QUALITY, + U_DEFAULT_PITCH | U_FF_DONTCARE, + wfacename); + free(wfacename); + + rec = extcreatefontindirectw_set(&hfont, eht, (char *) &lf, NULL); + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::text at extcreatefontindirectw_set"); } } - + rec = selectobject_set(hfont, eht); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::text at selectobject_set"); } float rgb[3]; - sp_color_get_rgb_floatv( &style->fill.value.color, rgb ); - // only change the text color when it needs to be changed - if(memcmp(htextcolor_rgb,rgb,3*sizeof(float))){ - memcpy(htextcolor_rgb,rgb,3*sizeof(float)); - rec = U_EMRSETTEXTCOLOR_set(U_RGB(255*rgb[0], 255*rgb[1], 255*rgb[2])); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + sp_color_get_rgb_floatv(&style->fill.value.color, rgb); + // only change the text color when it needs to be changed + if (memcmp(htextcolor_rgb, rgb, 3 * sizeof(float))) { + memcpy(htextcolor_rgb, rgb, 3 * sizeof(float)); + rec = U_EMRSETTEXTCOLOR_set(U_RGB(255 * rgb[0], 255 * rgb[1], 255 * rgb[2])); + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::text at U_EMRSETTEXTCOLOR_set"); } } @@ -2091,26 +1646,24 @@ unsigned int PrintEmf::text(Inkscape::Extension::Print * /*mod*/, char const *te Geom::Point p2 = p * tf; //Handle super/subscripts and vertical kerning -/* Previously used this, but vertical kerning was not supported - p2[Geom::X] -= style->baseline_shift.computed * std::sin( rotb ); - p2[Geom::Y] -= style->baseline_shift.computed * std::cos( rotb ); -*/ - p2[Geom::X] += ky * std::sin( rotb ); - p2[Geom::Y] += ky * std::cos( rotb ); + /* Previously used this, but vertical kerning was not supported + p2[Geom::X] -= style->baseline_shift.computed * std::sin( rotb ); + p2[Geom::Y] -= style->baseline_shift.computed * std::cos( rotb ); + */ + p2[Geom::X] += ky * std::sin(rotb); + p2[Geom::Y] += ky * std::cos(rotb); //Conditionally handle compensation for PPT EMF import bug (affects PPT 2003-2010, at least) - if(FixPPTCharPos){ - if(fix90n==1){ //vertical - dx= 0.0; - dy= f3 * style->font_size.computed * std::cos( rotb ); - } - else if(fix90n==2){ //horizontal - dx= f2 * style->font_size.computed * std::sin( rotb ); - dy= 0.0; - } - else { - dx= f1 * style->font_size.computed * std::sin( rotb ); - dy= f1 * style->font_size.computed * std::cos( rotb ); + if (FixPPTCharPos) { + if (fix90n == 1) { //vertical + dx = 0.0; + dy = params.f3 * style->font_size.computed * std::cos(rotb); + } else if (fix90n == 2) { //horizontal + dx = params.f2 * style->font_size.computed * std::sin(rotb); + dy = 0.0; + } else { + dx = params.f1 * style->font_size.computed * std::sin(rotb); + dy = params.f1 * style->font_size.computed * std::cos(rotb); } p2[Geom::X] += dx; p2[Geom::Y] += dy; @@ -2123,48 +1676,51 @@ unsigned int PrintEmf::text(Inkscape::Extension::Print * /*mod*/, char const *te int32_t const ypos = (int32_t) round(p2[Geom::Y]); - // The number of characters in the string is a bit fuzzy. ndx, the number of entries in adx is + // The number of characters in the string is a bit fuzzy. ndx, the number of entries in adx is // the number of VISIBLE characters, since some may combine from the UTF (8 originally, // now 16) encoding. Conversely strlen() or wchar16len() would give the absolute number of // encoding characters. Unclear if emrtext wants the former or the latter but for now assume the former. - -// This is currently being smuggled in from caller as part of text, works -// MUCH better than the fallback hack below -// uint32_t *adx = dx_set(textheight, U_FW_NORMAL, slen); // dx is needed, this makes one up + + // This is currently being smuggled in from caller as part of text, works + // MUCH better than the fallback hack below + // uint32_t *adx = dx_set(textheight, U_FW_NORMAL, slen); // dx is needed, this makes one up char *rec2; - if(rtl>0){ - rec2 = emrtext_set( (U_POINTL) {xpos, ypos}, ndx, 2, unicode_text, U_ETO_NONE, U_RCL_DEF, adx); - } - else { // RTL text, U_TA_RTLREADING should be enough, but set this one too just in case - rec2 = emrtext_set( (U_POINTL) {xpos, ypos}, ndx, 2, unicode_text, U_ETO_RTLREADING, U_RCL_DEF, adx); + if (rtl > 0) { + rec2 = emrtext_set((U_POINTL) { + xpos, ypos + }, ndx, 2, unicode_text, U_ETO_NONE, U_RCL_DEF, adx); + } else { // RTL text, U_TA_RTLREADING should be enough, but set this one too just in case + rec2 = emrtext_set((U_POINTL) { + xpos, ypos + }, ndx, 2, unicode_text, U_ETO_RTLREADING, U_RCL_DEF, adx); } free(unicode_text); free(adx); - rec = U_EMREXTTEXTOUTW_set(U_RCL_DEF,U_GM_COMPATIBLE,1.0,1.0,(PU_EMRTEXT)rec2); + rec = U_EMREXTTEXTOUTW_set(U_RCL_DEF, U_GM_COMPATIBLE, 1.0, 1.0, (PU_EMRTEXT)rec2); free(rec2); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::text at U_EMREXTTEXTOUTW_set"); } // Must deselect an object before deleting it. Put the default font (back) in. rec = selectobject_set(U_DEVICE_DEFAULT_FONT, eht); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::text at selectobject_set"); } - if(hfont){ + if (hfont) { rec = deleteobject_set(&hfont, eht); - if(!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)){ + if (!rec || emf_append((PU_ENHMETARECORD)rec, et, U_REC_FREE)) { g_error("Fatal programming error in PrintEmf::text at deleteobject_set"); } } - + return 0; } -void PrintEmf::init (void) +void PrintEmf::init(void) { - read_system_fflist(); + _load_ppt_fontfix_data(); /* EMF print */ Inkscape::Extension::build_from_mem( diff --git a/src/extension/internal/emf-print.h b/src/extension/internal/emf-print.h index d42ba8a58..1546fcaea 100644 --- a/src/extension/internal/emf-print.h +++ b/src/extension/internal/emf-print.h @@ -8,55 +8,33 @@ * * Released under GNU GPL, read the file 'COPYING' for more information */ -#ifndef __INKSCAPE_EXTENSION_INTERNAL_PRINT_EMF_H__ -#define __INKSCAPE_EXTENSION_INTERNAL_PRINT_EMF_H__ - +#ifndef SEEN_INKSCAPE_EXTENSION_INTERNAL_EMF_PRINT_H +#define SEEN_INKSCAPE_EXTENSION_INTERNAL_EMF_PRINT_H #ifdef HAVE_CONFIG_H # include "config.h" #endif -#include "uemf.h" - -#include "extension/implementation/implementation.h" -//#include "extension/extension.h" +#include <libuemf/uemf.h> +#include "extension/internal/metafile-print.h" -#include <2geom/pathvector.h> #include "sp-gradient.h" #include "splivarot.h" // pieces for union on shapes #include "display/canvas-bpath.h" // for SPWindRule -#include <stack> - namespace Inkscape { namespace Extension { namespace Internal { -class PrintEmf : public Inkscape::Extension::Implementation::Implementation +class PrintEmf : public PrintMetafile { - double _width; - double _height; - U_RECTL rc; - - uint32_t htextalignment; uint32_t hbrush, hbrushOld, hpen, hpenOld; - uint32_t hpolyfillmode; // used to minimize redundant records that set this - float htextcolor_rgb[3]; // used to minimize redundant records that set this - - std::stack<Geom::Affine> m_tr_stack; - Geom::PathVector fill_pathv; - Geom::Affine fill_transform; - bool use_stroke; - bool use_fill; - bool simple_shape; - bool usebk; unsigned int print_pathv (Geom::PathVector const &pathv, const Geom::Affine &transform); bool print_simple_shape (Geom::PathVector const &pathv, const Geom::Affine &transform); public: - PrintEmf (void); - virtual ~PrintEmf (void); + PrintEmf(); /* Print functions */ virtual unsigned int setup (Inkscape::Extension::Print * module); @@ -65,8 +43,6 @@ public: virtual unsigned int finish (Inkscape::Extension::Print * module); /* Rendering methods */ - virtual unsigned int bind(Inkscape::Extension::Print *module, Geom::Affine const &transform, float opacity); - virtual unsigned int release(Inkscape::Extension::Print *module); virtual unsigned int fill (Inkscape::Extension::Print *module, Geom::PathVector const &pathv, Geom::Affine const &ctm, SPStyle const *style, @@ -87,36 +63,15 @@ public: virtual unsigned int comment(Inkscape::Extension::Print *module, const char * comment); virtual unsigned int text(Inkscape::Extension::Print *module, char const *text, Geom::Point const &p, SPStyle const *style); - bool textToPath (Inkscape::Extension::Print * ext); static void init (void); protected: - static void read_system_fflist(void); - static void search_long_fflist(const char *fontname, double *f1, double *f2, double *f3); - static void search_short_fflist(const char *fontname, double *f1, double *f2, double *f3); static void smuggle_adxkyrtl_out(const char *string, uint32_t **adx, double *ky, int *rtl, int *ndx, float scale); - U_COLORREF gethexcolor(uint32_t color); - uint32_t transweight(const unsigned int inkweight); int create_brush(SPStyle const *style, PU_COLORREF fcolor); void destroy_brush(); int create_pen(SPStyle const *style, const Geom::Affine &transform); void destroy_pen(); - - void hatch_classify(char *name, int *hatchType, U_COLORREF *hatchColor, U_COLORREF *bkColor); - void brush_classify(SPObject *parent, int depth, GdkPixbuf **epixbuf, int *hatchType, U_COLORREF *hatchColor, U_COLORREF *bkColor); - void swapRBinRGBA(char *px, int pixels); - - U_COLORREF avg_stop_color(SPGradient *gr); - int hold_gradient(void *gr, int mode); - inline U_COLORREF weight_opacity(U_COLORREF c1); - U_COLORREF weight_colors(U_COLORREF c1, U_COLORREF c2, double t); - Geom::PathVector center_ellipse_as_SVG_PathV(Geom::Point ctr, double rx, double ry, double F); - Geom::PathVector center_elliptical_ring_as_SVG_PathV(Geom::Point ctr, double rx1, double ry1, double rx2, double ry2, double F); - Geom::PathVector center_elliptical_hole_as_SVG_PathV(Geom::Point ctr, double rx, double ry, double F); - Geom::PathVector rect_cutter(Geom::Point ctr, Geom::Point pos, Geom::Point neg, Geom::Point width); - FillRule SPWR_to_LVFR(SPWindRule wr); - }; } /* namespace Internal */ diff --git a/src/extension/internal/gdkpixbuf-input.cpp b/src/extension/internal/gdkpixbuf-input.cpp index 994258ccc..117c2fe39 100644 --- a/src/extension/internal/gdkpixbuf-input.cpp +++ b/src/extension/internal/gdkpixbuf-input.cpp @@ -19,23 +19,18 @@ namespace Inkscape { namespace IO { -GdkPixbuf* pixbuf_new_from_file( char const *utf8name, GError **error ); +// this is defined in sp-image.cpp +GdkPixbuf* pixbuf_new_from_file(char const *filename, time_t &modTime, gchar*& pixPath); } namespace Extension { namespace Internal { -static std::set<Glib::ustring> create_lossy_set() -{ - std::set<Glib::ustring> lossy; - lossy.insert(".jpg"); - lossy.insert(".jpeg"); - return lossy; -} - SPDocument * GdkpixbufInput::open(Inkscape::Extension::Input *mod, char const *uri) { + // determine whether the image should be embedded + // TODO: this logic seems very wrong bool embed = false; Inkscape::Preferences *prefs = Inkscape::Preferences::get(); Glib::ustring attr = prefs->getString("/dialogs/import/link"); @@ -52,27 +47,14 @@ GdkpixbufInput::open(Inkscape::Extension::Input *mod, char const *uri) } SPDocument *doc = NULL; - GdkPixbuf *pb = Inkscape::IO::pixbuf_new_from_file( uri, NULL ); - static std::set<Glib::ustring> lossy = create_lossy_set(); - - if (pb) { /* We are readable */ - // TODO revisit: bool is_lossy; - Glib::ustring mime_type, ext; - Glib::ustring u = uri; - std::size_t dotpos = u.rfind('.'); - if (dotpos != Glib::ustring::npos) { - ext = u.substr(dotpos, Glib::ustring::npos); - } + gchar *pixpath = NULL; + time_t dummy; + GdkPixbuf *pb = Inkscape::IO::pixbuf_new_from_file(uri, dummy, pixpath); - // HACK: replace with something better based on GIO - if (!ext.empty() && lossy.find(ext) != lossy.end()) { - // TODO revisit: is_lossy = true; - mime_type = "image/jpeg"; - } else { - // TODO revisit: is_lossy = false; - mime_type = "image/png"; - } + // TODO: the pixbuf is created again from the base64-encoded attribute in SPImage. + // Find a way to create the pixbuf only once. + if (pb) { doc = SPDocument::createNewDoc(NULL, TRUE, TRUE); bool saved = DocumentUndo::getUndoSensitive(doc); DocumentUndo::setUndoSensitive(doc, false); // no need to undo in this temporary document @@ -85,40 +67,22 @@ GdkpixbufInput::open(Inkscape::Extension::Input *mod, char const *uri) double xscale = 1; double yscale = 1; - gchar const *str = gdk_pixbuf_get_option( pb, "Inkscape::DpiX" ); - if ( str ) { - gint dpi = atoi(str); - if ( dpi > 0 && dpi != 72 ) { - xscale = 72.0 / (double)dpi; - } - } else { - if (!ir && !forcexdpi) - ir = new ImageResolution(uri); - if (ir && ir->ok()) - xscale = 900.0 / floor(10.*ir->x() + .5); // round-off to 0.1 dpi - else - xscale = 90.0 / defaultxdpi; - } - width *= xscale; - str = gdk_pixbuf_get_option( pb, "Inkscape::DpiY" ); - if ( str ) { - gint dpi = atoi(str); - if ( dpi > 0 && dpi != 72 ) { - yscale = 72.0 / (double)dpi; - } + if (!ir && !forcexdpi) { + ir = new ImageResolution(uri); + } + if (ir && ir->ok()) { + xscale = 900.0 / floor(10.*ir->x() + .5); // round-off to 0.1 dpi + yscale = 900.0 / floor(10.*ir->y() + .5); } else { - if (!ir && !forcexdpi) - ir = new ImageResolution(uri); - if (ir && ir->ok()) - yscale = 900.0 / floor(10.*ir->y() + .5); // round-off to 0.1 dpi - else - yscale = 90.0 / defaultxdpi; + xscale = 90.0 / defaultxdpi; + yscale = 90.0 / defaultxdpi; } + + width *= xscale; height *= yscale; - if (ir) - delete ir; + delete ir; // deleting NULL is safe // Create image node Inkscape::XML::Document *xml_doc = doc->getReprDoc(); @@ -127,7 +91,7 @@ GdkpixbufInput::open(Inkscape::Extension::Input *mod, char const *uri) sp_repr_set_svg_double(image_node, "height", height); if (embed) { - sp_embed_image(image_node, pb, mime_type); + sp_embed_image(image_node, pb); } else { // convert filename to uri gchar* _uri = g_filename_to_uri(uri, NULL, NULL); @@ -139,6 +103,7 @@ GdkpixbufInput::open(Inkscape::Extension::Input *mod, char const *uri) } } + g_object_set_data(G_OBJECT(pb), "cairo_surface", NULL); g_object_unref(pb); // Add it to the current layer diff --git a/src/extension/internal/image-resolution.cpp b/src/extension/internal/image-resolution.cpp index 3c254a59c..a9d33e831 100644 --- a/src/extension/internal/image-resolution.cpp +++ b/src/extension/internal/image-resolution.cpp @@ -14,13 +14,21 @@ #include "image-resolution.h" #define IR_TRY_PNG 1 +#include <png.h> + #ifdef HAVE_EXIF -#define IR_TRY_EXIF 1 +#include <math.h> +#include <libexif/exif-data.h> #endif + #define IR_TRY_EXIV 0 + #ifdef HAVE_JPEG #define IR_TRY_JFIF 1 +#include <jpeglib.h> +#include <setjmp.h> #endif + #ifdef WITH_IMAGE_MAGICK #include <Magick++.h> #endif @@ -62,8 +70,6 @@ double ImageResolution::y() const { #if IR_TRY_PNG - -#include <png.h> static bool haspngheader(FILE *fp) { unsigned char header[8]; @@ -133,9 +139,6 @@ void ImageResolution::readpng(char const *) { #if IR_TRY_EXIF -#include <math.h> -#include <libexif/exif-data.h> - static double exifDouble(ExifEntry *entry, ExifByteOrder byte_order) { switch (entry->format) { case EXIF_FORMAT_BYTE: { @@ -264,9 +267,6 @@ void ImageResolution::readexiv(char const *) { #if IR_TRY_JFIF -#include <jpeglib.h> -#include <setjmp.h> - static void irjfif_error_exit(j_common_ptr cinfo) { longjmp(*(jmp_buf*)cinfo->client_data, 1); } diff --git a/src/extension/internal/latex-text-renderer.cpp b/src/extension/internal/latex-text-renderer.cpp index e19f0bc7f..7e6941232 100644 --- a/src/extension/internal/latex-text-renderer.cpp +++ b/src/extension/internal/latex-text-renderer.cpp @@ -98,7 +98,9 @@ latex_render_document_text_to_file( SPDocument *doc, gchar const *filename, LaTeXTextRenderer::LaTeXTextRenderer(bool pdflatex) : _stream(NULL), _filename(NULL), - _pdflatex(pdflatex) + _pdflatex(pdflatex), + _omittext_state(EMPTY), + _omittext_page(1) { push_transform(Geom::identity()); } @@ -262,6 +264,11 @@ LaTeXTextRenderer::sp_use_render(SPItem *item) void LaTeXTextRenderer::sp_text_render(SPItem *item) { + // Only PDFLaTeX supports importing a single page of a graphics file, + // so only PDF backend gets interleaved text/graphics + if (_pdflatex && _omittext_state == GRAPHIC_ON_TOP) + _omittext_state = NEW_PAGE_ON_GRAPHIC; + SPText *textobj = SP_TEXT (item); SPStyle *style = item->style; @@ -395,6 +402,11 @@ Flowtext is possible by using a minipage! :) Flowing in rectangle is possible, not in arb shape. */ + // Only PDFLaTeX supports importing a single page of a graphics file, + // so only PDF backend gets interleaved text/graphics + if (_pdflatex && _omittext_state == GRAPHIC_ON_TOP) + _omittext_state = NEW_PAGE_ON_GRAPHIC; + SPFlowtext *flowtext = SP_FLOWTEXT(item); SPStyle *style = item->style; @@ -556,8 +568,13 @@ LaTeXTextRenderer::sp_item_invoke_render(SPItem *item) return sp_text_render(item); } else if (SP_IS_FLOWTEXT(item)) { return sp_flowtext_render(item); + } else { + // Only PDFLaTeX supports importing a single page of a graphics file, + // so only PDF backend gets interleaved text/graphics + if (_pdflatex && (_omittext_state == EMPTY || _omittext_state == NEW_PAGE_ON_GRAPHIC)) + writeGraphicPage(); + _omittext_state = GRAPHIC_ON_TOP; } - // We are not interested in writing the other SPItem types to LaTeX } void @@ -568,6 +585,20 @@ LaTeXTextRenderer::renderItem(SPItem *item) pop_transform(); } +void +LaTeXTextRenderer::writeGraphicPage(void) { + Inkscape::SVGOStringStream os; + os.setf(std::ios::fixed); // no scientific notation + + // strip pathname, as it is probably desired. Having a specific path in the TeX file is not convenient. + if (_pdflatex) + os << " \\put(0,0){\\includegraphics[width=\\unitlength,page=" << _omittext_page++ << "]{" << _filename << "}}%\n"; + else + os << " \\put(0,0){\\includegraphics[width=\\unitlength]{" << _filename << "}}%\n"; + + fprintf(_stream, "%s", os.str().c_str()); +} + bool LaTeXTextRenderer::setupDocument(SPDocument *doc, bool pageBoundingBox, float bleedmargin_px, SPItem *base) { @@ -625,11 +656,12 @@ LaTeXTextRenderer::setupDocument(SPDocument *doc, bool pageBoundingBox, float bl os << " \\makeatother%\n"; os << " \\begin{picture}(" << _width << "," << _height << ")%\n"; - // strip pathname, as it is probably desired. Having a specific path in the TeX file is not convenient. - os << " \\put(0,0){\\includegraphics[width=\\unitlength]{" << _filename << "}}%\n"; fprintf(_stream, "%s", os.str().c_str()); + if (!_pdflatex) + writeGraphicPage(); + return true; } diff --git a/src/extension/internal/latex-text-renderer.h b/src/extension/internal/latex-text-renderer.h index e51c2d245..77d12bc61 100644 --- a/src/extension/internal/latex-text-renderer.h +++ b/src/extension/internal/latex-text-renderer.h @@ -47,11 +47,20 @@ public: void renderItem(SPItem *item); protected: + enum LaTeXOmitTextPageState { + EMPTY, + GRAPHIC_ON_TOP, + NEW_PAGE_ON_GRAPHIC + }; + FILE * _stream; gchar * _filename; bool _pdflatex; /** true if ouputting for pdfLaTeX*/ + LaTeXOmitTextPageState _omittext_state; + gulong _omittext_page; + void push_transform(Geom::Affine const &transform); Geom::Affine const & transform(); void pop_transform(); @@ -60,6 +69,8 @@ protected: void writePreamble(); void writePostamble(); + void writeGraphicPage(); + void sp_item_invoke_render(SPItem *item); void sp_root_render(SPRoot *item); void sp_group_render(SPItem *item); diff --git a/src/extension/internal/metafile-print.cpp b/src/extension/internal/metafile-print.cpp new file mode 100644 index 000000000..9d080bd96 --- /dev/null +++ b/src/extension/internal/metafile-print.cpp @@ -0,0 +1,491 @@ +/** @file + * @brief Metafile printing - common routines + *//* + * Authors: + * Krzysztof Kosiński <tweenk.pl@gmail.com> + * + * Copyright (C) 2013 Authors + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <cstring> +#include <fstream> +#include <glib.h> +#include <glibmm/miscutils.h> +#include <2geom/rect.h> +#include <2geom/curves.h> +#include <2geom/svg-path-parser.h> + +#include "extension/internal/metafile-print.h" +#include "extension/print.h" +#include "path-prefix.h" +#include "sp-gradient.h" +#include "sp-image.h" +#include "sp-linear-gradient.h" +#include "sp-pattern.h" +#include "sp-radial-gradient.h" +#include "style.h" + +namespace Inkscape { +namespace Extension { +namespace Internal { + +bool PrintMetafile::_ppt_fontfix_read = false; +PrintMetafile::FontfixMap PrintMetafile::_ppt_fixable_fonts; + +PrintMetafile::~PrintMetafile() +{ +#ifndef G_OS_WIN32 + // restore default signal handling for SIGPIPE + (void) signal(SIGPIPE, SIG_DFL); +#endif + return; +} + +bool PrintMetafile::textToPath(Inkscape::Extension::Print *ext) +{ + return ext->get_param_bool("textToPath"); +} + +unsigned int PrintMetafile::bind(Inkscape::Extension::Print * /*mod*/, Geom::Affine const &transform, float /*opacity*/) +{ + if (!m_tr_stack.empty()) { + Geom::Affine tr_top = m_tr_stack.top(); + m_tr_stack.push(transform * tr_top); + } else { + m_tr_stack.push(transform); + } + + return 1; +} + +unsigned int PrintMetafile::release(Inkscape::Extension::Print * /*mod*/) +{ + m_tr_stack.pop(); + return 1; +} + +bool PrintMetafile::_load_ppt_fontfix_data() //this is not called by any other source files +{ + static bool ppt_fontfix_available = false; + + if (_ppt_fontfix_read) return ppt_fontfix_available; + _ppt_fontfix_read = true; + + // add default entry + _ppt_fixable_fonts.insert(std::make_pair(Glib::ustring(""), FontfixParams())); + + std::string fontfix_path = Glib::build_filename(INKSCAPE_EXTENSIONDIR, "fontfix.conf"); + std::ifstream fontfix_file(fontfix_path.c_str(), std::ios::in); + + if (!fontfix_file.is_open()) { + g_warning("Unable to open PowerPoint fontfix file: %s\n" + "PowerPoint ungrouping compensation in WMF/EMF export will not be available.", + fontfix_path.c_str()); + return (ppt_fontfix_available = false); + } + + char *oldlocale = g_strdup(setlocale(LC_NUMERIC, NULL)); + setlocale(LC_NUMERIC, "C"); + + std::string instr; + while (std::getline(fontfix_file, instr)) { + if (instr[0] == '#') { + continue; + } + // not a comment, get the 4 values from the line + FontfixParams params; + char fontname[128]; + int elements = sscanf(instr.c_str(), "%lf %lf %lf %127[^\n]", + ¶ms.f1, ¶ms.f2, ¶ms.f3, &fontname[0]); + if (elements != 4) { + g_warning("Malformed line in %s: %s\n", fontfix_path.c_str(), instr.c_str()); + continue; + } + _ppt_fixable_fonts.insert(std::make_pair(Glib::ustring(fontname), params)); + } + fontfix_file.close(); // not strictly necessary + + setlocale(LC_NUMERIC, oldlocale); + g_free(oldlocale); + return (ppt_fontfix_available = true); +} + +// Finds font fix parameters for the given fontname. +void PrintMetafile::_lookup_ppt_fontfix(Glib::ustring const &fontname, FontfixParams ¶ms) +{ + if (!_ppt_fontfix_read) _load_ppt_fontfix_data(); + + FontfixMap::iterator f = _ppt_fixable_fonts.find(fontname); + if (f != _ppt_fixable_fonts.end()) { + params = f->second; + } +} + +U_COLORREF PrintMetafile::_gethexcolor(uint32_t color) +{ + U_COLORREF out; + out = U_RGB( + (color >> 16) & 0xFF, + (color >> 8) & 0xFF, + (color >> 0) & 0xFF + ); + return out; +} + +// Translate Inkscape weights to EMF weights. +uint32_t PrintMetafile::_translate_weight(unsigned inkweight) +{ + switch (inkweight) { + // 400 is tested first, as it is the most common case + case SP_CSS_FONT_WEIGHT_400: return U_FW_NORMAL; + case SP_CSS_FONT_WEIGHT_100: return U_FW_THIN; + case SP_CSS_FONT_WEIGHT_200: return U_FW_EXTRALIGHT; + case SP_CSS_FONT_WEIGHT_300: return U_FW_LIGHT; + case SP_CSS_FONT_WEIGHT_500: return U_FW_MEDIUM; + case SP_CSS_FONT_WEIGHT_600: return U_FW_SEMIBOLD; + case SP_CSS_FONT_WEIGHT_700: return U_FW_BOLD; + case SP_CSS_FONT_WEIGHT_800: return U_FW_EXTRABOLD; + case SP_CSS_FONT_WEIGHT_900: return U_FW_HEAVY; + default: return U_FW_NORMAL; + } +} + +/* opacity weighting of two colors as float. v1 is the color, op is its opacity, v2 is the background color */ +inline float opweight(float v1, float v2, float op) +{ + return v1 * op + v2 * (1.0 - op); +} + +U_COLORREF PrintMetafile::avg_stop_color(SPGradient *gr) +{ + U_COLORREF cr; + int last = gr->vector.stops.size() - 1; + if (last >= 1) { + float rgbs[3]; + float rgbe[3]; + float ops, ope; + + ops = gr->vector.stops[0 ].opacity; + ope = gr->vector.stops[last].opacity; + sp_color_get_rgb_floatv(&gr->vector.stops[0 ].color, rgbs); + sp_color_get_rgb_floatv(&gr->vector.stops[last].color, rgbe); + + /* Replace opacity at start & stop with that fraction background color, then average those two for final color. */ + cr = U_RGB( + 255 * ((opweight(rgbs[0], gv.rgb[0], ops) + opweight(rgbe[0], gv.rgb[0], ope)) / 2.0), + 255 * ((opweight(rgbs[1], gv.rgb[1], ops) + opweight(rgbe[1], gv.rgb[1], ope)) / 2.0), + 255 * ((opweight(rgbs[2], gv.rgb[2], ops) + opweight(rgbe[2], gv.rgb[2], ope)) / 2.0) + ); + } else { + cr = U_RGB(0, 0, 0); // The default fill + } + return cr; +} + +#define clrweight(a,b,t) ((1-t)*((double) a) + (t)*((double) b)) +U_COLORREF PrintMetafile::weight_opacity(U_COLORREF c1) +{ + float opa = c1.Reserved / 255.0; + U_COLORREF result = U_RGB( + 255 * opweight((float)c1.Red / 255.0, gv.rgb[0], opa), + 255 * opweight((float)c1.Green / 255.0, gv.rgb[1], opa), + 255 * opweight((float)c1.Blue / 255.0, gv.rgb[2], opa) + ); + return result; +} + +U_COLORREF PrintMetafile::weight_colors(U_COLORREF c1, U_COLORREF c2, double t) +{ + U_COLORREF result; + result.Red = clrweight(c1.Red, c2.Red, t); + result.Green = clrweight(c1.Green, c2.Green, t); + result.Blue = clrweight(c1.Blue, c2.Blue, t); + result.Reserved = clrweight(c1.Reserved, c2.Reserved, t); + + // now handle the opacity, mix the RGB with background at the weighted opacity + + if (result.Reserved != 255) { + result = weight_opacity(result); + } + + return result; +} + +// Extract hatchType, hatchColor from a name like +// EMFhatch<hatchType>_<hatchColor> +// Where the first one is a number and the second a color in hex. +// hatchType and hatchColor have been set with defaults before this is called. +// +void PrintMetafile::hatch_classify(char *name, int *hatchType, U_COLORREF *hatchColor, U_COLORREF *bkColor) +{ + int val; + uint32_t hcolor = 0; + uint32_t bcolor = 0; + + // name should be EMFhatch or WMFhatch but *MFhatch will be accepted + if (0 != strncmp(&name[1], "MFhatch", 7)) { + return; // not anything we can parse + } + name += 8; // EMFhatch already detected + val = 0; + while (*name && isdigit(*name)) { + val = 10 * val + *name - '0'; + name++; + } + *hatchType = val; + if (*name != '_' || val > U_HS_DITHEREDBKCLR) { // wrong syntax, cannot classify + *hatchType = -1; + } else { + name++; + if (2 != sscanf(name, "%X_%X", &hcolor, &bcolor)) { // not a pattern with background + if (1 != sscanf(name, "%X", &hcolor)) { + *hatchType = -1; // not a pattern, cannot classify + } + *hatchColor = _gethexcolor(hcolor); + } else { + *hatchColor = _gethexcolor(hcolor); + *bkColor = _gethexcolor(bcolor); + usebk = true; + } + } + /* Everything > U_HS_SOLIDCLR is solid, just specify the color in the brush rather than messing around with background or textcolor */ + if (*hatchType > U_HS_SOLIDCLR) { + *hatchType = U_HS_SOLIDCLR; + } +} + +// +// Recurse down from a brush pattern, try to figure out what it is. +// If an image is found set a pointer to the epixbuf, else set that to NULL +// If a pattern is found with a name like [EW]MFhatch3_3F7FFF return hatchType=3, hatchColor=3F7FFF (as a uint32_t), +// otherwise hatchType is set to -1 and hatchColor is not defined. +// + +void PrintMetafile::brush_classify(SPObject *parent, int depth, GdkPixbuf **epixbuf, int *hatchType, U_COLORREF *hatchColor, U_COLORREF *bkColor) +{ + if (depth == 0) { + *epixbuf = NULL; + *hatchType = -1; + *hatchColor = U_RGB(0, 0, 0); + *bkColor = U_RGB(255, 255, 255); + } + depth++; + // first look along the pattern chain, if there is one + if (SP_IS_PATTERN(parent)) { + for (SPPattern *pat_i = SP_PATTERN(parent); pat_i != NULL; pat_i = pat_i->ref ? pat_i->ref->getObject() : NULL) { + if (SP_IS_IMAGE(pat_i)) { + *epixbuf = ((SPImage *)pat_i)->pixbuf; + return; + } + char temp[32]; // large enough + temp[31] = '\0'; + strncpy(temp, pat_i->getAttribute("id"), 31); // Some names may be longer than [EW]MFhatch#_###### + hatch_classify(temp, hatchType, hatchColor, bkColor); + if (*hatchType != -1) { + return; + } + + // still looking? Look at this pattern's children, if there are any + SPObject *child = pat_i->firstChild(); + while (child && !(*epixbuf) && (*hatchType == -1)) { + brush_classify(child, depth, epixbuf, hatchType, hatchColor, bkColor); + child = child->getNext(); + } + } + } else if (SP_IS_IMAGE(parent)) { + *epixbuf = ((SPImage *)parent)->pixbuf; + return; + } else { // some inkscape rearrangements pass through nodes between pattern and image which are not classified as either. + SPObject *child = parent->firstChild(); + while (child && !(*epixbuf) && (*hatchType == -1)) { + brush_classify(child, depth, epixbuf, hatchType, hatchColor, bkColor); + child = child->getNext(); + } + } +} + +//swap R/B in 4 byte pixel +void PrintMetafile::swapRBinRGBA(char *px, int pixels) +{ + char tmp; + for (int i = 0; i < pixels * 4; px += 4, i += 4) { + tmp = px[2]; + px[2] = px[0]; + px[0] = tmp; + } +} + +int PrintMetafile::hold_gradient(void *gr, int mode) +{ + gv.mode = mode; + gv.grad = gr; + if (mode == DRAW_RADIAL_GRADIENT) { + SPRadialGradient *rg = (SPRadialGradient *) gr; + gv.r = rg->r.computed; // radius, but of what??? + gv.p1 = Geom::Point(rg->cx.computed, rg->cy.computed); // center + gv.p2 = Geom::Point(gv.r, 0) + gv.p1; // xhandle + gv.p3 = Geom::Point(0, -gv.r) + gv.p1; // yhandle + if (rg->gradientTransform_set) { + gv.p1 = gv.p1 * rg->gradientTransform; + gv.p2 = gv.p2 * rg->gradientTransform; + gv.p3 = gv.p3 * rg->gradientTransform; + } + } else if (mode == DRAW_LINEAR_GRADIENT) { + SPLinearGradient *lg = (SPLinearGradient *) gr; + gv.r = 0; // unused + gv.p1 = Geom::Point(lg->x1.computed, lg->y1.computed); // start + gv.p2 = Geom::Point(lg->x2.computed, lg->y2.computed); // end + gv.p3 = Geom::Point(0, 0); // unused + if (lg->gradientTransform_set) { + gv.p1 = gv.p1 * lg->gradientTransform; + gv.p2 = gv.p2 * lg->gradientTransform; + } + } else { + g_error("Fatal programming error, hold_gradient() in metafile-print.cpp called with invalid draw mode"); + } + return 1; +} + +/* convert from center ellipse to SVGEllipticalArc ellipse + + From: + http://www.w3.org/TR/SVG/implnote.html#ArcConversionEndpointToCenter + A point (x,y) on the arc can be found by: + + {x,y} = {cx,cy} + {cosF,-sinF,sinF,cosF} x {rxcosT,rysinT} + + where + {cx,cy} is the center of the ellipse + F is the rotation angle of the X axis of the ellipse from the true X axis + T is the rotation angle around the ellipse + {,,,} is the rotation matrix + rx,ry are the radii of the ellipse's axes + + For SVG parameterization need two points. + Arbitrarily we can use T=0 and T=pi + Since the sweep is 180 the flags are always 0: + + F is in RADIANS, but the SVGEllipticalArc needs degrees! + +*/ +Geom::PathVector PrintMetafile::center_ellipse_as_SVG_PathV(Geom::Point ctr, double rx, double ry, double F) +{ + using Geom::X; + using Geom::Y; + double x1, y1, x2, y2; + Geom::Path SVGep; + + x1 = ctr[X] + cos(F) * rx * cos(0) + sin(-F) * ry * sin(0); + y1 = ctr[Y] + sin(F) * rx * cos(0) + cos(F) * ry * sin(0); + x2 = ctr[X] + cos(F) * rx * cos(M_PI) + sin(-F) * ry * sin(M_PI); + y2 = ctr[Y] + sin(F) * rx * cos(M_PI) + cos(F) * ry * sin(M_PI); + + char text[256]; + sprintf(text, " M %f,%f A %f %f %f 0 0 %f %f A %f %f %f 0 0 %f %f z", x1, y1, rx, ry, F * 360. / (2.*M_PI), x2, y2, rx, ry, F * 360. / (2.*M_PI), x1, y1); + std::vector<Geom::Path> outres = Geom::parse_svg_path(text); + return outres; +} + + +/* rx2,ry2 must be larger than rx1,ry1! + angle is in RADIANS +*/ +Geom::PathVector PrintMetafile::center_elliptical_ring_as_SVG_PathV(Geom::Point ctr, double rx1, double ry1, double rx2, double ry2, double F) +{ + using Geom::X; + using Geom::Y; + double x11, y11, x12, y12; + double x21, y21, x22, y22; + double degrot = F * 360. / (2.*M_PI); + + x11 = ctr[X] + cos(F) * rx1 * cos(0) + sin(-F) * ry1 * sin(0); + y11 = ctr[Y] + sin(F) * rx1 * cos(0) + cos(F) * ry1 * sin(0); + x12 = ctr[X] + cos(F) * rx1 * cos(M_PI) + sin(-F) * ry1 * sin(M_PI); + y12 = ctr[Y] + sin(F) * rx1 * cos(M_PI) + cos(F) * ry1 * sin(M_PI); + + x21 = ctr[X] + cos(F) * rx2 * cos(0) + sin(-F) * ry2 * sin(0); + y21 = ctr[Y] + sin(F) * rx2 * cos(0) + cos(F) * ry2 * sin(0); + x22 = ctr[X] + cos(F) * rx2 * cos(M_PI) + sin(-F) * ry2 * sin(M_PI); + y22 = ctr[Y] + sin(F) * rx2 * cos(M_PI) + cos(F) * ry2 * sin(M_PI); + + char text[512]; + sprintf(text, " M %f,%f A %f %f %f 0 1 %f %f A %f %f %f 0 1 %f %f z M %f,%f A %f %f %f 0 0 %f %f A %f %f %f 0 0 %f %f z", + x11, y11, rx1, ry1, degrot, x12, y12, rx1, ry1, degrot, x11, y11, + x21, y21, rx2, ry2, degrot, x22, y22, rx2, ry2, degrot, x21, y21); + std::vector<Geom::Path> outres = Geom::parse_svg_path(text); + + return outres; +} + +/* Elliptical hole in a large square extending from -50k to +50k */ +Geom::PathVector PrintMetafile::center_elliptical_hole_as_SVG_PathV(Geom::Point ctr, double rx, double ry, double F) +{ + using Geom::X; + using Geom::Y; + double x1, y1, x2, y2; + Geom::Path SVGep; + + x1 = ctr[X] + cos(F) * rx * cos(0) + sin(-F) * ry * sin(0); + y1 = ctr[Y] + sin(F) * rx * cos(0) + cos(F) * ry * sin(0); + x2 = ctr[X] + cos(F) * rx * cos(M_PI) + sin(-F) * ry * sin(M_PI); + y2 = ctr[Y] + sin(F) * rx * cos(M_PI) + cos(F) * ry * sin(M_PI); + + char text[256]; + sprintf(text, " M %f,%f A %f %f %f 0 0 %f %f A %f %f %f 0 0 %f %f z M 50000,50000 50000,-50000 -50000,-50000 -50000,50000 z", + x1, y1, rx, ry, F * 360. / (2.*M_PI), x2, y2, rx, ry, F * 360. / (2.*M_PI), x1, y1); + std::vector<Geom::Path> outres = Geom::parse_svg_path(text); + return outres; +} + +/* rectangular cutter. +ctr "center" of rectangle (might not actually be in the center with respect to leading/trailing edges +pos vector from center to leading edge +neg vector from center to trailing edge +width vector to side edge +*/ +Geom::PathVector PrintMetafile::rect_cutter(Geom::Point ctr, Geom::Point pos, Geom::Point neg, Geom::Point width) +{ + std::vector<Geom::Path> outres; + Geom::Path cutter; + cutter.start(ctr + pos - width); + cutter.appendNew<Geom::LineSegment>(ctr + pos + width); + cutter.appendNew<Geom::LineSegment>(ctr + neg + width); + cutter.appendNew<Geom::LineSegment>(ctr + neg - width); + cutter.close(); + outres.push_back(cutter); + return outres; +} + +/* Convert from SPWindRule to livarot's FillRule + This is similar to what sp_selected_path_boolop() does +*/ +FillRule PrintMetafile::SPWR_to_LVFR(SPWindRule wr) +{ + FillRule fr; + if (wr == SP_WIND_RULE_EVENODD) { + fr = fill_oddEven; + } else { + fr = fill_nonZero; + } + return fr; +} + +} // namespace Internal +} // namespace Extension +} // namespace Inkscape + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/src/extension/internal/metafile-print.h b/src/extension/internal/metafile-print.h new file mode 100644 index 000000000..e64ba92f3 --- /dev/null +++ b/src/extension/internal/metafile-print.h @@ -0,0 +1,132 @@ +/** @file + * @brief Metafile printing - common functions + *//* + * Authors: + * Krzysztof Kosiński <tweenk.pl@gmail.com> + * + * Copyright (C) 2013 Authors + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifndef SEEN_INKSCAPE_EXTENSION_INTERNAL_METAFILE_PRINT_H +#define SEEN_INKSCAPE_EXTENSION_INTERNAL_METAFILE_PRINT_H + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <map> +#include <stack> +#include <glibmm/ustring.h> +#include <libuemf/uemf.h> +#include <2geom/affine.h> +#include <2geom/pathvector.h> + +#include "extension/implementation/implementation.h" +#include "splivarot.h" +#include "display/canvas-bpath.h" + +struct SPGradient; +struct SPObject; + +namespace Inkscape { +namespace Extension { +namespace Internal { + +enum MFDrawMode {DRAW_PAINT, DRAW_PATTERN, DRAW_IMAGE, DRAW_LINEAR_GRADIENT, DRAW_RADIAL_GRADIENT}; + +struct FontfixParams { + double f1; //Vertical (rotating) offset factor (* font height) + double f2; //Vertical (nonrotating) offset factor (* font height) + double f3; //Horizontal (nonrotating) offset factor (* font height) + FontfixParams() : f1(0), f2(0), f3(0) {} +}; + +class PrintMetafile + : public Inkscape::Extension::Implementation::Implementation +{ +public: + PrintMetafile() {} + ~PrintMetafile(); + + bool textToPath (Inkscape::Extension::Print * ext); + unsigned int bind(Inkscape::Extension::Print *module, Geom::Affine const &transform, float opacity); + unsigned int release(Inkscape::Extension::Print *module); + +protected: + struct GRADVALUES { + Geom::Point p1; // center or start + Geom::Point p2; // xhandle or end + Geom::Point p3; // yhandle or unused + double r; // radius or unused + void *grad; // to access the stops information + int mode; // DRAW_LINEAR_GRADIENT or DRAW_RADIAL_GRADIENT, if GRADVALUES is valid, else any value + U_COLORREF bgc; // document background color, this is as good a place as any to keep it + float rgb[3]; // also background color, but as 0-1 float. + }; + + double _width; + double _height; + U_RECTL rc; + + uint32_t htextalignment; + uint32_t hpolyfillmode; // used to minimize redundant records that set this + float htextcolor_rgb[3]; // used to minimize redundant records that set this + + std::stack<Geom::Affine> m_tr_stack; + Geom::PathVector fill_pathv; + Geom::Affine fill_transform; + bool use_stroke; + bool use_fill; + bool simple_shape; + bool usebk; + + GRADVALUES gv; + + static bool _load_ppt_fontfix_data(); + static void _lookup_ppt_fontfix(Glib::ustring const &fontname, FontfixParams &); + static U_COLORREF _gethexcolor(uint32_t color); + static uint32_t _translate_weight(unsigned inkweight); + + U_COLORREF avg_stop_color(SPGradient *gr); + U_COLORREF weight_opacity(U_COLORREF c1); + U_COLORREF weight_colors(U_COLORREF c1, U_COLORREF c2, double t); + + void hatch_classify(char *name, int *hatchType, U_COLORREF *hatchColor, U_COLORREF *bkColor); + void brush_classify(SPObject *parent, int depth, GdkPixbuf **epixbuf, int *hatchType, U_COLORREF *hatchColor, U_COLORREF *bkColor); + static void swapRBinRGBA(char *px, int pixels); + + int hold_gradient(void *gr, int mode); + static Geom::PathVector center_ellipse_as_SVG_PathV(Geom::Point ctr, double rx, double ry, double F); + static Geom::PathVector center_elliptical_ring_as_SVG_PathV(Geom::Point ctr, double rx1, double ry1, double rx2, double ry2, double F); + static Geom::PathVector center_elliptical_hole_as_SVG_PathV(Geom::Point ctr, double rx, double ry, double F); + static Geom::PathVector rect_cutter(Geom::Point ctr, Geom::Point pos, Geom::Point neg, Geom::Point width); + static FillRule SPWR_to_LVFR(SPWindRule wr); + + virtual int create_brush(SPStyle const *style, PU_COLORREF fcolor) = 0; + virtual void destroy_brush() = 0; + virtual int create_pen(SPStyle const *style, const Geom::Affine &transform) = 0; + virtual void destroy_pen() = 0; + +private: + typedef std::map<Glib::ustring, FontfixParams> FontfixMap; + static FontfixMap _ppt_fixable_fonts; + static bool _ppt_fontfix_read; +}; + +} // namespace Internal +} // namespace Extension +} // namespace Inkscape + +#endif + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/src/extension/internal/text_reassemble.c b/src/extension/internal/text_reassemble.c index d16c060de..9ed6c9c3a 100644 --- a/src/extension/internal/text_reassemble.c +++ b/src/extension/internal/text_reassemble.c @@ -79,7 +79,7 @@ extern "C" { #endif #include "text_reassemble.h" -#include "uemf_utf.h" /* For a couple of text functions. Exact copy from libUEMF. */ +#include <libuemf/uemf_utf.h> /* For a couple of text functions. Exact copy from libUEMF. */ #include <float.h> /* Code generated by make_ucd_mn_table.c using: diff --git a/src/extension/internal/wmf-inout.cpp b/src/extension/internal/wmf-inout.cpp index 7147b3433..451d94c0e 100644 --- a/src/extension/internal/wmf-inout.cpp +++ b/src/extension/internal/wmf-inout.cpp @@ -30,7 +30,8 @@ #include <stdio.h> #include <stdlib.h> #include <stdint.h> -#define EMF_DRIVER //work around SPStyle issue, MUST be EMF, not WMF +#include <libuemf/symbol_convert.h> + #include "sp-root.h" #include "sp-path.h" #include "style.h" @@ -45,7 +46,6 @@ #include "util/units.h" #include "clear-n_.h" #include "document.h" -#include "libunicode-convert/unicode-convert.h" #include "wmf-inout.h" @@ -316,9 +316,6 @@ Wmf::save(Inkscape::Extension::Output *mod, SPDocument *doc, gchar const *filena } -enum drawmode {DRAW_PAINT, DRAW_PATTERN, DRAW_IMAGE}; // apply to either fill or stroke - - /* WMF has no worldTranform, so this always returns 1.0. Retain it to keep WMF and WMF in sync as much as possible.*/ double Wmf::current_scale(PWMF_CALLBACK_DATA d){ return 1.0; diff --git a/src/extension/internal/wmf-inout.h b/src/extension/internal/wmf-inout.h index 07543e940..90f424c46 100644 --- a/src/extension/internal/wmf-inout.h +++ b/src/extension/internal/wmf-inout.h @@ -13,9 +13,9 @@ #define PNG_SKIP_SETJMP_CHECK // else any further png.h include blows up in the compiler #include <png.h> +#include <libuemf/uwmf.h> #include "extension/implementation/implementation.h" #include "style.h" -#include "uwmf.h" #include "text_reassemble.h" namespace Inkscape { diff --git a/src/extension/internal/wmf-print.cpp b/src/extension/internal/wmf-print.cpp index b7ab49b57..e5816073e 100644 --- a/src/extension/internal/wmf-print.cpp +++ b/src/extension/internal/wmf-print.cpp @@ -63,12 +63,8 @@ #include "wmf-print.h" - #include <string.h> -extern "C" { -#include "libunicode-convert/unicode-convert.h" -} - +#include <libuemf/symbol_convert.h> namespace Inkscape { namespace Extension { @@ -77,218 +73,56 @@ namespace Internal { #define PXPERMETER 2835 #define MAXDISP 2.0 // This should be set in the output dialog. This is ok for experimenting, no more than 2 pixel deviation. Not actually used at present -enum drawmode {DRAW_PAINT, DRAW_PATTERN, DRAW_IMAGE, DRAW_LINEAR_GRADIENT, DRAW_RADIAL_GRADIENT}; - -struct FFNEXUS { - char *fontname; //Font name - FFNEXUS *next; //link to next nexus, NULL if this is the last - double f1; //Vertical (rotating) offset factor (* font height) - double f2; //Vertical (nonrotating) offset factor (* font height) - double f3; //Horizontal (nonrotating) offset factor (* font height) -}; - -struct GRADVALUES{ - Geom::Point p1; // center or start - Geom::Point p2; // xhandle or end - Geom::Point p3; // yhandle or unused - double r; // radius or unused - void *grad; // to access the stops information - int mode; // DRAW_LINEAR_GRADIENT or DRAW_RADIAL_GRADIENT, if GRADVALUES is valid, else any value - U_COLORREF bgc; // document background color, this is as good a place as any to keep it - float rgb[3]; // also background color, but as 0-1 float. -}; /* globals */ -static double PX2WORLD = 1200.0/90.0; // inkscape is 90 dpi, WMF file is 1200 +static double PX2WORLD = 1200.0 / 90.0; // inkscape is 90 dpi, WMF file is 1200 static bool FixPPTCharPos, FixPPTDashLine, FixPPTGrad2Polys, FixPPTPatternAsHatch; -static FFNEXUS *wmf_short_fflist = NULL; //only those fonts so far encountered -static FFNEXUS *wmf_long_fflist = NULL; //all the fonts described in ...\share\extensions\fontfix.conf static WMFTRACK *wt = NULL; static WMFHANDLES *wht = NULL; -static GRADVALUES gv; - -void PrintWmf::read_system_fflist(void){ //this is not called by any other source files - FFNEXUS *temp=NULL; - FFNEXUS *ptr=NULL; - std::fstream fffile; - std::string instr; - char fontname[128]; - double f1,f2,f3; - std::string path_to_ffconf; - - if(wmf_long_fflist)return; - char *oldlocale = g_strdup(setlocale(LC_NUMERIC, NULL)); - setlocale(LC_NUMERIC, "C"); - - path_to_ffconf=INKSCAPE_EXTENSIONDIR; -#ifdef WIN32 - path_to_ffconf.append("\\fontfix.conf"); //Windows path syntax -#else - path_to_ffconf.append("/fontfix.conf"); //Unix/linx path syntax -#endif - //open the input - fffile.open(path_to_ffconf.c_str(), std::ios::in); - if(!fffile.is_open()){ - g_error("Unable to open file: %s\n", path_to_ffconf.c_str()); - } - while (std::getline(fffile,instr)){ - if(instr[0]=='#')continue; - // not a comment, get the 4 values from the line - int elements=sscanf(instr.c_str(),"%lf %lf %lf %127[^\n]",&f1,&f2,&f3, &fontname[0]); - if(elements!=4){ - g_error("Expected \"f1 f2 f3 Fontname\" but did not find it in file: %s\n", path_to_ffconf.c_str()); - } - temp=(FFNEXUS *) calloc(1,sizeof(FFNEXUS)); //This will never be freed - temp->f1=f1; - temp->f2=f2; - temp->f3=f3; - temp->fontname=strdup(fontname); //This will never be freed - temp->next=NULL; //just to be explicit, it is already 0 - if(ptr){ - ptr->next=temp; - ptr=temp; - } - else { - wmf_long_fflist=ptr=temp; - } - } - fffile.close(); - - setlocale(LC_NUMERIC, oldlocale); - g_free(oldlocale); -} -/* Looks for the fontname in the long list. If it does not find it, it adds the default values -to the short list with this fontname. If it does find it, then it adds the specified values. -*/ -void PrintWmf::search_long_fflist(const char *fontname, double *f1, double *f2, double *f3){ //this is not called by any other source files - FFNEXUS *ptr=NULL; - FFNEXUS *tmp=wmf_long_fflist; - if(!wmf_long_fflist){ - g_error("Programming error search_long_fflist called before read_system_fflist\n"); - } - ptr=wmf_long_fflist; - while(ptr){ - if(!strcmp(ptr->fontname,fontname)){ tmp=ptr; break; } - ptr=ptr->next; - } - //tmp points at either the found name, or the default, the first entry in wmf_long_fflist - if(!wmf_short_fflist){ - ptr=wmf_short_fflist=(FFNEXUS *) malloc(sizeof(FFNEXUS)); - } - else { - ptr=wmf_short_fflist; - while(ptr->next){ ptr=ptr->next; } - ptr->next=(FFNEXUS *) malloc(sizeof(FFNEXUS)); - ptr=ptr->next; - } - ptr->fontname=strdup(tmp->fontname); - *f1 = ptr->f1 = tmp->f1; - *f2 = ptr->f2 = tmp->f2; - *f3 = ptr->f3 = tmp->f3; - ptr->next=NULL; -} - -/* Looks for the fontname in the short list. If it does not find it, it looks in the wmf_long_fflist. -Either way it returns the f1, f2, f3 parameters for the font, even if these are for the default. -*/ -void PrintWmf::search_short_fflist(const char *fontname, double *f1, double *f2, double *f3){ //this is not called by any other source files - FFNEXUS *ptr=NULL; - static FFNEXUS *last=NULL; - - if(!wmf_long_fflist){ - g_error("Programming error search_short_fflist called before read_system_fflist\n"); - } - // This speeds things up a lot - if the same font is called twice in a row, pull it out immediately - if(last && !strcmp(last->fontname,fontname)){ ptr=last; } - else { ptr=wmf_short_fflist; } // wmf_short_fflist may still be NULL - while(ptr){ - if(!strcmp(ptr->fontname,fontname)){ *f1=ptr->f1; *f2=ptr->f2; *f3=ptr->f3; last=ptr; return; } - ptr=ptr->next; - } - //reach this point only if there is no match - search_long_fflist(fontname, f1, f2, f3); -} - -void PrintWmf::smuggle_adxky_out(const char *string, int16_t **adx, double *ky, int *rtl, int *ndx, float scale){ +void PrintWmf::smuggle_adxky_out(const char *string, int16_t **adx, double *ky, int *rtl, int *ndx, float scale) +{ float fdx; int i; int16_t *ladx; - const char *cptr=&string[strlen(string)+1]; // this works because of the first fake terminator + const char *cptr = &string[strlen(string) + 1]; // this works because of the first fake terminator *adx = NULL; *ky = 0.0; // set a default value - sscanf(cptr,"%7d",ndx); - if(!*ndx)return; // this could happen with an empty string + sscanf(cptr, "%7d", ndx); + if (!*ndx) { + return; // this could happen with an empty string + } cptr += 7; - ladx = (int16_t *) malloc(*ndx * sizeof(int16_t) ); - if(!ladx)g_error("Out of memory"); - *adx=ladx; - for(i=0; i<*ndx; i++,cptr+=7, ladx++){ - sscanf(cptr,"%7f",&fdx); - *ladx=(int16_t) round(fdx * scale); + ladx = (int16_t *) malloc(*ndx * sizeof(int16_t)); + if (!ladx) { + g_error("Out of memory"); + } + *adx = ladx; + for (i = 0; i < *ndx; i++, cptr += 7, ladx++) { + sscanf(cptr, "%7f", &fdx); + *ladx = (int16_t) round(fdx * scale); } cptr++; // skip 2nd fake terminator - sscanf(cptr,"%7f",&fdx); - *ky=fdx; + sscanf(cptr, "%7f", &fdx); + *ky = fdx; cptr += 7; // advance over ky and its space - sscanf(cptr,"%07d",rtl); + sscanf(cptr, "%07d", rtl); } -/* convert an 0RGB color to EMF U_COLORREF. -inverse of sethexcolor() in wmf-inout.cpp -*/ -U_COLORREF PrintWmf::gethexcolor(uint32_t color){ - U_COLORREF out; - out = U_RGB( - (color >> 16) & 0xFF, - (color >> 8) & 0xFF, - (color >> 0) & 0xFF - ); - return(out); -} - - -/* Translate inkscape weights to WMF weights. -*/ -uint32_t PrintWmf::transweight(const unsigned int inkweight){ - if(inkweight == SP_CSS_FONT_WEIGHT_400)return(U_FW_NORMAL); - if(inkweight == SP_CSS_FONT_WEIGHT_100)return(U_FW_THIN); - if(inkweight == SP_CSS_FONT_WEIGHT_200)return(U_FW_EXTRALIGHT); - if(inkweight == SP_CSS_FONT_WEIGHT_300)return(U_FW_LIGHT); - // 400 is tested first, as it is the most common case - if(inkweight == SP_CSS_FONT_WEIGHT_500)return(U_FW_MEDIUM); - if(inkweight == SP_CSS_FONT_WEIGHT_600)return(U_FW_SEMIBOLD); - if(inkweight == SP_CSS_FONT_WEIGHT_700)return(U_FW_BOLD); - if(inkweight == SP_CSS_FONT_WEIGHT_800)return(U_FW_EXTRABOLD); - if(inkweight == SP_CSS_FONT_WEIGHT_900)return(U_FW_HEAVY); - return(U_FW_NORMAL); -} - -PrintWmf::PrintWmf (void) +PrintWmf::PrintWmf() { // all of the class variables are initialized elsewhere, many in PrintWmf::Begin, } -PrintWmf::~PrintWmf (void) -{ - - /* restore default signal handling for SIGPIPE */ -#if !defined(_WIN32) && !defined(__WIN32__) - (void) signal(SIGPIPE, SIG_DFL); -#endif - return; -} - - -unsigned int PrintWmf::setup (Inkscape::Extension::Print * /*mod*/) +unsigned int PrintWmf::setup(Inkscape::Extension::Print * /*mod*/) { return TRUE; } -unsigned int PrintWmf::begin (Inkscape::Extension::Print *mod, SPDocument *doc) +unsigned int PrintWmf::begin(Inkscape::Extension::Print *mod, SPDocument *doc) { char *rec; gchar const *utf8_fn = mod->get_param_string("destination"); @@ -311,16 +145,18 @@ unsigned int PrintWmf::begin (Inkscape::Extension::Print *mod, SPDocument *doc) htextalignment = U_TA_BASELINE | U_TA_LEFT; use_stroke = use_fill = simple_shape = usebk = false; - Inkscape::XML::Node *nv = sp_repr_lookup_name (doc->rroot, "sodipodi:namedview"); - if(nv){ + Inkscape::XML::Node *nv = sp_repr_lookup_name(doc->rroot, "sodipodi:namedview"); + if (nv) { const char *p1 = nv->attribute("pagecolor"); char *p2; - uint32_t lc = strtoul( &p1[1], &p2, 16 ); // it looks like "#ABC123" - if(*p2)lc=0; - gv.bgc = gethexcolor(lc); - gv.rgb[0] = (float) U_RGBAGetR(gv.bgc)/255.0; - gv.rgb[1] = (float) U_RGBAGetG(gv.bgc)/255.0; - gv.rgb[2] = (float) U_RGBAGetB(gv.bgc)/255.0; + uint32_t lc = strtoul(&p1[1], &p2, 16); // it looks like "#ABC123" + if (*p2) { + lc = 0; + } + gv.bgc = _gethexcolor(lc); + gv.rgb[0] = (float) U_RGBAGetR(gv.bgc) / 255.0; + gv.rgb[1] = (float) U_RGBAGetG(gv.bgc) / 255.0; + gv.rgb[2] = (float) U_RGBAGetB(gv.bgc) / 255.0; } bool pageBoundingBox; @@ -330,58 +166,60 @@ unsigned int PrintWmf::begin (Inkscape::Extension::Print *mod, SPDocument *doc) if (pageBoundingBox) { d = Geom::Rect::from_xywh(0, 0, _width, _height); } else { - SPItem* doc_item = doc->getRoot(); + SPItem *doc_item = doc->getRoot(); Geom::OptRect bbox = doc_item->desktopVisualBounds(); - if (bbox) d = *bbox; + if (bbox) { + d = *bbox; + } } d *= Geom::Scale(Inkscape::Util::Quantity::convert(1, "px", "in")); // 90 dpi inside inkscape, wmf file will be 1200 dpi /* -1/1200 in next two lines so that WMF read in will write out again at exactly the same size */ - float dwInchesX = d.width() - 1.0/1200.0; - float dwInchesY = d.height() - 1.0/1200.0; - int dwPxX = round(dwInchesX * 1200.0); - int dwPxY = round(dwInchesY * 1200.0); + float dwInchesX = d.width() - 1.0 / 1200.0; + float dwInchesY = d.height() - 1.0 / 1200.0; + int dwPxX = round(dwInchesX * 1200.0); + int dwPxY = round(dwInchesY * 1200.0); #if 0 float dwInchesX = d.width(); float dwInchesY = d.height(); - int dwPxX = round(d.width() * 1200.0); - int dwPxY = round(d.height() * 1200.0); + int dwPxX = round(d.width() * 1200.0); + int dwPxY = round(d.height() * 1200.0); #endif PU_PAIRF ps = U_PAIRF_set(dwInchesX, dwInchesY); - rec = U_WMRHEADER_set(ps,1200); // Example: drawing is A4 horizontal, 1200 dpi - if(!rec){ + rec = U_WMRHEADER_set(ps, 1200); // Example: drawing is A4 horizontal, 1200 dpi + if (!rec) { g_error("Fatal programming error in PrintWmf::begin at WMRSETMAPMODE"); } (void) wmf_header_append((PU_METARECORD)rec, wt, 1); free(ps); - rec = U_WMRSETWINDOWEXT_set(point16_set( dwPxX, dwPxY)); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + rec = U_WMRSETWINDOWEXT_set(point16_set(dwPxX, dwPxY)); + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::begin at WMRSETWINDOWEXT"); } - - rec = U_WMRSETWINDOWORG_set(point16_set(0,0)); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + + rec = U_WMRSETWINDOWORG_set(point16_set(0, 0)); + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::begin at WMRSETWINDOWORG"); } rec = U_WMRSETMAPMODE_set(U_MM_ANISOTROPIC); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::begin at WMRSETMAPMODE"); } - + /* set some parameters, else the program that reads the WMF may default to other values */ rec = U_WMRSETBKMODE_set(U_TRANSPARENT); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::begin at U_WMRSETBKMODE"); } - hpolyfillmode=U_WINDING; + hpolyfillmode = U_WINDING; rec = U_WMRSETPOLYFILLMODE_set(U_WINDING); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::begin at U_WMRSETPOLYFILLMODE"); } @@ -390,40 +228,40 @@ unsigned int PrintWmf::begin (Inkscape::Extension::Print *mod, SPDocument *doc) // actually starts, and already takes into account the text object's alignment; // - for this reason, the WMF text alignment must always be TA_BASELINE|TA_LEFT. rec = U_WMRSETTEXTALIGN_set(U_TA_BASELINE | U_TA_LEFT); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::begin at U_WMRSETTEXTALIGN_set"); } - htextcolor_rgb[0] = htextcolor_rgb[1] = htextcolor_rgb[2] = 0.0; - rec = U_WMRSETTEXTCOLOR_set(U_RGB(0,0,0)); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + htextcolor_rgb[0] = htextcolor_rgb[1] = htextcolor_rgb[2] = 0.0; + rec = U_WMRSETTEXTCOLOR_set(U_RGB(0, 0, 0)); + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::begin at U_WMRSETTEXTCOLOR_set"); } rec = U_WMRSETROP2_set(U_R2_COPYPEN); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::begin at U_WMRSETROP2"); } - - hmiterlimit=5; + + hmiterlimit = 5; rec = wmiterlimit_set(5); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::begin at wmiterlimit_set"); } - + // create a pen as object 0. We never use it (except by mistake). Its purpose it to make all of the other object indices >=1 - U_PEN up = U_PEN_set(U_PS_SOLID, 1, colorref_set(0,0,0)); + U_PEN up = U_PEN_set(U_PS_SOLID, 1, colorref_set(0, 0, 0)); uint32_t Pen; rec = wcreatepenindirect_set(&Pen, wht, up); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::begin at wcreatepenindirect_set"); } - + // create a null pen. If no specific pen is set, this is used - up = U_PEN_set(U_PS_NULL, 1, colorref_set(0,0,0)); + up = U_PEN_set(U_PS_NULL, 1, colorref_set(0, 0, 0)); rec = wcreatepenindirect_set(&hpen_null, wht, up); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::begin at wcreatepenindirect_set"); } destroy_pen(); // make this pen active @@ -431,7 +269,7 @@ unsigned int PrintWmf::begin (Inkscape::Extension::Print *mod, SPDocument *doc) // create a null brush. If no specific brush is set, this is used U_WLOGBRUSH lb = U_WLOGBRUSH_set(U_BS_NULL, U_RGB(0, 0, 0), U_HS_HORIZONTAL); rec = wcreatebrushindirect_set(&hbrush_null, wht, lb); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::begin at wcreatebrushindirect_set"); } destroy_brush(); // make this brush active @@ -440,32 +278,34 @@ unsigned int PrintWmf::begin (Inkscape::Extension::Print *mod, SPDocument *doc) } -unsigned int PrintWmf::finish (Inkscape::Extension::Print * /*mod*/) +unsigned int PrintWmf::finish(Inkscape::Extension::Print * /*mod*/) { char *rec; - if (!wt) return 0; + if (!wt) { + return 0; + } // get rid of null brush rec = wdeleteobject_set(&hbrush_null, wht); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::finish at wdeleteobject_set null brush"); } - + // get rid of null pen rec = wdeleteobject_set(&hpen_null, wht); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::finish at wdeleteobject_set null pen"); } - + // get rid of object 0, which was a pen that was used to shift the other object indices to >=1. - hpen=0; + hpen = 0; rec = wdeleteobject_set(&hpen, wht); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::finish at wdeleteobject_set filler object"); } rec = U_WMREOF_set(); // generate the EOF record - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::finish"); } (void) wmf_finish(wt); // Finalize and write out the WMF @@ -476,174 +316,17 @@ unsigned int PrintWmf::finish (Inkscape::Extension::Print * /*mod*/) } -unsigned int PrintWmf::comment ( Inkscape::Extension::Print * /*module*/, const char * /*comment*/) +unsigned int PrintWmf::comment(Inkscape::Extension::Print * /*module*/, const char * /*comment*/) { - if (!wt) return 0; + if (!wt) { + return 0; + } // earlier versions had flush of fill here, but it never executed and was removed return 0; } -// Extract hatchType, hatchColor from a name like -// *MFhatch<hatchType>_<hatchColor>[_<bkcolor>] (WMF or EMF hatches are the same) -// Where the first one is a number and the second (and third) a color in hex. -// hatchType, hatchColor, bkColor have been set with defaults before this is called. -// -void PrintWmf::hatch_classify(char *name, int *hatchType, U_COLORREF *hatchColor, U_COLORREF *bkColor){ - int val; - uint32_t hcolor=0; - uint32_t bcolor=0; - - // name should be EMFhatch or WMFhatch but *MFhatch will be accepted - if(0!=strncmp(&name[1],"MFhatch",7)){ return; } // not anything we can parse - name += 8; // WMFhatch already detected - val = 0; - while(*name && isdigit(*name)){ - val = 10*val + *name - '0'; - name++; - } - *hatchType = val; - if(*name != '_' || val > U_HS_DITHEREDBKCLR){ // wrong syntax, cannot classify - *hatchType = -1; - } - else { - name++; - if(2 != sscanf(name,"%X_%X", &hcolor, &bcolor)){ // not a pattern with background - if(1 != sscanf(name,"%X", &hcolor)){ *hatchType = -1; } // not a pattern, cannot classify - *hatchColor = gethexcolor(hcolor); - } - else { - *hatchColor = gethexcolor(hcolor); - *bkColor = gethexcolor(bcolor); - usebk = true; - } - } - /* Everything > U_HS_SOLIDCLR is solid, just specify the color in the brush rather than messing around with background or textcolor */ - if(*hatchType > U_HS_SOLIDCLR)*hatchType = U_HS_SOLIDCLR; -} - -// -// Recurse down from a brush pattern, try to figure out what it is. -// If an image is found set a pointer to the epixbuf, else set that to NULL -// If a pattern is found with a name like [EW]MFhatch3_3F7FFF return hatchType=3, hatchColor=3F7FFF (as a uint32_t), -// otherwise hatchType is set to -1 and hatchColor is not defined. -// - -void PrintWmf::brush_classify(SPObject *parent, int depth, GdkPixbuf **epixbuf, int *hatchType, U_COLORREF *hatchColor, U_COLORREF *bkColor){ - if(depth==0){ - *epixbuf = NULL; - *hatchType = -1; - *hatchColor = U_RGB(0,0,0); - *bkColor = U_RGB(255,255,255); - } - depth++; - // first look along the pattern chain, if there is one - if(SP_IS_PATTERN(parent)){ - for (SPPattern *pat_i = SP_PATTERN(parent); pat_i != NULL; pat_i = pat_i->ref ? pat_i->ref->getObject() : NULL) { - if(SP_IS_IMAGE(pat_i)){ - *epixbuf = ((SPImage *)pat_i)->pixbuf; - return; - } - char temp[32]; // large enough - temp[31]='\0'; - strncpy(temp,pat_i->getAttribute("id"),31); // Some names may be longer than [EW]MFhatch#_###### - hatch_classify(temp, hatchType, hatchColor, bkColor); - if(*hatchType != -1)return; - - // still looking? Look at this pattern's children, if there are any - SPObject *child = pat_i->firstChild(); - while(child && !(*epixbuf) && (*hatchType == -1)){ - brush_classify(child, depth, epixbuf, hatchType, hatchColor, bkColor); - child = child->getNext(); - } - } - } - else if(SP_IS_IMAGE(parent)){ - *epixbuf = ((SPImage *)parent)->pixbuf; - return; - } - else { // some inkscape rearrangements pass through nodes between pattern and image which are not classified as either. - SPObject *child = parent->firstChild(); - while(child && !(*epixbuf) && (*hatchType == -1)){ - brush_classify(child, depth, epixbuf, hatchType, hatchColor, bkColor); - child = child->getNext(); - } - } -} - -//swap R/B in 4 byte pixel -void PrintWmf::swapRBinRGBA(char *px, int pixels){ - char tmp; - for(int i=0;i<pixels*4;px+=4,i+=4){ - tmp=px[2]; - px[2]=px[0]; - px[0]=tmp; - } -} - -/* opacity weighting of two colors as float. v1 is the color, op is its opacity, v2 is the background color */ -inline float opweight(float v1, float v2, float op){ - return v1*op + v2*(1.0-op); -} - -U_COLORREF PrintWmf::avg_stop_color(SPGradient *gr){ - U_COLORREF cr; - int last = gr->vector.stops.size() -1; - if(last>=1){ - float rgbs[3]; - float rgbe[3]; - float ops,ope; - - ops = gr->vector.stops[0 ].opacity; - ope = gr->vector.stops[last].opacity; - sp_color_get_rgb_floatv(&gr->vector.stops[0 ].color, rgbs); - sp_color_get_rgb_floatv(&gr->vector.stops[last].color, rgbe); - - /* Replace opacity at start & stop with that fraction background color, then average those two for final color. */ - cr = U_RGB( - 255*(( opweight(rgbs[0],gv.rgb[0],ops) + opweight(rgbe[0],gv.rgb[0],ope) )/2.0), - 255*(( opweight(rgbs[1],gv.rgb[1],ops) + opweight(rgbe[1],gv.rgb[1],ope) )/2.0), - 255*(( opweight(rgbs[2],gv.rgb[2],ops) + opweight(rgbe[2],gv.rgb[2],ope) )/2.0) - ); - } - else { - cr = U_RGB(0, 0, 0); // The default fill - } - return cr; -} - -int PrintWmf::hold_gradient(void *gr, int mode){ - gv.mode = mode; - gv.grad = gr; - if(mode==DRAW_RADIAL_GRADIENT){ - SPRadialGradient *rg = (SPRadialGradient *) gr; - gv.r = rg->r.computed; // radius, but of what??? - gv.p1 = Geom::Point(rg->cx.computed, rg->cy.computed); // center - gv.p2 = Geom::Point(gv.r, 0) + gv.p1; // xhandle - gv.p3 = Geom::Point(0, -gv.r) + gv.p1; // yhandle - if (rg->gradientTransform_set) { - gv.p1 = gv.p1 * rg->gradientTransform; - gv.p2 = gv.p2 * rg->gradientTransform; - gv.p3 = gv.p3 * rg->gradientTransform; - } - } - else if(mode==DRAW_LINEAR_GRADIENT){ - SPLinearGradient *lg = (SPLinearGradient *) gr; - gv.r = 0; // unused - gv.p1 = Geom::Point (lg->x1.computed, lg->y1.computed); // start - gv.p2 = Geom::Point (lg->x2.computed, lg->y2.computed); // end - gv.p3 = Geom::Point (0, 0); // unused - if (lg->gradientTransform_set) { - gv.p1 = gv.p1 * lg->gradientTransform; - gv.p2 = gv.p2 * lg->gradientTransform; - } - } - else { - g_error("Fatal programming error, hold_gradient() in wmf-print.cpp called with invalid draw mode"); - } - return 1; -} // fcolor is defined when gradients are being expanded, it is the color of one stripe or ring. int PrintWmf::create_brush(SPStyle const *style, PU_COLORREF fcolor) @@ -652,7 +335,7 @@ int PrintWmf::create_brush(SPStyle const *style, PU_COLORREF fcolor) char *rec; U_WLOGBRUSH lb; uint32_t brush, fmode; - enum drawmode fill_mode; + MFDrawMode fill_mode; GdkPixbuf *pixbuf; uint32_t brushStyle; int hatchType; @@ -661,7 +344,9 @@ int PrintWmf::create_brush(SPStyle const *style, PU_COLORREF fcolor) uint32_t width = 0; // quiets a harmless compiler warning, initialization not otherwise required. uint32_t height = 0; - if (!wt) return 0; + if (!wt) { + return 0; + } // set a default fill in case we can't figure out a better way to do it fmode = U_ALTERNATE; @@ -669,137 +354,143 @@ int PrintWmf::create_brush(SPStyle const *style, PU_COLORREF fcolor) brushStyle = U_BS_SOLID; hatchType = U_HS_SOLIDCLR; bkColor = U_RGB(0, 0, 0); - if(fcolor){ hatchColor = *fcolor; } - else { hatchColor = U_RGB(0, 0, 0); } + if (fcolor) { + hatchColor = *fcolor; + } else { + hatchColor = U_RGB(0, 0, 0); + } if (!fcolor && style) { - if(style->fill.isColor()){ + if (style->fill.isColor()) { fill_mode = DRAW_PAINT; float opacity = SP_SCALE24_TO_FLOAT(style->fill_opacity.value); - if (opacity <= 0.0)opacity = 0.0; // basically the same as no fill + if (opacity <= 0.0) { + opacity = 0.0; // basically the same as no fill + } - sp_color_get_rgb_floatv( &style->fill.value.color, rgb ); - hatchColor = U_RGB(255*rgb[0], 255*rgb[1], 255*rgb[2]); + sp_color_get_rgb_floatv(&style->fill.value.color, rgb); + hatchColor = U_RGB(255 * rgb[0], 255 * rgb[1], 255 * rgb[2]); fmode = style->fill_rule.computed == 0 ? U_WINDING : (style->fill_rule.computed == 2 ? U_ALTERNATE : U_ALTERNATE); - } - else if(SP_IS_PATTERN(SP_STYLE_FILL_SERVER(style))){ // must be paint-server + } else if (SP_IS_PATTERN(SP_STYLE_FILL_SERVER(style))) { // must be paint-server SPPaintServer *paintserver = style->fill.value.href->getObject(); - SPPattern *pat = SP_PATTERN (paintserver); + SPPattern *pat = SP_PATTERN(paintserver); double dwidth = pattern_width(pat); double dheight = pattern_height(pat); width = dwidth; height = dheight; - brush_classify(pat,0,&pixbuf,&hatchType,&hatchColor,&bkColor); - if(pixbuf){ fill_mode = DRAW_IMAGE; } - else { // pattern + brush_classify(pat, 0, &pixbuf, &hatchType, &hatchColor, &bkColor); + if (pixbuf) { + fill_mode = DRAW_IMAGE; + } else { // pattern fill_mode = DRAW_PATTERN; - if(hatchType == -1){ // Not a standard hatch, so force it to something + if (hatchType == -1) { // Not a standard hatch, so force it to something hatchType = U_HS_CROSS; - hatchColor = U_RGB(0xFF,0xC3,0xC3); + hatchColor = U_RGB(0xFF, 0xC3, 0xC3); } } - if(FixPPTPatternAsHatch){ - if(hatchType == -1){ // image or unclassified + if (FixPPTPatternAsHatch) { + if (hatchType == -1) { // image or unclassified fill_mode = DRAW_PATTERN; hatchType = U_HS_DIAGCROSS; - hatchColor = U_RGB(0xFF,0xC3,0xC3); - } + hatchColor = U_RGB(0xFF, 0xC3, 0xC3); + } } brushStyle = U_BS_HATCHED; - } - else if(SP_IS_GRADIENT(SP_STYLE_FILL_SERVER(style))){ // must be a gradient + } else if (SP_IS_GRADIENT(SP_STYLE_FILL_SERVER(style))) { // must be a gradient // currently we do not do anything with gradients, the code below just sets the color to the average of the stops SPPaintServer *paintserver = style->fill.value.href->getObject(); SPLinearGradient *lg = NULL; SPRadialGradient *rg = NULL; - if (SP_IS_LINEARGRADIENT (paintserver)) { + if (SP_IS_LINEARGRADIENT(paintserver)) { lg = SP_LINEARGRADIENT(paintserver); SP_GRADIENT(lg)->ensureVector(); // when exporting from commandline, vector is not built fill_mode = DRAW_LINEAR_GRADIENT; - } - else if (SP_IS_RADIALGRADIENT (paintserver)) { + } else if (SP_IS_RADIALGRADIENT(paintserver)) { rg = SP_RADIALGRADIENT(paintserver); SP_GRADIENT(rg)->ensureVector(); // when exporting from commandline, vector is not built fill_mode = DRAW_RADIAL_GRADIENT; - } - else { + } else { // default fill } - if(rg){ - if(FixPPTGrad2Polys){ return hold_gradient(rg, fill_mode); } - else { hatchColor = avg_stop_color(rg); } - } - else if(lg){ - if(FixPPTGrad2Polys){ return hold_gradient(lg, fill_mode); } - else { hatchColor = avg_stop_color(lg); } + if (rg) { + if (FixPPTGrad2Polys) { + return hold_gradient(rg, fill_mode); + } else { + hatchColor = avg_stop_color(rg); + } + } else if (lg) { + if (FixPPTGrad2Polys) { + return hold_gradient(lg, fill_mode); + } else { + hatchColor = avg_stop_color(lg); + } } } - } - else { // if (!style) + } else { // if (!style) // default fill } - switch(fill_mode){ - case DRAW_LINEAR_GRADIENT: // fill with average color unless gradients are converted to slices - case DRAW_RADIAL_GRADIENT: // ditto - case DRAW_PAINT: - case DRAW_PATTERN: - // SVG text has no background attribute, so OPAQUE mode ALWAYS cancels after the next draw, otherwise it would mess up future text output. - if(usebk){ - rec = U_WMRSETBKCOLOR_set(bkColor); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ - g_error("Fatal programming error in PrintWmf::create_brush at U_WMRSETBKCOLOR_set"); - } - rec = U_WMRSETBKMODE_set(U_OPAQUE); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ - g_error("Fatal programming error in PrintWmf::create_brush at U_WMRSETBKMODE_set"); - } + switch (fill_mode) { + case DRAW_LINEAR_GRADIENT: // fill with average color unless gradients are converted to slices + case DRAW_RADIAL_GRADIENT: // ditto + case DRAW_PAINT: + case DRAW_PATTERN: + // SVG text has no background attribute, so OPAQUE mode ALWAYS cancels after the next draw, otherwise it would mess up future text output. + if (usebk) { + rec = U_WMRSETBKCOLOR_set(bkColor); + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { + g_error("Fatal programming error in PrintWmf::create_brush at U_WMRSETBKCOLOR_set"); } - lb = U_WLOGBRUSH_set(brushStyle, hatchColor, hatchType); - rec = wcreatebrushindirect_set(&brush, wht, lb); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ - g_error("Fatal programming error in PrintWmf::create_brush at createbrushindirect_set"); + rec = U_WMRSETBKMODE_set(U_OPAQUE); + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { + g_error("Fatal programming error in PrintWmf::create_brush at U_WMRSETBKMODE_set"); } - break; - case DRAW_IMAGE: - char *px; - char *rgba_px; - uint32_t cbPx; - uint32_t colortype; - PU_RGBQUAD ct; - int numCt; - U_BITMAPINFOHEADER Bmih; - PU_BITMAPINFO Bmi; - rgba_px = (char *) gdk_pixbuf_get_pixels(pixbuf); // Do NOT free this!!! - colortype = U_BCBM_COLOR32; - (void) RGBA_to_DIB(&px, &cbPx, &ct, &numCt, rgba_px, width, height, width*4, colortype, 0, 1); - // Not sure why the next swap is needed because the preceding does it, and the code is identical - // to that in stretchdibits_set, which does not need this. - swapRBinRGBA(px, width*height); - Bmih = bitmapinfoheader_set(width, height, 1, colortype, U_BI_RGB, 0, PXPERMETER, PXPERMETER, numCt, 0); - Bmi = bitmapinfo_set(Bmih, ct); - rec = wcreatedibpatternbrush_srcdib_set(&brush, wht, U_DIB_RGB_COLORS, Bmi, cbPx, px); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ - g_error("Fatal programming error in PrintWmf::create_brush at createdibpatternbrushpt_set"); - } - free(px); - free(Bmi); // ct will be NULL because of colortype - break; + } + lb = U_WLOGBRUSH_set(brushStyle, hatchColor, hatchType); + rec = wcreatebrushindirect_set(&brush, wht, lb); + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { + g_error("Fatal programming error in PrintWmf::create_brush at createbrushindirect_set"); + } + break; + case DRAW_IMAGE: + char *px; + char *rgba_px; + uint32_t cbPx; + uint32_t colortype; + PU_RGBQUAD ct; + int numCt; + U_BITMAPINFOHEADER Bmih; + PU_BITMAPINFO Bmi; + rgba_px = (char *) gdk_pixbuf_get_pixels(pixbuf); // Do NOT free this!!! + colortype = U_BCBM_COLOR32; + (void) RGBA_to_DIB(&px, &cbPx, &ct, &numCt, rgba_px, width, height, width * 4, colortype, 0, 1); + // Not sure why the next swap is needed because the preceding does it, and the code is identical + // to that in stretchdibits_set, which does not need this. + swapRBinRGBA(px, width * height); + Bmih = bitmapinfoheader_set(width, height, 1, colortype, U_BI_RGB, 0, PXPERMETER, PXPERMETER, numCt, 0); + Bmi = bitmapinfo_set(Bmih, ct); + rec = wcreatedibpatternbrush_srcdib_set(&brush, wht, U_DIB_RGB_COLORS, Bmi, cbPx, px); + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { + g_error("Fatal programming error in PrintWmf::create_brush at createdibpatternbrushpt_set"); + } + free(px); + free(Bmi); // ct will be NULL because of colortype + break; } hbrush = brush; // need this later for destroy_brush rec = wselectobject_set(brush, wht); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::create_brush at wselectobject_set"); } - if(fmode != hpolyfillmode){ - hpolyfillmode=fmode; - rec = U_WMRSETPOLYFILLMODE_set(fmode); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (fmode != hpolyfillmode) { + hpolyfillmode = fmode; + rec = U_WMRSETPOLYFILLMODE_set(fmode); + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::create_brush at U_WMRSETPOLYFILLMODE_set"); } } @@ -812,20 +503,20 @@ void PrintWmf::destroy_brush() { char *rec; // WMF lets any object be deleted whenever, and the chips fall where they may... - if (hbrush){ + if (hbrush) { rec = wdeleteobject_set(&hbrush, wht); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::destroy_brush"); } hbrush = 0; } - + // (re)select the null brush - + rec = wselectobject_set(hbrush_null, wht); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::destroy_brush"); - } + } } @@ -837,8 +528,10 @@ int PrintWmf::create_pen(SPStyle const *style, const Geom::Affine &transform) U_COLORREF penColor; U_PEN up; int modstyle; - - if (!wt) return 0; + + if (!wt) { + return 0; + } // set a default stroke in case we can't figure out a better way to do it penstyle = U_PS_SOLID; @@ -846,12 +539,12 @@ int PrintWmf::create_pen(SPStyle const *style, const Geom::Affine &transform) penColor = U_RGB(0, 0, 0); uint32_t linewidth = 1; - if (style) { // override some or all of the preceding + if (style) { // override some or all of the preceding float rgb[3]; // WMF does not support hatched, bitmap, or gradient pens, just set the color. - sp_color_get_rgb_floatv( &style->stroke.value.color, rgb ); - penColor = U_RGB(255*rgb[0], 255*rgb[1], 255*rgb[2]); + sp_color_get_rgb_floatv(&style->stroke.value.color, rgb); + penColor = U_RGB(255 * rgb[0], 255 * rgb[1], 255 * rgb[2]); using Geom::X; using Geom::Y; @@ -862,38 +555,47 @@ int PrintWmf::create_pen(SPStyle const *style, const Geom::Affine &transform) Geom::Point p1(one * transform); Geom::Point p(p1 - p0); - double scale = sqrt( (p[X]*p[X]) + (p[Y]*p[Y]) ) / sqrt(2); + double scale = sqrt((p[X] * p[X]) + (p[Y] * p[Y])) / sqrt(2); - if(!style->stroke_width.computed){return 0;} //if width is 0 do not (reset) the pen, it should already be NULL_PEN - linewidth = MAX( 1, (uint32_t) round(scale * style->stroke_width.computed * PX2WORLD) ); + if (!style->stroke_width.computed) { + return 0; //if width is 0 do not (reset) the pen, it should already be NULL_PEN + } + linewidth = MAX(1, (uint32_t) round(scale * style->stroke_width.computed * PX2WORLD)); // most WMF readers will ignore linecap and linejoin, but set them anyway. Inkscape itself can read them back in. - - if ( style->stroke_linecap.computed == 0) { modstyle |= U_PS_ENDCAP_FLAT; } - else if (style->stroke_linecap.computed == 1) { modstyle |= U_PS_ENDCAP_ROUND; } - else { modstyle |= U_PS_ENDCAP_SQUARE; } + + if (style->stroke_linecap.computed == 0) { + modstyle |= U_PS_ENDCAP_FLAT; + } else if (style->stroke_linecap.computed == 1) { + modstyle |= U_PS_ENDCAP_ROUND; + } else { + modstyle |= U_PS_ENDCAP_SQUARE; + } if (style->stroke_linejoin.computed == 0) { float miterlimit = style->stroke_miterlimit.value; // This is a ratio. - if (miterlimit < 1)miterlimit = 1; + if (miterlimit < 1) { + miterlimit = 1; + } // most WMF readers will ignore miterlimit, but set it anyway. Inkscape itself can read it back in - if((uint32_t)miterlimit != hmiterlimit){ + if ((uint32_t)miterlimit != hmiterlimit) { hmiterlimit = (uint32_t)miterlimit; rec = wmiterlimit_set((uint32_t) miterlimit); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::create_pen at wmiterlimit_set"); } } - modstyle |= U_PS_JOIN_MITER; + modstyle |= U_PS_JOIN_MITER; + } else if (style->stroke_linejoin.computed == 1) { + modstyle |= U_PS_JOIN_ROUND; + } else { + modstyle |= U_PS_JOIN_BEVEL; } - else if (style->stroke_linejoin.computed == 1) { modstyle |= U_PS_JOIN_ROUND; } - else { modstyle |= U_PS_JOIN_BEVEL; } if (style->stroke_dash.n_dash && - style->stroke_dash.dash ) - { - if(!FixPPTDashLine){ // if this is set code elsewhere will break dots/dashes into many smaller lines. + style->stroke_dash.dash) { + if (!FixPPTDashLine) { // if this is set code elsewhere will break dots/dashes into many smaller lines. penstyle = U_PS_DASH;// userstyle not supported apparently, for now map all Inkscape dot/dash to just dash } } @@ -902,12 +604,12 @@ int PrintWmf::create_pen(SPStyle const *style, const Geom::Affine &transform) up = U_PEN_set(penstyle | modstyle, linewidth, penColor); rec = wcreatepenindirect_set(&pen, wht, up); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::create_pen at wcreatepenindirect_set"); } rec = wselectobject_set(pen, wht); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::create_pen at wselectobject_set"); } hpen = pen; // need this later for destroy_pen @@ -920,187 +622,23 @@ void PrintWmf::destroy_pen() { char *rec = NULL; // WMF lets any object be deleted whenever, and the chips fall where they may... - if (hpen){ + if (hpen) { rec = wdeleteobject_set(&hpen, wht); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::destroy_pen"); } hpen = 0; } // (re)select the null pen - + rec = wselectobject_set(hpen_null, wht); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::destroy_pen"); } } - -unsigned int PrintWmf::bind(Inkscape::Extension::Print * /*mod*/, Geom::Affine const &transform, float /*opacity*/) -{ - if (!m_tr_stack.empty()) { - Geom::Affine tr_top = m_tr_stack.top(); - m_tr_stack.push(transform * tr_top); - } else { - m_tr_stack.push(transform); - } - - return 1; -} - -unsigned int PrintWmf::release(Inkscape::Extension::Print * /*mod*/) -{ - m_tr_stack.pop(); - return 1; -} - -#define clrweight(a,b,t) ((1-t)*((double) a) + (t)*((double) b)) -inline U_COLORREF PrintWmf::weight_opacity(U_COLORREF c1){ - float opa = c1.Reserved/255.0; - U_COLORREF result = U_RGB( - 255*opweight((float)c1.Red /255.0, gv.rgb[0], opa), - 255*opweight((float)c1.Green/255.0, gv.rgb[1], opa), - 255*opweight((float)c1.Blue /255.0, gv.rgb[2], opa) - ); - return result; -} - - -// return the color between c1 and c2, c1 for t=0, c2 for t=1.0 -U_COLORREF PrintWmf::weight_colors(U_COLORREF c1, U_COLORREF c2, double t){ - U_COLORREF result; - result.Red = clrweight(c1.Red, c2.Red, t); - result.Green = clrweight(c1.Green, c2.Green, t); - result.Blue = clrweight(c1.Blue, c2.Blue, t); - result.Reserved = clrweight(c1.Reserved, c2.Reserved, t); - - // now handle the opacity, mix the RGB with background at the weighted opacity - - if(result.Reserved != 255)result = weight_opacity(result); - - return result; -} - -/* convert from center ellipse to SVGEllipticalArc ellipse - - From: - http://www.w3.org/TR/SVG/implnote.html#ArcConversionEndpointToCenter - A point (x,y) on the arc can be found by: - - {x,y} = {cx,cy} + {cosF,-sinF,sinF,cosF} x {rxcosT,rysinT} - - where - {cx,cy} is the center of the ellipse - F is the rotation angle of the X axis of the ellipse from the true X axis - T is the rotation angle around the ellipse - {,,,} is the rotation matrix - rx,ry are the radii of the ellipse's axes - - For SVG parameterization need two points. - Arbitrarily we can use T=0 and T=pi - Since the sweep is 180 the flags are always 0: - - F is in RADIANS, but the SVGEllipticalArc needs degrees! - -*/ -Geom::PathVector PrintWmf::center_ellipse_as_SVG_PathV(Geom::Point ctr, double rx, double ry, double F){ - using Geom::X; - using Geom::Y; - double x1,y1,x2,y2; - Geom::Path SVGep; - - x1 = ctr[X] + cos(F) * rx * cos(0) + sin(-F) * ry * sin(0); - y1 = ctr[Y] + sin(F) * rx * cos(0) + cos(F) * ry * sin(0); - x2 = ctr[X] + cos(F) * rx * cos(M_PI) + sin(-F) * ry * sin(M_PI); - y2 = ctr[Y] + sin(F) * rx * cos(M_PI) + cos(F) * ry * sin(M_PI); - - char text[256]; - sprintf(text," M %f,%f A %f %f %f 0 0 %f %f A %f %f %f 0 0 %f %f z",x1,y1, rx,ry,F*360./(2.*M_PI),x2,y2, rx,ry,F*360./(2.*M_PI),x1,y1); - std::vector<Geom::Path> outres = Geom::parse_svg_path(text); - return outres; -} - - -/* rx2,ry2 must be larger than rx1,ry1! - angle is in RADIANS -*/ -Geom::PathVector PrintWmf::center_elliptical_ring_as_SVG_PathV(Geom::Point ctr, double rx1, double ry1, double rx2, double ry2, double F){ - using Geom::X; - using Geom::Y; - double x11,y11,x12,y12; - double x21,y21,x22,y22; - double degrot = F*360./(2.*M_PI); - - x11 = ctr[X] + cos(F) * rx1 * cos(0) + sin(-F) * ry1 * sin(0); - y11 = ctr[Y] + sin(F) * rx1 * cos(0) + cos(F) * ry1 * sin(0); - x12 = ctr[X] + cos(F) * rx1 * cos(M_PI) + sin(-F) * ry1 * sin(M_PI); - y12 = ctr[Y] + sin(F) * rx1 * cos(M_PI) + cos(F) * ry1 * sin(M_PI); - - x21 = ctr[X] + cos(F) * rx2 * cos(0) + sin(-F) * ry2 * sin(0); - y21 = ctr[Y] + sin(F) * rx2 * cos(0) + cos(F) * ry2 * sin(0); - x22 = ctr[X] + cos(F) * rx2 * cos(M_PI) + sin(-F) * ry2 * sin(M_PI); - y22 = ctr[Y] + sin(F) * rx2 * cos(M_PI) + cos(F) * ry2 * sin(M_PI); - - char text[512]; - sprintf(text," M %f,%f A %f %f %f 0 1 %f %f A %f %f %f 0 1 %f %f z M %f,%f A %f %f %f 0 0 %f %f A %f %f %f 0 0 %f %f z", - x11,y11, rx1,ry1,degrot,x12,y12, rx1,ry1,degrot,x11,y11, - x21,y21, rx2,ry2,degrot,x22,y22, rx2,ry2,degrot,x21,y21 - ); - std::vector<Geom::Path> outres = Geom::parse_svg_path(text); - - return outres; -} - -/* Elliptical hole in a large square extending from -50k to +50k */ -Geom::PathVector PrintWmf::center_elliptical_hole_as_SVG_PathV(Geom::Point ctr, double rx, double ry, double F){ - using Geom::X; - using Geom::Y; - double x1,y1,x2,y2; - Geom::Path SVGep; - - x1 = ctr[X] + cos(F) * rx * cos(0) + sin(-F) * ry * sin(0); - y1 = ctr[Y] + sin(F) * rx * cos(0) + cos(F) * ry * sin(0); - x2 = ctr[X] + cos(F) * rx * cos(M_PI) + sin(-F) * ry * sin(M_PI); - y2 = ctr[Y] + sin(F) * rx * cos(M_PI) + cos(F) * ry * sin(M_PI); - - char text[256]; - sprintf(text," M %f,%f A %f %f %f 0 0 %f %f A %f %f %f 0 0 %f %f z M 50000,50000 50000,-50000 -50000,-50000 -50000,50000 z", - x1,y1, rx,ry,F*360./(2.*M_PI),x2,y2, rx,ry,F*360./(2.*M_PI),x1,y1); - std::vector<Geom::Path> outres = Geom::parse_svg_path(text); - return outres; -} - -/* rectangular cutter. -ctr "center" of rectangle (might not actually be in the center with respect to leading/trailing edges -pos vector from center to leading edge -neg vector from center to trailing edge -width vector to side edge -*/ -Geom::PathVector PrintWmf::rect_cutter(Geom::Point ctr, Geom::Point pos, Geom::Point neg, Geom::Point width){ - std::vector<Geom::Path> outres; - Geom::Path cutter; - cutter.start( ctr + pos - width); - cutter.appendNew<Geom::LineSegment>(ctr + pos + width); - cutter.appendNew<Geom::LineSegment>(ctr + neg + width); - cutter.appendNew<Geom::LineSegment>(ctr + neg - width); - cutter.close(); - outres.push_back(cutter); - return outres; -} - -/* Convert from SPWindRule to livarot's FillRule - This is similar to what sp_selected_path_boolop() does -*/ -FillRule PrintWmf::SPWR_to_LVFR(SPWindRule wr){ - FillRule fr; - if(wr == SP_WIND_RULE_EVENODD){ fr = fill_oddEven; } - else { fr = fill_nonZero; } - return fr; -} - - unsigned int PrintWmf::fill( Inkscape::Extension::Print * /*mod*/, Geom::PathVector const &pathv, Geom::Affine const & /*transform*/, SPStyle const *style, @@ -1116,7 +654,7 @@ unsigned int PrintWmf::fill( fill_transform = tf; - if (create_brush(style, NULL)){ + if (create_brush(style, NULL)) { /* Handle gradients. Uses modified livarot as 2geom boolops is currently broken. Can handle gradients with multiple stops. @@ -1128,36 +666,36 @@ unsigned int PrintWmf::fill( destroy_pen(); //this sets the NULL_PEN, otherwise gradient slices may display with boundaries, see longer explanation below Geom::Path cutter; float rgb[3]; - U_COLORREF wc,c1,c2; - FillRule frb = SPWR_to_LVFR( (SPWindRule) style->fill_rule.computed); - double doff,doff_base,doff_range; - double divisions= 128.0; + U_COLORREF wc, c1, c2; + FillRule frb = SPWR_to_LVFR((SPWindRule) style->fill_rule.computed); + double doff, doff_base, doff_range; + double divisions = 128.0; int nstops; int istop = 1; float opa; // opacity at stop - SPRadialGradient *tg = (SPRadialGradient *) (gv.grad); // linear/radial are the same here + SPRadialGradient *tg = (SPRadialGradient *)(gv.grad); // linear/radial are the same here nstops = tg->vector.stops.size(); sp_color_get_rgb_floatv(&tg->vector.stops[0].color, rgb); opa = tg->vector.stops[0].opacity; - c1 = U_RGBA( 255*rgb[0], 255*rgb[1], 255*rgb[2], 255*opa ); - sp_color_get_rgb_floatv(&tg->vector.stops[nstops-1].color, rgb); - opa = tg->vector.stops[nstops-1].opacity; - c2 = U_RGBA( 255*rgb[0], 255*rgb[1], 255*rgb[2], 255*opa ); + c1 = U_RGBA(255 * rgb[0], 255 * rgb[1], 255 * rgb[2], 255 * opa); + sp_color_get_rgb_floatv(&tg->vector.stops[nstops - 1].color, rgb); + opa = tg->vector.stops[nstops - 1].opacity; + c2 = U_RGBA(255 * rgb[0], 255 * rgb[1], 255 * rgb[2], 255 * opa); doff = 0.0; doff_base = 0.0; doff_range = tg->vector.stops[1].offset; // next or last stop - if(gv.mode==DRAW_RADIAL_GRADIENT){ + if (gv.mode == DRAW_RADIAL_GRADIENT) { Geom::Point xv = gv.p2 - gv.p1; // X' vector Geom::Point yv = gv.p3 - gv.p1; // Y' vector Geom::Point xuv = Geom::unit_vector(xv); // X' unit vector - double rx = hypot(xv[X],xv[Y]); - double ry = hypot(yv[X],yv[Y]); - double range = fmax(rx,ry); // length along the gradient - double step = range/divisions; // adequate approximation for gradient - double overlap = step/4.0; // overlap slices slightly + double rx = hypot(xv[X], xv[Y]); + double ry = hypot(yv[X], yv[Y]); + double range = fmax(rx, ry); // length along the gradient + double step = range / divisions; // adequate approximation for gradient + double overlap = step / 4.0; // overlap slices slightly double start; double stop; Geom::PathVector pathvc, pathvr; @@ -1165,103 +703,108 @@ unsigned int PrintWmf::fill( /* radial gradient might stop part way through the shape, fill with outer color from there to "infinity". Do this first so that outer colored ring will overlay it. */ - pathvc = center_elliptical_hole_as_SVG_PathV(gv.p1, rx*(1.0 - overlap/range), ry*(1.0 - overlap/range), asin(xuv[Y])); + pathvc = center_elliptical_hole_as_SVG_PathV(gv.p1, rx * (1.0 - overlap / range), ry * (1.0 - overlap / range), asin(xuv[Y])); pathvr = sp_pathvector_boolop(pathvc, pathv, bool_op_inters, (FillRule) fill_oddEven, frb); - wc = weight_opacity(c2); + wc = weight_opacity(c2); (void) create_brush(style, &wc); print_pathv(pathvr, fill_transform); sp_color_get_rgb_floatv(&tg->vector.stops[istop].color, rgb); opa = tg->vector.stops[istop].opacity; - c2 = U_RGBA( 255*rgb[0], 255*rgb[1], 255*rgb[2], 255*opa ); + c2 = U_RGBA(255 * rgb[0], 255 * rgb[1], 255 * rgb[2], 255 * opa); - for(start = 0.0; start < range; start += step, doff += 1./divisions){ + for (start = 0.0; start < range; start += step, doff += 1. / divisions) { stop = start + step + overlap; - if(stop > range)stop=range; - wc = weight_colors(c1, c2, (doff - doff_base)/(doff_range-doff_base) ); + if (stop > range) { + stop = range; + } + wc = weight_colors(c1, c2, (doff - doff_base) / (doff_range - doff_base)); (void) create_brush(style, &wc); - pathvc = center_elliptical_ring_as_SVG_PathV(gv.p1, rx*start/range, ry*start/range, rx*stop/range, ry*stop/range, asin(xuv[Y])); + pathvc = center_elliptical_ring_as_SVG_PathV(gv.p1, rx * start / range, ry * start / range, rx * stop / range, ry * stop / range, asin(xuv[Y])); pathvr = sp_pathvector_boolop(pathvc, pathv, bool_op_inters, (FillRule) fill_nonZero, frb); print_pathv(pathvr, fill_transform); // show the intersection - if(doff >= doff_range - doff_base){ + if (doff >= doff_range - doff_base) { istop++; - if(istop >= nstops)continue; // could happen on a rounding error + if (istop >= nstops) { + continue; // could happen on a rounding error + } doff_base = doff_range; doff_range = tg->vector.stops[istop].offset; // next or last stop - c1=c2; + c1 = c2; sp_color_get_rgb_floatv(&tg->vector.stops[istop].color, rgb); opa = tg->vector.stops[istop].opacity; - c2 = U_RGBA( 255*rgb[0], 255*rgb[1], 255*rgb[2], 255*opa ); + c2 = U_RGBA(255 * rgb[0], 255 * rgb[1], 255 * rgb[2], 255 * opa); } } - } - else if(gv.mode == DRAW_LINEAR_GRADIENT){ + } else if (gv.mode == DRAW_LINEAR_GRADIENT) { Geom::Point uv = Geom::unit_vector(gv.p2 - gv.p1); // unit vector Geom::Point puv = uv.cw(); // perp. to unit vector - double range = Geom::distance(gv.p1,gv.p2); // length along the gradient - double step = range/divisions; // adequate approximation for gradient - double overlap = step/4.0; // overlap slices slightly + double range = Geom::distance(gv.p1, gv.p2); // length along the gradient + double step = range / divisions; // adequate approximation for gradient + double overlap = step / 4.0; // overlap slices slightly double start; double stop; Geom::PathVector pathvc, pathvr; /* before lower end of gradient, overlap first slice position */ - wc = weight_opacity(c1); + wc = weight_opacity(c1); (void) create_brush(style, &wc); - pathvc = rect_cutter(gv.p1, uv*(overlap), uv*(-50000.0), puv*50000.0); + pathvc = rect_cutter(gv.p1, uv * (overlap), uv * (-50000.0), puv * 50000.0); pathvr = sp_pathvector_boolop(pathvc, pathv, bool_op_inters, (FillRule) fill_nonZero, frb); print_pathv(pathvr, fill_transform); /* after high end of gradient, overlap last slice poosition */ - wc = weight_opacity(c2); + wc = weight_opacity(c2); (void) create_brush(style, &wc); - pathvc = rect_cutter(gv.p2, uv*(-overlap), uv*(50000.0), puv*50000.0); + pathvc = rect_cutter(gv.p2, uv * (-overlap), uv * (50000.0), puv * 50000.0); pathvr = sp_pathvector_boolop(pathvc, pathv, bool_op_inters, (FillRule) fill_nonZero, frb); print_pathv(pathvr, fill_transform); sp_color_get_rgb_floatv(&tg->vector.stops[istop].color, rgb); opa = tg->vector.stops[istop].opacity; - c2 = U_RGBA( 255*rgb[0], 255*rgb[1], 255*rgb[2], 255*opa ); + c2 = U_RGBA(255 * rgb[0], 255 * rgb[1], 255 * rgb[2], 255 * opa); - for(start = 0.0; start < range; start += step, doff += 1./divisions){ + for (start = 0.0; start < range; start += step, doff += 1. / divisions) { stop = start + step + overlap; - if(stop > range)stop=range; - pathvc = rect_cutter(gv.p1, uv*start, uv*stop, puv*50000.0); + if (stop > range) { + stop = range; + } + pathvc = rect_cutter(gv.p1, uv * start, uv * stop, puv * 50000.0); - wc = weight_colors(c1, c2, (doff - doff_base)/(doff_range-doff_base) ); + wc = weight_colors(c1, c2, (doff - doff_base) / (doff_range - doff_base)); (void) create_brush(style, &wc); Geom::PathVector pathvr = sp_pathvector_boolop(pathvc, pathv, bool_op_inters, (FillRule) fill_nonZero, frb); print_pathv(pathvr, fill_transform); // show the intersection - if(doff >= doff_range - doff_base){ + if (doff >= doff_range - doff_base) { istop++; - if(istop >= nstops)continue; // could happen on a rounding error + if (istop >= nstops) { + continue; // could happen on a rounding error + } doff_base = doff_range; doff_range = tg->vector.stops[istop].offset; // next or last stop - c1=c2; + c1 = c2; sp_color_get_rgb_floatv(&tg->vector.stops[istop].color, rgb); opa = tg->vector.stops[istop].opacity; - c2 = U_RGBA( 255*rgb[0], 255*rgb[1], 255*rgb[2], 255*opa ); + c2 = U_RGBA(255 * rgb[0], 255 * rgb[1], 255 * rgb[2], 255 * opa); } } - } - else { + } else { g_error("Fatal programming error in PrintWmf::fill, invalid gradient type detected"); } use_fill = false; // gradients handled, be sure stroke does not use stroke and fill - } - else { + } else { /* - Inkscape was not calling create_pen for objects with no border. + Inkscape was not calling create_pen for objects with no border. This was because it never called stroke() (next method). PPT, and presumably others, pick whatever they want for the border if it is not specified, so no border can become a visible border. To avoid this force the pen to NULL_PEN if we can determine that no pen will be needed after the fill. */ - if (style->stroke.noneSet || style->stroke_width.computed == 0.0){ + if (style->stroke.noneSet || style->stroke_width.computed == 0.0) { destroy_pen(); //this sets the NULL_PEN } @@ -1269,16 +812,18 @@ unsigned int PrintWmf::fill( Dashes converted to line segments will "open" a closed path. */ bool all_closed = true; - for (Geom::PathVector::const_iterator pit = pathv.begin(); pit != pathv.end(); ++pit){ - for (Geom::Path::const_iterator cit = pit->begin(); cit != pit->end_open(); ++cit){ - if (pit->end_default() != pit->end_closed()) { all_closed=false; } + for (Geom::PathVector::const_iterator pit = pathv.begin(); pit != pathv.end(); ++pit) { + for (Geom::Path::const_iterator cit = pit->begin(); cit != pit->end_open(); ++cit) { + if (pit->end_default() != pit->end_closed()) { + all_closed = false; + } } } if ( (style->stroke.isNone() || style->stroke.noneSet || style->stroke_width.computed == 0.0) || (style->stroke_dash.n_dash && style->stroke_dash.dash && FixPPTDashLine) || !all_closed - ){ + ) { print_pathv(pathv, fill_transform); // do any fills. side effect: clears fill_pathv use_fill = false; } @@ -1288,63 +833,71 @@ unsigned int PrintWmf::fill( } -unsigned int PrintWmf::stroke ( +unsigned int PrintWmf::stroke( Inkscape::Extension::Print * /*mod*/, Geom::PathVector const &pathv, const Geom::Affine &/*transform*/, const SPStyle *style, Geom::OptRect const &/*pbox*/, Geom::OptRect const &/*dbox*/, Geom::OptRect const &/*bbox*/) { - + char *rec = NULL; Geom::Affine tf = m_tr_stack.top(); use_stroke = true; // use_fill was set in ::fill, if it is needed, if not, the null brush is used, it should be already set - if (create_pen(style, tf))return 0; - - if (style->stroke_dash.n_dash && style->stroke_dash.dash && FixPPTDashLine ){ + if (create_pen(style, tf)) { + return 0; + } + + if (style->stroke_dash.n_dash && style->stroke_dash.dash && FixPPTDashLine) { // convert the path, gets its complete length, and then make a new path with parameter length instead of t Geom::Piecewise<Geom::D2<Geom::SBasis> > tmp_pathpw; // pathv-> sbasis Geom::Piecewise<Geom::D2<Geom::SBasis> > tmp_pathpw2; // sbasis using arc length parameter Geom::Piecewise<Geom::D2<Geom::SBasis> > tmp_pathpw3; // new (discontinuous) path, composed of dots/dashes Geom::Piecewise<Geom::D2<Geom::SBasis> > first_frag; // first fragment, will be appended at end int n_dash = style->stroke_dash.n_dash; - int i=0; //dash index + int i = 0; //dash index double tlength; // length of tmp_pathpw - double slength=0.0; // start of gragment + double slength = 0.0; // start of gragment double elength; // end of gragment - for (unsigned int i=0; i < pathv.size(); i++) { + for (unsigned int i = 0; i < pathv.size(); i++) { tmp_pathpw.concat(pathv[i].toPwSb()); } - tlength = length(tmp_pathpw,0.1); + tlength = length(tmp_pathpw, 0.1); tmp_pathpw2 = arc_length_parametrization(tmp_pathpw); // go around the dash array repeatedly until the entire path is consumed (but not beyond). - while(slength < tlength){ + while (slength < tlength) { elength = slength + style->stroke_dash.dash[i++]; - if(elength > tlength)elength = tlength; + if (elength > tlength) { + elength = tlength; + } Geom::Piecewise<Geom::D2<Geom::SBasis> > fragment(portion(tmp_pathpw2, slength, elength)); - if(slength){ tmp_pathpw3.concat(fragment); } - else { first_frag = fragment; } + if (slength) { + tmp_pathpw3.concat(fragment); + } else { + first_frag = fragment; + } slength = elength; slength += style->stroke_dash.dash[i++]; // the gap - if(i>=n_dash)i=0; + if (i >= n_dash) { + i = 0; + } } tmp_pathpw3.concat(first_frag); // may merge line around start point - Geom::PathVector out_pathv = Geom::path_from_piecewise(tmp_pathpw3, 0.01); + Geom::PathVector out_pathv = Geom::path_from_piecewise(tmp_pathpw3, 0.01); print_pathv(out_pathv, tf); - } - else { + } else { print_pathv(pathv, tf); } use_stroke = false; use_fill = false; - if(usebk){ // OPAQUE was set, revert to TRANSPARENT + if (usebk) { // OPAQUE was set, revert to TRANSPARENT usebk = false; rec = U_WMRSETBKMODE_set(U_TRANSPARENT); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::stroke at U_WMRSETBKMODE_set"); } } @@ -1359,38 +912,39 @@ unsigned int PrintWmf::stroke ( bool PrintWmf::print_simple_shape(Geom::PathVector const &pathv, const Geom::Affine &transform) { - Geom::PathVector pv = pathv_to_linear( pathv * transform, MAXDISP ); - + Geom::PathVector pv = pathv_to_linear(pathv * transform, MAXDISP); + int nodes = 0; int moves = 0; int lines = 0; int curves = 0; char *rec = NULL; - for (Geom::PathVector::const_iterator pit = pv.begin(); pit != pv.end(); ++pit) - { + for (Geom::PathVector::const_iterator pit = pv.begin(); pit != pv.end(); ++pit) { moves++; nodes++; - - for (Geom::Path::const_iterator cit = pit->begin(); cit != pit->end_open(); ++cit) - { + + for (Geom::Path::const_iterator cit = pit->begin(); cit != pit->end_open(); ++cit) { nodes++; - - if ( is_straight_curve(*cit) ) { lines++; } - else if (&*cit) { curves++; } + + if (is_straight_curve(*cit)) { + lines++; + } else if (&*cit) { + curves++; + } } } - if (!nodes) + if (!nodes) { return false; - - U_POINT16 *lpPoints = new U_POINT16[moves + lines + curves*3]; + } + + U_POINT16 *lpPoints = new U_POINT16[moves + lines + curves * 3]; int i = 0; /** For all Subpaths in the <path> */ - for (Geom::PathVector::const_iterator pit = pv.begin(); pit != pv.end(); ++pit) - { + for (Geom::PathVector::const_iterator pit = pv.begin(); pit != pv.end(); ++pit) { using Geom::X; using Geom::Y; @@ -1398,7 +952,7 @@ bool PrintWmf::print_simple_shape(Geom::PathVector const &pathv, const Geom::Aff p0[X] = (p0[X] * PX2WORLD); p0[Y] = (p0[Y] * PX2WORLD); - + int32_t const x0 = (int32_t) round(p0[X]); int32_t const y0 = (int32_t) round(p0[Y]); @@ -1408,10 +962,8 @@ bool PrintWmf::print_simple_shape(Geom::PathVector const &pathv, const Geom::Aff /** For all segments in the subpath */ - for (Geom::Path::const_iterator cit = pit->begin(); cit != pit->end_open(); ++cit) - { - if ( is_straight_curve(*cit) ) - { + for (Geom::Path::const_iterator cit = pit->begin(); cit != pit->end_open(); ++cit) { + if (is_straight_curve(*cit)) { //Geom::Point p0 = cit->initialPoint(); Geom::Point p1 = cit->finalPoint(); @@ -1428,9 +980,7 @@ bool PrintWmf::print_simple_shape(Geom::PathVector const &pathv, const Geom::Aff lpPoints[i].x = x1; lpPoints[i].y = y1; i = i + 1; - } - else if (Geom::CubicBezier const *cubic = dynamic_cast<Geom::CubicBezier const*>(&*cit)) - { + } else if (Geom::CubicBezier const *cubic = dynamic_cast<Geom::CubicBezier const *>(&*cit)) { std::vector<Geom::Point> points = cubic->points(); //Geom::Point p0 = points[0]; Geom::Point p1 = points[1]; @@ -1445,7 +995,7 @@ bool PrintWmf::print_simple_shape(Geom::PathVector const &pathv, const Geom::Aff p1[Y] = (p1[Y] * PX2WORLD); p2[Y] = (p2[Y] * PX2WORLD); p3[Y] = (p3[Y] * PX2WORLD); - + //int32_t const x0 = (int32_t) round(p0[X]); //int32_t const y0 = (int32_t) round(p0[Y]); int32_t const x1 = (int32_t) round(p1[X]); @@ -1457,75 +1007,80 @@ bool PrintWmf::print_simple_shape(Geom::PathVector const &pathv, const Geom::Aff lpPoints[i].x = x1; lpPoints[i].y = y1; - lpPoints[i+1].x = x2; - lpPoints[i+1].y = y2; - lpPoints[i+2].x = x3; - lpPoints[i+2].y = y3; + lpPoints[i + 1].x = x2; + lpPoints[i + 1].y = y2; + lpPoints[i + 2].x = x3; + lpPoints[i + 2].y = y3; i = i + 3; } } } bool done = false; - bool closed = (lpPoints[0].x == lpPoints[i-1].x) && (lpPoints[0].y == lpPoints[i-1].y); + bool closed = (lpPoints[0].x == lpPoints[i - 1].x) && (lpPoints[0].y == lpPoints[i - 1].y); bool polygon = false; bool rectangle = false; bool ellipse = false; - - if (moves == 1 && moves+lines == nodes && closed) { + + if (moves == 1 && moves + lines == nodes && closed) { polygon = true; -// if (nodes==5) { // disable due to LP Bug 407394 -// if (lpPoints[0].x == lpPoints[3].x && lpPoints[1].x == lpPoints[2].x && -// lpPoints[0].y == lpPoints[1].y && lpPoints[2].y == lpPoints[3].y) -// { -// rectangle = true; -// } -// } - } - else if (moves == 1 && nodes == 5 && moves+curves == nodes && closed) { -// if (lpPoints[0].x == lpPoints[1].x && lpPoints[1].x == lpPoints[11].x && -// lpPoints[5].x == lpPoints[6].x && lpPoints[6].x == lpPoints[7].x && -// lpPoints[2].x == lpPoints[10].x && lpPoints[3].x == lpPoints[9].x && lpPoints[4].x == lpPoints[8].x && -// lpPoints[2].y == lpPoints[3].y && lpPoints[3].y == lpPoints[4].y && -// lpPoints[8].y == lpPoints[9].y && lpPoints[9].y == lpPoints[10].y && -// lpPoints[5].y == lpPoints[1].y && lpPoints[6].y == lpPoints[0].y && lpPoints[7].y == lpPoints[11].y) -// { // disable due to LP Bug 407394 -// ellipse = true; -// } + // if (nodes==5) { // disable due to LP Bug 407394 + // if (lpPoints[0].x == lpPoints[3].x && lpPoints[1].x == lpPoints[2].x && + // lpPoints[0].y == lpPoints[1].y && lpPoints[2].y == lpPoints[3].y) + // { + // rectangle = true; + // } + // } + } else if (moves == 1 && nodes == 5 && moves + curves == nodes && closed) { + // if (lpPoints[0].x == lpPoints[1].x && lpPoints[1].x == lpPoints[11].x && + // lpPoints[5].x == lpPoints[6].x && lpPoints[6].x == lpPoints[7].x && + // lpPoints[2].x == lpPoints[10].x && lpPoints[3].x == lpPoints[9].x && lpPoints[4].x == lpPoints[8].x && + // lpPoints[2].y == lpPoints[3].y && lpPoints[3].y == lpPoints[4].y && + // lpPoints[8].y == lpPoints[9].y && lpPoints[9].y == lpPoints[10].y && + // lpPoints[5].y == lpPoints[1].y && lpPoints[6].y == lpPoints[0].y && lpPoints[7].y == lpPoints[11].y) + // { // disable due to LP Bug 407394 + // ellipse = true; + // } } if (polygon || ellipse) { // pens and brushes already set by caller, do not touch them if (polygon) { - if (rectangle){ - U_RECT16 rcl = U_RECT16_set((U_POINT16) {lpPoints[0].x, lpPoints[0].y}, (U_POINT16) {lpPoints[2].x, lpPoints[2].y}); + if (rectangle) { + U_RECT16 rcl = U_RECT16_set((U_POINT16) { + lpPoints[0].x, lpPoints[0].y + }, (U_POINT16) { + lpPoints[2].x, lpPoints[2].y + }); rec = U_WMRRECTANGLE_set(rcl); - } - else { + } else { rec = U_WMRPOLYGON_set(nodes, lpPoints); } - } - else if (ellipse) { - U_RECT16 rcl = U_RECT16_set((U_POINT16) {lpPoints[6].x, lpPoints[3].y}, (U_POINT16) {lpPoints[0].x, lpPoints[9].y}); + } else if (ellipse) { + U_RECT16 rcl = U_RECT16_set((U_POINT16) { + lpPoints[6].x, lpPoints[3].y + }, (U_POINT16) { + lpPoints[0].x, lpPoints[9].y + }); rec = U_WMRELLIPSE_set(rcl); } - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::print_simple_shape at retangle/ellipse/polygon"); } - + done = true; } delete[] lpPoints; - + return done; } /** Some parts based on win32.cpp by Lauris Kaplinski <lauris@kaplinski.com>. Was a part of Inkscape in the past (or will be in the future?) Not in current trunk. (4/19/2012) - + Limitations of this code: 1. Images lose their rotation, one corner stays in the same place. 2. Transparency is lost on export. (A limitation of the WMF format.) @@ -1533,7 +1088,7 @@ bool PrintWmf::print_simple_shape(Geom::PathVector const &pathv, const Geom::Aff 4. There is still a small memory leak somewhere, possibly in a pixbuf created in a routine that calls this one and passes px, but never removes the rest of the pixbuf. The first time this is called it leaked 5M (in one test) and each subsequent call leaked around 200K more. - If this routine is reduced to + If this routine is reduced to if(1)return(0); and called for a single 1280 x 1024 image then the program leaks 11M per call, or roughly the size of two bitmaps. @@ -1548,20 +1103,20 @@ unsigned int PrintWmf::image( Geom::Affine const &tf_ignore, /** WRONG affine transform, use the one from m_tr_stack */ SPStyle const *style) /** provides indirect link to image object */ { - double x1,y1,dw,dh; + double x1, y1, dw, dh; char *rec = NULL; Geom::Affine tf = m_tr_stack.top(); rec = U_WMRSETSTRETCHBLTMODE_set(U_COLORONCOLOR); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::image at EMRHEADER"); } - x1= atof(style->object->getAttribute("x")); - y1= atof(style->object->getAttribute("y")); - dw= atof(style->object->getAttribute("width")); - dh= atof(style->object->getAttribute("height")); - Geom::Point pLL(x1,y1); + x1 = atof(style->object->getAttribute("x")); + y1 = atof(style->object->getAttribute("y")); + dw = atof(style->object->getAttribute("width")); + dh = atof(style->object->getAttribute("height")); + Geom::Point pLL(x1, y1); Geom::Point pLL2 = pLL * tf; //location of LL corner in Inkscape coordinates char *px; @@ -1572,31 +1127,33 @@ unsigned int PrintWmf::image( U_BITMAPINFOHEADER Bmih; PU_BITMAPINFO Bmi; colortype = U_BCBM_COLOR32; - (void) RGBA_to_DIB(&px, &cbPx, &ct, &numCt, (char *) rgba_px, w, h, w*4, colortype, 0, 1); + (void) RGBA_to_DIB(&px, &cbPx, &ct, &numCt, (char *) rgba_px, w, h, w * 4, colortype, 0, 1); Bmih = bitmapinfoheader_set(w, h, 1, colortype, U_BI_RGB, 0, PXPERMETER, PXPERMETER, numCt, 0); Bmi = bitmapinfo_set(Bmih, ct); U_POINT16 Dest = point16_set(round(pLL2[Geom::X] * PX2WORLD), round(pLL2[Geom::Y] * PX2WORLD)); U_POINT16 cDest = point16_set(round(dw * PX2WORLD), round(dh * PX2WORLD)); - U_POINT16 Src = point16_set(0,0); - U_POINT16 cSrc = point16_set(w,h); + U_POINT16 Src = point16_set(0, 0); + U_POINT16 cSrc = point16_set(w, h); rec = U_WMRSTRETCHDIB_set( - Dest, //! Destination UL corner in logical units - cDest, //! Destination W & H in logical units - Src, //! Source UL corner in logical units - cSrc, //! Source W & H in logical units - U_DIB_RGB_COLORS, //! DIBColors Enumeration - U_SRCCOPY, //! RasterOPeration Enumeration - Bmi, //! (Optional) bitmapbuffer (U_BITMAPINFO section) - h*rs, //! size in bytes of px - px //! (Optional) bitmapbuffer (U_BITMAPINFO section) - ); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + Dest, //! Destination UL corner in logical units + cDest, //! Destination W & H in logical units + Src, //! Source UL corner in logical units + cSrc, //! Source W & H in logical units + U_DIB_RGB_COLORS, //! DIBColors Enumeration + U_SRCCOPY, //! RasterOPeration Enumeration + Bmi, //! (Optional) bitmapbuffer (U_BITMAPINFO section) + h * rs, //! size in bytes of px + px //! (Optional) bitmapbuffer (U_BITMAPINFO section) + ); + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::image at U_WMRSTRETCHDIB_set"); } free(px); free(Bmi); - if(numCt)free(ct); + if (numCt) { + free(ct); + } return 0; } @@ -1609,9 +1166,9 @@ unsigned int PrintWmf::print_pathv(Geom::PathVector const &pathv, const Geom::Af uint16_t *n16ptr; simple_shape = print_simple_shape(pathv, transform); - if (!simple_shape && !pathv.empty()){ + if (!simple_shape && !pathv.empty()) { // WMF does not have beziers, need to convert to ONLY linears with something like this: - Geom::PathVector pv = pathv_to_linear( pathv * transform, MAXDISP ); + Geom::PathVector pv = pathv_to_linear(pathv * transform, MAXDISP); /** For all Subpaths in the <path> */ @@ -1622,27 +1179,34 @@ unsigned int PrintWmf::print_pathv(Geom::PathVector const &pathv, const Geom::Af The former allows path delimited donuts and the like, which cannot be represented in WMF with polygon or polyline because there is no external way to combine paths as there is in EMF or SVG. - For polygons specify the last point the same as the first. The WMF/EMF manuals say that the + For polygons specify the last point the same as the first. The WMF/EMF manuals say that the reading program SHOULD close the path, which allows a conforming program not to, potentially rendering - a closed path as an open one. */ - int nPolys=0; + a closed path as an open one. */ + int nPolys = 0; int totPoints = 0; - for (Geom::PathVector::const_iterator pit = pv.begin(); pit != pv.end(); ++pit) - { + for (Geom::PathVector::const_iterator pit = pv.begin(); pit != pv.end(); ++pit) { totPoints += 1 + pit->size_default(); // big array, will hold all points, for all polygons. Size_default ignores first point in each path. - if (pit->end_default() == pit->end_closed()) { nPolys++; } - else { nPolys=0; break; } + if (pit->end_default() == pit->end_closed()) { + nPolys++; + } else { + nPolys = 0; + break; + } } - if(nPolys > 1){ // a single polypolygon, a single polygon falls through to the else + if (nPolys > 1) { // a single polypolygon, a single polygon falls through to the else pt16hold = pt16ptr = (PU_POINT16) malloc(totPoints * sizeof(U_POINT16)); - if(!pt16ptr)return(false); + if (!pt16ptr) { + return(false); + } n16hold = n16ptr = (uint16_t *) malloc(nPolys * sizeof(uint16_t)); - if(!n16ptr){ free(pt16hold); return(false); } + if (!n16ptr) { + free(pt16hold); + return(false); + } - for (Geom::PathVector::const_iterator pit = pv.begin(); pit != pv.end(); ++pit) - { + for (Geom::PathVector::const_iterator pit = pv.begin(); pit != pv.end(); ++pit) { using Geom::X; using Geom::Y; @@ -1654,81 +1218,79 @@ unsigned int PrintWmf::print_pathv(Geom::PathVector const &pathv, const Geom::Af Geom::Point p1 = pit->initialPoint(); // This point is special, it isn't in the interator p1[X] = (p1[X] * PX2WORLD); - p1[Y] = (p1[Y] * PX2WORLD); + p1[Y] = (p1[Y] * PX2WORLD); *pt16ptr++ = point16_set((int32_t) round(p1[X]), (int32_t) round(p1[Y])); - for (Geom::Path::const_iterator cit = pit->begin(); cit != pit->end_open(); ++cit) - { + for (Geom::Path::const_iterator cit = pit->begin(); cit != pit->end_open(); ++cit) { Geom::Point p1 = cit->finalPoint(); p1[X] = (p1[X] * PX2WORLD); - p1[Y] = (p1[Y] * PX2WORLD); + p1[Y] = (p1[Y] * PX2WORLD); *pt16ptr++ = point16_set((int32_t) round(p1[X]), (int32_t) round(p1[Y])); } } - rec = U_WMRPOLYPOLYGON_set(nPolys, n16hold,pt16hold); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + rec = U_WMRPOLYPOLYGON_set(nPolys, n16hold, pt16hold); + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::print_pathv at U_WMRPOLYPOLYGON_set"); } free(pt16hold); free(n16hold); - } - else { // one or more polyline or polygons (but not all polygons, that would be the preceding case) - for (Geom::PathVector::const_iterator pit = pv.begin(); pit != pv.end(); ++pit) - { + } else { // one or more polyline or polygons (but not all polygons, that would be the preceding case) + for (Geom::PathVector::const_iterator pit = pv.begin(); pit != pv.end(); ++pit) { using Geom::X; using Geom::Y; - - /* Malformatted Polylines with a sequence like M L M M L have been seen, the 2nd M does nothing + + /* Malformatted Polylines with a sequence like M L M M L have been seen, the 2nd M does nothing and that point must not go into the output. */ - if(!(pit->size_default())){ continue; } + if (!(pit->size_default())) { + continue; + } /* Figure out how many points there are, make an array big enough to hold them, and store all the points. This is the same for open or closed path. This gives the upper bound for the number of points. The actual number used is calculated on the fly. */ int nPoints = 1 + pit->size_default(); - + pt16hold = pt16ptr = (PU_POINT16) malloc(nPoints * sizeof(U_POINT16)); - if(!pt16ptr)break; + if (!pt16ptr) { + break; + } /** For each segment in the subpath */ Geom::Point p1 = pit->initialPoint(); // This point is special, it isn't in the interator p1[X] = (p1[X] * PX2WORLD); - p1[Y] = (p1[Y] * PX2WORLD); + p1[Y] = (p1[Y] * PX2WORLD); *pt16ptr++ = point16_set((int32_t) round(p1[X]), (int32_t) round(p1[Y])); nPoints = 1; - for (Geom::Path::const_iterator cit = pit->begin(); cit != pit->end_default(); ++cit, nPoints++) - { + for (Geom::Path::const_iterator cit = pit->begin(); cit != pit->end_default(); ++cit, nPoints++) { Geom::Point p1 = cit->finalPoint(); p1[X] = (p1[X] * PX2WORLD); - p1[Y] = (p1[Y] * PX2WORLD); + p1[Y] = (p1[Y] * PX2WORLD); *pt16ptr++ = point16_set((int32_t) round(p1[X]), (int32_t) round(p1[Y])); } if (pit->end_default() == pit->end_closed()) { - rec = U_WMRPOLYGON_set(nPoints, pt16hold); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + rec = U_WMRPOLYGON_set(nPoints, pt16hold); + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::print_pathv at U_WMRPOLYGON_set"); } - } - else if(nPoints>2) { + } else if (nPoints > 2) { rec = U_WMRPOLYLINE_set(nPoints, pt16hold); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::print_pathv at U_POLYLINE_set"); } - } - else if(nPoints == 2) { + } else if (nPoints == 2) { rec = U_WMRMOVETO_set(pt16hold[0]); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::print_pathv at U_WMRMOVETO_set"); } rec = U_WMRLINETO_set(pt16hold[1]); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::print_pathv at U_WMRLINETO_set"); } } @@ -1740,151 +1302,161 @@ unsigned int PrintWmf::print_pathv(Geom::PathVector const &pathv, const Geom::Af // WMF has no fill or stroke commands, the draw does it with active pen/brush // clean out brush and pen, but only after all parts of the draw complete - if (use_fill){ destroy_brush(); } - if (use_stroke){ destroy_pen(); } + if (use_fill) { + destroy_brush(); + } + if (use_stroke) { + destroy_pen(); + } return TRUE; } -bool PrintWmf::textToPath(Inkscape::Extension::Print * ext) -{ - return ext->get_param_bool("textToPath"); -} - unsigned int PrintWmf::text(Inkscape::Extension::Print * /*mod*/, char const *text, Geom::Point const &p, - SPStyle const *const style) + SPStyle const *const style) { - if (!wt) return 0; + if (!wt) { + return 0; + } char *rec = NULL; - int ccount,newfont; - int fix90n=0; + int ccount, newfont; + int fix90n = 0; uint32_t hfont = 0; Geom::Affine tf = m_tr_stack.top(); - double rot = -1800.0*std::atan2(tf[1], tf[0])/M_PI; // 0.1 degree rotation, - sign for MM_TEXT + double rot = -1800.0 * std::atan2(tf[1], tf[0]) / M_PI; // 0.1 degree rotation, - sign for MM_TEXT double rotb = -std::atan2(tf[1], tf[0]); // rotation for baseline offset for superscript/subscript, used below - double dx,dy; - double f1,f2,f3; + double dx, dy; double ky; // the dx array is smuggled in like: text<nul>w1 w2 w3 ...wn<nul><nul>, where the widths are floats 7 characters wide, including the space int ndx, rtl; int16_t *adx; - smuggle_adxky_out(text, &adx, &ky, &rtl, &ndx, PX2WORLD * std::min(tf.expansionX(),tf.expansionY())); // side effect: free() adx - + smuggle_adxky_out(text, &adx, &ky, &rtl, &ndx, PX2WORLD * std::min(tf.expansionX(), tf.expansionY())); // side effect: free() adx + uint32_t textalignment; - if(rtl > 0){ textalignment = U_TA_BASELINE | U_TA_LEFT; } - else { textalignment = U_TA_BASELINE | U_TA_RIGHT | U_TA_RTLREADING; } - if(textalignment != htextalignment){ + if (rtl > 0) { + textalignment = U_TA_BASELINE | U_TA_LEFT; + } else { + textalignment = U_TA_BASELINE | U_TA_RIGHT | U_TA_RTLREADING; + } + if (textalignment != htextalignment) { htextalignment = textalignment; rec = U_WMRSETTEXTALIGN_set(textalignment); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::text at U_WMRSETTEXTALIGN_set"); } } char *text2 = strdup(text); // because U_Utf8ToUtf16le calls iconv which does not like a const char * - uint16_t *unicode_text = U_Utf8ToUtf16le( text2, 0, NULL ); + uint16_t *unicode_text = U_Utf8ToUtf16le(text2, 0, NULL); free(text2); //translates Unicode as Utf16le to NonUnicode, if possible. If any translate, all will, and all to //the same font, because of code in Layout::print UnicodeToNon(unicode_text, &ccount, &newfont); // The preceding hopefully handled conversions to symbol, wingdings or zapf dingbats. Now slam everything // else down into latin1, which is all WMF can handle. If the language isn't English expect terrible results. - char *latin1_text = U_Utf16leToLatin1( unicode_text, 0, NULL ); + char *latin1_text = U_Utf16leToLatin1(unicode_text, 0, NULL); free(unicode_text); //PPT gets funky with text within +-1 degree of a multiple of 90, but only for SOME fonts.Snap those to the central value //Some funky ones: Arial, Times New Roman //Some not funky ones: Symbol and Verdana. //Without a huge table we cannot catch them all, so just the most common problem ones. - if(FixPPTCharPos){ - switch(newfont){ - case CVTSYM: - search_short_fflist("Convert To Symbol", &f1, &f2, &f3); - break; - case CVTZDG: - search_short_fflist("Convert To Zapf Dingbats", &f1, &f2, &f3); - break; - case CVTWDG: - search_short_fflist("Convert To Wingdings", &f1, &f2, &f3); - break; - default: //also CVTNON - search_short_fflist(style->text->font_family.value, &f1, &f2, &f3); - break; + FontfixParams params; + + if (FixPPTCharPos) { + switch (newfont) { + case CVTSYM: + _lookup_ppt_fontfix("Convert To Symbol", params); + break; + case CVTZDG: + _lookup_ppt_fontfix("Convert To Zapf Dingbats", params); + break; + case CVTWDG: + _lookup_ppt_fontfix("Convert To Wingdings", params); + break; + default: //also CVTNON + _lookup_ppt_fontfix(style->text->font_family.value, params); + break; } - if(f2 || f3){ + if (params.f2 != 0 || params.f3 != 0) { int irem = ((int) round(rot)) % 900 ; - if(irem <=9 && irem >= -9){ - fix90n=1; //assume vertical - rot = (double) (((int) round(rot)) - irem); - rotb = rot*M_PI/1800.0; - if( abs(rot) == 900.0 ){ fix90n = 2; } + if (irem <= 9 && irem >= -9) { + fix90n = 1; //assume vertical + rot = (double)(((int) round(rot)) - irem); + rotb = rot * M_PI / 1800.0; + if (abs(rot) == 900.0) { + fix90n = 2; + } } } } - /* - Note that text font sizes are stored into the WMF as fairly small integers and that limits their precision. + /* + Note that text font sizes are stored into the WMF as fairly small integers and that limits their precision. The WMF output files produced here have been designed so that the integer valued pt sizes land right on an integer value in the WMF file, so those are exact. However, something like 18.1 pt will be - somewhat off, so that when it is read back in it becomes 18.11 pt. (For instance.) + somewhat off, so that when it is read back in it becomes 18.11 pt. (For instance.) */ - int textheight = round(-style->font_size.computed * PX2WORLD * std::min(tf.expansionX(),tf.expansionY())); + int textheight = round(-style->font_size.computed * PX2WORLD * std::min(tf.expansionX(), tf.expansionY())); if (!hfont) { // Get font face name. Use changed font name if unicode mapped to one // of the special fonts. char *facename; - if(!newfont){ facename = U_Utf8ToLatin1(style->text->font_family.value, 0, NULL); } - else { facename = U_Utf8ToLatin1(FontName(newfont), 0, NULL); } + if (!newfont) { + facename = U_Utf8ToLatin1(style->text->font_family.value, 0, NULL); + } else { + facename = U_Utf8ToLatin1(FontName(newfont), 0, NULL); + } // Scale the text to the minimum stretch. (It tends to stay within bounding rectangles even if // it was streteched asymmetrically.) Few applications support text from WMF which is scaled - // differently by height/width, so leave lfWidth alone. + // differently by height/width, so leave lfWidth alone. PU_FONT puf = U_FONT_set( - textheight, - 0, - round(rot), - round(rot), - transweight(style->font_weight.computed), - (style->font_style.computed == SP_CSS_FONT_STYLE_ITALIC), - style->text_decoration_line.underline, - style->text_decoration_line.line_through, - U_DEFAULT_CHARSET, - U_OUT_DEFAULT_PRECIS, - U_CLIP_DEFAULT_PRECIS, - U_DEFAULT_QUALITY, - U_DEFAULT_PITCH | U_FF_DONTCARE, - facename); - free(facename); - - rec = wcreatefontindirect_set( &hfont, wht, puf); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + textheight, + 0, + round(rot), + round(rot), + _translate_weight(style->font_weight.computed), + (style->font_style.computed == SP_CSS_FONT_STYLE_ITALIC), + style->text_decoration_line.underline, + style->text_decoration_line.line_through, + U_DEFAULT_CHARSET, + U_OUT_DEFAULT_PRECIS, + U_CLIP_DEFAULT_PRECIS, + U_DEFAULT_QUALITY, + U_DEFAULT_PITCH | U_FF_DONTCARE, + facename); + free(facename); + + rec = wcreatefontindirect_set(&hfont, wht, puf); + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::text at wcreatefontindirect_set"); } free(puf); } - + rec = wselectobject_set(hfont, wht); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::text at wselectobject_set"); } float rgb[3]; - sp_color_get_rgb_floatv( &style->fill.value.color, rgb ); - // only change the text color when it needs to be changed - if(memcmp(htextcolor_rgb,rgb,3*sizeof(float))){ - memcpy(htextcolor_rgb,rgb,3*sizeof(float)); - rec = U_WMRSETTEXTCOLOR_set(U_RGB(255*rgb[0], 255*rgb[1], 255*rgb[2])); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + sp_color_get_rgb_floatv(&style->fill.value.color, rgb); + // only change the text color when it needs to be changed + if (memcmp(htextcolor_rgb, rgb, 3 * sizeof(float))) { + memcpy(htextcolor_rgb, rgb, 3 * sizeof(float)); + rec = U_WMRSETTEXTCOLOR_set(U_RGB(255 * rgb[0], 255 * rgb[1], 255 * rgb[2])); + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::text at U_WMRSETTEXTCOLOR_set"); } } - + // Text alignment: // - (x,y) coordinates received by this filter are those of the point where the text // actually starts, and already takes into account the text object's alignment; @@ -1896,26 +1468,24 @@ unsigned int PrintWmf::text(Inkscape::Extension::Print * /*mod*/, char const *te Geom::Point p2 = p * tf; //Handle super/subscripts and vertical kerning -/* Previously used this, but vertical kerning was not supported - p2[Geom::X] -= style->baseline_shift.computed * std::sin( rotb ); - p2[Geom::Y] -= style->baseline_shift.computed * std::cos( rotb ); -*/ - p2[Geom::X] += ky * std::sin( rotb ); - p2[Geom::Y] += ky * std::cos( rotb ); + /* Previously used this, but vertical kerning was not supported + p2[Geom::X] -= style->baseline_shift.computed * std::sin( rotb ); + p2[Geom::Y] -= style->baseline_shift.computed * std::cos( rotb ); + */ + p2[Geom::X] += ky * std::sin(rotb); + p2[Geom::Y] += ky * std::cos(rotb); //Conditionally handle compensation for PPT WMF import bug (affects PPT 2003-2010, at least) - if(FixPPTCharPos){ - if(fix90n==1){ //vertical - dx= 0.0; - dy= f3 * style->font_size.computed * std::cos( rotb ); - } - else if(fix90n==2){ //horizontal - dx= f2 * style->font_size.computed * std::sin( rotb ); - dy= 0.0; - } - else { - dx= f1 * style->font_size.computed * std::sin( rotb ); - dy= f1 * style->font_size.computed * std::cos( rotb ); + if (FixPPTCharPos) { + if (fix90n == 1) { //vertical + dx = 0.0; + dy = params.f3 * style->font_size.computed * std::cos(rotb); + } else if (fix90n == 2) { //horizontal + dx = params.f2 * style->font_size.computed * std::sin(rotb); + dy = 0.0; + } else { + dx = params.f1 * style->font_size.computed * std::sin(rotb); + dy = params.f1 * style->font_size.computed * std::cos(rotb); } p2[Geom::X] += dx; p2[Geom::Y] += dy; @@ -1927,37 +1497,42 @@ unsigned int PrintWmf::text(Inkscape::Extension::Print * /*mod*/, char const *te int32_t const xpos = (int32_t) round(p2[Geom::X]); int32_t const ypos = (int32_t) round(p2[Geom::Y]); - // The number of characters in the string is a bit fuzzy. ndx, the number of entries in adx is + // The number of characters in the string is a bit fuzzy. ndx, the number of entries in adx is // the number of VISIBLE characters, since some may combine from the UTF (8 originally, // now 16) encoding. Conversely strlen() or wchar16len() would give the absolute number of // encoding characters. Unclear if emrtext wants the former or the latter but for now assume the former. - -// This is currently being smuggled in from caller as part of text, works -// MUCH better than the fallback hack below -// uint32_t *adx = dx_set(textheight, U_FW_NORMAL, slen); // dx is needed, this makes one up - if(rtl>0){ - rec = U_WMREXTTEXTOUT_set((U_POINT16) {xpos, ypos}, ndx, U_ETO_NONE, latin1_text, adx, U_RCL16_DEF); - } - else { // RTL text, U_TA_RTLREADING should be enough, but set this one too just in case - rec = U_WMREXTTEXTOUT_set((U_POINT16) {xpos, ypos}, ndx, U_ETO_RTLREADING, latin1_text, adx, U_RCL16_DEF); + + // This is currently being smuggled in from caller as part of text, works + // MUCH better than the fallback hack below + // uint32_t *adx = dx_set(textheight, U_FW_NORMAL, slen); // dx is needed, this makes one up + if (rtl > 0) { + rec = U_WMREXTTEXTOUT_set((U_POINT16) { + (int16_t) xpos, (int16_t) ypos + }, + ndx, U_ETO_NONE, latin1_text, adx, U_RCL16_DEF); + } else { // RTL text, U_TA_RTLREADING should be enough, but set this one too just in case + rec = U_WMREXTTEXTOUT_set((U_POINT16) { + (int16_t) xpos, (int16_t) ypos + }, + ndx, U_ETO_RTLREADING, latin1_text, adx, U_RCL16_DEF); } free(latin1_text); free(adx); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::text at U_WMREXTTEXTOUTW_set"); } rec = wdeleteobject_set(&hfont, wht); - if(!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)){ + if (!rec || wmf_append((PU_METARECORD)rec, wt, U_REC_FREE)) { g_error("Fatal programming error in PrintWmf::text at wdeleteobject_set"); } - + return 0; } -void PrintWmf::init (void) +void PrintWmf::init(void) { - read_system_fflist(); + _load_ppt_fontfix_data(); /* WMF print */ Inkscape::Extension::build_from_mem( diff --git a/src/extension/internal/wmf-print.h b/src/extension/internal/wmf-print.h index 5fe316417..1e5d4c323 100644 --- a/src/extension/internal/wmf-print.h +++ b/src/extension/internal/wmf-print.h @@ -8,56 +8,34 @@ * * Released under GNU GPL, read the file 'COPYING' for more information */ -#ifndef __INKSCAPE_EXTENSION_INTERNAL_PRINT_WMF_H__ -#define __INKSCAPE_EXTENSION_INTERNAL_PRINT_WMF_H__ - +#ifndef SEEN_INKSCAPE_EXTENSION_INTERNAL_WMF_PRINT_H +#define SEEN_INKSCAPE_EXTENSION_INTERNAL_WMF_PRINT_H #ifdef HAVE_CONFIG_H # include "config.h" #endif -#include "uwmf.h" - -#include "extension/implementation/implementation.h" -//#include "extension/extension.h" +#include <libuemf/uwmf.h> +#include "extension/internal/metafile-print.h" -#include <2geom/pathvector.h> #include "sp-gradient.h" #include "splivarot.h" // pieces for union on shapes #include "display/canvas-bpath.h" // for SPWindRule -#include <stack> - namespace Inkscape { namespace Extension { namespace Internal { -class PrintWmf : public Inkscape::Extension::Implementation::Implementation +class PrintWmf : public PrintMetafile { - double _width; - double _height; - U_RECTL rc; - - uint32_t htextalignment; uint32_t hbrush, hpen, hpenOld, hbrush_null, hpen_null; uint32_t hmiterlimit; // used to minimize redundant records that set this - uint32_t hpolyfillmode; // used to minimize redundant records that set this - float htextcolor_rgb[3]; // used to minimize redundant records that set this - - std::stack<Geom::Affine> m_tr_stack; - Geom::PathVector fill_pathv; - Geom::Affine fill_transform; - bool use_stroke; - bool use_fill; - bool simple_shape; - bool usebk; unsigned int print_pathv (Geom::PathVector const &pathv, const Geom::Affine &transform); bool print_simple_shape (Geom::PathVector const &pathv, const Geom::Affine &transform); public: - PrintWmf (void); - virtual ~PrintWmf (void); + PrintWmf(); /* Print functions */ virtual unsigned int setup (Inkscape::Extension::Print * module); @@ -66,8 +44,6 @@ public: virtual unsigned int finish (Inkscape::Extension::Print * module); /* Rendering methods */ - virtual unsigned int bind(Inkscape::Extension::Print *module, Geom::Affine const &transform, float opacity); - virtual unsigned int release(Inkscape::Extension::Print *module); virtual unsigned int fill (Inkscape::Extension::Print *module, Geom::PathVector const &pathv, Geom::Affine const &ctm, SPStyle const *style, @@ -88,44 +64,15 @@ public: virtual unsigned int comment(Inkscape::Extension::Print *module, const char * comment); virtual unsigned int text(Inkscape::Extension::Print *module, char const *text, Geom::Point const &p, SPStyle const *style); - bool textToPath (Inkscape::Extension::Print * ext); static void init (void); protected: - static void read_system_fflist(void); //this is not called by any other source files - static void search_long_fflist(const char *fontname, double *f1, double *f2, double *f3); - static void search_short_fflist(const char *fontname, double *f1, double *f2, double *f3); static void smuggle_adxky_out(const char *string, int16_t **adx, double *ky, int *rtl, int *ndx, float scale); - U_COLORREF gethexcolor(uint32_t color); - uint32_t transweight(const unsigned int inkweight); int create_brush(SPStyle const *style, PU_COLORREF fcolor); void destroy_brush(); int create_pen(SPStyle const *style, const Geom::Affine &transform); void destroy_pen(); - - void hatch_classify(char *name, int *hatchType, U_COLORREF *hatchColor, U_COLORREF *bkColor); - void brush_classify(SPObject *parent, int depth, GdkPixbuf **epixbuf, int *hatchType, U_COLORREF *hatchColor, U_COLORREF *bkColor); - void swapRBinRGBA(char *px, int pixels); - - U_COLORREF avg_stop_color(SPGradient *gr); - - int hold_gradient(void *gr, int mode); - - inline U_COLORREF weight_opacity(U_COLORREF c1); - - U_COLORREF weight_colors(U_COLORREF c1, U_COLORREF c2, double t); - - Geom::PathVector center_ellipse_as_SVG_PathV(Geom::Point ctr, double rx, double ry, double F); - - Geom::PathVector center_elliptical_ring_as_SVG_PathV(Geom::Point ctr, double rx1, double ry1, double rx2, double ry2, double F); - - Geom::PathVector center_elliptical_hole_as_SVG_PathV(Geom::Point ctr, double rx, double ry, double F); - - Geom::PathVector rect_cutter(Geom::Point ctr, Geom::Point pos, Geom::Point neg, Geom::Point width); - - FillRule SPWR_to_LVFR(SPWindRule wr); - }; } /* namespace Internal */ diff --git a/src/helper/CMakeLists.txt b/src/helper/CMakeLists.txt index 2e1e724f5..b0e473ddd 100644 --- a/src/helper/CMakeLists.txt +++ b/src/helper/CMakeLists.txt @@ -17,10 +17,7 @@ set(helper_SRC pixbuf-ops.cpp png-write.cpp stock-items.cpp - unit-menu.cpp - units.cpp #units-test.cpp - unit-tracker.cpp window.cpp # we generate this file and it's .h counter-part @@ -38,10 +35,6 @@ set(helper_SRC pixbuf-ops.h png-write.h stock-items.h - unit-menu.h - unit-tracker.h - units-test.h - units.h window.h ) diff --git a/src/helper/pixbuf-ops.cpp b/src/helper/pixbuf-ops.cpp index 75c002c57..a51a62f42 100644 --- a/src/helper/pixbuf-ops.cpp +++ b/src/helper/pixbuf-ops.cpp @@ -146,12 +146,7 @@ GdkPixbuf *sp_generate_internal_bitmap(SPDocument *doc, gchar const */*filename* // render items drawing.render(ct, final_bbox, Inkscape::DrawingItem::RENDER_BYPASS_CACHE); - pixbuf = gdk_pixbuf_new_from_data(cairo_image_surface_get_data(surface), - GDK_COLORSPACE_RGB, TRUE, - 8, width, height, cairo_image_surface_get_stride(surface), - ink_cairo_pixbuf_cleanup, - surface); - convert_pixbuf_argb32_to_normal(pixbuf); + pixbuf = ink_pixbuf_create_from_cairo_surface(surface); } else { diff --git a/src/libnrtype/Layout-TNG-Output.cpp b/src/libnrtype/Layout-TNG-Output.cpp index 162400aab..f7f910c2f 100644 --- a/src/libnrtype/Layout-TNG-Output.cpp +++ b/src/libnrtype/Layout-TNG-Output.cpp @@ -20,7 +20,7 @@ #include "extension/internal/cairo-render-context.h" #include "display/curve.h" #include <2geom/pathvector.h> -#include "libunicode-convert/unicode-convert.h" +#include <libuemf/symbol_convert.h> namespace Inkscape { diff --git a/src/libuemf/CMakeLists.txt b/src/libuemf/CMakeLists.txt new file mode 100644 index 000000000..dbf9fb36c --- /dev/null +++ b/src/libuemf/CMakeLists.txt @@ -0,0 +1,24 @@ + +set(libuemf_SRC + symbol_convert.c + uemf.c + uemf_endian.c + uemf_print.c + uemf_utf.c + uwmf.c + uwmf_endian.c + uwmf_print.c + + # ------- + # Headers + symbol_convert.h + uemf.h + uemf_endian.h + uemf_print.h + uemf_utf.h + uwmf.h + uwmf_endian.h + uwmf_print.h +) + +add_inkscape_lib(uemf_LIB "${libuemf_SRC}") diff --git a/src/libuemf/Makefile_insert b/src/libuemf/Makefile_insert new file mode 100644 index 000000000..ca14ed19f --- /dev/null +++ b/src/libuemf/Makefile_insert @@ -0,0 +1,24 @@ +## Makefile.am fragment sourced by src/Makefile.am. + +libuemf/all: libuemf.a + +libuemf/clean: + rm -f libuemf/libuemf.a $(libuemf_libuemf_a_OBJECTS) + +libuemf_libuemf_a_SOURCES = \ + libuemf/uemf.c \ + libuemf/uemf.h \ + libuemf/uemf_endian.c \ + libuemf/uemf_endian.h \ + libuemf/uemf_print.c \ + libuemf/uemf_print.h \ + libuemf/uemf_utf.c \ + libuemf/uemf_utf.h \ + libuemf/uwmf.c \ + libuemf/uwmf.h \ + libuemf/uwmf_endian.c \ + libuemf/uwmf_endian.h \ + libuemf/uwmf_print.c \ + libuemf/uwmf_print.h \ + libuemf/symbol_convert.c \ + libuemf/symbol_convert.h diff --git a/src/libuemf/README b/src/libuemf/README new file mode 100644 index 000000000..53e2469e3 --- /dev/null +++ b/src/libuemf/README @@ -0,0 +1,5 @@ +Theis directory contains the libUEMF library, +a cross-platform library for Windows Metafile and Enhanced Metafile +handling, created by David Mathog. + +http://sourceforge.net/projects/libuemf/ diff --git a/src/libunicode-convert/makefile.in b/src/libuemf/makefile.in index ca0d7dc1e..f1a595e1d 100644 --- a/src/libunicode-convert/makefile.in +++ b/src/libuemf/makefile.in @@ -6,10 +6,10 @@ OBJEXT = @OBJEXT@ # Explicit so that it's the default rule. all: - cd .. && $(MAKE) libunicode-convert/all + cd .. && $(MAKE) libuemf/all clean %.a %.$(OBJEXT): - cd .. && $(MAKE) libunicode-convert/$@ + cd .. && $(MAKE) libuemf/$@ .PHONY: all clean diff --git a/src/libunicode-convert/unicode-convert.c b/src/libuemf/symbol_convert.c index c8d2de064..650f4332d 100644 --- a/src/libunicode-convert/unicode-convert.c +++ b/src/libuemf/symbol_convert.c @@ -32,7 +32,7 @@ extern "C" { #endif #include <string.h> -#include "unicode-convert.h" +#include "symbol_convert.h" static bool hold_symb=0; // if any of these change, (re)generate the map table diff --git a/src/libunicode-convert/unicode-convert.h b/src/libuemf/symbol_convert.h index ac1795092..ac1795092 100644 --- a/src/libunicode-convert/unicode-convert.h +++ b/src/libuemf/symbol_convert.h diff --git a/src/extension/internal/uemf.c b/src/libuemf/uemf.c index b06990dbd..b06990dbd 100644 --- a/src/extension/internal/uemf.c +++ b/src/libuemf/uemf.c diff --git a/src/extension/internal/uemf.h b/src/libuemf/uemf.h index 4d620b424..f1211d63d 100644 --- a/src/extension/internal/uemf.h +++ b/src/libuemf/uemf.h @@ -1063,7 +1063,7 @@ extern "C" { @{ */ #define U_NONE 0 //!< Generic for nothing selected for all flag fields -#define U_PI 3.14159265358979323846 //!< pi +#define U_PI 3.14159265358979323846 //!< pi #define U_READ 1 #define U_WRITE 0 #define U_ENHMETA_VERSION 0x00010000 //!< U_EMRHEADER nVersion field @@ -1114,8 +1114,11 @@ extern "C" { // These are used in EMF structures and the byte order must be the same in memory or on disk. // These MAY be used in PNG and other libraries if these enforce byte order in memory,otherwise // U_swap4 may need to also be employed. -#define U_RGB(r,g,b) (U_COLORREF){r,g,b,0} //!< Set any RGB color with an {r,g,b} triplet -#define U_RGBA(r,g,b,a) (U_COLORREF){r,g,b,a} //!< Set any RGBA color with an {r,g,b,a} quad + +/// Set any RGB color with an {r,g,b} triplet +#define U_RGB(r,g,b) (U_COLORREF){(uint8_t)(r), (uint8_t)(g), (uint8_t)(b), 0} +/// Set any RGBA color with an {r,g,b,a} quad +#define U_RGBA(r,g,b,a) (U_COLORREF){(uint8_t)(r), (uint8_t)(g), (uint8_t)(b), (uint8_t)(a)} #define U_RGBAGetR(rgb) ((U_COLORREF)rgb).Red //!< Color RGB Get Red Macro. #define U_RGBAGetG(rgb) ((U_COLORREF)rgb).Green //!< Color RGB Get Green Macro. #define U_RGBAGetB(rgb) ((U_COLORREF)rgb).Blue //!< Color RGB Get Blue Macro. diff --git a/src/extension/internal/uemf_endian.c b/src/libuemf/uemf_endian.c index cdae07a3d..cdae07a3d 100644 --- a/src/extension/internal/uemf_endian.c +++ b/src/libuemf/uemf_endian.c diff --git a/src/extension/internal/uemf_endian.h b/src/libuemf/uemf_endian.h index 9866aacaf..9866aacaf 100644 --- a/src/extension/internal/uemf_endian.h +++ b/src/libuemf/uemf_endian.h diff --git a/src/extension/internal/uemf_print.c b/src/libuemf/uemf_print.c index 1d6bebc40..4ea9620cf 100644 --- a/src/extension/internal/uemf_print.c +++ b/src/libuemf/uemf_print.c @@ -395,7 +395,7 @@ void blend_print( void extlogpen_print( PU_EXTLOGPEN elp ){ - int i; + unsigned i; U_STYLEENTRY *elpStyleEntry; printf("elpPenStyle:0x%8.8X " ,elp->elpPenStyle ); printf("elpWidth:%u " ,elp->elpWidth ); @@ -478,7 +478,7 @@ void rgndataheader_print( void rgndata_print( PU_RGNDATA rd ){ - int i; + unsigned i; PU_RECTL rects; printf("rdh:"); rgndataheader_print(rd->rdh ); if(rd->rdh.nCount){ @@ -556,7 +556,7 @@ void emrtext_print( const char *record, int type ){ - int i,off; + unsigned i, off; char *string; PU_EMRTEXT pemt = (PU_EMRTEXT) emt; // constant part @@ -609,7 +609,8 @@ by end user code and to further that end prototypes are NOT provided and they ar // Functions with the same form starting with U_EMRPOLYBEZIER_print void core1_print(const char *name, const char *contents){ - int i; + unsigned i; + (void) name; PU_EMRPOLYLINETO pEmr = (PU_EMRPOLYLINETO) (contents); printf(" rclBounds: "); rectl_print(pEmr->rclBounds); printf("\n"); printf(" cptl: %d\n",pEmr->cptl ); @@ -622,7 +623,8 @@ void core1_print(const char *name, const char *contents){ // Functions with the same form starting with U_EMRPOLYPOLYLINE_print void core2_print(const char *name, const char *contents){ - int i; + unsigned i; + (void) name; PU_EMRPOLYPOLYGON pEmr = (PU_EMRPOLYPOLYGON) (contents); printf(" rclBounds: "); rectl_print(pEmr->rclBounds); printf("\n"); printf(" nPolys: %d\n",pEmr->nPolys ); @@ -644,6 +646,7 @@ void core2_print(const char *name, const char *contents){ // Functions with the same form starting with U_EMRSETMAPMODE_print void core3_print(const char *name, const char *label, const char *contents){ PU_EMRSETMAPMODE pEmr = (PU_EMRSETMAPMODE)(contents); + (void) name; if(!strcmp(label,"crColor:")){ printf(" %-15s ",label); colorref_print(*(U_COLORREF *)&(pEmr->iMode)); printf("\n"); } @@ -658,12 +661,14 @@ void core3_print(const char *name, const char *label, const char *contents){ // Functions taking a single U_RECT or U_RECTL, starting with U_EMRELLIPSE_print, also U_EMRFILLPATH_print, void core4_print(const char *name, const char *contents){ PU_EMRELLIPSE pEmr = (PU_EMRELLIPSE)( contents); + (void) name; printf(" rclBox: "); rectl_print(pEmr->rclBox); printf("\n"); } // Functions with the same form starting with U_EMRPOLYBEZIER16_print void core6_print(const char *name, const char *contents){ - int i; + unsigned i; + (void) name; PU_EMRPOLYBEZIER16 pEmr = (PU_EMRPOLYBEZIER16) (contents); printf(" rclBounds: "); rectl_print(pEmr->rclBounds); printf("\n"); printf(" cpts: %d\n",pEmr->cpts ); @@ -682,6 +687,7 @@ void core6_print(const char *name, const char *contents){ // empty the values are printed as a pair {x,y}, otherwise each is printed with its own label on a separate line. void core7_print(const char *name, const char *field1, const char *field2, const char *contents){ PU_EMRGENERICPAIR pEmr = (PU_EMRGENERICPAIR) (contents); + (void) name; if(*field2){ printf(" %-15s %d\n",field1,pEmr->pair.x); printf(" %-15s %d\n",field2,pEmr->pair.y); @@ -694,6 +700,7 @@ void core7_print(const char *name, const char *field1, const char *field2, const // For U_EMREXTTEXTOUTA and U_EMREXTTEXTOUTW, type=0 for the first one void core8_print(const char *name, const char *contents, int type){ PU_EMREXTTEXTOUTA pEmr = (PU_EMREXTTEXTOUTA) (contents); + (void) name; printf(" iGraphicsMode: %u\n",pEmr->iGraphicsMode ); printf(" rclBounds: "); rectl_print(pEmr->rclBounds); printf("\n"); printf(" exScale: %f\n",pEmr->exScale ); @@ -706,6 +713,7 @@ void core8_print(const char *name, const char *contents, int type){ // Functions that take a rect and a pair of points, starting with U_EMRARC_print void core9_print(const char *name, const char *contents){ PU_EMRARC pEmr = (PU_EMRARC) (contents); + (void) name; printf(" rclBox: "); rectl_print(pEmr->rclBox); printf("\n"); printf(" ptlStart: "); pointl_print(pEmr->ptlStart); printf("\n"); printf(" ptlEnd: "); pointl_print(pEmr->ptlEnd); printf("\n"); @@ -713,8 +721,9 @@ void core9_print(const char *name, const char *contents){ // Functions with the same form starting with U_EMRPOLYPOLYLINE16_print void core10_print(const char *name, const char *contents){ - int i; + unsigned i; PU_EMRPOLYPOLYLINE16 pEmr = (PU_EMRPOLYPOLYLINE16) (contents); + (void) name; printf(" rclBounds: "); rectl_print(pEmr->rclBounds); printf("\n"); printf(" nPolys: %d\n",pEmr->nPolys ); printf(" cpts: %d\n",pEmr->cpts ); @@ -734,8 +743,9 @@ void core10_print(const char *name, const char *contents){ // Functions with the same form starting with U_EMRINVERTRGN_print and U_EMRPAINTRGN_print, void core11_print(const char *name, const char *contents){ - int i,roff; + unsigned i,roff; PU_EMRINVERTRGN pEmr = (PU_EMRINVERTRGN) (contents); + (void) name; printf(" rclBounds: "); rectl_print(pEmr->rclBounds); printf("\n"); printf(" cbRgnData: %d\n",pEmr->cbRgnData); // This one is a pain since each RGNDATA may be a different size, so it isn't possible to index through them. @@ -754,6 +764,7 @@ void core11_print(const char *name, const char *contents){ // common code for U_EMRCREATEMONOBRUSH_print and U_EMRCREATEDIBPATTERNBRUSHPT_print, void core12_print(const char *name, const char *contents){ PU_EMRCREATEMONOBRUSH pEmr = (PU_EMRCREATEMONOBRUSH) (contents); + (void) name; printf(" ihBrush: %u\n",pEmr->ihBrush ); printf(" iUsage : %u\n",pEmr->iUsage ); printf(" offBmi : %u\n",pEmr->offBmi ); @@ -770,6 +781,7 @@ void core12_print(const char *name, const char *contents){ // common code for U_EMRALPHABLEND_print and U_EMRTRANSPARENTBLT_print, void core13_print(const char *name, const char *contents){ PU_EMRALPHABLEND pEmr = (PU_EMRALPHABLEND) (contents); + (void) name; printf(" rclBounds: "); rectl_print( pEmr->rclBounds); printf("\n"); printf(" Dest: "); pointl_print(pEmr->Dest); printf("\n"); printf(" cDest: "); pointl_print(pEmr->cDest); printf("\n"); @@ -802,6 +814,8 @@ They are listed in order by the corresponding U_EMR_* index number. \param contents pointer to a buffer holding all EMR records */ void U_EMRNOTIMPLEMENTED_print(const char *name, const char *contents){ + (void) name; + (void) contents; printf(" Not Implemented!\n"); } @@ -1114,6 +1128,7 @@ void U_EMRMOVETOEX_print(const char *contents){ \param contents pointer to a buffer holding all EMR records */ void U_EMRSETMETARGN_print(const char *contents){ + (void) contents; } // U_EMREXCLUDECLIPRECT 29 @@ -1159,6 +1174,7 @@ void U_EMRSCALEWINDOWEXTEX_print(const char *contents){ \param contents pointer to a buffer holding all EMR records */ void U_EMRSAVEDC_print(const char *contents){ + (void) contents; } // U_EMRRESTOREDC 34 @@ -1337,7 +1353,7 @@ void U_EMRCREATEPALETTE_print(const char *contents){ \param contents pointer to a buffer holding all EMR records */ void U_EMRSETPALETTEENTRIES_print(const char *contents){ - int i; + unsigned i; PU_EMRSETPALETTEENTRIES pEmr = (PU_EMRSETPALETTEENTRIES)(contents); printf(" ihPal: %u\n",pEmr->ihPal); printf(" iStart: %u\n",pEmr->iStart); @@ -1367,6 +1383,7 @@ void U_EMRRESIZEPALETTE_print(const char *contents){ \param contents pointer to a buffer holding all EMR records */ void U_EMRREALIZEPALETTE_print(const char *contents){ + (void) contents; } // U_EMREXTFLOODFILL 53 @@ -1405,7 +1422,7 @@ void U_EMRARCTO_print(const char *contents){ \param contents pointer to a buffer holding all EMR records */ void U_EMRPOLYDRAW_print(const char *contents){ - int i; + unsigned i; PU_EMRPOLYDRAW pEmr = (PU_EMRPOLYDRAW)(contents); printf(" rclBounds: "); rectl_print( pEmr->rclBounds); printf("\n"); printf(" cptl: %d\n",pEmr->cptl ); @@ -1447,6 +1464,7 @@ void U_EMRSETMITERLIMIT_print(const char *contents){ \param contents pointer to a buffer holding all EMR records */ void U_EMRBEGINPATH_print(const char *contents){ + (void) contents; } // U_EMRENDPATH 60 @@ -1455,6 +1473,7 @@ void U_EMRBEGINPATH_print(const char *contents){ \param contents pointer to a buffer holding all EMR records */ void U_EMRENDPATH_print(const char *contents){ + (void) contents; } // U_EMRCLOSEFIGURE 61 @@ -1463,6 +1482,7 @@ void U_EMRENDPATH_print(const char *contents){ \param contents pointer to a buffer holding all EMR records */ void U_EMRCLOSEFIGURE_print(const char *contents){ + (void) contents; } // U_EMRFILLPATH 62 @@ -1498,6 +1518,7 @@ void U_EMRSTROKEPATH_print(const char *contents){ \param contents pointer to a buffer holding all EMR records */ void U_EMRFLATTENPATH_print(const char *contents){ + (void) contents; } // U_EMRWIDENPATH 66 @@ -1506,6 +1527,7 @@ void U_EMRFLATTENPATH_print(const char *contents){ \param contents pointer to a buffer holding all EMR records */ void U_EMRWIDENPATH_print(const char *contents){ + (void) contents; } // U_EMRSELECTCLIPPATH 67 @@ -1523,6 +1545,7 @@ void U_EMRSELECTCLIPPATH_print(const char *contents){ \param contents pointer to a buffer holding all EMR records */ void U_EMRABORTPATH_print(const char *contents){ + (void) contents; } // U_EMRUNDEF69 69 @@ -1543,9 +1566,9 @@ void U_EMRCOMMENT_print(const char *contents){ cbData = pEmr->cbData; printf(" cbData: %d\n",cbData ); - src = (char *)&(pEmr->Data); // default + src = (char *)(&pEmr->Data); // default if(cbData >= 4){ - cIdent = *(uint32_t *)&(pEmr->Data); + cIdent = *(uint32_t *)(src); if( cIdent == U_EMR_COMMENT_PUBLIC ){ printf(" cIdent: Public\n"); PU_EMRCOMMENT_PUBLIC pEmrp = (PU_EMRCOMMENT_PUBLIC) pEmr; @@ -1586,7 +1609,7 @@ void U_EMRCOMMENT_print(const char *contents){ \param contents pointer to a buffer holding all EMR records */ void U_EMRFILLRGN_print(const char *contents){ - int i,roff; + unsigned i,roff; PU_EMRFILLRGN pEmr = (PU_EMRFILLRGN)(contents); printf(" rclBounds: "); rectl_print(pEmr->rclBounds); printf("\n"); printf(" cbRgnData: %u\n",pEmr->cbRgnData); @@ -1607,7 +1630,7 @@ void U_EMRFILLRGN_print(const char *contents){ \param contents pointer to a buffer holding all EMR records */ void U_EMRFRAMERGN_print(const char *contents){ - int i,roff; + unsigned i,roff; PU_EMRFRAMERGN pEmr = (PU_EMRFRAMERGN)(contents); printf(" rclBounds: "); rectl_print(pEmr->rclBounds); printf("\n"); printf(" cbRgnData: %u\n",pEmr->cbRgnData); @@ -1647,7 +1670,7 @@ void U_EMRPAINTRGN_print(const char *contents){ \param contents pointer to a buffer holding all EMR records */ void U_EMREXTSELECTCLIPRGN_print(const char *contents){ - int i,roff; + unsigned i,roff; PU_EMREXTSELECTCLIPRGN pEmr = (PU_EMREXTSELECTCLIPRGN) (contents); printf(" cbRgnData: %u\n",pEmr->cbRgnData); printf(" iMode: %u\n",pEmr->iMode); @@ -1944,7 +1967,7 @@ void U_EMRPOLYPOLYGON16_print(const char *contents){ \param contents pointer to a buffer holding all EMR records */ void U_EMRPOLYDRAW16_print(const char *contents){ - int i; + unsigned i; PU_EMRPOLYDRAW16 pEmr = (PU_EMRPOLYDRAW16)(contents); printf(" rclBounds: "); rectl_print( pEmr->rclBounds); printf("\n"); printf(" cpts: %d\n",pEmr->cpts ); @@ -2141,7 +2164,7 @@ void U_EMRTRANSPARENTBLT_print(const char *contents){ \param contents pointer to a buffer holding all EMR records */ void U_EMRGRADIENTFILL_print(const char *contents){ - int i; + unsigned i; PU_EMRGRADIENTFILL pEmr = (PU_EMRGRADIENTFILL)(contents); printf(" rclBounds: "); rectl_print( pEmr->rclBounds); printf("\n"); printf(" nTriVert: %u\n", pEmr->nTriVert ); @@ -2186,7 +2209,7 @@ void U_EMRGRADIENTFILL_print(const char *contents){ \param contents pointer to a buffer holding all EMR records */ void U_EMRCREATECOLORSPACEW_print(const char *contents){ - int i; + unsigned i; PU_EMRCREATECOLORSPACEW pEmr = (PU_EMRCREATECOLORSPACEW)(contents); printf(" ihCS: %u\n", pEmr->ihCS ); printf(" ColorSpace: "); logcolorspacew_print(pEmr->lcs); printf("\n"); @@ -2211,7 +2234,7 @@ void U_EMRCREATECOLORSPACEW_print(const char *contents){ */ int U_emf_onerec_print(const char *contents, const char *blimit, int recnum, size_t off){ PU_ENHMETARECORD lpEMFR = (PU_ENHMETARECORD)(contents + off); - int size; + unsigned size; printf("%-30srecord:%5d type:%3d offset:%8d size:%8d\n",U_emr_names(lpEMFR->iType),recnum,lpEMFR->iType,(int) off,lpEMFR->nSize); size = lpEMFR->nSize; diff --git a/src/extension/internal/uemf_print.h b/src/libuemf/uemf_print.h index 238e0e659..238e0e659 100644 --- a/src/extension/internal/uemf_print.h +++ b/src/libuemf/uemf_print.h diff --git a/src/extension/internal/uemf_utf.c b/src/libuemf/uemf_utf.c index 48d2510f0..48d2510f0 100644 --- a/src/extension/internal/uemf_utf.c +++ b/src/libuemf/uemf_utf.c diff --git a/src/extension/internal/uemf_utf.h b/src/libuemf/uemf_utf.h index e42de23e6..e42de23e6 100644 --- a/src/extension/internal/uemf_utf.h +++ b/src/libuemf/uemf_utf.h diff --git a/src/extension/internal/uwmf.c b/src/libuemf/uwmf.c index 9d916ecee..9d916ecee 100644 --- a/src/extension/internal/uwmf.c +++ b/src/libuemf/uwmf.c diff --git a/src/extension/internal/uwmf.h b/src/libuemf/uwmf.h index a97648eb1..a97648eb1 100644 --- a/src/extension/internal/uwmf.h +++ b/src/libuemf/uwmf.h diff --git a/src/extension/internal/uwmf_endian.c b/src/libuemf/uwmf_endian.c index e14c7aa77..e14c7aa77 100644 --- a/src/extension/internal/uwmf_endian.c +++ b/src/libuemf/uwmf_endian.c diff --git a/src/extension/internal/uwmf_endian.h b/src/libuemf/uwmf_endian.h index dc01c0d07..dc01c0d07 100644 --- a/src/extension/internal/uwmf_endian.h +++ b/src/libuemf/uwmf_endian.h diff --git a/src/extension/internal/uwmf_print.c b/src/libuemf/uwmf_print.c index bb9f3eb36..d044cf9b6 100644 --- a/src/extension/internal/uwmf_print.c +++ b/src/libuemf/uwmf_print.c @@ -43,6 +43,7 @@ extern "C" { void brush_print( U_BRUSH b ){ + uint16_t hatch; U_COLORREF Color; switch(b.Style){ case U_BS_SOLID: @@ -59,7 +60,8 @@ void brush_print( printf("DIBPattern:(not shown)"); break; case U_BS_HATCHED: - printf("Hatch:0x%4.4X ", *(uint16_t *)(b.Data)); + memcpy(&hatch, b.Data, 2); + printf("Hatch:0x%4.4X ", hatch); break; } } @@ -406,10 +408,12 @@ They are listed in order by the corresponding U_WMR_* index number. \param contents pointer to a buffer holding a WMR record */ void U_WMRNOTIMPLEMENTED_print(const char *contents){ + (void) contents; printf(" Not Implemented!\n"); } void U_WMREOF_print(const char *contents){ + (void) contents; } void U_WMRSETBKCOLOR_print(const char *contents){ @@ -445,6 +449,7 @@ void U_WMRSETROP2_print(const char *contents){ } void U_WMRSETRELABS_print(const char *contents){ + (void) contents; /* This record type has only the common 6 bytes, so nothing (else) to print */ } @@ -680,6 +685,7 @@ void U_WMRPATBLT_print(const char *contents){ } void U_WMRSAVEDC_print(const char *contents){ + (void) contents; /* This record type has only the common 6 bytes, so nothing (else) to print */ } @@ -784,6 +790,7 @@ void U_WMRESCAPE_print(const char *contents){ } void U_WMRRESTOREDC_print(const char *contents){ + (void) contents; /* This record type has only the common 6 bytes, so nothing (else) to print */ } @@ -926,6 +933,7 @@ void U_WMRSELECTPALETTE_print(const char *contents){ } void U_WMRREALIZEPALETTE_print(const char *contents){ + (void) contents; /* This record type has only the common 6 bytes, so nothing (else) to print */ } diff --git a/src/extension/internal/uwmf_print.h b/src/libuemf/uwmf_print.h index 31a8df5dc..31a8df5dc 100644 --- a/src/extension/internal/uwmf_print.h +++ b/src/libuemf/uwmf_print.h diff --git a/src/libunicode-convert/Makefile_insert b/src/libunicode-convert/Makefile_insert deleted file mode 100644 index e69049310..000000000 --- a/src/libunicode-convert/Makefile_insert +++ /dev/null @@ -1,5 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -ink_common_sources += \ - libunicode-convert/unicode-convert.c \ - libunicode-convert/unicode-convert.h diff --git a/src/libunicode-convert/README b/src/libunicode-convert/README deleted file mode 100644 index 51d96970d..000000000 --- a/src/libunicode-convert/README +++ /dev/null @@ -1 +0,0 @@ -Some simple routines for converting between Unicode and nonunicode fonts. diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp index 69adb4b6d..6aacc3f15 100644 --- a/src/selection-chemistry.cpp +++ b/src/selection-chemistry.cpp @@ -3457,6 +3457,7 @@ void sp_selection_create_bitmap_copy(SPDesktop *desktop) } t = Geom::Scale(1, -1) * Geom::Translate(shift_x, shift_y) * eek.inverse(); /// @fixme hardcoded doc2dt transform? + // TODO: avoid roundtrip via file // Do the export sp_export_png_file(document, filepath, bbox->min()[Geom::X], bbox->min()[Geom::Y], @@ -3483,7 +3484,7 @@ void sp_selection_create_bitmap_copy(SPDesktop *desktop) if (pb) { // Create the repr for the image Inkscape::XML::Node * repr = xml_doc->createElement("svg:image"); - sp_embed_image(repr, pb, "image/png"); + sp_embed_image(repr, pb); if (res == Inkscape::Util::Quantity::convert(1, "in", "px")) { // for default 90 dpi, snap it to pixel grid sp_repr_set_svg_double(repr, "width", width); sp_repr_set_svg_double(repr, "height", height); diff --git a/src/sp-image.cpp b/src/sp-image.cpp index 1978d1f8e..b0a094950 100644 --- a/src/sp-image.cpp +++ b/src/sp-image.cpp @@ -57,15 +57,13 @@ //#define DEBUG_LCMS #ifdef DEBUG_LCMS - - #define DEBUG_MESSAGE(key, ...)\ {\ g_message( __VA_ARGS__ );\ } - - #include <gtk/gtk.h> +#else +#define DEBUG_MESSAGE(key, ...) #endif // DEBUG_LCMS #endif // defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2) /* @@ -85,12 +83,7 @@ static void sp_image_update_arenaitem (SPImage *img, Inkscape::DrawingImage *ai) static void sp_image_update_canvas_image (SPImage *image); static GdkPixbuf * sp_image_repr_read_dataURI (const gchar * uri_data); static GdkPixbuf * sp_image_repr_read_b64 (const gchar * uri_data); - -extern "C" -{ - void user_read_data( png_structp png_ptr, png_bytep data, png_size_t length ); -} - +static void pixbuf_set_mime_data(GdkPixbuf *pb, guchar *data, gsize len, GdkPixbufFormat *fmt); #ifdef DEBUG_LCMS extern guint update_in_progress; @@ -120,291 +113,22 @@ extern guint update_in_progress; gtk_widget_show_all( dialog );\ }\ } +#else // DEBUG_LCMS +#define DEBUG_MESSAGE_SCISLAC(key, ...) #endif // DEBUG_LCMS namespace Inkscape { namespace IO { -class PushPull -{ -public: - gboolean first; - FILE* fp; - guchar* scratch; - gsize size; - gsize used; - gsize offset; - GdkPixbufLoader *loader; - - PushPull() : first(TRUE), - fp(0), - scratch(0), - size(0), - used(0), - offset(0), - loader(0) {}; - - gboolean readMore() - { - gboolean good = FALSE; - if ( offset ) - { - g_memmove( scratch, scratch + offset, used - offset ); - used -= offset; - offset = 0; - } - if ( used < size ) - { - gsize space = size - used; - gsize got = fread( scratch + used, 1, space, fp ); - if ( got ) - { - if ( loader ) - { - GError *err = NULL; - //g_message( " __read %d bytes", (int)got ); - if ( !gdk_pixbuf_loader_write( loader, scratch + used, got, &err ) ) - { - //g_message("_error writing pixbuf data"); - } - } - - used += got; - good = TRUE; - } - else - { - good = FALSE; - } - } - return good; - } - - gsize available() const - { - return (used - offset); - } - - gsize readOut( gpointer data, gsize length ) - { - gsize giving = available(); - if ( length < giving ) - { - giving = length; - } - g_memmove( data, scratch + offset, giving ); - offset += giving; - if ( offset >= used ) - { - offset = 0; - used = 0; - } - return giving; - } - - void clear() - { - offset = 0; - used = 0; - } - -private: - PushPull& operator = (const PushPull& other); - PushPull(const PushPull& other); -}; - -static void user_read_data( png_structp png_ptr, png_bytep data, png_size_t length ) -{ -// g_message( "user_read_data(%d)", length ); - - PushPull* youme = (PushPull*)png_get_io_ptr(png_ptr); - - gsize filled = 0; - gboolean canRead = TRUE; - - while ( filled < length && canRead ) - { - gsize some = youme->readOut( data + filled, length - filled ); - filled += some; - if ( filled < length ) - { - canRead &= youme->readMore(); - } - } -// g_message("things out"); -} - - -static bool readPngAndHeaders( PushPull &youme, gint & dpiX, gint & dpiY ) -{ - bool good = true; - - gboolean isPng = !png_sig_cmp( youme.scratch + youme.offset, 0, youme.available() ); - //g_message( " png? %s", (isPng ? "Yes":"No") ); - if ( isPng ) { - png_structp pngPtr = png_create_read_struct( PNG_LIBPNG_VER_STRING, - 0, //(png_voidp)user_error_ptr, - 0, //user_error_fn, - 0 //user_warning_fn - ); - png_infop infoPtr = pngPtr ? png_create_info_struct( pngPtr ) : 0; - - if ( pngPtr && infoPtr ) { - if ( setjmp(png_jmpbuf(pngPtr)) ) { - // libpng calls longjmp to return here if an error occurs. - good = false; - } - - if (good) { - png_set_read_fn( pngPtr, &youme, user_read_data ); - //g_message( "In" ); - - //png_read_info( pngPtr, infoPtr ); - png_read_png( pngPtr, infoPtr, PNG_TRANSFORM_IDENTITY, 0 ); - - //g_message("out"); - - /* - if ( png_get_valid( pngPtr, infoPtr, PNG_INFO_pHYs ) ) - { - g_message("pHYs chunk now valid" ); - } - if ( png_get_valid( pngPtr, infoPtr, PNG_INFO_sCAL ) ) - { - g_message("sCAL chunk now valid" ); - } - */ - - png_uint_32 res_x = 0; - png_uint_32 res_y = 0; - int unit_type = 0; - if ( png_get_pHYs( pngPtr, infoPtr, &res_x, &res_y, &unit_type) ) { -// g_message( "pHYs yes (%d, %d) %d (%s)", (int)res_x, (int)res_y, unit_type, -// (unit_type == 1? "per meter" : "unknown") -// ); - -// g_message( " dpi: (%d, %d)", -// (int)(0.5 + ((double)res_x)/39.37), -// (int)(0.5 + ((double)res_y)/39.37) ); - if ( unit_type == PNG_RESOLUTION_METER ) - { - // TODO come up with a more accurate DPI setting - dpiX = (int)(0.5 + ((double)res_x)/39.37); - dpiY = (int)(0.5 + ((double)res_y)/39.37); - } - } else { -// g_message( "pHYs no" ); - } - -/* - double width = 0; - double height = 0; - int unit = 0; - if ( png_get_sCAL(pngPtr, infoPtr, &unit, &width, &height) ) - { - gchar* vals[] = { - "unknown", // PNG_SCALE_UNKNOWN - "meter", // PNG_SCALE_METER - "radian", // PNG_SCALE_RADIAN - "last", // - NULL - }; - - g_message( "sCAL: (%f, %f) %d (%s)", - width, height, unit, - ((unit >= 0 && unit < 3) ? vals[unit]:"???") - ); - } -*/ - -#if defined(PNG_sRGB_SUPPORTED) - { - int intent = 0; - if ( png_get_sRGB(pngPtr, infoPtr, &intent) ) { -// g_message("Found an sRGB png chunk"); - } - } -#endif // defined(PNG_sRGB_SUPPORTED) - -#if defined(PNG_cHRM_SUPPORTED) - { - double white_x = 0; - double white_y = 0; - double red_x = 0; - double red_y = 0; - double green_x = 0; - double green_y = 0; - double blue_x = 0; - double blue_y = 0; - - if ( png_get_cHRM(pngPtr, infoPtr, - &white_x, &white_y, - &red_x, &red_y, - &green_x, &green_y, - &blue_x, &blue_y) ) { -// g_message("Found a cHRM png chunk"); - } - } -#endif // defined(PNG_cHRM_SUPPORTED) - -#if defined(PNG_gAMA_SUPPORTED) - { - double file_gamma = 0; - if ( png_get_gAMA(pngPtr, infoPtr, &file_gamma) ) { -// g_message("Found a gAMA png chunk"); - } - } -#endif // defined(PNG_gAMA_SUPPORTED) - -#if defined(PNG_iCCP_SUPPORTED) - { - png_charp name = 0; - int compression_type = 0; -#if (PNG_LIBPNG_VER < 10500) - png_charp profile = 0; -#else - png_bytep profile = 0; -#endif - png_uint_32 proflen = 0; - if ( png_get_iCCP(pngPtr, infoPtr, &name, &compression_type, &profile, &proflen) ) { -// g_message("Found an iCCP chunk named [%s] with %d bytes and comp %d", name, proflen, compression_type); - } - } -#endif // defined(PNG_iCCP_SUPPORTED) - - } - } else { - g_message("Error when creating PNG read struct"); - } - - // now clean it up. - if (pngPtr && infoPtr) { - png_destroy_read_struct( &pngPtr, &infoPtr, 0 ); - pngPtr = 0; - infoPtr = 0; - } else if (pngPtr) { - png_destroy_read_struct( &pngPtr, 0, 0 ); - pngPtr = 0; - } - } else { - good = false; // Was not a png file - } - - return good; -} - -GdkPixbuf* pixbuf_new_from_file( const char *filename, time_t &modTime, gchar*& pixPath, GError **/*error*/ ) +GdkPixbuf* pixbuf_new_from_file(const char *filename, time_t &modTime, gchar*& pixPath) { GdkPixbuf* buf = NULL; - PushPull youme; - gint dpiX = 0; - gint dpiY = 0; modTime = 0; if ( pixPath ) { g_free(pixPath); pixPath = NULL; } - + //test correctness of filename if (!g_file_test (filename, G_FILE_TEST_EXISTS)){ return NULL; @@ -412,95 +136,43 @@ GdkPixbuf* pixbuf_new_from_file( const char *filename, time_t &modTime, gchar*& struct stat stdir; int val = g_stat(filename, &stdir); if (stdir.st_mode & S_IFDIR){ - //filename is not correct: it is a directory name and hence further code can not return valid results + g_warning("Linked image file %s is a directory", filename); return NULL; } - dump_fopen_call( filename, "pixbuf_new_from_file" ); - FILE* fp = fopen_utf8name( filename, "r" ); - if ( fp ) - { - { - // struct stat st; - // memset(&st, 0, sizeof(st)); - // int val = g_stat(filename, &st); - if ( !val ) { - modTime = stdir.st_mtime;//st.st_mtime; - pixPath = g_strdup(filename); - } + // we need to load the entire pixbuf into memory + gchar *data = NULL; + gsize len = 0; + + if (g_file_get_contents(filename, &data, &len, NULL)) { + if (!val) { + modTime = stdir.st_mtime; + pixPath = g_strdup(filename); } GdkPixbufLoader *loader = gdk_pixbuf_loader_new(); - if ( loader ) - { - GError *err = NULL; - - // short buffer - guchar scratch[1024]; - gboolean latter = FALSE; - - youme.fp = fp; - youme.scratch = scratch; - youme.size = sizeof(scratch); - youme.used = 0; - youme.offset = 0; - youme.loader = loader; - - while ( !feof(fp) ) - { - if ( youme.readMore() ) { - if ( youme.first ) { - //g_message( "First data chunk" ); - youme.first = FALSE; - if (readPngAndHeaders(youme, dpiX, dpiY)) - { - // TODO set the dpi to be read elsewhere - } - } else if ( !latter ) { - latter = TRUE; - } - // Now clear out the buffer so we can read more. - // (dumping out unused) - youme.clear(); - } - } - - gboolean ok = gdk_pixbuf_loader_close(loader, &err); - if ( ok ) { - buf = gdk_pixbuf_loader_get_pixbuf( loader ); - if ( buf ) { - g_object_ref(buf); - } - } else { - // do something - g_message("error loading pixbuf at close"); - } - - g_object_unref(loader); + gdk_pixbuf_loader_write(loader, (guchar *) data, len, NULL); + gdk_pixbuf_loader_close(loader, NULL); + + buf = gdk_pixbuf_loader_get_pixbuf(loader); + if (buf) { + g_object_ref(buf); + buf = sp_image_pixbuf_force_rgba(buf); + pixbuf_set_mime_data(buf, (guchar *) data, len, gdk_pixbuf_loader_get_format(loader)); } else { - g_message("error when creating pixbuf loader"); + g_free(data); + g_warning("Error loading pixbuf"); } - fclose( fp ); - fp = 0; + + // TODO: we could also read DPI, ICC profile, gamma correction, and other information + // from the file. This can be done by using format-specific libraries e.g. libpng. } else { - g_warning ("Unable to open linked file: %s", filename); + g_warning("Unable to open linked file: %s", filename); } return buf; } -GdkPixbuf* pixbuf_new_from_file( const char *filename, GError **error ) -{ - time_t modTime = 0; - gchar* pixPath = 0; - GdkPixbuf* result = pixbuf_new_from_file( filename, modTime, pixPath, error ); - if (pixPath) { - g_free(pixPath); - } - return result; -} - - } } @@ -568,6 +240,7 @@ void SPImage::release() { } if (this->pixbuf) { + g_object_set_data(G_OBJECT(this->pixbuf), "cairo_surface", NULL); g_object_unref (this->pixbuf); this->pixbuf = NULL; } @@ -706,18 +379,19 @@ void SPImage::set(unsigned int key, const gchar* value) { } this->color_profile = (value) ? g_strdup (value) : NULL; -#ifdef DEBUG_LCMS + if ( value ) { DEBUG_MESSAGE( lcmsFour, "<this> color-profile set to '%s'", value ); } else { DEBUG_MESSAGE( lcmsFour, "<this> color-profile cleared" ); } -#endif // DEBUG_LCMS + // TODO check on this HREF_MODIFIED flag this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_IMAGE_HREF_MODIFIED_FLAG); break; #endif // defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2) + default: SPItem::set(key, value); break; @@ -758,7 +432,6 @@ void SPImage::update(SPCtx *ctx, unsigned int flags) { doc->getBase()); if (pixbuf) { - pixbuf = sp_image_pixbuf_force_rgba (pixbuf); // BLIP #if defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2) if ( this->color_profile ) @@ -769,9 +442,8 @@ void SPImage::update(SPCtx *ctx, unsigned int flags) { guchar* px = gdk_pixbuf_get_pixels( pixbuf ); if ( px ) { -#ifdef DEBUG_LCMS DEBUG_MESSAGE( lcmsFive, "in <image>'s sp_image_update. About to call colorprofile_get_handle()" ); -#endif // DEBUG_LCMS + guint profIntent = Inkscape::RENDERING_INTENT_UNKNOWN; cmsHPROFILE prof = Inkscape::CMSSystem::getHandle( this->document, &profIntent, @@ -813,34 +485,22 @@ void SPImage::update(SPCtx *ctx, unsigned int flags) { } cmsDeleteTransform( transf ); - } -#ifdef DEBUG_LCMS - else - { + } else { DEBUG_MESSAGE( lcmsSix, "in <image>'s sp_image_update. Unable to create LCMS transform." ); } -#endif // DEBUG_LCMS + cmsCloseProfile( destProf ); - } -#ifdef DEBUG_LCMS - else - { + } else { DEBUG_MESSAGE( lcmsSeven, "in <image>'s sp_image_update. Profile type is named color. Can't transform." ); } -#endif // DEBUG_LCMS - } -#ifdef DEBUG_LCMS - else - { + } else { DEBUG_MESSAGE( lcmsEight, "in <image>'s sp_image_update. No profile found." ); } -#endif // DEBUG_LCMS } } #endif // defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2) + this->pixbuf = pixbuf; - // convert to premultiplied native-endian ARGB for display with Cairo - convert_pixbuf_normal_to_argb32(this->pixbuf); } } } @@ -997,7 +657,9 @@ Geom::OptRect SPImage::bbox(Geom::Affine const &transform, SPItem::BBoxType type void SPImage::print(SPPrintContext *ctx) { if (this->pixbuf && (this->width.computed > 0.0) && (this->height.computed > 0.0) ) { GdkPixbuf *pb = gdk_pixbuf_copy(this->pixbuf); - convert_pixbuf_argb32_to_normal(pb); + // GObject data is not copied, so we have to set the pixel format explicitly + g_object_set_data_full(G_OBJECT(pb), "pixel_format", g_strdup("argb32"), g_free); + ink_pixbuf_ensure_normal(pb); guchar *px = gdk_pixbuf_get_pixels(pb); int w = gdk_pixbuf_get_width(pb); @@ -1035,7 +697,7 @@ void SPImage::print(SPPrintContext *ctx) { t = ti * t; sp_print_image_R8G8B8A8_N(ctx, px + trimx*pixskip + trimy*rs, trimwidth, trimheight, rs, t, this->style); } - free(px); // else big memory leak on each image print! + g_object_unref(pb); } } @@ -1086,13 +748,14 @@ GdkPixbuf *sp_image_repr_read_image( time_t& modTime, char*& pixPath, const gcha pixPath = 0; } - const gchar *filename = href; + gchar const *filename = href; + if (filename != NULL) { if (strncmp (filename,"file:",5) == 0) { gchar *fullname = g_filename_from_uri(filename, NULL, NULL); if (fullname) { - // TODO check this. Was doing a UTF-8 to filename conversion here. - pixbuf = Inkscape::IO::pixbuf_new_from_file (fullname, modTime, pixPath, NULL); + pixbuf = Inkscape::IO::pixbuf_new_from_file(fullname, modTime, pixPath); + g_free(fullname); if (pixbuf != NULL) { return pixbuf; } @@ -1118,7 +781,7 @@ GdkPixbuf *sp_image_repr_read_image( time_t& modTime, char*& pixPath, const gcha // different dir) or unset (when doc is not saved yet), so we check for base+href existence first, // and if it fails, we also try to use bare href regardless of its g_path_is_absolute if (g_file_test (fullname, G_FILE_TEST_EXISTS) && !g_file_test (fullname, G_FILE_TEST_IS_DIR)) { - pixbuf = Inkscape::IO::pixbuf_new_from_file( fullname, modTime, pixPath, NULL ); + pixbuf = Inkscape::IO::pixbuf_new_from_file(fullname, modTime, pixPath); g_free (fullname); if (pixbuf != NULL) { return pixbuf; @@ -1128,7 +791,7 @@ GdkPixbuf *sp_image_repr_read_image( time_t& modTime, char*& pixPath, const gcha /* try filename as absolute */ if (g_file_test (filename, G_FILE_TEST_EXISTS) && !g_file_test (filename, G_FILE_TEST_IS_DIR)) { - pixbuf = Inkscape::IO::pixbuf_new_from_file( filename, modTime, pixPath, NULL ); + pixbuf = Inkscape::IO::pixbuf_new_from_file(filename, modTime, pixPath); if (pixbuf != NULL) { return pixbuf; } @@ -1146,13 +809,13 @@ GdkPixbuf *sp_image_repr_read_image( time_t& modTime, char*& pixPath, const gcha g_warning ("xlink:href did not resolve to a valid image file, now trying sodipodi:absref=\"%s\"", absref); } - pixbuf = Inkscape::IO::pixbuf_new_from_file( filename, modTime, pixPath, NULL ); + pixbuf = Inkscape::IO::pixbuf_new_from_file(filename, modTime, pixPath); if (pixbuf != NULL) { return pixbuf; } } /* Nope: We do not find any valid pixmap file :-( */ - pixbuf = gdk_pixbuf_new_from_xpm_data ((const gchar **) brokenimage_xpm); + pixbuf = gdk_pixbuf_new_from_xpm_data((const gchar **) brokenimage_xpm); /* It should be included xpm, so if it still does not does load, */ /* our libraries are broken */ @@ -1321,82 +984,57 @@ static GdkPixbuf *sp_image_repr_read_dataURI( const gchar * uri_data ) return pixbuf; } -static GdkPixbuf *sp_image_repr_read_b64( const gchar * uri_data ) +static GdkPixbuf *sp_image_repr_read_b64(gchar const *uri_data) { - GdkPixbuf * pixbuf = NULL; - - static const gchar B64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - + GdkPixbuf *pixbuf = NULL; GdkPixbufLoader *loader = gdk_pixbuf_loader_new(); - if (loader) { - bool eos = false; - bool failed = false; - const gchar* btr = uri_data; - gchar ud[4]; - guchar bd[57]; - - while (!eos) { - gint ell = 0; - for (gint j = 0; j < 19; j++) { - gint len = 0; - for (gint k = 0; k < 4; k++) { - while (isspace ((int) (*btr))) { - if ((*btr) == '\0') break; - btr++; - } - if (eos) { - ud[k] = 0; - continue; - } - if (((*btr) == '\0') || ((*btr) == '=')) { - eos = true; - ud[k] = 0; - continue; - } - ud[k] = 64; - for (gint b = 0; b < 64; b++) { /* There must a faster way to do this... ?? */ - if (B64[b] == (*btr)) { - ud[k] = (gchar) b; - break; - } - } - if (ud[k] == 64) { /* data corruption ?? */ - eos = true; - ud[k] = 0; - continue; - } - btr++; - len++; - } - guint32 bits = (guint32) ud[0]; - bits = (bits << 6) | (guint32) ud[1]; - bits = (bits << 6) | (guint32) ud[2]; - bits = (bits << 6) | (guint32) ud[3]; - bd[ell++] = (guchar) ((bits & 0xff0000) >> 16); - if (len > 2) { - bd[ell++] = (guchar) ((bits & 0xff00) >> 8); - } - if (len > 3) { - bd[ell++] = (guchar) (bits & 0xff); - } - } - if (!gdk_pixbuf_loader_write (loader, (const guchar *) bd, (size_t) ell, NULL)) { - failed = true; - break; - } - } + if (!loader) return NULL; - gdk_pixbuf_loader_close (loader, NULL); + gsize decoded_len = 0; + guchar *decoded = g_base64_decode(uri_data, &decoded_len); - if (!failed) { - pixbuf = gdk_pixbuf_loader_get_pixbuf (loader); - } + if (gdk_pixbuf_loader_write(loader, decoded, decoded_len, NULL)) { + gdk_pixbuf_loader_close(loader, NULL); + pixbuf = gdk_pixbuf_loader_get_pixbuf(loader); + g_object_ref(pixbuf); + pixbuf = sp_image_pixbuf_force_rgba(pixbuf); + pixbuf_set_mime_data(pixbuf, decoded, decoded_len, gdk_pixbuf_loader_get_format(loader)); + } else { + g_free(decoded); } + g_object_unref(loader); return pixbuf; } +// takes ownership of passed data +static void pixbuf_set_mime_data(GdkPixbuf *pb, guchar *data, gsize len, GdkPixbufFormat *fmt) +{ + cairo_surface_t *s = ink_cairo_surface_get_for_pixbuf(pb); + + gchar const *mimetype = NULL; + gchar *fmt_name = gdk_pixbuf_format_get_name(fmt); + Glib::ustring name = fmt_name; + g_free(fmt_name); + + if (name == "jpeg") { + mimetype = CAIRO_MIME_TYPE_JPEG; + } else if (name == "jpeg2000") { + mimetype = CAIRO_MIME_TYPE_JP2; + } else if (name == "png") { + mimetype = CAIRO_MIME_TYPE_PNG; + } + + if (mimetype != NULL) { + cairo_surface_set_mime_data(s, mimetype, data, len, g_free, data); + //g_message("Setting Cairo MIME data: %s", mimetype); + } else { + g_free(data); + //g_message("Not setting Cairo MIME data: unknown format %s", name.c_str()); + } +} + static void sp_image_set_curve( SPImage *image ) { //create a curve at the image's boundary for snapping @@ -1432,41 +1070,67 @@ SPCurve *sp_image_get_curve( SPImage *image ) return result; } -void sp_embed_image( Inkscape::XML::Node *image_node, GdkPixbuf *pb, Glib::ustring const &mime_in ) +void sp_embed_image(Inkscape::XML::Node *image_node, GdkPixbuf *pb) { - Glib::ustring format, mime; - if (mime_in == "image/jpeg") { - mime = mime_in; - format = "jpeg"; - } else { - mime = "image/png"; - format = "png"; + static gchar const *mimetypes[] = { + CAIRO_MIME_TYPE_JPEG, CAIRO_MIME_TYPE_JP2, CAIRO_MIME_TYPE_PNG, NULL }; + static guint mimetypes_len = g_strv_length(const_cast<gchar**>(mimetypes)); + + bool free_data = false; + + // check whether the pixbuf has MIME data + guchar *data = NULL; + gsize len = 0; + gchar const *data_mimetype = NULL; + + cairo_surface_t *s = reinterpret_cast<cairo_surface_t*>(g_object_get_data(G_OBJECT(pb), "cairo_surface")); + if (s) { + for (guint i = 0; i < mimetypes_len; ++i) { + unsigned long len_long = 0; + cairo_surface_get_mime_data(s, mimetypes[i], const_cast<unsigned char const **>(&data), &len_long); + len = len_long; // this assumes that the added range of long is not needed. the code below assumes gsize range of values is sufficient. + if (data != NULL) { + data_mimetype = mimetypes[i]; + break; + } + } } - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - Glib::ustring quality = Glib::ustring::format(prefs->getInt("/dialogs/import/quality", 100)); + if (data == NULL) { + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + Glib::ustring quality = Glib::ustring::format(prefs->getInt("/dialogs/import/quality", 100)); - gchar *data = 0; - gsize length = 0; - gdk_pixbuf_save_to_buffer(pb, &data, &length, format.data(), NULL, "quality", quality.c_str(), NULL); + // if there is no supported MIME data, embed as PNG + data_mimetype = "image/png"; + ink_pixbuf_ensure_normal(pb); + gdk_pixbuf_save_to_buffer(pb, reinterpret_cast<gchar**>(&data), &len, "png", NULL, + "quality", quality.c_str(), NULL); + free_data = true; + } // Save base64 encoded data in image node // this formula taken from Glib docs - guint needed_size = length * 4 / 3 + length * 4 / (3 * 72) + 7; - needed_size += 5 + 8 + mime.size(); // 5 bytes for data:, 8 for ;base64, + gsize needed_size = len * 4 / 3 + len * 4 / (3 * 72) + 7; + needed_size += 5 + 8 + strlen(data_mimetype); // 5 bytes for data: + 8 for ;base64, - gchar *buffer = (gchar *) g_malloc(needed_size), *buf_work = buffer; - buf_work += g_sprintf(buffer, "data:%s;base64,", mime.data()); + gchar *buffer = (gchar *) g_malloc(needed_size); + gchar *buf_work = buffer; + buf_work += g_sprintf(buffer, "data:%s;base64,", data_mimetype); gint state = 0; gint save = 0; gsize written = 0; - written += g_base64_encode_step((guchar*) data, length, TRUE, buf_work, &state, &save); + written += g_base64_encode_step(data, len, TRUE, buf_work, &state, &save); written += g_base64_encode_close(TRUE, buf_work + written, &state, &save); buf_work[written] = 0; // null terminate + // TODO: this is very wasteful memory-wise. + // It would be better to only keep the binary data around, + // and base64 encode on the fly when saving the XML. image_node->setAttribute("xlink:href", buffer); + g_free(buffer); + if (free_data) g_free(data); } void sp_image_refresh_if_outdated( SPImage* image ) diff --git a/src/sp-image.h b/src/sp-image.h index 63136ff39..066a63863 100644 --- a/src/sp-image.h +++ b/src/sp-image.h @@ -75,7 +75,7 @@ public: /* Return duplicate of curve or NULL */ SPCurve *sp_image_get_curve (SPImage *image); -void sp_embed_image(Inkscape::XML::Node *imgnode, GdkPixbuf *pb, Glib::ustring const &mime); +void sp_embed_image(Inkscape::XML::Node *imgnode, GdkPixbuf *pb); void sp_image_refresh_if_outdated( SPImage* image ); #endif diff --git a/src/style.h b/src/style.h index c992e9dd2..bc4df96e2 100644 --- a/src/style.h +++ b/src/style.h @@ -164,18 +164,6 @@ struct SPIPaint { void setColor( SPColor const& color ) {value.color = color; colorSet = true;} void read( gchar const *str, SPStyle &tyle, SPDocument *document = 0); - -/* EMF_DRIVER is a temp work-around -The problem is that SPIPaint is private, but is included in the SPStyle struct, and that is needed in emf-inout.cpp, but the compiler -won't accept it there. If the two conditional lines are moved out of the "private" they end up generating undefined reference -errors. -*/ - -private: -#ifndef EMF_DRIVER - SPIPaint(SPIPaint const&); - SPIPaint &operator=(SPIPaint const &); -#endif // EMF_DRIVER }; /// Filter type internal to SPStyle diff --git a/src/svg/svg-length.cpp b/src/svg/svg-length.cpp index ea438e91a..bb6cc5428 100644 --- a/src/svg/svg-length.cpp +++ b/src/svg/svg-length.cpp @@ -285,6 +285,10 @@ std::vector<SVGLength> sp_svg_length_list_read(gchar const *str) static unsigned sp_svg_length_read_lff(gchar const *str, SVGLength::Unit *unit, float *val, float *computed, char **next) { +/* note: this function is sometimes fed a string with several consecutive numbers, e.g. by sp_svg_length_list_read. +So after the number, the string does not necessarily have a \0 or a unit, it might also contain a space or comma and then the next number! +*/ + if (!str) { return 0; } @@ -330,8 +334,8 @@ static unsigned sp_svg_length_read_lff(gchar const *str, SVGLength::Unit *unit, *next = (char *) e + 1; } return 1; - } else if (g_ascii_isspace(e[0])) { - return 0; // spaces are not allowed + } else if (g_ascii_isspace(e[0]) && e[1] && g_ascii_isalpha(e[1])) { + return 0; // spaces between value and unit are not allowed } else { /* Unitless */ if (unit) { @@ -367,7 +371,7 @@ static unsigned sp_svg_length_read_lff(gchar const *str, SVGLength::Unit *unit, *unit = SVGLength::PT; } if (computed) { - *computed = v * Inkscape::Util::Quantity::convert(1, "pt", "px"); + *computed = Inkscape::Util::Quantity::convert(v, "pt", "px"); } break; case UVAL('p','c'): @@ -375,7 +379,7 @@ static unsigned sp_svg_length_read_lff(gchar const *str, SVGLength::Unit *unit, *unit = SVGLength::PC; } if (computed) { - *computed = v * Inkscape::Util::Quantity::convert(1, "pc", "px"); + *computed = Inkscape::Util::Quantity::convert(v, "pc", "px"); } break; case UVAL('m','m'): @@ -383,7 +387,7 @@ static unsigned sp_svg_length_read_lff(gchar const *str, SVGLength::Unit *unit, *unit = SVGLength::MM; } if (computed) { - *computed = v * Inkscape::Util::Quantity::convert(1, "mm", "px"); + *computed = Inkscape::Util::Quantity::convert(v, "mm", "px"); } break; case UVAL('c','m'): @@ -391,7 +395,7 @@ static unsigned sp_svg_length_read_lff(gchar const *str, SVGLength::Unit *unit, *unit = SVGLength::CM; } if (computed) { - *computed = v * Inkscape::Util::Quantity::convert(1, "cm", "px"); + *computed = Inkscape::Util::Quantity::convert(v, "cm", "px"); } break; case UVAL('i','n'): @@ -399,7 +403,7 @@ static unsigned sp_svg_length_read_lff(gchar const *str, SVGLength::Unit *unit, *unit = SVGLength::INCH; } if (computed) { - *computed = v * Inkscape::Util::Quantity::convert(1, "in", "px"); + *computed = Inkscape::Util::Quantity::convert(v, "in", "px"); } break; case UVAL('f','t'): @@ -407,7 +411,7 @@ static unsigned sp_svg_length_read_lff(gchar const *str, SVGLength::Unit *unit, *unit = SVGLength::FOOT; } if (computed) { - *computed = v * Inkscape::Util::Quantity::convert(1, "ft", "px"); + *computed = Inkscape::Util::Quantity::convert(v, "ft", "px"); } break; case UVAL('e','m'): diff --git a/src/text-editing.cpp b/src/text-editing.cpp index 3cb896cb7..cf1c4811f 100644 --- a/src/text-editing.cpp +++ b/src/text-editing.cpp @@ -1282,23 +1282,23 @@ sp_te_adjust_linespacing_screen (SPItem *text, Inkscape::Text::Layout::iterator style->line_height.value = style->line_height.computed; break; case SP_CSS_UNIT_PT: - style->line_height.computed += zby * Inkscape::Util::Quantity::convert(1, "px", "pt"); + style->line_height.computed += Inkscape::Util::Quantity::convert(zby, "px", "pt"); style->line_height.value = style->line_height.computed; break; case SP_CSS_UNIT_PC: - style->line_height.computed += zby * (Inkscape::Util::Quantity::convert(1, "px", "pt") / 12); + style->line_height.computed += (Inkscape::Util::Quantity::convert(zby, "px", "pt") / 12); style->line_height.value = style->line_height.computed; break; case SP_CSS_UNIT_MM: - style->line_height.computed += zby * Inkscape::Util::Quantity::convert(1, "px", "mm"); + style->line_height.computed += Inkscape::Util::Quantity::convert(zby, "px", "mm"); style->line_height.value = style->line_height.computed; break; case SP_CSS_UNIT_CM: - style->line_height.computed += zby * Inkscape::Util::Quantity::convert(1, "px", "cm"); + style->line_height.computed += Inkscape::Util::Quantity::convert(zby, "px", "cm"); style->line_height.value = style->line_height.computed; break; case SP_CSS_UNIT_IN: - style->line_height.computed += zby * Inkscape::Util::Quantity::convert(1, "px", "in"); + style->line_height.computed += Inkscape::Util::Quantity::convert(zby, "px", "in"); style->line_height.value = style->line_height.computed; break; } diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt index b592d2527..c95dd35cc 100644 --- a/src/ui/CMakeLists.txt +++ b/src/ui/CMakeLists.txt @@ -54,6 +54,7 @@ set(ui_SRC dialog/livepatheffect-editor.cpp dialog/memory.cpp dialog/messages.cpp + dialog/new-from-template.cpp dialog/object-attributes.cpp dialog/object-properties.cpp dialog/ocaldialogs.cpp @@ -65,6 +66,8 @@ set(ui_SRC dialog/spellcheck.cpp dialog/svg-fonts-dialog.cpp dialog/swatches.cpp + dialog/template-load-tab.cpp + dialog/template-widget.cpp dialog/text-edit.cpp dialog/tile.cpp dialog/tracedialog.cpp @@ -166,16 +169,20 @@ set(ui_SRC dialog/livepatheffect-editor.h dialog/memory.h dialog/messages.h + dialog/new-from-template.h dialog/object-attributes.h dialog/object-properties.h dialog/ocaldialogs.h dialog/panel-dialog.h dialog/print-colors-preview-dialog.h dialog/print.h + dialog/spellcheck.h dialog/svg-fonts-dialog.h dialog/swatches.h dialog/symbols.h + dialog/template-load-tab.h + dialog/template-widget.h dialog/text-edit.h dialog/tile.h dialog/tracedialog.h diff --git a/src/ui/cache/svg_preview_cache.cpp b/src/ui/cache/svg_preview_cache.cpp index 74e94b827..a09489f6d 100644 --- a/src/ui/cache/svg_preview_cache.cpp +++ b/src/ui/cache/svg_preview_cache.cpp @@ -33,7 +33,7 @@ #include "ui/cache/svg_preview_cache.h" -GdkPixbuf* render_pixbuf(Inkscape::Drawing &drawing, double scale_factor, const Geom::Rect& dbox, unsigned psize) +GdkPixbuf* render_pixbuf(Inkscape::Drawing &drawing, double scale_factor, Geom::Rect const &dbox, unsigned psize) { Geom::Affine t(Geom::Scale(scale_factor, scale_factor)); drawing.root()->setTransform(Geom::Scale(scale_factor)); @@ -61,13 +61,7 @@ GdkPixbuf* render_pixbuf(Inkscape::Drawing &drawing, double scale_factor, const drawing.render(ct, area, Inkscape::DrawingItem::RENDER_BYPASS_CACHE); cairo_surface_flush(s); - GdkPixbuf* pixbuf = gdk_pixbuf_new_from_data(cairo_image_surface_get_data(s), - GDK_COLORSPACE_RGB, - TRUE, - 8, psize, psize, cairo_image_surface_get_stride(s), - ink_cairo_pixbuf_cleanup, s); - convert_pixbuf_argb32_to_normal(pixbuf); - + GdkPixbuf* pixbuf = ink_pixbuf_create_from_cairo_surface(s); return pixbuf; } @@ -81,6 +75,12 @@ SvgPreview::SvgPreview() SvgPreview::~SvgPreview() { + for (std::map<Glib::ustring, GdkPixbuf *>::iterator i = _pixmap_cache.begin(); + i != _pixmap_cache.end(); ++i) + { + g_object_unref(i->second); + i->second = NULL; + } } Glib::ustring SvgPreview::cache_key(gchar const *uri, gchar const *name, unsigned psize) const { @@ -102,6 +102,7 @@ GdkPixbuf* SvgPreview::get_preview_from_cache(const Glib::ustring& key) { } void SvgPreview::set_preview_in_cache(const Glib::ustring& key, GdkPixbuf* px) { + g_object_ref(px); _pixmap_cache[key] = px; } @@ -123,6 +124,8 @@ GdkPixbuf* SvgPreview::get_preview(const gchar* uri, const gchar* id, Inkscape:: void SvgPreview::remove_preview_from_cache(const Glib::ustring& key) { std::map<Glib::ustring, GdkPixbuf *>::iterator found = _pixmap_cache.find(key); if ( found != _pixmap_cache.end() ) { + g_object_unref(found->second); + found->second = NULL; _pixmap_cache.erase(key); } } diff --git a/src/ui/clipboard.cpp b/src/ui/clipboard.cpp index 6241464c2..8a7812494 100644 --- a/src/ui/clipboard.cpp +++ b/src/ui/clipboard.cpp @@ -93,12 +93,6 @@ #ifdef WIN32 #include <windows.h> -// Clipboard Formats: http://msdn.microsoft.com/en-us/library/ms649013(VS.85).aspx -// On Windows, most graphical applications can handle CF_DIB/CF_BITMAP and/or CF_ENHMETAFILE -// GTK automatically presents an "image/bmp" target as CF_DIB/CF_BITMAP -// Presenting "image/x-emf" as CF_ENHMETAFILE must be done by Inkscape ? -#define CLIPBOARD_WIN32_EMF_TARGET "CF_ENHMETAFILE" -#define CLIPBOARD_WIN32_EMF_MIME "image/x-emf" #endif namespace Inkscape { @@ -178,13 +172,18 @@ ClipboardManagerImpl::ClipboardManagerImpl() _text_style(NULL), _clipboard( Gtk::Clipboard::get() ) { + // Clipboard Formats: http://msdn.microsoft.com/en-us/library/ms649013(VS.85).aspx + // On Windows, most graphical applications can handle CF_DIB/CF_BITMAP and/or CF_ENHMETAFILE + // GTK automatically presents an "image/bmp" target as CF_DIB/CF_BITMAP + // Presenting "image/x-emf" as CF_ENHMETAFILE must be done by Inkscape ? + // push supported clipboard targets, in order of preference _preferred_targets.push_back("image/x-inkscape-svg"); _preferred_targets.push_back("image/svg+xml"); _preferred_targets.push_back("image/svg+xml-compressed"); -#ifdef WIN32 - _preferred_targets.push_back(CLIPBOARD_WIN32_EMF_MIME); -#endif + _preferred_targets.push_back("image/x-emf"); + _preferred_targets.push_back("CF_ENHMETAFILE"); + _preferred_targets.push_back("WCF_ENHMETAFILE"); // seen on Wine _preferred_targets.push_back("application/pdf"); _preferred_targets.push_back("image/x-adobe-illustrator"); } @@ -981,7 +980,7 @@ SPDocument *ClipboardManagerImpl::_retrieveClipboard(Glib::ustring required_targ Glib::ustring target = best_target; #ifdef WIN32 - if (best_target == CLIPBOARD_WIN32_EMF_TARGET) + if (best_target == "CF_ENHMETAFILE" || best_target == "WCF_ENHMETAFILE") { // Try to save clipboard data as en emf file (using win32 api) if (OpenClipboard(NULL)) { HGLOBAL hglb = GetClipboardData(CF_ENHMETAFILE); @@ -989,7 +988,7 @@ SPDocument *ClipboardManagerImpl::_retrieveClipboard(Glib::ustring required_targ HENHMETAFILE hemf = CopyEnhMetaFile((HENHMETAFILE) hglb, filename); if (hemf) { file_saved = true; - target = CLIPBOARD_WIN32_EMF_MIME; + target = "image/x-emf"; DeleteEnhMetaFile(hemf); } } @@ -1020,6 +1019,10 @@ SPDocument *ClipboardManagerImpl::_retrieveClipboard(Glib::ustring required_targ if (target == "image/x-inkscape-svg") { target = "image/svg+xml"; } + // Use the EMF extension to import metafiles + if (target == "CF_ENHMETAFILE" || target == "WCF_ENHMETAFILE") { + target = "image/x-emf"; + } Inkscape::Extension::DB::InputList inlist; Inkscape::Extension::db.get_input_list(inlist); @@ -1213,10 +1216,10 @@ Glib::ustring ClipboardManagerImpl::_getBestTarget() // clipboard target debugging snippet /* - g_debug("Begin clipboard targets"); + g_message("Begin clipboard targets"); for ( std::list<Glib::ustring>::iterator x = targets.begin() ; x != targets.end(); ++x ) - g_debug("Clipboard target: %s", (*x).data()); - g_debug("End clipboard targets\n"); + g_message("Clipboard target: %s", (*x).data()); + g_message("End clipboard targets\n"); //*/ for (std::list<Glib::ustring>::iterator i = _preferred_targets.begin() ; @@ -1239,7 +1242,7 @@ Glib::ustring ClipboardManagerImpl::_getBestTarget() CloseClipboard(); if (format == CF_ENHMETAFILE) { - return CLIPBOARD_WIN32_EMF_TARGET; + return "CF_ENHMETAFILE"; } if (format == CF_DIB || format == CF_BITMAP) { return CLIPBOARD_GDK_PIXBUF_TARGET; @@ -1247,7 +1250,7 @@ Glib::ustring ClipboardManagerImpl::_getBestTarget() } if (IsClipboardFormatAvailable(CF_ENHMETAFILE)) { - return CLIPBOARD_WIN32_EMF_TARGET; + return "CF_ENHMETAFILE"; } #endif if (_clipboard->wait_is_image_available()) { @@ -1311,7 +1314,7 @@ void ClipboardManagerImpl::_setClipboardTargets() if (OpenClipboard(NULL)) { if ( _clipboardSPDoc != NULL ) { - const Glib::ustring target = CLIPBOARD_WIN32_EMF_MIME; + const Glib::ustring target = "image/x-emf"; Inkscape::Extension::DB::OutputList outlist; Inkscape::Extension::db.get_output_list(outlist); diff --git a/src/ui/dialog/color-item.cpp b/src/ui/dialog/color-item.cpp index 2292b66fc..7940c28ae 100644 --- a/src/ui/dialog/color-item.cpp +++ b/src/ui/dialog/color-item.cpp @@ -235,11 +235,7 @@ static void colorItemDragBegin( GtkWidget */*widget*/, GdkDragContext* dc, gpoin cairo_pattern_destroy(gradient); cairo_surface_flush(s); - pixbuf = gdk_pixbuf_new_from_data(cairo_image_surface_get_data(s), - GDK_COLORSPACE_RGB, TRUE, 8, - width, height, cairo_image_surface_get_stride(s), - ink_cairo_pixbuf_cleanup, s); - convert_pixbuf_argb32_to_normal(pixbuf); + pixbuf = ink_pixbuf_create_from_cairo_surface(s); } else { Glib::RefPtr<Gdk::Pixbuf> thumb = Gdk::Pixbuf::create( Gdk::COLORSPACE_RGB, false, 8, width, height ); guint32 fillWith = (0xff000000 & (item->def.getR() << 24)) @@ -561,11 +557,7 @@ void ColorItem::_regenPreview(EekPreview * preview) cairo_destroy(ct); cairo_surface_flush(s); - GdkPixbuf* pixbuf = gdk_pixbuf_new_from_data( cairo_image_surface_get_data(s), - GDK_COLORSPACE_RGB, TRUE, 8, - w, h, cairo_image_surface_get_stride(s), - ink_cairo_pixbuf_cleanup, s); - convert_pixbuf_argb32_to_normal(pixbuf); + GdkPixbuf* pixbuf = ink_pixbuf_create_from_cairo_surface(s); eek_preview_set_pixbuf( preview, pixbuf ); } diff --git a/src/ui/dialog/export.cpp b/src/ui/dialog/export.cpp index 2c92608d7..0b20c08a2 100644 --- a/src/ui/dialog/export.cpp +++ b/src/ui/dialog/export.cpp @@ -201,11 +201,11 @@ Export::Export (void) : earlier than that */ unit_selector = new Inkscape::UI::Widget::UnitMenu(); unit_selector->setUnitType(Inkscape::Util::UNIT_TYPE_LINEAR); - unitChangedConn = unit_selector->signal_changed().connect(sigc::mem_fun(*this, &Export::onUnitChanged)); SPDesktop *desktop = SP_ACTIVE_DESKTOP; if (desktop) unit_selector->setUnit(sp_desktop_namedview(desktop)->doc_units->abbr); + unitChangedConn = unit_selector->signal_changed().connect(sigc::mem_fun(*this, &Export::onUnitChanged)); unitbox.pack_end(*unit_selector, false, false, 0); unitbox.pack_end(units_label, false, false, 3); diff --git a/src/ui/dialog/filter-effects-dialog.cpp b/src/ui/dialog/filter-effects-dialog.cpp index 4401d5658..4ce2eafd1 100644 --- a/src/ui/dialog/filter-effects-dialog.cpp +++ b/src/ui/dialog/filter-effects-dialog.cpp @@ -1310,7 +1310,8 @@ void FilterEffectsDialog::FilterModifier::on_name_edited(const Glib::ustring& pa void FilterEffectsDialog::FilterModifier::on_filter_reorder(const Gtk::TreeModel::Path& path) { for(Gtk::TreeModel::iterator i = _model->children().begin(); i != _model->children().end(); ++i) { SPObject* object = (*i)[_columns.filter]; - object->getRepr()->setPosition(0); + if(object && object->getRepr()) + object->getRepr()->setPosition(0); } } diff --git a/src/ui/dialog/layers.cpp b/src/ui/dialog/layers.cpp index c41046123..c01903f94 100644 --- a/src/ui/dialog/layers.cpp +++ b/src/ui/dialog/layers.cpp @@ -838,7 +838,8 @@ LayersPanel::LayersPanel() : _name_column->add_attribute(_text_renderer->property_text(), _model->_colLabel); _tree.set_expander_column( *_tree.get_column(nameColNum) ); - + _tree.set_search_column(nameColNum + 1); + _compositeSettings.setSubject(&_subject); _selectedConnection = _tree.get_selection()->signal_changed().connect( sigc::mem_fun(*this, &LayersPanel::_pushTreeSelectionToCurrent) ); diff --git a/src/ui/dialog/symbols.cpp b/src/ui/dialog/symbols.cpp index 26bc52947..6427eb9cc 100644 --- a/src/ui/dialog/symbols.cpp +++ b/src/ui/dialog/symbols.cpp @@ -420,12 +420,12 @@ void SymbolsDialog::iconChanged() { // First look for default style stored in <symbol> gchar const* style = symbol->getAttribute("inkscape:symbol-style"); if( !style ) { - // If no default style in <symbol>, look in documents. - if( symbolDocument == currentDocument ) { - style = style_from_use( symbol_id.c_str(), currentDocument ); - } else { - style = symbolDocument->getReprRoot()->attribute("style"); - } + // If no default style in <symbol>, look in documents. + if( symbolDocument == currentDocument ) { + style = style_from_use( symbol_id.c_str(), currentDocument ); + } else { + style = symbolDocument->getReprRoot()->attribute("style"); + } } ClipboardManager *cm = ClipboardManager::get(); @@ -489,8 +489,8 @@ SPDocument* read_vss( gchar* fullname, gchar* filename ) { while( std::getline( iss, line ) ) { // std::cout << line << std::endl; if( line.find( "svg:svg" ) == std::string::npos ) { - tmpSVGOutput += line; - tmpSVGOutput += "\n"; + tmpSVGOutput += line; + tmpSVGOutput += "\n"; } } @@ -499,23 +499,23 @@ SPDocument* read_vss( gchar* fullname, gchar* filename ) { tmpSVGOutput += " </defs>\n"; tmpSVGOutput += "</svg>\n"; - + return SPDocument::createNewDocFromMem( tmpSVGOutput.c_str(), strlen( tmpSVGOutput.c_str()), 0 ); } #endif - + /* Hunts preference directories for symbol files */ void SymbolsDialog::get_symbols() { std::list<Glib::ustring> directories; if( Inkscape::IO::file_test( INKSCAPE_SYMBOLSDIR, G_FILE_TEST_EXISTS ) && - Inkscape::IO::file_test( INKSCAPE_SYMBOLSDIR, G_FILE_TEST_IS_DIR ) ) { + Inkscape::IO::file_test( INKSCAPE_SYMBOLSDIR, G_FILE_TEST_IS_DIR ) ) { directories.push_back( INKSCAPE_SYMBOLSDIR ); } if( Inkscape::IO::file_test( profile_path("symbols"), G_FILE_TEST_EXISTS ) && - Inkscape::IO::file_test( profile_path("symbols"), G_FILE_TEST_IS_DIR ) ) { + Inkscape::IO::file_test( profile_path("symbols"), G_FILE_TEST_IS_DIR ) ) { directories.push_back( profile_path("symbols") ); } @@ -526,46 +526,46 @@ void SymbolsDialog::get_symbols() { GDir *dir = g_dir_open( (*it).c_str(), 0, &err ); if( dir ) { - gchar *filename = 0; - while( (filename = (gchar *)g_dir_read_name( dir ) ) != NULL) { + gchar *filename = 0; + while( (filename = (gchar *)g_dir_read_name( dir ) ) != NULL) { - gchar *fullname = g_build_filename((*it).c_str(), filename, NULL); + gchar *fullname = g_build_filename((*it).c_str(), filename, NULL); - if ( !Inkscape::IO::file_test( fullname, G_FILE_TEST_IS_DIR ) ) { + if ( !Inkscape::IO::file_test( fullname, G_FILE_TEST_IS_DIR ) ) { - Glib::ustring fn( filename ); - Glib::ustring tag = fn.substr( fn.find_last_of(".") + 1 ); + Glib::ustring fn( filename ); + Glib::ustring tag = fn.substr( fn.find_last_of(".") + 1 ); - SPDocument* symbol_doc = NULL; + SPDocument* symbol_doc = NULL; #ifdef WITH_LIBVISIO - if( tag.compare( "vss" ) == 0 ) { - - symbol_doc = read_vss( fullname, filename ); - if( symbol_doc ) { - symbolSets[Glib::ustring(filename)]= symbol_doc; - symbolSet->append(filename); - } - } + if( tag.compare( "vss" ) == 0 ) { + + symbol_doc = read_vss( fullname, filename ); + if( symbol_doc ) { + symbolSets[Glib::ustring(filename)]= symbol_doc; + symbolSet->append(filename); + } + } #endif - // Try to read all remaining files as SVG - if( !symbol_doc ) { + // Try to read all remaining files as SVG + if( !symbol_doc ) { - symbol_doc = SPDocument::createNewDoc( fullname, FALSE ); - if( symbol_doc ) { + symbol_doc = SPDocument::createNewDoc( fullname, FALSE ); + if( symbol_doc ) { gchar *title = symbol_doc->getRoot()->title(); if( title == NULL ) { title = _("Unnamed Symbols"); } - symbolSets[Glib::ustring(title)] = symbol_doc; - symbolSet->append(title); - } - } - - } - g_free( fullname ); - } - g_dir_close( dir ); + symbolSets[Glib::ustring(title)] = symbol_doc; + symbolSet->append(title); + } + } + + } + g_free( fullname ); + } + g_dir_close( dir ); } } } @@ -627,16 +627,16 @@ gchar const* SymbolsDialog::style_from_use( gchar const* id, SPDocument* documen for( ; l != NULL; l = l->next ) { SPObject* use = SP_OBJECT(l->data); if( SP_IS_USE( use ) ) { - gchar const *href = use->getRepr()->attribute("xlink:href"); - if( href ) { - Glib::ustring href2(href); - Glib::ustring id2(id); - id2 = "#" + id2; - if( !href2.compare(id2) ) { - style = use->getRepr()->attribute("style"); - break; - } - } + gchar const *href = use->getRepr()->attribute("xlink:href"); + if( href ) { + Glib::ustring href2(href); + Glib::ustring id2(id); + id2 = "#" + id2; + if( !href2.compare(id2) ) { + style = use->getRepr()->attribute("style"); + break; + } + } } } return style; @@ -749,9 +749,13 @@ SymbolsDialog::create_symbol_image(gchar const *symbol_id, SPObject *symbol) /* Update to renderable state */ Glib::ustring key = svg_preview_cache.cache_key(previewDocument->getURI(), symbol_id, psize); //std::cout << " Key: " << key << std::endl; - // FIX ME - //Glib::RefPtr<Gdk::Pixbuf> pixbuf = Glib::wrap(svg_preview_cache.get_preview_from_cache(key)); - Glib::RefPtr<Gdk::Pixbuf> pixbuf = Glib::RefPtr<Gdk::Pixbuf>(0); + + Glib::RefPtr<Gdk::Pixbuf> pixbuf(NULL); + GdkPixbuf *pixbuf_gobj = svg_preview_cache.get_preview_from_cache(key); + if (pixbuf_gobj) { + g_object_ref(pixbuf_gobj); // the reference in svg_preview_cache will get destroyed when it's freed + pixbuf = Glib::wrap(pixbuf_gobj); + } // Find object's bbox in document. // Note symbols can have own viewport... ignore for now. @@ -776,8 +780,8 @@ SymbolsDialog::create_symbol_image(gchar const *symbol_id, SPObject *symbol) } if( fitSymbol->get_active() ) { - /* Fit */ - scale = psize/std::max(width,height); + /* Fit */ + scale = psize/std::max(width,height); } pixbuf = Glib::wrap(render_pixbuf(renderDrawing, scale, *dbox, psize)); @@ -814,8 +818,8 @@ void SymbolsDialog::setTargetDesktop(SPDesktop *desktop) if (this->currentDesktop != desktop) { this->currentDesktop = desktop; if( !symbolSets[symbolSet->get_active_text()] ) { - // Symbol set is from Current document, update - rebuild(); + // Symbol set is from Current document, update + rebuild(); } } } diff --git a/src/ui/widget/color-preview.cpp b/src/ui/widget/color-preview.cpp index 4b4a7b738..5bcd16528 100644 --- a/src/ui/widget/color-preview.cpp +++ b/src/ui/widget/color-preview.cpp @@ -73,9 +73,9 @@ ColorPreview::on_expose_event (GdkEventExpose *event) if (get_is_drawable()) { Cairo::RefPtr<Cairo::Context> cr = get_window()->create_cairo_context(); - cr->rectangle(event->area.x, event->area.y, + cr->rectangle(event->area.x, event->area.y, event->area.width, event->area.height); - cr->clip(); + cr->clip(); result = on_draw(cr); } @@ -176,12 +176,7 @@ ColorPreview::toPixbuf (int width, int height) cairo_destroy(ct); cairo_surface_flush(s); - GdkPixbuf* pixbuf = gdk_pixbuf_new_from_data( cairo_image_surface_get_data(s), - GDK_COLORSPACE_RGB, TRUE, 8, - width, height, cairo_image_surface_get_stride(s), - ink_cairo_pixbuf_cleanup, s); - convert_pixbuf_argb32_to_normal(pixbuf); - + GdkPixbuf* pixbuf = ink_pixbuf_create_from_cairo_surface(s); return pixbuf; } diff --git a/src/util/units.cpp b/src/util/units.cpp index 7bc910fcc..3fdd77916 100644 --- a/src/util/units.cpp +++ b/src/util/units.cpp @@ -227,9 +227,10 @@ Quantity UnitTable::getQuantity(Glib::ustring const& q) const // Extract value double value = 0; - Glib::RefPtr<Glib::Regex> value_regex = Glib::Regex::create("[-+]*[\\d+]*\\.*[\\d+]*[eE]*[-+]*\\d+"); + Glib::RefPtr<Glib::Regex> value_regex = Glib::Regex::create("[-+]*[\\d+]*[\\.,]*[\\d+]*[eE]*[-+]*\\d+"); if (value_regex->match(q, match_info)) { - value = atof(match_info.fetch(0).c_str()); + std::istringstream tmp_v(match_info.fetch(0)); + tmp_v >> value; } // Extract unit abbreviation diff --git a/src/widgets/dash-selector.cpp b/src/widgets/dash-selector.cpp index 51483a9c4..afc81e574 100644 --- a/src/widgets/dash-selector.cpp +++ b/src/widgets/dash-selector.cpp @@ -238,58 +238,50 @@ void SPDashSelector::get_dash(int *ndash, double **dash, double *off) /** * Fill a pixbuf with the dash pattern using standard cairo drawing */ -GdkPixbuf* SPDashSelector::sp_dash_to_pixbuf(double *pattern) { - - int n_dashes; - for (n_dashes = 0; pattern[n_dashes] >= 0.0; n_dashes ++) ; - - cairo_surface_t *s = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, preview_width, preview_height); - cairo_t *ct = cairo_create(s); - - cairo_set_line_width (ct, preview_lineheight); - cairo_scale (ct, preview_lineheight, 1); - //cairo_set_source_rgb (ct, 0, 0, 0); - cairo_move_to (ct, 0, preview_height/2); - cairo_line_to (ct, preview_width, preview_height/2); - cairo_set_dash(ct, pattern, n_dashes, 0); - cairo_stroke (ct); - - cairo_destroy(ct); - cairo_surface_flush(s); - - GdkPixbuf* pixbuf = gdk_pixbuf_new_from_data( cairo_image_surface_get_data(s), - GDK_COLORSPACE_RGB, TRUE, 8, - preview_width, preview_height, cairo_image_surface_get_stride(s), - ink_cairo_pixbuf_cleanup, s); - convert_pixbuf_argb32_to_normal(pixbuf); - return pixbuf; +GdkPixbuf* SPDashSelector::sp_dash_to_pixbuf(double *pattern) +{ + int n_dashes; + for (n_dashes = 0; pattern[n_dashes] >= 0.0; n_dashes ++) ; + + cairo_surface_t *s = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, preview_width, preview_height); + cairo_t *ct = cairo_create(s); + + cairo_set_line_width (ct, preview_lineheight); + cairo_scale (ct, preview_lineheight, 1); + //cairo_set_source_rgb (ct, 0, 0, 0); + cairo_move_to (ct, 0, preview_height/2); + cairo_line_to (ct, preview_width, preview_height/2); + cairo_set_dash(ct, pattern, n_dashes, 0); + cairo_stroke (ct); + + cairo_destroy(ct); + cairo_surface_flush(s); + + GdkPixbuf* pixbuf = ink_pixbuf_create_from_cairo_surface(s); + return pixbuf; } /** * Fill a pixbuf with a text label using standard cairo drawing */ -GdkPixbuf* SPDashSelector::sp_text_to_pixbuf(char *text) { - - cairo_surface_t *s = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, preview_width, preview_height); - cairo_t *ct = cairo_create(s); +GdkPixbuf* SPDashSelector::sp_text_to_pixbuf(char *text) +{ + cairo_surface_t *s = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, preview_width, preview_height); + cairo_t *ct = cairo_create(s); - cairo_select_font_face (ct, "Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (ct, 12.0); - cairo_set_source_rgb (ct, 0.0, 0.0, 0.0); - cairo_move_to (ct, 16.0, 13.0); - cairo_show_text (ct, text); + cairo_select_font_face (ct, "Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); + cairo_set_font_size (ct, 12.0); + cairo_set_source_rgb (ct, 0.0, 0.0, 0.0); + cairo_move_to (ct, 16.0, 13.0); + cairo_show_text (ct, text); - cairo_stroke (ct); + cairo_stroke (ct); - cairo_destroy(ct); - cairo_surface_flush(s); + cairo_destroy(ct); + cairo_surface_flush(s); - GdkPixbuf* pixbuf = gdk_pixbuf_new_from_data( cairo_image_surface_get_data(s), - GDK_COLORSPACE_RGB, TRUE, 8, - preview_width, preview_height, cairo_image_surface_get_stride(s), - ink_cairo_pixbuf_cleanup, s); - convert_pixbuf_argb32_to_normal(pixbuf); - return pixbuf; + GdkPixbuf* pixbuf = ink_pixbuf_create_from_cairo_surface(s); + return pixbuf; } void SPDashSelector::on_selection () diff --git a/src/widgets/gradient-image.cpp b/src/widgets/gradient-image.cpp index 0ed0e5546..64b058f62 100644 --- a/src/widgets/gradient-image.cpp +++ b/src/widgets/gradient-image.cpp @@ -30,11 +30,11 @@ static void sp_gradient_image_size_request (GtkWidget *widget, GtkRequisition *r static void sp_gradient_image_destroy(GtkWidget *object); static void sp_gradient_image_get_preferred_width(GtkWidget *widget, gint *minimal_width, - gint *natural_width); + gint *natural_width); static void sp_gradient_image_get_preferred_height(GtkWidget *widget, gint *minimal_height, - gint *natural_height); + gint *natural_height); #else static void sp_gradient_image_destroy(GtkObject *object); static gboolean sp_gradient_image_expose(GtkWidget *widget, GdkEventExpose *event); @@ -49,53 +49,53 @@ static GtkWidgetClass *parent_class; GType sp_gradient_image_get_type(void) { - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof (SPGradientImageClass), - NULL, NULL, - (GClassInitFunc) sp_gradient_image_class_init, - NULL, NULL, - sizeof (SPGradientImage), - 0, - (GInstanceInitFunc) sp_gradient_image_init, - NULL - }; - type = g_type_register_static (GTK_TYPE_WIDGET, "SPGradientImage", &info, (GTypeFlags)0); - } - return type; + static GType type = 0; + if (!type) { + GTypeInfo info = { + sizeof (SPGradientImageClass), + NULL, NULL, + (GClassInitFunc) sp_gradient_image_class_init, + NULL, NULL, + sizeof (SPGradientImage), + 0, + (GInstanceInitFunc) sp_gradient_image_init, + NULL + }; + type = g_type_register_static (GTK_TYPE_WIDGET, "SPGradientImage", &info, (GTypeFlags)0); + } + return type; } static void sp_gradient_image_class_init(SPGradientImageClass *klass) { - GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass); - parent_class = GTK_WIDGET_CLASS(g_type_class_peek_parent (klass)); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass); + parent_class = GTK_WIDGET_CLASS(g_type_class_peek_parent (klass)); #if GTK_CHECK_VERSION(3,0,0) -// GObjectClass *object_class = G_OBJECT_CLASS(klass); +// GObjectClass *object_class = G_OBJECT_CLASS(klass); - widget_class->get_preferred_width = sp_gradient_image_get_preferred_width; - widget_class->get_preferred_height = sp_gradient_image_get_preferred_height; - widget_class->draw = sp_gradient_image_draw; - widget_class->destroy = sp_gradient_image_destroy; + widget_class->get_preferred_width = sp_gradient_image_get_preferred_width; + widget_class->get_preferred_height = sp_gradient_image_get_preferred_height; + widget_class->draw = sp_gradient_image_draw; + widget_class->destroy = sp_gradient_image_destroy; #else - GtkObjectClass *object_class = GTK_OBJECT_CLASS(klass); + GtkObjectClass *object_class = GTK_OBJECT_CLASS(klass); - object_class->destroy = sp_gradient_image_destroy; - widget_class->size_request = sp_gradient_image_size_request; - widget_class->expose_event = sp_gradient_image_expose; + object_class->destroy = sp_gradient_image_destroy; + widget_class->size_request = sp_gradient_image_size_request; + widget_class->expose_event = sp_gradient_image_expose; #endif } static void sp_gradient_image_init (SPGradientImage *image) { - gtk_widget_set_has_window (GTK_WIDGET(image), FALSE); + gtk_widget_set_has_window (GTK_WIDGET(image), FALSE); - image->gradient = NULL; + image->gradient = NULL; - new (&image->release_connection) sigc::connection(); - new (&image->modified_connection) sigc::connection(); + new (&image->release_connection) sigc::connection(); + new (&image->modified_connection) sigc::connection(); } #if GTK_CHECK_VERSION(3,0,0) @@ -104,23 +104,23 @@ static void sp_gradient_image_destroy(GtkWidget *object) static void sp_gradient_image_destroy(GtkObject *object) #endif { - SPGradientImage *image = SP_GRADIENT_IMAGE (object); + SPGradientImage *image = SP_GRADIENT_IMAGE (object); - if (image->gradient) { - image->release_connection.disconnect(); - image->modified_connection.disconnect(); - image->gradient = NULL; - } + if (image->gradient) { + image->release_connection.disconnect(); + image->modified_connection.disconnect(); + image->gradient = NULL; + } - image->release_connection.~connection(); - image->modified_connection.~connection(); + image->release_connection.~connection(); + image->modified_connection.~connection(); #if GTK_CHECK_VERSION(3,0,0) - if (parent_class->destroy) - (* (parent_class)->destroy) (object); + if (parent_class->destroy) + (* (parent_class)->destroy) (object); #else - if ((GTK_OBJECT_CLASS(parent_class))->destroy) - (* (GTK_OBJECT_CLASS(parent_class))->destroy) (object); + if ((GTK_OBJECT_CLASS(parent_class))->destroy) + (* (GTK_OBJECT_CLASS(parent_class))->destroy) (object); #endif } @@ -133,36 +133,36 @@ static void sp_gradient_image_size_request(GtkWidget * /*widget*/, GtkRequisitio #if GTK_CHECK_VERSION(3,0,0) static void sp_gradient_image_get_preferred_width(GtkWidget *widget, gint *minimal_width, gint *natural_width) { - GtkRequisition requisition; - sp_gradient_image_size_request(widget, &requisition); - *minimal_width = *natural_width = requisition.width; + GtkRequisition requisition; + sp_gradient_image_size_request(widget, &requisition); + *minimal_width = *natural_width = requisition.width; } static void sp_gradient_image_get_preferred_height(GtkWidget *widget, gint *minimal_height, gint *natural_height) { - GtkRequisition requisition; - sp_gradient_image_size_request(widget, &requisition); - *minimal_height = *natural_height = requisition.height; + GtkRequisition requisition; + sp_gradient_image_size_request(widget, &requisition); + *minimal_height = *natural_height = requisition.height; } #endif #if !GTK_CHECK_VERSION(3,0,0) static gboolean sp_gradient_image_expose(GtkWidget *widget, GdkEventExpose *event) { - gboolean result = TRUE; - if(gtk_widget_is_drawable(widget)) { - cairo_t *ct = gdk_cairo_create(gtk_widget_get_window (widget)); - cairo_rectangle(ct, event->area.x, event->area.y, - event->area.width, event->area.height); - cairo_clip(ct); - GtkAllocation allocation; - gtk_widget_get_allocation(widget, &allocation); - cairo_translate(ct, allocation.x, allocation.y); - result = sp_gradient_image_draw(widget, ct); - cairo_destroy(ct); - } - - return result; + gboolean result = TRUE; + if(gtk_widget_is_drawable(widget)) { + cairo_t *ct = gdk_cairo_create(gtk_widget_get_window (widget)); + cairo_rectangle(ct, event->area.x, event->area.y, + event->area.width, event->area.height); + cairo_clip(ct); + GtkAllocation allocation; + gtk_widget_get_allocation(widget, &allocation); + cairo_translate(ct, allocation.x, allocation.y); + result = sp_gradient_image_draw(widget, ct); + cairo_destroy(ct); + } + + return result; } #endif @@ -178,7 +178,7 @@ static gboolean sp_gradient_image_draw(GtkWidget *widget, cairo_t *ct) cairo_paint(ct); cairo_pattern_destroy(check); - if (gr) { + if (gr) { cairo_pattern_t *p = sp_gradient_create_preview_pattern(gr, allocation.width); cairo_set_source(ct, p); cairo_paint(ct); @@ -191,11 +191,11 @@ static gboolean sp_gradient_image_draw(GtkWidget *widget, cairo_t *ct) GtkWidget * sp_gradient_image_new (SPGradient *gradient) { - SPGradientImage *image = SP_GRADIENT_IMAGE(g_object_new(SP_TYPE_GRADIENT_IMAGE, NULL)); + SPGradientImage *image = SP_GRADIENT_IMAGE(g_object_new(SP_TYPE_GRADIENT_IMAGE, NULL)); - sp_gradient_image_set_gradient (image, gradient); + sp_gradient_image_set_gradient (image, gradient); - return GTK_WIDGET(image); + return GTK_WIDGET(image); } GdkPixbuf* @@ -219,12 +219,8 @@ sp_gradient_to_pixbuf (SPGradient *gr, int width, int height) cairo_destroy(ct); cairo_surface_flush(s); - GdkPixbuf* pixbuf = gdk_pixbuf_new_from_data( cairo_image_surface_get_data(s), - GDK_COLORSPACE_RGB, TRUE, 8, - width, height, cairo_image_surface_get_stride(s), - ink_cairo_pixbuf_cleanup, s); - convert_pixbuf_argb32_to_normal(pixbuf); - + // no need to free s - the call below takes ownership + GdkPixbuf *pixbuf = ink_pixbuf_create_from_cairo_surface(s); return pixbuf; } @@ -232,44 +228,44 @@ sp_gradient_to_pixbuf (SPGradient *gr, int width, int height) void sp_gradient_image_set_gradient (SPGradientImage *image, SPGradient *gradient) { - if (image->gradient) { - image->release_connection.disconnect(); - image->modified_connection.disconnect(); - } + if (image->gradient) { + image->release_connection.disconnect(); + image->modified_connection.disconnect(); + } - image->gradient = gradient; + image->gradient = gradient; - if (gradient) { - image->release_connection = gradient->connectRelease(sigc::bind<1>(sigc::ptr_fun(&sp_gradient_image_gradient_release), image)); - image->modified_connection = gradient->connectModified(sigc::bind<2>(sigc::ptr_fun(&sp_gradient_image_gradient_modified), image)); - } + if (gradient) { + image->release_connection = gradient->connectRelease(sigc::bind<1>(sigc::ptr_fun(&sp_gradient_image_gradient_release), image)); + image->modified_connection = gradient->connectModified(sigc::bind<2>(sigc::ptr_fun(&sp_gradient_image_gradient_modified), image)); + } - sp_gradient_image_update (image); + sp_gradient_image_update (image); } static void sp_gradient_image_gradient_release (SPObject *, SPGradientImage *image) { - if (image->gradient) { - image->release_connection.disconnect(); - image->modified_connection.disconnect(); - } + if (image->gradient) { + image->release_connection.disconnect(); + image->modified_connection.disconnect(); + } - image->gradient = NULL; + image->gradient = NULL; - sp_gradient_image_update (image); + sp_gradient_image_update (image); } static void sp_gradient_image_gradient_modified (SPObject *, guint /*flags*/, SPGradientImage *image) { - sp_gradient_image_update (image); + sp_gradient_image_update (image); } static void sp_gradient_image_update (SPGradientImage *image) { - if (gtk_widget_is_drawable (GTK_WIDGET(image))) { - gtk_widget_queue_draw (GTK_WIDGET (image)); - } + if (gtk_widget_is_drawable (GTK_WIDGET(image))) { + gtk_widget_queue_draw (GTK_WIDGET (image)); + } } diff --git a/src/widgets/stroke-marker-selector.cpp b/src/widgets/stroke-marker-selector.cpp index 2d1c932d3..00b6b5c91 100644 --- a/src/widgets/stroke-marker-selector.cpp +++ b/src/widgets/stroke-marker-selector.cpp @@ -544,16 +544,16 @@ MarkerComboBox::create_marker_image(unsigned psize, gchar const *mname, gchar *cache_name = g_strconcat(combo_id, mname, NULL); Glib::ustring key = svg_preview_cache.cache_key(source->getURI(), cache_name, psize); g_free (cache_name); - Glib::RefPtr<Gdk::Pixbuf> pixbuf = Glib::wrap(svg_preview_cache.get_preview_from_cache(key)); + GdkPixbuf *pixbuf = svg_preview_cache.get_preview_from_cache(key); // no ref created if (!pixbuf) { - pixbuf = Glib::wrap(render_pixbuf(drawing, 0.8, *dbox, psize)); - svg_preview_cache.set_preview_in_cache(key, pixbuf->gobj()); + pixbuf = render_pixbuf(drawing, 0.8, *dbox, psize); + svg_preview_cache.set_preview_in_cache(key, pixbuf); + g_object_unref(pixbuf); // reference is held by svg_preview_cache } // Create widget - Gtk::Image *pb = new Gtk::Image(pixbuf); - + Gtk::Image *pb = Glib::wrap(GTK_IMAGE(gtk_image_new_from_pixbuf(pixbuf))); return pb; } diff --git a/src/xml/repr-io.cpp b/src/xml/repr-io.cpp index af47779fe..f7e75a83b 100644 --- a/src/xml/repr-io.cpp +++ b/src/xml/repr-io.cpp @@ -98,7 +98,9 @@ public: } } - int setFile( char const * filename ); + int setFile( char const * filename, bool load_entities ); + + xmlDocPtr readXml(); static int readCb( void * context, char * buffer, int len ); static int closeCb( void * context ); @@ -112,12 +114,15 @@ private: FILE* fp; unsigned char firstFew[4]; int firstFewLen; + bool LoadEntities; // Checks for SYSTEM Entities (requires cached data) + std::string cachedData; + unsigned int cachedPos; Inkscape::URI dummy; Inkscape::IO::UriInputStream* instr; Inkscape::IO::GzipInputStream* gzin; }; -int XmlSource::setFile(char const *filename) +int XmlSource::setFile(char const *filename, bool load_entities=false) { int retVal = -1; @@ -174,14 +179,62 @@ int XmlSource::setFile(char const *filename) retVal = 0; // no error } } + if(load_entities) { + this->cachedData = std::string(""); + this->cachedPos = 0; + + // First get data from file in typical way (cache it all) + char *buffer = new char [4096]; + while(true) { + int len = this->read(buffer, 4096); + if(len <= 0) break; + buffer[len] = 0; + this->cachedData += buffer; + } + free(buffer); + + // Check for SYSTEM or PUBLIC entities and remove them from the cache + GMatchInfo *info; + gint start, end; + + GRegex *regex = g_regex_new( + "<!ENTITY\\s+[^>\\s]+\\s+(SYSTEM|PUBLIC\\s+\"[^>\"]+\")\\s+\"[^>\"]+\"\\s*>", + G_REGEX_CASELESS, G_REGEX_MATCH_NEWLINE_ANY, NULL); + + g_regex_match (regex, this->cachedData.c_str(), G_REGEX_MATCH_NEWLINE_ANY, &info); + while (g_match_info_matches (info)) { + if (g_match_info_fetch_pos (info, 1, &start, &end)) + this->cachedData.erase(start, end - start); + g_match_info_next (info, NULL); + } + g_match_info_free(info); + g_regex_unref(regex); + } + // Do this after loading cache, so reads don't return cache to fill cache. + this->LoadEntities = load_entities; return retVal; } +xmlDocPtr XmlSource::readXml() +{ + int parse_options = XML_PARSE_HUGE | XML_PARSE_RECOVER; + + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + bool allowNetAccess = prefs->getBool("/options/externalresources/xml/allow_net_access", false); + if (!allowNetAccess) parse_options |= XML_PARSE_NONET; + + // Allow NOENT only if we're filtering out SYSTEM and PUBLIC entities + if (LoadEntities) parse_options |= XML_PARSE_NOENT; + + return xmlReadIO( readCb, closeCb, this, + filename, getEncoding(), parse_options); +} int XmlSource::readCb( void * context, char * buffer, int len ) { int retVal = -1; + if ( context ) { XmlSource* self = static_cast<XmlSource*>(context); retVal = self->read( buffer, len ); @@ -203,7 +256,15 @@ int XmlSource::read( char *buffer, int len ) int retVal = 0; size_t got = 0; - if ( firstFewLen > 0 ) { + if ( LoadEntities ) { + if (cachedPos >= cachedData.length()) { + return -1; + } else { + retVal = cachedData.copy(buffer, len, cachedPos); + cachedPos += retVal; + return retVal; // Do NOT continue. + } + } else if ( firstFewLen > 0 ) { int some = (len < firstFewLen) ? len : firstFewLen; memcpy( buffer, firstFew, some ); if ( len < firstFewLen ) { @@ -299,22 +360,20 @@ Document *sp_repr_read_file (const gchar * filename, const gchar *default_ns) XmlSource src; if ( (src.setFile(filename) == 0) ) { - int parse_options = XML_PARSE_HUGE; // do not use XML_PARSE_NOENT ! see bug lp:1025185 - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - bool allowNetAccess = prefs->getBool("/options/externalresources/xml/allow_net_access", false); - if (!allowNetAccess) { - parse_options |= XML_PARSE_NONET; + doc = src.readXml(); + rdoc = sp_repr_do_read( doc, default_ns ); + // For some reason, failed ns loading results in this + // We try a system check version of load with NOENT for adobe + if(rdoc && strcmp(rdoc->root()->name(), "ns:svg") == 0) { + xmlFreeDoc( doc ); + src.setFile(filename, true); + doc = src.readXml(); + rdoc = sp_repr_do_read( doc, default_ns ); } - doc = xmlReadIO( XmlSource::readCb, - XmlSource::closeCb, - &src, - localFilename, - src.getEncoding(), - parse_options); } } - rdoc = sp_repr_do_read( doc, default_ns ); + if ( doc ) { xmlFreeDoc( doc ); } @@ -947,15 +1006,15 @@ void sp_repr_write_stream_element( Node * repr, Writer & out, // THIS DOESN'T APPEAR TO DO ANYTHING. Can it be commented out or deleted? { GQuark const href_key = g_quark_from_static_string("xlink:href"); - GQuark const absref_key = g_quark_from_static_string("sodipodi:absref"); + //GQuark const absref_key = g_quark_from_static_string("sodipodi:absref"); gchar const *xxHref = 0; - gchar const *xxAbsref = 0; + //gchar const *xxAbsref = 0; for ( List<AttributeRecord const> ai(attributes); ai; ++ai ) { if ( ai->key == href_key ) { xxHref = ai->value; - } else if ( ai->key == absref_key ) { - xxAbsref = ai->value; + //} else if ( ai->key == absref_key ) { + //xxAbsref = ai->value; } } |
