summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Valavanis <valavanisalex@gmail.com>2019-01-01 15:50:45 +0000
committerAlexander Valavanis <valavanisalex@gmail.com>2019-01-01 15:50:45 +0000
commitf1d64ae4334968100cb24b4bc17c4fd0e6a9729c (patch)
treee326b23234d6f6041628fd81f9a2b0316da90eb6
parentMove Preview to Inkscape namespace (diff)
parentMerge remote-tracking branch 'origin/attribute-lookup-map' (diff)
downloadinkscape-f1d64ae4334968100cb24b4bc17c4fd0e6a9729c.tar.gz
inkscape-f1d64ae4334968100cb24b4bc17c4fd0e6a9729c.zip
Merge branch 'master' of gitlab.com:inkscape/inkscape
-rw-r--r--po/de.po188
-rw-r--r--src/attributes.cpp34
-rw-r--r--src/attributes.h7
-rw-r--r--src/display/sp-canvas-item.h10
-rw-r--r--src/display/sp-canvas.cpp83
-rw-r--r--src/style.cpp15
6 files changed, 185 insertions, 152 deletions
diff --git a/po/de.po b/po/de.po
index c426649cd..2db0e9840 100644
--- a/po/de.po
+++ b/po/de.po
@@ -293,7 +293,6 @@ msgid "Sharpen edges and boundaries within the object, force=0.3"
msgstr "Kanten und Grenzen schärfen, Stärke = 0,3"
#: ../share/filters/filters.svg.h:74
-#, fuzzy
msgid "Oil Painting"
msgstr "Ölgemälde"
@@ -1541,7 +1540,6 @@ msgid "Pixellize"
msgstr "Verpixeln"
#: ../share/filters/filters.svg.h:591
-#, fuzzy
msgid "Pixel Tools"
msgstr "Pixelwerkzeug"
@@ -4406,17 +4404,18 @@ msgstr "Leer"
#: ../share/templates/templates.h:1
msgid "A4 leaflet 3-fold Roll"
-msgstr ""
+msgstr "A4 Broschüre 3-fach gefaltet"
#: ../share/templates/templates.h:1
msgid ""
"An A4 page 3-fold Roll template with guides, print marks, and marked leaflet "
"pages. Inner and outer page contents go into their respective Layers."
-msgstr ""
+msgstr "Eine A4-Broschüre, 3-fach gefaltet, mit Hilfslinien, Druckmarken und "
+"Broschürenseiten. Der Inhalt für Innen- und Außenseite gehört in die jeweiligen Ebenen."
#: ../share/templates/templates.h:1
msgid "A4 leaflet 3-fold"
-msgstr ""
+msgstr "A4 Broschüre 3-fach gefaltet"
#: ../share/templates/templates.h:1
msgid "CD Label 120mmx120mm "
@@ -4442,7 +4441,7 @@ msgstr "Vorlage für LaTeX Beamer mit Hilfsgitter."
# The original appears to be a bit redundant, but I don't know enough about LaTex.
#: ../share/templates/templates.h:1
msgid "LaTex LaTeX latex grid beamer"
-msgstr "LaTex LaTeX latex Gitter Beamer"
+msgstr "LaTex Beamer Gitter"
#: ../share/templates/templates.h:1
msgid "Typography Canvas"
@@ -5051,9 +5050,8 @@ msgstr ""
"zu dieser Erweiterung haben."
#: ../src/extension/implementation/script.cpp:715
-#, fuzzy
msgid "The output from the extension could not be parsed."
-msgstr "Die Einstellungsdatei %s konnte nicht gelesen werden."
+msgstr "Die Ausgabe der Erweiterung konnte nicht gelesen werden."
#: ../src/extension/implementation/script.cpp:1043
msgid ""
@@ -5892,9 +5890,8 @@ msgstr "_Abbrechen"
#: ../src/extension/internal/vsd-input.cpp:156
#: ../src/extension/prefdialog.cpp:79 ../src/ui/dialog/guides.cpp:161
#: ../src/ui/dialog/pixelartdialog.cpp:304 ../src/ui/dialog/tracedialog.cpp:818
-#, fuzzy
msgid "_OK"
-msgstr "_K:"
+msgstr "_OK"
#. Fill in the template
#: ../src/extension/internal/cdr-input.cpp:227
@@ -8263,14 +8260,12 @@ msgid "PDF Input"
msgstr "PDF einlesen"
#: ../src/extension/internal/pdfinput/pdf-input.cpp:959
-#, fuzzy
msgid "Portable Document Format (*.pdf)"
-msgstr "Adobe Portable Document Format"
+msgstr "Portable Document Format (*.pdf)"
#: ../src/extension/internal/pdfinput/pdf-input.cpp:960
-#, fuzzy
msgid "Portable Document Format"
-msgstr "Adobe Portable Document Format"
+msgstr "Portable Document Format"
#: ../src/extension/internal/pdfinput/pdf-input.cpp:967
msgid "AI Input"
@@ -8303,12 +8298,11 @@ msgstr "SVG einlesen"
#: ../src/extension/internal/svg.cpp:637
#, fuzzy
msgid "SVG Image Import Type:"
-msgstr "Art des Bildimports:"
+msgstr "Art des SVG-Bildimports:"
#: ../src/extension/internal/svg.cpp:638
-#, fuzzy
msgid "Include SVG image as editable object(s) in the current file"
-msgstr "Alle Objekte in der aktuellen Ebene einblenden"
+msgstr "SVG-Bild als bearbeitbeare Objekte in aktueller Datei einbinden"
#: ../src/extension/internal/svg.cpp:639
msgid "Embed the SVG file in a image tag (not editable in this document)"
@@ -8490,46 +8484,52 @@ msgstr ""
"als SVG-Dokument geöffnet."
#: ../src/file-update.cpp:334
-#, fuzzy
msgid "Convert legacy Inkscape file"
-msgstr "Umwandeln in invertierte Abrundung"
+msgstr "Datei aus alter Inkscape-Version umwandeln"
#: ../src/file-update.cpp:340
msgid ""
"was created in an older version of Inkscape (90 DPI) and we need to make it "
"compatible with newer versions (96 DPI). Tell us about this file:\n"
msgstr ""
+"wurde in einer alten Version von Inkscape (90 DPI) erstellt\n und "
+"muss nun mit neueren Versionen kompatibel (96 DPI) gemacht werden. \n"
+"Bitte wählen Sie aus:\n"
+
#: ../src/file-update.cpp:348
msgid ""
"This file contains digital artwork for screen display. <b>(Choose if "
"unsure.)</b>"
-msgstr ""
+msgstr "Diese Datei ist für die Anzeige am Bildschirm gedacht, z.B. digitale Kunst. <b>(Im Zweifelsfall auswählen.)</b>"
#: ../src/file-update.cpp:351
msgid "This file is intended for physical output, such as paper or 3D prints."
-msgstr ""
+msgstr "Diese Datei ist für die physikalische Ausgabe, z.B. auf Papier oder als 3D-Druck gedacht."
#: ../src/file-update.cpp:353
msgid ""
"The appearance of elements such as clips, masks, filters, and clones\n"
"is most important. <b>(Choose if unsure.)</b>"
msgstr ""
+"Das Aussehen von Elementen wie Ausschneidepfaden, Masken, Filtern, Klonen \n"
+"ist am wichtigsten <b>(Im Zweifelsfall auswählen.)</b>"
#: ../src/file-update.cpp:357
msgid ""
"The accuracy of the physical unit size and position values of objects\n"
"in the file is most important. (Experimental.)"
msgstr ""
+"Die Genauigkeit der physikalischen Abmessungen und Positionen der Objekte\n"
+"in der Datei ist am wichtigsten. (Experimentell.)"
#: ../src/file-update.cpp:359
-#, fuzzy
msgid "Create a backup file in same directory."
-msgstr "Kann Profilverzeichnis %s nicht erstellen."
+msgstr "Sicherungsdatei im selben Verzeichnis erstellen"
#: ../src/file-update.cpp:360
msgid "More details..."
-msgstr ""
+msgstr "Mehr Details..."
#: ../src/file-update.cpp:363
msgid ""
@@ -8554,18 +8554,34 @@ msgid ""
"More information about this change are available in the <a href='https://"
"inkscape.org/en/learn/faq#dpi_change'>Inkscape FAQ</a></small>"
msgstr ""
+"<small>Wir haben Inkscape aktualisiert, um besser mit Browsern kompatibel \n"
+" zu sein. Diese verwenden den CSS-Standard von 96 DPI, vorher nutzte Inkscape \n"
+" 90 DPI. Digitale Kunst für die Anzeige am Bildschirm wird ohne Skalierung \n"
+"nach 96 DPI gewandelt und sollte nicht betroffen sein.\n"
+"Mit 90 DPI für eine bestimmte physikalische Größe gezeichnete Kunst wird \n"
+" zu klein sein, wenn sie ohne Skalierung nach 96 DPI gewandelt wird. \n"
+" Zum Skalieren gibt es zwei Möglichkeiten:\n\n"
+"<b>Ganzes Dokument skalieren:</b> Am wenigsten fehleranfällig."
+" Erhält das Aussehen von Kunst, \n"
+" einschließlich Filtern, der Position von Masken usw.\n"
+" Die Skalierung relativ zur Dokumentengröße kann unter Umständen ungenau sein.\n\n"
+"<b>Einzelne Elemente skalieren:</b> Diese Methode ist weniger zuverlässig und \n"
+" kann zu verändertem Aussehen führen. Sie ist jedoch besser für physikalische \n"
+"Ausgabe, die auf präzise Abmessungen und Positionen angewiesen ist (z.B. 3D-Druck).\n"
+"\n"
+"Weitere Informationen über diese Änderung finden Sie in der <a href='https://"
+"inkscape.org/de/lernen/haufig-gestellte-fragen/#dpi_change'>Inkscape FAQ</a></small>"
#: ../src/file-update.cpp:407
-#, fuzzy
msgid "OK"
-msgstr "O"
+msgstr "OK"
#. Look for SPNamedView and SPDefs loop
#. desktop->getDocument()->ensureUpToDate(); // Does not update box3d!
#: ../src/file-update.cpp:634
#, fuzzy
msgid "Update Document"
-msgstr "Das Dokument speichern"
+msgstr "Dokument aktualisieren"
#: ../src/file.cpp:168
msgid "default.svg"
@@ -8653,6 +8669,8 @@ msgid ""
"File could not be saved:\n"
"No object with ID '%s' found."
msgstr ""
+"Datei konnte nicht gespeichert werden: \n"
+"Kein Objekt mit ID '%s' gefunden."
#: ../src/file.cpp:681
#, c-format
@@ -8662,6 +8680,10 @@ msgid ""
"The following additional information was returned by the output extension:\n"
"'%s'"
msgstr ""
+"Datei %s konnte nicht gespeichert werden: \n"
+"\n"
+"Die folgende Information wurde von der Ausgabe-Erweiterung zurückgegeben:\n"
+"'%s'"
#: ../src/file.cpp:716 ../src/file.cpp:718
msgid "Document saved."
@@ -9057,17 +9079,17 @@ msgstr "Erweiterungsverzeichnis ausgeben und beenden"
#: ../src/inkscape-application.cpp:85
msgid "Print: List verbs."
-msgstr ""
+msgstr "Liste der Verben ausgeben."
#. Interface
#: ../src/inkscape-application.cpp:88
msgid "GUI: With graphical interface."
-msgstr ""
+msgstr "Mit graphischer Oberfläche."
#: ../src/inkscape-application.cpp:89
#, fuzzy
msgid "GUI: Console only."
-msgstr "nur Symbole"
+msgstr "Nur Konsole, ohne graphische Oberfläche."
#. Open/Import
#: ../src/inkscape-application.cpp:92
@@ -9077,7 +9099,7 @@ msgstr "Wählen Sie die zu importierende Datei"
#: ../src/inkscape-application.cpp:92
msgid "PAGE"
-msgstr ""
+msgstr "SEITE"
#: ../src/inkscape-application.cpp:93
msgid ""
@@ -9091,9 +9113,8 @@ msgstr ""
#. Query - Geometry
#: ../src/inkscape-application.cpp:97
-#, fuzzy
msgid "Query: ID(s) of object(s) to be queried."
-msgstr "ID des Objektes, dessen Abmessungen abgefragt werden"
+msgstr "IDs der Objekte, deren Abmessungen abgefragt werden"
#: ../src/inkscape-application.cpp:97 ../src/inkscape-application.cpp:106
msgid "OBJECT-ID[,OBJECT-ID]*"
@@ -9111,28 +9132,24 @@ msgstr ""
"Objektes"
#: ../src/inkscape-application.cpp:100
-#, fuzzy
msgid "Query: Y coordinate of drawing or object (if specified by --query-id)."
msgstr ""
"Abfragen der Y-Koordinate der Zeichnung oder des mit --query-id angegebenen "
"Objektes"
#: ../src/inkscape-application.cpp:101
-#, fuzzy
msgid "Query: Width of drawing or object (if specified by --query-id)."
msgstr ""
"Abfragen der Breite der Zeichnung oder des mit --query-id angegebenen "
"Objektes"
#: ../src/inkscape-application.cpp:102
-#, fuzzy
msgid "Query: Heightof drawing or object (if specified by --query-id)."
msgstr ""
"Abfragen der Höhe der Zeichnung oder des mit --query-id angegebenen Objektes"
#. Processing
#: ../src/inkscape-application.cpp:105
-#, fuzzy
msgid ""
"Process: Remove unused definitions from the <defs> section(s) of document."
msgstr "Unbenutzte Elemente aus den &lt;defs&gt; des Dokuments entfernen"
@@ -9151,22 +9168,19 @@ msgid "VERB-ID[;VERB-ID]*"
msgstr ""
#: ../src/inkscape-application.cpp:108
-#, fuzzy
msgid "Process: Start Inkscape in interactive shell mode."
msgstr "Inkscape in interaktivem Konsolenmodus starten."
#. Export - File and File Type
#: ../src/inkscape-application.cpp:111
msgid "Export: File type:[svg,png,ps,psf,tex,emf,wmf,xaml]"
-msgstr ""
+msgstr "Export: Dateityp:[svg,png,ps,psf,tex,emf,wmf,xaml]"
#: ../src/inkscape-application.cpp:112
-#, fuzzy
msgid "Export: File name"
msgstr "Dateiname"
#: ../src/inkscape-application.cpp:112
-#, fuzzy
msgid "EXPORT-FILENAME"
msgstr "DATEINAME"
@@ -9187,13 +9201,11 @@ msgstr "X0:Y0:X1:Y1"
#. BSP
#: ../src/inkscape-application.cpp:118
-#, fuzzy
msgid "Export: Area to export is drawing (not page)."
msgstr "Exportierter Bereich ist die gesamte Zeichnung (nicht die Seite)"
#. BSP
#: ../src/inkscape-application.cpp:119
-#, fuzzy
msgid "Export: Area to export is page."
msgstr "Exportierter Bereich ist die gesamte Seite"
@@ -9215,7 +9227,6 @@ msgstr ""
#. Bxx
#: ../src/inkscape-application.cpp:122
-#, fuzzy
msgid "Export: Bitmap width in pixels (overrides --export-dpi)."
msgstr "Breite der erzeugten Rastergrafik in Pixeln (überschreibt Export-dpi)"
@@ -9225,7 +9236,6 @@ msgstr "BREITE"
#. Bxx
#: ../src/inkscape-application.cpp:123
-#, fuzzy
msgid "Export: Bitmap height in pixels (overrides --export-dpi)."
msgstr "Breite der erzeugten Rastergrafik in Pixeln (überschreibt Export-dpi)"
@@ -9237,9 +9247,8 @@ msgstr "HÖHE"
#. Bxx
#. Export - Options
#: ../src/inkscape-application.cpp:126
-#, fuzzy
msgid "Export: ID(s) of object(s) to export."
-msgstr "ID des zu exportierenden Objektes"
+msgstr "IDs der zu exportierenden Objekte"
#: ../src/inkscape-application.cpp:126
msgid "OBJECT-ID[;OBJECT-ID]*"
@@ -9247,7 +9256,6 @@ msgstr ""
#. BSP
#: ../src/inkscape-application.cpp:127
-#, fuzzy
msgid "Export: Hide all objects except object with ID selected by export-id."
msgstr "Verstecke alle Objekte außer den gerade gewählten im exportierten Bild"
@@ -9258,7 +9266,6 @@ msgstr ""
#. xSx
#: ../src/inkscape-application.cpp:129
-#, fuzzy
msgid ""
"Export: Resolution for rasterization bitmaps and filters (default is 96)."
msgstr ""
@@ -9272,47 +9279,42 @@ msgstr "DPI"
#. BxP
#: ../src/inkscape-application.cpp:130
-#, fuzzy
msgid ""
"Export: Render objects without filters instead of rasterizing. (PS/EPS/PDF)"
msgstr "Objekte ohne Filter zeichnen, statt Rasterisierung (PS, EPS, PDF)"
#. xxP
#: ../src/inkscape-application.cpp:131
-#, fuzzy
msgid "Export: Convert text to paths. (PS/EPS/PDF/SVG)."
msgstr "Textelemente beim Export (PS, EPS, PDF, SVG) in Pfade umwandeln"
#. xxP
#: ../src/inkscape-application.cpp:132
msgid "Export: Postscript level (2 or 3). Default is 3."
-msgstr ""
+msgstr "Export: Postscript-Level (2 oder 3). Standard: 3."
#: ../src/inkscape-application.cpp:132
-#, fuzzy
msgid "PS-Level"
msgstr "PS-Level"
#. xxP
#: ../src/inkscape-application.cpp:133
msgid "Export: PDF level (1.4 or 1.5)"
-msgstr ""
+msgstr "Export: PDF-Version (1.4 oder 1.5)"
#: ../src/inkscape-application.cpp:133
-#, fuzzy
msgid "PDF-Level"
-msgstr "Ebene"
+msgstr "PDF-Version"
#. xxP
#: ../src/inkscape-application.cpp:134
msgid ""
"Export: Export text separately to LaTeX file (PS/EPS/PDF). Include via "
"\\input{file.tex}"
-msgstr ""
+msgstr "Export: Text in getrennte LaTeX-Datei exportieren (PS/EPS/PDF). Einbinden mittels \\input{file.tex}"
#. xxP
#: ../src/inkscape-application.cpp:135
-#, fuzzy
msgid ""
"Export: Use stored filename and DPI hints when exporting object selected by "
"--export-id."
@@ -9322,11 +9324,10 @@ msgstr ""
#. Bxx
#: ../src/inkscape-application.cpp:136
-#, fuzzy
msgid "Export: Background color for exported bitmaps (any SVG color string)."
msgstr ""
"Hintergrundfarbe der exportierten Rastergrafik (jede von SVG unterstützte "
-"Farbzeichenkette)"
+"Farbangabe)"
#: ../src/inkscape-application.cpp:136
msgid "COLOR"
@@ -9361,7 +9362,6 @@ msgid "D-Bus: Enter a listening loop for D-Bus messages in console mode."
msgstr "Warteschleife für D-Bus-Nachrichten im Konsolen-Modus eingeben"
#: ../src/inkscape-application.cpp:145
-#, fuzzy
msgid "D-Bus: Specify the D-Bus name (default is 'org.inkscape')."
msgstr ""
"D-Bus-Namen angeben, dessen Nachrichten angezeigt werden sollen (Vorgabe ist "
@@ -9428,13 +9428,12 @@ msgstr ""
#. Will automatically handle character conversions.
#. Note: OPTION_TYPE_FILENAME => std::string, OPTION_TYPE_STRING => Glib::ustring.
#: ../src/inkview-application.cpp:62
-#, fuzzy
msgid "Print: Inkview version."
-msgstr "Versionsnummer von Inkscape ausgeben"
+msgstr "Versionsnummer von Inkview ausgeben"
#: ../src/inkview-application.cpp:63
msgid "Launch in fullscreen mode"
-msgstr ""
+msgstr "In Vollbild öffnen"
#: ../src/inkview-application.cpp:64
#, fuzzy
@@ -9442,16 +9441,14 @@ msgid "Search folders recursively"
msgstr "Klonverbindung auf_trennen"
#: ../src/inkview-application.cpp:65
-#, fuzzy
msgid "Change image every NUMBER seconds"
-msgstr "Alle Rastergrafiken in der aktuellen Auswahl"
+msgstr "Bild alle ZAHL Sekunden ändern"
#: ../src/inkview-application.cpp:65 ../src/inkview-application.cpp:66
msgid "NUMBER"
-msgstr ""
+msgstr "ZAHL"
#: ../src/inkview-application.cpp:66
-#, fuzzy
msgid "Scale image by factor NUMBER"
msgstr "Saklierungsfaktor"
@@ -9493,7 +9490,7 @@ msgstr "<b>Drehen</b> des Füllmusters; <b>Strg</b> rastet Winkel ein"
#: ../src/knotholder.cpp:391 ../src/knotholder.cpp:393
#, fuzzy
msgid "<b>Resize</b> the filter effect region"
-msgstr "Breite des Filtereffekts"
+msgstr ""
#: ../src/libnrtype/FontFactory.cpp:664
msgid "Ignoring font without family that will crash Pango"
@@ -9644,7 +9641,7 @@ msgstr "Abrunden/Fasen"
#: ../src/live_effects/effect.cpp:139
#, fuzzy
msgid "Boolean operation"
-msgstr "Goldener Schnitt"
+msgstr ""
#: ../src/live_effects/effect.cpp:140
msgid "Embroidery stitch"
@@ -9653,12 +9650,12 @@ msgstr ""
#: ../src/live_effects/effect.cpp:141
#, fuzzy
msgid "Power clip"
-msgstr "Knoten in Linien"
+msgstr ""
#: ../src/live_effects/effect.cpp:142
#, fuzzy
msgid "Power mask"
-msgstr "Power Stroke (variable Konturbreite)"
+msgstr ""
#: ../src/live_effects/effect.cpp:143
#, fuzzy
@@ -9668,7 +9665,7 @@ msgstr "Ellipse durch 5 Punkte"
#: ../src/live_effects/effect.cpp:145
#, fuzzy
msgid "Dash Stroke"
-msgstr "Kontur"
+msgstr "Gestrichelte Kontur"
#: ../src/live_effects/effect.cpp:147
msgid "doEffect stack test"
@@ -9688,7 +9685,7 @@ msgstr "Kreis durch 3 Punkte"
#: ../src/live_effects/effect.cpp:151
msgid "Dynamic stroke"
-msgstr "Dynamischer Strich"
+msgstr "Dynamische Kontur"
#: ../src/live_effects/effect.cpp:152 ../share/extensions/extrude.inx.h:1
msgid "Extrude"
@@ -9754,7 +9751,7 @@ msgstr ""
#: ../src/live_effects/effect.cpp:828 ../src/live_effects/effect.cpp:905
#, fuzzy
msgid "<b>Default value:</b> "
-msgstr " <b>_Erzeugen</b> "
+msgstr "<b>Standardwert:</b> "
#: ../src/live_effects/effect.cpp:829 ../src/live_effects/effect.cpp:892
msgid "<b>Default value overridden:</b> "
@@ -9929,7 +9926,7 @@ msgstr "Differenz"
#: ../src/live_effects/lpe-bool.cpp:41
#, fuzzy
msgid "symmetric difference"
-msgstr "symmetrischer Knoten"
+msgstr "symmetrische Differenz"
#: ../src/live_effects/lpe-bool.cpp:42
#, fuzzy
@@ -9940,24 +9937,23 @@ msgstr "Division"
#. bool_op_cut is called "Division" in the manu, see sp_selected_path_cut
#. bool_op_slice is called "Cut path" in the menu, see sp_selected_path_slice
#: ../src/live_effects/lpe-bool.cpp:46
-#, fuzzy
msgid "cut"
-msgstr "Out"
+msgstr ""
#: ../src/live_effects/lpe-bool.cpp:47
#, fuzzy
msgid "cut inside"
-msgstr "Außen"
+msgstr ""
#: ../src/live_effects/lpe-bool.cpp:48
#, fuzzy
msgid "cut outside"
-msgstr "Außen"
+msgstr ""
#: ../src/live_effects/lpe-bool.cpp:54 ../src/live_effects/lpe-bool.cpp:63
#, fuzzy
msgid "odd-even"
-msgstr "eben"
+msgstr ""
#: ../src/live_effects/lpe-bool.cpp:55 ../src/live_effects/lpe-bool.cpp:64
msgid "non-zero"
@@ -9991,7 +9987,7 @@ msgstr "Operator:"
#: ../src/live_effects/lpe-bool.cpp:73
#, fuzzy
msgid "Boolean Operation"
-msgstr "Manueller Betrieb"
+msgstr ""
#: ../src/live_effects/lpe-bool.cpp:74
msgid "Swap operands:"
@@ -10004,7 +10000,7 @@ msgstr ""
#: ../src/live_effects/lpe-bool.cpp:75
#, fuzzy
msgid "Remove inner:"
-msgstr "Filter entfernen"
+msgstr ""
#: ../src/live_effects/lpe-bool.cpp:75
msgid ""
@@ -10108,12 +10104,12 @@ msgstr "Gewichtung auf 0 setzen"
#: ../src/live_effects/lpe-bspline.cpp:164
#: ../src/live_effects/parameter/parameter.cpp:192
msgid "Change scalar parameter"
-msgstr "Skalarparameter ändern"
+msgstr "skalaren Parameter ändern"
#: ../src/live_effects/lpe-clone-original.cpp:31
#, fuzzy
msgid "No shape"
-msgstr "Kein Tausch"
+msgstr "Keine Form"
#: ../src/live_effects/lpe-clone-original.cpp:32
#: ../src/live_effects/lpe-fill-between-many.cpp:27
@@ -10401,7 +10397,7 @@ msgstr ""
#: ../src/live_effects/lpe-powerclip.cpp:37
#, fuzzy
msgid "Important messages"
-msgstr "Importeinstellungen"
+msgstr "Wichtige Nachrichten"
#: ../src/live_effects/lpe-dash-stroke.cpp:23
msgid "Add <b>\"Fill Between Many LPE\"</b> to add fill."
@@ -11524,7 +11520,7 @@ msgstr ""
#: ../src/live_effects/lpe-measure-segments.cpp:96
#, fuzzy
msgid "Turn doesn't fit measurements"
-msgstr "Die Einheiten, die für die Bemaßungen verwendet werden"
+msgstr ""
#: ../src/live_effects/lpe-measure-segments.cpp:97
#, fuzzy
@@ -11553,12 +11549,12 @@ msgstr "Mittelpunkt setzen"
#: ../src/live_effects/lpe-measure-segments.cpp:99
#, fuzzy
msgid "Use centers as measurement"
-msgstr "Papierdickenmessung:"
+msgstr ""
#: ../src/live_effects/lpe-measure-segments.cpp:100
#, fuzzy
msgid "Only max and min"
-msgstr "Nur Schwarz-Weiß:"
+msgstr ""
#: ../src/live_effects/lpe-measure-segments.cpp:100
msgid "Compute only max/min projection values"
@@ -27031,11 +27027,11 @@ msgstr "Y-Koordinate der Auswahl"
#. Name
#: ../src/ui/toolbar/paintbucket-toolbar.cpp:138
msgid "Fill by"
-msgstr "Füllen mit:"
+msgstr "Füllen anhand von"
#: ../src/ui/toolbar/paintbucket-toolbar.cpp:160
msgid "Fill Threshold"
-msgstr "Füll-Schwellwert:"
+msgstr "Füll-Schwellwert"
#: ../src/ui/toolbar/paintbucket-toolbar.cpp:161
msgid ""
@@ -27051,7 +27047,7 @@ msgstr "Vergrößern/Verkleinern um"
#: ../src/ui/toolbar/paintbucket-toolbar.cpp:189
msgid "Grow/shrink by:"
-msgstr "Vergrößern/Verkleinern um"
+msgstr "Vergrößern/Verkleinern um:"
#: ../src/ui/toolbar/paintbucket-toolbar.cpp:190
msgid ""
@@ -27238,7 +27234,7 @@ msgstr "Rechteck ändern"
#: ../src/ui/toolbar/rect-toolbar.cpp:322
msgid "W:"
-msgstr "W:"
+msgstr "B:"
#: ../src/ui/toolbar/rect-toolbar.cpp:322
msgid "Width of rectangle"
@@ -27948,7 +27944,7 @@ msgstr "Text: Schriftstil ändern"
#: ../src/ui/toolbar/text-toolbar.cpp:362
#, fuzzy
msgid "Text: Unset line height."
-msgstr "Text: Linienhöhe ändern"
+msgstr "Text: Zeilenabstand ändern"
#: ../src/ui/toolbar/text-toolbar.cpp:439
msgid "Text: Change superscript or subscript"
@@ -27960,7 +27956,7 @@ msgstr "Text: Ausrichtung ändern"
#: ../src/ui/toolbar/text-toolbar.cpp:713
msgid "Text: Change line-height"
-msgstr "Text: Linienhöhe ändern"
+msgstr "Text: Zeilenabstand ändern"
#: ../src/ui/toolbar/text-toolbar.cpp:877
msgid "Text: Change line-height unit"
@@ -28200,7 +28196,7 @@ msgstr "Größerer Abstand"
#. name
#: ../src/ui/toolbar/text-toolbar.cpp:2296
msgid "Line Height"
-msgstr "Linienhöhe"
+msgstr "Zeilenabstand"
#. label
#: ../src/ui/toolbar/text-toolbar.cpp:2297
diff --git a/src/attributes.cpp b/src/attributes.cpp
index 1222d2669..d7081d4c9 100644
--- a/src/attributes.cpp
+++ b/src/attributes.cpp
@@ -9,6 +9,9 @@
* Released under GNU GPL v2+, read the file 'COPYING' for more information.
*/
+#include <cstring>
+#include <map>
+
#include <glib.h> // g_assert()
#include "attributes.h"
@@ -555,15 +558,34 @@ static SPStyleProp const props[] = {
#define n_attrs (sizeof(props) / sizeof(props[0]))
-/** Returns an SPAttributeEnum; SP_ATTR_INVALID (of value 0) if key isn't recognized. */
+/**
+ * Inverse to the \c props array for lookup by name.
+ */
+struct AttributeLookupImpl {
+ struct cstrless {
+ bool operator()(char const *lhs, char const *rhs) const { return std::strcmp(lhs, rhs) < 0; }
+ };
+
+ std::map<char const *, SPAttributeEnum, cstrless> m_map;
+
+ AttributeLookupImpl()
+ {
+ for (unsigned int i = 1; i < n_attrs; i++) {
+ // sanity check: order of props array must match SPAttributeEnum
+ g_assert(props[i].code == i);
+
+ m_map[props[i].name] = props[i].code;
+ }
+ }
+};
+
SPAttributeEnum
sp_attribute_lookup(gchar const *key)
{
- for (unsigned int i = 1; i < n_attrs; i++) {
- g_assert(props[i].code == static_cast< gint >(i) );
- // If this g_assert fails, then the sort order of SPAttributeEnum does not match the order in props[]!
- if(g_str_equal(const_cast<void *>(static_cast<void const *>(props[i].name)), key))
- return props[i].code;
+ static AttributeLookupImpl const _instance;
+ auto it = _instance.m_map.find(key);
+ if (it != _instance.m_map.end()) {
+ return it->second;
}
// std::cerr << "sp_attribute_lookup: invalid attribute: "
// << (key?key:"Null") << std::endl;
diff --git a/src/attributes.h b/src/attributes.h
index 1f0178fae..512c00499 100644
--- a/src/attributes.h
+++ b/src/attributes.h
@@ -564,7 +564,14 @@ enum SPAttributeEnum : unsigned {
SP_PROP_PATH_EFFECT,
};
+/**
+ * Get attribute id by name. Return SP_ATTR_INVALID for invalid names.
+ */
SPAttributeEnum sp_attribute_lookup(gchar const *key);
+
+/**
+ * Get attribute name by id. Return NULL for invalid ids.
+ */
gchar const *sp_attribute_name(SPAttributeEnum id);
#endif
diff --git a/src/display/sp-canvas-item.h b/src/display/sp-canvas-item.h
index 65bd1cc05..fc6417325 100644
--- a/src/display/sp-canvas-item.h
+++ b/src/display/sp-canvas-item.h
@@ -21,6 +21,7 @@
*/
#include <2geom/rect.h>
+#include <boost/intrusive/list.hpp>
#include <glib-object.h>
#include "ui/control-types.h"
@@ -49,6 +50,9 @@ typedef struct _GdkCursor GdkCursor;
struct SPCanvasItem {
GInitiallyUnowned parent_instance;
+ // boost linked list member hook
+ boost::intrusive::list_member_hook<> member_hook_;
+
SPCanvas *canvas;
SPCanvasItem *parent;
@@ -78,6 +82,12 @@ struct SPCanvasItem {
GType sp_canvas_item_get_type();
+//Define type for linked list storing SPCanvasItems
+typedef boost::intrusive::list<
+ SPCanvasItem,
+ boost::intrusive::member_hook<SPCanvasItem, boost::intrusive::list_member_hook<>, &SPCanvasItem::member_hook_> >
+ SPCanvasItemList;
+
/**
* The vtable of an SPCanvasItem.
*/
diff --git a/src/display/sp-canvas.cpp b/src/display/sp-canvas.cpp
index 16f04d1f4..331528654 100644
--- a/src/display/sp-canvas.cpp
+++ b/src/display/sp-canvas.cpp
@@ -136,8 +136,7 @@ struct SPCanvasGroup {
SPCanvasItem item;
- std::list<SPCanvasItem *> items;
-
+ SPCanvasItemList items;
};
/**
@@ -272,6 +271,9 @@ void sp_canvas_item_construct(SPCanvasItem *item, SPCanvasGroup *parent, gchar c
g_return_if_fail(SP_IS_CANVAS_GROUP(parent));
g_return_if_fail(SP_IS_CANVAS_ITEM(item));
+ // manually invoke list_member_hook constructor
+ new (&(item->member_hook_)) boost::intrusive::list_member_hook<>();
+
item->parent = SP_CANVAS_ITEM(parent);
item->canvas = item->parent->canvas;
@@ -495,14 +497,15 @@ void sp_canvas_item_raise(SPCanvasItem *item, int positions)
}
SPCanvasGroup *parent = SP_CANVAS_GROUP (item->parent);
- std::list<SPCanvasItem *>::iterator l = std::find(parent->items.begin(),parent->items.end(), item);
- g_assert (l != parent->items.end());
+ auto from = parent->items.iterator_to(*item);
+ auto to = from;
- for (int i=0; i<=positions && l != parent->items.end(); ++i)
- ++l;
+ for (int i = 0; i <= positions && to != parent->items.end(); ++i) {
+ ++to;
+ }
- parent->items.remove(item);
- parent->items.insert(l, item);
+ parent->items.erase(from);
+ parent->items.insert(to, *item);
redraw_if_visible (item);
item->canvas->_need_repick = TRUE;
@@ -515,8 +518,8 @@ void sp_canvas_item_raise_to_top(SPCanvasItem *item)
if (!item->parent)
return;
SPCanvasGroup *parent = SP_CANVAS_GROUP (item->parent);
- parent->items.remove(item);
- parent->items.push_back(item);
+ parent->items.erase(parent->items.iterator_to(*item));
+ parent->items.push_back(*item);
redraw_if_visible (item);
item->canvas->_need_repick = TRUE;
}
@@ -540,18 +543,20 @@ void sp_canvas_item_lower(SPCanvasItem *item, int positions)
SPCanvasGroup *parent = SP_CANVAS_GROUP(item->parent);
- if (!parent || positions == 0 || item == parent->items.front() ) {
+ if (!parent || positions == 0 || item == &parent->items.front()) {
return;
}
- std::list<SPCanvasItem *>::iterator l = std::find(parent->items.begin(), parent->items.end(), item);
- g_assert (l != parent->items.end());
+ auto from = parent->items.iterator_to(*item);
+ auto to = from;
+ g_assert(from != parent->items.end());
- for (int i=0; i<positions && l != parent->items.begin(); ++i)
- --l;
+ for (int i = 0; i < positions && to != parent->items.begin(); ++i) {
+ --to;
+ }
- parent->items.remove(item);
- parent->items.insert(l, item);
+ parent->items.erase(from);
+ parent->items.insert(to, *item);
redraw_if_visible (item);
item->canvas->_need_repick = TRUE;
@@ -564,8 +569,8 @@ void sp_canvas_item_lower_to_bottom(SPCanvasItem *item)
if (!item->parent)
return;
SPCanvasGroup *parent = SP_CANVAS_GROUP (item->parent);
- parent->items.remove(item);
- parent->items.push_front(item);
+ parent->items.erase(parent->items.iterator_to(*item));
+ parent->items.push_front(*item);
redraw_if_visible (item);
item->canvas->_need_repick = TRUE;
}
@@ -768,8 +773,8 @@ gint sp_canvas_item_order (SPCanvasItem * item)
{
SPCanvasGroup * p = SP_CANVAS_GROUP(item->parent);
size_t index = 0;
- for (std::list<SPCanvasItem*>::const_iterator it = p->items.begin(); it != p->items.end(); ++it, ++index) {
- if ((*it) == item) {
+ for (auto it = p->items.begin(); it != p->items.end(); ++it, ++index) {
+ if (item == &(*it)) {
return index;
}
}
@@ -793,7 +798,7 @@ static void sp_canvas_group_class_init(SPCanvasGroupClass *klass)
static void sp_canvas_group_init(SPCanvasGroup * group)
{
- new (&group->items) std::list<SPCanvasItem *>;
+ new (&group->items) SPCanvasItemList;
}
void SPCanvasGroup::destroy(SPCanvasItem *object)
@@ -803,12 +808,14 @@ void SPCanvasGroup::destroy(SPCanvasItem *object)
SPCanvasGroup *group = SP_CANVAS_GROUP(object);
- for (std::list<SPCanvasItem *>::iterator it = group->items.begin(); it != group->items.end(); ++it) {
- sp_canvas_item_destroy(*it);
+ for (auto it = group->items.begin(); it != group->items.end();) {
+ SPCanvasItem *item = &(*it);
+ it++;
+ sp_canvas_item_destroy(item);
}
group->items.clear();
- group->items.~list(); // invoke manually
+ group->items.~SPCanvasItemList(); // invoke manually
if (SP_CANVAS_ITEM_CLASS(sp_canvas_group_parent_class)->destroy) {
(* SP_CANVAS_ITEM_CLASS(sp_canvas_group_parent_class)->destroy)(object);
@@ -817,11 +824,11 @@ void SPCanvasGroup::destroy(SPCanvasItem *object)
void SPCanvasGroup::update(SPCanvasItem *item, Geom::Affine const &affine, unsigned int flags)
{
- SPCanvasGroup const *group = SP_CANVAS_GROUP(item);
+ SPCanvasGroup *group = SP_CANVAS_GROUP(item);
Geom::OptRect bounds;
- for (std::list<SPCanvasItem *>::const_iterator it = group->items.begin(); it != group->items.end(); ++it) {
- SPCanvasItem *i = *it;
+ for (auto it = group->items.begin(); it != group->items.end(); ++it) {
+ SPCanvasItem *i = &(*it);
sp_canvas_item_invoke_update (i, affine, flags);
@@ -844,7 +851,7 @@ void SPCanvasGroup::update(SPCanvasItem *item, Geom::Affine const &affine, unsig
double SPCanvasGroup::point(SPCanvasItem *item, Geom::Point p, SPCanvasItem **actual_item)
{
- SPCanvasGroup const *group = SP_CANVAS_GROUP(item);
+ SPCanvasGroup *group = SP_CANVAS_GROUP(item);
double const x = p[Geom::X];
double const y = p[Geom::Y];
int x1 = (int)(x - item->canvas->_close_enough);
@@ -856,8 +863,8 @@ double SPCanvasGroup::point(SPCanvasItem *item, Geom::Point p, SPCanvasItem **ac
*actual_item = nullptr;
double dist = 0.0;
- for (std::list<SPCanvasItem *>::const_iterator it = group->items.begin(); it != group->items.end(); ++it) {
- SPCanvasItem *child = *it;
+ for (auto it = group->items.begin(); it != group->items.end(); ++it) {
+ SPCanvasItem *child = &(*it);
if ((child->x1 <= x2) && (child->y1 <= y2) && (child->x2 >= x1) && (child->y2 >= y1)) {
SPCanvasItem *point_item = nullptr; // cater for incomplete item implementations
@@ -888,10 +895,10 @@ double SPCanvasGroup::point(SPCanvasItem *item, Geom::Point p, SPCanvasItem **ac
void SPCanvasGroup::render(SPCanvasItem *item, SPCanvasBuf *buf)
{
- SPCanvasGroup const *group = SP_CANVAS_GROUP(item);
+ SPCanvasGroup *group = SP_CANVAS_GROUP(item);
- for (std::list<SPCanvasItem *>::const_iterator it = group->items.begin(); it != group->items.end(); ++it) {
- SPCanvasItem *child = *it;
+ for (auto it = group->items.begin(); it != group->items.end(); ++it) {
+ SPCanvasItem *child = &(*it);
if (child->visible) {
if ((child->x1 < buf->rect.right()) &&
(child->y1 < buf->rect.bottom()) &&
@@ -909,8 +916,8 @@ void SPCanvasGroup::viewboxChanged(SPCanvasItem *item, Geom::IntRect const &new_
{
SPCanvasGroup *group = SP_CANVAS_GROUP(item);
- for (std::list<SPCanvasItem *>::const_iterator it = group->items.begin(); it != group->items.end(); ++it) {
- SPCanvasItem *child = *it;
+ for (auto it = group->items.begin(); it != group->items.end(); ++it) {
+ SPCanvasItem *child = &(*it);
if (child->visible) {
if (SP_CANVAS_ITEM_GET_CLASS(child)->viewbox_changed) {
SP_CANVAS_ITEM_GET_CLASS(child)->viewbox_changed(child, new_area);
@@ -924,7 +931,7 @@ void SPCanvasGroup::add(SPCanvasItem *item)
g_object_ref(item);
g_object_ref_sink(item);
- items.push_back(item);
+ items.push_back(*item);
sp_canvas_item_request_update(item);
}
@@ -933,7 +940,7 @@ void SPCanvasGroup::remove(SPCanvasItem *item)
{
g_return_if_fail(item != nullptr);
- auto position = std::find(items.begin(), items.end(), item);
+ auto position = items.iterator_to(*item);
if (position != items.end()) {
items.erase(position);
}
diff --git a/src/style.cpp b/src/style.cpp
index aab8f2695..b11a92749 100644
--- a/src/style.cpp
+++ b/src/style.cpp
@@ -76,7 +76,7 @@ static CRSelEng *sp_repr_sel_eng();
class SPStylePropHelper {
SPStylePropHelper() {
#define REGISTER_PROPERTY(id, member, name) \
- _register(reinterpret_cast<SPIBasePtr>(&SPStyle::member), id, name)
+ _register(reinterpret_cast<SPIBasePtr>(&SPStyle::member), id) /* name unused */
// SVG 2: Attributes promoted to properties
REGISTER_PROPERTY(SP_ATTR_D, d, "d");
@@ -215,11 +215,7 @@ public:
* Get property pointer by name
*/
SPIBase *get(SPStyle *style, const std::string &name) {
- auto it = m_name_map.find(name);
- if (it != m_name_map.end()) {
- return _get(style, it->second);
- }
- return nullptr;
+ return get(style, sp_attribute_lookup(name.c_str()));
}
/**
@@ -238,19 +234,14 @@ public:
private:
SPIBase *_get(SPStyle *style, SPIBasePtr ptr) { return &(style->*ptr); }
- void _register(SPIBasePtr ptr, SPAttributeEnum id, const char *name) {
+ void _register(SPIBasePtr ptr, SPAttributeEnum id) {
m_vector.push_back(ptr);
if (id != SP_ATTR_INVALID) {
m_id_map[id] = ptr;
}
-
- if (name[0]) {
- m_name_map[name] = ptr;
- }
}
- std::unordered_map<std::string, SPIBasePtr> m_name_map;
std::unordered_map</* SPAttributeEnum */ int, SPIBasePtr> m_id_map;
std::vector<SPIBasePtr> m_vector;
};