diff options
| author | Jabier Arraiza Cenoz <jabier.arraiza@marker.es> | 2015-02-05 01:39:36 +0000 |
|---|---|---|
| committer | Jabiertxof <jtx@jtx.marker.es> | 2015-02-05 01:39:36 +0000 |
| commit | de321eac5da81c5b30819ccedf09574a36a3ff01 (patch) | |
| tree | 43b97c538d89d400a29450f7fbd67bc2d63b56f2 | |
| parent | fixed bugs pointed by su_v (diff) | |
| parent | Latvian translation update (diff) | |
| download | inkscape-de321eac5da81c5b30819ccedf09574a36a3ff01.tar.gz inkscape-de321eac5da81c5b30819ccedf09574a36a3ff01.zip | |
update to trunk
(bzr r13879.1.10)
| -rw-r--r-- | po/lv.po | 144 | ||||
| -rw-r--r-- | po/nl.po | 147 | ||||
| -rwxr-xr-x | share/extensions/funcplot.py | 4 | ||||
| -rw-r--r-- | src/display/canvas-axonomgrid.cpp | 3 | ||||
| -rw-r--r-- | src/display/canvas-grid.cpp | 3 | ||||
| -rw-r--r-- | src/main.cpp | 12 | ||||
| -rw-r--r-- | src/sp-mesh-array.cpp | 249 | ||||
| -rw-r--r-- | src/sp-mesh-gradient.cpp | 2 | ||||
| -rw-r--r-- | src/ui/dialog/inkscape-preferences.cpp | 2 | ||||
| -rw-r--r-- | src/viewbox.cpp | 40 | ||||
| -rw-r--r-- | src/widgets/mesh-toolbar.cpp | 2 |
11 files changed, 368 insertions, 240 deletions
@@ -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:" @@ -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) { |
