summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2015-09-01 17:13:06 +0000
committerJabiertxof <jtx@jtx.marker.es>2015-09-01 17:13:06 +0000
commit6f342e449becb621a2f93f492b38791ec5aba35d (patch)
tree131870f18f5a3853b98c9742e0e165b110978289
parentastyle code (diff)
parentextensions. dxf_outlines. add support for line, circle, ellipse. (Bug 1489320... (diff)
downloadinkscape-6f342e449becb621a2f93f492b38791ec5aba35d.tar.gz
inkscape-6f342e449becb621a2f93f492b38791ec5aba35d.zip
update to trunk
(bzr r13645.1.117)
-rw-r--r--po/da.po382
-rwxr-xr-xshare/extensions/dxf_outlines.py28
-rw-r--r--src/desktop.cpp2
-rw-r--r--src/document.cpp77
-rw-r--r--src/extension/internal/metafile-print.cpp4
-rw-r--r--src/extension/internal/pdfinput/svg-builder.cpp1
-rw-r--r--src/io/streamtest.cpp1
-rw-r--r--src/libuemf/uemf.c6
-rw-r--r--src/live_effects/lpe-bspline.cpp44
-rw-r--r--src/live_effects/lpe-bspline.h3
-rw-r--r--src/live_effects/lpe-powerstroke.cpp7
-rw-r--r--src/live_effects/lpe-transform_2pts.cpp116
-rw-r--r--src/live_effects/lpe-transform_2pts.h11
-rw-r--r--src/live_effects/parameter/togglebutton.cpp4
-rw-r--r--src/ui/dialog/grid-arrange-tab.cpp12
-rw-r--r--src/ui/tool/node.cpp2
-rw-r--r--src/ui/tool/path-manipulator.cpp2
-rw-r--r--src/ui/widget/color-entry.h2
18 files changed, 393 insertions, 311 deletions
diff --git a/po/da.po b/po/da.po
index d1f013860..c4a780e28 100644
--- a/po/da.po
+++ b/po/da.po
@@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: inkscape\n"
"Report-Msgid-Bugs-To: inkscape-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2015-05-18 12:45+0200\n"
-"PO-Revision-Date: 2015-07-04 17:23+0200\n"
+"PO-Revision-Date: 2015-08-27 00:00+0200\n"
"Last-Translator: scootergrisen\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
"Language: da\n"
@@ -304,7 +304,7 @@ msgstr "GNOME-udskrivning"
#: ../src/extension/internal/filter/paint.h:877
#: ../src/extension/internal/filter/paint.h:981
msgid "Image Paint and Draw"
-msgstr ""
+msgstr "Billedmal og -tegn"
#: ../share/filters/filters.svg.h:76
msgid "Simulate oil painting style"
@@ -480,9 +480,8 @@ msgstr ""
#: ../share/filters/filters.svg.h:159 ../share/filters/filters.svg.h:203
#: ../share/filters/filters.svg.h:207 ../share/filters/filters.svg.h:215
#: ../share/filters/filters.svg.h:223
-#, fuzzy
msgid "Ridges"
-msgstr "Udtvær kant"
+msgstr "Sprækker"
#: ../share/filters/filters.svg.h:136
msgid "Bubble effect with refraction and glow"
@@ -560,9 +559,8 @@ msgstr "Hjul"
#: ../share/filters/filters.svg.h:167 ../share/filters/filters.svg.h:235
#: ../share/filters/filters.svg.h:271 ../share/filters/filters.svg.h:639
#: ../share/extensions/pathscatter.inx.h:1
-#, fuzzy
msgid "Scatter"
-msgstr "Mønster"
+msgstr "Spredning"
#: ../share/filters/filters.svg.h:168
msgid "Leaves on the ground in Fall, or living foliage"
@@ -2149,98 +2147,96 @@ msgstr "Hæng _knudepunkter på objekter"
#. Palette: ./inkscape.gpl
#: ../share/palettes/palettes.h:2
-#, fuzzy
msgctxt "Palette"
msgid "Black"
msgstr "Sort"
#. Palette: ./inkscape.gpl
#: ../share/palettes/palettes.h:3
-#, fuzzy, no-c-format
+#, no-c-format
msgctxt "Palette"
msgid "90% Gray"
-msgstr "Ombryd"
+msgstr "90% grå"
#. Palette: ./inkscape.gpl
#: ../share/palettes/palettes.h:4
-#, fuzzy, no-c-format
+#, no-c-format
msgctxt "Palette"
msgid "80% Gray"
-msgstr "Ombryd"
+msgstr "80% grå"
#. Palette: ./inkscape.gpl
#: ../share/palettes/palettes.h:5
-#, fuzzy, no-c-format
+#, no-c-format
msgctxt "Palette"
msgid "70% Gray"
-msgstr "Ombryd"
+msgstr "70% grå"
#. Palette: ./inkscape.gpl
#: ../share/palettes/palettes.h:6
-#, fuzzy, no-c-format
+#, no-c-format
msgctxt "Palette"
msgid "60% Gray"
-msgstr "Ombryd"
+msgstr "60% grå"
#. Palette: ./inkscape.gpl
#: ../share/palettes/palettes.h:7
-#, fuzzy, no-c-format
+#, no-c-format
msgctxt "Palette"
msgid "50% Gray"
-msgstr "Ombryd"
+msgstr "50% grå"
#. Palette: ./inkscape.gpl
#: ../share/palettes/palettes.h:8
-#, fuzzy, no-c-format
+#, no-c-format
msgctxt "Palette"
msgid "40% Gray"
-msgstr "Ombryd"
+msgstr "40% grå"
#. Palette: ./inkscape.gpl
#: ../share/palettes/palettes.h:9
-#, fuzzy, no-c-format
+#, no-c-format
msgctxt "Palette"
msgid "30% Gray"
-msgstr "Ombryd"
+msgstr "30% grå"
#. Palette: ./inkscape.gpl
#: ../share/palettes/palettes.h:10
-#, fuzzy, no-c-format
+#, no-c-format
msgctxt "Palette"
msgid "20% Gray"
-msgstr "Ombryd"
+msgstr "20% grå"
#. Palette: ./inkscape.gpl
#: ../share/palettes/palettes.h:11
-#, fuzzy, no-c-format
+#, no-c-format
msgctxt "Palette"
msgid "10% Gray"
-msgstr "Ombryd"
+msgstr "10% grå"
#. Palette: ./inkscape.gpl
#: ../share/palettes/palettes.h:12
-#, fuzzy, no-c-format
+#, no-c-format
msgctxt "Palette"
msgid "7.5% Gray"
-msgstr "Ombryd"
+msgstr "7,5% grå"
#. Palette: ./inkscape.gpl
#: ../share/palettes/palettes.h:13
-#, fuzzy, no-c-format
+#, no-c-format
msgctxt "Palette"
msgid "5% Gray"
-msgstr "Ombryd"
+msgstr "5% grå"
#. Palette: ./inkscape.gpl
#: ../share/palettes/palettes.h:14
-#, fuzzy, no-c-format
+#, no-c-format
msgctxt "Palette"
msgid "2.5% Gray"
-msgstr "Ombryd"
+msgstr "2,5% grå"
#. Palette: ./inkscape.gpl
#: ../share/palettes/palettes.h:15
-#, fuzzy
msgctxt "Palette"
msgid "White"
msgstr "Hvid"
@@ -2255,7 +2251,7 @@ msgstr ""
#: ../share/palettes/palettes.h:17
msgctxt "Palette"
msgid "Red (#FF0000)"
-msgstr ""
+msgstr "Rød (#FF0000)"
#. Palette: ./inkscape.gpl
#: ../share/palettes/palettes.h:18
@@ -2267,13 +2263,13 @@ msgstr ""
#: ../share/palettes/palettes.h:19
msgctxt "Palette"
msgid "Yellow (#FFFF00)"
-msgstr ""
+msgstr "Gul (#FFFF00)"
#. Palette: ./inkscape.gpl
#: ../share/palettes/palettes.h:20
msgctxt "Palette"
msgid "Green (#008000)"
-msgstr ""
+msgstr "Grøn (#008000)"
#. Palette: ./inkscape.gpl
#: ../share/palettes/palettes.h:21
@@ -2303,13 +2299,13 @@ msgstr ""
#: ../share/palettes/palettes.h:25
msgctxt "Palette"
msgid "Blue (#0000FF)"
-msgstr ""
+msgstr "Blå (#0000FF)"
#. Palette: ./inkscape.gpl
#: ../share/palettes/palettes.h:26
msgctxt "Palette"
msgid "Purple (#800080)"
-msgstr ""
+msgstr "Lilla (#800080)"
#. Palette: ./inkscape.gpl
#: ../share/palettes/palettes.h:27
@@ -3863,7 +3859,7 @@ msgstr ""
#: ../share/symbols/symbols.h:108
msgctxt "Symbol"
msgid "Input/Output"
-msgstr "Inddata/uddata"
+msgstr "Input/output"
#. Symbols: ./FlowSymbols.svg
#: ../share/symbols/symbols.h:109
@@ -3974,14 +3970,14 @@ msgstr ""
#: ../share/symbols/symbols.h:125
msgctxt "Symbol"
msgid "Connector"
-msgstr "Forbinder"
+msgstr "Tilslutter"
#. Symbols: ./FlowSymbols.svg
#: ../share/symbols/symbols.h:126
#, fuzzy
msgctxt "Symbol"
msgid "Off-Page Connector"
-msgstr "Forbinder"
+msgstr ""
#. Symbols: ./FlowSymbols.svg
#: ../share/symbols/symbols.h:127
@@ -4740,9 +4736,8 @@ msgstr ""
#: ../src/display/canvas-axonomgrid.cpp:370
#: ../src/ui/dialog/inkscape-preferences.cpp:779
#: ../src/widgets/box3d-toolbar.cpp:381
-#, fuzzy
msgid "Angle Z:"
-msgstr "Vinkel:"
+msgstr "Vinkel Z:"
#: ../src/display/canvas-axonomgrid.cpp:370
#: ../src/ui/dialog/inkscape-preferences.cpp:779
@@ -6214,9 +6209,8 @@ msgid "Enhanced Metafiles"
msgstr ""
#: ../src/extension/internal/emf-inout.cpp:3598
-#, fuzzy
msgid "EMF Output"
-msgstr "DXF-uddata"
+msgstr "EMF-output"
#: ../src/extension/internal/emf-inout.cpp:3600
#: ../src/extension/internal/wmf-inout.cpp:3174
@@ -6372,9 +6366,9 @@ msgstr "Farve på frem_hævning:"
#: ../src/extension/internal/filter/transparency.h:287
#: ../src/extension/internal/filter/transparency.h:349
#: ../src/ui/dialog/inkscape-preferences.cpp:1751
-#, fuzzy, c-format
+#, c-format
msgid "Filters"
-msgstr "Fladhed"
+msgstr "Filtre"
#: ../src/extension/internal/filter/bevels.h:66
msgid "Basic diffuse bevel to use for building textures"
@@ -7816,7 +7810,7 @@ msgstr "Ingen udfyldning"
#: ../share/extensions/webslicer_create_group.inx.h:2
#: ../share/extensions/webslicer_export.inx.h:2
msgid "Options"
-msgstr ""
+msgstr "Indstillinger/Valgmuligheder"
#: ../src/extension/internal/filter/overlays.h:64
#, fuzzy
@@ -8499,9 +8493,8 @@ msgid "Draw a path which is a grid"
msgstr "Tegn en sti som er et gitter"
#: ../src/extension/internal/javafx-out.cpp:966
-#, fuzzy
msgid "JavaFX Output"
-msgstr "LaTeX-uddata"
+msgstr "JavaFX-output"
#: ../src/extension/internal/javafx-out.cpp:971
msgid "JavaFX (*.fx)"
@@ -8514,7 +8507,7 @@ msgstr "PovRay Raytracer fil"
#: ../src/extension/internal/latex-pstricks-out.cpp:95
msgid "LaTeX Output"
-msgstr "LaTeX-uddata"
+msgstr "LaTeX-output"
#: ../src/extension/internal/latex-pstricks-out.cpp:100
msgid "LaTeX With PSTricks macros (*.tex)"
@@ -8530,7 +8523,7 @@ msgstr "LaTeX udskrivning"
#: ../src/extension/internal/odf.cpp:2142
msgid "OpenDocument Drawing Output"
-msgstr "OpenDocument Drawing-uddata"
+msgstr "OpenDocument Drawing-output"
#: ../src/extension/internal/odf.cpp:2147
msgid "OpenDocument drawing (*.odg)"
@@ -8675,7 +8668,7 @@ msgstr "Åbn filer gemt med Adobe Illustrator"
#: ../src/extension/internal/pov-out.cpp:715
msgid "PovRay Output"
-msgstr "PovRay-uddata"
+msgstr "PovRay-output"
#: ../src/extension/internal/pov-out.cpp:720
#, fuzzy
@@ -8700,7 +8693,7 @@ msgstr "Inkscapes eget filformat og W3C-standard"
#: ../src/extension/internal/svg.cpp:114
msgid "SVG Output Inkscape"
-msgstr "SVG-Inkscape-uddata"
+msgstr "SVG-output Inkscape"
#: ../src/extension/internal/svg.cpp:119
msgid "Inkscape SVG (*.svg)"
@@ -8712,7 +8705,7 @@ msgstr "SVG-format med Inkscape-udvidelser"
#: ../src/extension/internal/svg.cpp:128
msgid "SVG Output"
-msgstr "SVG-uddata"
+msgstr "SVG-output"
#: ../src/extension/internal/svg.cpp:133
msgid "Plain SVG (*.svg)"
@@ -8736,7 +8729,7 @@ msgstr "SVG filformat komprimeret med GZip"
#: ../src/extension/internal/svgz.cpp:61 ../src/extension/internal/svgz.cpp:75
msgid "SVGZ Output"
-msgstr "SVGZ-uddata"
+msgstr "SVGZ-output"
#: ../src/extension/internal/svgz.cpp:67
msgid "Inkscape's native file format compressed with GZip"
@@ -8816,9 +8809,8 @@ msgid "Windows Metafiles"
msgstr "Windows Metafile-inddata"
#: ../src/extension/internal/wmf-inout.cpp:3172
-#, fuzzy
msgid "WMF Output"
-msgstr "DXF-uddata"
+msgstr "WMF-output"
#: ../src/extension/internal/wmf-inout.cpp:3182
msgid "Map all fill patterns to standard WMF hatches"
@@ -9638,9 +9630,8 @@ msgstr "Omdøb det aktuelle lag"
#: ../src/ui/widget/page-sizer.cpp:283
#: ../src/widgets/gradient-selector.cpp:154
#: ../src/widgets/sp-xmlview-attr-list.cpp:49
-#, fuzzy
msgid "Name"
-msgstr "Navn:"
+msgstr "Navn"
#: ../src/libgdl/gdl-dock-object.c:126
msgid "Unique name for identifying the dock object"
@@ -11535,14 +11526,12 @@ msgid "None"
msgstr ""
#: ../src/live_effects/lpe-ruler.cpp:33 ../src/widgets/arc-toolbar.cpp:319
-#, fuzzy
msgid "Start"
-msgstr "Start:"
+msgstr "Start"
#: ../src/live_effects/lpe-ruler.cpp:34 ../src/widgets/arc-toolbar.cpp:332
-#, fuzzy
msgid "End"
-msgstr "Ende:"
+msgstr "Slut"
#: ../src/live_effects/lpe-ruler.cpp:41
#, fuzzy
@@ -11559,9 +11548,8 @@ msgstr "Afstand mellem lodrette gitterlinjer"
#: ../share/extensions/interp_att_g.inx.h:9
#: ../share/extensions/layout_nup.inx.h:3
#: ../share/extensions/printing_marks.inx.h:11
-#, fuzzy
msgid "Unit:"
-msgstr "Enheder:"
+msgstr "Enhed:"
#: ../src/live_effects/lpe-ruler.cpp:42 ../src/widgets/ruler.cpp:202
msgid "Unit"
@@ -12129,7 +12117,7 @@ msgstr "Udskriv Inkscapes versionsnummer"
#: ../src/main.cpp:300
msgid "Do not use X server (only process files from console)"
-msgstr "Benyt ikke X-serveren (behandl kun filer fra konsollen)"
+msgstr "Brug ikke X-serveren (behandl kun filer fra konsollen)"
#: ../src/main.cpp:305
msgid "Try to use X server (even if $DISPLAY is not set)"
@@ -12825,9 +12813,8 @@ msgid "A related resource"
msgstr "endeknudepunkt"
#: ../src/rdf.cpp:267 ../src/ui/dialog/inkscape-preferences.cpp:1870
-#, fuzzy
msgid "Language:"
-msgstr "Sprog"
+msgstr "Sprog:"
#: ../src/rdf.cpp:268
msgid "A language of the resource"
@@ -13055,7 +13042,7 @@ msgstr "Indsæt størrelse separat"
#: ../src/selection-chemistry.cpp:1335
msgid "Select <b>object(s)</b> to move to the layer above."
-msgstr "Markér <b>objekt(er)</b> at flytte til laget ovenover."
+msgstr "Markér <b>objekt(er)</b> at flytte til overliggende lag."
#: ../src/selection-chemistry.cpp:1360
msgid "Raise to next layer"
@@ -14237,9 +14224,12 @@ msgstr "about.svg"
#. TRANSLATORS: Put here your name (and other national contributors')
#. one per line in the form of: name surname (email). Use \n for newline.
#: ../src/ui/dialog/aboutbox.cpp:426
-#, fuzzy
msgid "translator-credits"
-msgstr "_Oversættere"
+msgstr ""
+"Keld Simonsen (keld@dkuug.dk)\n"
+"Kjartan Maraas (kmaraas@online.no)\n"
+"Rune Rønde Laursen (runerl@skjoldhoej.dk)\n"
+"scootergrisen"
#: ../src/ui/dialog/align-and-distribute.cpp:170
#: ../src/ui/dialog/align-and-distribute.cpp:847
@@ -15276,6 +15266,7 @@ msgstr "<small>Tilfældiggør:</small>"
msgid ""
"Color: <b>%s</b>; <b>Click</b> to set fill, <b>Shift+click</b> to set stroke"
msgstr ""
+"Farve: <b>%s</b>; <b>Klik</b> for at vælge udfyldning, <b>Skift+klik</b> for at bestryge"
#: ../src/ui/dialog/color-item.cpp:505
#, fuzzy
@@ -16431,7 +16422,7 @@ msgstr "Effe_kter"
#: ../src/ui/dialog/filter-effects-dialog.cpp:1818
#, fuzzy
msgid "Connections"
-msgstr "Forbinder"
+msgstr "Tilslutninger"
#: ../src/ui/dialog/filter-effects-dialog.cpp:1956
msgid "Remove filter primitive"
@@ -16952,9 +16943,8 @@ msgid "Find objects by their content or properties (exact or partial match)"
msgstr "Find objekter ud fra deres tekstindhold (nøjagtig eller delvis match)"
#: ../src/ui/dialog/find.cpp:73
-#, fuzzy
msgid "R_eplace:"
-msgstr "_Slip"
+msgstr "_Erstat:"
#: ../src/ui/dialog/find.cpp:73
#, fuzzy
@@ -16963,7 +16953,7 @@ msgstr "0 (gennemsigtig)"
#: ../src/ui/dialog/find.cpp:75
msgid "_All"
-msgstr ""
+msgstr "_Alt"
#: ../src/ui/dialog/find.cpp:75
#, fuzzy
@@ -16971,16 +16961,14 @@ msgid "Search in all layers"
msgstr "Markér i alle lag"
#: ../src/ui/dialog/find.cpp:76
-#, fuzzy
msgid "Current _layer"
-msgstr "Aktuelt lag"
+msgstr "Aktuelt _lag"
#: ../src/ui/dialog/find.cpp:76
msgid "Limit search to the current layer"
msgstr "Begræns søgning til det aktuelle lag"
#: ../src/ui/dialog/find.cpp:77
-#, fuzzy
msgid "Sele_ction"
msgstr "Markering"
@@ -16994,27 +16982,24 @@ msgid "Search in text objects"
msgstr "Søg efter tekstobjekter"
#: ../src/ui/dialog/find.cpp:79
-#, fuzzy
msgid "_Properties"
-msgstr "Linke_genskaber"
+msgstr "E_genskaber"
#: ../src/ui/dialog/find.cpp:79
msgid "Search in object properties, styles, attributes and IDs"
msgstr ""
#: ../src/ui/dialog/find.cpp:81
-#, fuzzy
msgid "Search in"
-msgstr "Søg efter grupper"
+msgstr "Søg i"
#: ../src/ui/dialog/find.cpp:82
msgid "Scope"
-msgstr ""
+msgstr "Område"
#: ../src/ui/dialog/find.cpp:84
-#, fuzzy
msgid "Case sensiti_ve"
-msgstr "Gribefølsomhed:"
+msgstr "_Versalfølsom"
#: ../src/ui/dialog/find.cpp:84
msgid "Match upper/lower case"
@@ -17048,9 +17033,8 @@ msgid "Include locked objects in search"
msgstr "Inkludér låste objekter i søgningen"
#: ../src/ui/dialog/find.cpp:89
-#, fuzzy
msgid "General"
-msgstr "<b>Generelt</b>"
+msgstr "Generelt"
#: ../src/ui/dialog/find.cpp:91
#, fuzzy
@@ -17102,9 +17086,8 @@ msgid "Search fonts"
msgstr "Søg efter kloner"
#: ../src/ui/dialog/find.cpp:96
-#, fuzzy
msgid "Properties"
-msgstr "Linke_genskaber"
+msgstr "Egenskaber"
#: ../src/ui/dialog/find.cpp:98
msgid "All types"
@@ -17199,9 +17182,8 @@ msgid "Search offset objects"
msgstr "Søg efter forskudte objekter"
#: ../src/ui/dialog/find.cpp:112
-#, fuzzy
msgid "Object types"
-msgstr "Objekt"
+msgstr "Objekttyper"
#: ../src/ui/dialog/find.cpp:115
msgid "_Find"
@@ -17447,9 +17429,8 @@ msgid "Ogham"
msgstr ""
#: ../src/ui/dialog/glyphs.cpp:91
-#, fuzzy
msgid "Old Italic"
-msgstr "Kursiv"
+msgstr "Gammel kursiv"
#: ../src/ui/dialog/glyphs.cpp:92 ../src/ui/dialog/glyphs.cpp:175
msgid "Oriya"
@@ -18579,12 +18560,12 @@ msgstr "Indstillinger for overgange"
#: ../src/ui/dialog/inkscape-preferences.cpp:373
#, fuzzy
msgid "Show transform handles for single nodes"
-msgstr "Vis Bezier-håndtag på markerede knudepunkter"
+msgstr "Vis Bezierhåndtag på markerede knudepunkter"
#: ../src/ui/dialog/inkscape-preferences.cpp:374
#, fuzzy
msgid "Show transform handles even when only a single node is selected"
-msgstr "Vis Bezier-håndtag på markerede knudepunkter"
+msgstr "Vis Bezierhåndtag på markerede knudepunkter"
#: ../src/ui/dialog/inkscape-preferences.cpp:375
#, fuzzy
@@ -18621,7 +18602,7 @@ msgstr "Mål"
#: ../src/ui/dialog/inkscape-preferences.cpp:392
msgid "Ignore first and last points"
-msgstr ""
+msgstr "Ignorer første og sidste punkt"
#: ../src/ui/dialog/inkscape-preferences.cpp:393
msgid ""
@@ -18805,7 +18786,7 @@ msgstr "Pipette"
#. Connector
#: ../src/ui/dialog/inkscape-preferences.cpp:507
msgid "Connector"
-msgstr "Forbinder"
+msgstr "Tilslutter"
#: ../src/ui/dialog/inkscape-preferences.cpp:510
msgid "If on, connector attachment points will not be shown for text objects"
@@ -19104,9 +19085,8 @@ msgid "Vietnamese (vi)"
msgstr ""
#: ../src/ui/dialog/inkscape-preferences.cpp:568
-#, fuzzy
msgid "Language (requires restart):"
-msgstr "Om dialoger skal have en lukkeknap (kræver genstart)"
+msgstr "Sprog (kræver genstart)"
#: ../src/ui/dialog/inkscape-preferences.cpp:569
msgid "Set the language for menus and number formats"
@@ -19131,9 +19111,8 @@ msgid "Smaller"
msgstr "lille"
#: ../src/ui/dialog/inkscape-preferences.cpp:576
-#, fuzzy
msgid "Toolbox icon size:"
-msgstr "Værktøjskontrollinjen"
+msgstr "Værktøjskasse ikonstørrelse:"
#: ../src/ui/dialog/inkscape-preferences.cpp:577
#, fuzzy
@@ -19141,9 +19120,8 @@ msgid "Set the size for the tool icons (requires restart)"
msgstr "Om dialoger skal have en lukkeknap (kræver genstart)"
#: ../src/ui/dialog/inkscape-preferences.cpp:580
-#, fuzzy
msgid "Control bar icon size:"
-msgstr "Værktøjskontrollinjen"
+msgstr "Kontrollinje ikonstørrelse:"
#: ../src/ui/dialog/inkscape-preferences.cpp:581
#, fuzzy
@@ -19152,9 +19130,8 @@ msgid ""
msgstr "Om dialoger skal have en lukkeknap (kræver genstart)"
#: ../src/ui/dialog/inkscape-preferences.cpp:584
-#, fuzzy
msgid "Secondary toolbar icon size:"
-msgstr "Værktøjskontrollinjen"
+msgstr "Sekundær værktøjslinje ikonstørrelse:"
#: ../src/ui/dialog/inkscape-preferences.cpp:585
#, fuzzy
@@ -19178,9 +19155,8 @@ msgid "Clear list"
msgstr "Ryd værdier"
#: ../src/ui/dialog/inkscape-preferences.cpp:598
-#, fuzzy
msgid "Maximum documents in Open _Recent:"
-msgstr "Maksimale nylige dokumenter:"
+msgstr "Højeste antal dokumente_r i Åbn seneste:"
#: ../src/ui/dialog/inkscape-preferences.cpp:599
#, fuzzy
@@ -19549,7 +19525,7 @@ msgstr ""
#: ../src/ui/dialog/inkscape-preferences.cpp:843
msgid "Input/Output"
-msgstr "Inddata/uddata"
+msgstr "Input/output"
#: ../src/ui/dialog/inkscape-preferences.cpp:846
msgid "Use current directory for \"Save As ...\""
@@ -19565,7 +19541,7 @@ msgstr ""
#: ../src/ui/dialog/inkscape-preferences.cpp:850
msgid "Add label comments to printing output"
-msgstr "Tilføj etiketkommentarer til udskrivning-uddata"
+msgstr "Tilføj etiketkommentarer til udskrivningsoutput"
#: ../src/ui/dialog/inkscape-preferences.cpp:852
msgid ""
@@ -19656,7 +19632,7 @@ msgstr ""
#: ../src/ui/dialog/inkscape-preferences.cpp:877
msgid "Input devices"
-msgstr "Inddata-enheder"
+msgstr "Inputenheder"
#. SVG output options
#: ../src/ui/dialog/inkscape-preferences.cpp:880
@@ -19865,7 +19841,7 @@ msgstr ""
#: ../src/ui/dialog/inkscape-preferences.cpp:946
msgid "SVG output"
-msgstr "SVG-uddata"
+msgstr "SVG-output"
#. TRANSLATORS: see http://www.newsandtech.com/issues/2004/03-04/pt/03-04_rendering.htm
#: ../src/ui/dialog/inkscape-preferences.cpp:952
@@ -19996,9 +19972,8 @@ msgstr ""
#: ../src/ui/dialog/inkscape-preferences.cpp:1046
#: ../src/ui/widget/color-icc-selector.cpp:395
#: ../src/ui/widget/color-icc-selector.cpp:674
-#, fuzzy
msgid "<none>"
-msgstr "ingen"
+msgstr "<ingen>"
#: ../src/ui/dialog/inkscape-preferences.cpp:1091
msgid "Color management"
@@ -20824,9 +20799,8 @@ msgstr "Gengivelse"
#. Note: /options/bitmapoversample removed with Cairo renderer
#: ../src/ui/dialog/inkscape-preferences.cpp:1434 ../src/verbs.cpp:156
#: ../src/widgets/calligraphy-toolbar.cpp:626
-#, fuzzy
msgid "Edit"
-msgstr "_Redigér"
+msgstr "Redigér"
#: ../src/ui/dialog/inkscape-preferences.cpp:1435
msgid "Automatically reload bitmaps"
@@ -20932,7 +20906,7 @@ msgstr ""
#: ../src/ui/dialog/inkscape-preferences.cpp:1497
msgid "Shortcut file:"
-msgstr ""
+msgstr "Genvejsfil:"
#: ../src/ui/dialog/inkscape-preferences.cpp:1500
#: ../src/ui/dialog/template-load-tab.cpp:48
@@ -20941,7 +20915,7 @@ msgstr "Søg:"
#: ../src/ui/dialog/inkscape-preferences.cpp:1512
msgid "Shortcut"
-msgstr ""
+msgstr "Genvej"
#: ../src/ui/dialog/inkscape-preferences.cpp:1513
#: ../src/ui/widget/page-sizer.cpp:285
@@ -20953,9 +20927,8 @@ msgstr "Beskrivelse"
#: ../src/ui/dialog/svg-fonts-dialog.cpp:699
#: ../src/ui/dialog/tracedialog.cpp:813
#: ../src/ui/widget/preferences-widget.cpp:745
-#, fuzzy
msgid "Reset"
-msgstr " _Nulstil "
+msgstr "Nulstil"
#: ../src/ui/dialog/inkscape-preferences.cpp:1568
msgid ""
@@ -20964,18 +20937,16 @@ msgid ""
msgstr ""
#: ../src/ui/dialog/inkscape-preferences.cpp:1572
-#, fuzzy
msgid "Import ..."
-msgstr "_Importér..."
+msgstr "Importér ..."
#: ../src/ui/dialog/inkscape-preferences.cpp:1572
msgid "Import custom keyboard shortcuts from a file"
msgstr ""
#: ../src/ui/dialog/inkscape-preferences.cpp:1575
-#, fuzzy
msgid "Export ..."
-msgstr "_Eksportér punktbillede..."
+msgstr "Eksportér ..."
#: ../src/ui/dialog/inkscape-preferences.cpp:1575
#, fuzzy
@@ -21001,9 +20972,8 @@ msgid "Set the main spell check language"
msgstr ""
#: ../src/ui/dialog/inkscape-preferences.cpp:1874
-#, fuzzy
msgid "Second language:"
-msgstr "Sprog"
+msgstr "Andet sprog:"
#: ../src/ui/dialog/inkscape-preferences.cpp:1875
msgid ""
@@ -21012,9 +20982,8 @@ msgid ""
msgstr ""
#: ../src/ui/dialog/inkscape-preferences.cpp:1878
-#, fuzzy
msgid "Third language:"
-msgstr "Sprog"
+msgstr "Tredje sprog:"
#: ../src/ui/dialog/inkscape-preferences.cpp:1879
msgid ""
@@ -21024,7 +20993,7 @@ msgstr ""
#: ../src/ui/dialog/inkscape-preferences.cpp:1881
msgid "Ignore words with digits"
-msgstr ""
+msgstr "Ignorer ord med tal"
#: ../src/ui/dialog/inkscape-preferences.cpp:1883
msgid "Ignore words containing digits, such as \"R2D2\""
@@ -21032,7 +21001,7 @@ msgstr ""
#: ../src/ui/dialog/inkscape-preferences.cpp:1885
msgid "Ignore words in ALL CAPITALS"
-msgstr ""
+msgstr "Ignorer ord med STORE BOGSTAVER"
#: ../src/ui/dialog/inkscape-preferences.cpp:1887
msgid "Ignore words in all capitals, such as \"IUPAC\""
@@ -21539,11 +21508,11 @@ msgstr "I brug"
#. More typical usage is to call this memory "free" rather than "slack".
#: ../src/ui/dialog/memory.cpp:100
msgid "Slack"
-msgstr "Fri"
+msgstr "Ledig"
#: ../src/ui/dialog/memory.cpp:101
msgid "Total"
-msgstr "Total"
+msgstr "Samlet"
#: ../src/ui/dialog/memory.cpp:141 ../src/ui/dialog/memory.cpp:147
#: ../src/ui/dialog/memory.cpp:154 ../src/ui/dialog/memory.cpp:186
@@ -21556,7 +21525,7 @@ msgstr "Kombineret"
#: ../src/ui/dialog/memory.cpp:209
msgid "Recalculate"
-msgstr "Genberegn"
+msgstr "Beregn igen"
#: ../src/ui/dialog/messages.cpp:47
#, fuzzy
@@ -21622,14 +21591,12 @@ msgstr "Optegn"
#: ../src/ui/dialog/object-properties.cpp:399
#: ../src/ui/dialog/object-properties.cpp:470
#: ../src/ui/dialog/object-properties.cpp:477
-#, fuzzy
msgid "_ID:"
-msgstr "_ID: "
+msgstr "_ID:"
#: ../src/ui/dialog/object-properties.cpp:60
-#, fuzzy
msgid "_Title:"
-msgstr "Titel"
+msgstr "_Titel:"
#: ../src/ui/dialog/object-properties.cpp:61
#, fuzzy
@@ -22353,9 +22320,8 @@ msgid "Add font"
msgstr "Tilføj lag"
#: ../src/ui/dialog/svg-fonts-dialog.cpp:913 ../src/ui/dialog/text-edit.cpp:69
-#, fuzzy
msgid "_Font"
-msgstr "Skrifttype"
+msgstr "Skri_fttype"
#: ../src/ui/dialog/svg-fonts-dialog.cpp:921
#, fuzzy
@@ -22490,7 +22456,7 @@ msgstr ""
#: ../src/ui/dialog/template-widget.cpp:37
msgid "More info"
-msgstr "Mere info"
+msgstr "Flere oplysninger"
#: ../src/ui/dialog/template-widget.cpp:39
msgid "no template selected"
@@ -22517,12 +22483,11 @@ msgstr ""
#: ../src/ui/dialog/text-edit.cpp:72
msgid "_Variants"
-msgstr ""
+msgstr "_Varianters"
#: ../src/ui/dialog/text-edit.cpp:73
-#, fuzzy
msgid "Set as _default"
-msgstr "Vælg som standard"
+msgstr "Anven_d som standard"
#: ../src/ui/dialog/text-edit.cpp:87
msgid "AaBbCcIiPpQq12369$€¢?.;/()"
@@ -24330,7 +24295,6 @@ msgid "Visible Colors"
msgstr "Farver:"
#: ../src/ui/tools/flood-tool.cpp:102
-#, fuzzy
msgctxt "Flood autogap"
msgid "None"
msgstr "Ingen"
@@ -24821,13 +24785,12 @@ msgid "Click selection to toggle scale/rotation handles"
msgstr "Klik på markeringen for at skifte skalerings- eller roteringshåndtag"
#: ../src/ui/tools/select-tool.cpp:161
-#, fuzzy
msgid ""
"No objects selected. Click, Shift+click, Alt+scroll mouse on top of objects, "
"or drag around objects to select."
msgstr ""
-"Ingen objekter markeret. Klik, Shift+klik, eller træk omkring objekterne for "
-"at markere."
+"Ingen objekter markeret. Klik, Skift+klik, Alt+rul musen oven på et objekt, "
+"eller træk omkring objekter for at markere."
#: ../src/ui/tools/select-tool.cpp:214
msgid "Move canceled."
@@ -25040,13 +25003,12 @@ msgid "Insert no-break space"
msgstr "Ikke-brudt mellemrum"
#: ../src/ui/tools/text-tool.cpp:831
-#, fuzzy
msgid "Make bold"
-msgstr "Gør hel"
+msgstr "Gør fed"
#: ../src/ui/tools/text-tool.cpp:848
msgid "Make italic"
-msgstr ""
+msgstr "Gør kursiv"
#: ../src/ui/tools/text-tool.cpp:886
#, fuzzy
@@ -25783,7 +25745,6 @@ msgid "Border"
msgstr "Rækkefølge"
#: ../src/ui/widget/panel.cpp:208
-#, fuzzy
msgctxt "Swatches border"
msgid "None"
msgstr "Ingen"
@@ -25866,9 +25827,8 @@ msgstr ""
#: ../src/ui/widget/selected-style.cpp:131
#: ../src/ui/widget/style-swatch.cpp:127
-#, fuzzy
msgid "Fill:"
-msgstr "Udfyldning"
+msgstr "Udfyldning:"
#: ../src/ui/widget/selected-style.cpp:133
msgid "O:"
@@ -26250,12 +26210,12 @@ msgstr "R-overgang"
#: ../src/ui/widget/style-swatch.cpp:312
#, c-format
msgid "Fill: %06x/%.3g"
-msgstr ""
+msgstr "Udfyldning: %06x/%.3g"
#: ../src/ui/widget/style-swatch.cpp:314
#, c-format
msgid "Stroke: %06x/%.3g"
-msgstr ""
+msgstr "Bestrygning: %06x/%.3g"
#: ../src/ui/widget/style-swatch.cpp:319
#, fuzzy
@@ -26325,9 +26285,8 @@ msgstr[1] ""
"adskille"
#: ../src/verbs.cpp:137
-#, fuzzy
msgid "File"
-msgstr "_Fil"
+msgstr "Fil"
#: ../src/verbs.cpp:232 ../share/extensions/interp_att_g.inx.h:22
#, fuzzy
@@ -26932,7 +26891,7 @@ msgstr "Markér alle objekter eller alle knudepunkter"
#: ../src/verbs.cpp:2496
msgid "Select All in All La_yers"
-msgstr "Markér alle i alle la_g"
+msgstr "Markér alt i alle la_g"
#: ../src/verbs.cpp:2497
msgid "Select all objects in all visible and unlocked layers"
@@ -27334,7 +27293,7 @@ msgstr "Omdøb det aktuelle lag"
#: ../src/verbs.cpp:2616
msgid "Switch to Layer Abov_e"
-msgstr "Skift til laget ov_enfor"
+msgstr "Skift til ov_erliggende lag"
#: ../src/verbs.cpp:2617
msgid "Switch to the layer above the current"
@@ -27342,7 +27301,7 @@ msgstr "Skift til laget ovenover det aktuelle"
#: ../src/verbs.cpp:2618
msgid "Switch to Layer Belo_w"
-msgstr "Skift til laget neden_under"
+msgstr "Skift til _underliggende lag"
#: ../src/verbs.cpp:2619
msgid "Switch to the layer below the current"
@@ -27350,7 +27309,7 @@ msgstr "Skift til laget under det aktuelle"
#: ../src/verbs.cpp:2620
msgid "Move Selection to Layer Abo_ve"
-msgstr "Flyt markering til laget oveno_ver"
+msgstr "Flyt markering til o_verliggende lag"
#: ../src/verbs.cpp:2621
msgid "Move selection to the layer above the current"
@@ -27358,7 +27317,7 @@ msgstr "Flyt markering til laget nedenunder det aktuelle"
#: ../src/verbs.cpp:2622
msgid "Move Selection to Layer Bel_ow"
-msgstr "Flyt mark til _laget nedenunder"
+msgstr "Flyt markering til _underliggende lag"
#: ../src/verbs.cpp:2623
msgid "Move selection to the layer below the current"
@@ -27643,7 +27602,7 @@ msgstr ""
#: ../src/verbs.cpp:2703
msgid "Tweak objects by sculpting or painting"
-msgstr "Tweak objekter ved at forme eller male"
+msgstr "Tweak objekter ved formning eller maling"
#: ../src/verbs.cpp:2704
#, fuzzy
@@ -27722,7 +27681,7 @@ msgstr "Pen"
#: ../src/verbs.cpp:2719
msgid "Draw Bezier curves and straight lines"
-msgstr "Tegn bezier-kurver og rette linjer"
+msgstr "Tegn bezierkurver og rette linjer"
#: ../src/verbs.cpp:2720
#, fuzzy
@@ -27780,7 +27739,7 @@ msgstr "Pipette"
#: ../src/verbs.cpp:2734
msgctxt "ContextVerb"
msgid "Connector"
-msgstr "Forbinder"
+msgstr "Tilslutter"
#: ../src/verbs.cpp:2735
msgid "Create diagram connectors"
@@ -28051,7 +28010,7 @@ msgstr "Vis eller skjul lærredets rullepaneler"
#: ../src/verbs.cpp:2794
msgid "Page _Grid"
-msgstr "Side _gitter"
+msgstr "Side_gitter"
#: ../src/verbs.cpp:2794
msgid "Show or hide the page grid"
@@ -28074,15 +28033,15 @@ msgstr "Forhåndsvis"
#: ../src/verbs.cpp:2797
msgid "_Commands Bar"
-msgstr "_Kommandoværktøjslinje"
+msgstr "_Kommandolinje"
#: ../src/verbs.cpp:2797
msgid "Show or hide the Commands bar (under the menu)"
-msgstr "Vis eller skjul kommandoværktøjslinjen (under menuen)"
+msgstr "Vis eller skjul kommandolinjen (under menuen)"
#: ../src/verbs.cpp:2798
msgid "Sn_ap Controls Bar"
-msgstr "Fastgør værktøjslinjen"
+msgstr "F_astgørelseskontrollinje"
#: ../src/verbs.cpp:2798
#, fuzzy
@@ -28396,7 +28355,7 @@ msgstr "Vis og redigér dokumentets XML-træ"
#: ../src/verbs.cpp:2887
msgid "_Find/Replace..."
-msgstr "_Find/Erstat ..."
+msgstr "_Find/erstat ..."
#: ../src/verbs.cpp:2888
msgid "Find objects in document"
@@ -28458,11 +28417,11 @@ msgstr "Redigér id, status for låsning og synlighed og andre objektegenskaber"
#: ../src/verbs.cpp:2903
msgid "_Input Devices..."
-msgstr "_Inddata-enheder ..."
+msgstr "_Inputenheder ..."
#: ../src/verbs.cpp:2904
msgid "Configure extended input devices, such as a graphics tablet"
-msgstr "Indstil yderligere inddata-enheder som f.eks. en tegneplade"
+msgstr "Indstil yderligere inputenheder som f.eks. en tegneplade"
#: ../src/verbs.cpp:2905
msgid "_Extensions..."
@@ -28694,7 +28653,7 @@ msgstr "Vis alle"
#: ../src/verbs.cpp:2974
msgid "Unhide All in All Layers"
-msgstr "Vis alle i alle lag"
+msgstr "Vis alt i alle lag"
#: ../src/verbs.cpp:2978
msgid "Link an ICC color profile"
@@ -28861,9 +28820,8 @@ msgid "Angle in Y direction"
msgstr ""
#: ../src/widgets/box3d-toolbar.cpp:342
-#, fuzzy
msgid "Angle Y:"
-msgstr "Vinkel:"
+msgstr "Vinkel Y:"
#. Translators: PL is short for 'perspective line'
#: ../src/widgets/box3d-toolbar.cpp:344
@@ -29182,7 +29140,7 @@ msgstr ""
#: ../src/widgets/calligraphy-toolbar.cpp:579
msgid "Use the pressure of the input device to alter the width of the pen"
-msgstr "Benyt inddata-enhedens tryk til at ændre pennens bredde"
+msgstr "Brug inputenhedens tryk til at ændre pennens bredde"
#: ../src/widgets/calligraphy-toolbar.cpp:591
#, fuzzy
@@ -29191,7 +29149,7 @@ msgstr "Titel"
#: ../src/widgets/calligraphy-toolbar.cpp:592
msgid "Use the tilt of the input device to alter the angle of the pen's nib"
-msgstr "Benyt inddata-enhedens hældning til at ændre på pennespidsens vinkel"
+msgstr "Brug inputenhedens hældning til at ændre på pennespidsens vinkel"
#: ../src/widgets/calligraphy-toolbar.cpp:607
#, fuzzy
@@ -29276,9 +29234,8 @@ msgid "Graph"
msgstr "Ombryd"
#: ../src/widgets/connector-toolbar.cpp:378
-#, fuzzy
msgid "Connector Length"
-msgstr "Forbinder"
+msgstr "Tilslutterlængde"
#: ../src/widgets/connector-toolbar.cpp:378
msgid "Length:"
@@ -29536,14 +29493,13 @@ msgstr "Mønsterstreg"
#: ../src/widgets/font-selector.cpp:120 ../src/widgets/text-toolbar.cpp:953
#: ../src/widgets/text-toolbar.cpp:1265
-#, fuzzy
msgid "Font size"
-msgstr "Skrifttypestørrelse:"
+msgstr "Skrifttypestørrelse"
#. Family frame
#: ../src/widgets/font-selector.cpp:134
msgid "Font family"
-msgstr "Skrifttype"
+msgstr "Skrifttypefamilie"
#. Style frame
#: ../src/widgets/font-selector.cpp:179
@@ -30026,9 +29982,8 @@ msgid "Coons: no smoothing. Bicubic: smoothing across patch boundaries."
msgstr ""
#: ../src/widgets/mesh-toolbar.cpp:483 ../src/widgets/pencil-toolbar.cpp:278
-#, fuzzy
msgid "Smoothing:"
-msgstr "Udjævnet"
+msgstr "Udjævning:"
#: ../src/widgets/node-toolbar.cpp:341
#, fuzzy
@@ -30203,12 +30158,12 @@ msgstr "Tegn håndtag"
#: ../src/widgets/node-toolbar.cpp:511
#, fuzzy
msgid "Show transformation handles for selected nodes"
-msgstr "Vis Bezier-håndtag på markerede knudepunkter"
+msgstr "Vis Bezierhåndtag på markerede knudepunkter"
#: ../src/widgets/node-toolbar.cpp:522
#, fuzzy
msgid "Show Bezier handles of selected nodes"
-msgstr "Vis Bezier-håndtag på markerede knudepunkter"
+msgstr "Vis Bezierhåndtag på markerede knudepunkter"
#: ../src/widgets/node-toolbar.cpp:532
#, fuzzy
@@ -30483,9 +30438,8 @@ msgid "Last applied"
msgstr ""
#: ../src/widgets/pencil-toolbar.cpp:190 ../src/widgets/pencil-toolbar.cpp:191
-#, fuzzy
msgid "Shape:"
-msgstr "Figurer"
+msgstr "Form:"
#: ../src/widgets/pencil-toolbar.cpp:190
msgid "Shape of new paths drawn by this tool"
@@ -30501,9 +30455,8 @@ msgid "(few nodes, smooth)"
msgstr "Udjævn markerede knudepunkter"
#: ../src/widgets/pencil-toolbar.cpp:278
-#, fuzzy
msgid "Smoothing: "
-msgstr "Udjævnet"
+msgstr "Udjævning: "
#: ../src/widgets/pencil-toolbar.cpp:279
msgid "How much smoothing (simplifying) is applied to the line"
@@ -30913,9 +30866,8 @@ msgid "Focus"
msgstr "spids"
#: ../src/widgets/spray-toolbar.cpp:132
-#, fuzzy
msgid "Focus:"
-msgstr "Kilde"
+msgstr "Fokus:"
#: ../src/widgets/spray-toolbar.cpp:132
msgid "0 to spray a spot; increase to enlarge the ring radius"
@@ -30993,7 +30945,7 @@ msgstr ""
#, fuzzy
msgid ""
"Use the pressure of the input device to alter the amount of sprayed objects"
-msgstr "Benyt inddata-enhedens tryk til at ændre pennens bredde"
+msgstr "Brug inputenhedens tryk til at ændre pennens bredde"
#: ../src/widgets/spray-toolbar.cpp:235
#, fuzzy
@@ -31002,11 +30954,11 @@ msgstr "Udskrivningsdestination"
#: ../src/widgets/spray-toolbar.cpp:238
msgid "Rotation"
-msgstr "Rotering"
+msgstr "Rotation"
#: ../src/widgets/spray-toolbar.cpp:238
msgid "Rotation:"
-msgstr "Rotering:"
+msgstr "Rotation:"
#: ../src/widgets/spray-toolbar.cpp:240
#, no-c-format
@@ -31394,9 +31346,8 @@ msgid "Text: Change orientation"
msgstr "Sideorientering:"
#: ../src/widgets/text-toolbar.cpp:1216
-#, fuzzy
msgid "Font Family"
-msgstr "Skrifttype"
+msgstr "Skrifttypefamilie"
#: ../src/widgets/text-toolbar.cpp:1217
#, fuzzy
@@ -31847,9 +31798,8 @@ msgid "Force"
msgstr "Kilde"
#: ../src/widgets/tweak-toolbar.cpp:145
-#, fuzzy
msgid "Force:"
-msgstr "Kilde"
+msgstr "Tryk:"
#: ../src/widgets/tweak-toolbar.cpp:145
msgid "The force of the tweak action"
@@ -32047,7 +31997,7 @@ msgstr ""
#: ../src/widgets/tweak-toolbar.cpp:373
#, fuzzy
msgid "Use the pressure of the input device to alter the force of tweak action"
-msgstr "Benyt inddata-enhedens tryk til at ændre pennens bredde"
+msgstr "Brug inputenhedens tryk til at ændre pennens bredde"
#: ../share/extensions/convert2dashes.py:100
msgid ""
@@ -33018,7 +32968,7 @@ msgstr "Antal trin"
#: ../share/extensions/straightseg.inx.h:4
#: ../share/extensions/summersnight.inx.h:2 ../share/extensions/whirl.inx.h:4
msgid "Modify Path"
-msgstr "Ændr Sti"
+msgstr "Ændr sti"
#: ../share/extensions/ai_input.inx.h:1
#, fuzzy
@@ -33807,7 +33757,7 @@ msgstr "Desktop-CNC-fræser (*.DXF)"
#: ../share/extensions/dxf_output.inx.h:1
msgid "DXF Output"
-msgstr "DXF-uddata"
+msgstr "DXF-output"
#: ../share/extensions/dxf_output.inx.h:2
#, fuzzy
@@ -34436,9 +34386,8 @@ msgstr ""
#: ../share/extensions/gcodetools_graffiti.inx.h:25
#: ../share/extensions/gcodetools_lathe.inx.h:26
#: ../share/extensions/gcodetools_path_to_gcode.inx.h:15
-#, fuzzy
msgid "Minimum arc radius:"
-msgstr "Indre radius:"
+msgstr "Inderste radius:"
#: ../share/extensions/gcodetools_area.inx.h:34
#: ../share/extensions/gcodetools_engraving.inx.h:12
@@ -34809,7 +34758,7 @@ msgstr "Forskydningssti"
#: ../share/extensions/gcodetools_lathe.inx.h:10
#, fuzzy
msgid "Lathe modify path"
-msgstr "Ændr Sti"
+msgstr "Ændr sti"
#: ../share/extensions/gcodetools_lathe.inx.h:11
msgid ""
@@ -35429,11 +35378,11 @@ msgstr "mellem"
#: ../share/extensions/hershey.inx.h:11
msgid "Serif medium italic"
-msgstr ""
+msgstr "Serif medium kursiv"
#: ../share/extensions/hershey.inx.h:12
msgid "Serif bold italic"
-msgstr ""
+msgstr "Serif fed kursiv"
#: ../share/extensions/hershey.inx.h:13
#, fuzzy
@@ -35606,9 +35555,8 @@ msgid "Import an HP Graphics Language file"
msgstr "XFIG grafikfil (*.fig)"
#: ../share/extensions/hpgl_output.inx.h:1
-#, fuzzy
msgid "HPGL Output"
-msgstr "SVG-uddata"
+msgstr "HPGL-output"
#: ../share/extensions/hpgl_output.inx.h:2
msgid ""
@@ -35833,7 +35781,7 @@ msgstr "http://wiki.inkscape.org/wiki/index.php/FAQ"
#: ../share/extensions/inkscape_help_keys.inx.h:1
msgid "Keys and Mouse Reference"
-msgstr "Tastatur- og musegeveje"
+msgstr "Tastatur- og musegenveje"
#. i18n. Please don't translate it unless a page exists in your language
#: ../share/extensions/inkscape_help_keys.inx.h:3
@@ -37202,7 +37150,7 @@ msgstr ""
#: ../share/extensions/plotter.inx.h:3
#, fuzzy
msgid "Connection Settings "
-msgstr "Forbinder"
+msgstr "Tilslutningsindstillinger "
#: ../share/extensions/plotter.inx.h:4
#, fuzzy
@@ -37268,9 +37216,8 @@ msgid ""
msgstr ""
#: ../share/extensions/plotter.inx.h:19
-#, fuzzy
msgid "Command language:"
-msgstr "Sprog"
+msgstr "Kommandosprog:"
#: ../share/extensions/plotter.inx.h:20
msgid "The command language to use (Default: HPGL)"
@@ -37993,7 +37940,7 @@ msgstr ""
#: ../share/extensions/scour.inx.h:1
msgid "Optimized SVG Output"
-msgstr "Optimeret SVG-uddata"
+msgstr "Optimeret SVG-output"
#: ../share/extensions/scour.inx.h:3
#, fuzzy
@@ -38336,9 +38283,8 @@ msgid "Envelope"
msgstr "Indyldning"
#: ../share/extensions/svg2fxg.inx.h:1
-#, fuzzy
msgid "FXG Output"
-msgstr "SVG-uddata"
+msgstr "FXG-output"
#: ../share/extensions/svg2fxg.inx.h:2
#, fuzzy
@@ -38350,9 +38296,8 @@ msgid "Adobe's XML Graphics file format"
msgstr ""
#: ../share/extensions/svg2xaml.inx.h:1
-#, fuzzy
msgid "XAML Output"
-msgstr "DXF-uddata"
+msgstr "XAML-output"
#: ../share/extensions/svg2xaml.inx.h:2
msgid "Silverlight compatible XAML"
@@ -38565,9 +38510,8 @@ msgid "Load only the first 30 glyphs (Recommended)"
msgstr ""
#: ../share/extensions/synfig_output.inx.h:1
-#, fuzzy
msgid "Synfig Output"
-msgstr "SVG-uddata"
+msgstr ""
#: ../share/extensions/synfig_output.inx.h:2
msgid "Synfig Animation (*.sif)"
diff --git a/share/extensions/dxf_outlines.py b/share/extensions/dxf_outlines.py
index 091606ba3..a45100cf5 100755
--- a/share/extensions/dxf_outlines.py
+++ b/share/extensions/dxf_outlines.py
@@ -211,12 +211,28 @@ class MyEffect(inkex.Effect):
y = float(node.get('y'))
width = float(node.get('width'))
height = float(node.get('height'))
- p = [[[x, y],[x, y],[x, y]]]
- p.append([[x + width, y],[x + width, y],[x + width, y]])
- p.append([[x + width, y + height],[x + width, y + height],[x + width, y + height]])
- p.append([[x, y + height],[x, y + height],[x, y + height]])
- p.append([[x, y],[x, y],[x, y]])
- p = [p]
+ d = "m %s,%s %s,%s %s,%s %s,%s z" % (x, y, width, 0, 0, height, -width, 0)
+ p = cubicsuperpath.parsePath(d)
+ elif node.tag == inkex.addNS('line','svg'):
+ x1 = float(node.get('x1'))
+ x2 = float(node.get('x2'))
+ y1 = float(node.get('y1'))
+ y2 = float(node.get('y2'))
+ d = "M %s,%s L %s,%s" % (x1, y1, x2, y2)
+ p = cubicsuperpath.parsePath(d)
+ elif node.tag == inkex.addNS('circle','svg'):
+ cx = float(node.get('cx'))
+ cy = float(node.get('cy'))
+ r = float(node.get('r'))
+ d = "m %s,%s a %s,%s 0 0 1 %s,%s %s,%s 0 0 1 %s,%s z" % (cx + r, cy, r, r, -2*r, 0, r, r, 2*r, 0)
+ p = cubicsuperpath.parsePath(d)
+ elif node.tag == inkex.addNS('ellipse','svg'):
+ cx = float(node.get('cx'))
+ cy = float(node.get('cy'))
+ rx = float(node.get('rx'))
+ ry = float(node.get('ry'))
+ d = "m %s,%s a %s,%s 0 0 1 %s,%s %s,%s 0 0 1 %s,%s z" % (cx + rx, cy, rx, ry, -2*rx, 0, rx, ry, 2*rx, 0)
+ p = cubicsuperpath.parsePath(d)
else:
return
trans = node.get('transform')
diff --git a/src/desktop.cpp b/src/desktop.cpp
index 02df50c6b..7b20bcb9f 100644
--- a/src/desktop.cpp
+++ b/src/desktop.cpp
@@ -1876,6 +1876,8 @@ SPDesktop::show_dialogs()
mapVerbPreference.insert(std::make_pair ("ObjectProperties", "/dialogs/object") );
mapVerbPreference.insert(std::make_pair ("SpellCheck", "/dialogs/spellcheck") );
mapVerbPreference.insert(std::make_pair ("Symbols", "/dialogs/symbols") );
+ mapVerbPreference.insert(std::make_pair ("ObjectsPanel", "/dialogs/objects") );
+ mapVerbPreference.insert(std::make_pair ("TagsPanel", "/dialogs/tags") );
for (std::map<Glib::ustring, Glib::ustring>::const_iterator iter = mapVerbPreference.begin(); iter != mapVerbPreference.end(); ++iter) {
Glib::ustring pref = iter->second;
diff --git a/src/document.cpp b/src/document.cpp
index 2ea969910..d6a2e1b98 100644
--- a/src/document.cpp
+++ b/src/document.cpp
@@ -1335,20 +1335,11 @@ SPItem *SPDocument::getItemFromListAtPointBottom(unsigned int dkey, SPGroup *gro
}
/**
-Returns the topmost (in z-order) item from the descendants of group (recursively) which
-is at the point p, or NULL if none. Honors into_groups on whether to recurse into
-non-layer groups or not. Honors take_insensitive on whether to return insensitive
-items. If upto != NULL, then if item upto is encountered (at any level), stops searching
-upwards in z-order and returns what it has found so far (i.e. the found item is
-guaranteed to be lower than upto).
- */
-static SPItem *find_item_at_point(unsigned int dkey, SPGroup *group, Geom::Point const &p, gboolean into_groups, bool take_insensitive = false, SPItem *upto = NULL)
+Turn the SVG DOM into a flat list of nodes that can be searched from top-down.
+The list can be persisted, which improves "find at multiple points" speed.
+*/
+static void build_flat_item_list(std::deque<SPItem*> *nodes, unsigned int dkey, SPGroup *group, gboolean into_groups, bool take_insensitive = false, SPItem *upto = NULL)
{
- SPItem *seen = NULL;
- SPItem *newseen = NULL;
- Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- gdouble delta = prefs->getDouble("/options/cursortolerance/value", 1.0);
-
for ( SPObject *o = group->firstChild() ; o ; o = o->getNext() ) {
if (!SP_IS_ITEM(o)) {
continue;
@@ -1359,27 +1350,43 @@ static SPItem *find_item_at_point(unsigned int dkey, SPGroup *group, Geom::Point
}
if (SP_IS_GROUP(o) && (SP_GROUP(o)->effectiveLayerMode(dkey) == SPGroup::LAYER || into_groups)) {
- // if nothing found yet, recurse into the group
- newseen = find_item_at_point(dkey, SP_GROUP(o), p, into_groups, take_insensitive, upto);
- if (newseen) {
- seen = newseen;
- newseen = NULL;
- }
-
- if (item_is_in_group(upto, SP_GROUP(o))) {
- break;
- }
+ build_flat_item_list(nodes, dkey, SP_GROUP(o), into_groups, take_insensitive, upto);
} else {
SPItem *child = SP_ITEM(o);
- Inkscape::DrawingItem *arenaitem = child->get_arenaitem(dkey);
- // seen remembers the last (topmost) of items pickable at this point
- if (arenaitem && arenaitem->pick(p, delta, 1) != NULL
- && (take_insensitive || child->isVisibleAndUnlocked(dkey))) {
- seen = child;
+ if (take_insensitive || child->isVisibleAndUnlocked(dkey)) {
+ nodes->push_front(child);
}
}
}
+}
+
+/**
+Returns the topmost (in z-order) item from the descendants of group (recursively) which
+is at the point p, or NULL if none. Honors into_groups on whether to recurse into
+non-layer groups or not. Honors take_insensitive on whether to return insensitive
+items. If upto != NULL, then if item upto is encountered (at any level), stops searching
+upwards in z-order and returns what it has found so far (i.e. the found item is
+guaranteed to be lower than upto). Requires a list of nodes built by
+build_flat_item_list.
+ */
+static SPItem *find_item_at_point(std::deque<SPItem*> *nodes, unsigned int dkey, Geom::Point const &p)
+{
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ gdouble delta = prefs->getDouble("/options/cursortolerance/value", 1.0);
+
+ SPItem *seen = NULL;
+ SPItem *child;
+ for (unsigned long i = 0; i < nodes->size(); ++i) {
+ child = nodes->at(i);
+ Inkscape::DrawingItem *arenaitem = child->get_arenaitem(dkey);
+
+ if (arenaitem && arenaitem->pick(p, delta, 1) != NULL) {
+ seen = child;
+ break;
+ }
+ }
+
return seen;
}
@@ -1454,9 +1461,12 @@ std::vector<SPItem*> SPDocument::getItemsAtPoints(unsigned const key, std::vecto
gdouble saved_delta = prefs->getDouble("/options/cursortolerance/value", 1.0);
prefs->setDouble("/options/cursortolerance/value", 0.25);
+ // Cache a flattened SVG DOM to speed up selection.
+ std::deque<SPItem*> nodes;
+ build_flat_item_list(&nodes, key, SP_GROUP(this->root), true, false, NULL);
+
for(int i = points.size()-1;i>=0; i--) {
- SPItem *item = getItemAtPoint(key, points[i],
- false, NULL);
+ SPItem *item = find_item_at_point(&nodes, key, points[i]);
if (item && items.end()==find(items.begin(),items.end(), item))
items.push_back(item);
}
@@ -1472,7 +1482,11 @@ SPItem *SPDocument::getItemAtPoint( unsigned const key, Geom::Point const &p,
{
g_return_val_if_fail(this->priv != NULL, NULL);
- return find_item_at_point(key, SP_GROUP(this->root), p, into_groups, false, upto);
+ // Build a flattened SVG DOM for find_item_at_point.
+ std::deque<SPItem*> nodes;
+ build_flat_item_list(&nodes, key, SP_GROUP(this->root), into_groups, false, upto);
+
+ return find_item_at_point(&nodes, key, p);
}
SPItem *SPDocument::getGroupAtPoint(unsigned int key, Geom::Point const &p) const
@@ -1482,7 +1496,6 @@ SPItem *SPDocument::getGroupAtPoint(unsigned int key, Geom::Point const &p) cons
return find_group_at_point(key, SP_GROUP(this->root), p);
}
-
// Resource management
bool SPDocument::addResource(gchar const *key, SPObject *object)
diff --git a/src/extension/internal/metafile-print.cpp b/src/extension/internal/metafile-print.cpp
index 2fb36be85..47ba5971c 100644
--- a/src/extension/internal/metafile-print.cpp
+++ b/src/extension/internal/metafile-print.cpp
@@ -285,8 +285,8 @@ void PrintMetafile::brush_classify(SPObject *parent, int depth, Inkscape::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#_######
+ strncpy(temp, pat_i->getAttribute("id"), sizeof(temp)-1); // Some names may be longer than [EW]MFhatch#_######
+ temp[sizeof(temp)-1] = '\0';
hatch_classify(temp, hatchType, hatchColor, bkColor);
if (*hatchType != -1) {
return;
diff --git a/src/extension/internal/pdfinput/svg-builder.cpp b/src/extension/internal/pdfinput/svg-builder.cpp
index 58e2030d9..a448be639 100644
--- a/src/extension/internal/pdfinput/svg-builder.cpp
+++ b/src/extension/internal/pdfinput/svg-builder.cpp
@@ -498,6 +498,7 @@ void SvgBuilder::addShadedFill(GfxShading *shading, double *matrix, GfxPath *pat
// Obtain clipping path's id from the URL
gchar clip_path_id[32];
strncpy(clip_path_id, clip_path_url + 5, strlen(clip_path_url) - 6);
+ clip_path_id[sizeof (clip_path_id) - 1] = '\0';
SPObject *clip_obj = _doc->getObjectById(clip_path_id);
if (clip_obj) {
clip_obj->deleteObject();
diff --git a/src/io/streamtest.cpp b/src/io/streamtest.cpp
index 2030e6a85..ec59ac4a6 100644
--- a/src/io/streamtest.cpp
+++ b/src/io/streamtest.cpp
@@ -202,6 +202,7 @@ void path_init(char *path, char *name)
exit(1);
}
strncpy(ptr+1,name,strlen(name)+1);
+ path[PATH_MAX-1] = '\0';
printf("'%s'\n",path);
}
diff --git a/src/libuemf/uemf.c b/src/libuemf/uemf.c
index 3180c757c..afa116e75 100644
--- a/src/libuemf/uemf.c
+++ b/src/libuemf/uemf.c
@@ -1858,8 +1858,8 @@ U_LOGCOLORSPACEA logcolorspacea_set(
lcsa.lcsIntent = lcsIntent;
lcsa.lcsEndpoints = lcsEndpoints;
lcsa.lcsGammaRGB = lcsGammaRGB;
- memset(lcsa.lcsFilename,0,U_MAX_PATH); // zero out the Filename field
strncpy(lcsa.lcsFilename,lcsFilename,U_MAX_PATH);
+ lcsa.lcsFilename[U_MAX_PATH-1] = '\0';
return(lcsa);
}
@@ -1889,6 +1889,7 @@ U_LOGCOLORSPACEW logcolorspacew_set(
lcsa.lcsEndpoints = lcsEndpoints;
lcsa.lcsGammaRGB = lcsGammaRGB;
wchar16strncpypad(lcsa.lcsFilename,lcsFilename,U_MAX_PATH);
+ lcsa.lcsFilename[U_MAX_PATH-1] = '\0';
return(lcsa);
}
@@ -1983,6 +1984,7 @@ U_LOGFONT logfont_set(
lf.lfQuality = lfQuality;
lf.lfPitchAndFamily = lfPitchAndFamily;
wchar16strncpypad(lf.lfFaceName, lfFaceName, U_LF_FACESIZE); // pad this one as the intial structure was not set to zero
+ lf.lfFaceName[U_LF_FACESIZE-1] = '\0';
return(lf);
}
@@ -2006,7 +2008,9 @@ U_LOGFONT_PANOSE logfont_panose_set(
U_LOGFONT_PANOSE lfp;
memset(&lfp,0,sizeof(U_LOGFONT_PANOSE)); // all fields zero unless needed. Many should be ignored or must be 0.
wchar16strncpy(lfp.elfFullName, elfFullName, U_LF_FULLFACESIZE);
+ lfp.elfFullName[U_LF_FULLFACESIZE-1] = '\0';
wchar16strncpy(lfp.elfStyle, elfStyle, U_LF_FACESIZE);
+ lfp.elfStyle[U_LF_FACESIZE-1] = '\0';
lfp.elfLogFont = elfLogFont;
lfp.elfStyleSize = elfStyleSize;
lfp.elfPanose = elfPanose;
diff --git a/src/live_effects/lpe-bspline.cpp b/src/live_effects/lpe-bspline.cpp
index 0cae1dcb6..08ef7ca1b 100644
--- a/src/live_effects/lpe-bspline.cpp
+++ b/src/live_effects/lpe-bspline.cpp
@@ -18,8 +18,8 @@ namespace LivePathEffect {
const double HANDLE_CUBIC_GAP = 0.001;
const double NO_POWER = 0.0;
-const double DEFAULT_START_POWER = 0.3334;
-const double DEFAULT_END_POWER = 0.6667;
+const double DEFAULT_START_POWER = 0.333334;
+const double DEFAULT_END_POWER = 0.666667;
Geom::PathVector hp;
void sp_bspline_drawHandle(Geom::Point p, double helper_size);
@@ -27,17 +27,19 @@ LPEBSpline::LPEBSpline(LivePathEffectObject *lpeobject)
: Effect(lpeobject),
steps(_("Steps with CTRL:"), _("Change number of steps with CTRL pressed"), "steps", &wr, this, 2),
helper_size(_("Helper size:"), _("Helper size"), "helper_size", &wr, this, 0),
- ignore_cusp(_("Ignore cusp nodes"), _("Change ignoring cusp nodes"), "ignore_cusp", &wr, this, true),
+ apply_cusp(_("Apply on cusp nodes"), _("Apply on cusp nodes"), "apply_cusp", &wr, this, true),
+ apply_non_cusp(_("Apply on non cusp nodes"), _("Apply on non cusp nodes"), "apply_non_cusp", &wr, this, true),
only_selected(_("Change only selected nodes"), _("Change only selected nodes"), "only_selected", &wr, this, false),
- weight(_("Change weight:"), _("Change weight of the effect"), "weight", &wr, this, DEFAULT_START_POWER)
+ weight(_("Change weight %:"), _("Change weight percent of the effect"), "weight", &wr, this, DEFAULT_START_POWER * 100)
{
registerParameter(&weight);
registerParameter(&steps);
registerParameter(&helper_size);
- registerParameter(&ignore_cusp);
+ registerParameter(&apply_cusp);
+ registerParameter(&apply_non_cusp);
registerParameter(&only_selected);
- weight.param_set_range(NO_POWER, 1);
+ weight.param_set_range(NO_POWER, 100.0);
weight.param_set_increments(0.1, 0.1);
weight.param_set_digits(4);
@@ -111,15 +113,10 @@ Gtk::Widget *LPEBSpline::newWidget()
Gtk::HBox * hbox_weight_steps = dynamic_cast<Gtk::HBox *>(widg);
std::vector< Gtk::Widget* > childList = hbox_weight_steps->get_children();
Gtk::Entry* entry_widget = dynamic_cast<Gtk::Entry *>(childList[1]);
- entry_widget->set_width_chars(6);
+ entry_widget->set_width_chars(9);
}
}
- if (param->param_key == "only_selected") {
- Gtk::CheckButton *widg_registered =
- Gtk::manage(dynamic_cast<Gtk::CheckButton *>(widg));
- widg = dynamic_cast<Gtk::Widget *>(widg_registered);
- }
- if (param->param_key == "ignore_cusp") {
+ if (param->param_key == "only_selected" || param->param_key == "apply_cusp" || param->param_key == "apply_non_cusp") {
Gtk::CheckButton *widg_registered =
Gtk::manage(dynamic_cast<Gtk::CheckButton *>(widg));
widg = dynamic_cast<Gtk::Widget *>(widg_registered);
@@ -161,7 +158,7 @@ void LPEBSpline::changeWeight(double weight_ammount)
SPPath *path = dynamic_cast<SPPath *>(sp_lpe_item);
if(path) {
SPCurve *curve = path->get_curve_for_edit();
- doBSplineFromWidget(curve, weight_ammount);
+ doBSplineFromWidget(curve, weight_ammount/100.0);
gchar *str = sp_svg_write_path(curve->get_pathvector());
path->getRepr()->setAttribute("inkscape:original-d", str);
}
@@ -366,7 +363,10 @@ void LPEBSpline::doBSplineFromWidget(SPCurve *curve, double weight_ammount)
point_at3 = in->first_segment()->finalPoint();
sbasis_in = in->first_segment()->toSBasis();
if (cubic) {
- if (!ignore_cusp || !Geom::are_near((*cubic)[1], point_at0)) {
+ if ((apply_cusp && apply_non_cusp) ||
+ (apply_cusp && Geom::are_near((*cubic)[1], point_at0)) ||
+ (apply_non_cusp && !Geom::are_near((*cubic)[1], point_at0)))
+ {
if (isNodePointSelected(point_at0) || !only_selected) {
point_at1 = sbasis_in.valueAt(weight_ammount);
if (weight_ammount != NO_POWER) {
@@ -377,9 +377,12 @@ void LPEBSpline::doBSplineFromWidget(SPCurve *curve, double weight_ammount)
point_at1 = (*cubic)[1];
}
} else {
- point_at1 = in->first_segment()->initialPoint();
+ point_at1 = (*cubic)[1];
}
- if (!ignore_cusp || !Geom::are_near((*cubic)[2], point_at3)) {
+ if ((apply_cusp && apply_non_cusp) ||
+ (apply_cusp && Geom::are_near((*cubic)[2], point_at3)) ||
+ (apply_non_cusp && !Geom::are_near((*cubic)[2], point_at3)))
+ {
if (isNodePointSelected(point_at3) || !only_selected) {
point_at2 = sbasis_in.valueAt(1 - weight_ammount);
if (weight_ammount != NO_POWER) {
@@ -390,10 +393,13 @@ void LPEBSpline::doBSplineFromWidget(SPCurve *curve, double weight_ammount)
point_at2 = (*cubic)[2];
}
} else {
- point_at2 = in->first_segment()->finalPoint();
+ point_at2 = (*cubic)[2];
}
} else {
- if (!ignore_cusp && weight_ammount != NO_POWER) {
+ if ((apply_cusp && apply_non_cusp) ||
+ (apply_cusp && weight_ammount == NO_POWER) ||
+ (apply_non_cusp && weight_ammount != NO_POWER))
+ {
if (isNodePointSelected(point_at0) || !only_selected) {
point_at1 = sbasis_in.valueAt(weight_ammount);
point_at1 =
diff --git a/src/live_effects/lpe-bspline.h b/src/live_effects/lpe-bspline.h
index 033e85cf0..b9cd336a9 100644
--- a/src/live_effects/lpe-bspline.h
+++ b/src/live_effects/lpe-bspline.h
@@ -38,7 +38,8 @@ public:
private:
ScalarParam helper_size;
- BoolParam ignore_cusp;
+ BoolParam apply_cusp;
+ BoolParam apply_non_cusp;
BoolParam only_selected;
ScalarParam weight;
diff --git a/src/live_effects/lpe-powerstroke.cpp b/src/live_effects/lpe-powerstroke.cpp
index f90d67d4e..03102a84a 100644
--- a/src/live_effects/lpe-powerstroke.cpp
+++ b/src/live_effects/lpe-powerstroke.cpp
@@ -102,12 +102,15 @@ static Circle touching_circle( D2<SBasis> const &curve, double t, double tol=0.0
{
//Piecewise<SBasis> k = curvature(curve, tol);
D2<SBasis> dM=derivative(curve);
- if ( are_near(L2sq(dM(t)),0.) ) {
+ if ( are_near(L2sq(dM(t)),0.) && (dM[0].size() > 1) && (dM[1].size() > 1) ) {
dM=derivative(dM);
}
- if ( are_near(L2sq(dM(t)),0.) ) { // try second time
+ if ( are_near(L2sq(dM(t)),0.) && (dM[0].size() > 1) && (dM[1].size() > 1) ) { // try second time
dM=derivative(dM);
}
+ if ( are_near(L2sq(dM(t)),0.) && (dM[0].size() > 1) && (dM[1].size() > 1) ) { // admit defeat
+ return Geom::Circle(Geom::Point(0., 0.), 0.);
+ }
Piecewise<D2<SBasis> > unitv = unitVector(dM,tol);
Piecewise<SBasis> dMlength = dot(Piecewise<D2<SBasis> >(dM),unitv);
Piecewise<SBasis> k = cross(derivative(unitv),unitv);
diff --git a/src/live_effects/lpe-transform_2pts.cpp b/src/live_effects/lpe-transform_2pts.cpp
index b70b68968..79ffd74de 100644
--- a/src/live_effects/lpe-transform_2pts.cpp
+++ b/src/live_effects/lpe-transform_2pts.cpp
@@ -18,6 +18,7 @@
#include <2geom/pathvector.h>
#include "sp-path.h"
#include "ui/icon-names.h"
+#include "svg/svg.h"
#include <glibmm/i18n.h>
@@ -26,25 +27,39 @@ namespace LivePathEffect {
LPETransform2Pts::LPETransform2Pts(LivePathEffectObject *lpeobject) :
Effect(lpeobject),
+ elastic(_("Elastic"), _("Elastic transform mode"), "elastic", &wr, this, false,"", INKSCAPE_ICON("on"), INKSCAPE_ICON("off")),
from_original_width(_("From original width"), _("From original width"), "from_original_width", &wr, this, false,"", INKSCAPE_ICON("on"), INKSCAPE_ICON("off")),
+ lock_lenght(_("Lock lenght"), _("Lock lenght to current distance"), "lock_lenght", &wr, this, false,"", INKSCAPE_ICON("on"), INKSCAPE_ICON("off")),
+ lock_angle(_("Lock angle"), _("Lock angle"), "lock_angle", &wr, this, false,"", INKSCAPE_ICON("on"), INKSCAPE_ICON("off")),
start(_("Start"), _("Start point"), "start", &wr, this, "Start point"),
end(_("End"), _("End point"), "end", &wr, this, "End point"),
first_knot(_("First Knot"), _("First Knot"), "first_knot", &wr, this, 1),
last_knot(_("Last Knot"), _("Last Knot"), "last_knot", &wr, this, 1),
+ helper_size(_("Helper size:"), _("Rotation helper size"), "helper_size", &wr, this, 3),
from_original_width_toggler(false),
point_a(Geom::Point()),
point_b(Geom::Point()),
pathvector(),
- append_path(false)
+ append_path(false),
+ previous_angle(Geom::deg_to_rad(0)),
+ previous_start(Geom::Point()),
+ previous_lenght(-1)
{
registerParameter(&start);
registerParameter(&end);
registerParameter(&first_knot);
registerParameter(&last_knot);
+ registerParameter(&helper_size);
+ registerParameter(&elastic);
registerParameter(&from_original_width);
+ registerParameter(&lock_lenght);
+ registerParameter(&lock_angle);
first_knot.param_make_integer(true);
last_knot.param_make_integer(true);
+ helper_size.param_set_range(0, 999);
+ helper_size.param_set_increments(1, 1);
+ helper_size.param_set_digits(0);
}
LPETransform2Pts::~LPETransform2Pts()
@@ -67,12 +82,16 @@ LPETransform2Pts::doOnApply(SPLPEItem const* lpeitem)
if(!pathvector.empty()) {
point_a = pathvector.initialPoint();
point_b = pathvector.finalPoint();
- if(are_near(point_a,point_b)){
+ if(are_near(point_a,point_b)) {
point_b = pathvector.back().finalCurve().initialPoint();
}
size_t nnodes = nodeCount(pathvector);
last_knot.param_set_value(nnodes);
}
+
+ previous_lenght = Geom::distance(point_a,point_b);
+ Geom::Ray transformed(point_a,point_b);
+ previous_angle = transformed.angle();
start.param_update_default(point_a);
start.param_set_default();
end.param_update_default(point_b);
@@ -101,7 +120,6 @@ LPETransform2Pts::doBeforeEffect (SPLPEItem const* lpeitem)
point_a = pointAtNodeIndex(pathvector,(size_t)first_knot-1);
point_b = pointAtNodeIndex(pathvector,(size_t)last_knot-1);
size_t nnodes = nodeCount(pathvector);
- std::cout << nnodes << "nnodes\n";
first_knot.param_set_range(1, last_knot-1);
last_knot.param_set_range(first_knot+1, nnodes);
from_original_width.param_setValue(false);
@@ -113,6 +131,24 @@ LPETransform2Pts::doBeforeEffect (SPLPEItem const* lpeitem)
from_original_width.param_setValue(true);
append_path = false;
}
+ if(lock_lenght && !lock_angle && previous_lenght != -1) {
+ Geom::Ray transformed((Geom::Point)start,(Geom::Point)end);
+ if(previous_start == start || previous_angle == Geom::deg_to_rad(0)) {
+ previous_angle = transformed.angle();
+ }
+ } else if(lock_angle && !lock_lenght && previous_angle != Geom::deg_to_rad(0)) {
+ if(previous_start == start){
+ previous_lenght = Geom::distance((Geom::Point)start, (Geom::Point)end);
+ }
+ }
+ if(lock_lenght || lock_angle ) {
+ Geom::Point end_point = Geom::Point::polar(previous_angle, previous_lenght) + (Geom::Point)start;
+ end.param_setValue(end_point);
+ }
+ Geom::Ray transformed((Geom::Point)start,(Geom::Point)end);
+ previous_angle = transformed.angle();
+ previous_lenght = Geom::distance((Geom::Point)start, (Geom::Point)end);
+ previous_start = start;
splpeitem->apply_to_clippath(splpeitem);
splpeitem->apply_to_mask(splpeitem);
}
@@ -125,7 +161,10 @@ LPETransform2Pts::updateIndex()
if (sp_path) {
pathvector = sp_path->get_original_curve()->get_pathvector();
}
- if(!pathvector.empty() && !from_original_width) {
+ if(pathvector.empty()) {
+ return;
+ }
+ if(!from_original_width) {
point_a = pointAtNodeIndex(pathvector,(size_t)first_knot-1);
point_b = pointAtNodeIndex(pathvector,(size_t)last_knot-1);
start.param_update_default(point_a);
@@ -155,7 +194,7 @@ LPETransform2Pts::pointAtNodeIndex(Geom::PathVector pathvector, size_t index) co
size_t n = 0;
for (Geom::PathVector::iterator pv_it = pathvector.begin(); pv_it != pathvector.end(); ++pv_it) {
for (Geom::Path::iterator curve_it = pv_it->begin(); curve_it != pv_it->end_closed(); ++curve_it) {
- if(index == n){
+ if(index == n) {
return curve_it->initialPoint();
}
n++;
@@ -170,7 +209,7 @@ LPETransform2Pts::pathAtNodeIndex(Geom::PathVector pathvector, size_t index) con
size_t n = 0;
for (Geom::PathVector::iterator pv_it = pathvector.begin(); pv_it != pathvector.end(); ++pv_it) {
for (Geom::Path::iterator curve_it = pv_it->begin(); curve_it != pv_it->end_closed(); ++curve_it) {
- if(index == n){
+ if(index == n) {
return *pv_it;
}
n++;
@@ -197,6 +236,9 @@ LPETransform2Pts::reset()
first_knot.param_set_value(1);
last_knot.param_set_value(2);
}
+ Geom::Ray transformed(point_a, point_b);
+ previous_angle = transformed.angle();
+ previous_lenght = Geom::distance(point_a, point_b);
start.param_update_default(point_a);
end.param_update_default(point_b);
start.param_set_default();
@@ -214,7 +256,9 @@ Gtk::Widget *LPETransform2Pts::newWidget()
vbox->set_spacing(6);
std::vector<Parameter *>::iterator it = param_vector.begin();
- Gtk::HBox * button = Gtk::manage(new Gtk::HBox(true,0));
+ Gtk::HBox * button1 = Gtk::manage(new Gtk::HBox(true,0));
+ Gtk::HBox * button2 = Gtk::manage(new Gtk::HBox(true,0));
+ Gtk::HBox * button3 = Gtk::manage(new Gtk::HBox(true,0));
while (it != param_vector.end()) {
if ((*it)->widget_is_visible) {
Parameter *param = *it;
@@ -237,10 +281,21 @@ Gtk::Widget *LPETransform2Pts::newWidget()
widg->set_has_tooltip(false);
}
}
- } else if (param->param_key == "from_original_width") {
+ } else if (param->param_key == "from_original_width" || param->param_key == "elastic") {
+ Glib::ustring * tip = param->param_getTooltip();
+ if (widg) {
+ button1->pack_start(*widg, true, true, 2);
+ if (tip) {
+ widg->set_tooltip_text(*tip);
+ } else {
+ widg->set_tooltip_text("");
+ widg->set_has_tooltip(false);
+ }
+ }
+ } else if (param->param_key == "lock_angle" || param->param_key == "lock_lenght") {
Glib::ustring * tip = param->param_getTooltip();
if (widg) {
- button->pack_start(*widg, true, true, 2);
+ button2->pack_start(*widg, true, true, 2);
if (tip) {
widg->set_tooltip_text(*tip);
} else {
@@ -263,8 +318,10 @@ Gtk::Widget *LPETransform2Pts::newWidget()
}
Gtk::Button *reset = Gtk::manage(new Gtk::Button(Glib::ustring(_("Reset"))));
reset->signal_clicked().connect(sigc::mem_fun(*this, &LPETransform2Pts::reset));
- button->pack_start(*reset, true, true, 2);
- vbox->pack_start(*button, true, true, 2);
+ button3->pack_start(*reset, true, true, 2);
+ vbox->pack_start(*button1, true, true, 2);
+ vbox->pack_start(*button2, true, true, 2);
+ vbox->pack_start(*button3, true, true, 2);
return dynamic_cast<Gtk::Widget *>(vbox);
}
@@ -280,10 +337,23 @@ LPETransform2Pts::doEffect_pwd2 (Geom::Piecewise<Geom::D2<Geom::SBasis> > const
helper.start(point_a);
helper.appendNew<Geom::LineSegment>(point_b);
Geom::Affine m;
- m *= Geom::Scale(sca);
- m *= Geom::Rotate(rot);
- helper *= m;
- m *= Geom::Translate((Geom::Point)start - helper.initialPoint());
+ if(elastic) {
+ Geom::Angle original_angle = original.angle();
+ m *= Geom::Rotate(-original_angle);
+ if(sca > 1){
+ m *= Geom::Scale(sca, 1.0);
+ } else {
+ m *= Geom::Scale(sca, 1.0-((1.0-sca)/2.0));
+ }
+ m *= Geom::Rotate(transformed.angle());
+ helper *= m;
+ m *= Geom::Translate((Geom::Point)start - helper.initialPoint());
+ } else {
+ m *= Geom::Scale(sca);
+ m *= Geom::Rotate(rot);
+ helper *= m;
+ m *= Geom::Translate((Geom::Point)start - helper.initialPoint());
+ }
output.concat(pwd2_in * m);
return output;
@@ -299,6 +369,22 @@ LPETransform2Pts::addCanvasIndicators(SPLPEItem const */*lpeitem*/, std::vector<
hp.appendNew<Geom::LineSegment>((Geom::Point)end);
Geom::PathVector pathv;
pathv.push_back(hp);
+ double r = helper_size*.1;
+ if(lock_lenght || lock_angle ) {
+ char const * svgd;
+ svgd = "M -5.39,8.78 -9.13,5.29 -10.38,10.28 Z M -7.22,7.07 -3.43,3.37 m -1.95,-12.16 -3.74,3.5 -1.26,-5 z m -1.83,1.71 3.78,3.7 M 5.24,8.78 8.98,5.29 10.24,10.28 Z M 7.07,7.07 3.29,3.37 M 5.24,-8.78 l 3.74,3.5 1.26,-5 z M 7.07,-7.07 3.29,-3.37";
+ PathVector pathv_move = sp_svg_read_pathv(svgd);
+ pathv_move *= Affine(r,0,0,r,0,0) * Translate(Geom::Point(start));
+ hp_vec.push_back(pathv_move);
+ }
+ if(!lock_angle && lock_lenght) {
+ char const * svgd;
+ svgd = "m 7.07,7.07 c -3.9,3.91 -10.24,3.91 -14.14,0 -3.91,-3.9 -3.91,-10.24 0,-14.14 3.9,-3.91 10.24,-3.91 14.14,0 l -2.83,-4.24 -0.7,2.12";
+ PathVector pathv_turn = sp_svg_read_pathv(svgd);
+ pathv_turn *= Geom::Rotate(previous_angle);
+ pathv_turn *= Affine(r,0,0,r,0,0) * Translate(Geom::Point(end));
+ hp_vec.push_back(pathv_turn);
+ }
hp_vec.push_back(pathv);
}
diff --git a/src/live_effects/lpe-transform_2pts.h b/src/live_effects/lpe-transform_2pts.h
index 855780a7a..947243c82 100644
--- a/src/live_effects/lpe-transform_2pts.h
+++ b/src/live_effects/lpe-transform_2pts.h
@@ -38,9 +38,9 @@ public:
void updateIndex();
size_t nodeCount(Geom::PathVector pathvector) const;
-
+
Geom::Point pointAtNodeIndex(Geom::PathVector pathvector, size_t index) const;
-
+
Geom::Path pathAtNodeIndex(Geom::PathVector pathvector, size_t index) const;
void reset();
@@ -49,16 +49,23 @@ protected:
virtual void addCanvasIndicators(SPLPEItem const *lpeitem, std::vector<Geom::PathVector> &hp_vec);
private:
+ ToggleButtonParam elastic;
ToggleButtonParam from_original_width;
+ ToggleButtonParam lock_lenght;
+ ToggleButtonParam lock_angle;
PointParam start;
PointParam end;
ScalarParam first_knot;
ScalarParam last_knot;
+ ScalarParam helper_size;
bool from_original_width_toggler;
Geom::Point point_a;
Geom::Point point_b;
Geom::PathVector pathvector;
bool append_path;
+ Geom::Angle previous_angle;
+ Geom::Point previous_start;
+ double previous_lenght;
LPETransform2Pts(const LPETransform2Pts&);
LPETransform2Pts& operator=(const LPETransform2Pts&);
};
diff --git a/src/live_effects/parameter/togglebutton.cpp b/src/live_effects/parameter/togglebutton.cpp
index c5da8b858..47a8b5615 100644
--- a/src/live_effects/parameter/togglebutton.cpp
+++ b/src/live_effects/parameter/togglebutton.cpp
@@ -119,6 +119,10 @@ ToggleButtonParam::param_newWidget()
void
ToggleButtonParam::refresh_button()
{
+ if (!_toggled_connection.connected()) {
+ return;
+ }
+
if(!checkwdg){
return;
}
diff --git a/src/ui/dialog/grid-arrange-tab.cpp b/src/ui/dialog/grid-arrange-tab.cpp
index ccd23a572..086cbe45f 100644
--- a/src/ui/dialog/grid-arrange-tab.cpp
+++ b/src/ui/dialog/grid-arrange-tab.cpp
@@ -75,16 +75,10 @@ static bool sp_compare_x_position(SPItem *first, SPItem *second)
a_in_b_vert = false;
}
- if (!a_in_b_vert) {
- return true;
- }
- if (a_in_b_vert && a->min()[X] > b->min()[X]) {
- return false;
+ if (!a_in_b_vert) { // a and b are not in the same row
+ return (a->min()[Y] < b->min()[Y]);
}
- if (a_in_b_vert && a->min()[X] < b->min()[X]) {
- return true;
- }
- return false;
+ return (a->min()[X] < b->min()[X]);
}
/*
diff --git a/src/ui/tool/node.cpp b/src/ui/tool/node.cpp
index 55d801c46..06e49dc7f 100644
--- a/src/ui/tool/node.cpp
+++ b/src/ui/tool/node.cpp
@@ -61,7 +61,7 @@ namespace Inkscape {
namespace UI {
const double NO_POWER = 0.0;
-const double DEFAULT_START_POWER = 0.3334;
+const double DEFAULT_START_POWER = 0.333334;
ControlPoint::ColorSet Node::node_colors = {
{0xbfbfbf00, 0x000000ff}, // normal fill, stroke
diff --git a/src/ui/tool/path-manipulator.cpp b/src/ui/tool/path-manipulator.cpp
index 982002159..284932bb8 100644
--- a/src/ui/tool/path-manipulator.cpp
+++ b/src/ui/tool/path-manipulator.cpp
@@ -58,7 +58,7 @@ enum PathChange {
} // anonymous namespace
const double HANDLE_CUBIC_GAP = 0.001;
const double NO_POWER = 0.0;
-const double DEFAULT_START_POWER = 0.3334;
+const double DEFAULT_START_POWER = 0.333334;
/**
diff --git a/src/ui/widget/color-entry.h b/src/ui/widget/color-entry.h
index edabe1980..08537f26d 100644
--- a/src/ui/widget/color-entry.h
+++ b/src/ui/widget/color-entry.h
@@ -9,7 +9,7 @@
*/
#ifndef SEEN_COLOR_ENTRY_H
-#define SEEN_COLOR_ENTRY_H_
+#define SEEN_COLOR_ENTRY_H
#include <gtkmm/entry.h>
#include "ui/selected-color.h"