summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2015-02-05 01:39:36 +0000
committerJabiertxof <jtx@jtx.marker.es>2015-02-05 01:39:36 +0000
commitde321eac5da81c5b30819ccedf09574a36a3ff01 (patch)
tree43b97c538d89d400a29450f7fbd67bc2d63b56f2
parentfixed bugs pointed by su_v (diff)
parentLatvian translation update (diff)
downloadinkscape-de321eac5da81c5b30819ccedf09574a36a3ff01.tar.gz
inkscape-de321eac5da81c5b30819ccedf09574a36a3ff01.zip
update to trunk
(bzr r13879.1.10)
-rw-r--r--po/lv.po144
-rw-r--r--po/nl.po147
-rwxr-xr-xshare/extensions/funcplot.py4
-rw-r--r--src/display/canvas-axonomgrid.cpp3
-rw-r--r--src/display/canvas-grid.cpp3
-rw-r--r--src/main.cpp12
-rw-r--r--src/sp-mesh-array.cpp249
-rw-r--r--src/sp-mesh-gradient.cpp2
-rw-r--r--src/ui/dialog/inkscape-preferences.cpp2
-rw-r--r--src/viewbox.cpp40
-rw-r--r--src/widgets/mesh-toolbar.cpp2
11 files changed, 368 insertions, 240 deletions
diff --git a/po/lv.po b/po/lv.po
index 3616ba497..95c79bb78 100644
--- a/po/lv.po
+++ b/po/lv.po
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Inkscape\n"
"Report-Msgid-Bugs-To: inkscape-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2015-01-25 08:39+0100\n"
-"PO-Revision-Date: 2015-01-28 16:31+0200\n"
-"Last-Translator: Jānis Eisaks <jancs@dv.lv>\n"
+"POT-Creation-Date: 2015-01-28 11:25+0100\n"
+"PO-Revision-Date: 2015-01-30 19:06+0200\n"
+"Last-Translator: Jānis Eisaks <je@dv.lv>\n"
"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
"Language: lv\n"
"MIME-Version: 1.0\n"
@@ -5278,80 +5278,84 @@ msgstr "Veidot no ceļa"
msgid "PostScript"
msgstr "PostScript"
-#: ../src/extension/internal/cairo-ps-out.cpp:329 ../src/extension/internal/cairo-ps-out.cpp:368
+#: ../src/extension/internal/cairo-ps-out.cpp:329 ../src/extension/internal/cairo-ps-out.cpp:371
msgid "Restrict to PS level:"
msgstr "Ierobežot ar PS level:"
-#: ../src/extension/internal/cairo-ps-out.cpp:330 ../src/extension/internal/cairo-ps-out.cpp:369
+#: ../src/extension/internal/cairo-ps-out.cpp:330 ../src/extension/internal/cairo-ps-out.cpp:372
msgid "PostScript level 3"
msgstr "PostScript level 3"
-#: ../src/extension/internal/cairo-ps-out.cpp:331 ../src/extension/internal/cairo-ps-out.cpp:370
+#: ../src/extension/internal/cairo-ps-out.cpp:331 ../src/extension/internal/cairo-ps-out.cpp:373
msgid "PostScript level 2"
msgstr "PostScript level 2"
-#: ../src/extension/internal/cairo-ps-out.cpp:333 ../src/extension/internal/cairo-ps-out.cpp:372 ../src/extension/internal/cairo-renderer-pdf-out.cpp:250 ../src/extension/internal/emf-inout.cpp:3569
-#: ../src/extension/internal/wmf-inout.cpp:3144
-msgid "Convert texts to paths"
-msgstr "Pārvērst tekstus par ceļiem"
+#: ../src/extension/internal/cairo-ps-out.cpp:333 ../src/extension/internal/cairo-ps-out.cpp:375 ../src/extension/internal/cairo-renderer-pdf-out.cpp:250
+#, fuzzy
+msgid "Text output options:"
+msgstr "Teksta izvades opcijas:"
+
+#: ../src/extension/internal/cairo-ps-out.cpp:334 ../src/extension/internal/cairo-ps-out.cpp:376 ../src/extension/internal/cairo-renderer-pdf-out.cpp:251
+msgid "Embed fonts"
+msgstr "Iegult fontus"
-#: ../src/extension/internal/cairo-ps-out.cpp:334
-msgid "PS+LaTeX: Omit text in PS, and create LaTeX file"
-msgstr "PS+LaTeX: izlaist tekstu PS un izveidot LaTeX datni"
+#: ../src/extension/internal/cairo-ps-out.cpp:335 ../src/extension/internal/cairo-ps-out.cpp:377 ../src/extension/internal/cairo-renderer-pdf-out.cpp:252
+msgid "Convert text to paths"
+msgstr "Pārvērst tekstu par ceļiem"
-#: ../src/extension/internal/cairo-ps-out.cpp:335 ../src/extension/internal/cairo-ps-out.cpp:374 ../src/extension/internal/cairo-renderer-pdf-out.cpp:252
+#: ../src/extension/internal/cairo-ps-out.cpp:336 ../src/extension/internal/cairo-ps-out.cpp:378 ../src/extension/internal/cairo-renderer-pdf-out.cpp:253
+msgid "Omit text in PDF and create LaTeX file"
+msgstr "Izlaist PDF esošo tekstu un izveidot LaTeX failu"
+
+#: ../src/extension/internal/cairo-ps-out.cpp:338 ../src/extension/internal/cairo-ps-out.cpp:380 ../src/extension/internal/cairo-renderer-pdf-out.cpp:255
msgid "Rasterize filter effects"
msgstr "Rastrēšanas filtra efekts"
-#: ../src/extension/internal/cairo-ps-out.cpp:336 ../src/extension/internal/cairo-ps-out.cpp:375 ../src/extension/internal/cairo-renderer-pdf-out.cpp:253
+#: ../src/extension/internal/cairo-ps-out.cpp:339 ../src/extension/internal/cairo-ps-out.cpp:381 ../src/extension/internal/cairo-renderer-pdf-out.cpp:256
msgid "Resolution for rasterization (dpi):"
msgstr "Izšķirtspēja rastrēšanai (dpi):"
-#: ../src/extension/internal/cairo-ps-out.cpp:337 ../src/extension/internal/cairo-ps-out.cpp:376
+#: ../src/extension/internal/cairo-ps-out.cpp:340 ../src/extension/internal/cairo-ps-out.cpp:382
msgid "Output page size"
msgstr "Izvades lapas izmēri"
-#: ../src/extension/internal/cairo-ps-out.cpp:338 ../src/extension/internal/cairo-ps-out.cpp:377 ../src/extension/internal/cairo-renderer-pdf-out.cpp:255
+#: ../src/extension/internal/cairo-ps-out.cpp:341 ../src/extension/internal/cairo-ps-out.cpp:383 ../src/extension/internal/cairo-renderer-pdf-out.cpp:258
msgid "Use document's page size"
msgstr "Izmantot dokumenta lapu izmēru"
-#: ../src/extension/internal/cairo-ps-out.cpp:339 ../src/extension/internal/cairo-ps-out.cpp:378 ../src/extension/internal/cairo-renderer-pdf-out.cpp:256
+#: ../src/extension/internal/cairo-ps-out.cpp:342 ../src/extension/internal/cairo-ps-out.cpp:384 ../src/extension/internal/cairo-renderer-pdf-out.cpp:259
msgid "Use exported object's size"
msgstr "Izmantot eksportētā objekta izmēru"
-#: ../src/extension/internal/cairo-ps-out.cpp:341 ../src/extension/internal/cairo-renderer-pdf-out.cpp:258
+#: ../src/extension/internal/cairo-ps-out.cpp:344 ../src/extension/internal/cairo-renderer-pdf-out.cpp:261
msgid "Bleed/margin (mm):"
msgstr "Pārlaides mala (mm):"
-#: ../src/extension/internal/cairo-ps-out.cpp:342 ../src/extension/internal/cairo-ps-out.cpp:381 ../src/extension/internal/cairo-renderer-pdf-out.cpp:259
+#: ../src/extension/internal/cairo-ps-out.cpp:345 ../src/extension/internal/cairo-ps-out.cpp:387 ../src/extension/internal/cairo-renderer-pdf-out.cpp:262
msgid "Limit export to the object with ID:"
msgstr "Ierobežojiet eksportu līdz objektam ar ID:"
-#: ../src/extension/internal/cairo-ps-out.cpp:346 ../share/extensions/ps_input.inx.h:2
+#: ../src/extension/internal/cairo-ps-out.cpp:349 ../share/extensions/ps_input.inx.h:2
msgid "PostScript (*.ps)"
msgstr "PostScript (*.ps)"
-#: ../src/extension/internal/cairo-ps-out.cpp:347
+#: ../src/extension/internal/cairo-ps-out.cpp:350
msgid "PostScript File"
msgstr "PostScript datne"
-#: ../src/extension/internal/cairo-ps-out.cpp:366 ../share/extensions/eps_input.inx.h:3
+#: ../src/extension/internal/cairo-ps-out.cpp:369 ../share/extensions/eps_input.inx.h:3
msgid "Encapsulated PostScript"
msgstr "Encapsulated PostScript"
-#: ../src/extension/internal/cairo-ps-out.cpp:373
-msgid "EPS+LaTeX: Omit text in EPS, and create LaTeX file"
-msgstr "EPS+LaTeX: izlaist tekstu EPS un izveidot LaTeX datni"
-
-#: ../src/extension/internal/cairo-ps-out.cpp:380
+#: ../src/extension/internal/cairo-ps-out.cpp:386
msgid "Bleed/margin (mm)"
msgstr "Pārlaide/mala (mm)"
-#: ../src/extension/internal/cairo-ps-out.cpp:385 ../share/extensions/eps_input.inx.h:2
+#: ../src/extension/internal/cairo-ps-out.cpp:391 ../share/extensions/eps_input.inx.h:2
msgid "Encapsulated PostScript (*.eps)"
msgstr "Encapsulated PostScript (*.eps)"
-#: ../src/extension/internal/cairo-ps-out.cpp:386
+#: ../src/extension/internal/cairo-ps-out.cpp:392
msgid "Encapsulated PostScript File"
msgstr "Encapsulated PostScript datne"
@@ -5367,11 +5371,7 @@ msgstr "PDF 1.5"
msgid "PDF 1.4"
msgstr "PDF 1.4"
-#: ../src/extension/internal/cairo-renderer-pdf-out.cpp:251
-msgid "PDF+LaTeX: Omit text in PDF, and create LaTeX file"
-msgstr "PDF+LaTeX: izlaist tekstu PDF un izveidot LaTeX datni"
-
-#: ../src/extension/internal/cairo-renderer-pdf-out.cpp:254
+#: ../src/extension/internal/cairo-renderer-pdf-out.cpp:257
msgid "Output page size:"
msgstr "Izvades lapas izmēri:"
@@ -5453,6 +5453,10 @@ msgstr "Enhanced metafaili"
msgid "EMF Output"
msgstr "EMF izvade"
+#: ../src/extension/internal/emf-inout.cpp:3569 ../src/extension/internal/wmf-inout.cpp:3144
+msgid "Convert texts to paths"
+msgstr "Pārvērst tekstus par ceļiem"
+
#: ../src/extension/internal/emf-inout.cpp:3570 ../src/extension/internal/wmf-inout.cpp:3145
msgid "Map Unicode to Symbol font"
msgstr "Kartēt Unicode pret Symbol fontu"
@@ -7582,8 +7586,7 @@ msgstr "Griezt nokrāsu"
msgid "Luminance to Alpha"
msgstr "Spilgtumu par alfa"
-#. File
-#: ../src/filter-enums.cpp:87 ../src/verbs.cpp:2431 ../share/extensions/jessyInk_mouseHandler.inx.h:3 ../share/extensions/jessyInk_transitions.inx.h:7
+#: ../src/filter-enums.cpp:87 ../share/extensions/jessyInk_mouseHandler.inx.h:3 ../share/extensions/jessyInk_transitions.inx.h:7
msgid "Default"
msgstr "Noklusētais"
@@ -10445,98 +10448,93 @@ msgstr ""
msgid "_File"
msgstr "_Datne"
-#. Tag
-#: ../src/menus-skeleton.h:17 ../src/verbs.cpp:2726
-msgid "_New"
-msgstr "Jau_ns"
-
#. " <verb verb-id=\"FileExportToOCAL\" />\n"
#. " <verb verb-id=\"DialogMetadata\" />\n"
-#: ../src/menus-skeleton.h:43 ../src/verbs.cpp:2713 ../src/verbs.cpp:2721
+#: ../src/menus-skeleton.h:41 ../src/verbs.cpp:2713 ../src/verbs.cpp:2721
msgid "_Edit"
msgstr "Labot"
-#: ../src/menus-skeleton.h:53 ../src/verbs.cpp:2477
+#: ../src/menus-skeleton.h:51 ../src/verbs.cpp:2477
msgid "Paste Si_ze"
msgstr "Ielīmēt i_wzmēru"
-#: ../src/menus-skeleton.h:65
+#: ../src/menus-skeleton.h:63
msgid "Clo_ne"
msgstr "Klo_nēt"
-#: ../src/menus-skeleton.h:79
+#: ../src/menus-skeleton.h:77
msgid "Select Sa_me"
msgstr "Atlasīt līdzīgo_s"
-#: ../src/menus-skeleton.h:97
+#: ../src/menus-skeleton.h:95
msgid "_View"
msgstr "Skatīt"
-#: ../src/menus-skeleton.h:98
+#: ../src/menus-skeleton.h:96
msgid "_Zoom"
msgstr "Tālummaiņa"
-#: ../src/menus-skeleton.h:114
+#: ../src/menus-skeleton.h:112
msgid "_Display mode"
msgstr "Ekrāna režīms"
#. Better location in menu needs to be found
#. " <verb verb-id=\"ViewModePrintColorsPreview\" radio=\"yes\"/>\n"
#. " <verb verb-id=\"DialogPrintColorsPreview\" />\n"
-#: ../src/menus-skeleton.h:123
+#: ../src/menus-skeleton.h:121
msgid "_Color display mode"
msgstr "_Krāsu ekrāna režīms"
#. Better location in menu needs to be found
#. " <verb verb-id=\"ViewColorModePrintColorsPreview\" radio=\"yes\"/>\n"
#. " <verb verb-id=\"DialogPrintColorsPreview\" />\n"
-#: ../src/menus-skeleton.h:136
+#: ../src/menus-skeleton.h:134
msgid "Sh_ow/Hide"
msgstr "Rādīt/slēpt"
#. Not quite ready to be in the menus.
#. " <verb verb-id=\"FocusToggle\" />\n"
-#: ../src/menus-skeleton.h:156
+#: ../src/menus-skeleton.h:154
msgid "_Layer"
msgstr "Slānis"
-#: ../src/menus-skeleton.h:180
+#: ../src/menus-skeleton.h:178
msgid "_Object"
msgstr "Objekts"
-#: ../src/menus-skeleton.h:191
+#: ../src/menus-skeleton.h:189
msgid "Cli_p"
msgstr "Ap_griezt"
-#: ../src/menus-skeleton.h:195
+#: ../src/menus-skeleton.h:193
msgid "Mas_k"
msgstr "Mas_ka"
-#: ../src/menus-skeleton.h:199
+#: ../src/menus-skeleton.h:197
msgid "Patter_n"
msgstr "Faktū_ra"
-#: ../src/menus-skeleton.h:223
+#: ../src/menus-skeleton.h:221
msgid "_Path"
msgstr "_Ceļš"
-#: ../src/menus-skeleton.h:251 ../src/ui/dialog/find.cpp:77 ../src/ui/dialog/text-edit.cpp:71
+#: ../src/menus-skeleton.h:249 ../src/ui/dialog/find.cpp:77 ../src/ui/dialog/text-edit.cpp:71
msgid "_Text"
msgstr "_Teksts"
-#: ../src/menus-skeleton.h:269
+#: ../src/menus-skeleton.h:267
msgid "Filter_s"
msgstr " Filtri"
-#: ../src/menus-skeleton.h:275
+#: ../src/menus-skeleton.h:273
msgid "Exte_nsions"
msgstr "Paplaši_nājumi"
-#: ../src/menus-skeleton.h:281
+#: ../src/menus-skeleton.h:279
msgid "_Help"
msgstr "_Palīgs"
-#: ../src/menus-skeleton.h:285
+#: ../src/menus-skeleton.h:283
msgid "Tutorials"
msgstr "Pamācības"
@@ -22201,6 +22199,12 @@ msgstr "Neko"
msgid "Does nothing"
msgstr "Nedara neko"
+#. File
+#. Tag
+#: ../src/verbs.cpp:2431 ../src/verbs.cpp:2726
+msgid "_New"
+msgstr "Jau_ns"
+
#: ../src/verbs.cpp:2431
msgid "Create new document from the default template"
msgstr "Izveidot jaunu dokumentu no noklusētās veidnes"
@@ -22309,8 +22313,8 @@ msgid "Quit Inkscape"
msgstr "Iziet no Inkscape"
#: ../src/verbs.cpp:2461
-msgid "_Templates..."
-msgstr "Saga_taves..."
+msgid "New from _Template..."
+msgstr "Jaunu no saga_taves..."
#: ../src/verbs.cpp:2462
msgid "Create new project from template"
@@ -33195,6 +33199,18 @@ msgstr "Bieži lietots galeriju attēlu grafiskais formāts "
msgid "XAML Input"
msgstr "XAML ievade"
+#~ msgid "PS+LaTeX: Omit text in PS, and create LaTeX file"
+#~ msgstr "PS+LaTeX: izlaist tekstu PS un izveidot LaTeX datni"
+
+#~ msgid "EPS+LaTeX: Omit text in EPS, and create LaTeX file"
+#~ msgstr "EPS+LaTeX: izlaist tekstu EPS un izveidot LaTeX datni"
+
+#~ msgid "PDF+LaTeX: Omit text in PDF, and create LaTeX file"
+#~ msgstr "PDF+LaTeX: izlaist tekstu PDF un izveidot LaTeX datni"
+
+#~ msgid "_Templates..."
+#~ msgstr "Saga_taves..."
+
#, fuzzy
#~ msgid "Miter limit"
#~ msgstr "Šķautņu asums:"
diff --git a/po/nl.po b/po/nl.po
index d83b0ae3d..db1e33932 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -7,7 +7,7 @@
# Foppe Benedictus <foppe.benedictus@gmail.com>, 2007-2009.
# Myckel Habets <myckel@sdf.lonestar.org>, 2008
# Benno Schulenberg <benno@vertaalt.nl>, 2008.
-# Kris De Gussem <kris.DeGussem@gmail.com>, 2008-2014.
+# Kris De Gussem <kris.DeGussem@gmail.com>, 2008-2015.
#
# *** Stuur een mailtje naar <kris.DeGussem@gmail.com>
# *** voordat je met dit bestand aan de slag gaat,
@@ -59,7 +59,7 @@ msgstr ""
"Project-Id-Version: inkscape 0.49\n"
"Report-Msgid-Bugs-To: inkscape-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2014-11-05 22:05+0100\n"
-"PO-Revision-Date: 2014-12-28 19:50+0100\n"
+"PO-Revision-Date: 2014-12-28 20:52+0100\n"
"Last-Translator: Kris De Gussem <Kris.DeGussem@gmail.com>\n"
"Language-Team: Dutch\n"
"Language: nl\n"
@@ -9341,69 +9341,58 @@ msgstr "Origineel pad klonen"
#. EXPERIMENTAL
#: ../src/live_effects/effect.cpp:139
#: ../src/live_effects/lpe-show_handles.cpp:26
-#, fuzzy
msgid "Show handles"
msgstr "Handvatten tonen"
#: ../src/live_effects/effect.cpp:141 ../src/widgets/pencil-toolbar.cpp:109
-#, fuzzy
msgid "BSpline"
-msgstr "Contour"
+msgstr "BSpline"
#: ../src/live_effects/effect.cpp:142
#: ../src/live_effects/lpe-taperstroke.cpp:78
-#, fuzzy
msgid "Join type"
-msgstr "Lijntype:"
+msgstr "Type samenvoeging"
#: ../src/live_effects/effect.cpp:143
-#, fuzzy
msgid "Taper stroke"
-msgstr "Patroonlijn"
+msgstr "Spitse lijn"
#. Ponyscape
#: ../src/live_effects/effect.cpp:145
-#, fuzzy
msgid "Attach path"
-msgstr "Naaipad:"
+msgstr "Pad aanhechten"
#: ../src/live_effects/effect.cpp:146
-#, fuzzy
msgid "Fill between strokes"
-msgstr "Vulling en lijn"
+msgstr "Vulling tussen lijnen"
#: ../src/live_effects/effect.cpp:147 ../src/selection-chemistry.cpp:2926
msgid "Fill between many"
-msgstr ""
+msgstr "Vullen tussen verschillende"
#: ../src/live_effects/effect.cpp:148
-#, fuzzy
msgid "Ellipse by 5 points"
-msgstr "Cirkel door 3 punten"
+msgstr "Ellips door 5 punten"
#: ../src/live_effects/effect.cpp:149
-#, fuzzy
msgid "Bounding Box"
msgstr "Omvattend vak"
#: ../src/live_effects/effect.cpp:152
-#, fuzzy
msgid "Lattice Deformation 2"
-msgstr "Roostervervorming"
+msgstr "Roostervervorming 2"
#: ../src/live_effects/effect.cpp:153
-#, fuzzy
msgid "Perspective/Envelope"
-msgstr "Perspectief"
+msgstr "Perspectief/Eveloppe"
#: ../src/live_effects/effect.cpp:154
msgid "Fillet/Chamfer"
msgstr ""
#: ../src/live_effects/effect.cpp:155
-#, fuzzy
msgid "Interpolate points"
-msgstr "Interpoleren"
+msgstr "Punten interpoleren"
#: ../src/live_effects/effect.cpp:362
msgid "Is visible?"
@@ -9439,77 +9428,67 @@ msgstr ""
"worden."
#: ../src/live_effects/lpe-attach-path.cpp:29
-#, fuzzy
msgid "Start path:"
-msgstr "Naaipad:"
+msgstr "Startpad:"
# Het eerste "Path" lijkt me onjuist te zijn; zie vorige string.
#: ../src/live_effects/lpe-attach-path.cpp:29
-#, fuzzy
msgid "Path to attach to the start of this path"
-msgstr "Het patroon om langs het skeletpad te leggen"
+msgstr "Pad om aan het begin van dit pad toe te voegen"
#: ../src/live_effects/lpe-attach-path.cpp:30
-#, fuzzy
msgid "Start path position:"
-msgstr "Startpositie (x;y):"
+msgstr "Positie beginpad:"
#: ../src/live_effects/lpe-attach-path.cpp:30
msgid "Position to attach path start to"
-msgstr ""
+msgstr "Positie waar het beginpad aangehecht wordt"
#: ../src/live_effects/lpe-attach-path.cpp:31
-#, fuzzy
msgid "Start path curve start:"
-msgstr "Lijnkleur op rood instellen:"
+msgstr "Begincurve startpad:"
#: ../src/live_effects/lpe-attach-path.cpp:31
#: ../src/live_effects/lpe-attach-path.cpp:35
-#, fuzzy
msgid "Starting curve"
-msgstr "Kromme verslepen"
+msgstr "Begincurve"
#. , true
#: ../src/live_effects/lpe-attach-path.cpp:32
-#, fuzzy
msgid "Start path curve end:"
-msgstr "Lijnkleur op rood instellen:"
+msgstr "Eindcurve startpad:"
#: ../src/live_effects/lpe-attach-path.cpp:32
#: ../src/live_effects/lpe-attach-path.cpp:36
-#, fuzzy
msgid "Ending curve"
-msgstr "min kromming"
+msgstr "Eindcurve"
#. , true
#: ../src/live_effects/lpe-attach-path.cpp:33
-#, fuzzy
msgid "End path:"
-msgstr "Buigingspad:"
+msgstr "Eindpad:"
# Het eerste "Path" lijkt me onjuist te zijn; zie vorige string.
#: ../src/live_effects/lpe-attach-path.cpp:33
-#, fuzzy
msgid "Path to attach to the end of this path"
-msgstr "Het patroon om langs het skeletpad te leggen"
+msgstr "Pad om aan het einde van dit pad te hangen"
#: ../src/live_effects/lpe-attach-path.cpp:34
-#, fuzzy
msgid "End path position:"
-msgstr "Layoutplaatsing:"
+msgstr "Positie eindpad:"
#: ../src/live_effects/lpe-attach-path.cpp:34
msgid "Position to attach path end to"
-msgstr ""
+msgstr "Positie waar het padeinde aangehecht wordt"
#: ../src/live_effects/lpe-attach-path.cpp:35
msgid "End path curve start:"
-msgstr ""
+msgstr "Startcurve eindpad:"
#. , true
#: ../src/live_effects/lpe-attach-path.cpp:36
msgid "End path curve end:"
-msgstr ""
+msgstr "Eindcurve eindpad:"
#: ../src/live_effects/lpe-bendpath.cpp:53
msgid "Bend path:"
@@ -9561,14 +9540,12 @@ msgid "Path from which to take the original path data"
msgstr "Pad waar originele paddata van genomen worden"
#: ../src/live_effects/lpe-bounding-box.cpp:25
-#, fuzzy
msgid "Visual Bounds"
msgstr "Visueel omvattend vak"
#: ../src/live_effects/lpe-bounding-box.cpp:25
-#, fuzzy
msgid "Uses the visual bounding box"
-msgstr "Visueel omvattend vak"
+msgstr "Gebruikt het visueel omvattend vak"
#. initialise your parameters here:
#. testpointA(_("Test Point A"), _("Test A"), "ptA", &wr, this,
@@ -9582,14 +9559,12 @@ msgid "Change number of steps with CTRL pressed"
msgstr ""
#: ../src/live_effects/lpe-bspline.cpp:61
-#, fuzzy
msgid "Ignore cusp nodes"
-msgstr "hoekig knooppunt"
+msgstr "Hoekige knooppunten negeren"
#: ../src/live_effects/lpe-bspline.cpp:61
-#, fuzzy
msgid "Change ignoring cusp nodes"
-msgstr "Overgangspositie aanpassen"
+msgstr "Veranderen van hoekige knooppunten negeren"
#: ../src/live_effects/lpe-bspline.cpp:62
#: ../src/live_effects/lpe-fillet-chamfer.cpp:57
@@ -9618,9 +9593,8 @@ msgid "Default weight"
msgstr "Standaardtitel"
#: ../src/live_effects/lpe-bspline.cpp:309
-#, fuzzy
msgid "Make cusp"
-msgstr "Ster maken"
+msgstr "Hoekig maken"
#: ../src/live_effects/lpe-constructgrid.cpp:27
msgid "Size _X:"
@@ -9790,9 +9764,8 @@ msgid "Paths from which to take the original path data"
msgstr "Pad waar originele paddata van genomen worden"
#: ../src/live_effects/lpe-fill-between-strokes.cpp:24
-#, fuzzy
msgid "Second path:"
-msgstr "Buigingspad:"
+msgstr "Tweede pad:"
#: ../src/live_effects/lpe-fill-between-strokes.cpp:24
#, fuzzy
@@ -9856,7 +9829,7 @@ msgstr "Eenheid"
#: ../src/live_effects/lpe-fillet-chamfer.cpp:61
#: ../src/live_effects/lpe-roughen.cpp:40
msgid "Method"
-msgstr ""
+msgstr "Methode"
#: ../src/live_effects/lpe-fillet-chamfer.cpp:61
#, fuzzy
@@ -9864,13 +9837,12 @@ msgid "Fillets methods"
msgstr "Vulmethode:"
#: ../src/live_effects/lpe-fillet-chamfer.cpp:62
-#, fuzzy
msgid "Radius (unit or %)"
-msgstr "Straal (px):"
+msgstr "Straal (eenheid of %)"
#: ../src/live_effects/lpe-fillet-chamfer.cpp:62
msgid "Radius, in unit or %"
-msgstr ""
+msgstr "straal, in eenheid of in %"
#: ../src/live_effects/lpe-fillet-chamfer.cpp:63
#, fuzzy
@@ -9878,9 +9850,8 @@ msgid "Chamfer steps"
msgstr "Aantal stappen:"
#: ../src/live_effects/lpe-fillet-chamfer.cpp:65
-#, fuzzy
msgid "Helper size with direction"
-msgstr "Hoek in X-richting"
+msgstr ""
#: ../src/live_effects/lpe-fillet-chamfer.cpp:158
#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:76
@@ -13502,7 +13473,7 @@ msgstr "about.nl.svg"
#: ../src/ui/dialog/aboutbox.cpp:426
msgid "translator-credits"
msgstr ""
-"Kris De Gussem (Kris.DeGussem@gmail.com), 2008-2014.\n"
+"Kris De Gussem (Kris.DeGussem@gmail.com), 2008-2015.\n"
"\n"
"Vorige vertalers:\n"
"Foppe Benedictus (foppe.benedictus@gmail.com), 2007-2009.\n"
@@ -17237,7 +17208,7 @@ msgstr "Gelijke _hoogte"
#: ../src/ui/dialog/grid-arrange-tab.cpp:661
msgid "If not set, each row has the height of the tallest object in it"
msgstr ""
-"Indien uitgeschakeld, krijgt elke rij de hoogte van het hoogste object erin"
+"Indien uitgevinkt, krijgt elke rij de hoogte van het hoogste object"
#. #### Number of columns ####
#: ../src/ui/dialog/grid-arrange-tab.cpp:677
@@ -17255,8 +17226,7 @@ msgstr "Gelijke br_eedte"
#: ../src/ui/dialog/grid-arrange-tab.cpp:700
msgid "If not set, each column has the width of the widest object in it"
msgstr ""
-"Indien uitgeschakeld, krijgt elke kolom de breedte van het breedste object "
-"erin"
+"Indien uitgevinkt, krijgt elke kolom de breedte van het breedste object"
#. Anchor selection widget
#: ../src/ui/dialog/grid-arrange-tab.cpp:711
@@ -19454,7 +19424,7 @@ msgid ""
"off, it zooms with Ctrl and scrolls without Ctrl"
msgstr ""
"Indien aangevinkt, zal de muis zoomen zonder Ctrl en het canvas scrollen met "
-"Ctrl; indien uitgeschakeld, zal de muis zoomen met Ctrl en scrollen zonder "
+"Ctrl; indien uitgevinkt, zal de muis zoomen met Ctrl en scrollen zonder "
"Ctrl"
#: ../src/ui/dialog/inkscape-preferences.cpp:1222
@@ -28808,9 +28778,8 @@ msgid "From clipboard"
msgstr "Van klembord"
#: ../src/widgets/pencil-toolbar.cpp:165
-#, fuzzy
msgid "Last applied"
-msgstr "Laatste dia:"
+msgstr "Laatst toegepast"
#: ../src/widgets/pencil-toolbar.cpp:190 ../src/widgets/pencil-toolbar.cpp:191
msgid "Shape:"
@@ -32280,9 +32249,8 @@ msgid "Embed Selected Images"
msgstr "Geselecteerde afbeeldingen invoegen"
#: ../share/extensions/empty_business_card.inx.h:1
-#, fuzzy
msgid "Business Card"
-msgstr "Visitekaart 85x54mm"
+msgstr "Visitekaart"
#: ../share/extensions/empty_business_card.inx.h:2
#, fuzzy
@@ -32290,34 +32258,29 @@ msgid "Business card size:"
msgstr "Visitekaart 85x54mm"
#: ../share/extensions/empty_desktop.inx.h:1
-#, fuzzy
msgid "Desktop"
-msgstr "Bureaublad 640x480"
+msgstr "Bureaublad"
#: ../share/extensions/empty_desktop.inx.h:2
-#, fuzzy
msgid "Desktop size:"
-msgstr "Puntgrootte:"
+msgstr "Grootte bureaublad:"
#. Maximum size is '16k'
#: ../share/extensions/empty_desktop.inx.h:4
#: ../share/extensions/empty_generic.inx.h:2
#: ../share/extensions/empty_video.inx.h:4
-#, fuzzy
msgid "Custom Width:"
-msgstr "Aangepaste grootte"
+msgstr "Aangepaste Breedte:"
#: ../share/extensions/empty_desktop.inx.h:5
#: ../share/extensions/empty_generic.inx.h:3
#: ../share/extensions/empty_video.inx.h:5
-#, fuzzy
msgid "Custom Height:"
-msgstr "Hoofdlettergrootte:"
+msgstr "Aangepaste hoogte:"
#: ../share/extensions/empty_dvd_cover.inx.h:1
-#, fuzzy
msgid "DVD Cover"
-msgstr "Voorblad"
+msgstr "DVD voorblad"
#: ../share/extensions/empty_dvd_cover.inx.h:2
#, fuzzy
@@ -32329,14 +32292,12 @@ msgid "DVD cover bleed (mm):"
msgstr ""
#: ../share/extensions/empty_generic.inx.h:1
-#, fuzzy
msgid "Generic Canvas"
-msgstr "Canvas"
+msgstr "Standaardcanvas"
#: ../share/extensions/empty_generic.inx.h:4
-#, fuzzy
msgid "SVG Unit:"
-msgstr "Eenheid:"
+msgstr "SVG-eenheid:"
#: ../share/extensions/empty_generic.inx.h:5
#, fuzzy
@@ -32345,18 +32306,16 @@ msgstr "Achtergrond bewaren"
#: ../share/extensions/empty_generic.inx.h:6
#: ../share/extensions/empty_page.inx.h:5
-#, fuzzy
msgid "Hide border"
-msgstr "Spitse rand"
+msgstr "Rand verbergen"
#: ../share/extensions/empty_icon.inx.h:1
msgid "Icon"
msgstr ""
#: ../share/extensions/empty_icon.inx.h:2
-#, fuzzy
msgid "Icon size:"
-msgstr "Lettergrootte:"
+msgstr "Grootte icoon:"
#: ../share/extensions/empty_page.inx.h:2
msgid "Page size:"
@@ -32372,14 +32331,12 @@ msgid "Page background:"
msgstr "Achtergrond bewaren"
#: ../share/extensions/empty_video.inx.h:1
-#, fuzzy
msgid "Video Screen"
-msgstr "Scherm"
+msgstr "Video"
#: ../share/extensions/empty_video.inx.h:2
-#, fuzzy
msgid "Video size:"
-msgstr "Puntgrootte:"
+msgstr "Grootte video:"
#: ../share/extensions/eps_input.inx.h:1
msgid "EPS Input"
diff --git a/share/extensions/funcplot.py b/share/extensions/funcplot.py
index 7f8fdafe1..606fb0c28 100755
--- a/share/extensions/funcplot.py
+++ b/share/extensions/funcplot.py
@@ -45,7 +45,7 @@ def drawfunction(xstart, xend, ybottom, ytop, samples, width, height, left, bott
# coords and scales based on the source rect
if xstart == xend:
- inkex.errormsg(_("x-interval cannot be zero. Please modify 'Start X' or 'End X'"))
+ inkex.errormsg(_("x-interval cannot be zero. Please modify 'Start X value' or 'End X alue'"))
return []
scalex = width / (xend - xstart)
xoff = left
@@ -57,7 +57,7 @@ def drawfunction(xstart, xend, ybottom, ytop, samples, width, height, left, bott
coordx = lambda x: x * polar_scalex + centerx #convert x-value to coordinate
if ytop == ybottom:
- inkex.errormsg(_("y-interval cannot be zero. Please modify 'Y top' or 'Y bottom'"))
+ inkex.errormsg(_("y-interval cannot be zero. Please modify 'Y value of rectangle's top' or 'Y value of rectangle's bottom'"))
return []
scaley = height / (ytop - ybottom)
yoff = bottom
diff --git a/src/display/canvas-axonomgrid.cpp b/src/display/canvas-axonomgrid.cpp
index ac93f5c88..88c23bf62 100644
--- a/src/display/canvas-axonomgrid.cpp
+++ b/src/display/canvas-axonomgrid.cpp
@@ -223,6 +223,9 @@ CanvasAxonomGrid::readRepr()
if (Geom::are_near(scale_x / scale_y, 1.0, Geom::EPSILON)) {
// scaling is uniform, try to reduce numerical error
scale_x = (scale_x + scale_y)/2.0;
+ double scale_none = Inkscape::Util::Quantity::convert(1, doc->getDisplayUnit(), "px");
+ if (Geom::are_near(scale_x / scale_none, 1.0, Geom::EPSILON))
+ scale_x = scale_none; // objects are same size, reduce numerical error
scale_y = scale_x;
}
}
diff --git a/src/display/canvas-grid.cpp b/src/display/canvas-grid.cpp
index 0a43ed8b7..0f58096ce 100644
--- a/src/display/canvas-grid.cpp
+++ b/src/display/canvas-grid.cpp
@@ -547,6 +547,9 @@ CanvasXYGrid::readRepr()
if (Geom::are_near(scale_x / scale_y, 1.0, Geom::EPSILON)) {
// scaling is uniform, try to reduce numerical error
scale_x = (scale_x + scale_y)/2.0;
+ double scale_none = Inkscape::Util::Quantity::convert(1, doc->getDisplayUnit(), "px");
+ if (Geom::are_near(scale_x / scale_none, 1.0, Geom::EPSILON))
+ scale_x = scale_none; // objects are same size, reduce numerical error
scale_y = scale_x;
}
}
diff --git a/src/main.cpp b/src/main.cpp
index 06c0d4873..15576109d 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1722,15 +1722,11 @@ static int do_export_ps_pdf(SPDocument* doc, gchar const* uri, char const* mime)
}
if (sp_export_text_to_path) {
- (*i)->set_param_bool("textToPath", TRUE);
+ (*i)->set_param_optiongroup("textToPath", "paths");
+ } else if (sp_export_latex) {
+ (*i)->set_param_optiongroup("textToPath", "LaTeX");
} else {
- (*i)->set_param_bool("textToPath", FALSE);
- }
-
- if (sp_export_latex) {
- (*i)->set_param_bool("textToLaTeX", TRUE);
- } else {
- (*i)->set_param_bool("textToLaTeX", FALSE);
+ (*i)->set_param_optiongroup("textToPath", "embed");
}
if (sp_export_ignore_filters) {
diff --git a/src/sp-mesh-array.cpp b/src/sp-mesh-array.cpp
index c1ead565f..e2d654f2f 100644
--- a/src/sp-mesh-array.cpp
+++ b/src/sp-mesh-array.cpp
@@ -1431,13 +1431,17 @@ void SPMeshNodeArray::print() {
// p0: color value start of patch
// p1: color value end of patch
// pa: color value after patch
+// lb0: distance between points b and 0
+// l01: distance between points 0 and 1
+// l1a: distance between points 1 and a
// is_first: If first patch in row/column
// is_last: If last patch in row/column
-// type: Type smoothing
+// type: Type of smoothing
// Output:
// m0: slope of Hermite function at start.
// m1: slope of Hermite function at end.
void find_slopes( const double &pb, const double &p0, const double &p1, const double &pa,
+ const double &lb0, const double &l01, const double &l1a,
const bool &is_first, const bool &is_last, const SPMeshSmooth type,
double &m0, double &m1 ) {
@@ -1449,6 +1453,12 @@ void find_slopes( const double &pb, const double &p0, const double &p1, const do
m0 = (p1 - pb)/2.0;
m1 = (pa - p0)/2.0;
+ // Finite differences
+ if( lb0 > 0 && l01 > 0 )
+ m0 = 0.5 * ((p0 - pb )/lb0 + (p1 - p0)/l01) * l01;
+ if( l01 > 0 && l1a > 0 )
+ m1 = 0.5 * ((p1 - p0 )/l01 + (pa - p1)/l1a) * l01;
+
bool parabolic = false; // Require end patches to be parabolic
switch (type) {
case SP_MESH_SMOOTH_SMOOTH1:
@@ -1478,7 +1488,6 @@ void find_slopes( const double &pb, const double &p0, const double &p1, const do
// Catmul-Rom, Parabolic ends
parabolic = true;
break;
- case SP_MESH_SMOOTH_SMOOTH:
case SP_MESH_SMOOTH_SMOOTH5:
// Catmul-Rom, Parabolic ends, no color min/max in middle of patch.
parabolic = true;
@@ -1488,12 +1497,13 @@ void find_slopes( const double &pb, const double &p0, const double &p1, const do
// tangents flat at min/max
m0 = 0;
} else {
+ // https://en.wikipedia.org/wiki/Monotone_cubic_interpolation
// ensure we don't overshoot
if( fabs(m0) > fabs(3*(p1-p0)) ) {
m0 = 3*(p1-p0);
}
- if( fabs(m0) > fabs(3*(p0-pb)) ) {
- m0 = 3*(p0-pb);
+ if( fabs(m0) > fabs(3*(p0-pb)) * l01 / lb0 ) {
+ m0 = 3*(p0-pb) * l01 / lb0;
}
}
if( (p0 > p1 && pa > p1) ||
@@ -1502,8 +1512,8 @@ void find_slopes( const double &pb, const double &p0, const double &p1, const do
m1 = 0;
} else {
// ensure we don't overshoot
- if( fabs(m1) > fabs(3*(pa-p1)) ) {
- m1 = 3*(pa-p1);
+ if( fabs(m1) > fabs(3*(pa-p1) * l01 / l1a) ) {
+ m1 = 3*(pa-p1) * l01 / l1a;
}
if( fabs(m1) > fabs(3*(p1-p0)) ) {
m1 = 3*(p1-p0);
@@ -1588,8 +1598,21 @@ void SPMeshNodeArray::smooth( SPMeshNodeArray* smooth, SPMeshSmooth type ) {
float result[3][8];
sp_color_get_rgb_floatv( &this->nodes[ i *3 ][ j*3 ]->color, p0 );
sp_color_get_rgb_floatv( &this->nodes[ (i+1)*3 ][ j*3 ]->color, p1 );
+
+ // Use linear distance to avoid calculation overhead of calculating true path length
+ Geom::Point *ptb = NULL;
+ Geom::Point *pt0 = &this->nodes[ i *3 ][ j*3 ]->p;
+ Geom::Point *pt1 = &this->nodes[ (i+1)*3 ][ j*3 ]->p;
+ Geom::Point *pta = NULL;
+
+ double lb0 = 0.0;
+ double l01 = Geom::distance( *pt0, *pt1 );
+ double l1a = 0.0;
+
if( !is_first_row ) {
sp_color_get_rgb_floatv( &this->nodes[ (i-1)*3 ][ j*3 ]->color, pb );
+ ptb = &this->nodes[ (i-1)*3 ][ j*3 ]->p;
+ lb0 = Geom::distance( *ptb, *pt0 );
} else {
pb[0] = 2.0*p0[0] - p1[0];
pb[1] = 2.0*p0[1] - p1[1];
@@ -1597,6 +1620,8 @@ void SPMeshNodeArray::smooth( SPMeshNodeArray* smooth, SPMeshSmooth type ) {
}
if( !is_last_row ) {
sp_color_get_rgb_floatv( &this->nodes[ (i+2)*3 ][ j*3 ]->color, pa );
+ pta = &this->nodes[ (i+2)*3 ][ j*3 ]->p;
+ l1a = Geom::distance( *pt1, *pta );
} else {
pa[0] = 2.0*p1[0] - p0[0];
pa[1] = 2.0*p1[1] - p0[1];
@@ -1608,7 +1633,9 @@ void SPMeshNodeArray::smooth( SPMeshNodeArray* smooth, SPMeshSmooth type ) {
// We use Hermite interpolation. We have end points, we need tangents.
double m0 = 0;
double m1 = 0;
- find_slopes( pb[n], p0[n], p1[n], pa[n], is_first_row, is_last_row, type, m0, m1 );
+ find_slopes( pb[n], p0[n], p1[n], pa[n],
+ lb0, l01, l1a,
+ is_first_row, is_last_row, type, m0, m1 );
for( unsigned k = 1; k < 8; ++k ) {
double t = k/8.0;
@@ -1650,8 +1677,21 @@ void SPMeshNodeArray::smooth( SPMeshNodeArray* smooth, SPMeshSmooth type ) {
float result[3][8];
sp_color_get_rgb_floatv( &smooth->nodes[ j*3 ][ i *3*8 ]->color, p0 );
sp_color_get_rgb_floatv( &smooth->nodes[ j*3 ][ (i+1)*3*8 ]->color, p1 );
+
+ // Use linear distance to avoid calculation overhead of calculating true path length
+ Geom::Point *ptb = NULL;
+ Geom::Point *pt0 = &smooth->nodes[ j*3 ][ i *3*8 ]->p;
+ Geom::Point *pt1 = &smooth->nodes[ j*3 ][ (i+1)*3*8 ]->p;
+ Geom::Point *pta = NULL;
+
+ double lb0 = 0.0;
+ double l01 = Geom::distance( *pt0, *pt1 );
+ double l1a = 0.0;
+
if( !is_first_column ) {
sp_color_get_rgb_floatv( &smooth->nodes[ j*3 ][ (i-1)*3*8 ]->color, pb );
+ ptb = &smooth->nodes[ j*3 ][ (i-1)*3*8 ]->p;
+ lb0 = Geom::distance( *ptb, *pt0 );
} else {
pb[0] = 2.0*p0[0] - p1[0];
pb[1] = 2.0*p0[1] - p1[1];
@@ -1659,6 +1699,8 @@ void SPMeshNodeArray::smooth( SPMeshNodeArray* smooth, SPMeshSmooth type ) {
}
if( !is_last_column ) {
sp_color_get_rgb_floatv( &smooth->nodes[ j*3 ][ (i+2)*3*8 ]->color, pa );
+ pta = &smooth->nodes[ j*3 ][ (i+2)*3*8 ]->p;
+ l1a = Geom::distance( *pt1, *pta );
} else {
pa[0] = 2.0*p1[0] - p0[0];
pa[1] = 2.0*p1[1] - p0[1];
@@ -1670,7 +1712,9 @@ void SPMeshNodeArray::smooth( SPMeshNodeArray* smooth, SPMeshSmooth type ) {
// We use Hermite interpolation. We have end points, we need tangents.
double m0 = 0;
double m1 = 0;
- find_slopes( pb[n], p0[n], p1[n], pa[n], is_first_column, is_last_column, type, m0, m1 );
+ find_slopes( pb[n], p0[n], p1[n], pa[n],
+ lb0, l01, l1a,
+ is_first_column, is_last_column, type, m0, m1 );
for( unsigned k = 1; k < 8; ++k ) {
double t = k/8.0;
@@ -1693,6 +1737,18 @@ void SPMeshNodeArray::smooth( SPMeshNodeArray* smooth, SPMeshSmooth type ) {
class SPMeshSmoothCorner {
+ enum {
+ AMP,
+ DX_LEFT,
+ DX_RIGHT,
+ DY_TOP,
+ DY_BOTTOM,
+ DXY_LT,
+ DXY_RT,
+ DXY_LB,
+ DXY_RB
+ };
+
public:
SPMeshSmoothCorner() {
for( unsigned i = 0; i < 3; ++i ) {
@@ -1702,32 +1758,42 @@ public:
}
}
- double g[3][4]; // 3 colors, 4 parameters: f, f_x, f_y, f_xy
- // double x[4]; // Lengths between neigboring points x, y, xy, yx
+ double g[3][8]; // 3 colors, 8 parameters: see enum.
+ Geom::Point p; // Location of point
};
// Find slope at point 1 given values at previous and next points
-double find_slope1( double p0, double p1, double p2 ) {
+// Return value is slope in user space
+double find_slope1( const double &p0, const double &p1, const double &p2,
+ const double &d01, const double &d12 ) {
- double slope = (p2 - p0)/2.0; // Simple Catmul-Rom condition
- if( ( p0 > p1 && p1 < p2 ) ||
- ( p0 < p1 && p1 > p2 ) ) {
- // At minimum or maximum, use slope of zero
- slope = 0;
- } else {
- // Ensure we don't overshoot
- if( fabs(slope) > fabs(3*(p1-p0)) ) {
- slope = 3*(p1-p0);
- }
- if( fabs(slope) > fabs(3*(p2-p1)) ) {
- slope = 3*(p2-p1);
+ double slope = 0;
+
+ if( d01 > 0 && d12 > 0 ) {
+ slope = 0.5 * ( (p1 - p0)/d01 + (p2 - p1)/d12 );
+
+ if( ( p0 > p1 && p1 < p2 ) ||
+ ( p0 < p1 && p1 > p2 ) ) {
+ // At minimum or maximum, use slope of zero
+ slope = 0;
+ } else {
+ // Ensure we don't overshoot
+ if( fabs(slope) > fabs(3*(p1-p0)/d01) ) {
+ slope = 3*(p1-p0)/d01;
+ }
+ if( fabs(slope) > fabs(3*(p2-p1)/d12) ) {
+ slope = 3*(p2-p1)/d12;
+ }
}
+ } else {
+ // Do something clever
}
return slope;
};
// Find slope at point 0 given values at previous and next points
+// TO DO: TAKE DISTANCE BETWEEN POINTS INTO ACCOUNT
double find_slope2( double pmm, double ppm, double pmp, double ppp, double p0 ) {
// pmm == d[i-1][j-1], ... 'm' is minus, 'p' is plus
@@ -1837,60 +1903,136 @@ void SPMeshNodeArray::smooth2( SPMeshNodeArray* smooth, SPMeshSmooth type ) {
d[i][j].g[0][0] = rgb_color[ 0 ];
d[i][j].g[1][0] = rgb_color[ 1 ];
d[i][j].g[2][0] = rgb_color[ 2 ];
+ d[i][j].p = this->nodes[ i*3 ][ j*3 ]->p;
}
}
// Calculate interior derivatives
- for( unsigned i = 1; i < d.size()-1; ++i ) {
- for( unsigned j = 1; j < d[i].size()-1; ++j ) {
+ for( unsigned i = 0; i < d.size(); ++i ) {
+ for( unsigned j = 0; j < d[i].size(); ++j ) {
for( unsigned k = 0; k < 3; ++k ) { // Loop over colors
if( type == SP_MESH_SMOOTH_SMOOTH7 || type == SP_MESH_SMOOTH_SMOOTH ) {
- d[i][j].g[k][1] = find_slope1( d[i-1][j].g[k][0], d[i][j].g[k][0], d[i+1][j].g[k][0] );
- d[i][j].g[k][2] = find_slope1( d[i][j-1].g[k][0], d[i][j].g[k][0], d[i][j+1].g[k][0] );
- d[i][j].g[k][3] = find_slope2( d[i-1][j-1].g[k][0], d[i+1][j-1].g[k][0],
- d[i-1][j+1].g[k][0], d[i-1][j-1].g[k][0],
- d[i][j].g[k][0] );
+ // dx
+
+ if( i != 0 && i != d.size()-1 ) {
+ double lm = Geom::distance( d[i-1][j].p, d[i][j].p );
+ double lp = Geom::distance( d[i+1][j].p, d[i][j].p );
+ d[i][j].g[k][1] = find_slope1( d[i-1][j].g[k][0], d[i][j].g[k][0], d[i+1][j].g[k][0], lm, lp );
+ }
+
+ // dy
+ if( j != 0 && j != d[i].size()-1 ) {
+ double lm = Geom::distance( d[i][j-1].p, d[i][j].p );
+ double lp = Geom::distance( d[i][j+1].p, d[i][j].p );
+ d[i][j].g[k][2] = find_slope1( d[i][j-1].g[k][0], d[i][j].g[k][0], d[i][j+1].g[k][0], lm, lp );
+ }
+
+ // dxdy if needed, need to take lengths into account
+ // if( i != 0 && i != d.size()-1 && j != 0 && j != d[i].size()-1 ) {
+ // d[i][j].g[k][3] = find_slope2( d[i-1][j-1].g[k][0], d[i+1][j-1].g[k][0],
+ // d[i-1][j+1].g[k][0], d[i-1][j-1].g[k][0],
+ // d[i][j].g[k][0] );
+ // }
+
} else {
// Catmul-Rom
- d[i][j].g[k][1] = (d[i+1][j].g[k][0] - d[i-1][j].g[k][0])/2.0;
- d[i][j].g[k][2] = (d[i][j+1].g[k][0] - d[i][j-1].g[k][0])/2.0;
+ if( i != 0 && i != d.size()-1 ) {
+ double d2 = Geom::distance( d[i-1][j].p, d[i+1][j].p );
+ d[i][j].g[k][1] = (d[i+1][j].g[k][0] - d[i-1][j].g[k][0])/d2;
+ }
+ if( j != 0 && j != d[i].size()-1 ) {
+ double d2 = Geom::distance( d[i][j-1].p, d[i][j+1].p );
+ d[i][j].g[k][2] = (d[i][j+1].g[k][0] - d[i][j-1].g[k][0])/d2;
+ }
}
}
}
}
// Calculate exterior derivatives
- for( unsigned j = 1; j< d[0].size()-1; ++j ) {
+ // We need to do this after calculating interior derivatives as we need to already
+ // have the non-exterior derivative calculated for finding the parabola.
+ for( unsigned j = 0; j< d[0].size(); ++j ) {
for( unsigned k = 0; k < 3; ++k ) { // Loop over colors
unsigned z = d.size()-1;
if( type == SP_MESH_SMOOTH_SMOOTH7 || type == SP_MESH_SMOOTH_SMOOTH ) {
+
// Parabolic
- d[0][j].g[k][1] = 2.0*(d[1][j].g[k][0] - d[0 ][j].g[k][0]) - d[1][j].g[k][1];
- d[z][j].g[k][1] = 2.0*(d[z][j].g[k][0] - d[z-1][j].g[k][0]) - d[z][j].g[k][1];
+ double d0 = Geom::distance( d[1][j].p, d[0 ][j].p );
+ if( d0 > 0 ) {
+ d[0][j].g[k][1] = 2.0*(d[1][j].g[k][0] - d[0 ][j].g[k][0])/d0 - d[1][j].g[k][1];
+ } else {
+ d[0][j].g[k][1] = 0;
+ }
+
+ double dz = Geom::distance( d[z][j].p, d[z-1][j].p );
+ if( dz > 0 ) {
+ d[z][j].g[k][1] = 2.0*(d[z][j].g[k][0] - d[z-1][j].g[k][0])/dz - d[z-1][j].g[k][1];
+ } else {
+ d[z][j].g[k][1] = 0;
+ }
+
} else {
+
// Catmul-Rom
- d[0][j].g[k][1] = (d[1][j].g[k][0] - d[0 ][j].g[k][0])/2.0;
- d[z][j].g[k][1] = (d[z][j].g[k][0] - d[z-1][j].g[k][0])/2.0;
+ double d0 = Geom::distance( d[1][j].p, d[0 ][j].p );
+ if( d0 > 0 ) {
+ d[0][j].g[k][1] = (d[1][j].g[k][0] - d[0 ][j].g[k][0])/d0;
+ } else {
+ d[0][j].g[k][1] = 0;
+ }
+
+ double dz = Geom::distance( d[z][j].p, d[z-1][j].p );
+ if( dz > 0 ) {
+ d[z][j].g[k][1] = (d[z][j].g[k][0] - d[z-1][j].g[k][0])/dz;
+ } else {
+ d[z][j].g[k][1] = 0;
+ }
}
}
}
- for( unsigned i = 1; i< d.size()-1; ++i ) {
+ for( unsigned i = 0; i< d.size(); ++i ) {
for( unsigned k = 0; k < 3; ++k ) { // Loop over colors
unsigned z = d[0].size()-1;
if( type == SP_MESH_SMOOTH_SMOOTH7 || type == SP_MESH_SMOOTH_SMOOTH ) {
+
// Parabolic
- d[i][0].g[k][2] = 2.0*(d[i][1].g[k][0] - d[i][0 ].g[k][0]) - d[i][0].g[k][1];
- d[i][z].g[k][2] = 2.0*(d[i][z].g[k][0] - d[i][z-1].g[k][0]) - d[i][z].g[k][1];
+ double d0 = Geom::distance( d[i][1].p, d[i][0 ].p );
+ if( d0 > 0 ) {
+ d[i][0].g[k][2] = 2.0*(d[i][1].g[k][0] - d[i][0 ].g[k][0])/d0 - d[i][1].g[k][2];
+ } else {
+ d[i][0].g[k][2] = 0;
+ }
+
+ double dz = Geom::distance( d[i][z].p, d[i][z-1].p );
+ if( dz > 0 ) {
+ d[i][z].g[k][2] = 2.0*(d[i][z].g[k][0] - d[i][z-1].g[k][0])/dz - d[i][z-1].g[k][2];
+ } else {
+ d[i][z].g[k][2] = 0;
+ }
+
} else {
+
// Catmul-Rom
- d[i][0].g[k][2] = (d[i][1].g[k][0] - d[i][0 ].g[k][0])/2.0;
- d[i][z].g[k][2] = (d[i][z].g[k][0] - d[i][z-1].g[k][0])/2.0;
+ double d0 = Geom::distance( d[i][1].p, d[i][0 ].p );
+ if( d0 > 0 ) {
+ d[i][0].g[k][2] = (d[i][1].g[k][0] - d[i][0 ].g[k][0])/d0;
+ } else {
+ d[i][0].g[k][2] = 0;
+ }
+
+ double dz = Geom::distance( d[i][z].p, d[i][z-1].p );
+ if( dz > 0 ) {
+ d[i][z].g[k][2] = (d[i][z].g[k][0] - d[i][z-1].g[k][0])/dz;
+ } else {
+ d[i][z].g[k][2] = 0;
+ }
}
}
}
- // Leave outside corner derivatives at zero.
+ // Leave outside corner cross-derivatives at zero.
// Next split each patch into 8x8 smaller patches.
@@ -1910,6 +2052,11 @@ void SPMeshNodeArray::smooth2( SPMeshNodeArray* smooth, SPMeshSmooth type ) {
for( unsigned i = 0; i < this->patch_rows(); ++i ) {
for( unsigned j = 0; j < this->patch_columns(); ++j ) {
+ double dx0 = Geom::distance( d[i ][j ].p, d[i+1][j ].p );
+ double dx1 = Geom::distance( d[i ][j+1].p, d[i+1][j+1].p );
+ double dy0 = Geom::distance( d[i ][j ].p, d[i ][j+1].p );
+ double dy1 = Geom::distance( d[i+1][j ].p, d[i+1][j+1].p );
+
// Temp loop over 0..8 to get last column/row edges
float r[3][9][9]; // result
for( unsigned m = 0; m < 3; ++m ) {
@@ -1919,14 +2066,14 @@ void SPMeshNodeArray::smooth2( SPMeshNodeArray* smooth, SPMeshSmooth type ) {
v[ 1] = d[i+1][j ].g[m][0];
v[ 2] = d[i ][j+1].g[m][0];
v[ 3] = d[i+1][j+1].g[m][0];
- v[ 4] = d[i ][j ].g[m][1];
- v[ 5] = d[i+1][j ].g[m][1];
- v[ 6] = d[i ][j+1].g[m][1];
- v[ 7] = d[i+1][j+1].g[m][1];
- v[ 8] = d[i ][j ].g[m][2];
- v[ 9] = d[i+1][j ].g[m][2];
- v[10] = d[i ][j+1].g[m][2];
- v[11] = d[i+1][j+1].g[m][2];
+ v[ 4] = d[i ][j ].g[m][1]*dx0;
+ v[ 5] = d[i+1][j ].g[m][1]*dx0;
+ v[ 6] = d[i ][j+1].g[m][1]*dx1;
+ v[ 7] = d[i+1][j+1].g[m][1]*dx1;
+ v[ 8] = d[i ][j ].g[m][2]*dy0;
+ v[ 9] = d[i+1][j ].g[m][2]*dy1;
+ v[10] = d[i ][j+1].g[m][2]*dy0;
+ v[11] = d[i+1][j+1].g[m][2]*dy1;
v[12] = d[i ][j ].g[m][3];
v[13] = d[i+1][j ].g[m][3];
v[14] = d[i ][j+1].g[m][3];
diff --git a/src/sp-mesh-gradient.cpp b/src/sp-mesh-gradient.cpp
index 65fbe2e46..5c6a2f9da 100644
--- a/src/sp-mesh-gradient.cpp
+++ b/src/sp-mesh-gradient.cpp
@@ -84,7 +84,7 @@ void SPMeshGradient::set(unsigned key, gchar const *value) {
}
this->smooth_set = TRUE;
} else {
- std::cout << "SPMeshGradient::set() No value " << std::endl;
+ // std::cout << "SPMeshGradient::set() No value " << std::endl;
this->smooth = SP_MESH_SMOOTH_NONE;
this->smooth_set = FALSE;
}
diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp
index 0ea6cf082..9f86158aa 100644
--- a/src/ui/dialog/inkscape-preferences.cpp
+++ b/src/ui/dialog/inkscape-preferences.cpp
@@ -1491,7 +1491,7 @@ void InkscapePreferences::initKeyboardShortcuts(Gtk::TreeModel::iterator iter_ui
_kb_filelist.init( "/options/kbshortcuts/shortcutfile", &fileLabels[0], &fileNames[0], fileLabels.size(), fileNames[0]);
- Glib::ustring tooltip(_("Select a file of predefined shortcuts to use. Any customized shortcuts you create will be added seperately to "));
+ Glib::ustring tooltip(_("Select a file of predefined shortcuts to use. Any customized shortcuts you create will be added separately to "));
tooltip += Glib::ustring(IO::Resource::get_path(IO::Resource::USER, IO::Resource::KEYS, "default.xml"));
_page_keyshortcuts.add_line( false, _("Shortcut file:"), _kb_filelist, "", tooltip.c_str(), false);
diff --git a/src/viewbox.cpp b/src/viewbox.cpp
index d04d25eb0..91f05668e 100644
--- a/src/viewbox.cpp
+++ b/src/viewbox.cpp
@@ -14,6 +14,9 @@
#include <2geom/transforms.h>
+#include "inkscape.h"
+#include "document.h"
+#include "util/units.h"
#include "viewbox.h"
#include "attributes.h"
#include "enums.h"
@@ -166,22 +169,27 @@ void SPViewBox::apply_viewbox(const Geom::Rect& in) {
/* Determine actual viewbox in viewport coordinates */
double x = 0.0;
double y = 0.0;
- double scalex = in.width() / this->viewBox.width();
- double scaley = in.height() / this->viewBox.height();
- double scale = 1.0; // uniform scale factor
+ double scale_x = in.width() / this->viewBox.width();
+ double scale_y = in.height() / this->viewBox.height();
+ double scale_uniform = 1.0; // used only if scaling is uniform
+ double scale_none = 1.0; // used only if viewbox and page size are same size
- if (Geom::are_near(scalex / scaley, 1.0, Geom::EPSILON)) {
+ if (Geom::are_near(scale_x / scale_y, 1.0, Geom::EPSILON)) {
// scaling is already uniform, reduce numerical error
- scale = (scalex + scaley)/2.0;
- scalex = scale;
- scaley = scale;
+ scale_uniform = (scale_x + scale_y)/2.0;
+ if (SP_ACTIVE_DOCUMENT)
+ scale_none = Inkscape::Util::Quantity::convert(1, SP_ACTIVE_DOCUMENT->getDisplayUnit(), "px");
+ if (Geom::are_near(scale_uniform / scale_none, 1.0, Geom::EPSILON))
+ scale_uniform = scale_none; // objects are same size, reduce numerical error
+ scale_x = scale_uniform;
+ scale_y = scale_uniform;
} else if (this->aspect_align != SP_ASPECT_NONE) {
// scaling is not uniform, but force it to be
- scale = (this->aspect_clip == SP_ASPECT_MEET) ? MIN (scalex, scaley) : MAX (scalex, scaley);
- scalex = scale;
- scaley = scale;
- double width = this->viewBox.width() * scale;
- double height = this->viewBox.height() * scale;
+ scale_uniform = (this->aspect_clip == SP_ASPECT_MEET) ? MIN (scale_x, scale_y) : MAX (scale_x, scale_y);
+ scale_x = scale_uniform;
+ scale_y = scale_uniform;
+ double width = this->viewBox.width() * scale_uniform;
+ double height = this->viewBox.height() * scale_uniform;
/* Now place viewbox to requested position */
switch (this->aspect_align) {
@@ -222,12 +230,12 @@ void SPViewBox::apply_viewbox(const Geom::Rect& in) {
/* Viewbox transform from scale and position */
Geom::Affine q;
- q[0] = scalex;
+ q[0] = scale_x;
q[1] = 0.0;
q[2] = 0.0;
- q[3] = scaley;
- q[4] = x - scalex * this->viewBox.left();
- q[5] = y - scaley * this->viewBox.top();
+ q[3] = scale_y;
+ q[4] = x - scale_x * this->viewBox.left();
+ q[5] = y - scale_y * this->viewBox.top();
// std::cout << " q\n" << q << std::endl;
diff --git a/src/widgets/mesh-toolbar.cpp b/src/widgets/mesh-toolbar.cpp
index 674d0f350..3d549047a 100644
--- a/src/widgets/mesh-toolbar.cpp
+++ b/src/widgets/mesh-toolbar.cpp
@@ -97,7 +97,6 @@ void ms_read_selection( Inkscape::Selection *selection,
SPMeshGradient *gradient = SP_MESHGRADIENT(server); // ->getVector();
SPMeshSmooth smooth = gradient->smooth;
- bool smooth_set = gradient->smooth_set;
if (gradient != ms_selected) {
if (ms_selected) {
@@ -123,7 +122,6 @@ void ms_read_selection( Inkscape::Selection *selection,
SPMeshGradient *gradient = SP_MESHGRADIENT(server); // ->getVector();
SPMeshSmooth smooth = gradient->smooth;
- bool smooth_set = gradient->smooth_set;
if (gradient != ms_selected) {
if (ms_selected) {