diff options
| author | Liam P. White <inkscapebrony@gmail.com> | 2014-10-18 21:44:39 +0000 |
|---|---|---|
| committer | Liam P. White <inkscapebrony@gmail.com> | 2014-10-18 21:44:39 +0000 |
| commit | 68136c8b24a6995976db963a790207858e9baba5 (patch) | |
| tree | 550e81af7c8d626ec80a2be5efec66dd10d84bc4 | |
| parent | Update to experimental r13598 (diff) | |
| parent | Update to trunk r13621 (diff) | |
| download | inkscape-68136c8b24a6995976db963a790207858e9baba5.tar.gz inkscape-68136c8b24a6995976db963a790207858e9baba5.zip | |
Update to experimental r13619
(bzr r13341.5.18)
480 files changed, 14523 insertions, 10242 deletions
diff --git a/.bzrignore b/.bzrignore index 107ffc16a..c85c5284f 100644 --- a/.bzrignore +++ b/.bzrignore @@ -219,3 +219,8 @@ Inkscape.creator Inkscape.creator.user Inkscape.files Inkscape.includes +# osxapp (X11) +build-osxapp +inst-osxapp +packaging/macosx/ScriptExec/build +packaging/macosx/Inkscape.app diff --git a/Info.plist.in b/Info.plist.in index 096557c67..6667f6fc2 100644 --- a/Info.plist.in +++ b/Info.plist.in @@ -328,9 +328,13 @@ <string>Inks</string> <key>CFBundleVersion</key> <string>@VERSION@</string> - <key>NSHumanReadableCopyright</key> - <string>Copyright 2009 Inkscape Developers, GNU General Public License.</string> + <key>CGDisableCoalescedUpdates</key> + <false/> + <key>LSApplicationCategoryType</key> + <string>public.app-category.graphics-design</string> <key>LSMinimumSystemVersion</key> - <string>10.3</string> + <string>10.5</string> + <key>NSHumanReadableCopyright</key> + <string>Copyright 2014 Inkscape Developers, GNU General Public License.</string> </dict> </plist> diff --git a/Makefile.am b/Makefile.am index 1ed5e4d0f..7745f0dc3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -102,71 +102,365 @@ EXTRA_DIST = \ cxxtest/cxxtest/X11Gui.h \ cxxtest/cxxtest/YesNoRunner.h \ packaging/autopackage/default.apspec.in \ - packaging/macosx/dmg_background.png \ - packaging/macosx/inkscape.ds_store \ - packaging/macosx/osx-app.sh \ - packaging/macosx/osx-dmg.sh \ - packaging/macosx/osx-build.sh \ - packaging/macosx/Resources/MenuBar.nib/classes.nib \ - packaging/macosx/Resources/MenuBar.nib/info.nib \ - packaging/macosx/Resources/MenuBar.nib/objects.xib \ + packaging/macosx/README.txt \ + packaging/macosx/Resources/Inkscape.icns \ + packaging/macosx/Resources/MenuBar.nib/classes.nib \ + packaging/macosx/Resources/MenuBar.nib/info.nib \ + packaging/macosx/Resources/MenuBar.nib/objects.xib \ + packaging/macosx/Resources/ProgressWindow.nib/classes.nib \ + packaging/macosx/Resources/ProgressWindow.nib/info.nib \ + packaging/macosx/Resources/ProgressWindow.nib/objects.xib \ + packaging/macosx/Resources/alert_fccache.sh \ packaging/macosx/Resources/application-gimp-gradient.icns \ - packaging/macosx/Resources/application-vnd.ms.xaml.icns \ - packaging/macosx/Resources/image-vnd.sk1.icns \ + packaging/macosx/Resources/application-illustrator-svg.icns \ packaging/macosx/Resources/application-illustrator.icns \ - packaging/macosx/Resources/application-vnd.corel-draw.icns \ - packaging/macosx/Resources/image-x-eps.icns \ - packaging/macosx/Resources/Inkscape.icns \ - packaging/macosx/Resources/image-vnd.dxf.icns \ - packaging/macosx/Resources/image-svg+xml-compressed.icns \ packaging/macosx/Resources/application-pdf.icns \ - packaging/macosx/Resources/application-vnd.corel-draw-template.icns \ packaging/macosx/Resources/application-vnd.corel-draw-compressed.icns \ + packaging/macosx/Resources/application-vnd.corel-draw-template.icns \ + packaging/macosx/Resources/application-vnd.corel-draw.icns \ + packaging/macosx/Resources/application-vnd.ms.xaml.icns \ + packaging/macosx/Resources/application-vnd.wordperfect-graphic.icns \ + packaging/macosx/Resources/bin/gimp-wrapper.sh \ + packaging/macosx/Resources/bin/inkscape \ + packaging/macosx/Resources/bin/python-wrapper.sh \ + packaging/macosx/Resources/etc/fonts/fonts.conf \ + packaging/macosx/Resources/etc/gtk-2.0/gtkrc \ + packaging/macosx/Resources/image-svg+xml-compressed.icns \ packaging/macosx/Resources/image-svg+xml.icns \ + packaging/macosx/Resources/image-vnd.dxf.icns \ + packaging/macosx/Resources/image-vnd.sk1.icns \ packaging/macosx/Resources/image-vnd.windows-metafile.icns \ + packaging/macosx/Resources/image-x-eps.icns \ packaging/macosx/Resources/image-x-ps.icns \ - packaging/macosx/Resources/application-vnd.wordperfect-graphic.icns \ - packaging/macosx/Resources/application-illustrator-svg.icns \ - packaging/macosx/Resources/openDoc \ - packaging/macosx/Resources/script \ - packaging/macosx/Resources/ProgressWindow.nib/classes.nib \ - packaging/macosx/Resources/ProgressWindow.nib/info.nib \ - packaging/macosx/Resources/ProgressWindow.nib/objects.xib \ - packaging/macosx/Resources/bin/getdisplay.sh \ - packaging/macosx/Resources/bin/inkscape \ - packaging/macosx/Resources/etc/fonts/fonts.conf \ - packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/pre_gtkrc \ - packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-down.png \ - packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-left.png \ - packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-right.png \ - packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-up.png \ - packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/trough-scrollbar-horiz.png \ - packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/trough-scrollbar-vert.png \ - packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/copy-slider.sh \ - packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/slider-horiz-prelight.png \ - packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/slider-horiz.png \ - packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/slider-vert-prelight.png \ - packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/slider-vert.png \ - packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/copy-slider.sh \ - packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/slider-horiz-prelight.png \ - packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/slider-horiz.png \ - packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/slider-vert-prelight.png \ - packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/slider-vert.png \ - packaging/macosx/ScriptExec/English.lproj/main.nib/classes.nib \ - packaging/macosx/ScriptExec/English.lproj/main.nib/info.nib \ - packaging/macosx/ScriptExec/English.lproj/main.nib/objects.xib \ - packaging/macosx/ScriptExec/English.lproj/InfoPlist.strings \ - packaging/macosx/ScriptExec/Info.plist \ - packaging/macosx/ScriptExec/ScriptExec_Prefix.pch \ - packaging/macosx/ScriptExec/main.c \ - packaging/macosx/ScriptExec/openDoc \ - packaging/macosx/ScriptExec/script \ - packaging/macosx/ScriptExec/version.plist \ - packaging/macosx/ScriptExec/MenuBar.nib/classes.nib \ - packaging/macosx/ScriptExec/MenuBar.nib/info.nib \ - packaging/macosx/ScriptExec/MenuBar.nib/objects.xib \ - packaging/macosx/ScriptExec/ScriptExec.xcode/project.pbxproj \ + packaging/macosx/Resources/openDoc \ + packaging/macosx/Resources/script \ + packaging/macosx/Resources/xdg_setup.sh \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/application-exit.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/dialog-information.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-new.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-open-recent.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-open.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-print-preview.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-print.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-properties.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-revert-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-revert-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-save-as.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-save.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/drive-harddisk.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-clear.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-copy.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-cut.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-delete.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-find-replace.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-find.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-paste.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-redo-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-redo-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-select-all.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-undo-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-undo-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/folder-remote.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/folder.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-less-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-less-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-more-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-more-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-center.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-fill.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-left.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-right.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-bold.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-italic.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-strikethrough.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-underline.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-bottom.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-down.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-first-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-first-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-home.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-jump-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-jump-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-last-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-last-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-next-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-next-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-previous-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-previous-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-top.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-up.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-caps-lock-warning.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-color-picker.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-connect.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-convert.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-disconnect.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-edit.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-font.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-index.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-landscape.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-portrait.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-reverse-landscape.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-reverse-portrait.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-page-setup.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-preferences.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-select-color.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-select-font.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-undelete-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-undelete-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/help-about.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/help-contents.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/image-missing.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/list-add.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/list-remove.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-floppy.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-optical.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-pause.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-start-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-start-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-stop.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-record.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-backward-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-backward-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-forward-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-forward-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-backward-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-backward-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-forward-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-forward-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/network-idle.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-error.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-info.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-paused.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-warning.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/process-stop.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/system-run.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/text-x-generic.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/tools-check-spelling.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/user-desktop.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/user-home.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-fullscreen.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-refresh.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-restore.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-sort-ascending.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-sort-descending.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/window-close.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-fit-best.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-in.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-original.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-out.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-apply.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-cancel.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-no.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-ok.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-yes.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/20/window-close.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/application-exit.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-high.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-low.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-medium.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-muted.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/dialog-information.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-new.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-open-recent.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-open.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-print-preview.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-print.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-properties.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-revert-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-revert-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-save-as.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-save.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/drive-harddisk.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-clear.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-copy.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-cut.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-delete.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-find-replace.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-find.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-paste.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-redo-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-redo-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-select-all.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-undo-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-undo-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/folder-remote.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/folder.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-less-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-less-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-more-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-more-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-center.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-fill.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-left.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-right.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-bold.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-italic.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-strikethrough.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-underline.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-bottom.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-down.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-first-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-first-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-home.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-jump-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-jump-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-last-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-last-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-next-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-next-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-previous-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-previous-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-top.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-up.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-caps-lock-warning.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-color-picker.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-connect.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-convert.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-disconnect.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-edit.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-font.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-index.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-landscape.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-portrait.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-reverse-landscape.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-reverse-portrait.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-page-setup.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-preferences.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-select-color.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-select-font.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-undelete-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-undelete-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/help-about.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/help-contents.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/image-missing.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/list-add.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/list-remove.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-floppy.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-optical.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-pause.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-start-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-start-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-stop.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-record.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-backward-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-backward-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-forward-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-forward-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-backward-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-backward-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-forward-ltr.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-forward-rtl.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/network-idle.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-error.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-info.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-paused.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-warning.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/process-stop.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/system-run.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/text-x-generic.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/tools-check-spelling.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/user-desktop.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/user-home.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-fullscreen.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-refresh.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-restore.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-sort-ascending.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-sort-descending.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/window-close.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-fit-best.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-in.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-original.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-out.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/32/gtk-dnd-multiple.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/32/gtk-dnd.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-error.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-information.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-password.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-question.png \ + packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-warning.png \ + packaging/macosx/ScriptExec/English.lproj/InfoPlist.strings \ + packaging/macosx/ScriptExec/English.lproj/main.nib/classes.nib \ + packaging/macosx/ScriptExec/English.lproj/main.nib/info.nib \ + packaging/macosx/ScriptExec/English.lproj/main.nib/objects.xib \ + packaging/macosx/ScriptExec/Info.plist \ + packaging/macosx/ScriptExec/MenuBar.nib/classes.nib \ + packaging/macosx/ScriptExec/MenuBar.nib/info.nib \ + packaging/macosx/ScriptExec/MenuBar.nib/objects.xib \ packaging/macosx/ScriptExec/ScriptExec.xcodeproj/project.pbxproj \ + packaging/macosx/ScriptExec/ScriptExec_Prefix.pch \ + packaging/macosx/ScriptExec/launcher-quartz-no-macintegration.sh \ + packaging/macosx/ScriptExec/main.c \ + packaging/macosx/ScriptExec/openDoc \ + packaging/macosx/ScriptExec/script \ + packaging/macosx/ScriptExec/version.plist \ + packaging/macosx/create-stock-icon-theme.sh \ + packaging/macosx/dmg_background.png \ + packaging/macosx/dmg_background.svg \ + packaging/macosx/dmg_set_style.scpt \ + packaging/macosx/inkscape.ds_store \ + packaging/macosx/osx-app.sh \ + packaging/macosx/osx-build.sh \ + packaging/macosx/osx-dmg.sh \ + packaging/macosx/ports/devel/inkscape-packaging/Portfile \ + packaging/macosx/ports/lang/python25/Portfile \ + packaging/macosx/ports/lang/python25/files/_localemodule.c.ed \ + packaging/macosx/ports/lang/python25/files/locale.py.ed \ + packaging/macosx/ports/lang/python25/files/patch-64bit.diff \ + packaging/macosx/ports/lang/python25/files/patch-FSIORefNum.diff \ + packaging/macosx/ports/lang/python25/files/patch-Lib-cgi.py.diff \ + packaging/macosx/ports/lang/python25/files/patch-Lib-distutils-dist.py.diff \ + packaging/macosx/ports/lang/python25/files/patch-Makefile.pre.in.diff \ + packaging/macosx/ports/lang/python25/files/patch-Misc-setuid-prog.c.diff \ + packaging/macosx/ports/lang/python25/files/patch-Modules-posixmodule.c.diff \ + packaging/macosx/ports/lang/python25/files/patch-configure.diff \ + packaging/macosx/ports/lang/python25/files/patch-fwrapv.diff \ + packaging/macosx/ports/lang/python25/files/patch-libedit.diff \ + packaging/macosx/ports/lang/python25/files/patch-mac_ver.diff \ + packaging/macosx/ports/lang/python25/files/patch-pyconfig.h.in.diff \ + packaging/macosx/ports/lang/python25/files/patch-setup.py-disabled_modules.diff \ + packaging/macosx/ports/lang/python25/files/patch-setup.py.diff \ + packaging/macosx/ports/lang/python25/files/pyconfig.ed \ + packaging/macosx/ports/lang/python25/files/pyconfig.h-universal.ed \ + packaging/macosx/ports/lang/python25/files/python25 \ + packaging/macosx/ports/lang/python26/Portfile \ + packaging/macosx/ports/lang/python26/files/patch-Lib-cgi.py.diff \ + packaging/macosx/ports/lang/python26/files/patch-Lib-distutils-dist.py.diff \ + packaging/macosx/ports/lang/python26/files/patch-Mac-IDLE-Makefile.in.diff \ + packaging/macosx/ports/lang/python26/files/patch-Mac-Makefile.in.diff \ + packaging/macosx/ports/lang/python26/files/patch-Mac-PythonLauncher-Makefile.in.diff \ + packaging/macosx/ports/lang/python26/files/patch-Mac-Tools-Doc-setup.py.diff \ + packaging/macosx/ports/lang/python26/files/patch-Makefile.pre.in.diff \ + packaging/macosx/ports/lang/python26/files/patch-setup.py.diff \ + packaging/macosx/ports/lang/python26/files/pyconfig.ed \ + packaging/macosx/ports/lang/python26/files/python26 \ + packaging/macosx/ports/lang/python26/files/version.plist \ + packaging/macosx/ports/python/py-Pillow/Portfile \ + packaging/macosx/ports/python/py-Pillow/files/patch-setup.py.diff \ + packaging/macosx/ports/python/py-sk1libs/Portfile \ + packaging/macosx/ports/python/py-sk1libs/files/patch-src-imaging-libimagingft-_imagingft.c.diff \ + packaging/macosx/ports/python/py-sk1libs/files/patch-src-utils-fs.py.diff \ + packaging/macosx/ports/python/py-uniconvertor/Portfile \ + packaging/macosx/ports/python/py25-Pillow/Portfile \ + packaging/macosx/ports/python/py25-Pillow/files/patch-_imagingft.c.diff \ + packaging/macosx/ports/python/py25-Pillow/files/patch-setup.py-v1.7.8.diff \ + packaging/macosx/ports/python/py25-lxml/Portfile \ + packaging/macosx/ports/python/py25-nose/Portfile \ + packaging/macosx/ports/python/py25-nose/files/nosetests24 \ + packaging/macosx/ports/python/py25-nose/files/nosetests25 \ + packaging/macosx/ports/python/py25-nose/files/nosetests26 \ + packaging/macosx/ports/python/py25-nose/files/nosetests27 \ + packaging/macosx/ports/python/py25-nose/files/nosetests31 \ + packaging/macosx/ports/python/py25-nose/files/nosetests32 \ + packaging/macosx/ports/python/py25-nose/files/nosetests33 \ + packaging/macosx/ports/python/py25-nose/files/nosetests34 \ + packaging/macosx/ports/python/py25-numpy/Portfile \ + packaging/macosx/ports/python/py25-numpy/files/patch-f2py_setup.py.diff \ + packaging/macosx/ports/python/py25-numpy/files/patch-fcompiler_g95.diff \ + packaging/macosx/ports/python/py25-numpy/files/patch-numpy_distutils_fcompiler___init__.py.diff \ + packaging/macosx/ports/python/py25-numpy/files/patch-numpy_linalg_setup.py.diff \ + packaging/macosx/ports/python/py25-numpy/files/patch-setup.py.diff \ + packaging/macosx/ports/python/py25-numpy/files/wrapper-template \ + packaging/macosx/ports/python/py25-setuptools/Portfile \ packaging/win32/inkscape.nsi \ packaging/win32/inkscape.nsi.uninstall \ packaging/win32/languages/Breton.nsh \ diff --git a/_clang-format b/_clang-format index 560efa208..1ba4cdbdc 100644 --- a/_clang-format +++ b/_clang-format @@ -16,7 +16,7 @@ BreakBeforeTernaryOperators: true BreakConstructorInitializersBeforeComma: true BinPackParameters: true ColumnLimit: 120 -ConstructorInitializerAllOnOneLineOrOnePerLine: true +ConstructorInitializerAllOnOneLineOrOnePerLine: false DerivePointerBinding: false ExperimentalAutoDetectBinPacking: false IndentCaseLabels: true diff --git a/configure.ac b/configure.ac index cb1203698..05f634636 100644 --- a/configure.ac +++ b/configure.ac @@ -529,27 +529,32 @@ AC_ARG_ENABLE(wpg, with_libwpg=no if test "x$enable_wpg" = "xyes"; then - PKG_CHECK_MODULES(LIBWPG01, libwpg-0.1 libwpg-stream-0.1, with_libwpg01=yes, with_libwpg01=no) - if test "x$with_libwpg01" = "xyes"; then - AC_DEFINE(WITH_LIBWPG01,1,[Build in libwpg 0.1.x]) + dnl ************************************************************** + dnl Try using librevenge framework first. Fall back to old libs + dnl if unavailable. + dnl TODO: Drop subsequent tests once this is widespread in distros + dnl ************************************************************** + PKG_CHECK_MODULES(LIBWPG03, libwpg-0.3 librevenge-0.0 librevenge-stream-0.0, with_libwpg03=yes, with_libwpg03=no) + if test "x$with_libwpg03" = "xyes"; then + AC_DEFINE(WITH_LIBWPG03,1,[Build using libwpg 0.3.x]) with_libwpg=yes - AC_SUBST(LIBWPG_LIBS, $LIBWPG01_LIBS) - AC_SUBST(LIBWPG_CFLAGS, $LIBWPG01_CFLAGS) - fi - - PKG_CHECK_MODULES(LIBWPG02, libwpg-0.2 libwpd-0.9 libwpd-stream-0.9, with_libwpg02=yes, with_libwpg02=no) - if test "x$with_libwpg02" = "xyes"; then - AC_DEFINE(WITH_LIBWPG02,1,[Build in libwpg 0.2.x]) - with_libwpg=yes - AC_SUBST(LIBWPG_LIBS, $LIBWPG02_LIBS) - AC_SUBST(LIBWPG_CFLAGS, $LIBWPG02_CFLAGS) + AC_SUBST(LIBWPG_LIBS, $LIBWPG03_LIBS) + AC_SUBST(LIBWPG_CFLAGS, $LIBWPG03_CFLAGS) + else + PKG_CHECK_MODULES(LIBWPG02, libwpg-0.2 libwpd-0.9 libwpd-stream-0.9, with_libwpg02=yes, with_libwpg02=no) + if test "x$with_libwpg02" = "xyes"; then + AC_DEFINE(WITH_LIBWPG02,1,[Build using libwpg 0.2.x]) + with_libwpg=yes + AC_SUBST(LIBWPG_LIBS, $LIBWPG02_LIBS) + AC_SUBST(LIBWPG_CFLAGS, $LIBWPG02_CFLAGS) + fi fi if test "x$with_libwpg" = "xyes"; then AC_DEFINE(WITH_LIBWPG,1,[Build in libwpg]) fi fi -AM_CONDITIONAL(WITH_LIBWPG01, test "x$with_libwpg01" = "xyes") +AM_CONDITIONAL(WITH_LIBWPG03, test "x$with_libwpg03" = "xyes") AM_CONDITIONAL(WITH_LIBWPG02, test "x$with_libwpg02" = "xyes") AM_CONDITIONAL(WITH_LIBWPG, test "x$with_libwpg" = "xyes") @@ -564,14 +569,33 @@ AC_ARG_ENABLE(visio, with_libvisio=no if test "x$enable_visio" = "xyes"; then - PKG_CHECK_MODULES(LIBVISIO, libvisio-0.0 >= 0.0.20 libwpd-0.9 libwpd-stream-0.9 libwpg-0.2, with_libvisio=yes, with_libvisio=no) + dnl ************************************************************** + dnl Try using librevenge framework first. Fall back to old libs + dnl if unavailable. + dnl TODO: Drop subsequent tests once this is widespread in distros + dnl ************************************************************** + PKG_CHECK_MODULES(LIBVISIO01, libvisio-0.1 librevenge-0.0 librevenge-stream-0.0, with_libvisio01=yes, with_libvisio01=no) + if test "x$with_libvisio01" = "xyes"; then + AC_DEFINE(WITH_LIBVISIO01,1,[Build using libvisio 0.1.x]) + with_libvisio=yes + AC_SUBST(LIBVISIO_LIBS, $LIBVISIO01_LIBS) + AC_SUBST(LIBVISIO_CFLAGS, $LIBVISIO01_CFLAGS) + else + PKG_CHECK_MODULES(LIBVISIO00, libvisio-0.0 >= 0.0.20 libwpd-0.9 libwpd-stream-0.9 libwpg-0.2, with_libvisio00=yes, with_libvisio00=no) + if test "x$with_libvisio00" = "xyes"; then + AC_DEFINE(WITH_LIBVISIO00,1,[Build using libvisio 0.0.x]) + with_libvisio=yes + AC_SUBST(LIBVISIO_LIBS, $LIBVISIO00_LIBS) + AC_SUBST(LIBVISIO_CFLAGS, $LIBVISIO00_CFLAGS) + fi + fi if test "x$with_libvisio" = "xyes"; then AC_DEFINE(WITH_LIBVISIO,1,[Build in libvisio]) fi fi -AC_SUBST(LIBVISIO_LIBS) -AC_SUBST(LIBVISIO_CFLAGS) +AM_CONDITIONAL(WITH_LIBVISIO01, test "x$with_libvisio01" = "xyes") +AM_CONDITIONAL(WITH_LIBVISIO00, test "x$with_libvisio00" = "xyes") AM_CONDITIONAL(WITH_LIBVISIO, test "x$with_libvisio" = "xyes") dnl ******************************** @@ -585,14 +609,33 @@ AC_ARG_ENABLE(cdr, with_libcdr=no if test "x$enable_cdr" = "xyes"; then - PKG_CHECK_MODULES(LIBCDR, libcdr-0.0 >= 0.0.3 libwpd-0.9 libwpd-stream-0.9 libwpg-0.2, with_libcdr=yes, with_libcdr=no) + dnl ************************************************************** + dnl Try using librevenge framework first. Fall back to old libs + dnl if unavailable. + dnl TODO: Drop subsequent tests once this is widespread in distros + dnl ************************************************************** + PKG_CHECK_MODULES(LIBCDR01, libcdr-0.1 librevenge-0.0 librevenge-stream-0.0, with_libcdr01=yes, with_libcdr01=no) + if test "x$with_libcdr01" = "xyes"; then + AC_DEFINE(WITH_LIBCDR01,1,[Build using libcdr 0.1.x]) + with_libcdr=yes + AC_SUBST(LIBCDR_LIBS, $LIBCDR01_LIBS) + AC_SUBST(LIBCDR_CFLAGS, $LIBCDR01_CFLAGS) + else + PKG_CHECK_MODULES(LIBCDR00, libcdr-0.0 >= 0.0.3 libwpd-0.9 libwpd-stream-0.9 libwpg-0.2, with_libcdr00=yes, with_libcdr00=no) + if test "x$with_libcdr00" = "xyes"; then + AC_DEFINE(WITH_LIBCDR00,1,[Build using libcdr 0.0.x]) + with_libcdr=yes + AC_SUBST(LIBCDR_LIBS, $LIBCDR00_LIBS) + AC_SUBST(LIBCDR_CFLAGS, $LIBCDR00_CFLAGS) + fi + fi if test "x$with_libcdr" = "xyes"; then AC_DEFINE(WITH_LIBCDR,1,[Build in libcdr]) fi fi -AC_SUBST(LIBCDR_LIBS) -AC_SUBST(LIBCDR_CFLAGS) +AM_CONDITIONAL(WITH_LIBCDR01, test "x$with_libcdr01" = "xyes") +AM_CONDITIONAL(WITH_LIBCDR00, test "x$with_libcdr00" = "xyes") AM_CONDITIONAL(WITH_LIBCDR, test "x$with_libcdr" = "xyes") dnl ****************************** diff --git a/jenkins/jenkins-gtk2.sh b/jenkins/jenkins-gtk2.sh new file mode 100644 index 000000000..4428c4d75 --- /dev/null +++ b/jenkins/jenkins-gtk2.sh @@ -0,0 +1,8 @@ +#!/bin/sh
+
+# This script is called by Jenkins in the scheduled gtk2 job
+
+./autogen.sh
+./configure
+make clean
+make
diff --git a/jenkins/jenkins-scanbuild.sh b/jenkins/jenkins-scanbuild.sh new file mode 100644 index 000000000..492cefead --- /dev/null +++ b/jenkins/jenkins-scanbuild.sh @@ -0,0 +1,13 @@ +./autogen.sh
+./configure
+make clean
+
+# do not exit immediately if any command fails
+set +e
+
+# directory to use for storing the scan-build report, this is where the Publish Clang Scan-Build Results plugin checks
+SCAN_BUILD_OUTPUTDIR="${WORKSPACE}/clangScanBuildReports"
+
+# generate the scan-build report
+scan-build -k -o ${SCAN_BUILD_OUTPUTDIR} make
+
diff --git a/packaging/macosx/README.txt b/packaging/macosx/README.txt new file mode 100644 index 000000000..31b4247f9 --- /dev/null +++ b/packaging/macosx/README.txt @@ -0,0 +1,31 @@ +Quick instructions: +=================== + +1) install MacPorts from source into $MP_PREFIX (e.g. "/opt/local-x11") + <https://www.macports.org/install.php> + +2) add MacPorts to your PATH environement variable, for example: + +$ export PATH="$MP_PREFIX/bin:$MP_PREFIX/sbin:$PATH" + +3) add 'ports/' subdirectory as local portfile repository: + +$ sudo sed -e '/^rsync:/i\'$'\n'"file://$(pwd)/ports" -i "" "$MP_PREFIX/etc/macports/sources.conf" + +4) index the new local portfile repository: + +$ (cd ports && portindex) + +5) add default variants for x11-based package to MacPorts' global variants: + +$ sudo bash -c "echo '+x11 -quartz -no_x11 +rsvg +Pillow -tkinter +gnome_vfs' >> \"$MP_PREFIX/etc/macports/variants.conf\"" + +6) install required dependencies: + +$ sudo port install inkscape-packaging + +7) compile inkscape, create app bundle and DMG: + +$ LIBPREFIX="$MP_PREFIX" ./osx-build.sh a c b -j 5 i p -s d + +8) upload the DMG. diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/application-exit.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/application-exit.png Binary files differnew file mode 100644 index 000000000..d070809f1 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/application-exit.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/dialog-information.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/dialog-information.png Binary files differnew file mode 100644 index 000000000..df87def2f --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/dialog-information.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-new.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-new.png Binary files differnew file mode 100644 index 000000000..7cd94435a --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-new.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-open-recent.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-open-recent.png Binary files differnew file mode 100644 index 000000000..61543990d --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-open-recent.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-open.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-open.png Binary files differnew file mode 100644 index 000000000..476185370 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-open.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-print-preview.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-print-preview.png Binary files differnew file mode 100644 index 000000000..45b44f324 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-print-preview.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-print.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-print.png Binary files differnew file mode 100644 index 000000000..5997b9222 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-print.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-properties.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-properties.png Binary files differnew file mode 100644 index 000000000..65d22e4fb --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-properties.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-revert-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-revert-ltr.png Binary files differnew file mode 100644 index 000000000..026014ca3 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-revert-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-revert-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-revert-rtl.png Binary files differnew file mode 100644 index 000000000..aaea1ff39 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-revert-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-save-as.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-save-as.png Binary files differnew file mode 100644 index 000000000..3409adc7a --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-save-as.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-save.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-save.png Binary files differnew file mode 100644 index 000000000..18b7d2419 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-save.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/drive-harddisk.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/drive-harddisk.png Binary files differnew file mode 100644 index 000000000..b714d86e2 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/drive-harddisk.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-clear.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-clear.png Binary files differnew file mode 100644 index 000000000..49ae8db9c --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-clear.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-copy.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-copy.png Binary files differnew file mode 100644 index 000000000..8dd48c494 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-copy.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-cut.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-cut.png Binary files differnew file mode 100644 index 000000000..ff87558fc --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-cut.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-delete.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-delete.png Binary files differnew file mode 100644 index 000000000..2c5a46733 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-delete.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-find-replace.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-find-replace.png Binary files differnew file mode 100644 index 000000000..fca34f52a --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-find-replace.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-find.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-find.png Binary files differnew file mode 100644 index 000000000..e9a40950b --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-find.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-paste.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-paste.png Binary files differnew file mode 100644 index 000000000..24588a3a4 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-paste.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-redo-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-redo-ltr.png Binary files differnew file mode 100644 index 000000000..f7923083b --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-redo-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-redo-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-redo-rtl.png Binary files differnew file mode 100644 index 000000000..7c6c250b6 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-redo-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-select-all.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-select-all.png Binary files differnew file mode 100644 index 000000000..e3bd4ba72 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-select-all.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-undo-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-undo-ltr.png Binary files differnew file mode 100644 index 000000000..b0c8a48d7 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-undo-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-undo-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-undo-rtl.png Binary files differnew file mode 100644 index 000000000..13e061e09 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-undo-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/folder-remote.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/folder-remote.png Binary files differnew file mode 100644 index 000000000..14ed14a12 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/folder-remote.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/folder.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/folder.png Binary files differnew file mode 100644 index 000000000..14ed14a12 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/folder.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-less-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-less-ltr.png Binary files differnew file mode 100644 index 000000000..776f5767e --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-less-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-less-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-less-rtl.png Binary files differnew file mode 100644 index 000000000..18ededbfc --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-less-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-more-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-more-ltr.png Binary files differnew file mode 100644 index 000000000..b00e21840 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-more-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-more-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-more-rtl.png Binary files differnew file mode 100644 index 000000000..015c495ef --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-more-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-center.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-center.png Binary files differnew file mode 100644 index 000000000..57d6a0e35 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-center.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-fill.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-fill.png Binary files differnew file mode 100644 index 000000000..a416b25ab --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-fill.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-left.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-left.png Binary files differnew file mode 100644 index 000000000..9a7abf7ff --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-left.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-right.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-right.png Binary files differnew file mode 100644 index 000000000..15b507332 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-right.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-bold.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-bold.png Binary files differnew file mode 100644 index 000000000..7e2c5dba9 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-bold.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-italic.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-italic.png Binary files differnew file mode 100644 index 000000000..867df5ded --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-italic.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-strikethrough.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-strikethrough.png Binary files differnew file mode 100644 index 000000000..8a844a3a9 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-strikethrough.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-underline.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-underline.png Binary files differnew file mode 100644 index 000000000..35bcc8127 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-underline.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-bottom.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-bottom.png Binary files differnew file mode 100644 index 000000000..69aaafc2c --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-bottom.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-down.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-down.png Binary files differnew file mode 100644 index 000000000..dcde30f02 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-down.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-first-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-first-ltr.png Binary files differnew file mode 100644 index 000000000..689ba0a96 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-first-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-first-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-first-rtl.png Binary files differnew file mode 100644 index 000000000..a653e10ed --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-first-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-home.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-home.png Binary files differnew file mode 100644 index 000000000..fadd43dc3 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-home.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-jump-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-jump-ltr.png Binary files differnew file mode 100644 index 000000000..0f0f57a1a --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-jump-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-jump-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-jump-rtl.png Binary files differnew file mode 100644 index 000000000..0f03be58d --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-jump-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-last-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-last-ltr.png Binary files differnew file mode 100644 index 000000000..a653e10ed --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-last-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-last-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-last-rtl.png Binary files differnew file mode 100644 index 000000000..689ba0a96 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-last-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-next-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-next-ltr.png Binary files differnew file mode 100644 index 000000000..5b9e3f0d1 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-next-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-next-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-next-rtl.png Binary files differnew file mode 100644 index 000000000..9e77ac2ea --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-next-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-previous-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-previous-ltr.png Binary files differnew file mode 100644 index 000000000..9e77ac2ea --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-previous-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-previous-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-previous-rtl.png Binary files differnew file mode 100644 index 000000000..5b9e3f0d1 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-previous-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-top.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-top.png Binary files differnew file mode 100644 index 000000000..0a3b1bfba --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-top.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-up.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-up.png Binary files differnew file mode 100644 index 000000000..432225f51 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-up.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-caps-lock-warning.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-caps-lock-warning.png Binary files differnew file mode 100644 index 000000000..0dfa41876 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-caps-lock-warning.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-color-picker.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-color-picker.png Binary files differnew file mode 100644 index 000000000..24233cde0 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-color-picker.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-connect.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-connect.png Binary files differnew file mode 100644 index 000000000..097969a7c --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-connect.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-convert.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-convert.png Binary files differnew file mode 100644 index 000000000..e4d912579 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-convert.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-disconnect.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-disconnect.png Binary files differnew file mode 100644 index 000000000..3dece1068 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-disconnect.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-edit.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-edit.png Binary files differnew file mode 100644 index 000000000..c5da3f9fb --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-edit.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-font.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-font.png Binary files differnew file mode 100644 index 000000000..2514b6167 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-font.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-index.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-index.png Binary files differnew file mode 100644 index 000000000..0967a61c3 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-index.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-landscape.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-landscape.png Binary files differnew file mode 100644 index 000000000..748bb502d --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-landscape.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-portrait.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-portrait.png Binary files differnew file mode 100644 index 000000000..94f078d91 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-portrait.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-reverse-landscape.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-reverse-landscape.png Binary files differnew file mode 100644 index 000000000..2a732a6ee --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-reverse-landscape.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-reverse-portrait.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-reverse-portrait.png Binary files differnew file mode 100644 index 000000000..c79cea355 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-reverse-portrait.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-page-setup.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-page-setup.png Binary files differnew file mode 100644 index 000000000..61b46d998 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-page-setup.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-preferences.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-preferences.png Binary files differnew file mode 100644 index 000000000..9703a40df --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-preferences.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-select-color.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-select-color.png Binary files differnew file mode 100644 index 000000000..2c764b374 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-select-color.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-select-font.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-select-font.png Binary files differnew file mode 100644 index 000000000..2514b6167 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-select-font.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-undelete-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-undelete-ltr.png Binary files differnew file mode 100644 index 000000000..cc58d0fb5 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-undelete-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-undelete-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-undelete-rtl.png Binary files differnew file mode 100644 index 000000000..a312dd854 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-undelete-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/help-about.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/help-about.png Binary files differnew file mode 100644 index 000000000..010d294a7 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/help-about.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/help-contents.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/help-contents.png Binary files differnew file mode 100644 index 000000000..20ae955c3 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/help-contents.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/image-missing.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/image-missing.png Binary files differnew file mode 100644 index 000000000..84b26afd6 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/image-missing.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/list-add.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/list-add.png Binary files differnew file mode 100644 index 000000000..9cd9e5cf2 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/list-add.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/list-remove.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/list-remove.png Binary files differnew file mode 100644 index 000000000..0ed9c2210 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/list-remove.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-floppy.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-floppy.png Binary files differnew file mode 100644 index 000000000..18b7d2419 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-floppy.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-optical.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-optical.png Binary files differnew file mode 100644 index 000000000..922f452f1 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-optical.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-pause.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-pause.png Binary files differnew file mode 100644 index 000000000..8b70f471a --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-pause.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-start-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-start-ltr.png Binary files differnew file mode 100644 index 000000000..e7e2584db --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-start-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-start-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-start-rtl.png Binary files differnew file mode 100644 index 000000000..e3cb29165 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-start-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-stop.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-stop.png Binary files differnew file mode 100644 index 000000000..c844e8322 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-stop.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-record.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-record.png Binary files differnew file mode 100644 index 000000000..93b2ec100 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-record.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-backward-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-backward-ltr.png Binary files differnew file mode 100644 index 000000000..4972cb7ba --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-backward-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-backward-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-backward-rtl.png Binary files differnew file mode 100644 index 000000000..a02022474 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-backward-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-forward-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-forward-ltr.png Binary files differnew file mode 100644 index 000000000..a02022474 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-forward-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-forward-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-forward-rtl.png Binary files differnew file mode 100644 index 000000000..4972cb7ba --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-forward-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-backward-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-backward-ltr.png Binary files differnew file mode 100644 index 000000000..67dbb2e16 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-backward-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-backward-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-backward-rtl.png Binary files differnew file mode 100644 index 000000000..08ad0b69a --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-backward-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-forward-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-forward-ltr.png Binary files differnew file mode 100644 index 000000000..08ad0b69a --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-forward-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-forward-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-forward-rtl.png Binary files differnew file mode 100644 index 000000000..67dbb2e16 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-forward-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/network-idle.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/network-idle.png Binary files differnew file mode 100644 index 000000000..e74e060ea --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/network-idle.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-error.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-error.png Binary files differnew file mode 100644 index 000000000..934ee68d3 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-error.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-info.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-info.png Binary files differnew file mode 100644 index 000000000..8e2ab7487 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-info.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-paused.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-paused.png Binary files differnew file mode 100644 index 000000000..ebd5ac60c --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-paused.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-warning.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-warning.png Binary files differnew file mode 100644 index 000000000..52410c38d --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-warning.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/process-stop.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/process-stop.png Binary files differnew file mode 100644 index 000000000..d88fed703 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/process-stop.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/system-run.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/system-run.png Binary files differnew file mode 100644 index 000000000..c9c48d6a3 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/system-run.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/text-x-generic.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/text-x-generic.png Binary files differnew file mode 100644 index 000000000..7cd94435a --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/text-x-generic.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/tools-check-spelling.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/tools-check-spelling.png Binary files differnew file mode 100644 index 000000000..32dcc2e63 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/tools-check-spelling.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/user-desktop.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/user-desktop.png Binary files differnew file mode 100644 index 000000000..14ed14a12 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/user-desktop.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/user-home.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/user-home.png Binary files differnew file mode 100644 index 000000000..14ed14a12 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/user-home.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-fullscreen.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-fullscreen.png Binary files differnew file mode 100644 index 000000000..b9e9ea632 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-fullscreen.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-refresh.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-refresh.png Binary files differnew file mode 100644 index 000000000..e9ea8c4e5 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-refresh.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-restore.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-restore.png Binary files differnew file mode 100644 index 000000000..49966a996 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-restore.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-sort-ascending.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-sort-ascending.png Binary files differnew file mode 100644 index 000000000..3f8fd257f --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-sort-ascending.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-sort-descending.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-sort-descending.png Binary files differnew file mode 100644 index 000000000..a8aa70584 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-sort-descending.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/window-close.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/window-close.png Binary files differnew file mode 100644 index 000000000..52f58630f --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/window-close.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-fit-best.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-fit-best.png Binary files differnew file mode 100644 index 000000000..adbf7f3a2 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-fit-best.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-in.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-in.png Binary files differnew file mode 100644 index 000000000..6b1b94336 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-in.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-original.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-original.png Binary files differnew file mode 100644 index 000000000..92dddd2ea --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-original.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-out.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-out.png Binary files differnew file mode 100644 index 000000000..ddc1eb136 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-out.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-apply.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-apply.png Binary files differnew file mode 100644 index 000000000..afca0732a --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-apply.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-cancel.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-cancel.png Binary files differnew file mode 100644 index 000000000..0a395c099 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-cancel.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-no.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-no.png Binary files differnew file mode 100644 index 000000000..2a7da6e2a --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-no.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-ok.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-ok.png Binary files differnew file mode 100644 index 000000000..c08115f62 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-ok.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-yes.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-yes.png Binary files differnew file mode 100644 index 000000000..e56236638 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-yes.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/20/window-close.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/20/window-close.png Binary files differnew file mode 100644 index 000000000..a13d1984b --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/20/window-close.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/application-exit.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/application-exit.png Binary files differnew file mode 100644 index 000000000..0c9de64ba --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/application-exit.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-high.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-high.png Binary files differnew file mode 100644 index 000000000..7de1e0e4f --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-high.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-low.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-low.png Binary files differnew file mode 100644 index 000000000..4152b6c9f --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-low.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-medium.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-medium.png Binary files differnew file mode 100644 index 000000000..8d899cfa5 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-medium.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-muted.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-muted.png Binary files differnew file mode 100644 index 000000000..6902efdc6 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-muted.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/dialog-information.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/dialog-information.png Binary files differnew file mode 100644 index 000000000..b66871a94 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/dialog-information.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-new.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-new.png Binary files differnew file mode 100644 index 000000000..c89e797b7 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-new.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-open-recent.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-open-recent.png Binary files differnew file mode 100644 index 000000000..5edf531e3 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-open-recent.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-open.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-open.png Binary files differnew file mode 100644 index 000000000..312e1187f --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-open.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-print-preview.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-print-preview.png Binary files differnew file mode 100644 index 000000000..7f405de58 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-print-preview.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-print.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-print.png Binary files differnew file mode 100644 index 000000000..05d22d7a8 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-print.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-properties.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-properties.png Binary files differnew file mode 100644 index 000000000..297c86b0c --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-properties.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-revert-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-revert-ltr.png Binary files differnew file mode 100644 index 000000000..3046794e7 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-revert-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-revert-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-revert-rtl.png Binary files differnew file mode 100644 index 000000000..46435e1a0 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-revert-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-save-as.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-save-as.png Binary files differnew file mode 100644 index 000000000..5da8a02dc --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-save-as.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-save.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-save.png Binary files differnew file mode 100644 index 000000000..7ef7685f4 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-save.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/drive-harddisk.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/drive-harddisk.png Binary files differnew file mode 100644 index 000000000..1be6b6c88 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/drive-harddisk.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-clear.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-clear.png Binary files differnew file mode 100644 index 000000000..590f673db --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-clear.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-copy.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-copy.png Binary files differnew file mode 100644 index 000000000..a1178e64f --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-copy.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-cut.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-cut.png Binary files differnew file mode 100644 index 000000000..82b105f80 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-cut.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-delete.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-delete.png Binary files differnew file mode 100644 index 000000000..e375b894e --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-delete.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-find-replace.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-find-replace.png Binary files differnew file mode 100644 index 000000000..ed81e5a82 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-find-replace.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-find.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-find.png Binary files differnew file mode 100644 index 000000000..5c83fb689 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-find.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-paste.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-paste.png Binary files differnew file mode 100644 index 000000000..e938c3e99 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-paste.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-redo-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-redo-ltr.png Binary files differnew file mode 100644 index 000000000..3da43f0c0 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-redo-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-redo-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-redo-rtl.png Binary files differnew file mode 100644 index 000000000..f2c1a50a1 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-redo-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-select-all.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-select-all.png Binary files differnew file mode 100644 index 000000000..1fc5b8282 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-select-all.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-undo-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-undo-ltr.png Binary files differnew file mode 100644 index 000000000..3b12a233a --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-undo-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-undo-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-undo-rtl.png Binary files differnew file mode 100644 index 000000000..3ba7d6240 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-undo-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/folder-remote.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/folder-remote.png Binary files differnew file mode 100644 index 000000000..28b68f338 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/folder-remote.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/folder.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/folder.png Binary files differnew file mode 100644 index 000000000..28b68f338 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/folder.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-less-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-less-ltr.png Binary files differnew file mode 100644 index 000000000..36d231434 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-less-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-less-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-less-rtl.png Binary files differnew file mode 100644 index 000000000..a6f7dc19b --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-less-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-more-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-more-ltr.png Binary files differnew file mode 100644 index 000000000..7e3656dc4 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-more-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-more-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-more-rtl.png Binary files differnew file mode 100644 index 000000000..5527663fd --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-more-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-center.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-center.png Binary files differnew file mode 100644 index 000000000..35579d553 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-center.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-fill.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-fill.png Binary files differnew file mode 100644 index 000000000..eaf9a460b --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-fill.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-left.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-left.png Binary files differnew file mode 100644 index 000000000..07db84109 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-left.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-right.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-right.png Binary files differnew file mode 100644 index 000000000..9bbd47ca0 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-right.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-bold.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-bold.png Binary files differnew file mode 100644 index 000000000..9869fb8b1 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-bold.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-italic.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-italic.png Binary files differnew file mode 100644 index 000000000..8842b5aa7 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-italic.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-strikethrough.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-strikethrough.png Binary files differnew file mode 100644 index 000000000..04d464e28 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-strikethrough.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-underline.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-underline.png Binary files differnew file mode 100644 index 000000000..be0906d8a --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-underline.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-bottom.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-bottom.png Binary files differnew file mode 100644 index 000000000..79994416e --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-bottom.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-down.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-down.png Binary files differnew file mode 100644 index 000000000..2a0a8ea2c --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-down.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-first-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-first-ltr.png Binary files differnew file mode 100644 index 000000000..e44f9b612 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-first-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-first-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-first-rtl.png Binary files differnew file mode 100644 index 000000000..3ba5c4ba7 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-first-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-home.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-home.png Binary files differnew file mode 100644 index 000000000..a2e0b3c96 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-home.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-jump-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-jump-ltr.png Binary files differnew file mode 100644 index 000000000..9b639939f --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-jump-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-jump-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-jump-rtl.png Binary files differnew file mode 100644 index 000000000..80068face --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-jump-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-last-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-last-ltr.png Binary files differnew file mode 100644 index 000000000..3ba5c4ba7 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-last-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-last-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-last-rtl.png Binary files differnew file mode 100644 index 000000000..e44f9b612 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-last-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-next-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-next-ltr.png Binary files differnew file mode 100644 index 000000000..727ff37f2 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-next-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-next-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-next-rtl.png Binary files differnew file mode 100644 index 000000000..23b89b761 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-next-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-previous-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-previous-ltr.png Binary files differnew file mode 100644 index 000000000..23b89b761 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-previous-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-previous-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-previous-rtl.png Binary files differnew file mode 100644 index 000000000..727ff37f2 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-previous-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-top.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-top.png Binary files differnew file mode 100644 index 000000000..9b98fd26f --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-top.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-up.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-up.png Binary files differnew file mode 100644 index 000000000..3df5fe511 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-up.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-caps-lock-warning.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-caps-lock-warning.png Binary files differnew file mode 100644 index 000000000..ca76d509b --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-caps-lock-warning.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-color-picker.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-color-picker.png Binary files differnew file mode 100644 index 000000000..fd97f343c --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-color-picker.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-connect.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-connect.png Binary files differnew file mode 100644 index 000000000..97f2143fb --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-connect.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-convert.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-convert.png Binary files differnew file mode 100644 index 000000000..da8194fa8 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-convert.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-disconnect.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-disconnect.png Binary files differnew file mode 100644 index 000000000..883a003bc --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-disconnect.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-edit.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-edit.png Binary files differnew file mode 100644 index 000000000..f429e1015 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-edit.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-font.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-font.png Binary files differnew file mode 100644 index 000000000..cde0e8698 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-font.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-index.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-index.png Binary files differnew file mode 100644 index 000000000..9ddbe9b8e --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-index.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-landscape.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-landscape.png Binary files differnew file mode 100644 index 000000000..fcf7f2a49 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-landscape.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-portrait.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-portrait.png Binary files differnew file mode 100644 index 000000000..cb7b760bc --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-portrait.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-reverse-landscape.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-reverse-landscape.png Binary files differnew file mode 100644 index 000000000..69ade2524 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-reverse-landscape.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-reverse-portrait.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-reverse-portrait.png Binary files differnew file mode 100644 index 000000000..c309a6d82 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-reverse-portrait.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-page-setup.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-page-setup.png Binary files differnew file mode 100644 index 000000000..9acf0d5ff --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-page-setup.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-preferences.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-preferences.png Binary files differnew file mode 100644 index 000000000..2596f3cc5 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-preferences.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-select-color.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-select-color.png Binary files differnew file mode 100644 index 000000000..0e71c35d7 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-select-color.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-select-font.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-select-font.png Binary files differnew file mode 100644 index 000000000..cde0e8698 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-select-font.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-undelete-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-undelete-ltr.png Binary files differnew file mode 100644 index 000000000..bccc39e7c --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-undelete-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-undelete-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-undelete-rtl.png Binary files differnew file mode 100644 index 000000000..22023b853 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-undelete-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/help-about.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/help-about.png Binary files differnew file mode 100644 index 000000000..063d0df43 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/help-about.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/help-contents.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/help-contents.png Binary files differnew file mode 100644 index 000000000..b00fbd8c1 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/help-contents.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/image-missing.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/image-missing.png Binary files differnew file mode 100644 index 000000000..90e26e5bc --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/image-missing.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/list-add.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/list-add.png Binary files differnew file mode 100644 index 000000000..2f8b70d9c --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/list-add.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/list-remove.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/list-remove.png Binary files differnew file mode 100644 index 000000000..0bd69c92c --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/list-remove.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-floppy.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-floppy.png Binary files differnew file mode 100644 index 000000000..7ef7685f4 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-floppy.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-optical.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-optical.png Binary files differnew file mode 100644 index 000000000..c4358f5f8 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-optical.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-pause.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-pause.png Binary files differnew file mode 100644 index 000000000..6187ba6d2 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-pause.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-start-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-start-ltr.png Binary files differnew file mode 100644 index 000000000..0f5348900 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-start-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-start-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-start-rtl.png Binary files differnew file mode 100644 index 000000000..036f05f55 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-start-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-stop.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-stop.png Binary files differnew file mode 100644 index 000000000..9e54ef3f5 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-stop.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-record.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-record.png Binary files differnew file mode 100644 index 000000000..d1b25c2f1 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-record.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-backward-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-backward-ltr.png Binary files differnew file mode 100644 index 000000000..508808285 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-backward-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-backward-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-backward-rtl.png Binary files differnew file mode 100644 index 000000000..4a1bdf89b --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-backward-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-forward-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-forward-ltr.png Binary files differnew file mode 100644 index 000000000..4a1bdf89b --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-forward-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-forward-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-forward-rtl.png Binary files differnew file mode 100644 index 000000000..508808285 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-forward-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-backward-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-backward-ltr.png Binary files differnew file mode 100644 index 000000000..c3a649f4e --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-backward-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-backward-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-backward-rtl.png Binary files differnew file mode 100644 index 000000000..3da34257d --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-backward-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-forward-ltr.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-forward-ltr.png Binary files differnew file mode 100644 index 000000000..3da34257d --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-forward-ltr.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-forward-rtl.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-forward-rtl.png Binary files differnew file mode 100644 index 000000000..c3a649f4e --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-forward-rtl.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/network-idle.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/network-idle.png Binary files differnew file mode 100644 index 000000000..a6f14418b --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/network-idle.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-error.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-error.png Binary files differnew file mode 100644 index 000000000..28517473d --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-error.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-info.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-info.png Binary files differnew file mode 100644 index 000000000..13304368e --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-info.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-paused.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-paused.png Binary files differnew file mode 100644 index 000000000..da6df48a9 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-paused.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-warning.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-warning.png Binary files differnew file mode 100644 index 000000000..dd70e0be9 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-warning.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/process-stop.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/process-stop.png Binary files differnew file mode 100644 index 000000000..54e1cb3e9 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/process-stop.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/system-run.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/system-run.png Binary files differnew file mode 100644 index 000000000..2b11b5075 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/system-run.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/text-x-generic.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/text-x-generic.png Binary files differnew file mode 100644 index 000000000..c89e797b7 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/text-x-generic.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/tools-check-spelling.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/tools-check-spelling.png Binary files differnew file mode 100644 index 000000000..2574c181f --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/tools-check-spelling.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/user-desktop.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/user-desktop.png Binary files differnew file mode 100644 index 000000000..28b68f338 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/user-desktop.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/user-home.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/user-home.png Binary files differnew file mode 100644 index 000000000..28b68f338 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/user-home.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-fullscreen.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-fullscreen.png Binary files differnew file mode 100644 index 000000000..21462fe0e --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-fullscreen.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-refresh.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-refresh.png Binary files differnew file mode 100644 index 000000000..09b5df1d1 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-refresh.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-restore.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-restore.png Binary files differnew file mode 100644 index 000000000..ff9c2289d --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-restore.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-sort-ascending.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-sort-ascending.png Binary files differnew file mode 100644 index 000000000..44c871133 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-sort-ascending.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-sort-descending.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-sort-descending.png Binary files differnew file mode 100644 index 000000000..d498a59a5 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-sort-descending.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/window-close.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/window-close.png Binary files differnew file mode 100644 index 000000000..312b84dae --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/window-close.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-fit-best.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-fit-best.png Binary files differnew file mode 100644 index 000000000..dfbdf9b6e --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-fit-best.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-in.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-in.png Binary files differnew file mode 100644 index 000000000..3a386fae7 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-in.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-original.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-original.png Binary files differnew file mode 100644 index 000000000..499cbd6c6 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-original.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-out.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-out.png Binary files differnew file mode 100644 index 000000000..22afd1951 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-out.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/32/gtk-dnd-multiple.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/32/gtk-dnd-multiple.png Binary files differnew file mode 100644 index 000000000..dc09283f4 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/32/gtk-dnd-multiple.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/32/gtk-dnd.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/32/gtk-dnd.png Binary files differnew file mode 100644 index 000000000..c58e5a6f4 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/32/gtk-dnd.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-error.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-error.png Binary files differnew file mode 100644 index 000000000..cb03e5420 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-error.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-information.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-information.png Binary files differnew file mode 100644 index 000000000..d73990ecc --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-information.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-password.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-password.png Binary files differnew file mode 100644 index 000000000..f81198437 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-password.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-question.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-question.png Binary files differnew file mode 100644 index 000000000..14dbd9cac --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-question.png diff --git a/packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-warning.png b/packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-warning.png Binary files differnew file mode 100644 index 000000000..827a33918 --- /dev/null +++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-warning.png diff --git a/packaging/macosx/Resources/alert_fccache.sh b/packaging/macosx/Resources/alert_fccache.sh new file mode 100755 index 000000000..50038b2ac --- /dev/null +++ b/packaging/macosx/Resources/alert_fccache.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +ALERT_SCRIPT="$(cat << EOM +try + set parent_path to "$CWD" + set icon_path to POSIX path of (parent_path & "/Inkscape.icns") + set front_app to ((path to frontmost application) as text) + tell application front_app + display dialog "While Inkscape is open, its windows can be displayed or hidden by displaying or hiding the X11 application. + +The first time this version of Inkscape is run it may take several minutes before the main window is displayed while font caches are built." buttons {"OK"} default button 1 with title "Inkscape on OS X" with icon POSIX file icon_path + activate + end tell +end try +EOM)" + +if [ -z "$INK_CACHE_DIR" ]; then + export INK_CACHE_DIR="${HOME}/.cache/inkscape" + mkdir -p "$INK_CACHE_DIR" + [ $_DEBUG ] && echo "INK_CACHE_DIR: falling back to $INK_CACHE_DIR" +fi + +# Warn the user about time-consuming generation of fontconfig caches. +if [ ! -f "${INK_CACHE_DIR}/.fccache-new" ]; then + alert_result=$(osascript -e "$ALERT_SCRIPT") + mkdir -p "$INK_CACHE_DIR" + touch "${INK_CACHE_DIR}/.fccache-new" +fi diff --git a/packaging/macosx/Resources/bin/getdisplay.sh b/packaging/macosx/Resources/bin/getdisplay.sh deleted file mode 100755 index f7f383348..000000000 --- a/packaging/macosx/Resources/bin/getdisplay.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -# -# Author: Aaron Voisine <aaron@voisine.org> - -if [ "$DISPLAY"x == "x" ]; then - echo :0 > /tmp/display.$UID -else - echo $DISPLAY > /tmp/display.$UID -fi diff --git a/packaging/macosx/Resources/bin/gimp-wrapper.sh b/packaging/macosx/Resources/bin/gimp-wrapper.sh new file mode 100755 index 000000000..4cddfcc3a --- /dev/null +++ b/packaging/macosx/Resources/bin/gimp-wrapper.sh @@ -0,0 +1,96 @@ +#!/bin/bash +# +# simple gimp wrapper script for Inkscape.app +# + +#_DEBUG=true + +# --- defaults for GIMP.app + +app_id="org.gnome.gimp" +app_exec_default="GIMP" + + +# --- defaults for gimp in $PATH + +# path for local gimp install +PATH_local="/opt/local/bin" +# launch a specific gimp version? (e.g. gimp-2.9) +gimp_name="gimp" + + +# --- unset environment inherited from Inkscape.app + +unset XDG_CONFIG_HOME XDG_DATA_HOME XDG_CACHE_HOME +unset XDG_CONFIG_DIRS XDG_DATA_DIRS +unset GTK_PATH GTK_DATA_PREFIX GTK_EXE_PREFIX GTK_IM_MODULE_FILE GTK2_RC_FILES +unset FONTCONFIG_FILE FONTCONFIG_PATH HB_SHAPER_LIST PANGO_RC_FILE PANGO_SYSCONFDIR +unset GDK_PIXBUF_MODULE_FILE GSETTINGS_SCHEMA_DIR +unset DBUS_SESSION_BUS_PID DBUS_LAUNCHD_SESSION_BUS_SOCKET DBUS_SESSION_BUS_ADDRESS +unset GNOME_VFS_MODULE_CONFIG_PATH GNOME_VFS_MODULE_PATH +unset GIO_MODULE_DIR GVFS_MOUNTABLE_DIR +unset ASPELL_CONF +unset POPPLER_DATADIR +unset VERSIONER_PYTHON_VERSION VERSIONER_PYTHON_PREFER_32_BIT PYTHONPATH +unset MAGICK_HOME MAGICK_CONFIGURE_PATH MAGICK_CODER_FILTER_PATH MAGICK_CODER_MODULE_PATH +unset GS_LIB GS_ICC_PROFILES GS_RESOURCE_DIR GS_LIB GS_FONTPATH GS + + +# --- detect installed GIMP.app + +unset GIMP_APP + +APPLESCRIPT1="$(cat << EOM +try + tell application "Finder" + set theApp to application file id "$app_id" as string + set theApp_path to POSIX path of theApp as string + return theApp_path + end tell +end try +EOM)" + +GIMP_APP="$(osascript -e "$APPLESCRIPT1")" + + +# --- pass command line arguments to GIMP.app or gimp or exit + +if [ ! -z "$GIMP_APP" ]; then + + app_exec="$(defaults read "${GIMP_APP}/Contents/Info.plist" CFBundleExecutable)" + [[ $? -ne 0 ]] && app_exec="$app_exec_default" + + GIMP_APP_EXEC="${GIMP_APP}/Contents/MacOS/${app_exec}" + + [ $_DEBUG ] && echo "GIMP.app found as: $GIMP_APP" 1>&2 + [ $_DEBUG ] && echo "Command line arguments: $@" 1>&2 + if [ $# -eq 1 ]; then + [ $_DEBUG ] && echo "open -a $GIMP_APP $@" 1>&2 + open -a "$GIMP_APP" "$@" + else + [ $_DEBUG ] && echo "exec $GIMP_APP_EXEC $@" 1>&2 + exec "$GIMP_APP_EXEC" "$@" + fi + +else # --- test for gimp installed in PATH + + # remove CWD from path (we don't want to recursively call this script) + [ $_DEBUG ] && echo "orig PATH: $PATH" 1>&2 + PATH_cleaned="$(echo $PATH | sed 's|'"$(cd "$(dirname "$0")" && pwd)"':||g')" || exit 1 + [ $_DEBUG ] && echo "clean PATH: $PATH_cleaned" 1>&2 + export PATH="$PATH_local:$PATH_cleaned" + [ $_DEBUG ] && echo "final PATH: $PATH" 1>&2 + + type -p "$gimp_name" + + if [ $? -eq 0 ]; then + [ $_DEBUG ] && echo "gimp found in \$PATH: $PATH" 1>&2 + [ $_DEBUG ] && echo "Command line arguments: $@" 1>&2 + exec "$gimp_name" -n "$@" + else + echo "Giving up - couldn't find GIMP.app nor gimp." 1>&2 + fi + +fi + +# eof diff --git a/packaging/macosx/Resources/bin/inkscape b/packaging/macosx/Resources/bin/inkscape index 486877fa4..775f94e5c 100755 --- a/packaging/macosx/Resources/bin/inkscape +++ b/packaging/macosx/Resources/bin/inkscape @@ -4,71 +4,103 @@ # Inkscape Modifications: # Michael Wybrow <mjwybrow@users.sourceforge.net> # Jean-Olivier Irisson <jo.irisson@gmail.com> +# ~suv <suv-sf@users.sourceforge.net> # -CWD="`(cd \"\`dirname \\\"$0\\\"\`\"; echo \"$PWD\")`" +[ -n "$INK_DEBUG_LAUNCHER" ] && set -x + +CWD="$(cd "$(dirname "$0")" && pwd)" # e.g. /Applications/Inkscape.app/Contents/Resources/bin -TOP="`dirname \"$CWD\"`" +TOP="$(dirname "$CWD")" # e.g. /Applications/Inkscape.app/Contents/Resources +BASE="$(echo "$TOP" | sed -e 's/\/Contents\/Resources.*$//')" +# e.g. /Applications/Inkscape.app - -# Brutally add many things to the PATH. If the directories do not exist, they won't be used anyway. -# People should really use ~/.macosx/environment.plist to set environment variables as explained by Apple: -# http://developer.apple.com/qa/qa2001/qa1067.html -# but since no one does, we correct this by making the 'classic' PATH additions here: -# /usr/local/bin which, though standard, doesn't seem to be in the PATH -# newer python as recommended by MacPython http://www.python.org/download/mac/ -# Fink -# MacPorts (former DarwinPorts) -# LaTeX distribution for Mac OS X -export PATH="/usr/texbin:/opt/local/bin:/sw/bin/:/Library/Frameworks/Python.framework/Versions/Current/bin:/usr/local/bin:$CWD:$PATH" - -# Put /usr/bin at beginning of path so we make sure we use Apple's python -# over one that may be installed be Macports, Fink or some other means. -export PATH="/usr/bin:$PATH" - -# On Snow Leopard, use the 32-bit version of python from Universal build. -# This is because our bundled i386 python libraries are 32-bit only. -export VERSIONER_PYTHON_VERSION=2.6 -export VERSIONER_PYTHON_PREFER_32_BIT=yes - +# FIXME: Inkscape needs better relocation support for OS X (get rid of the relative +# path hack in src/path-prefix.h for osxapp-enabled builds). Until then, below change +# of working directory is required: +# +# Due to changes after 0.48, we have change working directory in the script named 'inkscape': +# recursive calls to inkscape from python-based extensions otherwise cause the app to hang or +# fail (for python-based extensions, inkscape changes the working directory to the +# script's directory, and inkscape launched by python script thus can't find resources +# like the now essential 'units.xml' in INKSCAPE_UIDIR relative to the working directory). +cd "$BASE" || exit 1 + +# don't prepend to $PATH in recursive calls: +if [ -z "$INK_PATH_ORIG" ]; then + + # Brutally add many things to the PATH. If the directories do not exist, they won't be used anyway. + # the 'classic' PATH additions: + # /usr/local/bin which, though standard, doesn't seem to be in the PATH + # Fink + # MacPorts (former DarwinPorts) + # LaTeX distribution for Mac OS X + PATH_OTHER="/usr/texbin:/opt/local/bin:/sw/bin/:/usr/local/bin" + + # Put /usr/bin at beginning of path so we make sure we use Apple's python + # over one that may be installed be Macports, Fink or some other means. + PATH_PYTHON="/usr/bin" + + # Put $TOP/bin at beginning of path so we make sure that recursive calls + # to inkscape don't pull in other inkscape binaries with different setup. + # Also allows to override system python with custom wrapper script, and + # e.g. to support GIMP.app or gimp for external editing and GIMP XCF export. + PATH_pkgbin="$TOP/bin" + + # save orig, new PATH + export INK_PATH_ORIG="$PATH" + export PATH="$PATH_pkgbin:$PATH_PYTHON:$PATH_OTHER:$INK_PATH_ORIG" +fi # Setup PYTHONPATH to use python modules shipped with Inkscape -ARCH=`arch` -PYTHON_VERS=`python -V 2>&1 | cut -c 8-10` -export PYTHONPATH="$TOP/python/site-packages/$ARCH/$PYTHON_VERS" -# NB: we are only preprending some stuff to the default python path so if the directory does not exist it should not harm the rest - -# No longer required if path rewriting has been conducted. -# export DYLD_LIBRARY_PATH="$TOP/lib" - -mkdir -p "${HOME}/.inkscape-etc" +OSXMINORNO="$(/usr/bin/sw_vers -productVersion | cut -d. -f2)" +build_arch=__build_arch__ +if [ $OSXMINORNO -gt "5" ]; then + if [ $OSXMINORNO -eq "6" ]; then + export VERSIONER_PYTHON_VERSION=2.6 + else # if [ $OSXMINORNO -ge "7" ]; then + export VERSIONER_PYTHON_VERSION=2.7 + fi + if [ $build_arch = "i386" ]; then + export VERSIONER_PYTHON_PREFER_32_BIT=yes + else # build & runtime arch x86_64 + export VERSIONER_PYTHON_PREFER_32_BIT=no + fi +fi +PYTHON_VERS="$(python -V 2>&1 | cut -c 8-10)" +export PYTHONPATH="$TOP/lib/python$PYTHON_VERS/site-packages/" export FONTCONFIG_PATH="$TOP/etc/fonts" -export PANGO_RC_FILE="$HOME/.inkscape-etc/pangorc" -export GTK_IM_MODULE_FILE="$HOME/.inkscape-etc/gtk.immodules" -export GDK_PIXBUF_MODULE_FILE="$HOME/.inkscape-etc/gdk-pixbuf.loaders" +export PANGO_RC_FILE="$TOP/etc/pango/pangorc" +export PANGO_SYSCONFDIR="$TOP/etc" +export GTK_IM_MODULE_FILE="$TOP/lib/gtk-2.0/__gtk_version__/immodules.cache" +export GDK_PIXBUF_MODULE_FILE="$TOP/lib/gdk-pixbuf-2.0/__gtk_version__/loaders.cache" export GTK_DATA_PREFIX="$TOP" export GTK_EXE_PREFIX="$TOP" +export GTK_PATH="$TOP" export GNOME_VFS_MODULE_CONFIG_PATH="$TOP/etc/gnome-vfs-2.0/modules" export GNOME_VFS_MODULE_PATH="$TOP/lib/gnome-vfs-2.0/modules" +export GIO_USE_VFS="local" +export GVFS_REMOTE_VOLUME_MONITOR_IGNORE=1 +export GVFS_DISABLE_FUSE=1 export XDG_DATA_DIRS="$TOP/share" export ASPELL_CONF="prefix $TOP;" +export POPPLER_DATADIR="$TOP/share/poppler" + +# no DBUS for now +unset DBUS_LAUNCHD_SESSION_BUS_SOCKET +unset DBUS_SESSION_BUS_ADDRESS # Note: This requires the path with the exact ImageMagic version number. -# Also, that ImageMagick will only work if it does not find a -# version installed into the same PREFIX as it was originally -# installed. Luckily, this is very unlikely given the extra long -# and strangely named install prefix we use. -# The actual version is inserted by the packaging script. -export MAGICK_CONFIGURE_PATH="$TOP/lib/ImageMagick-IMAGEMAGICKVER/config:$TOP/share/ImageMagick-IMAGEMAGICKVER/config" +# The actual version is inserted by the packaging script. +export MAGICK_CONFIGURE_PATH="$TOP/lib/ImageMagick-IMAGEMAGICKVER/config:$TOP/share/ImageMagick-IMAGEMAGICKVER_MAJOR/config" export MAGICK_CODER_FILTER_PATH="$TOP/lib/ImageMagick-IMAGEMAGICKVER/modules-Q16/filters" export MAGICK_CODER_MODULE_PATH="$TOP/lib/ImageMagick-IMAGEMAGICKVER/modules-Q16/coders" -export INKSCAPE_SHAREDIR="$TOP" -# TODO: move the share directory to a its own folder to make things a bit cleaner in the app bundle +export INKSCAPE_SHAREDIR="$TOP/share/inkscape" export INKSCAPE_PLUGINDIR="$TOP/lib/inkscape" -export INKSCAPE_LOCALEDIR="$TOP/locale" +export INKSCAPE_LOCALEDIR="$TOP/share/locale" # Handle the case where the directory storing Inkscape has special characters # ('#', '&', '|') in the name. These need to be escaped to work properly for @@ -77,38 +109,7 @@ ESCAPEDTOP=`echo "$TOP" | sed 's/#/\\\\\\\\#/' | sed 's/&/\\\\\\&/g' | sed 's/|/ # Set GTK theme (only if there is no .gtkrc-2.0 in the user's home) if [[ ! -e "$HOME/.gtkrc-2.0" ]]; then - # Appearance setting - aquaStyle=`defaults read "Apple Global Domain" AppleAquaColorVariant 2>/dev/null` - # 1 for aqua, 6 for graphite, inexistant if the default color was never changed - if [[ "$aquaStyle" == "" ]]; then - aquaStyle=1 # set aqua as default - fi - - # Highlight Color setting - hiliColor=`defaults read "Apple Global Domain" AppleHighlightColor 2>/dev/null` - # a RGB value, with components between 0 and 1, also inexistant if it was not changed - if [[ "$hiliColor" == "" ]]; then - hiliColor="0.709800 0.835300 1.000000" # set blue as default - fi - - # Menu items color - if [[ aquaStyle -eq 1 ]]; then - menuColor="#4a76cd" # blue - else - menuColor="#7c8da4" # graphite - fi - # Format highlight color as a GTK rgb value - hiliColorFormated=`echo $hiliColor | awk -F " " '{print "\\\{"$1","$2","$3"\\\}"}'` - - # echo $menuColor - # echo $hiliColorFormated - - # Modify the gtkrc - # - with the correct colors - # - to point to the correct scrollbars folder - sed 's/OSX_HILI_COLOR_PLACEHOLDER/'$hiliColorFormated'/g' "$INKSCAPE_SHAREDIR/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/pre_gtkrc" | sed 's/OSX_MENU_COLOR_PLACEHOLDER/\"'$menuColor'\"/g' | sed 's/AQUASTYLE_PLACEHOLDER/'$aquaStyle'/g' | sed 's|${THEMEDIR}|'"$ESCAPEDTOP/themes/Clearlooks-Quicksilver-OSX/gtk-2.0|g" > "${HOME}/.inkscape-etc/gtkrc" - - export GTK2_RC_FILES="$HOME/.inkscape-etc/gtkrc" + export GTK2_RC_FILES="$ESCAPEDTOP/etc/gtk-2.0/gtkrc" fi # If the AppleCollationOrder preference doesn't exist, we fall back to using @@ -116,12 +117,11 @@ fi LANGSTR=`defaults read .GlobalPreferences AppleCollationOrder 2>/dev/null` if [ "x$LANGSTR" == "x" -o "x$LANGSTR" == "xroot" ] then - echo "Warning: AppleCollationOrder setting not found, using AppleLocale." 1>&2 LANGSTR=`defaults read .GlobalPreferences AppleLocale 2>/dev/null | \ sed 's/_.*//'` - echo "Setting LANGSTR from AppleLocale: $LANGSTR" 1>&2 + [ $_DEBUG ] && echo "Setting LANGSTR from AppleLocale: $LANGSTR" 1>&2 else - echo "Setting LANGSTR from AppleCollationOrder: $LANGSTR" 1>&2 + [ $_DEBUG ] && echo "Setting LANGSTR from AppleCollationOrder: $LANGSTR" 1>&2 fi # NOTE: Have to add ".UTF-8" to the LANG since omitting causes Inkscape @@ -129,7 +129,7 @@ fi if [ "x$LANGSTR" == "x" ] then # override broken script - echo "Overriding empty LANGSTR" 1>&2 + [ $_DEBUG ] && echo "Overriding empty LANGSTR" 1>&2 export LANG="en_US.UTF-8" else tmpLANG="`grep \"\`echo $LANGSTR\`_\" /usr/share/locale/locale.alias | \ @@ -137,22 +137,30 @@ else if [ "x$tmpLANG" == "x" ] then # override broken script - echo "Overriding empty LANG from /usr/share/locale/locale.alias" 1>&2 + [ $_DEBUG ] && echo "Overriding empty LANG from /usr/share/locale/locale.alias" 1>&2 export LANG="en_US.UTF-8" else - echo "Setting LANG from /usr/share/locale/locale.alias" 1>&2 + [ $_DEBUG ] && echo "Setting LANG from /usr/share/locale/locale.alias" 1>&2 export LANG="$tmpLANG.UTF-8" fi fi -echo "Setting Language: $LANG" 1>&2 - -sed 's|${HOME}|'"$HOME|g" "$TOP/etc/pango/pangorc" > "${HOME}/.inkscape-etc/pangorc" -sed 's|${CWD}|'"$ESCAPEDTOP|g" "$TOP/etc/pango/pango.modules" \ - > "${HOME}/.inkscape-etc/pango.modules" -cp -f "$TOP/etc/pango/pangox.aliases" "${HOME}/.inkscape-etc/" -sed 's|${CWD}|'"$ESCAPEDTOP|g" "$TOP/etc/gtk-2.0/gtk.immodules" \ - > "${HOME}/.inkscape-etc/gtk.immodules" -sed 's|${CWD}|'"$ESCAPEDTOP|g" "$TOP/etc/gtk-2.0/gdk-pixbuf.loaders" \ - > "${HOME}/.inkscape-etc/gdk-pixbuf.loaders" - -exec "$CWD/inkscape-bin" "$@" +[ $_DEBUG ] && echo "Setting Language: $LANG" 1>&2 +export LC_ALL="$LANG" + +case "$INK_DEBUG" in + gdb) + EXEC="gdb --args" ;; + lldb) + EXEC="lldb -- " ;; + dtruss) + EXEC="dtruss" ;; + *) + EXEC="exec" ;; +esac +unset INK_DEBUG # ignore for recursive calls + +if [ "x$INK_DEBUG_SHELL" != "x" ]; then + exec bash +else + $EXEC "$CWD/inkscape-bin" "$@" +fi diff --git a/packaging/macosx/Resources/bin/python-wrapper.sh b/packaging/macosx/Resources/bin/python-wrapper.sh new file mode 100755 index 000000000..34cd75737 --- /dev/null +++ b/packaging/macosx/Resources/bin/python-wrapper.sh @@ -0,0 +1,78 @@ +#!/bin/sh + + +# --------------------------------------------------------------------- +# a) to use PyGTK (for Sozi or inksmoto) from MacPorts +# --------------------------------------------------------------------- + +# export PYTHONPATH="$INKSCAPE_SHAREDIR"/extensions +# +# # unset other environment variables used in Inkscape.app +# unset DYLD_LIBRARY_PATH +# unset XDG_CONFIG_DIRS XDG_DATA_DIRS +# unset GTK_PATH GTK_DATA_PREFIX GTK_EXE_PREFIX GTK_IM_MODULE_FILE +# unset FONTCONFIG_FILE FONTCONFIG_PATH HB_SHAPER_LIST PANGO_RC_FILE PANGO_SYSCONFDIR +# unset GDK_PIXBUF_MODULE_FILE GSETTINGS_SCHEMA_DIR +# unset DBUS_SESSION_BUS_PID DBUS_LAUNCHD_SESSION_BUS_SOCKET DBUS_SESSION_BUS_ADDRESS +# unset GNOME_VFS_MODULE_CONFIG_PATH GNOME_VFS_MODULE_PATH +# unset GIO_MODULE_DIR GVFS_MOUNTABLE_DIR +# unset ASPELL_CONF +# unset POPPLER_DATADIR +# unset VERSIONER_PYTHON_VERSION VERSIONER_PYTHON_PREFER_32_BIT +# unset MAGICK_HOME MAGICK_CONFIGURE_PATH MAGICK_CODER_FILTER_PATH MAGICK_CODER_MODULE_PATH +# unset GS_LIB GS_ICC_PROFILES GS_RESOURCE_DIR GS_LIB GS_FONTPATH GS +# +# # set locale (language) explicitly +# # (not needed with 0.48.5 package) +# #export LANG="en_US.UTF-8" +# +# # set MacPorts prefix +# LIBPREFIX="/opt/local" +# +# exec "$LIBPREFIX/bin/python" "$@" + + +# --------------------------------------------------------------------- +# b) to test different 32bit or 64bit system-provided Python versions +# (available on Mac OS X 10.6 Snow Leopard and later versions) +# --------------------------------------------------------------------- + +# # Python 2.5 (system) - Lion: 2.5.6 +# #exec /usr/bin/python2.5 "$@" +# export VERSIONER_PYTHON_VERSION=2.5 +# export VERSIONER_PYTHON_PREFER_32_BIT=yes +# exec /usr/bin/python "$@" + +# # Python 2.6 (system) - Lion: 2.6.7 +# #exec arch -i386 /usr/bin/python2.6 "$@" +# export VERSIONER_PYTHON_VERSION=2.6 +# export VERSIONER_PYTHON_PREFER_32_BIT=yes +# #export VERSIONER_PYTHON_PREFER_32_BIT=no +# exec /usr/bin/python "$@" + +# # Python 2.7 (system) - Lion: 2.7.1 +# #exec arch -i386 /usr/bin/python2.7 "$@" +# export VERSIONER_PYTHON_VERSION=2.7 +# export VERSIONER_PYTHON_PREFER_32_BIT=yes +# #export VERSIONER_PYTHON_PREFER_32_BIT=no +# exec /usr/bin/python "$@" + + +# --------------------------------------------------------------------- +# c) to test different 32bit or 64bit MacPorts-provided Python versions +# (define $LIBPREFIX locally) +# --------------------------------------------------------------------- + +# LIBPREFIX="/opt/local-x11" +# exec "$LIBPREFIX/bin/python2.5" "$@" +# #exec "$LIBPREFIX/bin/python2.6" "$@" +# #exec "$LIBPREFIX/bin/python2.7" "$@" + + +# --------------------------------------------------------------------- +# d) ... otherwise run default python +# --------------------------------------------------------------------- + +exec /usr/bin/python "$@" + +# eof diff --git a/packaging/macosx/Resources/etc/fonts/fonts.conf b/packaging/macosx/Resources/etc/fonts/fonts.conf index c8a008dab..316043814 100644 --- a/packaging/macosx/Resources/etc/fonts/fonts.conf +++ b/packaging/macosx/Resources/etc/fonts/fonts.conf @@ -24,12 +24,14 @@ <!-- Font directory list --> <dir>/usr/share/fonts</dir> - <dir>/usr/X11R6/lib/X11/fonts</dir> + <dir>/usr/X11/lib/X11/fonts</dir> <dir>/opt/local/share/fonts</dir> - <!-- <dir>/System/Library/Fonts</dir> --> + <dir>/System/Library/Fonts</dir> <dir>/Network/Library/Fonts</dir> <dir>/Library/Fonts</dir> <dir>~/Library/Fonts</dir> + <dir prefix="xdg">fonts</dir> + <!-- the following element will be removed in the future --> <dir>~/.fonts</dir> <!-- @@ -39,7 +41,7 @@ <test qual="any" name="family"> <string>mono</string> </test> - <edit name="family" mode="assign"> + <edit name="family" mode="assign" binding="same"> <string>monospace</string> </edit> </match> @@ -51,7 +53,7 @@ <test qual="any" name="family"> <string>sans serif</string> </test> - <edit name="family" mode="assign"> + <edit name="family" mode="assign" binding="same"> <string>sans-serif</string> </edit> </match> @@ -63,7 +65,7 @@ <test qual="any" name="family"> <string>sans</string> </test> - <edit name="family" mode="assign"> + <edit name="family" mode="assign" binding="same"> <string>sans-serif</string> </edit> </match> @@ -75,6 +77,8 @@ <!-- Font cache directory list --> + <cachedir prefix="xdg">fontconfig</cachedir> + <!-- the following element will be removed in the future --> <cachedir>~/.fontconfig</cachedir> <config> diff --git a/packaging/macosx/Resources/etc/gtk-2.0/gtkrc b/packaging/macosx/Resources/etc/gtk-2.0/gtkrc new file mode 100644 index 000000000..5babb9b17 --- /dev/null +++ b/packaging/macosx/Resources/etc/gtk-2.0/gtkrc @@ -0,0 +1,20 @@ +# +# gtkrc file for Inkscape.app (X11) +# + +gtk-theme-name = "Adwaita" +gtk-font-name = "Lucida Grande 9" + +gtk-icon-theme-name = "GtkStock" +gtk-icon-sizes = "gtk-dialog=32,32:gtk-button=16,16:gtk-large-toolbar=24,24:gtk-small-toolbar=16,16:gtk-menu=16,16:inkscape-decoration=12,12" + +gtk-button-images = 0 +gtk-menu-images = 0 +gtk-toolbar-style = 0 +#gtk-toolbar-icon-size = 2 + +# fix Adwaita theme for Inkscape's GimpSpinScale widgets +style "spinbutton" {} +widget_class "*GimpSpinScale*" style "spinbutton" + +# eof diff --git a/packaging/macosx/Resources/openDoc b/packaging/macosx/Resources/openDoc index fd37dd128..c2740c9b5 100755..100644 --- a/packaging/macosx/Resources/openDoc +++ b/packaging/macosx/Resources/openDoc @@ -1,17 +1,11 @@ -#!/bin/sh +#!/bin/bash # # Author: Aaron Voisine <aaron@voisine.org> # Inkscape Modifications: Michael Wybrow <mjwybrow@users.sourceforge.net> +# Inkscape Modifications: ~suv <suv-sf@users.sourceforge.net> -CWD="`dirname \"$0\"`" +CWD="$(cd "$(dirname "$0")" && pwd)" -# System version: 3 for Panther, 4 for Tiger, 5 for Leopard -export VERSION=`/usr/bin/sw_vers | grep ProductVersion | cut -f2 -d'.'` +source "${CWD}/xdg_setup.sh" -if [[ $VERSION -le 4 ]]; then - export "DISPLAY=`cat /tmp/display.$UID`" -fi - -BASE="`echo "$0" | sed -e 's/\/Contents\/Resources\/openDoc/\//'`" -cd "$BASE" exec "$CWD/bin/inkscape" "$@" diff --git a/packaging/macosx/Resources/script b/packaging/macosx/Resources/script index 62dcafdf5..a97d02486 100755 --- a/packaging/macosx/Resources/script +++ b/packaging/macosx/Resources/script @@ -1,54 +1,21 @@ -#!/bin/sh +#!/bin/bash # # Author: Aaron Voisine <aaron@voisine.org> # Inkscape Modifications: Michael Wybrow <mjwybrow@users.sourceforge.net> +# Inkscape Modifications: ~suv <suv-sf@users.sourceforge.net> -CWD=`dirname "$0"` +#export _DEBUG=true -# System version: 3 for Panther, 4 for Tiger, 5 for Leopard -export VERSION=`/usr/bin/sw_vers | grep ProductVersion | cut -f2 -d'.'` +CWD="$(cd "$(dirname "$0")" && pwd)" -# On Leopard, X11.app is installed by default, and will be started -# automatically via launchd. On older systems, we need to start -# X11 ourself. +source "${CWD}/xdg_setup.sh" +source "${CWD}/alert_fccache.sh" -# For Panther and Tiger, start X11 -if [[ $VERSION -le 4 ]]; then - # FIXME apparently this removes the xterm that starts with X - # from xinitrc but when is it really used? Should we modify - # the .xinitrc of the user without warning? - ps -wx -ocommand | grep -e '[X]11' > /dev/null - if [ "$?" != "0" -a ! -f "${HOME}/.xinitrc" ]; then - echo "rm -f \"\${HOME}/.xinitrc\"" > "${HOME}/.xinitrc" - sed 's/xterm/# xterm/' /usr/X11R6/lib/X11/xinit/xinitrc >> "${HOME}/.xinitrc" - fi - - # Start X11 and get DISPLAY - # FIXME: Insecure tmp file usage. Why do we have to copy this to /tmp anyway? - cp -f "$CWD/bin/getdisplay.sh" /tmp/ - rm -f /tmp/display.$UID - open-x11 /tmp/getdisplay.sh || \ - open -a XDarwin /tmp/getdisplay.sh || \ - echo ":0" > /tmp/display.$UID - - while [ "$?" == "0" -a ! -f /tmp/display.$UID ]; do - sleep 1 - done - export DISPLAY=`cat /tmp/display.$UID` - - ps -wx -ocommand | grep -e '[X]11' > /dev/null || exit 11 -fi - -# Warn the user about time-consuming generation of fontconfig caches. -test -f "${HOME}/.inkscape-etc/.fccache-new" || exit 12 - - - -BASE=`echo "$0" | sed -e 's/\/Contents\/Resources\/script/\//'` -cd "$BASE" -exec "$CWD/bin/inkscape" "$@" # TODO examine whether it would be wisest to move the code from inkscape shell # script and getdisplay.sh to here and only keep the real binary in bin. This # may make things easier on Leopard and may also help using Inkscape on the # command line. +# +# See related FIXME in bin/inkscape for requirements to merge the two scripts. +exec "$CWD/bin/inkscape" "$@" diff --git a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-down.png b/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-down.png Binary files differdeleted file mode 100644 index 62c0b41bd..000000000 --- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-down.png +++ /dev/null diff --git a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-left.png b/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-left.png Binary files differdeleted file mode 100644 index 0dff81db9..000000000 --- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-left.png +++ /dev/null diff --git a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-right.png b/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-right.png Binary files differdeleted file mode 100644 index 02ef8ee7a..000000000 --- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-right.png +++ /dev/null diff --git a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-up.png b/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-up.png Binary files differdeleted file mode 100644 index dba866012..000000000 --- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-up.png +++ /dev/null diff --git a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/trough-scrollbar-horiz.png b/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/trough-scrollbar-horiz.png Binary files differdeleted file mode 100644 index e978dfb9f..000000000 --- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/trough-scrollbar-horiz.png +++ /dev/null diff --git a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/trough-scrollbar-vert.png b/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/trough-scrollbar-vert.png Binary files differdeleted file mode 100644 index 4f128b323..000000000 --- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/trough-scrollbar-vert.png +++ /dev/null diff --git a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/copy-slider.sh b/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/copy-slider.sh deleted file mode 100755 index 020e059bd..000000000 --- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/copy-slider.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -cp -f slider-vert.png slider-vert-prelight.png -cp -f slider-vert.png slider-horiz-prelight.png -cp -f slider-vert.png slider-horiz.png -convert -rotate 90 slider-horiz.png slider-horiz.png -convert -rotate 90 slider-horiz-prelight.png slider-horiz-prelight.png
\ No newline at end of file diff --git a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/slider-horiz-prelight.png b/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/slider-horiz-prelight.png Binary files differdeleted file mode 100644 index 1ee4528ba..000000000 --- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/slider-horiz-prelight.png +++ /dev/null diff --git a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/slider-horiz.png b/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/slider-horiz.png Binary files differdeleted file mode 100644 index 1ee4528ba..000000000 --- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/slider-horiz.png +++ /dev/null diff --git a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/slider-vert-prelight.png b/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/slider-vert-prelight.png Binary files differdeleted file mode 100644 index 4fa68000c..000000000 --- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/slider-vert-prelight.png +++ /dev/null diff --git a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/slider-vert.png b/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/slider-vert.png Binary files differdeleted file mode 100644 index 4fa68000c..000000000 --- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/slider-vert.png +++ /dev/null diff --git a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/copy-slider.sh b/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/copy-slider.sh deleted file mode 100755 index 020e059bd..000000000 --- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/copy-slider.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -cp -f slider-vert.png slider-vert-prelight.png -cp -f slider-vert.png slider-horiz-prelight.png -cp -f slider-vert.png slider-horiz.png -convert -rotate 90 slider-horiz.png slider-horiz.png -convert -rotate 90 slider-horiz-prelight.png slider-horiz-prelight.png
\ No newline at end of file diff --git a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/slider-horiz-prelight.png b/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/slider-horiz-prelight.png Binary files differdeleted file mode 100644 index c0f7f3c3f..000000000 --- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/slider-horiz-prelight.png +++ /dev/null diff --git a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/slider-horiz.png b/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/slider-horiz.png Binary files differdeleted file mode 100644 index c0f7f3c3f..000000000 --- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/slider-horiz.png +++ /dev/null diff --git a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/slider-vert-prelight.png b/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/slider-vert-prelight.png Binary files differdeleted file mode 100644 index 9643f378e..000000000 --- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/slider-vert-prelight.png +++ /dev/null diff --git a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/slider-vert.png b/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/slider-vert.png Binary files differdeleted file mode 100644 index 9643f378e..000000000 --- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/slider-vert.png +++ /dev/null diff --git a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/pre_gtkrc b/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/pre_gtkrc deleted file mode 100644 index 171e73626..000000000 --- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/pre_gtkrc +++ /dev/null @@ -1,547 +0,0 @@ -# -# GTK theme to be used on Mac OS X, to mimic the appearance of Tiger -# -# Heavily based on Clearlooks-Quicksilver -# Scrollbars from OSX-theme by Lauri Taimila (lauri@taimila.com) -# -# (c) 2007 JiHO <jo.irisson@gmail.com>. -# GNU General Public License http://www.gnu.org/copyleft/gpl.html -# - -pixmap_path "${THEMEDIR}" - -style "clearlooks-default" -{ - GtkButton ::default_border = { 0, 0, 0, 0 } - GtkRange ::trough_border = 0 - GtkPaned ::handle_size = 6 - GtkRange ::slider_width = 15 - GtkRange ::stepper_size = 15 - GtkScale ::slider-length = 23 - GtkScale ::trough-side-details = 1 - GtkScrollbar ::min_slider_length = 30 - GtkCheckButton ::indicator_size = 12 - GtkMenuBar ::internal-padding = 0 - GtkTreeView ::expander_size = 14 - GtkExpander ::expander_size = 16 - - xthickness = 1 - ythickness = 1 - - fg[NORMAL] = "#000000" # black - fg[PRELIGHT] = "#000000" # black - fg[SELECTED] = "#ffffff" # white - fg[ACTIVE] = "#000000" # black - fg[INSENSITIVE] = {0.6, 0.6, 0.6} # dark gray - - bg[NORMAL] = {0.95, 0.95, 0.95} # very light gray - bg[PRELIGHT] = "#ffffff" # white - bg[SELECTED] = OSX_MENU_COLOR_PLACEHOLDER # menu color - bg[INSENSITIVE] = {0.9, 0.9, 0.9} # light gray - bg[ACTIVE] = {0.85, 0.85, 0.85} # gray - - base[NORMAL] = "#ffffff" # white - base[PRELIGHT] = OSX_MENU_COLOR_PLACEHOLDER # menu color - base[ACTIVE] = {0.6, 0.6, 0.6} # dark gray - base[SELECTED] = OSX_HILI_COLOR_PLACEHOLDER # highlight color - base[INSENSITIVE] = {0.9, 0.9, 0.9} # light gray - - text[NORMAL] = "#000000" # black - text[PRELIGHT] = "#000000" # black - text[ACTIVE] = "#ffffff" # white - text[SELECTED] = "#ffffff" # white - text[INSENSITIVE] = {0.6, 0.6, 0.6} # dark gray - - engine "clearlooks" - { - colorize_scrollbar = FALSE #TRUE - reliefstyle = 1 - menubarstyle = 0 # 0 = flat, 1 = sunken, 2 = flat gradient - toolbarstyle = 0 # 0 = flat, 1 = enable effects - animation = FALSE - radius = 3.0 # 3.0 = default, 0.0 = sharp corners - style = GUMMY # CLASSIC, GUMMY, GLOSSY - } -} - - -style "clearlooks-wide" = "clearlooks-default" -{ - xthickness = 2 - ythickness = 2 -} - -style "clearlooks-button" = "clearlooks-default" -{ - xthickness = 3 - ythickness = 3 - - bg[NORMAL] = "#f0f1f2" # a hint of blue... - - engine "clearlooks" { - style = CLASSIC - } -} - -style "clearlooks-notebook" = "clearlooks-wide" -{ - bg[NORMAL] = {0.93, 0.93, 0.93} - bg[INSENSITIVE] = {0.93, 0.93, 0.93} -} - -style "clearlooks-tasklist" = "clearlooks-default" -{ - xthickness = 5 - ythickness = 3 -} - -style "clearlooks-menu" = "clearlooks-default" -{ - xthickness = 2 - ythickness = 1 - bg[NORMAL] = "#ffffff" -} - -style "clearlooks-menu-item" = "clearlooks-default" -{ - xthickness = 0 - ythickness = 2 - - fg[PRELIGHT] = "#ffffff" - text[PRELIGHT] = "#ffffff" - # We want PRELIGHT to be white for widgets, but coloured for the menu. - bg[PRELIGHT] = OSX_MENU_COLOR_PLACEHOLDER - - # Radius of the menu items (inside menus) - engine "clearlooks" { - radius = 0.0 - } -} - -style "clearlooks-menu-itembar" = "clearlooks-default" -{ - xthickness = 3 - ythickness = 3 -} - -style "clearlooks-tree" = "clearlooks-default" -{ - xthickness = 2 - ythickness = 2 -} - -style "clearlooks-frame-title" = "clearlooks-default" -{ - fg[NORMAL] = "#404040" -} - -style "clearlooks-tooltips" = "clearlooks-default" -{ - xthickness = 4 - ythickness = 4 - bg[NORMAL] = { 1.0,1.0,0.75 } -} - -style "clearlooks-progressbar" = "clearlooks-default" -{ - xthickness = 1 - ythickness = 1 - - fg[PRELIGHT] = "#ffffff" -} - -style "clearlooks-combo" = "clearlooks-default" -{ - xthickness = 2 - ythickness = 3 -} - -# Added pixmaps for scollbars -style "scrollbar" = "default" -{ - # The values I set here have to do with the relative size of three graphic elements - # I have used: the slider, the arrow box, and the trough. They all have the same width - # of 15 pixels, but gtk wants to put in some spacing between them. It seems like it - # places the sliders inside the trough with a default 1 pixel border on either side of the slider, - # so that the trough has its width stretched by an additional two pixels(?). Setting the - # trough border makes the arrow box sit on top of the trough squarely, by making sure that - # the trough stays the same width as the arrowbox(?). I could be totally wrong here. - GtkRange::trough_border = 0 - GtkRange::slider_width = 15 - - # This sets the size of the steppers (arrow buttons on the end of the scrollbar). - # The image I am using is 15x15 pixels, and if I dont set this a one pixel line - # gets cut off of the top of the "up" stepper. - GtkRange::stepper_size = 15 - - # Set a minimum length for the slider. Since I set the border on the slider - # image to 15 pixels on either end of the slider I want the min length to be - # at least 30 pixels to avoid an ugly slider when gtk wants to make it smaller - # than 30 pixels. - GtkScrollbar::min_slider_length = 30 - - engine "pixmap" - { - # Horizontal slider background - image - { - function = BOX - recolorable = TRUE - detail = "trough" - file = "Scrollbars/trough-scrollbar-horiz.png" - border = { 30, 30, 0, 0 } - stretch = TRUE - orientation = HORIZONTAL - } - - # Vertical slider background - image - { - function = BOX - recolorable = TRUE - detail = "trough" - file = "Scrollbars/trough-scrollbar-vert.png" - border = { 0, 0, 30, 30 } - stretch = TRUE - orientation = VERTICAL - } - - # Normal horizontal slider - image - { - function = SLIDER - recolorable = TRUE - state = NORMAL - file = "Scrollbars_AQUASTYLE_PLACEHOLDER/slider-horiz.png" - border = { 15, 15, 6, 6 } - stretch = TRUE - orientation = HORIZONTAL - } - - # Horizontal slider (active) - image - { - function = SLIDER - recolorable = TRUE - state = ACTIVE - file = "Scrollbars_AQUASTYLE_PLACEHOLDER/slider-horiz-prelight.png" - border = { 15, 15, 6, 6 } - stretch = TRUE - orientation = HORIZONTAL - } - - # Horizontal slider (mouse over) - image - { - function = SLIDER - recolorable = TRUE - state = PRELIGHT - file = "Scrollbars_AQUASTYLE_PLACEHOLDER/slider-horiz-prelight.png" - border = { 15, 15, 6, 6 } - stretch = TRUE - orientation = HORIZONTAL - } - - # Horizontal slider (Insesitive) - image - { - function = SLIDER - recolorable = TRUE - state = INSENSITIVE - file = "Scrollbars_AQUASTYLE_PLACEHOLDER/slider-horiz.png" - border = { 15, 15, 6, 6 } - stretch = TRUE - orientation = HORIZONTAL - } - - # Normal vertical slider - image - { - function = SLIDER - recolorable = TRUE - state = NORMAL - file = "Scrollbars_AQUASTYLE_PLACEHOLDER/slider-vert.png" - border = { 6, 6, 15, 15 } - stretch = TRUE - orientation = VERTICAL - } - - # Vertical slider (Active) - image - { - function = SLIDER - recolorable = TRUE - state = ACTIVE - file = "Scrollbars_AQUASTYLE_PLACEHOLDER/slider-vert.png" - border = { 6, 6, 15, 15 } - stretch = TRUE - orientation = VERTICAL - } - - # Vertical slider (mouse over) - image - { - function = SLIDER - recolorable = TRUE - state = PRELIGHT - file = "Scrollbars_AQUASTYLE_PLACEHOLDER/slider-vert-prelight.png" - border = { 6, 6, 15, 15 } - stretch = TRUE - orientation = VERTICAL - } - - # Vertical slider (Insesitive) - image - { - function = SLIDER - recolorable = TRUE - state = INSENSITIVE - file = "Scrollbars_AQUASTYLE_PLACEHOLDER/slider-vert-prelight.png" - border = { 6, 6, 15, 15 } - stretch = TRUE - orientation = VERTICAL - } - -################################################################################ -# SCROLLBAR STEPPERS -################################################################################ - - # Up - image - { - function = STEPPER - recolorable = TRUE - state = NORMAL - file = "Scrollbars/stepper-up.png" - #border = { 12, 2, 2, 9 } - stretch = TRUE - arrow_direction = UP - } - image - { - function = STEPPER - recolorable = TRUE - state = PRELIGHT - file = "Scrollbars/stepper-up.png" - #border = { 12, 2, 2, 9 } - stretch = TRUE - arrow_direction = UP - } - image - { - function = STEPPER - recolorable = TRUE - state = ACTIVE - file = "Scrollbars/stepper-up.png" - #border = { 12, 2, 2, 9 } - stretch = TRUE - arrow_direction = UP - } - image - { - function = STEPPER - recolorable = TRUE - state = INSENSITIVE - file = "Scrollbars/stepper-up.png" - #border = { 12, 2, 2, 9 } - stretch = TRUE - arrow_direction = UP - } - - ######### DOWN ############ - - - image - { - function = STEPPER - recolorable = TRUE - state = NORMAL - file = "Scrollbars/stepper-down.png" - #border = { 12, 2, 10, 2 } - stretch = TRUE - arrow_direction = DOWN - } - image - { - function = STEPPER - recolorable = TRUE - state = PRELIGHT - file = "Scrollbars/stepper-down.png" - #border = { 12, 2, 10, 2 } - stretch = TRUE - arrow_direction = DOWN - } - image - { - function = STEPPER - recolorable = TRUE - state = ACTIVE - file = "Scrollbars/stepper-down.png" - #border = { 12, 2, 10, 2 } - stretch = TRUE - arrow_direction = DOWN - } - image - { - function = STEPPER - recolorable = TRUE - state = INSENSITIVE - file = "Scrollbars/stepper-down.png" - #border = { 12, 2, 10, 2 } - stretch = TRUE - arrow_direction = DOWN - } - -############ RIGHT ################ - - image - { - function = STEPPER - recolorable = TRUE - state = NORMAL - file = "Scrollbars/stepper-right.png" - #border = { 2, 9, 2, 13 } - stretch = TRUE - arrow_direction = RIGHT - } - image - { - function = STEPPER - recolorable = TRUE - state = PRELIGHT - file = "Scrollbars/stepper-right.png" - #border = { 2, 9, 2, 13 } - stretch = TRUE - arrow_direction = RIGHT - } - image - { - function = STEPPER - recolorable = TRUE - state = ACTIVE - file = "Scrollbars/stepper-right.png" - #border = { 2, 9, 2, 13 } - stretch = TRUE - arrow_direction = RIGHT - } - image - { - function = STEPPER - recolorable = TRUE - state = INSENSITIVE - file = "Scrollbars/stepper-right.png" - #border = { 2, 9, 2, 13 } - stretch = TRUE - arrow_direction = RIGHT - } - -############### LEFT ################### - - - image - { - function = STEPPER - recolorable = TRUE - state = NORMAL - file = "Scrollbars/stepper-left.png" - #border = { 2, 9, 2, 13 } - stretch = TRUE - arrow_direction = LEFT - } - image - { - function = STEPPER - recolorable = TRUE - state = PRELIGHT - file = "Scrollbars/stepper-left.png" - #border = { 2, 9, 2, 13 } - stretch = TRUE - arrow_direction = LEFT - } - image - { - function = STEPPER - recolorable = TRUE - state = ACTIVE - file = "Scrollbars/stepper-left.png" - #border = { 2, 9, 2, 13 } - stretch = TRUE - arrow_direction = LEFT - } - image - { - function = STEPPER - recolorable = TRUE - state = INSENSITIVE - file = "Scrollbars/stepper-left.png" - #border = { 2, 9, 2, 13 } - stretch = TRUE - arrow_direction = LEFT - } - } -} - -# widget styles -class "GtkWidget" style "clearlooks-default" -class "GtkButton" style "clearlooks-button" -class "GtkCombo" style "clearlooks-button" -class "GtkRange" style "clearlooks-wide" -class "GtkFrame" style "clearlooks-wide" -class "GtkMenu" style "clearlooks-menu" -class "GtkEntry" style "clearlooks-button" -class "GtkMenuItem" style "clearlooks-menu-item" -class "GtkStatusbar" style "clearlooks-wide" -class "GtkNotebook" style "clearlooks-notebook" -class "GtkProgressBar" style "clearlooks-progressbar" -class "GtkScrollbar" style "scrollbar" - -widget_class "*MenuItem.*" style "clearlooks-menu-item" - -# combobox stuff -widget_class "*.GtkComboBox.GtkButton" style "clearlooks-combo" -widget_class "*.GtkCombo.GtkButton" style "clearlooks-combo" - -# tooltips stuff -widget_class "*.tooltips.*.GtkToggleButton" style "clearlooks-tasklist" -widget "gtk-tooltips" style "clearlooks-tooltips" - -# treeview stuff -widget_class "*.GtkTreeView.GtkButton" style "clearlooks-tree" -widget_class "*.GtkCTree.GtkButton" style "clearlooks-tree" -widget_class "*.GtkList.GtkButton" style "clearlooks-tree" -widget_class "*.GtkCList.GtkButton" style "clearlooks-tree" -widget_class "*.GtkFrame.GtkLabel" style "clearlooks-frame-title" - -# notebook stuff -widget_class "*.GtkNotebook.*.GtkEventBox" style "clearlooks-notebook" -widget_class "*.GtkNotebook.*.GtkViewport" style "clearlooks-notebook" - -# OS X uses 11 but due to differences in font smoothing, 10 actually integrates better -gtk-font-name="Lucida Grande 10" - -# icon sizes: 48, 32, 24 (tango=22), 16 -# -# gtk-dialog main icon in a dialog box: e.g. alert when file is not saved -# gtk-dnd icon showed while dragging and dropping (not used on OS X) -# gtk-button buttons: OK/Cancel dialogs, usually 22 but 16 is more OS X-ish -# gtk-large-toolbar large toolbar: toolbox -# gtk-small-toolbar small toolbar: command bar, tools control, snap control -# gtk-menu menus in applications: File, Edit -# panel-menu general Application/Places menu (not used on OS X) -# -# insckape-decoration layers lock, "affect" icons, etc. -# -#gtk-icon-sizes = "gtk-dialog=48,48:gtk-button=16,16:gtk-large-toolbar=22,22:gtk-small-toolbar=16,16:gtk-menu=16,16:inkscape-decoration=16,16" -gtk-icon-sizes = "gtk-dialog=48,48:gtk-button=16,16:gtk-large-toolbar=24,24:gtk-small-toolbar=16,16:gtk-menu=16,16:inkscape-decoration=12,12" - -# use OS X default pdf-viewer for print preview -gtk-print-preview-command="/usr/bin/open %f" - -# Whether images should be shown on buttons. -# Default value: TRUE -gtk-button-images = 0 - -# Whether images should be shown in menus. -gtk-menu-images = 0 - - diff --git a/packaging/macosx/Resources/xdg_setup.sh b/packaging/macosx/Resources/xdg_setup.sh new file mode 100755 index 000000000..ec7fca648 --- /dev/null +++ b/packaging/macosx/Resources/xdg_setup.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +export XDG_CACHE_HOME="${HOME}/.cache" +export XDG_CONFIG_HOME="${HOME}/.config" +export XDG_DATA_HOME="${HOME}/.local/share" + +mkdir -p "$XDG_CACHE_HOME" +mkdir -p "$XDG_CONFIG_HOME" +mkdir -p "$XDG_DATA_HOME" + +export INK_CACHE_DIR="${XDG_CACHE_HOME}/inkscape" +mkdir -p "$INK_CACHE_DIR" + diff --git a/packaging/macosx/ScriptExec/ScriptExec.xcode/project.pbxproj b/packaging/macosx/ScriptExec/ScriptExec.xcode/project.pbxproj deleted file mode 100644 index bc081d5ef..000000000 --- a/packaging/macosx/ScriptExec/ScriptExec.xcode/project.pbxproj +++ /dev/null @@ -1,451 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 39; - objects = { - 0249A66BFF388E3F11CA2CEA = { - isa = PBXFileReference; - lastKnownFileType = archive.ar; - name = "libstdc++.a"; - path = "/usr/lib/libstdc++.a"; - refType = 0; - sourceTree = "<absolute>"; - }; -//020 -//021 -//022 -//023 -//024 -//080 -//081 -//082 -//083 -//084 - 0867D6AAFE840B52C02AAC07 = { - children = ( - 0867D6ABFE840B52C02AAC07, - ); - isa = PBXVariantGroup; - name = InfoPlist.strings; - refType = 4; - sourceTree = "<group>"; - }; - 0867D6ABFE840B52C02AAC07 = { - fileEncoding = 10; - isa = PBXFileReference; - lastKnownFileType = text.plist.strings; - name = English; - path = English.lproj/InfoPlist.strings; - refType = 4; - sourceTree = "<group>"; - }; -//080 -//081 -//082 -//083 -//084 -//190 -//191 -//192 -//193 -//194 - 195DF8CFFE9D517E11CA2CBB = { - children = ( - 8D0C4E970486CD37000505A6, - ); - isa = PBXGroup; - name = Products; - refType = 4; - sourceTree = "<group>"; - }; -//190 -//191 -//192 -//193 -//194 -//200 -//201 -//202 -//203 -//204 - 20286C28FDCF999611CA2CEA = { - buildSettings = { - }; - buildStyles = ( - 4A9504C5FFE6A39111CA0CBA, - 4A9504C6FFE6A39111CA0CBA, - ); - hasScannedForEncodings = 1; - isa = PBXProject; - mainGroup = 20286C29FDCF999611CA2CEA; - projectDirPath = ""; - targets = ( - 8D0C4E890486CD37000505A6, - ); - }; - 20286C29FDCF999611CA2CEA = { - children = ( - 20286C2AFDCF999611CA2CEA, - 20286C2CFDCF999611CA2CEA, - 20286C32FDCF999611CA2CEA, - 195DF8CFFE9D517E11CA2CBB, - ); - isa = PBXGroup; - name = ScriptExec; - path = ""; - refType = 4; - sourceTree = "<group>"; - }; - 20286C2AFDCF999611CA2CEA = { - children = ( - 32DBCF6D0370B57F00C91783, - 20286C2BFDCF999611CA2CEA, - ); - isa = PBXGroup; - name = Sources; - path = ""; - refType = 4; - sourceTree = "<group>"; - }; - 20286C2BFDCF999611CA2CEA = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = main.c; - refType = 4; - sourceTree = "<group>"; - }; - 20286C2CFDCF999611CA2CEA = { - children = ( - 664C29F0060ECDC4006EC560, - B8DCE042056DAC3500C390B0, - 8D0C4E960486CD37000505A6, - B8DCE048056DAC5000C390B0, - 0867D6AAFE840B52C02AAC07, - ); - isa = PBXGroup; - name = Resources; - path = ""; - refType = 4; - sourceTree = "<group>"; - }; - 20286C32FDCF999611CA2CEA = { - children = ( - 20286C33FDCF999611CA2CEA, - 4A9504CAFFE6A41611CA0CBA, - 4A9504C8FFE6A3BC11CA0CBA, - 0249A66BFF388E3F11CA2CEA, - B8DCE04E056DACAE00C390B0, - ); - isa = PBXGroup; - name = "External Frameworks and Libraries"; - path = ""; - refType = 4; - sourceTree = "<group>"; - }; - 20286C33FDCF999611CA2CEA = { - fallbackIsa = PBXFileReference; - isa = PBXFrameworkReference; - lastKnownFileType = wrapper.framework; - name = Carbon.framework; - path = /System/Library/Frameworks/Carbon.framework; - refType = 0; - sourceTree = "<absolute>"; - }; -//200 -//201 -//202 -//203 -//204 -//320 -//321 -//322 -//323 -//324 - 32DBCF6D0370B57F00C91783 = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = ScriptExec_Prefix.pch; - refType = 4; - sourceTree = "<group>"; - }; -//320 -//321 -//322 -//323 -//324 -//4A0 -//4A1 -//4A2 -//4A3 -//4A4 - 4A9504C5FFE6A39111CA0CBA = { - buildRules = ( - ); - buildSettings = { - COPY_PHASE_STRIP = NO; - DEBUGGING_SYMBOLS = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - OPTIMIZATION_CFLAGS = "-O0"; - ZERO_LINK = YES; - }; - isa = PBXBuildStyle; - name = Development; - }; - 4A9504C6FFE6A39111CA0CBA = { - buildRules = ( - ); - buildSettings = { - COPY_PHASE_STRIP = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_OPTIMIZATION_LEVEL = s; - ZERO_LINK = NO; - }; - isa = PBXBuildStyle; - name = Deployment; - }; - 4A9504C8FFE6A3BC11CA0CBA = { - fallbackIsa = PBXFileReference; - isa = PBXFrameworkReference; - lastKnownFileType = wrapper.framework; - name = ApplicationServices.framework; - path = /System/Library/Frameworks/ApplicationServices.framework; - refType = 0; - sourceTree = "<absolute>"; - }; - 4A9504CAFFE6A41611CA0CBA = { - fallbackIsa = PBXFileReference; - isa = PBXFrameworkReference; - lastKnownFileType = wrapper.framework; - name = CoreServices.framework; - path = /System/Library/Frameworks/CoreServices.framework; - refType = 0; - sourceTree = "<absolute>"; - }; -//4A0 -//4A1 -//4A2 -//4A3 -//4A4 -//660 -//661 -//662 -//663 -//664 - 664C29F0060ECDC4006EC560 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.script.sh; - path = openDoc; - refType = 4; - sourceTree = "<group>"; - }; - 664C29F1060ECDC4006EC560 = { - fileRef = 664C29F0060ECDC4006EC560; - isa = PBXBuildFile; - settings = { - }; - }; -//660 -//661 -//662 -//663 -//664 -//8D0 -//8D1 -//8D2 -//8D3 -//8D4 - 8D0C4E890486CD37000505A6 = { - buildPhases = ( - 8D0C4E8A0486CD37000505A6, - 8D0C4E8C0486CD37000505A6, - 8D0C4E8F0486CD37000505A6, - 8D0C4E910486CD37000505A6, - 8D0C4E940486CD37000505A6, - ); - buildRules = ( - ); - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ""; - GCC_ENABLE_TRIGRAPHS = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = ScriptExec_Prefix.pch; - GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO; - GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; - GCC_WARN_UNKNOWN_PRAGMAS = NO; - HEADER_SEARCH_PATHS = ""; - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "$(HOME)/Applications"; - LIBRARY_SEARCH_PATHS = ""; - LIBRARY_STYLE = Static; - OTHER_CFLAGS = ""; - OTHER_LDFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = ScriptExec; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; - WRAPPER_EXTENSION = app; - }; - dependencies = ( - ); - isa = PBXNativeTarget; - name = ScriptExec; - productInstallPath = "$(HOME)/Applications"; - productName = ScriptExec; - productReference = 8D0C4E970486CD37000505A6; - productType = "com.apple.product-type.application"; - }; - 8D0C4E8A0486CD37000505A6 = { - buildActionMask = 2147483647; - files = ( - 8D0C4E8B0486CD37000505A6, - ); - isa = PBXHeadersBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 8D0C4E8B0486CD37000505A6 = { - fileRef = 32DBCF6D0370B57F00C91783; - isa = PBXBuildFile; - settings = { - }; - }; - 8D0C4E8C0486CD37000505A6 = { - buildActionMask = 2147483647; - files = ( - 8D0C4E8D0486CD37000505A6, - B8DCE045056DAC3500C390B0, - B8DCE049056DAC5000C390B0, - 664C29F1060ECDC4006EC560, - ); - isa = PBXResourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 8D0C4E8D0486CD37000505A6 = { - fileRef = 0867D6AAFE840B52C02AAC07; - isa = PBXBuildFile; - settings = { - }; - }; - 8D0C4E8F0486CD37000505A6 = { - buildActionMask = 2147483647; - files = ( - 8D0C4E900486CD37000505A6, - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 8D0C4E900486CD37000505A6 = { - fileRef = 20286C2BFDCF999611CA2CEA; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 8D0C4E910486CD37000505A6 = { - buildActionMask = 2147483647; - files = ( - 8D0C4E920486CD37000505A6, - 8D0C4E930486CD37000505A6, - B8DCE04F056DACAE00C390B0, - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 8D0C4E920486CD37000505A6 = { - fileRef = 20286C33FDCF999611CA2CEA; - isa = PBXBuildFile; - settings = { - }; - }; - 8D0C4E930486CD37000505A6 = { - fileRef = 0249A66BFF388E3F11CA2CEA; - isa = PBXBuildFile; - settings = { - }; - }; - 8D0C4E940486CD37000505A6 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXRezBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 8D0C4E960486CD37000505A6 = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = text.plist; - path = Info.plist; - refType = 4; - sourceTree = "<group>"; - }; - 8D0C4E970486CD37000505A6 = { - explicitFileType = wrapper.application; - includeInIndex = 0; - isa = PBXFileReference; - path = ScriptExec.app; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; -//8D0 -//8D1 -//8D2 -//8D3 -//8D4 -//B80 -//B81 -//B82 -//B83 -//B84 - B8DCE042056DAC3500C390B0 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.nib; - path = MenuBar.nib; - refType = 4; - sourceTree = "<group>"; - }; - B8DCE045056DAC3500C390B0 = { - fileRef = B8DCE042056DAC3500C390B0; - isa = PBXBuildFile; - settings = { - }; - }; - B8DCE048056DAC5000C390B0 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.script.sh; - path = script; - refType = 4; - sourceTree = "<group>"; - }; - B8DCE049056DAC5000C390B0 = { - fileRef = B8DCE048056DAC5000C390B0; - isa = PBXBuildFile; - settings = { - }; - }; - B8DCE04E056DACAE00C390B0 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = Security.framework; - path = /System/Library/Frameworks/Security.framework; - refType = 0; - sourceTree = "<absolute>"; - }; - B8DCE04F056DACAE00C390B0 = { - fileRef = B8DCE04E056DACAE00C390B0; - isa = PBXBuildFile; - settings = { - }; - }; - }; - rootObject = 20286C28FDCF999611CA2CEA; -} diff --git a/packaging/macosx/ScriptExec/ScriptExec.xcodeproj/project.pbxproj b/packaging/macosx/ScriptExec/ScriptExec.xcodeproj/project.pbxproj index 3d0fe0120..0443dd764 100644 --- a/packaging/macosx/ScriptExec/ScriptExec.xcodeproj/project.pbxproj +++ b/packaging/macosx/ScriptExec/ScriptExec.xcodeproj/project.pbxproj @@ -12,14 +12,12 @@ 8D0C4E8D0486CD37000505A6 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0867D6AAFE840B52C02AAC07 /* InfoPlist.strings */; }; 8D0C4E900486CD37000505A6 /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 20286C2BFDCF999611CA2CEA /* main.c */; settings = {ATTRIBUTES = (); }; }; 8D0C4E920486CD37000505A6 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20286C33FDCF999611CA2CEA /* Carbon.framework */; }; - 8D0C4E930486CD37000505A6 /* libstdc++.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0249A66BFF388E3F11CA2CEA /* libstdc++.a */; }; B8DCE045056DAC3500C390B0 /* MenuBar.nib in Resources */ = {isa = PBXBuildFile; fileRef = B8DCE042056DAC3500C390B0 /* MenuBar.nib */; }; B8DCE049056DAC5000C390B0 /* script in Resources */ = {isa = PBXBuildFile; fileRef = B8DCE048056DAC5000C390B0 /* script */; }; B8DCE04F056DACAE00C390B0 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B8DCE04E056DACAE00C390B0 /* Security.framework */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 0249A66BFF388E3F11CA2CEA /* libstdc++.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libstdc++.a"; path = "/usr/lib/libstdc++.a"; sourceTree = "<absolute>"; }; 0867D6ABFE840B52C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; }; 20286C2BFDCF999611CA2CEA /* main.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = "<group>"; }; 20286C33FDCF999611CA2CEA /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; }; @@ -40,7 +38,6 @@ buildActionMask = 2147483647; files = ( 8D0C4E920486CD37000505A6 /* Carbon.framework in Frameworks */, - 8D0C4E930486CD37000505A6 /* libstdc++.a in Frameworks */, B8DCE04F056DACAE00C390B0 /* Security.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -94,7 +91,6 @@ 20286C33FDCF999611CA2CEA /* Carbon.framework */, 4A9504CAFFE6A41611CA0CBA /* CoreServices.framework */, 4A9504C8FFE6A3BC11CA0CBA /* ApplicationServices.framework */, - 0249A66BFF388E3F11CA2CEA /* libstdc++.a */, B8DCE04E056DACAE00C390B0 /* Security.framework */, ); name = "External Frameworks and Libraries"; @@ -140,9 +136,15 @@ 20286C28FDCF999611CA2CEA /* Project object */ = { isa = PBXProject; buildConfigurationList = 78E9AE1A0A36A8E3000D76A8 /* Build configuration list for PBXProject "ScriptExec" */; + compatibilityVersion = "Xcode 2.4"; + developmentRegion = English; hasScannedForEncodings = 1; + knownRegions = ( + en, + ); mainGroup = 20286C29FDCF999611CA2CEA /* ScriptExec */; projectDirPath = ""; + projectRoot = ""; targets = ( 8D0C4E890486CD37000505A6 /* ScriptExec */, ); @@ -199,6 +201,8 @@ 78E9AE170A36A8E3000D76A8 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1)"; + ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1 = "ppc i386"; COPY_PHASE_STRIP = NO; DEBUGGING_SYMBOLS = YES; FRAMEWORK_SEARCH_PATHS = ""; @@ -217,7 +221,6 @@ INSTALL_PATH = "$(HOME)/Applications"; LIBRARY_SEARCH_PATHS = ""; LIBRARY_STYLE = Static; - OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; @@ -236,6 +239,8 @@ 78E9AE180A36A8E3000D76A8 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1)"; + ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1 = "ppc i386"; COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ""; GCC_ENABLE_FIX_AND_CONTINUE = NO; @@ -270,6 +275,8 @@ 78E9AE190A36A8E3000D76A8 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1)"; + ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1 = "ppc i386"; FRAMEWORK_SEARCH_PATHS = ""; GCC_ENABLE_TRIGRAPHS = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -300,25 +307,18 @@ 78E9AE1B0A36A8E3000D76A8 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; }; name = Development; }; 78E9AE1C0A36A8E3000D76A8 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = ( - ppc, - i386, - ); - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; }; name = Deployment; }; 78E9AE1D0A36A8E3000D76A8 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; }; name = Default; }; diff --git a/packaging/macosx/ScriptExec/launcher-quartz-no-macintegration.sh b/packaging/macosx/ScriptExec/launcher-quartz-no-macintegration.sh new file mode 100755 index 000000000..d449b5121 --- /dev/null +++ b/packaging/macosx/ScriptExec/launcher-quartz-no-macintegration.sh @@ -0,0 +1,169 @@ +#!/bin/sh +# +# Author: Aaron Voisine <aaron@voisine.org> +# Inkscape Modifications: +# Michael Wybrow <mjwybrow@users.sourceforge.net> +# Jean-Olivier Irisson <jo.irisson@gmail.com> +# ~suv <suv-sf@users.sourceforge.net> +# + +[ -n "$INK_DEBUG_LAUNCHER" ] && set -x + +CWD="$(cd "$(dirname "$0")" && pwd)" +# e.g. /Applications/Inkscape.app/Contents/MacOS +TOP="$(dirname "$CWD")/Resources" +# e.g. /Applications/Inkscape.app/Contents/Resources +BASE="$(echo "$TOP" | sed -e 's/\/Contents\/Resources.*$//')" +# e.g. /Applications/Inkscape.app + +source "${TOP}/xdg_setup.sh" +source "${TOP}/alert_fccache.sh" + +# FIXME: Inkscape needs better relocation support for OS X (get rid of the relative +# path hack in src/path-prefix.h for osxapp-enabled builds). Until then, below change +# of working directory is required: +# +# Due to changes after 0.48, we have change working directory in the script named 'inkscape': +# recursive calls to inkscape from python-based extensions otherwise cause the app to hang or +# fail (for python-based extensions, inkscape changes the working directory to the +# script's directory, and inkscape launched by python script thus can't find resources +# like the now essential 'units.xml' in INKSCAPE_UIDIR relative to the working directory). +cd "$BASE" || exit 1 + +# don't prepend to $PATH in recursive calls: +if [ -z "$INK_PATH_ORIG" ]; then + + # Brutally add many things to the PATH. If the directories do not exist, they won't be used anyway. + # the 'classic' PATH additions: + # /usr/local/bin which, though standard, doesn't seem to be in the PATH + # Fink + # MacPorts (former DarwinPorts) + # LaTeX distribution for Mac OS X + PATH_OTHER="/usr/texbin:/opt/local/bin:/sw/bin/:/usr/local/bin" + + # Put /usr/bin at beginning of path so we make sure we use Apple's python + # over one that may be installed be Macports, Fink or some other means. + PATH_PYTHON="/usr/bin" + + # Put $TOP/bin at beginning of path so we make sure that recursive calls + # to inkscape don't pull in other inkscape binaries with different setup. + # Also allows to override system python with custom wrapper script, and + # e.g. to support GIMP.app or gimp for external editing and GIMP XCF export. + PATH_pkgbin="$CWD:$TOP/bin" + + # save orig, new PATH + export INK_PATH_ORIG="$PATH" + export PATH="$PATH_pkgbin:$PATH_PYTHON:$PATH_OTHER:$INK_PATH_ORIG" +fi + +# Setup PYTHONPATH to use python modules shipped with Inkscape +OSXMINORNO="$(/usr/bin/sw_vers -productVersion | cut -d. -f2)" +build_arch=__build_arch__ +if [ $OSXMINORNO -gt "5" ]; then + if [ $OSXMINORNO -eq "6" ]; then + export VERSIONER_PYTHON_VERSION=2.6 + else # if [ $OSXMINORNO -ge "7" ]; then + export VERSIONER_PYTHON_VERSION=2.7 + fi + if [ $build_arch = "i386" ]; then + export VERSIONER_PYTHON_PREFER_32_BIT=yes + else # build & runtime arch x86_64 + export VERSIONER_PYTHON_PREFER_32_BIT=no + fi +fi +PYTHON_VERS="$(python -V 2>&1 | cut -c 8-10)" +export PYTHONPATH="$TOP/lib/python$PYTHON_VERS/site-packages/" + +export FONTCONFIG_PATH="$TOP/etc/fonts" +export PANGO_RC_FILE="$TOP/etc/pango/pangorc" +export PANGO_SYSCONFDIR="$TOP/etc" +export GTK_IM_MODULE_FILE="$TOP/lib/gtk-2.0/__gtk_version__/immodules.cache" +export GDK_PIXBUF_MODULE_FILE="$TOP/lib/gdk-pixbuf-2.0/__gtk_version__/loaders.cache" +export GTK_DATA_PREFIX="$TOP" +export GTK_EXE_PREFIX="$TOP" +export GTK_PATH="$TOP" +export GNOME_VFS_MODULE_CONFIG_PATH="$TOP/etc/gnome-vfs-2.0/modules" +export GNOME_VFS_MODULE_PATH="$TOP/lib/gnome-vfs-2.0/modules" +export GIO_USE_VFS="local" +export GVFS_REMOTE_VOLUME_MONITOR_IGNORE=1 +export GVFS_DISABLE_FUSE=1 +export XDG_DATA_DIRS="$TOP/share" +export ASPELL_CONF="prefix $TOP;" +export POPPLER_DATADIR="$TOP/share/poppler" + +# no DBUS for now +unset DBUS_LAUNCHD_SESSION_BUS_SOCKET +unset DBUS_SESSION_BUS_ADDRESS + +# Note: This requires the path with the exact ImageMagic version number. +# The actual version is inserted by the packaging script. +export MAGICK_CONFIGURE_PATH="$TOP/lib/ImageMagick-IMAGEMAGICKVER/config:$TOP/share/ImageMagick-IMAGEMAGICKVER_MAJOR/config" +export MAGICK_CODER_FILTER_PATH="$TOP/lib/ImageMagick-IMAGEMAGICKVER/modules-Q16/filters" +export MAGICK_CODER_MODULE_PATH="$TOP/lib/ImageMagick-IMAGEMAGICKVER/modules-Q16/coders" + +export INKSCAPE_SHAREDIR="$TOP/share/inkscape" +export INKSCAPE_PLUGINDIR="$TOP/lib/inkscape" +export INKSCAPE_LOCALEDIR="$TOP/share/locale" + +# Handle the case where the directory storing Inkscape has special characters +# ('#', '&', '|') in the name. These need to be escaped to work properly for +# various configuration files. +ESCAPEDTOP=`echo "$TOP" | sed 's/#/\\\\\\\\#/' | sed 's/&/\\\\\\&/g' | sed 's/|/\\\\\\|/g'` + +# Set GTK theme (only if there is no .gtkrc-2.0 in the user's home) +if [[ ! -e "$HOME/.gtkrc-2.0" ]]; then + export GTK2_RC_FILES="$ESCAPEDTOP/etc/gtk-2.0/gtkrc" +fi + +# If the AppleCollationOrder preference doesn't exist, we fall back to using +# the AppleLocale preference. +LANGSTR=`defaults read .GlobalPreferences AppleCollationOrder 2>/dev/null` +if [ "x$LANGSTR" == "x" -o "x$LANGSTR" == "xroot" ] +then + LANGSTR=`defaults read .GlobalPreferences AppleLocale 2>/dev/null | \ + sed 's/_.*//'` + [ $_DEBUG ] && echo "Setting LANGSTR from AppleLocale: $LANGSTR" 1>&2 +else + [ $_DEBUG ] && echo "Setting LANGSTR from AppleCollationOrder: $LANGSTR" 1>&2 +fi + +# NOTE: Have to add ".UTF-8" to the LANG since omitting causes Inkscape +# to crash on startup in locale_from_utf8(). +if [ "x$LANGSTR" == "x" ] +then + # override broken script + [ $_DEBUG ] && echo "Overriding empty LANGSTR" 1>&2 + export LANG="en_US.UTF-8" +else + tmpLANG="`grep \"\`echo $LANGSTR\`_\" /usr/share/locale/locale.alias | \ + tail -n1 | sed 's/\./ /' | awk '{print $2}'`" + if [ "x$tmpLANG" == "x" ] + then + # override broken script + [ $_DEBUG ] && echo "Overriding empty LANG from /usr/share/locale/locale.alias" 1>&2 + export LANG="en_US.UTF-8" + else + [ $_DEBUG ] && echo "Setting LANG from /usr/share/locale/locale.alias" 1>&2 + export LANG="$tmpLANG.UTF-8" + fi +fi +[ $_DEBUG ] && echo "Setting Language: $LANG" 1>&2 +export LC_ALL="$LANG" + +case "$INK_DEBUG" in + gdb) + EXEC="gdb --args" ;; + lldb) + EXEC="lldb -- " ;; + dtruss) + EXEC="dtruss" ;; + *) + EXEC="exec" ;; +esac +unset INK_DEBUG # ignore for recursive calls + +if [ "x$INK_DEBUG_SHELL" != "x" ]; then + exec bash +else + $EXEC "$CWD/inkscape-bin" "$@" +fi diff --git a/packaging/macosx/ScriptExec/main.c b/packaging/macosx/ScriptExec/main.c index f413d438a..e3f066d70 100644 --- a/packaging/macosx/ScriptExec/main.c +++ b/packaging/macosx/ScriptExec/main.c @@ -6,6 +6,7 @@ With modifications by Aaron Voisine for gimp.app With modifications by Marianne gagnon for Wilber-loves-apple With modifications by Michael Wybrow for Inkscape.app + With modifications by ~suv for Inkscape.app This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,7 +28,7 @@ /* * This app laucher basically takes care of: - * - launching Inkscape and X11 when double-clicked + * - launching Inkscape when double-clicked * - bringing X11 to the top when its icon is clicked in the dock (via a small applescript) * - catch file dropped on icon events (and double-clicked gimp documents) and notify gimp. * - catch quit events performed outside gimp, e.g. on the dock icon. @@ -39,7 +40,12 @@ #pragma mark Includes // Apple stuff + +// Note: including Carbon prevents building the launcher app in x86_64 +// used for StandardAlert in RequestUserAttention(), +// RedFatalAlert() #include <Carbon/Carbon.h> + #include <CoreFoundation/CoreFoundation.h> #include <Security/Authorization.h> #include <Security/AuthorizationTags.h> @@ -67,7 +73,6 @@ #define kEventClassRedFatalAlert 911 // custom carbon event types -#define kEventKindX11Failed 911 #define kEventKindFCCacheFailed 912 //maximum arguments the script accepts @@ -83,15 +88,14 @@ static void *OpenDoc(void *arg); static OSErr ExecuteScript(char *script, pid_t *pid); static void GetParameters(void); -static char* GetScript(void); -static char* GetOpenDoc(void); +static unsigned char* GetScript(void); +static unsigned char* GetOpenDoc(void); OSErr LoadMenuBar(char *appName); -static OSStatus FSMakePath(FSSpec file, char *path, long maxPathSize); +static OSStatus FSMakePath(FSRef fileRef, unsigned char *path, long maxPathSize); static void RedFatalAlert(Str255 errorString, Str255 expStr); -static short DoesFileExist(char *path); -static OSStatus FixFCCache(void); +static short DoesFileExist(unsigned char *path); static OSErr AppQuitAEHandler(const AppleEvent *theAppleEvent, AppleEvent *reply, long refCon); @@ -99,8 +103,6 @@ static OSErr AppOpenDocAEHandler(const AppleEvent *theAppleEvent, AppleEvent *reply, long refCon); static OSErr AppOpenAppAEHandler(const AppleEvent *theAppleEvent, AppleEvent *reply, long refCon); -static OSStatus X11FailedHandler(EventHandlerCallRef theHandlerCall, - EventRef theEvent, void *userData); static OSStatus FCCacheFailedHandler(EventHandlerCallRef theHandlerCall, EventRef theEvent, void *userData); static OSErr AppReopenAppAEHandler(const AppleEvent *theAppleEvent, @@ -109,7 +111,7 @@ static OSErr AppReopenAppAEHandler(const AppleEvent *theAppleEvent, static OSStatus CompileAppleScript(const void* text, long textLength, AEDesc *resultData); static OSStatus SimpleCompileAppleScript(const char* theScript); -static void runScript(); +static OSErr runScript(); /////////////////////////////////////// // Globals @@ -144,7 +146,6 @@ extern char **environ; int main(int argc, char* argv[]) { OSErr err = noErr; - EventTypeSpec X11events = { kEventClassRedFatalAlert, kEventKindX11Failed }; EventTypeSpec FCCacheEvents = { kEventClassRedFatalAlert, kEventKindFCCacheFailed }; InitCursor(); @@ -165,9 +166,6 @@ int main(int argc, char* argv[]) 0, false); err += InstallEventHandler(GetApplicationEventTarget(), - NewEventHandlerUPP(X11FailedHandler), 1, - &X11events, NULL, NULL); - err += InstallEventHandler(GetApplicationEventTarget(), NewEventHandlerUPP(FCCacheFailedHandler), 1, &FCCacheEvents, NULL, NULL); @@ -181,7 +179,7 @@ int main(int argc, char* argv[]) GetParameters(); //load data from files containing exec settings // compile "icon clicked" script so it's ready to execute - SimpleCompileAppleScript("tell application \"X11\" to activate"); + SimpleCompileAppleScript("tell application \"XQuartz\" to activate"); RunApplicationEventLoop(); //Run the event loop return 0; @@ -229,6 +227,7 @@ static void ShowFirstStartWarningDialog(void) ////////////////////////////////// // Handler for when fontconfig caches need to be generated +// TODO: remove (alert and touch moved to launcher script) ////////////////////////////////// static OSStatus FCCacheFailedHandler(EventHandlerCallRef theHandlerCall, EventRef theEvent, void *userData) @@ -243,8 +242,8 @@ static OSStatus FCCacheFailedHandler(EventHandlerCallRef theHandlerCall, ShowFirstStartWarningDialog(); // Note that we've seen the warning. - system("test -d \"$HOME/.inkscape-etc\" || mkdir -p \"$HOME/.inkscape-etc\"; " - "touch \"$HOME/.inkscape-etc/.fccache-new\""); + system("test -d \"$HOME/.cache/inkscape\" || mkdir -p \"$HOME/.cache/inkscape\"; " + "touch \"$HOME/.cache/inkscape/.fccache-new\""); // Rerun now. OSErr err = ExecuteScript(scriptPath, &pid); ExitToShell(); @@ -253,116 +252,6 @@ static OSStatus FCCacheFailedHandler(EventHandlerCallRef theHandlerCall, } -static size_t safeRead(int d, void *buf, size_t nbytes) -{ - ssize_t bytesToRead = nbytes; - ssize_t bytesRead = 0; - char *offset = (char *) buf; - - while ((bytesToRead > 0)) - { - bytesRead = read(d, offset, bytesToRead); - if (bytesRead > 0) - { - offset += bytesRead; - bytesToRead -= bytesRead; - } - else if (bytesRead == 0) - { - // Reached EOF. - break; - } - else if (bytesRead == -1) - { - if ((errno == EINTR) || (errno == EAGAIN)) - { - // Try again. - continue; - } - return 0; - } - } - return bytesRead; -} - - -///////////////////////////////////// -// Code to run fc-cache on first run -///////////////////////////////////// -static OSStatus FixFCCache (void) -{ - FILE *fileConnToChild = NULL; - int fdConnToChild = 0; - pid_t childPID = WAIT_ANY; - size_t bytesChildPID; - size_t bytesRead; - int status; - - char commandStr[] = "/usr/X11R6/bin/fc-cache"; - char *commandArgs[] = { "-f", NULL }; - - // Run fc-cache - AuthorizationItem authItems[] = - { - { - kAuthorizationRightExecute, - strlen(commandStr), - commandStr, - 0 - } - }; - AuthorizationItemSet authItemSet = - { - 1, - authItems - }; - AuthorizationRef authRef = NULL; - OSStatus err = AuthorizationCreate (NULL, &authItemSet, - kAuthorizationFlagInteractionAllowed | - kAuthorizationFlagExtendRights, &authRef); - - if (err == errAuthorizationSuccess) - { - err = AuthorizationExecuteWithPrivileges(authRef, commandStr, - kAuthorizationFlagDefaults, commandArgs, - &fileConnToChild); - - if (err == errAuthorizationSuccess) - { - // Unfortunately, AuthorizationExecuteWithPrivileges - // does not return the process ID associated with the - // process it runs. The best solution we have it to - // try and get the process ID from the file descriptor. - // This is based on example code from Apple's - // MoreAuthSample. - - fdConnToChild = fileno(fileConnToChild); - - // Try an get the process ID of the fc-cache command - bytesChildPID = sizeof(childPID); - bytesRead = safeRead(fdConnToChild, &childPID, - bytesChildPID); - if (bytesRead != bytesChildPID) - { - // If we can't get it the best alternative - // is to wait for any child to finish. - childPID = WAIT_ANY; - } - - if (fileConnToChild != NULL) { - fclose(fileConnToChild); - } - - // Wait for child process to finish. - waitpid(childPID, &status, 0); - } - } - AuthorizationFree(authRef, kAuthorizationFlagDestroyRights); - - return err; -} - - /////////////////////////////////// // Execution thread starts here /////////////////////////////////// @@ -373,12 +262,7 @@ static void *Execute (void *arg) taskDone = false; OSErr err = ExecuteScript(scriptPath, &pid); - if (err == (OSErr)11) { - CreateEvent(NULL, kEventClassRedFatalAlert, kEventKindX11Failed, 0, - kEventAttributeNone, &event); - PostEventToQueue(GetMainEventQueue(), event, kEventPriorityStandard); - } - else if (err == (OSErr)12) { + if (err == (OSErr)12) { CreateEvent(NULL, kEventClassRedFatalAlert, kEventKindFCCacheFailed, 0, kEventAttributeNone, &event); PostEventToQueue(GetMainEventQueue(), event, kEventPriorityHigh); @@ -448,14 +332,13 @@ static void GetParameters (void) /////////////////////////////////////// // Get path to the script in Resources folder /////////////////////////////////////// -static char* GetScript (void) +static unsigned char* GetScript (void) { CFStringRef fileName; CFBundleRef appBundle; CFURLRef scriptFileURL; FSRef fileRef; - FSSpec fileSpec; - char *path; + unsigned char *path; //get CF URL for script if (! (appBundle = CFBundleGetMainBundle())) return NULL; @@ -472,13 +355,9 @@ static char* GetScript (void) CFRelease(scriptFileURL); CFRelease(fileName); - //convert FSRef to FSSpec - if (FSGetCatalogInfo(&fileRef, kFSCatInfoNone, NULL, NULL, &fileSpec, - NULL)) return NULL; - //create path string if (! (path = malloc(kMaxPathLength))) return NULL; - if (FSMakePath(fileSpec, path, kMaxPathLength)) return NULL; + if (FSMakePath(fileRef, path, kMaxPathLength)) return NULL; if (! DoesFileExist(path)) return NULL; return path; @@ -487,14 +366,13 @@ static char* GetScript (void) /////////////////////////////////////// // Gets the path to openDoc in Resources folder /////////////////////////////////////// -static char* GetOpenDoc (void) +static unsigned char* GetOpenDoc (void) { CFStringRef fileName; CFBundleRef appBundle; CFURLRef openDocFileURL; FSRef fileRef; - FSSpec fileSpec; - char *path; + unsigned char *path; //get CF URL for openDoc if (! (appBundle = CFBundleGetMainBundle())) return NULL; @@ -511,13 +389,9 @@ static char* GetOpenDoc (void) CFRelease(openDocFileURL); CFRelease(fileName); - //convert FSRef to FSSpec - if (FSGetCatalogInfo(&fileRef, kFSCatInfoNone, NULL, NULL, &fileSpec, - NULL)) return NULL; - //create path string if (! (path = malloc(kMaxPathLength))) return NULL; - if (FSMakePath(fileSpec, path, kMaxPathLength)) return NULL; + if (FSMakePath(fileRef, path, kMaxPathLength)) return NULL; if (! DoesFileExist(path)) return NULL; return path; @@ -545,14 +419,8 @@ OSErr LoadMenuBar (char *appName) /////////////////////////////////////// // Generate path string from FSSpec record /////////////////////////////////////// -static OSStatus FSMakePath(FSSpec file, char *path, long maxPathSize) +static OSStatus FSMakePath(FSRef fileRef, unsigned char *path, long maxPathSize) { - OSErr err = noErr; - FSRef fileRef; - - //create file reference from file spec - if (err = FSpMakeFSRef(&file, &fileRef)) return err; - // and then convert the FSRef to a path return FSRefMakePath(&fileRef, path, maxPathSize); } @@ -569,9 +437,9 @@ static void RedFatalAlert (Str255 errorString, Str255 expStr) /////////////////////////////////////// // Determines whether file exists at path or not /////////////////////////////////////// -static short DoesFileExist (char *path) +static short DoesFileExist (unsigned char *path) { - if (access(path, F_OK) == -1) return false; + if (access((char *)path, F_OK) == -1) return false; return true; } @@ -590,7 +458,7 @@ static OSErr AppQuitAEHandler(const AppleEvent *theAppleEvent, if (! taskDone && pid) { //kill the script process brutally kill(pid, 9); - printf("Platypus App: PID %d killed brutally\n", pid); + printf("Inkscape.app: PID %d killed brutally\n", pid); } pthread_cancel(tid); @@ -610,31 +478,31 @@ static OSErr AppOpenDocAEHandler(const AppleEvent *theAppleEvent, #pragma unused (reply, refCon) OSErr err = noErr; - AEDescList fileSpecList; + AEDescList fileRefList; AEKeyword keyword; DescType type; short i; long count, actualSize; - FSSpec fileSpec; - char path[kMaxPathLength]; + FSRef fileRef; + unsigned char path[kMaxPathLength]; while (numArgs > 0) free(fileArgs[numArgs--]); //Read the AppleEvent err = AEGetParamDesc(theAppleEvent, keyDirectObject, typeAEList, - &fileSpecList); + &fileRefList); - err = AECountItems(&fileSpecList, &count); //Count number of files + err = AECountItems(&fileRefList, &count); //Count number of files for (i = 1; i <= count; i++) { //iteratively process each file - //get fsspec from apple event - if (! (err = AEGetNthPtr(&fileSpecList, i, typeFSS, &keyword, &type, - (Ptr)&fileSpec, sizeof(FSSpec), &actualSize))) + //get fsref from apple event + if (! (err = AEGetNthPtr(&fileRefList, i, typeFSRef, &keyword, &type, + (Ptr)&fileRef, sizeof(FSRef), &actualSize))) { - //get path from file spec - if ((err = FSMakePath(fileSpec, (unsigned char *)&path, + //get path from file ref + if ((err = FSMakePath(fileRef, (unsigned char *)&path, kMaxPathLength))) return err; if (numArgs == kMaxArgumentsToScript) break; @@ -659,7 +527,7 @@ static OSErr AppOpenDocAEHandler(const AppleEvent *theAppleEvent, static OSErr AppReopenAppAEHandler(const AppleEvent *theAppleEvent, AppleEvent *reply, long refCon) { - runScript(); + return runScript(); } // if app is being opened @@ -675,70 +543,6 @@ static OSErr AppOpenAppAEHandler(const AppleEvent *theAppleEvent, } -static void OpenURL(Str255 url) -{ - // Use Internet Config to hand the URL to the appropriate application, as - // set by the user in the Internet Preferences pane. - ICInstance icInstance; - // Applications creator code: - OSType signature = 'Inks'; - OSStatus error = ICStart( &icInstance, signature ); - if ( error == noErr ) - { - ConstStr255Param hint = 0x0; - const char* data = url; - long length = strlen(url); - long start = 0; - long end = length; - // Don't bother testing return value (error); launched application will - // report problems. - ICLaunchURL( icInstance, hint, data, length, &start, &end ); - ICStop( icInstance ); - } -} - - -////////////////////////////////// -// Handler for when X11 fails to start -////////////////////////////////// -static OSStatus X11FailedHandler(EventHandlerCallRef theHandlerCall, - EventRef theEvent, void *userData) -{ - #pragma unused(theHanderCall, theEvent, userData) - - pthread_join(tid, NULL); - if (odtid) pthread_join(odtid, NULL); - - SInt16 itemHit; - const char *getX11 = "\pGet X11 for Panther"; - - AlertStdAlertParamRec params; - params.movable = true; - params.helpButton = false; - params.filterProc = NULL; - params.defaultText = (StringPtr) kAlertDefaultOKText; - params.cancelText = getX11; - params.otherText = NULL; - params.defaultButton = kAlertStdAlertOKButton; - params.cancelButton = kAlertStdAlertCancelButton; - params.position = kWindowDefaultPosition; - - StandardAlert(kAlertStopAlert, "\pFailed to start X11", - "\pInkscape.app requires Apple's X11, which is freely downloadable from Apple's website for Panther (10.3.x) users and available as an optional install from the installation DVD for Tiger (10.4.x) users.\n\nPlease install X11 and restart Inkscape.", - ¶ms, &itemHit); - - if (itemHit == kAlertStdAlertCancelButton) - { - OpenURL("http://www.apple.com/downloads/macosx/apple/macosx_updates/x11formacosx.html"); - } - - ExitToShell(); - - - return noErr; -} - - // Compile and run a small AppleScript. The code below does no cleanup and no proper error checks // but since it's there until the app is shut down, and since we know the script is okay, // there should not be any problems. @@ -774,7 +578,7 @@ static OSStatus CompileAppleScript(const void* text, long textLength, } /* runs the compiled applescript */ -static void runScript() +static OSErr runScript() { /* run the script */ err = OSAExecute(theComponent, scriptID, kOSANullScript, diff --git a/packaging/macosx/create-stock-icon-theme.sh b/packaging/macosx/create-stock-icon-theme.sh new file mode 100755 index 000000000..6ca3d5772 --- /dev/null +++ b/packaging/macosx/create-stock-icon-theme.sh @@ -0,0 +1,165 @@ +#!/usr/bin/env bash +# +# +# Create new icon theme based on GTK+ stock icons +# +# Copyright (C) 2014 ~suv +# + + +# config +#--------------------------------------------------------- + +if [ -z $LIBPREFIX ]; then + LIBPREFIX="/opt/local-x11" +fi +if [ -z $stock_src ]; then + stock_src="$(pwd)/stock-icons" +fi + + +# setup +#--------------------------------------------------------- + +map_legacy_icons="$LIBPREFIX/libexec/icon-name-mapping" +if [ ! -x "$map_legacy_icons" ]; then + echo "Install icon-naming-utils" + exit 1 +fi + +if [ ! -d "$stock_src" ]; then + echo "extra icons not found." + exit 1 +fi + +ICONDIR="$1" +icon_theme_dir="$(dirname "$ICONDIR")" +if [ ! -d "$icon_theme_dir" ] ; then + mkdir -p "$icon_theme_dir" +fi +icon_theme_name="$(basename "$ICONDIR")" +if [ -z "$icon_theme_name" ]; then + echo "Not a valid icon theme name." + exit 1 +fi +theme_color="$2" + +contexts="actions animations apps categories devices emblems emotes mimetypes places status" +gtk_stock_sizes="16 20 24 32 48" + +orig_dir="$(pwd)" +cd "$icon_theme_dir" +current_dir="$(pwd)" + +index_file="${icon_theme_name}/index.theme" + + +# Remove a previously existing icon theme if necessary +#--------------------------------------------------------- + +if [ -d "$icon_theme_name" ]; then + echo "Removing previous $icon_theme_name" + rm -R "$icon_theme_name" +fi + + +# create new icon theme structure +#--------------------------------------------------------- + +mkdir -p "$icon_theme_name" +for size in $gtk_stock_sizes; do + mkdir "${icon_theme_name}/${size}x${size}" +done + + +# copy stock icons +#--------------------------------------------------------- + +for size in $gtk_stock_sizes; do + cp -RP "${stock_src}/$size" "${icon_theme_name}/${size}x${size}/stock" +done + +# workarounds for broken icons (bug #1269698) +#--------------------------------------------------------- + +for size in $gtk_stock_sizes; do + cd "${icon_theme_name}/${size}x${size}/stock" + # directional icons + for di in "edit-undo" "edit-redo" "document-revert"; do + if [ -f "${di}-ltr.png" ]; then + if [ ! -e "${di}.png" ]; then + ln -s "${di}-ltr.png" "${di}.png" + fi + fi + done + # misc failed lookups + for di in "preferences"; do + if [ -f "gtk-${di}.png" ]; then + if [ ! -e "${di}-system.png" ]; then + ln -s "gtk-${di}.png" "${di}-system.png" + fi + fi + done + cd "$current_dir" +done + +# create links (round 1) +#--------------------------------------------------------- + +for size in $gtk_stock_sizes; do + cd "${icon_theme_name}/${size}x${size}" + for ct in $contexts; do + echo "size: $size context: $ct" + mv "stock" "$ct" + $map_legacy_icons -c "$ct" + mv $ct "stock" + done + cd "$current_dir" +done + + +# create links (round 2) +#--------------------------------------------------------- + +for size in $gtk_stock_sizes; do + cd "${icon_theme_name}/${size}x${size}/stock" + for icon_file in *.png; do + [ -s $icon_file ] && ln -s "$icon_file" "$(basename $icon_file .png)"-symbolic.png + done + cd "$current_dir" +done + + +# create new index.theme +#--------------------------------------------------------- + +dir_list= +for size in $gtk_stock_sizes; do + dir_list="${dir_list}${size}x${size}/stock," +done + +cat > "$index_file" <<End-of-message +[Icon Theme] +Name=$icon_theme_name +Inherits=hicolor +Comment=Gtk Stock Icons for Inkscape.app +Example=folder + +# Directory list +Directories=$dir_list + +End-of-message + +for size in $gtk_stock_sizes; do + cat >> "$index_file" << End-of-message +[${size}x${size}/stock] +Size=${size} +Context=Stock +Type=fixed + +End-of-message +done + + +#--------------------------------------------------------- +# vim: expandtab shiftwidth=4 tabstop=8 softtabstop=4 fileencoding=utf-8 textwidth=99 diff --git a/packaging/macosx/dmg_background.png b/packaging/macosx/dmg_background.png Binary files differindex 04cc698df..0ee039718 100644 --- a/packaging/macosx/dmg_background.png +++ b/packaging/macosx/dmg_background.png diff --git a/packaging/macosx/dmg_background.svg b/packaging/macosx/dmg_background.svg index 559b77ef6..a62beb370 100644 --- a/packaging/macosx/dmg_background.svg +++ b/packaging/macosx/dmg_background.svg @@ -10,858 +10,215 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="624.54108" - height="350" - id="svg2" - sodipodi:version="0.32" - inkscape:version="0.46+devel r21585 custom" - sodipodi:docname="dmg_background.svg" - version="1.0" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" - inkscape:output_extension="org.inkscape.output.svg.inkscape" - inkscape:export-filename="./dmg_background.png"> + width="1280" + height="800" + id="svg13532" + version="1.1" + inkscape:version="0.91pre2 r13554 custom" + viewBox="0 0 1280 800" + sodipodi:docname="dmg_background.svg"> <defs - id="defs4"> + id="defs13534"> <linearGradient inkscape:collect="always" - id="linearGradient5781"> - <stop - style="stop-color:#555753;stop-opacity:1" - offset="0" - id="stop5783" /> - <stop - style="stop-color:#d3d7cf;stop-opacity:1" - offset="1" - id="stop5785" /> - </linearGradient> - <inkscape:perspective - sodipodi:type="inkscape:persp3d" - inkscape:vp_x="0 : 175 : 1" - inkscape:vp_y="0 : 1000 : 0" - inkscape:vp_z="624.54108 : 175 : 1" - inkscape:persp3d-origin="312.27054 : 116.66667 : 1" - id="perspective58" /> - <linearGradient - id="linearGradient841"> - <stop - id="stop842" - offset="0" - style="stop-color:#62c012;stop-opacity:1;" /> - <stop - id="stop843" - offset="1" - style="stop-color:white;stop-opacity:0;" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient841" - id="linearGradient4989" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(4.195695,0,0,1.0590609,48.598964,114.17717)" - x1="76.911163" - y1="25.401896" - x2="76.911163" - y2="137.02844" /> - <filter - inkscape:collect="always" - x="-1.0928679" - width="3.1857358" - y="-1.212016" - height="3.424032" - id="filter6362"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="6.9435145" - id="feGaussianBlur6364" /> - </filter> - <filter - inkscape:collect="always" - x="-0.27738996" - width="1.5547799" - y="-0.28560414" - height="1.5712083" - id="filter6366"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="6.9435145" - id="feGaussianBlur6368" /> - </filter> - <filter - inkscape:collect="always" - x="-0.9599201" - width="2.9198402" - y="-1.2584231" - height="3.5168462" - id="filter6370"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="6.9435145" - id="feGaussianBlur6372" /> - </filter> - <filter - inkscape:collect="always" - x="-1.2436028" - width="3.4872055" - y="-1.2664239" - height="3.5328478" - id="filter6374"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="6.9435145" - id="feGaussianBlur6376" /> - </filter> - <filter - inkscape:collect="always" - x="-0.016262574" - width="1.0325251" - y="-0.19320738" - height="1.3864148" - id="filter6402"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.8499877" - id="feGaussianBlur6404" /> - </filter> - <clipPath - clipPathUnits="userSpaceOnUse" - id="clipPath8875"> - <path - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.81105022pt;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="M 251.4419,206.10491 C 247.44915,206.10491 244.22315,209.33092 244.22315,213.32366 L 244.22315,312.47991 C 244.22315,316.47265 247.44915,319.69867 251.4419,319.69866 L 472.16065,319.69866 C 476.1534,319.69866 479.34815,316.47264 479.34815,312.47991 L 479.34815,213.32366 C 479.34815,209.33092 476.1534,206.10491 472.16065,206.10491 L 251.4419,206.10491 z M 321.1294,233.57366 L 321.1294,244.94866 L 321.16065,244.94866 L 440.0669,244.94866 L 440.0669,277.26116 L 321.1919,277.26116 L 321.2544,288.63616 L 282.1294,261.26116 L 321.1294,233.57366 z" - id="path8877" /> - </clipPath> - <filter - inkscape:collect="always" - id="filter9015"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.755523" - id="feGaussianBlur9017" /> - </filter> - <linearGradient - gradientTransform="translate(-130.16572,-83.352786)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient10981-3-9" - id="linearGradient1539" - y2="144.5" - x2="153.70045" - y1="217.5" - x1="180.81293" /> - <filter - color-interpolation-filters="sRGB" - id="filter10997-7-2"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="2.7696726" - id="feGaussianBlur10999-0-7" /> - </filter> - <linearGradient - id="linearGradient10981-3-9"> - <stop - offset="0" - style="stop-color:#729fcf;stop-opacity:1" - id="stop10983-2-0" /> - <stop - offset="1" - style="stop-color:#729fcf;stop-opacity:0" - id="stop10985-3-7" /> - </linearGradient> - <linearGradient - gradientTransform="matrix(0.4927913,0,0,0.4927913,-6.0003885,-9.7225182)" - gradientUnits="userSpaceOnUse" - xlink:href="#WhiteTransparent-3" - id="linearGradient5822-7" - y2="187.65974" - x2="82.754066" - y1="180.47572" - x1="73.712105" /> - <filter - color-interpolation-filters="sRGB" - id="filter5845-5"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.2409356" - id="feGaussianBlur5847-5" /> - </filter> - <linearGradient - id="linearGradient5805-9"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop5807-4" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop5809-9" /> - </linearGradient> - <radialGradient - gradientTransform="matrix(1.3515234,0,0,1.7175707,-63.705646,-153.95568)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient5805-9" - id="radialGradient5811-3" - fy="214.55121" - fx="181.22731" - r="22.466398" - cy="214.55121" - cx="181.22731" /> - <linearGradient - id="linearGradient5793-9"> + id="content_bg"> <stop + style="stop-color:#eeeeee;stop-opacity:1" offset="0" - style="stop-color:#eeeeec;stop-opacity:1" - id="stop5795-5" /> - <stop - offset="1" - style="stop-color:#eeeeec;stop-opacity:0" - id="stop5797-4" /> - </linearGradient> - <linearGradient - gradientTransform="matrix(0.8852575,0,0,0.8852575,5.1772151,9.2293372)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient5793-9" - id="linearGradient5801-2" - y2="84.480316" - x2="53.63158" - y1="76.246338" - x1="57.225197" /> - <filter - color-interpolation-filters="sRGB" - id="filter5983-8" - x="-0.082508981" - width="1.165018" - y="-0.12233575" - height="1.2446715"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="3.6868363" - id="feGaussianBlur5985-3" /> - </filter> - <linearGradient - id="linearGradient5899-9"> + id="stop4699" /> <stop - offset="0" style="stop-color:#ffffff;stop-opacity:1" - id="stop5901-9" /> - <stop offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop5903-3" /> + id="stop4701" /> </linearGradient> <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient5899-9" - id="linearGradient5905-4" - y2="223.5" - x2="153.5" - y1="208.16444" - x1="95.5" /> - <filter - color-interpolation-filters="sRGB" - id="filter9298-4"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.32610678" - id="feGaussianBlur9300-4" /> - </filter> - <linearGradient - id="linearGradient9286-3"> + inkscape:collect="always" + id="header_bg"> <stop + style="stop-color:#e6e6e6;stop-opacity:1" offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop9288-9" /> + id="stop4685" /> <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop9290-2" /> - </linearGradient> - <radialGradient - gradientTransform="matrix(1.7221535,0,0,1.6949765,-49.39526,-14.078057)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient9286-3" - id="radialGradient11553-3" - fy="21.225746" - fx="68.39994" - r="54.783398" - cy="21.225746" - cx="68.39994" /> - <filter - color-interpolation-filters="sRGB" - id="filter9068-2" - x="-0.076179281" - width="1.1523587" - y="-0.1655701" - height="1.3311402"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.66458488" - id="feGaussianBlur9070-7" /> - </filter> - <linearGradient - id="linearGradient9040-4"> + id="stop4687" + offset="0.13333334" + style="stop-color:#e6e6e6;stop-opacity:1" /> <stop - offset="0" style="stop-color:#ffffff;stop-opacity:1" - id="stop9042-3" /> - <stop offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop9044-7" /> + id="stop4689" /> </linearGradient> - <radialGradient - gradientTransform="matrix(1.1850746,-0.3283582,0.1228557,0.4433973,-45.068314,152.92161)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient9040-4" - id="radialGradient9046-1" - fy="230.83626" - fx="90.28125" - r="10.46875" - cy="230.83626" - cx="90.28125" /> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0" - id="linearGradient9025-1" - y2="200.07138" - x2="231.37646" - y1="195.62132" - x1="231.37646" /> <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0" - id="linearGradient9023-6" - y2="201.5" - x2="231.75" - y1="195.1875" - x1="231.625" /> - <linearGradient - id="linearGradient8998-5"> + inkscape:collect="always" + id="nav_foot"> <stop + style="stop-color:#4d4d4d;stop-opacity:1" offset="0" - style="stop-color:#ffffff;stop-opacity:0.33004925" - id="stop9000-9" /> + id="stop4635" /> <stop + style="stop-color:#333333;stop-opacity:1" offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop9002-5" /> + id="stop4637" /> </linearGradient> - <radialGradient - gradientTransform="matrix(1,0,0,0.4070844,0,115.76014)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8998-5" - id="radialGradient9004-6" - fy="187.86935" - fx="89.875" - r="22.75" - cy="187.86935" - cx="89.875" /> - <radialGradient - gradientTransform="matrix(1,0,0,0.1477455,0,174.56924)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8916-4" - id="radialGradient8994-0" - fy="204.83229" - fx="228.21875" - r="14.09375" - cy="204.83229" - cx="228.21875" /> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0" - id="linearGradient8992-2" - y2="200.07138" - x2="231.37646" - y1="195.62132" - x1="231.37646" /> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0" - id="linearGradient8990-4" - y2="201.5" - x2="231.75" - y1="195.1875" - x1="231.625" /> - <filter - color-interpolation-filters="sRGB" - id="filter8980-1" - x="-0.069862768" - width="1.1397254" - y="-0.47285891" - height="1.9457178"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.82052366" - id="feGaussianBlur8982-9" /> - </filter> <linearGradient - id="linearGradient8916-4"> + inkscape:collect="always" + id="nav_top"> <stop + style="stop-color:#4d4d4d;stop-opacity:1" offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop8918-9" /> + id="stop4469" /> <stop + style="stop-color:#1a1a1a;stop-opacity:1" offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop8920-9" /> + id="stop4471" /> </linearGradient> - <radialGradient - gradientTransform="matrix(1,0,0,0.1477455,0,174.56924)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8916-4" - id="radialGradient8922-9" - fy="204.83229" - fx="228.21875" - r="14.09375" - cy="204.83229" - cx="228.21875" /> - <filter - color-interpolation-filters="sRGB" - id="filter8906-3" - x="-0.085441329" - width="1.1708827" - y="-0.27823201" - height="1.556464"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.56515877" - id="feGaussianBlur8908-7" /> - </filter> <linearGradient gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0" - id="linearGradient8910-3" - y2="200.07138" - x2="231.37646" - y1="195.62132" - x1="231.37646" /> - <linearGradient - id="linearGradient8866-0"> + id="linearGradient5785-8-9"> <stop offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop8868-3" /> + style="stop-color:#c0cdf9;stop-opacity:1" + id="stop5787-7-9" /> <stop offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop8870-0" /> + style="stop-color:#07092d;stop-opacity:0.28804347" + id="stop5789-3-7" /> </linearGradient> <linearGradient gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0" - id="linearGradient8912-9" - y2="201.5" - x2="231.75" - y1="195.1875" - x1="231.625" /> - <filter - color-interpolation-filters="sRGB" - id="filter8764-9" - x="-0.074262142" - width="1.1485243" - y="-0.1754123" - height="1.3508246"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="2.1195652" - id="feGaussianBlur8766-2" /> - </filter> - <radialGradient - gradientTransform="matrix(1,0,0,0.4233577,0,97.164234)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8738-4" - id="radialGradient8768-6" - fy="182.08189" - fx="217.5" - r="34.25" - cy="182.08189" - cx="217.5" /> - <linearGradient - id="linearGradient8738-4"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop8740-8" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop8742-4" /> - </linearGradient> - <radialGradient - gradientTransform="matrix(1,0,0,0.4233577,0,97.164234)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8738-4" - id="radialGradient8744-9" - fy="168.5" - fx="210.25" - r="34.25" - cy="168.5" - cx="210.25" /> - <filter - color-interpolation-filters="sRGB" - id="filter8732-3" - x="-0.078079157" - width="1.1561583" - y="-0.11422065" - height="1.2284414"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.9579068" - id="feGaussianBlur8734-5" /> - </filter> - <radialGradient - gradientTransform="matrix(2.0032532,0,0,1.340898,-132.8752,-95.166065)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8568-7" - id="radialGradient8574-0" - fy="251.99396" - fx="132.44434" - r="30.599579" - cy="251.99396" - cx="132.44434" /> - <linearGradient - id="linearGradient8568-7"> + id="WhiteTransparent-3-90"> <stop offset="0" style="stop-color:#ffffff;stop-opacity:1" - id="stop8570-9" /> + id="stop7606-1-2" /> <stop offset="1" style="stop-color:#ffffff;stop-opacity:0" - id="stop8572-1" /> + id="stop7608-8-0" /> </linearGradient> - <radialGradient - gradientTransform="matrix(1.5700516,0,0,1.0509301,-75.500107,-22.095908)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8568-7" - id="radialGradient9177-1" - fy="250.89737" - fx="116.31038" - r="30.599579" - cy="250.89737" - cx="116.31038" /> <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#WhiteTransparent-3" - id="IcecapTip-0" - y2="50" - x2="90" - y1="20" - x1="60" /> - <linearGradient - gradientUnits="userSpaceOnUse" - id="WhiteTransparent-3"> + id="linearGradient5793-9-3"> <stop offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop7606-1" /> + style="stop-color:#eeeeec;stop-opacity:1" + id="stop5795-5-7" /> <stop offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop7608-8" /> + style="stop-color:#eeeeec;stop-opacity:0" + id="stop5797-4-8" /> </linearGradient> <linearGradient - gradientTransform="matrix(1.009184,0,0,1.009184,-0.3890738,-0.3831933)" - gradientUnits="userSpaceOnUse" - xlink:href="#WhiteTransparent-3" - id="shinySpecular-0" - y2="60" - x2="58" - y1="35" - x1="33" /> - <filter - color-interpolation-filters="sRGB" - id="filter8490-0"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="2.4163949" - id="feGaussianBlur8492-5" /> - </filter> - <clipPath - id="clipPath9086-1"> - <use - xlink:href="#outline1" - height="300" - width="400" - y="0" - x="0" - style="opacity:0.25;fill:#ffffff;fill-opacity:1" - id="use9088-0" - transform="translate(1.0095461e-6,0)" /> - </clipPath> - <linearGradient - gradientUnits="userSpaceOnUse" - id="linearGradient5785-8"> + id="linearGradient10981-3-9-0"> <stop offset="0" - style="stop-color:#c0cdf9;stop-opacity:1" - id="stop5787-7" /> + style="stop-color:#729fcf;stop-opacity:1" + id="stop10983-2-0-9" /> <stop offset="1" - style="stop-color:#07092d;stop-opacity:0.28804347" - id="stop5789-3" /> + style="stop-color:#729fcf;stop-opacity:0" + id="stop10985-3-7-7" /> </linearGradient> <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient5785-8" - id="linearGradient9175-3" - y2="40" - x2="60" - y1="20" - x1="82.118591" /> - <filter - color-interpolation-filters="sRGB" - id="filter6031-0"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="3.4903482" - id="feGaussianBlur6033-8" /> - </filter> - <filter - color-interpolation-filters="sRGB" - id="filter6017-3"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.80546496" - id="feGaussianBlur6019-9" /> - </filter> - <filter - color-interpolation-filters="sRGB" - id="filter8490"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="2.4163949" - id="feGaussianBlur8492" /> - </filter> - <linearGradient - gradientUnits="userSpaceOnUse" - id="linearGradient5785"> + inkscape:collect="always" + id="linearGradient5781"> <stop + style="stop-color:#555753;stop-opacity:1" offset="0" - style="stop-color:#c0cdf9;stop-opacity:1" - id="stop5787" /> + id="stop5783" /> <stop + style="stop-color:#d3d7cf;stop-opacity:1" offset="1" - style="stop-color:#07092d;stop-opacity:0.28804347" - id="stop5789" /> + id="stop5785" /> </linearGradient> <linearGradient gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient5785" + xlink:href="#linearGradient5785-8-9" id="linearGradient9175" y2="40" x2="60" y1="20" x1="82.118591" /> <clipPath - id="clipoutline1"> + id="clipoutline1-8"> <path - id="outline1" + id="outline1-2" d="M 54.1,12.5 12.9,54.7 C -2.7,70.3 23,69 32.3,74.9 36.6,77.7 18.5,81.3 22.2,85 c 3.6,3.7 21.7,7.1 25.3,10.7 3.6,3.7 -7.3,7.6 -3.7,11.3 3.5,3.7 11.9,0.2 13.4,8.6 1.1,6.2 15.4,3.1 21.8,-2.2 4,-3.4 -6.9,-3.4 -3.3,-7.1 9,-9.1 17,-4.1 20.3,-12.5 1.8,-4.5 -13.6,-7.7 -9.5,-10.6 9.8,-6.9 45.8,-10.4 29.2,-27 L 73,12.5 c -5.3,-5 -14,-5 -18.9,0 z m -9.9,64.7 c 0.9,0 30.8,4 19.3,7.1 -4.4,1.2 -24.6,-7.1 -19.3,-7.1 z m 57.2,16.6 c 0,2.1 16.3,3.3 15.4,-0.5 -1.3,-6.4 -13.6,-5.9 -15.4,0.5 z m -69.5,11.1 c 3.7,3.2 9.3,-0.7 11.1,-5.2 -3.6,-4.7 -16.9,0.3 -11.1,5.2 z m 67.5,-6.7 c -4.6,4.2 0.8,8.6 5.3,5.7 1.2,-0.8 -0.1,-4.7 -5.3,-5.7 z" /> </clipPath> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#WhiteTransparent" - id="sideSpecular" - y2="40" - x2="60" - y1="20" - x1="80" /> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#WhiteTransparent" - id="liquidSpecular" - y2="76" - x2="0" - y1="128" - x1="0" /> - <linearGradient - gradientUnits="userSpaceOnUse" - id="WhiteTransparent"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop7" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop9" /> - </linearGradient> - <inkscape:perspective - id="perspective3208" - inkscape:persp3d-origin="64 : 42.666667 : 1" - inkscape:vp_z="128 : 64 : 1" - inkscape:vp_y="0 : 1000 : 0" - inkscape:vp_x="0 : 64 : 1" - sodipodi:type="inkscape:persp3d" /> - <inkscape:perspective - id="perspective3354" - inkscape:persp3d-origin="0.5 : 0.33333333 : 1" - inkscape:vp_z="1 : 0.5 : 1" - inkscape:vp_y="0 : 1000 : 0" - inkscape:vp_x="0 : 0.5 : 1" - sodipodi:type="inkscape:persp3d" /> <filter color-interpolation-filters="sRGB" id="filter6017-3-7"> <feGaussianBlur inkscape:collect="always" stdDeviation="0.80546496" - id="feGaussianBlur6019-9-6" /> + id="feGaussianBlur6019-9-28" /> </filter> <filter color-interpolation-filters="sRGB" - id="filter6031-0-4"> + id="filter6031-0-56"> <feGaussianBlur inkscape:collect="always" stdDeviation="3.4903482" - id="feGaussianBlur6033-8-3" /> + id="feGaussianBlur6033-8-49" /> </filter> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient5785-8-3" - id="linearGradient9175-3-0" - y2="40" - x2="60" - y1="20" - x1="82.118591" /> - <linearGradient - gradientUnits="userSpaceOnUse" - id="linearGradient5785-8-3"> - <stop - offset="0" - style="stop-color:#c0cdf9;stop-opacity:1" - id="stop5787-7-0" /> - <stop - offset="1" - style="stop-color:#07092d;stop-opacity:0.28804347" - id="stop5789-3-9" /> - </linearGradient> <clipPath - id="clipPath9086-1-2"> + id="clipPath9086-1-5"> <use - xlink:href="#outline1" + xlink:href="#outline1-2" height="300" width="400" y="0" x="0" style="opacity:0.25;fill:#ffffff;fill-opacity:1" - id="use9088-0-5" + id="use9088-0-9" transform="translate(1.0095461e-6,0)" /> </clipPath> <filter color-interpolation-filters="sRGB" - id="filter8490-0-4"> + id="filter8490-0-0"> <feGaussianBlur inkscape:collect="always" stdDeviation="2.4163949" id="feGaussianBlur8492-5-0" /> </filter> <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient5785-8-3" - id="linearGradient3370" - y2="40" - x2="60" - y1="20" - x1="82.118591" /> - <linearGradient - gradientUnits="userSpaceOnUse" - id="linearGradient3372"> - <stop - offset="0" - style="stop-color:#c0cdf9;stop-opacity:1" - id="stop3374" /> - <stop - offset="1" - style="stop-color:#07092d;stop-opacity:0.28804347" - id="stop3376" /> - </linearGradient> - <linearGradient gradientTransform="matrix(1.009184,0,0,1.009184,-0.3890738,-0.3831933)" gradientUnits="userSpaceOnUse" - xlink:href="#WhiteTransparent-3-9" - id="shinySpecular-0-5" + xlink:href="#WhiteTransparent-3-90" + id="shinySpecular-0-4" y2="60" x2="58" y1="35" x1="33" /> <linearGradient gradientUnits="userSpaceOnUse" - id="WhiteTransparent-3-9"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop7606-1-4" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop7608-8-6" /> - </linearGradient> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#WhiteTransparent-3-9" - id="IcecapTip-0-9" + xlink:href="#WhiteTransparent-3-90" + id="IcecapTip-0-3" y2="50" x2="90" y1="20" x1="60" /> - <linearGradient - gradientUnits="userSpaceOnUse" - id="linearGradient3383"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop3385" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop3387" /> - </linearGradient> <radialGradient gradientTransform="matrix(1.5700516,0,0,1.0509301,-75.500107,-22.095908)" gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8568-7-2" - id="radialGradient9177-1-2" + xlink:href="#WhiteTransparent-3-90" + id="radialGradient9177-1-7" fy="250.89737" fx="116.31038" r="30.599579" cy="250.89737" cx="116.31038" /> - <linearGradient - id="linearGradient8568-7-2"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop8570-9-4" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop8572-1-7" /> - </linearGradient> <radialGradient gradientTransform="matrix(2.0032532,0,0,1.340898,-132.8752,-95.166065)" gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8568-7-2" - id="radialGradient8574-0-7" + xlink:href="#WhiteTransparent-3-90" + id="radialGradient8574-0-1" fy="251.99396" fx="132.44434" r="30.599579" cy="251.99396" cx="132.44434" /> - <linearGradient - id="linearGradient3394"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop3396" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop3398" /> - </linearGradient> <filter color-interpolation-filters="sRGB" - id="filter8732-3-5" + id="filter8732-3-8" x="-0.078079157" width="1.1561583" y="-0.11422065" @@ -869,50 +226,28 @@ <feGaussianBlur inkscape:collect="always" stdDeviation="1.9579068" - id="feGaussianBlur8734-5-4" /> + id="feGaussianBlur8734-5-0" /> </filter> <radialGradient gradientTransform="matrix(1,0,0,0.4233577,0,97.164234)" gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8738-4-1" - id="radialGradient8744-9-8" + xlink:href="#WhiteTransparent-3-90" + id="radialGradient8744-9-7" fy="168.5" fx="210.25" r="34.25" cy="168.5" cx="210.25" /> - <linearGradient - id="linearGradient8738-4-1"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop8740-8-2" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop8742-4-8" /> - </linearGradient> <radialGradient gradientTransform="matrix(1,0,0,0.4233577,0,97.164234)" gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8738-4-1" - id="radialGradient8768-6-9" + xlink:href="#WhiteTransparent-3-90" + id="radialGradient8768-6-2" fy="182.08189" fx="217.5" r="34.25" cy="182.08189" cx="217.5" /> - <linearGradient - id="linearGradient3407"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop3409" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop3411" /> - </linearGradient> <filter color-interpolation-filters="sRGB" id="filter8764-9-3" @@ -923,49 +258,27 @@ <feGaussianBlur inkscape:collect="always" stdDeviation="2.1195652" - id="feGaussianBlur8766-2-6" /> + id="feGaussianBlur8766-2-4" /> </filter> <linearGradient gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0-0" - id="linearGradient8912-9-8" + xlink:href="#WhiteTransparent-3-90" + id="linearGradient8912-9-9" y2="201.5" x2="231.75" y1="195.1875" x1="231.625" /> <linearGradient - id="linearGradient8866-0-0"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop8868-3-2" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop8870-0-1" /> - </linearGradient> - <linearGradient gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0-0" - id="linearGradient8910-3-0" + xlink:href="#WhiteTransparent-3-90" + id="linearGradient8910-3-8" y2="200.07138" x2="231.37646" y1="195.62132" x1="231.37646" /> - <linearGradient - id="linearGradient3420"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop3422" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop3424" /> - </linearGradient> <filter color-interpolation-filters="sRGB" - id="filter8906-3-5" + id="filter8906-3-4" x="-0.085441329" width="1.1708827" y="-0.27823201" @@ -973,32 +286,21 @@ <feGaussianBlur inkscape:collect="always" stdDeviation="0.56515877" - id="feGaussianBlur8908-7-1" /> + id="feGaussianBlur8908-7-88" /> </filter> <radialGradient gradientTransform="matrix(1,0,0,0.1477455,0,174.56924)" gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8916-4-0" - id="radialGradient8922-9-1" + xlink:href="#WhiteTransparent-3-90" + id="radialGradient8922-9-3" fy="204.83229" fx="228.21875" r="14.09375" cy="204.83229" cx="228.21875" /> - <linearGradient - id="linearGradient8916-4-0"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop8918-9-8" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop8920-9-5" /> - </linearGradient> <filter color-interpolation-filters="sRGB" - id="filter8980-1-0" + id="filter8980-1-63" x="-0.069862768" width="1.1397254" y="-0.47285891" @@ -1010,182 +312,69 @@ </filter> <linearGradient gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0-0" - id="linearGradient8990-4-4" + xlink:href="#WhiteTransparent-3-90" + id="linearGradient8990-4-8" y2="201.5" x2="231.75" y1="195.1875" x1="231.625" /> <linearGradient - id="linearGradient3435"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop3437" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop3439" /> - </linearGradient> - <linearGradient gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0-0" - id="linearGradient8992-2-6" + xlink:href="#WhiteTransparent-3-90" + id="linearGradient8992-2-5" y2="200.07138" x2="231.37646" y1="195.62132" x1="231.37646" /> - <linearGradient - id="linearGradient3442"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop3444" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop3446" /> - </linearGradient> - <filter - color-interpolation-filters="sRGB" - id="filter3448" - x="-0.085441329" - width="1.1708827" - y="-0.27823201" - height="1.556464"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.56515877" - id="feGaussianBlur3450" /> - </filter> <radialGradient gradientTransform="matrix(1,0,0,0.1477455,0,174.56924)" gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8916-4-0" - id="radialGradient8994-0-2" + xlink:href="#WhiteTransparent-3-90" + id="radialGradient8994-0-8" fy="204.83229" fx="228.21875" r="14.09375" cy="204.83229" cx="228.21875" /> - <linearGradient - id="linearGradient3453"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop3455" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop3457" /> - </linearGradient> - <filter - color-interpolation-filters="sRGB" - id="filter3459" - x="-0.069862768" - width="1.1397254" - y="-0.47285891" - height="1.9457178"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.82052366" - id="feGaussianBlur3461" /> - </filter> <radialGradient gradientTransform="matrix(1,0,0,0.4070844,0,115.76014)" gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8998-5-8" - id="radialGradient9004-6-5" + xlink:href="#WhiteTransparent-3-90" + id="radialGradient9004-6-0" fy="187.86935" fx="89.875" r="22.75" cy="187.86935" cx="89.875" /> <linearGradient - id="linearGradient8998-5-8"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:0.33004925" - id="stop9000-9-6" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop9002-5-2" /> - </linearGradient> - <linearGradient gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0-0" - id="linearGradient9023-6-8" + xlink:href="#WhiteTransparent-3-90" + id="linearGradient9023-6-6" y2="201.5" x2="231.75" y1="195.1875" x1="231.625" /> <linearGradient - id="linearGradient3468"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop3470" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop3472" /> - </linearGradient> - <linearGradient gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0-0" - id="linearGradient9025-1-4" + xlink:href="#WhiteTransparent-3-90" + id="linearGradient9025-1-9" y2="200.07138" x2="231.37646" y1="195.62132" x1="231.37646" /> - <linearGradient - id="linearGradient3475"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop3477" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop3479" /> - </linearGradient> - <filter - color-interpolation-filters="sRGB" - id="filter3481" - x="-0.085441329" - width="1.1708827" - y="-0.27823201" - height="1.556464"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.56515877" - id="feGaussianBlur3483" /> - </filter> <radialGradient gradientTransform="matrix(1.1850746,-0.3283582,0.1228557,0.4433973,-45.068314,152.92161)" gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient9040-4-2" - id="radialGradient9046-1-7" + xlink:href="#WhiteTransparent-3-90" + id="radialGradient9046-1-8" fy="230.83626" fx="90.28125" r="10.46875" cy="230.83626" cx="90.28125" /> - <linearGradient - id="linearGradient9040-4-2"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop9042-3-4" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop9044-7-0" /> - </linearGradient> <filter color-interpolation-filters="sRGB" - id="filter9068-2-6" + id="filter9068-2-2" x="-0.076179281" width="1.1523587" y="-0.1655701" @@ -1198,54 +387,32 @@ <radialGradient gradientTransform="matrix(1.7221535,0,0,1.6949765,-49.39526,-14.078057)" gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient9286-3-9" - id="radialGradient11553-3-9" + xlink:href="#WhiteTransparent-3-90" + id="radialGradient11553-3-1" fy="21.225746" fx="68.39994" r="54.783398" cy="21.225746" cx="68.39994" /> - <linearGradient - id="linearGradient9286-3-9"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop9288-9-0" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop9290-2-8" /> - </linearGradient> <filter color-interpolation-filters="sRGB" - id="filter9298-4-1"> + id="filter9298-4-5"> <feGaussianBlur inkscape:collect="always" stdDeviation="0.32610678" - id="feGaussianBlur9300-4-3" /> + id="feGaussianBlur9300-4-6" /> </filter> <linearGradient gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient5899-9-1" - id="linearGradient5905-4-1" + xlink:href="#WhiteTransparent-3-90" + id="linearGradient5905-4-7" y2="223.5" x2="153.5" y1="208.16444" x1="95.5" /> - <linearGradient - id="linearGradient5899-9-1"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop5901-9-0" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop5903-3-3" /> - </linearGradient> <filter color-interpolation-filters="sRGB" - id="filter5983-8-4" + id="filter5983-8-5" x="-0.082508981" width="1.165018" y="-0.12233575" @@ -1253,105 +420,51 @@ <feGaussianBlur inkscape:collect="always" stdDeviation="3.6868363" - id="feGaussianBlur5985-3-0" /> + id="feGaussianBlur5985-3-7" /> </filter> <linearGradient gradientTransform="matrix(0.8852575,0,0,0.8852575,5.1772151,9.2293372)" gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient5793-9-9" - id="linearGradient5801-2-3" + xlink:href="#linearGradient5793-9-3" + id="linearGradient5801-2-8" y2="84.480316" x2="53.63158" y1="76.246338" x1="57.225197" /> - <linearGradient - id="linearGradient5793-9-9"> - <stop - offset="0" - style="stop-color:#eeeeec;stop-opacity:1" - id="stop5795-5-1" /> - <stop - offset="1" - style="stop-color:#eeeeec;stop-opacity:0" - id="stop5797-4-9" /> - </linearGradient> <radialGradient gradientTransform="matrix(1.3515234,0,0,1.7175707,-63.705646,-153.95568)" gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient5805-9-9" - id="radialGradient5811-3-6" + xlink:href="#WhiteTransparent-3-90" + id="radialGradient5811-3-0" fy="214.55121" fx="181.22731" r="22.466398" cy="214.55121" cx="181.22731" /> - <linearGradient - id="linearGradient5805-9-9"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop5807-4-3" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop5809-9-3" /> - </linearGradient> <filter color-interpolation-filters="sRGB" - id="filter5845-5-8"> + id="filter5845-5-1"> <feGaussianBlur inkscape:collect="always" stdDeviation="1.2409356" - id="feGaussianBlur5847-5-0" /> + id="feGaussianBlur5847-5-4" /> </filter> <linearGradient gradientTransform="matrix(0.4927913,0,0,0.4927913,-6.0003885,-9.7225182)" gradientUnits="userSpaceOnUse" - xlink:href="#WhiteTransparent-3-9" - id="linearGradient5822-7-5" + xlink:href="#WhiteTransparent-3-90" + id="linearGradient5822-7-1" y2="187.65974" x2="82.754066" y1="180.47572" x1="73.712105" /> - <linearGradient - gradientUnits="userSpaceOnUse" - id="linearGradient3514"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop3516" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop3518" /> - </linearGradient> - <linearGradient - gradientTransform="translate(-130.16572,-83.352786)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient10981-3-9-6" - id="linearGradient1539-6" - y2="144.5" - x2="153.70045" - y1="217.5" - x1="180.81293" /> - <linearGradient - id="linearGradient10981-3-9-6"> - <stop - offset="0" - style="stop-color:#729fcf;stop-opacity:1" - id="stop10983-2-0-4" /> - <stop - offset="1" - style="stop-color:#729fcf;stop-opacity:0" - id="stop10985-3-7-0" /> - </linearGradient> <filter color-interpolation-filters="sRGB" - id="filter10997-7-2-0"> + id="filter10997-7-2-1"> <feGaussianBlur inkscape:collect="always" stdDeviation="2.7696726" - id="feGaussianBlur10999-0-7-4" /> + id="feGaussianBlur10999-0-7-6" /> </filter> <linearGradient gradientTransform="translate(-130.16572,-83.352786)" @@ -1362,1541 +475,871 @@ x2="153.70045" y1="217.5" x1="180.81293" /> - <filter - color-interpolation-filters="sRGB" - id="filter10997-7-2-5"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="2.7696726" - id="feGaussianBlur10999-0-7-9" /> - </filter> - <linearGradient - id="linearGradient10981-3-9-0"> - <stop - offset="0" - style="stop-color:#729fcf;stop-opacity:1" - id="stop10983-2-0-9" /> - <stop - offset="1" - style="stop-color:#729fcf;stop-opacity:0" - id="stop10985-3-7-7" /> - </linearGradient> - <linearGradient - gradientTransform="matrix(0.4927913,0,0,0.4927913,-6.0003885,-9.7225182)" - gradientUnits="userSpaceOnUse" - xlink:href="#WhiteTransparent-3-90" - id="linearGradient5822-7-6" - y2="187.65974" - x2="82.754066" - y1="180.47572" - x1="73.712105" /> - <filter - color-interpolation-filters="sRGB" - id="filter5845-5-6"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.2409356" - id="feGaussianBlur5847-5-7" /> - </filter> - <linearGradient - id="linearGradient5805-9-6"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop5807-4-0" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop5809-9-4" /> - </linearGradient> - <radialGradient - gradientTransform="matrix(1.3515234,0,0,1.7175707,-63.705646,-153.95568)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient5805-9-6" - id="radialGradient5811-3-8" - fy="214.55121" - fx="181.22731" - r="22.466398" - cy="214.55121" - cx="181.22731" /> - <linearGradient - id="linearGradient5793-9-3"> - <stop - offset="0" - style="stop-color:#eeeeec;stop-opacity:1" - id="stop5795-5-7" /> - <stop - offset="1" - style="stop-color:#eeeeec;stop-opacity:0" - id="stop5797-4-8" /> - </linearGradient> - <linearGradient - gradientTransform="matrix(0.8852575,0,0,0.8852575,5.1772151,9.2293372)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient5793-9-3" - id="linearGradient5801-2-0" - y2="84.480316" - x2="53.63158" - y1="76.246338" - x1="57.225197" /> - <filter - color-interpolation-filters="sRGB" - id="filter5983-8-5" - x="-0.082508981" - width="1.165018" - y="-0.12233575" - height="1.2446715"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="3.6868363" - id="feGaussianBlur5985-3-1" /> - </filter> - <linearGradient - id="linearGradient5899-9-9"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop5901-9-9" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop5903-3-4" /> - </linearGradient> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient5899-9-9" - id="linearGradient5905-4-0" - y2="223.5" - x2="153.5" - y1="208.16444" - x1="95.5" /> - <filter - color-interpolation-filters="sRGB" - id="filter9298-4-2"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.32610678" - id="feGaussianBlur9300-4-9" /> - </filter> - <linearGradient - id="linearGradient9286-3-5"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop9288-9-2" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop9290-2-0" /> - </linearGradient> - <radialGradient - gradientTransform="matrix(1.7221535,0,0,1.6949765,-49.39526,-14.078057)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient9286-3-5" - id="radialGradient11553-3-4" - fy="21.225746" - fx="68.39994" - r="54.783398" - cy="21.225746" - cx="68.39994" /> - <filter - color-interpolation-filters="sRGB" - id="filter9068-2-7" - x="-0.076179281" - width="1.1523587" - y="-0.1655701" - height="1.3311402"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.66458488" - id="feGaussianBlur9070-7-26" /> - </filter> - <linearGradient - id="linearGradient9040-4-1"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop9042-3-3" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop9044-7-7" /> - </linearGradient> - <radialGradient - gradientTransform="matrix(1.1850746,-0.3283582,0.1228557,0.4433973,-45.068314,152.92161)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient9040-4-1" - id="radialGradient9046-1-0" - fy="230.83626" - fx="90.28125" - r="10.46875" - cy="230.83626" - cx="90.28125" /> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0-4" - id="linearGradient9025-1-1" - y2="200.07138" - x2="231.37646" - y1="195.62132" - x1="231.37646" /> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0-4" - id="linearGradient9023-6-0" - y2="201.5" - x2="231.75" - y1="195.1875" - x1="231.625" /> - <linearGradient - id="linearGradient8998-5-6"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:0.33004925" - id="stop9000-9-0" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop9002-5-7" /> - </linearGradient> - <radialGradient - gradientTransform="matrix(1,0,0,0.4070844,0,115.76014)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8998-5-6" - id="radialGradient9004-6-9" - fy="187.86935" - fx="89.875" - r="22.75" - cy="187.86935" - cx="89.875" /> - <radialGradient - gradientTransform="matrix(1,0,0,0.1477455,0,174.56924)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8916-4-5" - id="radialGradient8994-0-8" - fy="204.83229" - fx="228.21875" - r="14.09375" - cy="204.83229" - cx="228.21875" /> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0-4" - id="linearGradient8992-2-2" - y2="200.07138" - x2="231.37646" - y1="195.62132" - x1="231.37646" /> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0-4" - id="linearGradient8990-4-6" - y2="201.5" - x2="231.75" - y1="195.1875" - x1="231.625" /> - <filter - color-interpolation-filters="sRGB" - id="filter8980-1-06" - x="-0.069862768" - width="1.1397254" - y="-0.47285891" - height="1.9457178"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.82052366" - id="feGaussianBlur8982-9-64" /> - </filter> - <linearGradient - id="linearGradient8916-4-5"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop8918-9-82" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop8920-9-6" /> - </linearGradient> - <radialGradient - gradientTransform="matrix(1,0,0,0.1477455,0,174.56924)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8916-4-5" - id="radialGradient8922-9-8" - fy="204.83229" - fx="228.21875" - r="14.09375" - cy="204.83229" - cx="228.21875" /> - <filter - color-interpolation-filters="sRGB" - id="filter8906-3-7" - x="-0.085441329" - width="1.1708827" - y="-0.27823201" - height="1.556464"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.56515877" - id="feGaussianBlur8908-7-4" /> - </filter> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0-4" - id="linearGradient8910-3-4" - y2="200.07138" - x2="231.37646" - y1="195.62132" - x1="231.37646" /> - <linearGradient - id="linearGradient8866-0-4"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop8868-3-0" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop8870-0-6" /> - </linearGradient> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0-4" - id="linearGradient8912-9-7" - y2="201.5" - x2="231.75" - y1="195.1875" - x1="231.625" /> - <filter - color-interpolation-filters="sRGB" - id="filter8764-9-6" - x="-0.074262142" - width="1.1485243" - y="-0.1754123" - height="1.3508246"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="2.1195652" - id="feGaussianBlur8766-2-7" /> - </filter> - <radialGradient - gradientTransform="matrix(1,0,0,0.4233577,0,97.164234)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8738-4-11" - id="radialGradient8768-6-5" - fy="182.08189" - fx="217.5" - r="34.25" - cy="182.08189" - cx="217.5" /> - <linearGradient - id="linearGradient8738-4-11"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop8740-8-9" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop8742-4-0" /> - </linearGradient> - <radialGradient - gradientTransform="matrix(1,0,0,0.4233577,0,97.164234)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8738-4-11" - id="radialGradient8744-9-3" - fy="168.5" - fx="210.25" - r="34.25" - cy="168.5" - cx="210.25" /> - <filter - color-interpolation-filters="sRGB" - id="filter8732-3-0" - x="-0.078079157" - width="1.1561583" - y="-0.11422065" - height="1.2284414"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.9579068" - id="feGaussianBlur8734-5-7" /> - </filter> - <radialGradient - gradientTransform="matrix(2.0032532,0,0,1.340898,-132.8752,-95.166065)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8568-7-6" - id="radialGradient8574-0-2" - fy="251.99396" - fx="132.44434" - r="30.599579" - cy="251.99396" - cx="132.44434" /> - <linearGradient - id="linearGradient8568-7-6"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop8570-9-2" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop8572-1-1" /> - </linearGradient> - <radialGradient - gradientTransform="matrix(1.5700516,0,0,1.0509301,-75.500107,-22.095908)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8568-7-6" - id="radialGradient9177-1-9" - fy="250.89737" - fx="116.31038" - r="30.599579" - cy="250.89737" - cx="116.31038" /> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#WhiteTransparent-3-90" - id="IcecapTip-0-1" - y2="50" - x2="90" - y1="20" - x1="60" /> - <linearGradient - gradientUnits="userSpaceOnUse" - id="WhiteTransparent-3-90"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop7606-1-2" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop7608-8-0" /> - </linearGradient> - <linearGradient - gradientTransform="matrix(1.009184,0,0,1.009184,-0.3890738,-0.3831933)" - gradientUnits="userSpaceOnUse" - xlink:href="#WhiteTransparent-3-90" - id="shinySpecular-0-4" - y2="60" - x2="58" - y1="35" - x1="33" /> - <filter - color-interpolation-filters="sRGB" - id="filter8490-0-5"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="2.4163949" - id="feGaussianBlur8492-5-3" /> - </filter> - <clipPath - id="clipPath9086-1-8"> - <use - xlink:href="#outline1-4" - height="300" - width="400" - y="0" - x="0" - style="opacity:0.25;fill:#ffffff;fill-opacity:1" - id="use9088-0-2" - transform="translate(1.0095461e-6,0)" /> - </clipPath> - <linearGradient - gradientUnits="userSpaceOnUse" - id="linearGradient5785-8-9"> - <stop - offset="0" - style="stop-color:#c0cdf9;stop-opacity:1" - id="stop5787-7-9" /> - <stop - offset="1" - style="stop-color:#07092d;stop-opacity:0.28804347" - id="stop5789-3-7" /> - </linearGradient> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient5785-8-9" - id="linearGradient9175-3-1" - y2="40" - x2="60" - y1="20" - x1="82.118591" /> - <filter - color-interpolation-filters="sRGB" - id="filter6031-0-0"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="3.4903482" - id="feGaussianBlur6033-8-8" /> - </filter> - <filter - color-interpolation-filters="sRGB" - id="filter6017-3-5"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.80546496" - id="feGaussianBlur6019-9-7" /> - </filter> - <filter - color-interpolation-filters="sRGB" - id="filter8490-9"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="2.4163949" - id="feGaussianBlur8492-3" /> - </filter> - <linearGradient - gradientUnits="userSpaceOnUse" - id="linearGradient5785-9"> - <stop - offset="0" - style="stop-color:#c0cdf9;stop-opacity:1" - id="stop5787-4" /> - <stop - offset="1" - style="stop-color:#07092d;stop-opacity:0.28804347" - id="stop5789-5" /> - </linearGradient> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient5785-9" - id="linearGradient9175-9" - y2="40" - x2="60" - y1="20" - x1="82.118591" /> - <clipPath - id="clipoutline1-7"> - <path - id="outline1-4" - d="M 54.1,12.5 12.9,54.7 C -2.7,70.3 23,69 32.3,74.9 36.6,77.7 18.5,81.3 22.2,85 c 3.6,3.7 21.7,7.1 25.3,10.7 3.6,3.7 -7.3,7.6 -3.7,11.3 3.5,3.7 11.9,0.2 13.4,8.6 1.1,6.2 15.4,3.1 21.8,-2.2 4,-3.4 -6.9,-3.4 -3.3,-7.1 9,-9.1 17,-4.1 20.3,-12.5 1.8,-4.5 -13.6,-7.7 -9.5,-10.6 9.8,-6.9 45.8,-10.4 29.2,-27 L 73,12.5 c -5.3,-5 -14,-5 -18.9,0 z m -9.9,64.7 c 0.9,0 30.8,4 19.3,7.1 -4.4,1.2 -24.6,-7.1 -19.3,-7.1 z m 57.2,16.6 c 0,2.1 16.3,3.3 15.4,-0.5 -1.3,-6.4 -13.6,-5.9 -15.4,0.5 z m -69.5,11.1 c 3.7,3.2 9.3,-0.7 11.1,-5.2 -3.6,-4.7 -16.9,0.3 -11.1,5.2 z m 67.5,-6.7 c -4.6,4.2 0.8,8.6 5.3,5.7 1.2,-0.8 -0.1,-4.7 -5.3,-5.7 z" /> - </clipPath> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#WhiteTransparent-5" - id="sideSpecular-5" - y2="40" - x2="60" - y1="20" - x1="80" /> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#WhiteTransparent-5" - id="liquidSpecular-2" - y2="76" - x2="0" - y1="128" - x1="0" /> - <linearGradient - gradientUnits="userSpaceOnUse" - id="WhiteTransparent-5"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop7-4" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop9-9" /> - </linearGradient> - <inkscape:perspective - id="perspective4323" - inkscape:persp3d-origin="64 : 42.666667 : 1" - inkscape:vp_z="128 : 64 : 1" - inkscape:vp_y="0 : 1000 : 0" - inkscape:vp_x="0 : 64 : 1" - sodipodi:type="inkscape:persp3d" /> - <inkscape:perspective - id="perspective4469" - inkscape:persp3d-origin="0.5 : 0.33333333 : 1" - inkscape:vp_z="1 : 0.5 : 1" - inkscape:vp_y="0 : 1000 : 0" - inkscape:vp_x="0 : 0.5 : 1" - sodipodi:type="inkscape:persp3d" /> - <filter - color-interpolation-filters="sRGB" - id="filter6017-3-5-0"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.80546496" - id="feGaussianBlur6019-9-7-8" /> - </filter> - <filter - color-interpolation-filters="sRGB" - id="filter6031-0-0-5"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="3.4903482" - id="feGaussianBlur6033-8-8-1" /> - </filter> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient5785-8-9-6" - id="linearGradient9175-3-1-6" - y2="40" - x2="60" - y1="20" - x1="82.118591" /> - <linearGradient - gradientUnits="userSpaceOnUse" - id="linearGradient5785-8-9-6"> - <stop - offset="0" - style="stop-color:#c0cdf9;stop-opacity:1" - id="stop5787-7-9-2" /> - <stop - offset="1" - style="stop-color:#07092d;stop-opacity:0.28804347" - id="stop5789-3-7-1" /> - </linearGradient> <clipPath - id="clipPath9086-1-8-9"> - <use - xlink:href="#outline1-4" - height="300" - width="400" + id="clipPath17127" + clipPathUnits="userSpaceOnUse"> + <rect y="0" x="0" - style="opacity:0.25;fill:#ffffff;fill-opacity:1" - id="use9088-0-2-6" - transform="translate(1.0095461e-6,0)" /> + height="128" + width="128" + id="rect17129" + style="opacity:0.25;fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1" /> </clipPath> - <filter - color-interpolation-filters="sRGB" - id="filter8490-0-5-4"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="2.4163949" - id="feGaussianBlur8492-5-3-8" /> - </filter> <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient5785-8-9-6" - id="linearGradient4485" - y2="40" + inkscape:collect="always" + xlink:href="#nav_top" + id="linearGradient4475" + x1="60" + y1="110" x2="60" - y1="20" - x1="82.118591" /> - <linearGradient - gradientUnits="userSpaceOnUse" - id="linearGradient4487"> - <stop - offset="0" - style="stop-color:#c0cdf9;stop-opacity:1" - id="stop4489" /> - <stop - offset="1" - style="stop-color:#07092d;stop-opacity:0.28804347" - id="stop4491" /> - </linearGradient> - <linearGradient - gradientTransform="matrix(1.009184,0,0,1.009184,-0.3890738,-0.3831933)" - gradientUnits="userSpaceOnUse" - xlink:href="#WhiteTransparent-3-90-8" - id="shinySpecular-0-4-0" - y2="60" - x2="58" - y1="35" - x1="33" /> - <linearGradient - gradientUnits="userSpaceOnUse" - id="WhiteTransparent-3-90-8"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop7606-1-2-1" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop7608-8-0-0" /> - </linearGradient> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#WhiteTransparent-3-90-8" - id="IcecapTip-0-1-2" - y2="50" - x2="90" - y1="20" - x1="60" /> - <linearGradient - gradientUnits="userSpaceOnUse" - id="linearGradient4498"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop4500" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop4502" /> - </linearGradient> - <radialGradient - gradientTransform="matrix(1.5700516,0,0,1.0509301,-75.500107,-22.095908)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8568-7-6-9" - id="radialGradient9177-1-9-2" - fy="250.89737" - fx="116.31038" - r="30.599579" - cy="250.89737" - cx="116.31038" /> - <linearGradient - id="linearGradient8568-7-6-9"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop8570-9-2-7" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop8572-1-1-5" /> - </linearGradient> - <radialGradient - gradientTransform="matrix(2.0032532,0,0,1.340898,-132.8752,-95.166065)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8568-7-6-9" - id="radialGradient8574-0-2-6" - fy="251.99396" - fx="132.44434" - r="30.599579" - cy="251.99396" - cx="132.44434" /> - <linearGradient - id="linearGradient4509"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop4511" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop4513" /> - </linearGradient> - <filter - color-interpolation-filters="sRGB" - id="filter8732-3-0-4" - x="-0.078079157" - width="1.1561583" - y="-0.11422065" - height="1.2284414"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.9579068" - id="feGaussianBlur8734-5-7-6" /> - </filter> - <radialGradient - gradientTransform="matrix(1,0,0,0.4233577,0,97.164234)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8738-4-11-7" - id="radialGradient8744-9-3-3" - fy="168.5" - fx="210.25" - r="34.25" - cy="168.5" - cx="210.25" /> - <linearGradient - id="linearGradient8738-4-11-7"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop8740-8-9-9" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop8742-4-0-7" /> - </linearGradient> - <radialGradient - gradientTransform="matrix(1,0,0,0.4233577,0,97.164234)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8738-4-11-7" - id="radialGradient8768-6-5-4" - fy="182.08189" - fx="217.5" - r="34.25" - cy="182.08189" - cx="217.5" /> - <linearGradient - id="linearGradient4522"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop4524" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop4526" /> - </linearGradient> - <filter - color-interpolation-filters="sRGB" - id="filter8764-9-6-9" - x="-0.074262142" - width="1.1485243" - y="-0.1754123" - height="1.3508246"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="2.1195652" - id="feGaussianBlur8766-2-7-1" /> - </filter> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0-4-0" - id="linearGradient8912-9-7-7" - y2="201.5" - x2="231.75" - y1="195.1875" - x1="231.625" /> - <linearGradient - id="linearGradient8866-0-4-0"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop8868-3-0-6" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop8870-0-6-0" /> - </linearGradient> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0-4-0" - id="linearGradient8910-3-4-8" - y2="200.07138" - x2="231.37646" - y1="195.62132" - x1="231.37646" /> - <linearGradient - id="linearGradient4535"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop4537" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop4539" /> - </linearGradient> - <filter - color-interpolation-filters="sRGB" - id="filter8906-3-7-5" - x="-0.085441329" - width="1.1708827" - y="-0.27823201" - height="1.556464"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.56515877" - id="feGaussianBlur8908-7-4-3" /> - </filter> - <radialGradient - gradientTransform="matrix(1,0,0,0.1477455,0,174.56924)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8916-4-5-4" - id="radialGradient8922-9-8-9" - fy="204.83229" - fx="228.21875" - r="14.09375" - cy="204.83229" - cx="228.21875" /> - <linearGradient - id="linearGradient8916-4-5-4"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop8918-9-82-1" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop8920-9-6-5" /> - </linearGradient> - <filter - color-interpolation-filters="sRGB" - id="filter8980-1-06-4" - x="-0.069862768" - width="1.1397254" - y="-0.47285891" - height="1.9457178"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.82052366" - id="feGaussianBlur8982-9-64-1" /> - </filter> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0-4-0" - id="linearGradient8990-4-6-5" - y2="201.5" - x2="231.75" - y1="195.1875" - x1="231.625" /> - <linearGradient - id="linearGradient4550"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop4552" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop4554" /> - </linearGradient> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0-4-0" - id="linearGradient8992-2-2-5" - y2="200.07138" - x2="231.37646" - y1="195.62132" - x1="231.37646" /> - <linearGradient - id="linearGradient4557"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop4559" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop4561" /> - </linearGradient> - <filter - color-interpolation-filters="sRGB" - id="filter4563" - x="-0.085441329" - width="1.1708827" - y="-0.27823201" - height="1.556464"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.56515877" - id="feGaussianBlur4565" /> - </filter> - <radialGradient - gradientTransform="matrix(1,0,0,0.1477455,0,174.56924)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8916-4-5-4" - id="radialGradient8994-0-8-4" - fy="204.83229" - fx="228.21875" - r="14.09375" - cy="204.83229" - cx="228.21875" /> - <linearGradient - id="linearGradient4568"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop4570" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop4572" /> - </linearGradient> - <filter - color-interpolation-filters="sRGB" - id="filter4574" - x="-0.069862768" - width="1.1397254" - y="-0.47285891" - height="1.9457178"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.82052366" - id="feGaussianBlur4576" /> - </filter> - <radialGradient - gradientTransform="matrix(1,0,0,0.4070844,0,115.76014)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8998-5-6-8" - id="radialGradient9004-6-9-9" - fy="187.86935" - fx="89.875" - r="22.75" - cy="187.86935" - cx="89.875" /> - <linearGradient - id="linearGradient8998-5-6-8"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:0.33004925" - id="stop9000-9-0-3" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop9002-5-7-8" /> - </linearGradient> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0-4-0" - id="linearGradient9023-6-0-5" - y2="201.5" - x2="231.75" - y1="195.1875" - x1="231.625" /> - <linearGradient - id="linearGradient4583"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop4585" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop4587" /> - </linearGradient> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient8866-0-4-0" - id="linearGradient9025-1-1-2" - y2="200.07138" - x2="231.37646" - y1="195.62132" - x1="231.37646" /> - <linearGradient - id="linearGradient4590"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop4592" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop4594" /> - </linearGradient> - <filter - color-interpolation-filters="sRGB" - id="filter4596" - x="-0.085441329" - width="1.1708827" - y="-0.27823201" - height="1.556464"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.56515877" - id="feGaussianBlur4598" /> - </filter> - <radialGradient - gradientTransform="matrix(1.1850746,-0.3283582,0.1228557,0.4433973,-45.068314,152.92161)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient9040-4-1-2" - id="radialGradient9046-1-0-2" - fy="230.83626" - fx="90.28125" - r="10.46875" - cy="230.83626" - cx="90.28125" /> - <linearGradient - id="linearGradient9040-4-1-2"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop9042-3-3-7" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop9044-7-7-0" /> - </linearGradient> - <filter - color-interpolation-filters="sRGB" - id="filter9068-2-7-3" - x="-0.076179281" - width="1.1523587" - y="-0.1655701" - height="1.3311402"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.66458488" - id="feGaussianBlur9070-7-26-4" /> - </filter> - <radialGradient - gradientTransform="matrix(1.7221535,0,0,1.6949765,-49.39526,-14.078057)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient9286-3-5-3" - id="radialGradient11553-3-4-6" - fy="21.225746" - fx="68.39994" - r="54.783398" - cy="21.225746" - cx="68.39994" /> - <linearGradient - id="linearGradient9286-3-5-3"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop9288-9-2-6" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop9290-2-0-3" /> - </linearGradient> - <filter - color-interpolation-filters="sRGB" - id="filter9298-4-2-3"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.32610678" - id="feGaussianBlur9300-4-9-4" /> - </filter> - <linearGradient - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient5899-9-9-3" - id="linearGradient5905-4-0-4" - y2="223.5" - x2="153.5" - y1="208.16444" - x1="95.5" /> - <linearGradient - id="linearGradient5899-9-9-3"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop5901-9-9-9" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop5903-3-4-7" /> - </linearGradient> - <filter - color-interpolation-filters="sRGB" - id="filter5983-8-5-2" - x="-0.082508981" - width="1.165018" - y="-0.12233575" - height="1.2446715"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="3.6868363" - id="feGaussianBlur5985-3-1-5" /> - </filter> - <linearGradient - gradientTransform="matrix(0.8852575,0,0,0.8852575,5.1772151,9.2293372)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient5793-9-3-9" - id="linearGradient5801-2-0-8" - y2="84.480316" - x2="53.63158" - y1="76.246338" - x1="57.225197" /> + y2="162" + gradientUnits="userSpaceOnUse" /> <linearGradient - id="linearGradient5793-9-3-9"> - <stop - offset="0" - style="stop-color:#eeeeec;stop-opacity:1" - id="stop5795-5-7-0" /> - <stop - offset="1" - style="stop-color:#eeeeec;stop-opacity:0" - id="stop5797-4-8-2" /> - </linearGradient> + inkscape:collect="always" + xlink:href="#nav_top" + id="linearGradient4483" + x1="70" + y1="110" + x2="70" + y2="162" + gradientUnits="userSpaceOnUse" /> <radialGradient - gradientTransform="matrix(1.3515234,0,0,1.7175707,-63.705646,-153.95568)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient5805-9-6-7" - id="radialGradient5811-3-8-4" - fy="214.55121" - fx="181.22731" - r="22.466398" - cy="214.55121" - cx="181.22731" /> - <linearGradient - id="linearGradient5805-9-6-7"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop5807-4-0-6" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop5809-9-4-5" /> - </linearGradient> - <filter - color-interpolation-filters="sRGB" - id="filter5845-5-6-7"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.2409356" - id="feGaussianBlur5847-5-7-1" /> - </filter> - <linearGradient - gradientTransform="matrix(0.4927913,0,0,0.4927913,-6.0003885,-9.7225182)" - gradientUnits="userSpaceOnUse" - xlink:href="#WhiteTransparent-3-90-8" - id="linearGradient5822-7-6-3" - y2="187.65974" - x2="82.754066" - y1="180.47572" - x1="73.712105" /> - <linearGradient - gradientUnits="userSpaceOnUse" - id="linearGradient4629"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:1" - id="stop4631" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0" - id="stop4633" /> - </linearGradient> + inkscape:collect="always" + xlink:href="#nav_foot" + id="radialGradient4639" + cx="512" + cy="767" + fx="512" + fy="767" + r="480" + gradientTransform="matrix(0.625,0,0,0.625,192,287.625)" + gradientUnits="userSpaceOnUse" /> <linearGradient - gradientTransform="translate(-130.16572,-83.352786)" + inkscape:collect="always" + xlink:href="#header_bg" + id="linearGradient4681" + x1="532" + y1="0" + x2="532" + y2="75" gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient10981-3-9-0-3" - id="linearGradient1539-7-3" - y2="144.5" - x2="153.70045" - y1="217.5" - x1="180.81293" /> + gradientTransform="translate(-20,0)" /> <linearGradient - id="linearGradient10981-3-9-0-3"> - <stop - offset="0" - style="stop-color:#729fcf;stop-opacity:1" - id="stop10983-2-0-9-8" /> - <stop - offset="1" - style="stop-color:#729fcf;stop-opacity:0" - id="stop10985-3-7-7-5" /> - </linearGradient> - <filter - color-interpolation-filters="sRGB" - id="filter10997-7-2-5-1"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="2.7696726" - id="feGaussianBlur10999-0-7-9-0" /> - </filter> - <radialGradient inkscape:collect="always" - xlink:href="#linearGradient5781" - id="radialGradient5787" - cx="290.74387" - cy="258.93588" - fx="290.74387" - fy="258.93588" - r="78.96619" - gradientTransform="matrix(2.0000004,-6.2784742e-6,0,0.50066434,-301.34718,131.46569)" + xlink:href="#content_bg" + id="linearGradient4703" + x1="512" + y1="163" + x2="512" + y2="263" gradientUnits="userSpaceOnUse" /> - <radialGradient + <linearGradient inkscape:collect="always" xlink:href="#linearGradient5781" - id="radialGradient5810" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(2.0000004,-6.2784742e-6,0,0.50066434,-301.34718,131.46569)" - cx="290.74387" - cy="258.93588" - fx="290.74387" - fy="258.93588" - r="78.96619" /> + id="linearGradient3762" + gradientUnits="userSpaceOnUse" + x1="220" + y1="233.5" + x2="379" + y2="233.5" /> + <mask + maskUnits="userSpaceOnUse" + id="mask3799"> + <rect + style="display:inline;opacity:1;fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1" + id="rect3801" + width="600" + height="400" + x="0" + y="0" /> + </mask> </defs> <sodipodi:namedview id="base" pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="1" + bordercolor="#6666af" + borderopacity="1" + inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="1" - inkscape:cx="296.64284" - inkscape:cy="158.77027" + inkscape:cx="1655" + inkscape:cy="550" inkscape:document-units="px" - inkscape:current-layer="layer1" + inkscape:current-layer="layer5" showgrid="false" - grid_units="mm" - inkscape:grid-points="true" - gridtolerance="10000" - inkscape:grid-bbox="false" - inkscape:object-paths="false" - guidetolerance="10000" - inkscape:guide-bbox="false" - inkscape:window-width="1244" - inkscape:window-height="756" - inkscape:window-x="36" - inkscape:window-y="25" - height="350px" - width="624.54108px" - units="px" - inkscape:window-maximized="0"> + inkscape:object-nodes="true" + inkscape:snap-page="true" + inkscape:showpageshadow="false" + borderlayer="true" + inkscape:window-width="1163" + inkscape:window-height="742" + inkscape:window-x="53" + inkscape:window-y="0" + inkscape:window-maximized="0" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + showguides="false" + inkscape:guide-bbox="true" + inkscape:snap-text-baseline="true" + inkscape:snap-center="true" + inkscape:snap-nodes="true" + inkscape:snap-others="true" + inkscape:snap-midpoints="true"> <inkscape:grid - id="GridFromPre046Settings" type="xygrid" - originx="0px" - originy="0px" - spacingx="2mm" - spacingy="2mm" - color="#0000ff" - empcolor="#0000ff" - opacity="0.2" - empopacity="0.4" - empspacing="5" /> + id="grid14925" /> + <sodipodi:guide + orientation="0,1" + position="113.27875,743.405" + id="guide4435" /> + <sodipodi:guide + orientation="1,0" + position="113.27875,743.405" + id="guide4441" /> + <sodipodi:guide + orientation="0,1" + position="137.888,658.21001" + id="guide4500" /> + <sodipodi:guide + orientation="1,0" + position="115,743" + id="guide4575" /> + <sodipodi:guide + orientation="1,0" + position="146,715" + id="guide4577" /> + <sodipodi:guide + orientation="1,0" + position="512,33" + id="guide4641" /> + <sodipodi:guide + orientation="0,1" + position="141,566.5" + id="guide4834" /> + <sodipodi:guide + orientation="1,0" + position="459,566.5" + id="guide4836" /> </sodipodi:namedview> <metadata - id="metadata7"> + id="metadata13537"> <rdf:RDF> <cc:Work rdf:about=""> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> + <dc:title /> </cc:Work> </rdf:RDF> </metadata> <g - inkscape:label="Layer 1" inkscape:groupmode="layer" - id="layer1" - transform="translate(-48.8794,-125.0409)"> + id="layer3" + inkscape:label="website vector" + style="display:none"> <use x="0" y="0" - xlink:href="#g9139" - id="use5007" - transform="matrix(6.5090909,0,0,6.5090909,-0.80833,-721.208)" - width="624.54108" - height="350" - style="opacity:0.19607843" /> - <rect - style="font-size:12px;fill:url(#linearGradient4989);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.06115007" - id="rect3968" - width="624.46564" - height="157.62523" - x="48.954857" - y="125.0409" - ry="7.2071209" - rx="0" /> - <path - style="fill:#b0e088;fill-opacity:1;stroke-width:1pt;filter:url(#filter6402)" - d="M 211.90625,131.50353 C 205.98536,131.00651 201.16447,138.64884 205.65625,143.19103 C 201.58111,142.39402 202.59325,154.72266 205.53125,154.44103 C 207.92857,154.12103 209.07578,153.09201 211.53125,154.31603 C 217.32456,156.22034 225.89226,152.12727 223.9375,145.15978 C 223.58426,143.30954 221.58678,142.21903 223.25378,141.31776 C 223.20533,136.85003 223.7185,128.54828 217.71875,132.50353 C 215.92538,131.64528 213.88943,131.39446 211.90625,131.50353 z M 242.78125,131.53478 C 233.79442,131.686 227.75459,143.4366 234,150.31603 C 239.43304,157.21146 253.6084,155.92987 254.8125,146.25353 C 256.34217,142.79208 248.19412,142.52195 249.09375,146.47228 C 247.74986,150.93304 239.3353,150.35814 239.6875,145.06603 C 237.97761,140.6411 241.81797,134.16096 246.71875,137.50353 C 249.41376,139.53503 248.68222,144.7773 253.40625,143.03478 C 254.93997,141.69772 255.77025,130.19743 250.78125,131.69103 C 248.48983,133.58272 245.86063,130.6504 242.78125,131.53478 z M 271.8125,132.62853 C 268.88476,137.81053 266.95595,144.19233 263.65625,148.90978 C 259.67153,147.59894 259.59949,156.11933 263.9375,154.25353 C 269.48656,156.75387 278.01244,151.20147 270.5625,149.03478 C 278.56123,146.20513 273.12299,149.82125 275.28125,154.25353 C 280.36022,153.37416 290.27534,157.33095 287.9375,149.03478 C 282.68218,150.73712 283.23236,143.06976 280.63766,140.45052 C 278.39554,137.2537 276.7707,127.60112 271.8125,132.62853 z M 114.8125,133.84728 C 116.77004,137.44183 119.84252,139.92143 118.25,147.06603 C 115.30109,149.26327 111.78292,155.87408 120.8125,154.25353 C 126.85204,157.33159 133.71667,149.54431 125.75,149.03478 C 126.22284,144.18114 123.68261,136.05584 129.125,136.06603 C 130.82877,128.51851 120.43737,133.06616 115.8125,131.84728 C 113.97917,131.01395 115.14583,133.18061 114.8125,133.84728 z M 135.53125,133.84728 C 137.13794,137.51626 141.13623,138.88004 139.1875,146.09728 C 139.90014,148.78088 138.23701,149.77742 135.5625,149.15978 C 133.27286,157.439 143.41425,153.28719 148.4375,154.25353 C 149.06032,150.62414 148.38609,148.80032 145,148.69103 C 144.37781,144.20288 144.67524,140.37677 148.22983,146.14847 C 151.10869,149.12544 157.66223,158.95016 160.03125,152.59728 C 160.56723,147.67323 159.08446,141.633 160.53125,137.15978 C 166.78949,137.51713 163.38644,128.79621 157.65625,131.84728 C 151.96161,128.87124 147.11594,136.8081 153.71875,137.12853 C 155.08393,137.90612 154.71504,144.55646 153.02099,140.78157 C 148.74449,136.84367 145.84142,129.79243 138.9375,131.84728 C 137.12804,132.15832 134.61732,130.69848 135.53125,133.84728 z M 169.90625,133.84728 C 171.85329,137.42108 174.78089,140.0143 173.25,147.06603 C 170.35185,149.32204 166.94881,155.89193 175.90625,154.25353 C 183.25,154.25353 190.59375,154.25353 197.9375,154.25353 C 198.4412,150.73398 198.06744,148.19277 194.25,148.94103 C 192.35148,145.50722 184.29985,141.35591 190.71875,138.62853 C 192.79995,135.96358 198.2411,138.61479 196.65625,133.84728 C 195.14564,129.51414 185.9343,132.88173 181.125,131.84728 C 178.05306,132.8288 169.62024,129.69565 169.90625,133.84728 z M 293.15625,133.84728 C 295.10692,137.42786 298.08265,139.98338 296.53125,147.06603 C 293.61604,149.30232 290.17477,155.88606 299.15625,154.25353 C 305.32284,157.37796 312.34688,149.41219 304.0625,149.03478 C 302.86465,143.8835 309.81747,147.32631 312.71875,144.81603 C 318.59404,142.36193 317.05771,133.06727 310.8125,132.37853 C 305.03715,131.23236 299.02318,132.1357 293.15625,131.84728 L 293.15625,132.84728 L 293.15625,133.84728 z M 322.59375,133.84728 C 324.54442,137.42786 327.52015,139.98338 325.96875,147.06603 C 323.05354,149.30232 319.61227,155.88606 328.59375,154.25353 C 333.93497,153.54619 341.80986,155.64814 345.63415,153.25884 C 346.95428,148.40113 347.18135,139.81716 341.15596,144.41675 C 340.57513,147.60682 339.42531,148.62524 340.03125,144.00353 C 339.41481,135.19467 340.19038,144.69295 345.875,142.37853 C 345.72495,136.36636 346.55912,129.23076 338.3125,131.84728 C 333.91933,133.01706 323.53366,129.40617 322.59375,133.84728 z M 212.90625,136.69103 C 214.7956,136.2583 217.80683,138.96345 217.03125,139.75353 C 216.4244,139.17109 208.72475,139.11563 211,137.03478 C 211.62008,136.69307 212.21398,136.72524 212.90625,136.69103 z M 180.78125,137.06603 C 187.89935,134.91758 178.66084,142.82534 180.78125,137.06603 z M 305.90625,137.06603 C 309.23663,135.96017 309.72242,141.54509 306.25,140.84728 C 303.03028,142.603 303.02031,135.62858 305.90625,137.06603 z M 334.75,137.06603 C 335.39873,138.82924 332.76238,142.0438 333.4375,138.06603 C 332.71875,136.57645 334.04753,137.13439 334.75,137.06603 z M 273.71875,142.90978 C 272.32791,143.69153 273.8227,141.08737 273.71875,142.90978 z M 209.25,145.19103 C 211.70195,146.62318 216.25481,145.47391 217.75,147.90978 C 216.06,151.3315 208.46858,148.82989 209.25,145.19103 z M 333.46875,145.37853 C 335.93079,145.66665 333.11094,150.51246 336.75,149.00353 C 332.80474,149.66943 333.29657,148.87152 333.46875,145.37853 z M 184.875,149.03478 C 177.62334,151.44995 181.19956,141.37917 184.875,149.03478 z " - id="path6392" /> - <path - style="fill:#ffffff;fill-opacity:1;stroke-width:1pt" - d="M 343.30616,142.63289 L 324.60589,142.63289 L 324.60589,143.82976 L 325.16596,143.82976 C 327.68633,143.82976 327.96625,143.95712 327.96625,145.02666 L 327.96625,145.76519 L 327.96625,157.88691 L 327.96625,158.62541 C 327.96625,159.69498 327.68633,159.8223 325.16596,159.8223 L 324.60589,159.8223 L 324.60589,161.0192 L 343.71062,161.0192 L 344.33297,154.21984 L 342.96375,154.21984 C 342.55928,156.00241 341.84362,157.58132 341.09694,158.31983 C 340.13242,159.33846 338.35872,159.8223 335.74504,159.8223 L 333.69141,159.8223 C 332.75812,159.8223 331.9802,159.66952 331.70007,159.44031 C 331.4824,159.28754 331.45117,159.13474 331.45117,158.59995 L 331.45117,152.10617 L 332.0735,152.10617 C 333.97154,152.10617 334.74946,152.25896 335.37178,152.79375 C 336.18074,153.45587 336.49191,154.27077 336.55419,155.77325 L 338.01651,155.77325 L 338.01651,147.42046 L 336.55419,147.42046 C 336.3986,149.9161 335.15394,150.90926 332.19804,150.90926 L 331.45117,150.90926 L 331.45117,145.10308 C 331.45117,144.00805 331.7313,143.82976 333.41149,143.82976 L 335.0294,143.82976 C 337.76763,143.82976 339.1056,144.05898 340.16345,144.77203 C 341.19025,145.43413 341.93693,146.8602 342.4037,149.15213 L 343.74167,149.15213 L 343.30616,142.63289 z M 302.01626,152.84468 L 305.5322,152.84468 C 308.3325,152.84468 309.79502,152.66641 311.0397,152.18256 C 313.2489,151.31673 314.49337,149.68694 314.49337,147.67511 C 314.49337,145.7397 313.40429,144.26269 311.35086,143.42233 C 310.13724,142.913 308.20815,142.63289 306.06122,142.63289 L 295.17078,142.63289 L 295.17078,143.82976 L 295.73084,143.82976 C 298.25121,143.82976 298.53134,143.95712 298.53134,145.02666 L 298.53134,145.76519 L 298.53134,157.88691 L 298.53134,158.62541 C 298.53134,159.69498 298.25121,159.8223 295.73084,159.8223 L 295.17078,159.8223 L 295.17078,161.0192 L 305.62551,161.0192 L 305.62551,159.8223 L 304.81654,159.8223 C 302.29618,159.8223 302.01626,159.69498 302.01626,158.62541 L 302.01626,157.88691 L 302.01626,152.84468 z M 302.01626,151.64778 L 302.01626,145.12853 C 302.01626,143.95712 302.20288,143.82976 303.9143,143.82976 L 305.90564,143.82976 C 309.14164,143.82976 310.66624,145.0776 310.66624,147.77698 C 310.66624,150.39996 309.07938,151.64778 305.7811,151.64778 L 302.01626,151.64778 z M 274.94593,142.27638 L 273.63917,142.27638 L 266.48254,157.12293 C 265.8602,158.44714 265.73586,158.62541 265.26911,159.03287 C 264.77133,159.51672 263.90009,159.8223 263.0599,159.8223 L 262.93555,159.8223 L 262.93555,161.0192 L 271.18107,161.0192 L 271.18107,159.8223 L 270.55874,159.8223 C 268.87856,159.8223 268.03838,159.33846 268.03838,158.37078 C 268.03838,158.06517 268.13169,157.70865 268.31831,157.3012 L 269.34512,155.0602 L 277.59085,155.0602 L 279.27103,158.47264 C 279.45764,158.85461 279.51992,159.03287 279.51992,159.16018 C 279.51992,159.56766 278.742,159.8223 277.59085,159.8223 L 276.2839,159.8223 L 276.2839,161.0192 L 285.92967,161.0192 L 285.92967,159.8223 L 285.49397,159.8223 C 283.93833,159.8223 283.59593,159.61858 282.88028,158.19249 L 274.94593,142.27638 z M 273.42133,146.45276 L 276.93727,153.68506 L 269.96747,153.68506 L 273.42133,146.45276 z M 251.95181,142.45463 L 250.76941,142.45463 L 249.52474,143.95712 C 247.31554,142.63289 246.10212,142.2509 244.01745,142.2509 C 240.99929,142.2509 238.50996,143.24409 236.39425,145.30677 C 234.40272,147.24222 233.46941,149.38133 233.46941,152.00431 C 233.46941,157.47944 237.85659,161.40118 243.98621,161.40118 C 248.96468,161.40118 252.13843,159.00738 252.85408,154.72915 L 251.39174,154.5254 C 251.08059,155.8751 250.70715,156.79188 250.14708,157.55585 C 248.87137,159.31299 246.88004,160.20428 244.35966,160.20428 C 239.75462,160.20428 237.57646,157.58132 237.57646,152.10617 C 237.57646,149.22852 238.0432,147.29313 239.10125,145.76519 C 240.06578,144.33911 241.99486,143.44779 243.98621,143.44779 C 246.16439,143.44779 248.09345,144.39004 249.27586,146.01985 C 249.86715,146.8602 250.3339,147.85338 251.04954,149.81425 L 252.41855,149.81425 L 251.95181,142.45463 z M 220.80547,142.4801 L 219.65412,142.4801 L 218.40964,144.00805 C 216.94712,142.86207 214.95577,142.2509 212.74657,142.2509 C 208.67055,142.2509 205.93233,144.39004 205.93233,147.57326 C 205.93233,150.34903 207.61252,151.72419 212.18651,152.6919 L 215.14239,153.30306 C 217.44512,153.78692 217.66277,153.83785 218.31634,154.24529 C 219.24964,154.83101 219.74762,155.67137 219.74762,156.66454 C 219.74762,157.68318 219.28086,158.52356 218.34736,159.21113 C 217.32056,159.94965 216.29375,160.22976 214.58234,160.22976 C 212.27982,160.22976 210.63087,159.64404 209.16834,158.31983 C 207.8616,157.12293 207.20804,155.92603 206.74129,153.96518 L 205.4035,153.96518 L 205.52785,161.22295 L 206.74129,161.22295 L 208.14155,159.49126 C 210.22619,160.89187 211.96865,161.40118 214.67584,161.40118 C 219.24964,161.40118 222.17449,159.21113 222.17449,155.79871 C 222.17449,154.21984 221.52111,152.87015 220.30769,151.90244 C 219.46749,151.24032 218.25407,150.80742 215.76472,150.2981 L 212.4354,149.61051 C 209.66615,149.02482 208.35939,148.03163 208.35939,146.47823 C 208.35939,144.69561 210.13288,143.47325 212.7778,143.47325 C 214.95577,143.47325 216.72926,144.23725 217.97394,145.68879 C 218.8764,146.73289 219.43646,147.80246 219.84094,149.10121 L 221.17891,149.10121 L 220.80547,142.4801 z M 178.73765,152.6919 L 178.73765,145.76519 L 178.73765,145.02666 C 178.73765,143.95712 179.01778,143.82976 181.53796,143.82976 L 182.12925,143.82976 L 182.12925,142.63289 L 171.89239,142.63289 L 171.89239,143.82976 L 172.45245,143.82976 C 174.97262,143.82976 175.25275,143.95712 175.25275,145.02666 L 175.25275,145.76519 L 175.25275,157.88691 L 175.25275,158.62541 C 175.25275,159.69498 174.97262,159.8223 172.45245,159.8223 L 171.89239,159.8223 L 171.89239,161.0192 L 182.12925,161.0192 L 182.12925,159.8223 L 181.53796,159.8223 C 179.01778,159.8223 178.73765,159.69498 178.73765,158.62541 L 178.73765,157.88691 L 178.73765,154.65275 L 182.34711,151.67324 L 187.76109,158.16702 C 188.25889,158.77822 188.38343,158.98195 188.38343,159.2366 C 188.38343,159.64404 187.79213,159.8223 186.26754,159.8223 L 185.30299,159.8223 L 185.30299,161.0192 L 195.94434,161.0192 L 195.94434,159.8223 L 195.35324,159.8223 C 193.64183,159.8223 193.20631,159.64404 192.30385,158.54901 L 184.77398,149.66144 L 189.41023,145.86704 C 190.9038,144.56829 192.80183,143.82976 194.66865,143.82976 L 194.66865,142.63289 L 185.08515,142.63289 L 185.08515,143.82976 L 185.86307,143.82976 C 187.29436,143.82976 187.88563,144.05898 187.88563,144.59375 C 187.88563,144.95028 187.2633,145.68879 186.36084,146.42729 L 178.73765,152.6919 z M 143.95082,142.63289 L 137.54106,142.63289 L 137.54106,143.82976 L 138.31879,143.82976 C 139.90566,143.82976 140.62151,144.0335 141.18157,144.67015 L 141.18157,155.49312 C 141.18157,158.98195 140.55924,159.72043 137.57211,159.8223 L 137.57211,161.0192 L 146.43996,161.0192 L 146.43996,159.8223 C 143.48408,159.72043 142.86175,158.98195 142.86175,155.49312 L 142.86175,146.04531 L 156.73912,161.37574 L 158.04604,161.37574 L 158.04604,148.15896 C 158.04604,144.67015 158.66839,143.93164 161.65532,143.82976 L 161.65532,142.63289 L 152.78745,142.63289 L 152.78745,143.82976 C 155.74353,143.93164 156.36587,144.67015 156.36587,148.15896 L 156.36587,156.15522 L 143.95082,142.63289 z M 123.72578,145.76519 L 123.72578,145.02666 C 123.72578,143.95712 124.00592,143.82976 126.49504,143.82976 L 127.11738,143.82976 L 127.11738,142.63289 L 116.81822,142.63289 L 116.81822,143.82976 L 117.44055,143.82976 C 119.96093,143.82976 120.24088,143.95712 120.24088,145.02666 L 120.24088,145.76519 L 120.24088,157.88691 L 120.24088,158.62541 C 120.24088,159.69498 119.96093,159.8223 117.44055,159.8223 L 116.81822,159.8223 L 116.81822,161.0192 L 127.11738,161.0192 L 127.11738,159.8223 L 126.49504,159.8223 C 124.00592,159.8223 123.72578,159.69498 123.72578,158.62541 L 123.72578,157.88691 L 123.72578,145.76519 z " - id="path3970" - transform="translate(1.654053e-6,-8.777719)" /> - <path - style="opacity:0.18000004;fill:#ffffff;fill-opacity:1;stroke-width:1pt" - d="M 590.28004,118.44468 L 545.50486,118.44468 L 545.50486,121.23484 L 546.84587,121.23484 C 552.88054,121.23484 553.55077,121.53175 553.55077,124.02508 L 553.55077,125.74675 L 553.55077,154.00514 L 553.55077,155.72674 C 553.55077,158.22014 552.88054,158.51696 546.84587,158.51696 L 545.50486,158.51696 L 545.50486,161.30719 L 591.24846,161.30719 L 592.73859,145.45639 L 589.46018,145.45639 C 588.49174,149.61196 586.77819,153.29274 584.99037,155.01437 C 582.68096,157.38902 578.43408,158.51696 572.17599,158.51696 L 567.25886,158.51696 C 565.02423,158.51696 563.16161,158.16079 562.49088,157.62645 C 561.9697,157.27031 561.89492,156.9141 561.89492,155.66739 L 561.89492,140.52897 L 563.38501,140.52897 C 567.9296,140.52897 569.79222,140.88515 571.28228,142.13187 C 573.21922,143.67541 573.96427,145.57512 574.11339,149.07773 L 577.61471,149.07773 L 577.61471,129.60555 L 574.11339,129.60555 C 573.74085,135.42343 570.76069,137.73871 563.6832,137.73871 L 561.89492,137.73871 L 561.89492,124.20323 C 561.89492,121.65048 562.56566,121.23484 566.58864,121.23484 L 570.46249,121.23484 C 577.0188,121.23484 580.22238,121.7692 582.75526,123.43148 C 585.21379,124.97498 587.00161,128.29946 588.11922,133.64245 L 591.3228,133.64245 L 590.28004,118.44468 z M 491.41715,142.25059 L 499.83558,142.25059 C 506.5405,142.25059 510.0423,141.83501 513.02252,140.70705 C 518.31214,138.68861 521.29185,134.88921 521.29185,130.1992 C 521.29185,125.68733 518.6842,122.2441 513.76755,120.28503 C 510.8617,119.09767 506.24277,118.44468 501.10224,118.44468 L 475.02661,118.44468 L 475.02661,121.23484 L 476.36759,121.23484 C 482.40227,121.23484 483.073,121.53175 483.073,124.02508 L 483.073,125.74675 L 483.073,154.00514 L 483.073,155.72674 C 483.073,158.22014 482.40227,158.51696 476.36759,158.51696 L 475.02661,158.51696 L 475.02661,161.30719 L 500.059,161.30719 L 500.059,158.51696 L 498.12203,158.51696 C 492.08738,158.51696 491.41715,158.22014 491.41715,155.72674 L 491.41715,154.00514 L 491.41715,142.25059 z M 491.41715,139.46036 L 491.41715,124.26256 C 491.41715,121.53175 491.86399,121.23484 495.96174,121.23484 L 500.72973,121.23484 C 508.47788,121.23484 512.12832,124.14383 512.12832,130.43668 C 512.12832,136.55142 508.3288,139.46036 500.43153,139.46036 L 491.41715,139.46036 z M 426.60104,117.61357 L 423.47218,117.61357 L 406.33663,152.22413 C 404.84653,155.31116 404.54881,155.72674 403.43125,156.67662 C 402.23938,157.80458 400.15332,158.51696 398.1416,158.51696 L 397.84386,158.51696 L 397.84386,161.30719 L 417.58661,161.30719 L 417.58661,158.51696 L 416.09652,158.51696 C 412.07357,158.51696 410.06188,157.38902 410.06188,155.13314 C 410.06188,154.4207 410.28529,153.58957 410.73213,152.63972 L 413.19068,147.41546 L 432.93393,147.41546 L 436.95688,155.3706 C 437.40369,156.26106 437.55282,156.67662 437.55282,156.97341 C 437.55282,157.92333 435.6902,158.51696 432.93393,158.51696 L 429.80462,158.51696 L 429.80462,161.30719 L 452.90006,161.30719 L 452.90006,158.51696 L 451.85684,158.51696 C 448.13208,158.51696 447.31225,158.04204 445.59873,154.71751 L 426.60104,117.61357 z M 422.9506,127.34963 L 431.36902,144.2097 L 414.68081,144.2097 L 422.9506,127.34963 z M 371.54484,118.02911 L 368.71374,118.02911 L 365.73356,121.53175 C 360.44394,118.44468 357.53857,117.55417 352.54712,117.55417 C 345.32056,117.55417 339.36021,119.86952 334.29444,124.67808 C 329.526,129.19003 327.29132,134.17677 327.29132,140.29151 C 327.29132,153.05524 337.7958,162.19767 352.47232,162.19767 C 364.39257,162.19767 371.99167,156.6172 373.70519,146.64371 L 370.20383,146.16872 C 369.45882,149.31517 368.56467,151.45238 367.22366,153.23336 C 364.16915,157.32964 359.40119,159.40743 353.3665,159.40743 C 342.34037,159.40743 337.12507,153.29274 337.12507,140.52897 C 337.12507,133.82053 338.24262,129.30872 340.77597,125.74675 C 343.0854,122.42225 347.70431,120.34439 352.47232,120.34439 C 357.68767,120.34439 362.30653,122.54098 365.13765,126.34042 C 366.55341,128.29946 367.67098,130.61478 369.38448,135.186 L 372.66238,135.186 L 371.54484,118.02911 z M 296.96929,118.08849 L 294.21254,118.08849 L 291.23281,121.65048 C 287.73101,118.97894 282.963,117.55417 277.67338,117.55417 C 267.91392,117.55417 261.35763,122.54098 261.35763,129.96176 C 261.35763,136.43269 265.38061,139.63849 276.33239,141.89443 L 283.40983,143.31918 C 288.9234,144.44716 289.44453,144.56589 291.00941,145.51572 C 293.24407,146.88117 294.43641,148.84023 294.43641,151.15553 C 294.43641,153.5302 293.31882,155.48931 291.08368,157.09218 C 288.62516,158.81384 286.1666,159.46683 282.06887,159.46683 C 276.55581,159.46683 272.60763,158.10139 269.10581,155.01437 C 265.977,152.22413 264.41214,149.4339 263.29458,144.86273 L 260.09142,144.86273 L 260.38916,161.78218 L 263.29458,161.78218 L 266.6473,157.74523 C 271.63868,161.01036 275.81076,162.19767 282.29274,162.19767 C 293.24407,162.19767 300.24721,157.09218 300.24721,149.13709 C 300.24721,145.45639 298.68278,142.30997 295.77742,140.05403 C 293.76568,138.51048 290.86032,137.5013 284.89991,136.31396 L 276.92832,134.71104 C 270.29774,133.34566 267.16889,131.03032 267.16889,127.40901 C 267.16889,123.25333 271.41526,120.40374 277.74815,120.40374 C 282.963,120.40374 287.20937,122.18479 290.18958,125.56865 C 292.3504,128.00267 293.69138,130.49608 294.65985,133.52375 L 297.86343,133.52375 L 296.96929,118.08849 z M 196.24378,141.89443 L 196.24378,125.74675 L 196.24378,124.02508 C 196.24378,121.53175 196.91451,121.23484 202.94873,121.23484 L 204.36449,121.23484 L 204.36449,118.44468 L 179.85376,118.44468 L 179.85376,121.23484 L 181.19475,121.23484 C 187.22894,121.23484 187.89967,121.53175 187.89967,124.02508 L 187.89967,125.74675 L 187.89967,154.00514 L 187.89967,155.72674 C 187.89967,158.22014 187.22894,158.51696 181.19475,158.51696 L 179.85376,158.51696 L 179.85376,161.30719 L 204.36449,161.30719 L 204.36449,158.51696 L 202.94873,158.51696 C 196.91451,158.51696 196.24378,158.22014 196.24378,155.72674 L 196.24378,154.00514 L 196.24378,146.4656 L 204.88613,139.51971 L 217.84914,154.65814 C 219.04106,156.08298 219.33925,156.55792 219.33925,157.15156 C 219.33925,158.10139 217.92346,158.51696 214.27305,158.51696 L 211.96357,158.51696 L 211.96357,161.30719 L 237.44279,161.30719 L 237.44279,158.51696 L 236.02748,158.51696 C 231.92975,158.51696 230.88696,158.10139 228.72615,155.54864 L 210.69693,134.82977 L 221.79778,125.98419 C 225.37392,122.95652 229.91849,121.23484 234.38833,121.23484 L 234.38833,118.44468 L 211.44198,118.44468 L 211.44198,121.23484 L 213.3046,121.23484 C 216.73162,121.23484 218.14734,121.7692 218.14734,123.01587 C 218.14734,123.84702 216.65725,125.56865 214.49644,127.29025 L 196.24378,141.89443 z M 112.95159,118.44468 L 97.604314,118.44468 L 97.604314,121.23484 L 99.46648,121.23484 C 103.26602,121.23484 104.98002,121.7098 106.321,123.19398 L 106.321,148.42469 C 106.321,156.55792 104.83092,158.27947 97.678659,158.51696 L 97.678659,161.30719 L 118.91148,161.30719 L 118.91148,158.51696 C 111.83404,158.27947 110.34396,156.55792 110.34396,148.42469 L 110.34396,126.39977 L 143.57138,162.13836 L 146.70062,162.13836 L 146.70062,131.32716 C 146.70062,123.19398 148.19075,121.47235 155.34253,121.23484 L 155.34253,118.44468 L 134.10966,118.44468 L 134.10966,121.23484 C 141.18758,121.47235 142.67768,123.19398 142.67768,131.32716 L 142.67768,149.96819 L 112.95159,118.44468 z M 64.525561,125.74675 L 64.525561,124.02508 C 64.525561,121.53175 65.196317,121.23484 71.156166,121.23484 L 72.646272,121.23484 L 72.646272,118.44468 L 47.986375,118.44468 L 47.986375,121.23484 L 49.476457,121.23484 C 55.511154,121.23484 56.181455,121.53175 56.181455,124.02508 L 56.181455,125.74675 L 56.181455,154.00514 L 56.181455,155.72674 C 56.181455,158.22014 55.511154,158.51696 49.476457,158.51696 L 47.986375,158.51696 L 47.986375,161.30719 L 72.646272,161.30719 L 72.646272,158.51696 L 71.156166,158.51696 C 65.196317,158.51696 64.525561,158.22014 64.525561,155.72674 L 64.525561,154.00514 L 64.525561,125.74675 z " - id="use3972" /> + xlink:href="#rect4669" + id="use4724" + width="100%" + height="100%" /> + <use + x="0" + y="0" + xlink:href="#g17092" + id="use17385" + width="100%" + height="100%" + transform="matrix(0.5,0,0,0.5,32,92)" /> + <use + x="0" + y="0" + xlink:href="#text4431" + id="use4447" + width="100%" + height="100%" /> + <use + x="0" + y="0" + xlink:href="#text4443" + id="use4449" + width="100%" + height="100%" /> + <use + x="0" + y="0" + xlink:href="#rect4693" + id="use4728" + width="100%" + height="100%" /> + <use + x="0" + y="0" + xlink:href="#g4485" + id="use4587" + width="100%" + height="100%" /> <g - id="g6386"> - <path - id="path4997" - d="M 92.59375,164.875 C 88.113243,165.75634 90.444126,172.33966 94.3125,171.78125 C 98.790176,171.10793 97.488032,164.81708 93.3125,164.84375 C 93.077807,164.87205 92.819915,164.79564 92.59375,164.875 z " - style="font-size:12px;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke-width:1pt;filter:url(#filter6374)" /> - <path - id="path4999" - d="M 68.0625,164 C 63.389338,163.68801 62.994345,172.30386 67.96875,171.40625 C 72.00245,171.56715 75.618715,164.7074 69.84375,164.1875 C 69.28382,163.9933 68.657906,163.92536 68.0625,164 z " - style="font-size:12px;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke-width:1pt;filter:url(#filter6362)" /> - <path - id="path5001" - d="M 96.6875,160.96875 C 92.787255,160.12272 89.338676,166.71986 94.4375,167.625 C 98.127844,169.64513 105.11906,165.50747 100.90625,161.84375 C 99.656522,161.05111 98.140071,160.87759 96.6875,160.96875 z " - style="font-size:12px;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke-width:1pt;filter:url(#filter6370)" /> - <path - id="path5003" - d="M 78.90625,130.0625 C 71.574069,132.72813 68.195911,140.7692 62.0625,145.25 C 60.185026,147.42322 54.784698,150.53213 57.25,153.90625 C 59.730284,154.72534 65.594263,155.98382 63.34061,159.34427 C 59.717471,163.33418 70.334693,162.45891 71.59375,165.46875 C 73.006345,167.48699 68.928159,170.12348 72.71875,170.65625 C 75.274013,170.82156 76.509875,171.42143 77.15625,173.71875 C 79.798879,175.53189 84.935097,174.59678 86.375,171.65625 C 84.032653,167.37236 91.803417,168.05515 93.09375,164.40625 C 90.163883,162.96743 90.537912,158.77419 94.09375,158.75 C 97.839433,158.38307 104.15352,156.07034 102.125,151.15625 C 95.808038,143.61829 88.597124,136.46857 81.03125,130.28125 C 80.359155,130.04775 79.615042,129.96607 78.90625,130.0625 z M 80.375,133.28125 C 82.853723,134.6375 88.132191,138.59859 83.90625,140.96875 C 81.669601,143.5713 77.157842,142.78439 76.6875,139.0625 C 76.528868,140.88754 72.618484,146.33606 70.0625,142.5 C 68.712832,139.23213 74.807932,134.16459 76.5,138.125 C 75.943839,135.93126 77.766171,131.42089 80.375,133.28125 z " - style="font-size:12px;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke-width:1pt;filter:url(#filter6366)" /> + id="g4597"> + <text + transform="translate(-4.8828124e-7,-3.2861328e-6)" + sodipodi:linespacing="125%" + id="text4490" + y="141.78999" + x="137.888" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="141.78999" + x="137.888" + id="tspan4492" + sodipodi:role="line">ABOUT</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="232.79601" + y="141.78999" + id="text4496" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4498" + x="232.79601" + y="141.78999">DOWNLOAD</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4506" + y="141.78999" + x="361.29599" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="141.78999" + x="361.29599" + id="tspan4508" + sodipodi:role="line">NEWS</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="448.18799" + y="141.78999" + id="text4510" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4512" + x="448.18799" + y="141.78999">COMMUNITY</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4514" + y="141.78999" + x="580.04602" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="141.78999" + x="580.04602" + id="tspan4516" + sodipodi:role="line">LEARN</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="671.68799" + y="141.78999" + id="text4518" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4520" + x="671.68799" + y="141.78999">CONTRIBUTE</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4522" + y="141.78999" + x="804.29602" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="141.78999" + x="804.29602" + id="tspan4524" + sodipodi:role="line">DEVELOP</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;fill:#ff732c;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="913.59601" + y="141.78999" + id="text4526" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4528" + x="913.59601" + y="141.78999">DONATE</tspan></text> + </g> + <g + id="g4615"> + <use + height="100%" + width="100%" + id="use4550" + xlink:href="#g4543" + y="0" + x="0" + style="display:inline" /> + <use + height="100%" + width="100%" + transform="translate(95,0)" + x="0" + y="0" + xlink:href="#g4543" + id="use4553" + style="display:inline" /> + <use + id="use4555" + xlink:href="#g4543" + y="0" + x="0" + transform="translate(223,0)" + width="100%" + height="100%" + style="display:inline" /> + <use + height="100%" + width="100%" + transform="translate(310,0)" + x="0" + y="0" + xlink:href="#g4543" + id="use4557" + style="display:inline" /> + <use + id="use4559" + xlink:href="#g4543" + y="0" + x="0" + transform="translate(442,0)" + width="100%" + height="100%" + style="display:inline" /> + <use + height="100%" + width="100%" + transform="translate(534,0)" + x="0" + y="0" + xlink:href="#g4543" + id="use4561" + style="display:inline" /> + <use + id="use4563" + xlink:href="#g4543" + y="0" + x="0" + transform="translate(666,0)" + width="100%" + height="100%" + style="display:inline" /> + <use + height="100%" + width="100%" + transform="translate(776,0)" + x="0" + y="0" + xlink:href="#g4543" + id="use4565" + style="display:inline" /> </g> - <flowRoot - style="font-size:7.19999981px;font-style:italic;font-weight:normal;line-height:150%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" - id="flowRoot4797" - transform="translate(-184.4496,300.46138)"> - <flowRegion - id="flowRegion4799"> + <use + style="display:inline" + x="0" + y="0" + xlink:href="#g4649" + id="use4655" + width="100%" + height="100%" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="341.55399" + y="766.96503" + id="text4663" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4665" + x="341.55399" + y="766.96503">Inkscape is Free and Open Source Software licensed under the GPL.</tspan></text> + </g> + <g + inkscape:groupmode="layer" + id="layer5" + inkscape:label="background for dmg" + style="display:inline"> + <g + id="g4785"> + <rect + style="display:inline;opacity:0.25;fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1" + id="rect13530-7" + width="90" + height="90" + x="414" + y="188.5" /> + <rect + y="188.5" + x="96" + height="90" + width="90" + id="rect13527-5" + style="display:inline;opacity:0.25;fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1" /> + <g + id="g3786"> + <rect + style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1" + id="rect4783" + width="600" + height="400" + x="0" + y="0" /> <use - xlink:href="#d0e15" + style="display:inline" + height="100%" + width="100%" + id="use4735" + xlink:href="#rect4669" y="0" x="0" - id="use4801" - width="744.09448" - height="1052.3622" /> - </flowRegion> - <flowDiv - xml:space="preserve" - id="flowDiv4803">This tutorial covers copy/paste, node editing, freehand and bezier drawing, path manipulation, booleans, offsets, simplification, and text tool. </flowDiv> </flowRoot> - <g - id="g3978" - transform="translate(0,-6.720262)" - style="opacity:0.8258427"> - <path - sodipodi:nodetypes="ccccccccc" - style="color:#000000;fill:url(#radialGradient5810);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" - d="m 321.13418,233.56827 -38.99349,27.67813 39.09841,27.39295 -0.035,-11.36482 118.86894,0 0,-32.34144 -118.90391,0 -0.035,0 0,-11.36482 z" - id="path4008" /> - <rect - y="245.66743" - x="320.60944" - height="30.984045" - width="118.35905" - id="rect4939" - style="color:#000000;fill:none;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + transform="scale(0.5859375,1)" /> + </g> + <g + id="g3779" + mask="url(#mask3799)"> + <use + height="100%" + width="100%" + id="use4709" + xlink:href="#g4649" + y="0" + x="0" + style="display:inline;opacity:1" + transform="matrix(0.55833333,0,0,1,14.133334,-429)" /> + <use + style="display:inline;opacity:1" + height="100%" + width="100%" + id="use4718" + xlink:href="#g4485" + y="0" + x="0" + transform="matrix(0.55833333,0,0,1,14.133334,0)" /> + <use + style="display:inline;opacity:1" + transform="matrix(0.5,0,0,0.5,32,92)" + height="100%" + width="100%" + id="use4738" + xlink:href="#g17092" + y="0" + x="0" /> + <use + style="display:inline;opacity:1" + height="100%" + width="100%" + id="use4740" + xlink:href="#text4431" + y="0" + x="0" /> + <use + style="display:inline;opacity:1" + height="100%" + width="100%" + id="use4742" + xlink:href="#text4443" + y="0" + x="0" /> + </g> + <g + id="g3790"> + <rect + y="163" + x="32" + height="141" + width="536" + id="rect4828" + style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1" /> + <use + style="display:inline" + height="100%" + width="100%" + id="use4732" + xlink:href="#rect4693" + y="0" + x="0" + transform="matrix(0.55833333,0,0,1,14.133334,0)" /> + <text + sodipodi:linespacing="125%" + id="text4711" + y="337.96503" + x="132.5152" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="337.96503" + x="132.5152" + id="tspan4713" + sodipodi:role="line">Inkscape is Free and Open Source Software licensed under the GPL.</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="376.46323" + y="141.78999" + id="text4804" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4806" + x="376.46323" + y="141.78999">Inkscape 0.91pre2 custom</tspan></text> + <path + sodipodi:nodetypes="cccccccc" + style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.8258427;fill:url(#linearGradient3762);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none" + d="m 220,233.5 40,27.5 0,-11 119,0 0,-33 -119,0 0,-11 z" + id="path4958" + inkscape:connector-curvature="0" /> + </g> </g> + <use + x="0" + y="0" + xlink:href="#g4785" + id="dmg_background" + transform="matrix(1.25,0,0,1.25,1280,0)" + width="100%" + height="100%" + inkscape:export-xdpi="72" + inkscape:export-ydpi="72" + inkscape:label="#use4802" + inkscape:export-filename="dmg_background.png" /> + </g> + <g + inkscape:groupmode="layer" + id="layer4" + inkscape:label="assets" + style="display:none"> <g - style="display:inline;enable-background:new" - id="g9139" - transform="matrix(0.42708381,0,0,0.42708381,52.046708,125.92538)"> + clip-path="url(#clipPath17127)" + id="g17092" + transform="translate(0,-128)"> <g - style="opacity:0.78325124" - id="g6035" - transform="translate(3.6896803e-7,0.4883067)"> + transform="matrix(0.9939405,0,0,0.9939405,0.38937111,-1.4450758)" + id="g9139-7" + style="display:inline;enable-background:new"> + <g + transform="translate(3.6896803e-7,0.4883067)" + id="g6035-3" + style="opacity:0.78325124"> + <path + d="m 54.1,12.988307 -41.2,42.2 c -15.6,15.6 10.1,14.3 19.4,20.2 4.3,2.8 -13.8,6.4 -10.1,10.1 3.6,3.7 21.7,7.1 25.3,10.7 3.6,3.699996 -7.3,7.600003 -3.7,11.300003 3.5,3.7 11.9,0.2 13.4,8.6 1.1,6.2 15.4,3.1 21.8,-2.2 4,-3.4 -6.9,-3.4 -3.3,-7.1 9,-9.100003 17,-4.1 20.3,-12.500003 1.8,-4.5 -13.6,-7.7 -9.5,-10.6 9.8,-6.9 45.8,-10.4 29.2,-27 l -42.7,-43.7 c -5.3,-5.0000003 -14,-5.0000003 -18.9,0 z m 47.3,81.3 c 0,2.1 16.3,3.3 15.4,-0.5 -1.3,-6.4 -13.6,-5.9 -15.4,0.5 z M 31.9,105.38831 c 3.7,3.2 9.3,-0.7 11.1,-5.2 -3.6,-4.700003 -16.9,0.3 -11.1,5.2 z m 67.5,-6.700003 c -4.6,4.200003 0.8,8.600003 5.3,5.700003 1.2,-0.8 -0.1,-4.700007 -5.3,-5.700003 z" + id="path5987-2" + style="fill:#000000;fill-opacity:1;filter:url(#filter6017-3-7)" + inkscape:connector-curvature="0" /> + <path + d="m 54.1,13.964921 -41.2,42.2 c -15.6,15.6 10.1,14.3 19.4,20.2 4.3,2.8 -13.8,6.4 -10.1,10.1 3.6,3.7 21.7,7.1 25.3,10.7 3.6,3.699999 -7.3,7.600009 -3.7,11.300009 3.5,3.7 11.9,0.2 13.4,8.6 1.1,6.2 15.4,3.1 21.8,-2.2 4,-3.4 -6.9,-3.4 -3.3,-7.1 9,-9.100009 17,-4.1 20.3,-12.500009 1.8,-4.5 -13.6,-7.7 -9.5,-10.6 9.8,-6.9 45.8,-10.4 29.2,-27 l -42.7,-43.7 c -5.3,-5.0000009 -14,-5.0000009 -18.9,0 z m 47.3,81.3 c 0,2.1 16.3,3.3 15.4,-0.5 -1.3,-6.4 -13.6,-5.9 -15.4,0.5 z M 31.9,106.36493 c 3.7,3.2 9.3,-0.7 11.1,-5.2 -3.6,-4.700009 -16.9,0.3 -11.1,5.2 z m 67.5,-6.700009 c -4.6,4.200009 0.8,8.600009 5.3,5.700009 1.2,-0.8 -0.1,-4.70001 -5.3,-5.700009 z" + id="path6021-6" + style="opacity:0.57635468;fill:#000000;fill-opacity:1;filter:url(#filter6031-0-56)" + inkscape:connector-curvature="0" /> + </g> <path - style="fill:#000000;fill-opacity:1;filter:url(#filter6017-3-5)" - id="path5987" - d="m 54.1,12.988307 -41.2,42.2 c -15.6,15.6 10.1,14.3 19.4,20.2 4.3,2.8 -13.8,6.4 -10.1,10.1 3.6,3.7 21.7,7.1 25.3,10.7 3.6,3.699996 -7.3,7.600003 -3.7,11.300003 3.5,3.7 11.9,0.2 13.4,8.6 1.1,6.2 15.4,3.1 21.8,-2.2 4,-3.4 -6.9,-3.4 -3.3,-7.1 9,-9.100003 17,-4.1 20.3,-12.500003 1.8,-4.5 -13.6,-7.7 -9.5,-10.6 9.8,-6.9 45.8,-10.4 29.2,-27 l -42.7,-43.7 c -5.3,-5.0000003 -14,-5.0000003 -18.9,0 z m 47.3,81.3 c 0,2.1 16.3,3.3 15.4,-0.5 -1.3,-6.4 -13.6,-5.9 -15.4,0.5 z M 31.9,105.38831 c 3.7,3.2 9.3,-0.7 11.1,-5.2 -3.6,-4.700003 -16.9,0.3 -11.1,5.2 z m 67.5,-6.700003 c -4.6,4.200003 0.8,8.600003 5.3,5.700003 1.2,-0.8 -0.1,-4.700007 -5.3,-5.700003 z" /> + d="M 54.1,12.5 12.9,54.7 C -2.7,70.3 23,69 32.3,74.9 36.6,77.7 18.5,81.3 22.2,85 c 3.6,3.7 21.7,7.1 25.3,10.7 3.6,3.7 -7.3,7.6 -3.7,11.3 3.5,3.7 11.9,0.2 13.4,8.6 1.1,6.2 15.4,3.1 21.8,-2.2 4,-3.4 -6.9,-3.4 -3.3,-7.1 9,-9.1 17,-4.1 20.3,-12.5 1.8,-4.5 -13.6,-7.7 -9.5,-10.6 9.8,-6.9 45.8,-10.4 29.2,-27 L 73,12.5 c -5.3,-5 -14,-5 -18.9,0 z m 47.3,81.3 c 0,2.1 16.3,3.3 15.4,-0.5 -1.3,-6.4 -13.6,-5.9 -15.4,0.5 z m -69.5,11.1 c 3.7,3.2 9.3,-0.7 11.1,-5.2 -3.6,-4.7 -16.9,0.3 -11.1,5.2 z m 67.5,-6.7 c -4.6,4.2 0.8,8.6 5.3,5.7 1.2,-0.8 -0.1,-4.7 -5.3,-5.7 z" + id="use7631-2" + style="fill:#000000;fill-opacity:1" + inkscape:connector-curvature="0" /> <path - style="opacity:0.57635468;fill:#000000;fill-opacity:1;filter:url(#filter6031-0-0)" - id="path6021" - d="m 54.1,13.964921 -41.2,42.2 c -15.6,15.6 10.1,14.3 19.4,20.2 4.3,2.8 -13.8,6.4 -10.1,10.1 3.6,3.7 21.7,7.1 25.3,10.7 3.6,3.699999 -7.3,7.600009 -3.7,11.300009 3.5,3.7 11.9,0.2 13.4,8.6 1.1,6.2 15.4,3.1 21.8,-2.2 4,-3.4 -6.9,-3.4 -3.3,-7.1 9,-9.100009 17,-4.1 20.3,-12.500009 1.8,-4.5 -13.6,-7.7 -9.5,-10.6 9.8,-6.9 45.8,-10.4 29.2,-27 l -42.7,-43.7 c -5.3,-5.0000009 -14,-5.0000009 -18.9,0 z m 47.3,81.3 c 0,2.1 16.3,3.3 15.4,-0.5 -1.3,-6.4 -13.6,-5.9 -15.4,0.5 z M 31.9,106.36493 c 3.7,3.2 9.3,-0.7 11.1,-5.2 -3.6,-4.700009 -16.9,0.3 -11.1,5.2 z m 67.5,-6.700009 c -4.6,4.200009 0.8,8.600009 5.3,5.700009 1.2,-0.8 -0.1,-4.70001 -5.3,-5.700009 z" /> - </g> - <path - style="fill:#000000;fill-opacity:1" - id="use7631" - d="M 54.1,12.5 12.9,54.7 C -2.7,70.3 23,69 32.3,74.9 36.6,77.7 18.5,81.3 22.2,85 c 3.6,3.7 21.7,7.1 25.3,10.7 3.6,3.7 -7.3,7.6 -3.7,11.3 3.5,3.7 11.9,0.2 13.4,8.6 1.1,6.2 15.4,3.1 21.8,-2.2 4,-3.4 -6.9,-3.4 -3.3,-7.1 9,-9.1 17,-4.1 20.3,-12.5 1.8,-4.5 -13.6,-7.7 -9.5,-10.6 9.8,-6.9 45.8,-10.4 29.2,-27 L 73,12.5 c -5.3,-5 -14,-5 -18.9,0 z m 47.3,81.3 c 0,2.1 16.3,3.3 15.4,-0.5 -1.3,-6.4 -13.6,-5.9 -15.4,0.5 z m -69.5,11.1 c 3.7,3.2 9.3,-0.7 11.1,-5.2 -3.6,-4.7 -16.9,0.3 -11.1,5.2 z m 67.5,-6.7 c -4.6,4.2 0.8,8.6 5.3,5.7 1.2,-0.8 -0.1,-4.7 -5.3,-5.7 z" /> - <path - style="fill:none" - id="use7639" - d="M 54.1,12.5 12.9,54.7 C -2.7,70.3 23,69 32.3,74.9 36.6,77.7 18.5,81.3 22.2,85 c 3.6,3.7 21.7,7.1 25.3,10.7 3.6,3.7 -7.3,7.6 -3.7,11.3 3.5,3.7 11.9,0.2 13.4,8.6 1.1,6.2 15.4,3.1 21.8,-2.2 4,-3.4 -6.9,-3.4 -3.3,-7.1 9,-9.1 17,-4.1 20.3,-12.5 1.8,-4.5 -13.6,-7.7 -9.5,-10.6 9.8,-6.9 45.8,-10.4 29.2,-27 L 73,12.5 c -5.3,-5 -14,-5 -18.9,0 z m 47.3,81.3 c 0,2.1 16.3,3.3 15.4,-0.5 -1.3,-6.4 -13.6,-5.9 -15.4,0.5 z m -69.5,11.1 c 3.7,3.2 9.3,-0.7 11.1,-5.2 -3.6,-4.7 -16.9,0.3 -11.1,5.2 z m 67.5,-6.7 c -4.6,4.2 0.8,8.6 5.3,5.7 1.2,-0.8 -0.1,-4.7 -5.3,-5.7 z" /> - <use - xlink:href="#outline1-4" - height="300" - width="400" - y="0" - x="0" - style="opacity:0.66995072;fill:url(#linearGradient9175-3-1);filter:url(#filter8490-0-5)" - id="use7641" - clip-path="url(#clipPath9086-1-8)" - transform="matrix(0.9905442,0,0,0.9905442,0.6051535,0.604136)" /> - <path - style="opacity:0.50526315;fill:url(#shinySpecular-0-4);stroke:none" - id="path7643" - d="M 16.565217,57.039374 C 5.3632748,68.140398 25.042362,65.011927 40.180121,70.966113 L 71.464824,15.965587 c -4.743164,-4.844083 -10.798268,-4.44041 -15.137759,0 L 16.565217,57.039374 z" /> - <path - style="fill:url(#IcecapTip-0-1)" - id="icecap" - d="m 70.5,15.5 16.3,16.6 c 1.5,1.5 1.5,4.6 0.6,5.5 L 79.3,31 77.7,40.7 71,37.1 60.1,44 56.5,29.5 50.7,42.1 36.2,42 c -2.8,0 -2.4,-2.9 0.5,-5.8 5.7,-6.3 16.8,-17 20.3,-20.7 3.6,-3.7 9.9,-3.6 13.5,0 z" /> - <path - style="opacity:0.21674876;fill:url(#radialGradient9177-1-9);fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path8566" - transform="matrix(0.5296484,0,0,0.5296484,-11.722258,-13.864159)" - d="m 113,203.5 c 0,0 3.34046,5.10071 3,7.5 -0.66817,4.70868 -10.80945,7.05842 -8.5625,11.25 2.21991,4.14114 10.22139,1.79405 16.9375,6.125 6.6875,4.3125 4.88949,13.10149 9.75,15.3125 9.47925,4.31205 34.375,-7.4375 33.125,-7.1875 -1.25,0.25 -24.57014,5.09545 -29.82014,0.84545 -5.98592,-4.84575 -7.70217,-8.23028 -12.11736,-11.09545 -4.13751,-2.68498 -9.94967,-3.78036 -11.30246,-5.97865 -1.35279,-2.19829 2.7092,-5.03469 2.98996,-9.27135 0.16862,-2.54442 -4,-7.5 -4,-7.5 z" /> - <path - style="opacity:0.27586209;fill:url(#radialGradient8574-0-2);fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter8732-3-0)" - id="path8718" - transform="matrix(0.5296484,0,0,0.5296484,-11.722258,-13.864159)" - d="m 113,203.5 c 0,0 3.34046,5.10071 3,7.5 -0.66817,4.70868 -10.80945,7.05842 -8.5625,11.25 2.21991,4.14114 10.22139,1.79405 16.9375,6.125 6.6875,4.3125 4.88949,13.10149 9.75,15.3125 9.47925,4.31205 34.375,-7.4375 33.125,-7.1875 -41.33959,0.15736 -33.62485,-10.4946 -49.5625,-17.5 -2.30305,-1.0123 -0.96826,-3.76334 -0.6875,-8 0.16862,-2.54442 -4,-7.5 -4,-7.5 z" /> - <path - style="opacity:0.45320195;fill:url(#radialGradient8744-9-3);fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path8736" - transform="matrix(0.5296484,0,0,0.5296484,-11.722258,-13.864159)" - d="m 183.25,181.75 c 37.10371,-13.65459 49.02363,-15.53058 61.25,-27.75 -14.16069,11.95366 -44.09847,18.3658 -68.5,29 l 7.25,-1.25 z" /> - <path - style="opacity:0.51231528;fill:url(#radialGradient8768-6-5);fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter8764-9-6)" - id="path8746" - transform="matrix(0.5296484,0,0,0.5296484,-11.722258,-14.791044)" - d="m 183.25,181.75 c 61.10371,-21.65459 50.77363,-21.53058 61.25,-27.75 -19.42769,7.43666 -55.73446,8.22981 -68.5,29 l 7.25,-1.25 z" /> - <path - style="opacity:0.2857143;fill:url(#linearGradient8912-9-7);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="path8864" - transform="matrix(0.5296484,0,0,0.5296484,-12.384318,-14.791044)" - d="m 237.875,199.0625 a 7.9375,2.4375 0 1 1 -15.875,0 7.9375,2.4375 0 1 1 15.875,0 z" /> - <path - style="opacity:0.62068942;fill:url(#linearGradient8910-3-4);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter8906-3-7);enable-background:accumulate" - id="path8874" - transform="matrix(0.7131486,0,0,1.1407811,-54.577902,-134.95502)" - d="m 237.875,199.0625 a 7.9375,2.4375 0 1 1 -15.875,0 7.9375,2.4375 0 1 1 15.875,0 z" /> - <path - style="fill:url(#radialGradient8922-9-8);fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter8980-1-06)" - id="path8914" - transform="matrix(0.5296484,0,0,0.5296484,-11.722258,-14.238677)" - d="m 214.125,203.75 c 3.76948,3.48424 24.75576,5.27219 28.1875,-1 -6.73663,4.7839 -21.71677,3.10264 -28.1875,1 z" /> - <path - style="opacity:0.2857143;fill:url(#linearGradient8990-4-6);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="path8984" - transform="matrix(0.2042516,-0.1035605,0.2395168,0.4723972,5.7547955,30.286555)" - d="m 236.44594,199.0625 a 6.5084434,3.0820823 0 1 1 -13.01688,0 6.5084434,3.0820823 0 1 1 13.01688,0 z" /> - <path - style="opacity:0.62068942;fill:url(#linearGradient8992-2-2);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter8906-3-7);enable-background:accumulate" - id="path8986" - transform="matrix(0.2750159,-0.1394397,0.5158824,1.0174708,-65.353496,-69.300635)" - d="m 236.99305,199.0625 a 7.0555515,2.1400476 0 1 1 -14.1111,0 7.0555515,2.1400476 0 1 1 14.1111,0 z" /> - <path - style="fill:url(#radialGradient8994-0-8);fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter8980-1-06)" - id="path8988" - transform="matrix(0.2042516,-0.1035605,0.2395168,0.4723972,6.2599008,30.649764)" - d="m 217.05754,201.94027 c 3.76948,3.48424 26.97122,8.91123 25.25496,0.80973 -3.31737,5.32326 -18.78423,1.29291 -25.25496,-0.80973 z" /> - <path - style="fill:url(#radialGradient9004-6-9);fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path8996" - transform="matrix(0.5296484,0,0,0.5296484,-11.722258,-13.864159)" - d="m 68.25,186 c 0,-0.62057 38.84622,11.83854 45.5,18.5 -5.47122,-5.33854 -33.159709,-17.61609 -37.375,-17.75 -4.215291,-0.13391 -7.625,-0.5 -8.125,-0.75 z" /> - <g - id="g9018" - transform="matrix(0.8790148,-0.1929959,0.2338341,0.6959295,-20.209533,36.725557)"> + d="M 54.1,12.5 12.9,54.7 C -2.7,70.3 23,69 32.3,74.9 36.6,77.7 18.5,81.3 22.2,85 c 3.6,3.7 21.7,7.1 25.3,10.7 3.6,3.7 -7.3,7.6 -3.7,11.3 3.5,3.7 11.9,0.2 13.4,8.6 1.1,6.2 15.4,3.1 21.8,-2.2 4,-3.4 -6.9,-3.4 -3.3,-7.1 9,-9.1 17,-4.1 20.3,-12.5 1.8,-4.5 -13.6,-7.7 -9.5,-10.6 9.8,-6.9 45.8,-10.4 29.2,-27 L 73,12.5 c -5.3,-5 -14,-5 -18.9,0 z m 47.3,81.3 c 0,2.1 16.3,3.3 15.4,-0.5 -1.3,-6.4 -13.6,-5.9 -15.4,0.5 z m -69.5,11.1 c 3.7,3.2 9.3,-0.7 11.1,-5.2 -3.6,-4.7 -16.9,0.3 -11.1,5.2 z m 67.5,-6.7 c -4.6,4.2 0.8,8.6 5.3,5.7 1.2,-0.8 -0.1,-4.7 -5.3,-5.7 z" + id="use7639-7" + style="fill:none" + inkscape:connector-curvature="0" /> + <use + transform="matrix(0.9905442,0,0,0.9905442,0.6051535,0.604136)" + clip-path="url(#clipPath9086-1-5)" + id="use7641-0" + style="opacity:0.66995072;fill:url(#linearGradient9175);filter:url(#filter8490-0-0)" + x="0" + y="0" + width="400" + height="300" + xlink:href="#outline1-2" /> + <path + d="M 16.565217,57.039374 C 5.3632748,68.140398 25.042362,65.011927 40.180121,70.966113 L 71.464824,15.965587 c -4.743164,-4.844083 -10.798268,-4.44041 -15.137759,0 L 16.565217,57.039374 Z" + id="path7643-5" + style="opacity:0.50526315;fill:url(#shinySpecular-0-4);stroke:none" + inkscape:connector-curvature="0" /> + <path + d="m 70.5,15.5 16.3,16.6 c 1.5,1.5 1.5,4.6 0.6,5.5 L 79.3,31 77.7,40.7 71,37.1 60.1,44 56.5,29.5 50.7,42.1 36.2,42 c -2.8,0 -2.4,-2.9 0.5,-5.8 5.7,-6.3 16.8,-17 20.3,-20.7 3.6,-3.7 9.9,-3.6 13.5,0 z" + id="icecap-3" + style="fill:url(#IcecapTip-0-3)" + inkscape:connector-curvature="0" /> + <path + d="m 113,203.5 c 0,0 3.34046,5.10071 3,7.5 -0.66817,4.70868 -10.80945,7.05842 -8.5625,11.25 2.21991,4.14114 10.22139,1.79405 16.9375,6.125 6.6875,4.3125 4.88949,13.10149 9.75,15.3125 9.47925,4.31205 34.375,-7.4375 33.125,-7.1875 -1.25,0.25 -24.57014,5.09545 -29.82014,0.84545 -5.98592,-4.84575 -7.70217,-8.23028 -12.11736,-11.09545 -4.13751,-2.68498 -9.94967,-3.78036 -11.30246,-5.97865 -1.35279,-2.19829 2.7092,-5.03469 2.98996,-9.27135 0.16862,-2.54442 -4,-7.5 -4,-7.5 z" + transform="matrix(0.5296484,0,0,0.5296484,-11.722258,-13.864159)" + id="path8566-7" + style="opacity:0.21674876;fill:url(#radialGradient9177-1-7);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + d="m 113,203.5 c 0,0 3.34046,5.10071 3,7.5 -0.66817,4.70868 -10.80945,7.05842 -8.5625,11.25 2.21991,4.14114 10.22139,1.79405 16.9375,6.125 6.6875,4.3125 4.88949,13.10149 9.75,15.3125 9.47925,4.31205 34.375,-7.4375 33.125,-7.1875 -41.33959,0.15736 -33.62485,-10.4946 -49.5625,-17.5 -2.30305,-1.0123 -0.96826,-3.76334 -0.6875,-8 0.16862,-2.54442 -4,-7.5 -4,-7.5 z" + transform="matrix(0.5296484,0,0,0.5296484,-11.722258,-13.864159)" + id="path8718-6" + style="opacity:0.27586209;fill:url(#radialGradient8574-0-1);fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter8732-3-8)" + inkscape:connector-curvature="0" /> + <path + d="m 183.25,181.75 c 37.10371,-13.65459 49.02363,-15.53058 61.25,-27.75 -14.16069,11.95366 -44.09847,18.3658 -68.5,29 l 7.25,-1.25 z" + transform="matrix(0.5296484,0,0,0.5296484,-11.722258,-13.864159)" + id="path8736-9" + style="opacity:0.45320195;fill:url(#radialGradient8744-9-7);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + d="m 183.25,181.75 c 61.10371,-21.65459 50.77363,-21.53058 61.25,-27.75 -19.42769,7.43666 -55.73446,8.22981 -68.5,29 l 7.25,-1.25 z" + transform="matrix(0.5296484,0,0,0.5296484,-11.722258,-14.791044)" + id="path8746-3" + style="opacity:0.51231528;fill:url(#radialGradient8768-6-2);fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter8764-9-3)" + inkscape:connector-curvature="0" /> + <path + d="m 237.875,199.0625 a 7.9375,2.4375 0 1 1 -15.875,0 7.9375,2.4375 0 1 1 15.875,0 z" + transform="matrix(0.5296484,0,0,0.5296484,-12.384318,-14.791044)" + id="path8864-0" + style="display:inline;overflow:visible;visibility:visible;opacity:0.2857143;fill:url(#linearGradient8912-9-9);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;enable-background:accumulate" + inkscape:connector-curvature="0" /> + <path + d="m 237.875,199.0625 a 7.9375,2.4375 0 1 1 -15.875,0 7.9375,2.4375 0 1 1 15.875,0 z" + transform="matrix(0.7131486,0,0,1.1407811,-54.577902,-134.95502)" + id="path8874-9" + style="display:inline;overflow:visible;visibility:visible;opacity:0.62068936;fill:url(#linearGradient8910-3-8);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;filter:url(#filter8906-3-4);enable-background:accumulate" + inkscape:connector-curvature="0" /> + <path + d="m 214.125,203.75 c 3.76948,3.48424 24.75576,5.27219 28.1875,-1 -6.73663,4.7839 -21.71677,3.10264 -28.1875,1 z" + transform="matrix(0.5296484,0,0,0.5296484,-11.722258,-14.238677)" + id="path8914-1" + style="fill:url(#radialGradient8922-9-3);fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter8980-1-63)" + inkscape:connector-curvature="0" /> + <path + d="m 236.44594,199.0625 a 6.5084434,3.0820823 0 1 1 -13.01688,0 6.5084434,3.0820823 0 1 1 13.01688,0 z" + transform="matrix(0.2042516,-0.1035605,0.2395168,0.4723972,5.7547955,30.286555)" + id="path8984-2" + style="display:inline;overflow:visible;visibility:visible;opacity:0.2857143;fill:url(#linearGradient8990-4-8);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;enable-background:accumulate" + inkscape:connector-curvature="0" /> + <path + d="m 236.99305,199.0625 a 7.0555515,2.1400476 0 1 1 -14.1111,0 7.0555515,2.1400476 0 1 1 14.1111,0 z" + transform="matrix(0.2750159,-0.1394397,0.5158824,1.0174708,-65.353496,-69.300635)" + id="path8986-0" + style="display:inline;overflow:visible;visibility:visible;opacity:0.62068936;fill:url(#linearGradient8992-2-5);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;filter:url(#filter8906-3-4);enable-background:accumulate" + inkscape:connector-curvature="0" /> + <path + d="m 217.05754,201.94027 c 3.76948,3.48424 26.97122,8.91123 25.25496,0.80973 -3.31737,5.32326 -18.78423,1.29291 -25.25496,-0.80973 z" + transform="matrix(0.2042516,-0.1035605,0.2395168,0.4723972,6.2599008,30.649764)" + id="path8988-7" + style="fill:url(#radialGradient8994-0-8);fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter8980-1-63)" + inkscape:connector-curvature="0" /> <path - style="opacity:0.2857143;fill:url(#linearGradient9023-6-0);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="path9006" - transform="matrix(0.5296484,0,0,0.5296484,-84.4165,-4.7277245)" - d="m 237.875,199.0625 a 7.9375,2.4375 0 1 1 -15.875,0 7.9375,2.4375 0 1 1 15.875,0 z" /> + d="m 68.25,186 c 0,-0.62057 38.84622,11.83854 45.5,18.5 -5.47122,-5.33854 -33.159709,-17.61609 -37.375,-17.75 -4.215291,-0.13391 -7.625,-0.5 -8.125,-0.75 z" + transform="matrix(0.5296484,0,0,0.5296484,-11.722258,-13.864159)" + id="path8996-6" + style="fill:url(#radialGradient9004-6-0);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <g + transform="matrix(0.8790148,-0.1929959,0.2338341,0.6959295,-20.209533,36.725557)" + id="g9018-6"> + <path + d="m 237.875,199.0625 a 7.9375,2.4375 0 1 1 -15.875,0 7.9375,2.4375 0 1 1 15.875,0 z" + transform="matrix(0.5296484,0,0,0.5296484,-84.4165,-4.7277245)" + id="path9006-8" + style="display:inline;overflow:visible;visibility:visible;opacity:0.2857143;fill:url(#linearGradient9023-6-6);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;enable-background:accumulate" + inkscape:connector-curvature="0" /> + <path + d="m 237.875,199.0625 a 7.9375,2.4375 0 1 1 -15.875,0 7.9375,2.4375 0 1 1 15.875,0 z" + transform="matrix(0.7131486,0,0,1.1407811,-126.61008,-124.8917)" + id="path9008-0" + style="display:inline;overflow:visible;visibility:visible;opacity:0.62068936;fill:url(#linearGradient9025-1-9);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;filter:url(#filter8906-3-4);enable-background:accumulate" + inkscape:connector-curvature="0" /> + </g> <path - style="opacity:0.62068942;fill:url(#linearGradient9025-1-1);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter8906-3-7);enable-background:accumulate" - id="path9008" - transform="matrix(0.7131486,0,0,1.1407811,-126.61008,-124.8917)" - d="m 237.875,199.0625 a 7.9375,2.4375 0 1 1 -15.875,0 7.9375,2.4375 0 1 1 15.875,0 z" /> + d="m 80.5,220.0625 c 0,0 2.10339,5.65078 7.875,5.9375 5.83887,0.29006 12.50324,-7.00698 13.0625,-9.625 -1,2.25 -6.590334,9.03328 -13.8125,8.9375 -4.099862,-0.0544 -7.125,-5.25 -7.125,-5.25 z" + transform="matrix(0.5296484,0,0,0.5296484,-11.622949,-14.42691)" + id="path9038-1" + style="opacity:0.61576353;fill:url(#radialGradient9046-1-8);fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter9068-2-2)" + inkscape:connector-curvature="0" /> + <path + d="m 63.40625,10.21875 c -3.098181,0 -6.134601,1.122042 -8.28125,3.3125 l -41.1875,42.1875 c -3.76562,3.76562 -4.6702413,6.23069 -4.4375,7.625 0.1163706,0.697155 0.4585994,1.303027 1.1875,1.9375 0.728901,0.634473 1.831495,1.256389 3.15625,1.8125 2.649511,1.112222 6.217961,2.008085 9.71875,2.96875 3.500789,0.960665 6.929812,1.974626 9.53125,3.625 0.396623,0.258266 0.769088,0.576468 1.03125,1.03125 0.262162,0.454782 0.354216,1.056088 0.25,1.5625 -0.208431,1.012824 -0.83202,1.546985 -1.46875,2.03125 -1.27346,0.96853 -3.023257,1.773229 -4.78125,2.625 -1.757993,0.851771 -3.524925,1.723242 -4.40625,2.4375 -0.440663,0.357129 -0.600112,0.678133 -0.59375,0.65625 0.0064,-0.02188 -0.116851,-0.273101 0.09375,-0.0625 0.551764,0.56709 2.274075,1.538165 4.46875,2.40625 2.194675,0.868085 4.88065,1.745624 7.59375,2.625 2.7131,0.879376 5.4575,1.749959 7.78125,2.65625 2.32375,0.906291 4.217694,1.748944 5.46875,3 0.622681,0.639978 1.062632,1.435956 1.15625,2.25 0.09362,0.814044 -0.126809,1.578032 -0.4375,2.21875 -0.621382,1.28144 -1.620313,2.26719 -2.53125,3.21875 -0.910938,0.95156 -1.736226,1.86034 -2.03125,2.46875 -0.147512,0.3042 -0.170347,0.50242 -0.15625,0.625 0.0141,0.12258 0.03518,0.24623 0.3125,0.53125 A 1.4566768,1.4566768 0 0 1 44.875,106 c 1.193594,1.2618 3.787002,1.43924 6.71875,2.125 1.465874,0.34288 2.998909,0.86196 4.3125,2 1.313591,1.13804 2.299435,2.87059 2.71875,5.21875 0.176459,0.99459 0.702722,1.4788 1.96875,1.875 1.266028,0.3962 3.194353,0.46554 5.3125,0.15625 4.236295,-0.61859 9.260035,-2.69532 12.15625,-5.09375 0.17999,-0.15299 0.129956,-0.11255 0.1875,-0.1875 -0.194805,-0.13939 -0.651644,-0.43652 -1.40625,-0.8125 -0.891527,-0.4442 -1.944708,-0.85956 -2.75,-1.875 -0.402646,-0.50772 -0.679877,-1.30934 -0.5625,-2.09375 0.117377,-0.78441 0.546832,-1.43702 1.125,-2.03125 4.745751,-4.79848 9.421937,-5.944136 12.9375,-6.875 1.757782,-0.465432 3.229292,-0.891233 4.34375,-1.59375 1.114458,-0.702517 1.98508,-1.663728 2.71875,-3.53125 0.08087,-0.202174 0.07855,-0.260846 -0.03125,-0.5 C 94.515197,92.542096 94.220541,92.159521 93.75,91.75 92.808918,90.930959 91.239577,90.050804 89.6875,89.1875 88.135423,88.324196 86.627034,87.519262 85.53125,86.5 84.983358,85.990369 84.409233,85.348367 84.34375,84.375 84.27827,83.401633 84.916318,82.523367 85.65625,82 88.401968,80.06679 92.552528,78.595094 97.0625,77.03125 101.57247,75.467406 106.42363,73.849125 110.375,72 c 3.95137,-1.849125 6.85729,-3.978669 7.78125,-6.125 0.46198,-1.073165 0.54663,-2.158606 0.0625,-3.5625 -0.48413,-1.403894 -1.58958,-3.120831 -3.5625,-5.09375 L 72,13.5625 c -0.01071,-0.0101 -0.02051,-0.02119 -0.03125,-0.03125 -2.357722,-2.207738 -5.478371,-3.3125 -8.5625,-3.3125 z m 45.9375,80 c -2.63522,0.09513 -5.05952,1.301393 -6.09375,3.1875 0.29381,0.110524 0.55838,0.234969 1.03125,0.34375 1.37562,0.316455 3.29543,0.520736 5.1875,0.5625 1.89207,0.04176 3.78415,-0.117472 4.9375,-0.4375 0.50487,-0.14009 0.77236,-0.281778 0.90625,-0.375 -0.2558,-1.091098 -0.86487,-1.862126 -1.90625,-2.4375 -1.07862,-0.595951 -2.55669,-0.898111 -4.0625,-0.84375 z m -70.5,9.0625 c -2.089872,-0.145348 -4.716548,0.686551 -6,1.71875 -0.641726,0.5161 -0.913269,0.99441 -0.9375,1.3125 -0.02423,0.31809 0.07726,0.74199 0.9375,1.46875 a 1.4566768,1.4566768 0 0 1 0,0.0312 c 1.352809,1.17 2.882256,1.04802 4.625,0.0937 1.460951,-0.79997 2.757201,-2.30075 3.625,-3.875 -0.585032,-0.377341 -1.284532,-0.682853 -2.25,-0.75 z m 61,0.625 c -0.447303,0.5686 -0.690902,1.09797 -0.71875,1.46875 -0.03844,0.51176 0.106611,0.90723 0.5,1.28125 0.73729,0.70099 2.33912,1.00278 3.96875,0.125 -0.0322,-0.1891 -0.0933,-0.47591 -0.34375,-0.84375 -0.4999,-0.73414 -1.6686,-1.5251 -3.40625,-2.03125 z" + id="87235-3" + style="fill:none;stroke:url(#radialGradient11553-3-1);stroke-width:0.48830673;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter9298-4-5)" + inkscape:connector-curvature="0" /> + <path + d="m 95.5,172 c -5.090606,1.50191 -21.592018,7.73713 -19.25,12.5 2.243595,4.56272 40.61138,6.40132 46.5,20 2.5679,5.93009 -5.89238,10.40326 -3.75,16.5 1.64973,4.69477 14.41196,16.49084 22.48603,22.06781 6.33298,4.37435 14.65096,-3.52244 11.26397,-10.06781 -5.39589,-10.42759 18.44266,-23.19912 29.25,-29 6.30524,-3.38436 -13,-20 -13,-20 0,0 -73.5,-12 -73.5,-12 z" + transform="matrix(0.4883067,0,0,0.4883067,-5.8104012,-7.7042521)" + id="path5897-0" + style="opacity:0.32512315;fill:url(#linearGradient5905-4-7);fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter5983-8-5)" + inkscape:connector-curvature="0" /> + <path + d="m 41.742167,78.533037 c 2.231933,1.639226 6.636757,0.650538 9.282124,1.841759 6.349518,2.859218 14.154941,6.045427 12.718568,0.404555 0,0 -1.615771,1.342042 -1.615771,1.342042 0,0 -0.03153,-2.557545 -0.03153,-2.557545 0,0 -3.751977,0.916294 -3.751977,0.916294 0,0 -2.906173,-2.332759 -4.238526,-3.101995 -0.27829,-0.160669 -1.707695,1.292815 -1.707695,1.292815 0,0 -0.25697,-1.543804 -0.25697,-1.543804 -1.857372,-0.197638 -3.696159,-0.284805 -5.31515,-0.271821 -3.880942,0.03112 -6.499059,0.637741 -5.083074,1.6777 z" + id="path5783-7" + style="fill:url(#linearGradient5801-2-8);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + d="m 182.75,187.25 c -1.75981,6.4783 21.62776,15.27989 19.875,19.75 -3.85895,9.84158 -24.97596,3.13755 -41.125,23.75 -2.31318,2.95251 3.25,13.5 2.5,12.25 -0.75,-1.25 -6.4649,-9.96285 -5,-14.25 4.59417,-13.44525 49.0128,-18.45749 40.875,-24.875 -4.67988,-3.69058 -21.50546,-13.88721 -17.125,-16.625 z" + transform="matrix(0.4883067,0,0,0.4883067,-5.8104012,-7.7042521)" + id="path5803-5" + style="opacity:0.47783251;fill:url(#radialGradient5811-3-0);fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter5845-5-1)" + inkscape:connector-curvature="0" /> + <path + d="m 236.5,201.1875 a 2.5625,1.0625 0 1 1 -5.125,0 2.5625,1.0625 0 1 1 5.125,0 z" + transform="matrix(0.4883067,0,0,0.4883067,-6.3597463,-8.0094438)" + id="path6041-9" + style="display:inline;overflow:visible;visibility:visible;opacity:0.58620689;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;enable-background:accumulate" + inkscape:connector-curvature="0" /> + <path + d="m 236.5,201.1875 a 2.5625,1.0625 0 1 1 -5.125,0 2.5625,1.0625 0 1 1 5.125,0 z" + transform="matrix(0.3096579,0,0,0.4883067,27.528443,1.5735759)" + id="path6043-3" + style="display:inline;overflow:visible;visibility:visible;opacity:0.58620689;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;enable-background:accumulate" + inkscape:connector-curvature="0" /> + <path + d="m 236.5,201.1875 a 2.5625,1.0625 0 1 1 -5.125,0 2.5625,1.0625 0 1 1 5.125,0 z" + transform="matrix(0.5478563,0,0,0.4883067,-92.102233,1.115795)" + id="path6045-5" + style="display:inline;overflow:visible;visibility:visible;opacity:0.58620689;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;enable-background:accumulate" + inkscape:connector-curvature="0" /> + <path + d="m 36.672282,76.528654 c -7.152988,4.424107 -18.274031,6.034229 -6.103834,8.972635 -1.449712,-3.2281 3.138581,-2.872021 6.103834,-8.972635 z" + id="path5049-8" + style="display:inline;overflow:visible;visibility:visible;opacity:0.25123153;fill:url(#linearGradient5822-7-1);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.04789329;marker:none;enable-background:accumulate" + inkscape:connector-curvature="0" /> + <path + d="m 8.8342799,171.64721 c 0,0 22.5917801,-2.12795 27.8180201,-8.64645 3.05755,-3.81358 -12.15146,-8.2638 -8.86827,-12 12.35008,-14.0541 22.73076,-13.46729 37.05025,-19.35355 14.31949,-5.88626 9.03544,-8.76906 4.40381,-11.35355 -7.9325,-4.4264 -25.58722,-9.14237 -19.74696,-19.64645 5.87688,-10.569936 57.34315,-25.249996 57.34315,-25.249996 15.59619,-5.32843 13.63909,-14.96447 6,-23 l -46,-45.7499997 c 0,0 2.28296,43.3886497 -7,61.9999997 -11.4715,22.99914 -72.54408,48.661766 -47,51.499996 9,1 13.32065,4.0705 17,11 7.57631,14.26883 -21.0000001,40.5 -21.0000001,40.5 z" + transform="matrix(0.48830674,0,0,0.48830674,57.750397,32.997477)" + id="path10207-0" + style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.36315792;fill:url(#linearGradient1539-7);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;filter:url(#filter10997-7-2-1);enable-background:accumulate" + inkscape:connector-curvature="0" /> </g> - <path - style="opacity:0.61576353;fill:url(#radialGradient9046-1-0);fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter9068-2-7)" - id="path9038" - transform="matrix(0.5296484,0,0,0.5296484,-11.622949,-14.42691)" - d="m 80.5,220.0625 c 0,0 2.10339,5.65078 7.875,5.9375 5.83887,0.29006 12.50324,-7.00698 13.0625,-9.625 -1,2.25 -6.590334,9.03328 -13.8125,8.9375 -4.099862,-0.0544 -7.125,-5.25 -7.125,-5.25 z" /> - <path - style="fill:none;stroke:url(#radialGradient11553-3-4);stroke-width:0.48830673;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter9298-4-2)" - id="87235" - d="m 63.40625,10.21875 c -3.098181,0 -6.134601,1.122042 -8.28125,3.3125 l -41.1875,42.1875 c -3.76562,3.76562 -4.6702413,6.23069 -4.4375,7.625 0.1163706,0.697155 0.4585994,1.303027 1.1875,1.9375 0.728901,0.634473 1.831495,1.256389 3.15625,1.8125 2.649511,1.112222 6.217961,2.008085 9.71875,2.96875 3.500789,0.960665 6.929812,1.974626 9.53125,3.625 0.396623,0.258266 0.769088,0.576468 1.03125,1.03125 0.262162,0.454782 0.354216,1.056088 0.25,1.5625 -0.208431,1.012824 -0.83202,1.546985 -1.46875,2.03125 -1.27346,0.96853 -3.023257,1.773229 -4.78125,2.625 -1.757993,0.851771 -3.524925,1.723242 -4.40625,2.4375 -0.440663,0.357129 -0.600112,0.678133 -0.59375,0.65625 0.0064,-0.02188 -0.116851,-0.273101 0.09375,-0.0625 0.551764,0.56709 2.274075,1.538165 4.46875,2.40625 2.194675,0.868085 4.88065,1.745624 7.59375,2.625 2.7131,0.879376 5.4575,1.749959 7.78125,2.65625 2.32375,0.906291 4.217694,1.748944 5.46875,3 0.622681,0.639978 1.062632,1.435956 1.15625,2.25 0.09362,0.814044 -0.126809,1.578032 -0.4375,2.21875 -0.621382,1.28144 -1.620313,2.26719 -2.53125,3.21875 -0.910938,0.95156 -1.736226,1.86034 -2.03125,2.46875 -0.147512,0.3042 -0.170347,0.50242 -0.15625,0.625 0.0141,0.12258 0.03518,0.24623 0.3125,0.53125 A 1.4566768,1.4566768 0 0 1 44.875,106 c 1.193594,1.2618 3.787002,1.43924 6.71875,2.125 1.465874,0.34288 2.998909,0.86196 4.3125,2 1.313591,1.13804 2.299435,2.87059 2.71875,5.21875 0.176459,0.99459 0.702722,1.4788 1.96875,1.875 1.266028,0.3962 3.194353,0.46554 5.3125,0.15625 4.236295,-0.61859 9.260035,-2.69532 12.15625,-5.09375 0.17999,-0.15299 0.129956,-0.11255 0.1875,-0.1875 -0.194805,-0.13939 -0.651644,-0.43652 -1.40625,-0.8125 -0.891527,-0.4442 -1.944708,-0.85956 -2.75,-1.875 -0.402646,-0.50772 -0.679877,-1.30934 -0.5625,-2.09375 0.117377,-0.78441 0.546832,-1.43702 1.125,-2.03125 4.745751,-4.79848 9.421937,-5.944136 12.9375,-6.875 1.757782,-0.465432 3.229292,-0.891233 4.34375,-1.59375 1.114458,-0.702517 1.98508,-1.663728 2.71875,-3.53125 0.08087,-0.202174 0.07855,-0.260846 -0.03125,-0.5 C 94.515197,92.542096 94.220541,92.159521 93.75,91.75 92.808918,90.930959 91.239577,90.050804 89.6875,89.1875 88.135423,88.324196 86.627034,87.519262 85.53125,86.5 84.983358,85.990369 84.409233,85.348367 84.34375,84.375 84.27827,83.401633 84.916318,82.523367 85.65625,82 88.401968,80.06679 92.552528,78.595094 97.0625,77.03125 101.57247,75.467406 106.42363,73.849125 110.375,72 c 3.95137,-1.849125 6.85729,-3.978669 7.78125,-6.125 0.46198,-1.073165 0.54663,-2.158606 0.0625,-3.5625 -0.48413,-1.403894 -1.58958,-3.120831 -3.5625,-5.09375 L 72,13.5625 c -0.01071,-0.0101 -0.02051,-0.02119 -0.03125,-0.03125 -2.357722,-2.207738 -5.478371,-3.3125 -8.5625,-3.3125 z m 45.9375,80 c -2.63522,0.09513 -5.05952,1.301393 -6.09375,3.1875 0.29381,0.110524 0.55838,0.234969 1.03125,0.34375 1.37562,0.316455 3.29543,0.520736 5.1875,0.5625 1.89207,0.04176 3.78415,-0.117472 4.9375,-0.4375 0.50487,-0.14009 0.77236,-0.281778 0.90625,-0.375 -0.2558,-1.091098 -0.86487,-1.862126 -1.90625,-2.4375 -1.07862,-0.595951 -2.55669,-0.898111 -4.0625,-0.84375 z m -70.5,9.0625 c -2.089872,-0.145348 -4.716548,0.686551 -6,1.71875 -0.641726,0.5161 -0.913269,0.99441 -0.9375,1.3125 -0.02423,0.31809 0.07726,0.74199 0.9375,1.46875 a 1.4566768,1.4566768 0 0 1 0,0.0312 c 1.352809,1.17 2.882256,1.04802 4.625,0.0937 1.460951,-0.79997 2.757201,-2.30075 3.625,-3.875 -0.585032,-0.377341 -1.284532,-0.682853 -2.25,-0.75 z m 61,0.625 c -0.447303,0.5686 -0.690902,1.09797 -0.71875,1.46875 -0.03844,0.51176 0.106611,0.90723 0.5,1.28125 0.73729,0.70099 2.33912,1.00278 3.96875,0.125 -0.0322,-0.1891 -0.0933,-0.47591 -0.34375,-0.84375 -0.4999,-0.73414 -1.6686,-1.5251 -3.40625,-2.03125 z" /> - <path - style="opacity:0.32512315;fill:url(#linearGradient5905-4-0);fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter5983-8-5)" - id="path5897" - transform="matrix(0.4883067,0,0,0.4883067,-5.8104012,-7.7042521)" - d="m 95.5,172 c -5.090606,1.50191 -21.592018,7.73713 -19.25,12.5 2.243595,4.56272 40.61138,6.40132 46.5,20 2.5679,5.93009 -5.89238,10.40326 -3.75,16.5 1.64973,4.69477 14.41196,16.49084 22.48603,22.06781 6.33298,4.37435 14.65096,-3.52244 11.26397,-10.06781 -5.39589,-10.42759 18.44266,-23.19912 29.25,-29 6.30524,-3.38436 -13,-20 -13,-20 0,0 -73.5,-12 -73.5,-12 z" /> - <path - style="fill:url(#linearGradient5801-2-0);fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path5783" - d="m 41.742167,78.533037 c 2.231933,1.639226 6.636757,0.650538 9.282124,1.841759 6.349518,2.859218 14.154941,6.045427 12.718568,0.404555 0,0 -1.615771,1.342042 -1.615771,1.342042 0,0 -0.03153,-2.557545 -0.03153,-2.557545 0,0 -3.751977,0.916294 -3.751977,0.916294 0,0 -2.906173,-2.332759 -4.238526,-3.101995 -0.27829,-0.160669 -1.707695,1.292815 -1.707695,1.292815 0,0 -0.25697,-1.543804 -0.25697,-1.543804 -1.857372,-0.197638 -3.696159,-0.284805 -5.31515,-0.271821 -3.880942,0.03112 -6.499059,0.637741 -5.083074,1.6777 z" /> - <path - style="opacity:0.47783251;fill:url(#radialGradient5811-3-8);fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter5845-5-6)" - id="path5803" - transform="matrix(0.4883067,0,0,0.4883067,-5.8104012,-7.7042521)" - d="m 182.75,187.25 c -1.75981,6.4783 21.62776,15.27989 19.875,19.75 -3.85895,9.84158 -24.97596,3.13755 -41.125,23.75 -2.31318,2.95251 3.25,13.5 2.5,12.25 -0.75,-1.25 -6.4649,-9.96285 -5,-14.25 4.59417,-13.44525 49.0128,-18.45749 40.875,-24.875 -4.67988,-3.69058 -21.50546,-13.88721 -17.125,-16.625 z" /> - <path - style="opacity:0.58620689;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="path6041" - transform="matrix(0.4883067,0,0,0.4883067,-6.3597463,-8.0094438)" - d="m 236.5,201.1875 a 2.5625,1.0625 0 1 1 -5.125,0 2.5625,1.0625 0 1 1 5.125,0 z" /> - <path - style="opacity:0.58620689;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="path6043" - transform="matrix(0.3096579,0,0,0.4883067,27.528443,1.5735759)" - d="m 236.5,201.1875 a 2.5625,1.0625 0 1 1 -5.125,0 2.5625,1.0625 0 1 1 5.125,0 z" /> - <path - style="opacity:0.58620689;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="path6045" - transform="matrix(0.5478563,0,0,0.4883067,-92.102233,1.115795)" - d="m 236.5,201.1875 a 2.5625,1.0625 0 1 1 -5.125,0 2.5625,1.0625 0 1 1 5.125,0 z" /> - <path - style="opacity:0.25123153;fill:url(#linearGradient5822-7-6);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.04789329;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="path5049" - d="m 36.672282,76.528654 c -7.152988,4.424107 -18.274031,6.034229 -6.103834,8.972635 -1.449712,-3.2281 3.138581,-2.872021 6.103834,-8.972635 z" /> - <path - style="opacity:0.36315792;color:#000000;fill:url(#linearGradient1539-7);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter10997-7-2-5);enable-background:accumulate" - id="path10207" - transform="matrix(0.48830674,0,0,0.48830674,57.750397,32.997477)" - d="m 8.8342799,171.64721 c 0,0 22.5917801,-2.12795 27.8180201,-8.64645 3.05755,-3.81358 -12.15146,-8.2638 -8.86827,-12 12.35008,-14.0541 22.73076,-13.46729 37.05025,-19.35355 14.31949,-5.88626 9.03544,-8.76906 4.40381,-11.35355 -7.9325,-4.4264 -25.58722,-9.14237 -19.74696,-19.64645 5.87688,-10.569936 57.34315,-25.249996 57.34315,-25.249996 15.59619,-5.32843 13.63909,-14.96447 6,-23 l -46,-45.7499997 c 0,0 2.28296,43.3886497 -7,61.9999997 -11.4715,22.99914 -72.54408,48.661766 -47,51.499996 9,1 13.32065,4.0705 17,11 7.57631,14.26883 -21.0000001,40.5 -21.0000001,40.5 z" /> </g> + <g + id="g4453" + transform="translate(0,-92)"> + <text + sodipodi:linespacing="125%" + id="text4431" + y="56.595001" + x="113.27875" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33.75px;line-height:125%;font-family:Calluna;-inkscape-font-specification:Calluna;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="56.595001" + x="113.27875" + id="tspan4433" + sodipodi:role="line">INKSCAPE</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4443" + y="84.804001" + x="144.53799" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="84.804001" + x="144.53799" + id="tspan4445" + sodipodi:role="line">Draw Freely.</tspan></text> + </g> + <g + style="display:inline" + id="g4485"> + <rect + y="162" + x="32" + height="1" + width="960" + id="rect4461" + style="opacity:1;fill:#262626;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1" /> + <rect + rx="10" + y="110" + x="32" + height="52" + width="960" + id="rect4459" + style="opacity:1;fill:url(#linearGradient4475);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1" /> + <rect + style="opacity:1;fill:url(#linearGradient4483);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1" + id="rect4463" + width="960" + height="42" + x="32" + y="120" /> + </g> + <g + id="g4543"> + <rect + y="110" + x="113" + height="52" + width="1" + id="rect4531" + style="opacity:1;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1" /> + <rect + style="opacity:1;fill:#5a5a5a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1" + id="rect4533" + width="1" + height="52" + x="114" + y="110" /> + </g> + <g + style="display:inline" + id="g4649"> + <rect + y="733" + x="32" + height="4" + width="960" + id="rect4625" + style="opacity:1;fill:#0d0d0d;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1" /> + <rect + y="737" + x="32" + height="50" + width="960" + id="rect4629" + style="opacity:1;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1" /> + <rect + rx="10" + style="opacity:1;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1" + id="rect4627" + width="960" + height="60" + x="32" + y="737" /> + <rect + y="737" + x="32" + height="60" + width="960" + id="rect4631" + style="opacity:1;fill:url(#radialGradient4639);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1" + rx="10" /> + </g> + <use + style="display:inline" + transform="matrix(0.5,0,0,0.5,32,-8)" + height="100%" + width="100%" + id="use4705" + xlink:href="#g17092" + y="0" + x="0" /> + <rect + style="display:inline;opacity:1;fill:url(#linearGradient4681);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1" + id="rect4669" + width="1024" + height="75" + x="0" + y="0" /> + <rect + y="163" + x="32" + height="100" + width="960" + id="rect4693" + style="display:inline;opacity:1;fill:url(#linearGradient4703);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1" /> </g> - <style - id="style26" - type="text/css" /> - <style - id="style26-8" - type="text/css" /> </svg> diff --git a/packaging/macosx/dmg_set_style.scpt b/packaging/macosx/dmg_set_style.scpt Binary files differindex 7c010d102..b27a6860d 100755 --- a/packaging/macosx/dmg_set_style.scpt +++ b/packaging/macosx/dmg_set_style.scpt diff --git a/packaging/macosx/inkscape.ds_store b/packaging/macosx/inkscape.ds_store Binary files differindex c4bc9e32d..469da6fcc 100644 --- a/packaging/macosx/inkscape.ds_store +++ b/packaging/macosx/inkscape.ds_store diff --git a/packaging/macosx/osx-app.sh b/packaging/macosx/osx-app.sh index ef4301c17..8931aca77 100755 --- a/packaging/macosx/osx-app.sh +++ b/packaging/macosx/osx-app.sh @@ -15,10 +15,14 @@ # Kees Cook <kees@outflux.net> # Michael Wybrow <mjwybrow@users.sourceforge.net> # Jean-Olivier Irisson <jo.irisson@gmail.com> +# Liam P. White <inkscapebrony@gmail.com> +# ~suv <suv-sf@users.sourceforge.net> # # Copyright (C) 2005 Kees Cook # Copyright (C) 2005-2009 Michael Wybrow # Copyright (C) 2007-2009 Jean-Olivier Irisson +# Copyright (C) 2014 Liam P. White +# Copyright (C) 2014 ~suv # # Released under GNU GPL, read the file 'COPYING' for more information # @@ -26,17 +30,19 @@ # https://gnunet.org/svn/GNUnet/contrib/OSX/build_app # # NB: -# When packaging Inkscape for OS X, configure should be run with the +# When packaging Inkscape for OS X, configure should be run with the # "--enable-osxapp" option which sets the correct paths for support # files inside the app bundle. # # Defaults -strip=false -add_python=false +strip_build=false +add_wrapper=true +add_python=true python_dir="" -# If LIBPREFIX is not already set (by osx-build.sh for example) set it to blank (one should use the command line argument to set it correctly) +# If LIBPREFIX is not already set (by osx-build.sh for example) set it to blank +# (one should use the command line argument to set it correctly) if [ -z $LIBPREFIX ]; then LIBPREFIX="" fi @@ -63,13 +69,15 @@ Create an app bundle for OS X \033[1m-l,--libraries\033[0m specify the path to the librairies Inkscape depends on (typically /sw or /opt/local) - \033[1m-b--binary\033[0m + \033[1m-b,--binary\033[0m specify the path to Inkscape's binary. By default it is in Build/bin/ at the base of the source code directory \033[1m-p,--plist\033[0m specify the path to Info.plist. Info.plist can be found in the base directory of the source code once configure has been run + \033[1m-v,--verbose\033[0m + Verbose mode. \033[1mEXAMPLE\033[0m $0 -s -py ~/python-modules -l /opt/local -b ../../Build/bin/inkscape -p ../../Info.plist @@ -87,7 +95,7 @@ do python_dir="$2" shift 1 ;; -s) - strip=true ;; + strip_build=true ;; -l|--libraries) LIBPREFIX="$2" shift 1 ;; @@ -97,11 +105,13 @@ do -p|--plist) plist="$2" shift 1 ;; + -v|--verbose) + verbose_mode=true ;; -h|--help) help exit 0 ;; *) - echo "Invalid command line option: $1" + echo "Invalid command line option: $1" exit 2 ;; esac shift 1 @@ -109,7 +119,9 @@ done echo -e "\n\033[1mCREATE INKSCAPE APP BUNDLE\033[0m\n" + # Safety tests +#---------------------------------------------------------- if [ "x$binary" == "x" ]; then echo "Inkscape binary path not specified." >&2 @@ -131,70 +143,181 @@ if [ ! -f "$plist" ]; then exit 1 fi -PYTHONPACKURL="http://inkscape.modevia.com/macosx-snap/Python-packages.dmg" +if [ ${add_python} = "true" ]; then + if [ -z "$python_dir" ]; then + echo "Python modules will be copied from MacPorts tree." >&2 + else + if [ ! -e "$python_dir" ]; then + echo "Python modules directory \""$python_dir"\" not found." >&2 + exit 1 + else + if [ -e "$python_dir/i386" -o -e "$python_dir/ppc" ]; then + echo "Outdated structure in custom python modules detected," >&2 + echo "not compatible with current packaging." >&2 + exit 1 + else + echo "Python modules will be copied from $python_dir." >&2 + fi + fi + fi +fi + +if [ ! -e "$LIBPREFIX" ]; then + echo "Cannot find the directory containing the libraires: $LIBPREFIX" >&2 + exit 1 +fi + +if [ "x$(otool -L "$binary" | grep "libgtk-quartz")" != "x" ]; then + if ! pkg-config --exists gtk+-quartz-2.0; then + echo "Missing GTK+ backend -- please install gtk2 and its dependencies with variant '+quartz' and try again." >&2 + exit 1 + fi + _backend="quartz" +else + if ! pkg-config --exists gtk+-x11-2.0; then + echo "Missing GTK+ backend -- please install gtk2 and its dependencies with variant '+x11' and try again." >&2 + exit 1 + fi + _backend="x11" +fi -if [ "x$python_dir" == "x" ]; then - echo "Python modules directory not specified." >&2 - echo "Python modules can be downloaded from:" >&2 - echo " $PYTHONPACKURL" >&2 +if ! pkg-config --exists gtk-engines-2; then + echo "Missing gtk-engines2 -- please install gtk-engines2 and try again." >&2 exit 1 fi -if [ ! -e "$python_dir/i386" -o ! -e "$python_dir/ppc" ]; then - echo "Directory does not appear to contain the i386 and ppc python modules:" >&2 - echo " $python_dir" >&2 - echo "Python modules can be downloaded from:" >&2 - echo " $PYTHONPACKURL" >&2 +if [ ! -e "$LIBPREFIX/lib/gtk-2.0/$(pkg-config --variable=gtk_binary_version gtk+-2.0)/engines/libmurrine.so" ]; then + echo "Missing gtk2-murrine -- please install gtk2-murrine and try again." >&2 exit 1 fi -if [ ! -e "$LIBPREFIX" ]; then - echo "Cannot find the directory containing the libraires: $LIBPREFIX" >&2 +if [ ! -e "$LIBPREFIX/lib/gtk-2.0/$(pkg-config --variable=gtk_binary_version gtk+-2.0)/engines/libadwaita.so" ]; then + echo "Missing gnome-themes-standard -- please install gnome-themes-standard and try again." >&2 exit 1 fi -if ! pkg-config --exists gtk-engines-2; then - echo "Missing gtk-engines2 -- please install gtk-engines2 and try again." >&2 +if [ ! -e "$LIBPREFIX/share/icons/hicolor/index.theme" ]; then + echo "Missing hicolor-icon-theme -- please install hicolor-icon-theme and try again." >&2 exit 1 fi -if ! pkg-config --exists gnome-vfs-2.0; then - echo "Missing gnome-vfs2 -- please install gnome-vfs2 and try again." >&2 +if ! pkg-config --exists icon-naming-utils; then + echo "Missing icon-naming-utils -- please install icon-naming-utils and try again." >&2 exit 1 fi +# if [ "$default_theme" != "default" ] ; then +# if ! pkg-config --exists gnome-icon-theme; then +# echo "Missing gnome-icon-theme -- please install gnome-icon-theme and try again." >&2 +# exit 1 +# fi +# +# if ! pkg-config --exists gnome-icon-theme-symbolic; then +# echo "Missing gnome-icon-theme-symbolic -- please install gnome-icon-theme-symbolic and try again." >&2 +# exit 1 +# fi +# fi + +unset WITH_GNOME_VFS +if ! pkg-config --exists gnome-vfs-2.0; then + echo "Missing gnome-vfs2 -- some features will be disabled" >&2 +else + WITH_GNOME_VFS=true +fi + +# unset WITH_DBUS +# if ! pkg-config --exists dbus-1; then +# echo "Missing dbus -- some features will be disabled" >&2 +# else +# WITH_DBUS=true +# fi +# +# unset WITH_GVFS +# if [ ! -e "$LIBPREFIX/libexec/gvfsd" ]; then +# echo "Missing gvfs -- some features will be disabled" >&2 +# elif [ ! -z "$WITH_DBUS" ]; then +# WITH_GVFS=true +# else +# echo "Missing dbus for gvfs -- some features will be disabled" >&2 +# fi + if ! pkg-config --exists poppler; then echo "Missing poppler -- please install poppler and try again." >&2 exit 1 fi -if ! pkg-config --modversion ImageMagick >/dev/null 2>&1; then +if ! pkg-config --exists ImageMagick; then echo "Missing ImageMagick -- please install ImageMagick and try again." >&2 exit 1 fi if [ ! -e "$LIBPREFIX/lib/aspell-0.60/en.dat" ]; then echo "Missing aspell en dictionary -- please install at least 'aspell-dict-en', but" >&2 - echo "preferably all dictionaries ('aspell-dict-*') and try again." >&2 + echo "preferably more dictionaries ('aspell-dict-*') and try again." >&2 exit 1 fi +# awk on Leopard fails in fixlib(), test earlier and require gawk if test fails +awk_test="$(echo "/lib" | awk -F/ '{for (i=1;i<NF;i++) sub($i,".."); sub($NF,"",$0); print $0}')" +if [ -z "$awk_test" ]; then + if [ ! -x "$LIBPREFIX/bin/gawk" ]; then + echo "awk provided by system is too old, please install gawk and try again" >&2 + exit 1 + else + awk_cmd="$LIBPREFIX/bin/gawk" + fi +else + awk_cmd="awk" +fi +unset awk_test + -# Handle some version specific details. -VERSION=`/usr/bin/sw_vers | grep ProductVersion | cut -f2 -d'.'` -if [ "$VERSION" -ge "4" ]; then - # We're on Tiger (10.4) or later. - # XCode behaves a little differently in Tiger and later. - XCODEFLAGS="-configuration Deployment" - SCRIPTEXECDIR="ScriptExec/build/Deployment/ScriptExec.app/Contents/MacOS" - EXTRALIBS="" +# OS X version +#---------------------------------------------------------- +OSXVERSION="$(/usr/bin/sw_vers | grep ProductVersion | cut -f2)" +OSXMINORVER="$(cut -d. -f 1,2 <<< $OSXVERSION)" +OSXMINORNO="$(cut -d. -f2 <<< $OSXVERSION)" +OSXPOINTNO="$(cut -d. -f3 <<< $OSXVERSION)" +ARCH="$(uname -a | awk '{print $NF;}')" + +# guess default build_arch (MacPorts) +if [ "$OSXMINORNO" -ge "6" ]; then + if [ "$(sysctl -n hw.cpu64bit_capable 2>/dev/null)" = "1" ]; then + _build_arch="x86_64" + else + _build_arch="i386" + fi else - # Panther (10.3) or earlier. - XCODEFLAGS="-buildstyle Deployment" - SCRIPTEXECDIR="ScriptExec/build/ScriptExec.app/Contents/MacOS" - EXTRALIBS="" + if [ $ARCH = "powerpc" ]; then + _build_arch="ppc" + else + _build_arch="i386" + fi fi +# Setup +#---------------------------------------------------------- +case $_backend in + x11) + echo "Building package with GTK+/X11." >&2 + # Handle some version specific details. + if [ "$OSXMINORNO" -le "4" ]; then + echo "Note: Inkscape packaging requires Mac OS X 10.5 Leopard or later." + exit 1 + else # if [ "$OSXMINORNO" -ge "5" ]; then + XCODEFLAGS="-configuration Deployment" + SCRIPTEXECDIR="ScriptExec/build/Deployment/ScriptExec.app/Contents/MacOS" + EXTRALIBS="" + fi + ;; + quartz) + # quartz backend + echo "Building package with GTK+/Quartz." >&2 + ;; + *) + exit 1 +esac + # Package always has the same name. Version information is stored in # the Info.plist file which is filled in by the configure script. @@ -203,50 +326,71 @@ package="Inkscape.app" # Remove a previously existing package if necessary if [ -d $package ]; then echo "Removing previous Inkscape.app" - rm -Rf $package + rm -rf $package fi # Set the 'macosx' directory, usually the current directory. resdir=`pwd` +# Custom resources used to generate resources during app bundle creation. +if [ -z "$custom_res" ] ; then + custom_res="${resdir}/Resources-extras" +fi + # Prepare Package #---------------------------------------------------------- pkgexec="$package/Contents/MacOS" pkgbin="$package/Contents/Resources/bin" +pkgetc="$package/Contents/Resources/etc" pkglib="$package/Contents/Resources/lib" -pkglocale="$package/Contents/Resources/locale" -pkgpython="$package/Contents/Resources/python/site-packages/" +pkgshare="$package/Contents/Resources/share" +pkglocale="$package/Contents/Resources/share/locale" pkgresources="$package/Contents/Resources" mkdir -p "$pkgexec" mkdir -p "$pkgbin" +mkdir -p "$pkgetc" mkdir -p "$pkglib" +mkdir -p "$pkgshare" mkdir -p "$pkglocale" -mkdir -p "$pkgpython" - -mkdir -p "$pkgresources/Dutch.lprj" -mkdir -p "$pkgresources/English.lprj" -mkdir -p "$pkgresources/French.lprj" -mkdir -p "$pkgresources/German.lprj" -mkdir -p "$pkgresources/Italian.lprj" -mkdir -p "$pkgresources/Spanish.lprj" -mkdir -p "$pkgresources/fi.lprj" -mkdir -p "$pkgresources/no.lprj" -mkdir -p "$pkgresources/sv.lprj" + + +# utility +#---------------------------------------------------------- + +if [ $verbose_mode ] ; then + cp_cmd="/bin/cp -v" + ln_cmd="/bin/ln -sv" + rsync_cmd="/usr/bin/rsync -av" +else + cp_cmd="/bin/cp" + ln_cmd="/bin/ln -s" + rsync_cmd="/usr/bin/rsync -a" +fi + # Build and add the launcher #---------------------------------------------------------- -( - # Build fails if CC happens to be set (to anything other than CompileC) - unset CC - - cd "$resdir/ScriptExec" - echo -e "\033[1mBuilding launcher...\033[0m\n" - xcodebuild $XCODEFLAGS clean build -) -cp "$resdir/$SCRIPTEXECDIR/ScriptExec" "$pkgexec/Inkscape" +case $_backend in + x11) + ( + # Build fails if CC happens to be set (to anything other than CompileC) + unset CC + + cd "$resdir/ScriptExec" + echo -e "\033[1mBuilding launcher...\033[0m\n" + xcodebuild $XCODEFLAGS clean build + ) + $cp_cmd "$resdir/$SCRIPTEXECDIR/ScriptExec" "$pkgexec/Inkscape" + ;; + quartz) + $cp_cmd "$resdir/ScriptExec/launcher-quartz-no-macintegration.sh" "$pkgexec/inkscape" + ;; + *) + exit 1 +esac # Copy all files into the bundle @@ -257,99 +401,273 @@ binary_name=`basename "$binary"` binary_dir=`dirname "$binary"` # Inkscape's binary -binpath="$pkgbin/inkscape-bin" -cp -v "$binary" "$binpath" +if [ $_backend = "x11" ]; then + scrpath="$pkgbin/inkscape" + binpath="$pkgbin/inkscape-bin" +else + scrpath="$pkgexec/inkscape" + binpath="$pkgexec/inkscape-bin" +fi +$cp_cmd "$binary" "$binpath" # TODO Add a "$verbose" variable and command line switch, which sets wether these commands are verbose or not +# Info.plist +$cp_cmd "$plist" "$package/Contents/Info.plist" +if [ $_backend = "quartz" ]; then + /usr/libexec/PlistBuddy -x -c "Set :CGDisableCoalescedUpdates 1" "${package}/Contents/Info.plist" +fi + # Share files -rsync -av "$binary_dir/../share/$binary_name"/* "$pkgresources/" -cp "$plist" "$package/Contents/Info.plist" -rsync -av "$binary_dir/../share/locale"/* "$pkgresources/locale" +$rsync_cmd "$binary_dir/../share/$binary_name"/* "$pkgshare/$binary_name" +$rsync_cmd "$binary_dir/../share/locale"/* "$pkglocale" # Copy GTK shared mime information mkdir -p "$pkgresources/share" -cp -rp "$LIBPREFIX/share/mime" "$pkgresources/share/" +$cp_cmd -rp "$LIBPREFIX/share/mime" "$pkgshare/" # Copy GTK hicolor icon theme index file mkdir -p "$pkgresources/share/icons/hicolor" -cp "$LIBPREFIX/share/icons/hicolor/index.theme" "$pkgresources/share/icons/hicolor" +$cp_cmd "$LIBPREFIX/share/icons/hicolor/index.theme" "$pkgresources/share/icons/hicolor" + +# GTK+ stock icons with legacy icon mapping +echo "Creating GtkStock icon theme ..." +stock_src="${custom_res}/src/icons/stock-icons" \ + ./create-stock-icon-theme.sh "${pkgshare}/icons/GtkStock" +gtk-update-icon-cache --index-only "${pkgshare}/icons/GtkStock" + +# GTK+ themes +$cp_cmd -RP "$LIBPREFIX/share/gtk-engines" "$pkgshare/" +for item in Adwaita Clearlooks HighContrast Industrial Raleigh Redmond ThinIce; do + mkdir -p "$pkgshare/themes/$item" + $cp_cmd -RP "$LIBPREFIX/share/themes/$item/gtk-2.0" "$pkgshare/themes/$item/" +done +if [ $_backend = "quartz" ]; then + for item in Mac; do + $cp_cmd -RP "$LIBPREFIX/share/themes/$item/gtk-2.0"* "$pkgshare/themes/$item/" + done +fi # Icons and the rest of the script framework -rsync -av --exclude ".svn" "$resdir"/Resources/* "$pkgresources/" +$rsync_cmd --exclude ".svn" "$resdir"/Resources/* "$pkgresources/" + +# remove files not needed with GTK+/Quartz +if [ $_backend = "quartz" ]; then + rm "$pkgresources/script" + rm "$pkgresources/openDoc" + rm "$pkgbin/inkscape" +fi -# Update the ImageMagick path in startup script. -IMAGEMAGICKVER=`pkg-config --modversion ImageMagick` -sed -e "s,IMAGEMAGICKVER,$IMAGEMAGICKVER,g" -i "" $pkgbin/inkscape +# activate wrapper scripts for python and gimp (optional) +if [ $add_wrapper = "true" ]; then + mv "$pkgbin/gimp-wrapper.sh" "$pkgbin/gimp" + #mv "$pkgbin/python-wrapper.sh" "$pkgbin/python" +fi # Add python modules if requested if [ ${add_python} = "true" ]; then - # copy python site-packages. They need to be organized in a hierarchical set of directories, by architecture and python major+minor version, e.g. i386/2.3/ for Ptyhon 2.3 on Intel; ppc/2.4/ for Python 2.4 on PPC - cp -rvf "$python_dir"/* "$pkgpython" + install_py_modules () + { + # lxml + $cp_cmd -RL "$packages_path/lxml" "$pkgpython" + # numpy + $cp_cmd -RL "$packages_path/nose" "$pkgpython" + $cp_cmd -RL "$packages_path/numpy" "$pkgpython" + # UniConvertor + $cp_cmd -RL "$packages_path/PIL" "$pkgpython" + if [ "$PYTHON_VER" == "2.5" ]; then + $cp_cmd -RL "$packages_path/_imaging.so" "$pkgpython" + $cp_cmd -RL "$packages_path/_imagingcms.so" "$pkgpython" + $cp_cmd -RL "$packages_path/_imagingft.so" "$pkgpython" + $cp_cmd -RL "$packages_path/_imagingmath.so" "$pkgpython" + fi + $cp_cmd -RL "$packages_path/sk1libs" "$pkgpython" + $cp_cmd -RL "$packages_path/uniconvertor" "$pkgpython" + # PyGTK (Sozi) + $cp_cmd -RL "$packages_path/cairo" "$pkgpython" + $cp_cmd -RL "$packages_path/glib" "$pkgpython" + $cp_cmd -RL "$packages_path/gobject" "$pkgpython" + $cp_cmd -RL "$packages_path/../../../share/pygobject" "$pkgshare" + $cp_cmd -RL "$packages_path/gtk-2.0" "$pkgpython" + $cp_cmd -RL "$packages_path/../../../share/pygtk" "$pkgshare" + $cp_cmd -RL "$packages_path/pygtk.pth" "$pkgpython" + $cp_cmd -RL "$packages_path/pygtk.py" "$pkgpython" + # cleanup python modules + find "$pkgpython" -name *.pyc -print0 | xargs -0 rm -f + find "$pkgpython" -name *.pyo -print0 | xargs -0 rm -f + find "${pkgshare}/pygobject" -name *.pyc -print0 | xargs -0 rm -f + + # TODO: test whether to remove hard-coded paths from *.la files or to exclude them altogether + for la_file in $(find "$pkgpython" -name *.la); do + sed -e "s,libdir=\'.*\',libdir=\'\',g" -i "" "$la_file" + done + } + + if [ $OSXMINORNO -eq "5" ]; then + PYTHON_VERSIONS="2.5 2.6 2.7" + elif [ $OSXMINORNO -eq "6" ]; then + PYTHON_VERSIONS="2.6 2.7" + else # if [ $OSXMINORNO -ge "7" ]; then + PYTHON_VERSIONS="2.7" + fi + if [ -z "$python_dir" ]; then + for PYTHON_VER in $PYTHON_VERSIONS; do + python_dir="$(${LIBPREFIX}/bin/python${PYTHON_VER}-config --prefix)" + packages_path="${python_dir}/lib/python${PYTHON_VER}/site-packages" + pkgpython="${pkglib}/python${PYTHON_VER}/site-packages" + mkdir -p $pkgpython + install_py_modules + done + else + # copy custom python site-packages. + # They need to be organized in a hierarchical set of directories by python major+minor version: + # - ${python_dir}/python2.5/site-packages/lxml + # - ${python_dir}/python2.5/site-packages/nose + # - ${python_dir}/python2.5/site-packages/numpy + # - ${python_dir}/python2.6/site-packages/lxml + # - ... + $cp_cmd -rf "$python_dir"/* "$pkglib" + fi fi +sed -e "s,__build_arch__,$_build_arch,g" -i "" "$scrpath" + # PkgInfo must match bundle type and creator code from Info.plist echo "APPLInks" > $package/Contents/PkgInfo # Pull in extra requirements for Pango and GTK -pkgetc="$package/Contents/Resources/etc" mkdir -p $pkgetc/pango -cp $LIBPREFIX/etc/pango/pangox.aliases $pkgetc/pango/ -# Need to adjust path and quote in case of spaces in path. -sed -e "s,$LIBPREFIX,\"\${CWD},g" -e 's,\.so ,.so" ,g' $LIBPREFIX/etc/pango/pango.modules > $pkgetc/pango/pango.modules -cat > $pkgetc/pango/pangorc <<END_PANGO -[Pango] -ModuleFiles=\${HOME}/.inkscape-etc/pango.modules -[PangoX] -AliasFiles=\${HOME}/.inkscape-etc/pangox.aliases -END_PANGO +touch "$pkgetc/pango/pangorc" # We use a modified fonts.conf file so only need the dtd +mkdir -p $pkgshare/xml/fontconfig +$cp_cmd $LIBPREFIX/share/xml/fontconfig/fonts.dtd $pkgshare/xml/fontconfig mkdir -p $pkgetc/fonts -cp $LIBPREFIX/etc/fonts/fonts.dtd $pkgetc/fonts/ -cp -r $LIBPREFIX/etc/fonts/conf.avail $pkgetc/fonts/ -cp -r $LIBPREFIX/etc/fonts/conf.d $pkgetc/fonts/ - -mkdir -p $pkgetc/gtk-2.0 -sed -e "s,$LIBPREFIX,\${CWD},g" $LIBPREFIX/etc/gtk-2.0/gdk-pixbuf.loaders > $pkgetc/gtk-2.0/gdk-pixbuf.loaders -sed -e "s,$LIBPREFIX,\${CWD},g" $LIBPREFIX/etc/gtk-2.0/gtk.immodules > $pkgetc/gtk-2.0/gtk.immodules - -for item in gnome-vfs-mime-magic gnome-vfs-2.0 -do - cp -r $LIBPREFIX/etc/$item $pkgetc/ -done +$cp_cmd -r $LIBPREFIX/etc/fonts/conf.d $pkgetc/fonts/ +mkdir -p $pkgshare/fontconfig +$cp_cmd -r $LIBPREFIX/share/fontconfig/conf.avail $pkgshare/fontconfig/ +(cd $pkgetc/fonts/conf.d && $ln_cmd ../../../share/fontconfig/conf.avail/10-autohint.conf) +(cd $pkgetc/fonts/conf.d && $ln_cmd ../../../share/fontconfig/conf.avail/70-no-bitmaps.conf) pango_version=`pkg-config --variable=pango_module_version pango` mkdir -p $pkglib/pango/$pango_version/modules -cp $LIBPREFIX/lib/pango/$pango_version/modules/*.so $pkglib/pango/$pango_version/modules/ +$cp_cmd $LIBPREFIX/lib/pango/$pango_version/modules/*.so $pkglib/pango/$pango_version/modules/ gtk_version=`pkg-config --variable=gtk_binary_version gtk+-2.0` -mkdir -p $pkglib/gtk-2.0/$gtk_version/{engines,immodules,loaders,printbackends} -cp -r $LIBPREFIX/lib/gtk-2.0/$gtk_version/* $pkglib/gtk-2.0/$gtk_version/ - -mkdir -p $pkglib/gnome-vfs-2.0/modules -cp $LIBPREFIX/lib/gnome-vfs-2.0/modules/*.so $pkglib/gnome-vfs-2.0/modules/ +mkdir -p $pkglib/gtk-2.0/$gtk_version/{engines,immodules,printbackends} +$cp_cmd -r $LIBPREFIX/lib/gtk-2.0/$gtk_version/* $pkglib/gtk-2.0/$gtk_version/ + +gdk_pixbuf_version=`pkg-config --variable=gdk_pixbuf_binary_version gdk-pixbuf-2.0` +mkdir -p $pkglib/gdk-pixbuf-2.0/$gdk_pixbuf_version/loaders +$cp_cmd $LIBPREFIX/lib/gdk-pixbuf-2.0/$gdk_pixbuf_version/loaders/*.so $pkglib/gdk-pixbuf-2.0/$gdk_pixbuf_version/loaders/ + +sed -e "s,__gtk_version__,$gtk_version,g" -i "" "$scrpath" +sed -e "s,__gdk_pixbuf_version__,$gdk_pixbuf_version,g" -i "" "$scrpath" +#sed -e "s,$LIBPREFIX,@loader_path/..,g" "$LIBPREFIX/etc/pango/pango.modules" > "$pkgetc/pango/pango.modules" +#sed -e "s,$LIBPREFIX,@loader_path/..,g" "$LIBPREFIX/lib/gtk-2.0/$gtk_version/immodules.cache" > "$pkglib/gtk-2.0/$gtk_version/immodules.cache" +#sed -e "s,$LIBPREFIX,@loader_path/..,g" "$LIBPREFIX/lib/gdk-pixbuf-2.0/$gtk_version/loaders.cache" > "$pkglib/gdk-pixbuf-2.0/$gtk_version/loaders.cache" + +# recreate loaders and modules caches based on actually included modules + +# Pango modules +pango-querymodules "$pkglib/pango/$pango_version"/modules/*.so \ + | sed -e "s,$PWD/$pkgresources,@loader_path/..,g" \ + > "$pkgetc"/pango/pango.modules + +# Gtk immodules +gtk-query-immodules-2.0 "$pkglib/gtk-2.0/$gtk_version"/immodules/*.so \ + | sed -e "s,$PWD/$pkgresources,@loader_path/..,g" \ + > "$pkglib/gtk-2.0/$gtk_version/"immodules.cache + +# Gdk pixbuf loaders +GDK_PIXBUF_MODULEDIR="$pkglib/gdk-pixbuf-2.0/$gtk_version/"loaders gdk-pixbuf-query-loaders \ + | sed -e "s,$pkgresources,@loader_path/..,g" > "$pkglib/gdk-pixbuf-2.0/$gtk_version/"loaders.cache + +# GIO modules +#gio-querymodules "$pkglib/gio/modules" + +# Gnome-vfs modules (deprecated, optional in inkscape) +if [ $WITH_GNOME_VFS ] ; then + for item in gnome-vfs-mime-magic gnome-vfs-2.0; do + $cp_cmd -r "$LIBPREFIX/etc/$item" "$pkgetc/" + done + for item in modules; do + mkdir -p "$pkglib/gnome-vfs-2.0/$item" + $cp_cmd "$LIBPREFIX/lib/gnome-vfs-2.0/$item"/*.so "$pkglib/gnome-vfs-2.0/$item/" + done +fi -mkdir -p $pkglib/gdk-pixbuf-2.0/$gtk_version/loaders -cp $LIBPREFIX/lib/gdk-pixbuf-2.0/$gtk_version/loaders/*.so $pkglib/gdk-pixbuf-2.0/$gtk_version/loaders/ +# ImageMagick version +IMAGEMAGICKVER="$(pkg-config --modversion ImageMagick)" +IMAGEMAGICKVER_MAJOR="$(cut -d. -f1 <<< "$IMAGEMAGICKVER")" -cp -r "$LIBPREFIX/lib/ImageMagick-$IMAGEMAGICKVER" "$pkglib/" -cp -r "$LIBPREFIX/share/ImageMagick-$IMAGEMAGICKVER" "$pkgresources/share/" +# ImageMagick data +# include *.la files for main libs too +for item in "$LIBPREFIX/lib/libMagick"*.la; do + $cp_cmd "$item" "$pkglib/" +done +# ImageMagick modules +$cp_cmd -r "$LIBPREFIX/lib/ImageMagick-$IMAGEMAGICKVER" "$pkglib/" +$cp_cmd -r "$LIBPREFIX/etc/ImageMagick-$IMAGEMAGICKVER_MAJOR" "$pkgetc/" +$cp_cmd -r "$LIBPREFIX/share/ImageMagick-$IMAGEMAGICKVER_MAJOR" "$pkgshare/" +# REQUIRED: remove hard-coded paths from *.la files +for la_file in "$pkglib/libMagick"*.la; do + sed -e "s,$LIBPREFIX/lib,,g" -i "" "$la_file" +done +for la_file in "$pkglib/ImageMagick-$IMAGEMAGICKVER/modules-Q16/coders"/*.la; do + sed -e "s,$LIBPREFIX/lib/ImageMagick-$IMAGEMAGICKVER/modules-Q16/coders,,g" -i "" "$la_file" +done +for la_file in "$pkglib/ImageMagick-$IMAGEMAGICKVER/modules-Q16/filters"/*.la; do + sed -e "s,$LIBPREFIX/lib/ImageMagick-$IMAGEMAGICKVER/modules-Q16/filters,,g" -i "" "$la_file" +done +sed -e "s,IMAGEMAGICKVER,$IMAGEMAGICKVER,g" -i "" "$scrpath" +sed -e "s,IMAGEMAGICKVER_MAJOR,$IMAGEMAGICKVER_MAJOR,g" -i "" "$scrpath" # Copy aspell dictionary files: -cp -r "$LIBPREFIX/lib/aspell-0.60" "$pkglib/" -cp -r "$LIBPREFIX/share/aspell" "$pkgresources/share/" +$cp_cmd -r "$LIBPREFIX/share/aspell" "$pkgresources/share/" -# Find out libs we need from fink, darwinports, or from a custom install +# Copy Poppler data: +$cp_cmd -r "$LIBPREFIX/share/poppler" "$pkgshare" + +# GLib2 schemas +mkdir -p "$pkgshare/glib-2.0" +$cp_cmd -RP "$LIBPREFIX/share/glib-2.0/schemas" "$pkgshare/glib-2.0/" + +# Copy all linked libraries into the bundle +#---------------------------------------------------------- +# get list of *.so modules from python modules +python_libs="" +for PYTHON_VER in "2.5" "2.6" "2.7"; do + python_libs="$python_libs $(find "${pkglib}/python${PYTHON_VER}" -name *.so -or -name *.dylib)" +done +[ $verbose_mode ] && echo "Python libs: $python_libs" + +# get list of included binary executables +extra_bin=$(find $pkgbin -exec file {} \; | grep executable | grep -v text | cut -d: -f1) +[ $verbose_mode ] && echo "Extra binaries: $extra_bin" + +# Find out libs we need from MacPorts, Fink, or from a custom install # (i.e. $LIBPREFIX), then loop until no changes. a=1 nfiles=0 endl=true while $endl; do echo -e "\033[1mLooking for dependencies.\033[0m Round" $a - libs="`otool -L $pkglib/gtk-2.0/$gtk_version/{engines,immodules,loaders,printbackends}/*.{dylib,so} $pkglib/gdk-pixbuf-2.0/$gtk_version/loaders/* $pkglib/pango/$pango_version/modules/* $pkglib/gnome-vfs-2.0/modules/* $package/Contents/Resources/lib/* $pkglib/ImageMagick-$IMAGEMAGICKVER/modules-Q16/{filters,coders}/*.so $binary 2>/dev/null | fgrep compatibility | cut -d\( -f1 | grep $LIBPREFIX | sort | uniq`" - cp -f $libs $package/Contents/Resources/lib + libs="$(otool -L \ + $pkglib/gtk-2.0/$gtk_version/{engines,immodules,printbackends}/*.{dylib,so} \ + $pkglib/gdk-pixbuf-2.0/$gtk_version/loaders/*.so \ + $pkglib/pango/$pango_version/modules/*.so \ + $pkglib/gnome-vfs-2.0/modules/*.so \ + $pkglib/gio/modules/*.so \ + $pkglib/ImageMagick-$IMAGEMAGICK_VER/modules-Q16/{filters,coders}/*.so \ + $pkglib/*.{dylib,so} \ + $pkgbin/*.so \ + $python_libs \ + $extra_bin \ + $binpath \ + 2>/dev/null | fgrep compatibility | cut -d\( -f1 | grep $LIBPREFIX | sort | uniq)" + $cp_cmd -f $libs "$pkglib" let "a+=1" - nnfiles=`ls $package/Contents/Resources/lib | wc -l` + nnfiles="$(ls "$pkglib" | wc -l)" if [ $nnfiles = $nfiles ]; then endl=false else @@ -357,143 +675,108 @@ while $endl; do fi done -# Add extra libraries of necessary -for libfile in $EXTRALIBS -do - cp -f $libfile $package/Contents/Resources/lib -done - # Some libraries don't seem to have write permission, fix this. -chmod -R u+w $package/Contents/Resources/lib +chmod -R u+w "$package/Contents/Resources/lib" # Strip libraries and executables if requested #---------------------------------------------------------- -if [ "$strip" = "true" ]; then - echo -e "\n\033[1mStripping debugging symbols...\033[0m\n" - chmod +w "$pkglib"/*.dylib - strip -x "$pkglib"/*.dylib - strip -ur "$binpath" +if [ "$strip_build" = "true" ]; then + echo -e "\n\033[1mStripping debugging symbols...\033[0m\n" + chmod +w "$pkglib"/*.dylib + strip -x "$pkglib"/*.dylib + strip -ur "$binpath" fi -# NOTE: This works for all the dylibs but causes GTK to crash at startup. -# Instead we leave them with their original install_names and set -# DYLD_LIBRARY_PATH within the app bundle before running Inkscape. -# +# Rewrite id and paths of linked libraries +#---------------------------------------------------------- +# extract level for relative path to libs +echo -e "\n\033[1mRewriting library paths ...\033[0m\n" + +LIBPREFIX_levels="$(echo "$LIBPREFIX"|awk -F/ '{print NF+1}')" + fixlib () { - libPath="`echo $2 | sed 's/.*Resources//'`" - pkgPath="`echo $2 | sed 's/Resources\/.*/Resources/'`" - # Fix a given executable or library to be relocatable if [ ! -d "$1" ]; then - libs="`otool -L $1 | fgrep compatibility | cut -d\( -f1`" - for lib in $libs; do - echo " $lib" - base=`echo $lib | awk -F/ '{print $NF}'` - first=`echo $lib | cut -d/ -f1-3` - relative=`echo $lib | cut -d/ -f4-` - to=@executable_path/../$relative - if [ $first != /usr/lib -a $first != /usr/X11 -a $first != /System/Library ]; then - /usr/bin/install_name_tool -change $lib $to $1 - if [ "`echo $lib | fgrep libcrypto`" = "" ]; then - /usr/bin/install_name_tool -id $to $1 - for ll in $libs; do - base=`echo $ll | awk -F/ '{print $NF}'` - first=`echo $ll | cut -d/ -f1-3` - relative=`echo $ll | cut -d/ -f4-` - to=@executable_path/../$relative - if [ $first != /usr/lib -a $first != /usr/X11 -a $first != /System/Library -a "`echo $ll | fgrep libcrypto`" = "" ]; then - /usr/bin/install_name_tool -change $ll $to $pkgPath/$relative - fi - done - fi + fileLibs="$(otool -L $1 | fgrep compatibility | cut -d\( -f1)" + filePath="$(echo "$2" | sed 's/.*Resources//')" + fileType="$3" + unset to_id + case $fileType in + lib) + # TODO: verfiy correct/expected install name for relocated libs + to_id="$package/Contents/Resources$filePath/$1" + loader_to_res="$(echo $filePath | $awk_cmd -F/ '{for (i=1;i<NF;i++) sub($i,".."); sub($NF,"",$0); print $0}')" + ;; + bin) + loader_to_res="../" + ;; + exec) + loader_to_res="../Resources/" + ;; + *) + echo "Skipping loader_to_res for $1" + ;; + esac + [ $verbose_mode ] && echo "basename: $1" + [ $verbose_mode ] && echo "dirname: $2" + [ $verbose_mode ] && echo "filePath: $filePath" + [ $verbose_mode ] && echo "to_id: $to_id" + [ $verbose_mode ] && echo "loader_to_res: $loader_to_res" + [ $to_id ] && install_name_tool -id "$to_id" "$1" + for lib in $fileLibs; do + first="$(echo $lib | cut -d/ -f1-3)" + if [ $first != /usr/lib -a $first != /usr/X11 -a $first != /opt/X11 -a $first != /System/Library ]; then + lib_prefix_levels="$(echo $lib | $awk_cmd -F/ '{for (i=NF;i>0;i--) if($i=="lib") j=i; print j}')" + res_to_lib="$(echo $lib | cut -d/ -f$lib_prefix_levels-)" + unset to_path + case $fileType in + lib) + to_path="@loader_path/$loader_to_res$res_to_lib" + ;; + bin) + to_path="@executable_path/$loader_to_res$res_to_lib" + ;; + exec) + to_path="@executable_path/$loader_to_res$res_to_lib" + ;; + *) + echo "Skipping to_path for $lib in $1" + ;; + esac + [ $verbose_mode ] && echo "lib: $lib" + [ $verbose_mode ] && echo "lib_prefix_levels: $lib_prefix_levels" + [ $verbose_mode ] && echo "res_to_lib: $res_to_lib" + [ $verbose_mode ] && echo "to_path: $to_path" + [ $verbose_mode ] && echo "install_name_tool arguments: -change $lib $to_path $1" + [ $to_path ] && install_name_tool -change "$lib" "$to_path" "$1" fi done fi } rewritelibpaths () { - # - # Fix package deps - (cd "$package/Contents/Resources/lib/gtk-2.0/$gtk_version/loaders" - for file in *.so; do - echo "Rewriting dylib paths for $file..." - fixlib "$file" "`pwd`" - done - ) - (cd "$package/Contents/Resources/lib/gtk-2.0/$gtk_version/engines" - for file in *.so; do - echo "Rewriting dylib paths for $file..." - fixlib "$file" "`pwd`" - done - ) - (cd "$package/Contents/Resources/lib/gtk-2.0/$gtk_version/immodules" - for file in *.so; do - echo "Rewriting dylib paths for $file..." - fixlib "$file" "`pwd`" - done - ) - (cd "$package/Contents/Resources/lib/gtk-2.0/$gtk_version/printbackends" - for file in *.so; do - echo "Rewriting dylib paths for $file..." - fixlib "$file" "`pwd`" - done - ) - (cd "$package/Contents/Resources/lib/gnome-vfs-2.0/modules" - for file in *.so; do - echo "Rewriting dylib paths for $file..." - fixlib "$file" "`pwd`" - done - ) - (cd "$package/Contents/Resources/lib/gdk-pixbuf-2.0/$gtk_version/loaders" - for file in *.so; do - echo "Rewriting dylib paths for $file..." - fixlib "$file" "`pwd`" - done - ) - (cd "$package/Contents/Resources/lib/pango/$pango_version/modules" - for file in *.so; do - echo "Rewriting dylib paths for $file..." - fixlib "$file" "`pwd`" - done - ) - (cd "$package/Contents/Resources/lib/ImageMagick-$IMAGEMAGICKVER/modules-Q16/filters" - for file in *.so; do - echo "Rewriting dylib paths for $file..." - fixlib "$file" "`pwd`" - done - ) - (cd "$package/Contents/Resources/lib/ImageMagick-$IMAGEMAGICKVER/modules-Q16/coders" - for file in *.so; do - echo "Rewriting dylib paths for $file..." - fixlib "$file" "`pwd`" - done - ) - (cd "$package/Contents/Resources/bin" - for file in *; do - echo "Rewriting dylib paths for $file..." - fixlib "$file" "`pwd`" + if [ $_backend = "quartz" ]; then + echo -n "Rewriting dylib paths for executable ... " + (cd "$pkgexec"; fixlib "inkscape-bin" "$package/Contents/Resources/../MacOS" "exec") + echo "done" + fi + echo "Rewriting dylib paths for included binaries:" + for file in $extra_bin; do + echo -n "Rewriting dylib paths for $file ... " + (cd "$(dirname $file)" ; fixlib "$(basename $file)" "$(dirname $file)" "bin") + echo "done" done - cd ../lib - for file in *.dylib; do - echo "Rewriting dylib paths for $file..." - fixlib "$file" "`pwd`" + echo "Rewriting dylib paths for included libraries:" + for file in $(find $package \( -name '*.so' -or -name '*.dylib' \) -and -not -ipath '*.dSYM*'); do + echo -n "Rewriting dylib paths for $file ... " + (cd "$(dirname $file)" ; fixlib "$(basename $file)" "$(dirname $file)" "lib") + echo "done" done - ) } -PATHLENGTH=`echo $LIBPREFIX | wc -c` -if [ "$PATHLENGTH" -ge "50" ]; then - # If the LIBPREFIX path is long enough to allow - # path rewriting, then do this. - rewritelibpaths -else - echo "Could not rewrite dylb paths for bundled libraries. This requires" >&2 - echo "Macports to be installed in a PREFIX of at least 50 characters in length." >&2 - echo "" >&2 - echo "The package will still work if the following line is uncommented in" >&2 - echo "Inkscape.app/Contents/Resources/bin/inkscape:" >&2 - echo ' export DYLD_LIBRARY_PATH="$TOP/lib"' >&2 - exit 1 +rewritelibpaths -fi +# All done. +#---------------------------------------------------------- +echo "Inkscape.app created successfully." exit 0 diff --git a/packaging/macosx/osx-build.sh b/packaging/macosx/osx-build.sh index 5281e70c6..3d5e5b1de 100755 --- a/packaging/macosx/osx-build.sh +++ b/packaging/macosx/osx-build.sh @@ -6,13 +6,15 @@ # http://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX # for more complete information # -# Author: +# Authors: # Jean-Olivier Irisson <jo.irisson@gmail.com> +# Liam P. White <inkscapebrony@gmail.com> +# ~suv <suv-sf@users.sourceforge.net> # with information from # Kees Cook # Michael Wybrow # -# Copyright (C) 2006-2010 +# Copyright (C) 2006-2014 # Released under GNU GPL, read the file 'COPYING' for more information # @@ -21,11 +23,11 @@ # User modifiable parameters #---------------------------------------------------------- # Configure flags -CONFFLAGS="--disable-openmp --enable-osxapp" +CONFFLAGS="--enable-osxapp" # Libraries prefix (Warning: NO trailing slash) -LIBPREFIX="/opt/local" -# User name on Modevia -MODEVIA_NAME="" +if [ -z "$LIBPREFIX" ]; then + LIBPREFIX="/opt/local-x11" +fi ############################################################ @@ -59,40 +61,39 @@ Compilation script for Inkscape on Mac OS X. install the build products locally, inside the source directory (run make install) \033[1mp,pack,package\033[0m - package Inkscape in a double clickable .app bundle + package Inkscape in a double clickable .app bundle \033[1m-s,--strip\033[0m remove debugging information in Inkscape package + \033[1m-v,--verbose\033[0m verbose mode \033[1m-py,--with-python\033[0m specify python modules path for inclusion into the app bundle \033[1md,dist,distrib\033[0m store Inkscape.app in a disk image (dmg) for distribution - \033[1mf,fat,universal\033[0m - compile inkscape as a universal binary as both i386 and ppc architectures - \033[1mput,upload\033[0m - upload the dmg and the associate info file on Modevia server - \033[1mall\033[0m - do everything (update, configure, build, install, package, distribute) + \033[1minfo\033[0m + create info file for current build \033[1mEXAMPLES\033[0m \033[1m$0 conf build install\033[0m configure, build and install a dowloaded version of Inkscape in the default - directory, keeping debugging information. - \033[1m$0 u a c b -p ~ i -s -py ~/site-packages/ p d\033[0m + directory, keeping debugging information. + \033[1m$0 u a c b -p ~ i -s -py ~/python_modules/ p d\033[0m update an bzr checkout, prepare configure script, configure, - build and install Inkscape in the user home directory (~). + build and install Inkscape in the user home directory (~). Then package Inkscape without debugging information, - with python packages from ~/site-packages/ and prepare + with python packages from ~/python_modules/ and prepare a dmg for distribution." } # Parameters #---------------------------------------------------------- # Paths -HERE=`pwd` -SRCROOT=$HERE/../.. # we are currently in packaging/macosx +HERE="$(pwd)" +SRCROOT="$(cd ../.. && pwd)" # we are currently in packaging/macosx # Defaults -if [ "$INSTALLPREFIX" = "" ] -then - INSTALLPREFIX=$SRCROOT/Build/ +if [ -z "$BUILDPREFIX" ]; then + BUILDPREFIX="$SRCROOT/build-osxapp/" +fi +if [ -z "$INSTALLPREFIX" ]; then + INSTALLPREFIX="$SRCROOT/inst-osxapp/" fi BZRUPDATE="f" AUTOGEN="f" @@ -102,10 +103,10 @@ NJOBS=1 INSTALL="f" PACKAGE="f" DISTRIB="f" -UPLOAD="f" -UNIVERSAL="f" +BUILD_INFO="f" STRIP="" +VERBOSE="" PYTHON_MODULES="" # Parse command line options @@ -114,12 +115,12 @@ while [ "$1" != "" ] do case $1 in h|help) - help + help exit 1 ;; - all) + all) BZRUPDATE="t" CONFIGURE="t" - BUILD="t" + BUILD="t" INSTALL="t" PACKAGE="t" DISTRIB="t" ;; @@ -129,8 +130,6 @@ do AUTOGEN="t" ;; c|conf|configure) CONFIGURE="t" ;; - -u|--universal) - UNIVERSAL="t" ;; b|build) BUILD="t" ;; -j|--jobs) @@ -142,24 +141,54 @@ do PACKAGE="t" ;; d|dist|distrib) DISTRIB="t" ;; - put|upload) - UPLOAD="t" ;; -p|--prefix) - INSTALLPREFIX=$2 - shift 1 ;; + INSTALLPREFIX=$2 + shift 1 ;; -s|--strip) - STRIP="-s" ;; + STRIP="-s" ;; -py|--with-python) PYTHON_MODULES="$2" shift 1 ;; + -v|--verbose) + VERBOSE="-v" ;; + info) + BUILD_INFO="t" ;; *) - echo "Invalid command line option: $1" + echo "Invalid command line option: $1" exit 2 ;; esac shift 1 done -OSXMINORVER=`/usr/bin/sw_vers | grep ProductVersion | cut -d' ' -f2 | cut -f1-2 -d.` +# Checks +# ---------------------------------------------------------- +# OS X version +OSXVERSION="$(/usr/bin/sw_vers | grep ProductVersion | cut -f2)" +OSXMINORVER="$(cut -d. -f 1,2 <<< $OSXVERSION)" +OSXMINORNO="$(cut -d. -f2 <<< $OSXVERSION)" +OSXPOINTNO="$(cut -d. -f3 <<< $OSXVERSION)" +ARCH="$(uname -a | awk '{print $NF;}')" + +# MacPorts for dependencies +[[ -x $LIBPREFIX/bin/port && -d $LIBPREFIX/etc/macports ]] && use_port="t" + +# guess default build_arch (MacPorts) +if [ "$OSXMINORNO" -ge "6" ]; then + if [ "$(sysctl -n hw.cpu64bit_capable 2>/dev/null)" = "1" ]; then + _build_arch="x86_64" + else + _build_arch="i386" + fi +else + if [ $ARCH = "powerpc" ]; then + _build_arch="ppc" + else + _build_arch="i386" + fi +fi + +# GTK+ backend +gtk_target="$(pkg-config --variable=target gtk+-2.0 2>/dev/null)" # Set environment variables # ---------------------------------------------------------- @@ -169,31 +198,232 @@ export LIBPREFIX # automake seach path export CPATH="$LIBPREFIX/include" # configure search path -export CPPFLAGS="-I$LIBPREFIX/include" -# export CPPFLAGS="-I$LIBPREFIX/include -I /System/Library/Frameworks/Carbon.framework/Versions/Current/Headers" -export LDFLAGS="-L$LIBPREFIX/lib" +export CPPFLAGS="$CPPFLAGS -I$LIBPREFIX/include" +export LDFLAGS="$LDFLAGS -L$LIBPREFIX/lib" # compiler arguments -export CFLAGS="-O3 -Wall" -export CXXFLAGS="$CFLAGS" - -if [[ "$UNIVERSAL" == "t" ]] -then - MINOSXVER="$OSXMINORVER" - - export SDK=/Developer/SDKs/MacOSX${MINOSXVER}.sdk - - export CFLAGS="$CFLAGS -isysroot $SDK -arch ppc -arch i386" +export CFLAGS="$CFLAGS -Os" + +# Use system compiler and compiler flags which are known to work: +if [ "$OSXMINORNO" -le "4" ]; then + echo "Note: Inkscape packaging requires Mac OS X 10.5 Leopard or later." + exit 1 +elif [ "$OSXMINORNO" -eq "5" ]; then + ## Apple's GCC 4.2.1 on Leopard + TARGETNAME="LEOPARD" + TARGETVERSION="10.5" + export CC="/usr/bin/gcc-4.2" + export CXX="/usr/bin/g++-4.2" + #export CLAGS="$CFLAGS -arch $_build_arch" export CXXFLAGS="$CFLAGS" - - export CONFFLAGS="$CONFFLAGS --disable-dependency-tracking" + CONFFLAGS="--disable-openmp $CONFFLAGS" +elif [ "$OSXMINORNO" -eq "6" ]; then + ## Apple's LLVM-GCC 4.2.1 on Snow Leopard + TARGETNAME="SNOW LEOPARD" + TARGETVERSION="10.6" + export CC="/usr/bin/llvm-gcc-4.2" + export CXX="/usr/bin/llvm-g++-4.2" + #export CLAGS="$CFLAGS -arch $_build_arch" + export CXXFLAGS="$CFLAGS" + CONFFLAGS="--disable-openmp $CONFFLAGS" +elif [ "$OSXMINORNO" -eq "7" ]; then + ## Apple's clang on Lion and later + TARGETNAME="LION" + TARGETVERSION="10.7" + export CC="/usr/bin/clang" + export CXX="/usr/bin/clang++" + #export CLAGS="$CFLAGS -arch $_build_arch" + export CXXFLAGS="$CFLAGS -Wno-mismatched-tags -Wno-cast-align" #-stdlib=libstdc++ -std=c++11 +elif [ "$OSXMINORNO" -eq "8" ]; then + ## Apple's clang on Mountain Lion + TARGETNAME="MOUNTAIN LION" + TARGETVERSION="10.8" + export CC="/usr/bin/clang" + export CXX="/usr/bin/clang++" + #export CLAGS="$CFLAGS -arch $_build_arch" + export CXXFLAGS="$CFLAGS -Wno-mismatched-tags -Wno-cast-align -std=c++11 -stdlib=libstdc++" +elif [ "$OSXMINORNO" -eq "9" ]; then + ## Apple's clang on Mavericks + TARGETNAME="MAVERICKS" + TARGETVERSION="10.9" + export CC="/usr/bin/clang" + export CXX="/usr/bin/clang++" + #export CLAGS="$CFLAGS -arch $_build_arch" + export CXXFLAGS="$CLAGS -Wno-mismatched-tags -Wno-cast-align -std=c++11 -stdlib=libc++" +elif [ "$OSXMINORNO" -eq "10" ]; then + ## Apple's clang on Yosemite + TARGETNAME="YOSEMITE" + TARGETVERSION="10.10" + export CC="/usr/bin/clang" + export CXX="/usr/bin/clang++" + #export CLAGS="$CFLAGS -arch $_build_arch" + export CXXFLAGS="$CLAGS -Wno-mismatched-tags -Wno-cast-align -std=c++11 -stdlib=libc++" + echo "Note: Detected version of OS X: $TARGETNAME $OSXVERSION" + echo " Inkscape packaging has not been tested on ${TARGETNAME}." +else # if [ "$OSXMINORNO" -ge "11" ]; then + ## Apple's clang after Yosemite? + TARGETNAME="UNKNOWN" + TARGETVERSION="10.XX" + export CC="/usr/bin/clang" + export CXX="/usr/bin/clang++" + #export CLAGS="$CFLAGS -arch $_build_arch" + export CXXFLAGS="$CLAGS -Wno-mismatched-tags -Wno-cast-align -std=c++11 -stdlib=libc++" + echo "Note: Detected version of OS X: $TARGETNAME $OSXVERSION" + echo " Inkscape packaging has not been tested on this unknown version of OS X (${OSXVERSION})." fi +# Utility functions +# ---------------------------------------------------------- +getinkscapeinfo () { + + osxapp_domain="$BUILDPREFIX/Info" + INKVERSION="$(defaults read $osxapp_domain CFBundleVersion)" + [ $? -ne 0 ] && INKVERSION="devel" + REVISION="$(bzr revno 2>/dev/null)" + [ $? -ne 0 ] && REVISION="" || REVISION="-r$REVISION" + + TARGETARCH="$_build_arch" + NEWNAME="Inkscape-$INKVERSION$REVISION-$gtk_target-$TARGETVERSION-$TARGETARCH" + DMGFILE="$NEWNAME.dmg" + INFOFILE="$NEWNAME-info.txt" + +} + +checkversion () { + DEPVER="$(pkg-config --modversion $1 2>/dev/null)" + if [[ "$?" == "1" ]]; then + [[ $2 ]] && DEPVER="$(checkversion-port $2)" || unset DEPVER + fi + if [[ ! -z "$DEPVER" ]]; then + [[ $2 ]] && DEPVER="${DEPVER}$(checklicense-port $2)" + else + DEPVER="---" + fi + echo "$DEPVER" +} + +checkversion-port () { + if [[ "$use_port" == "t" ]]; then + PORTVER="$(port echo $1 and active 2>/dev/null | cut -d@ -f2 | cut -d_ -f1)" + else + PORTVER="" + fi + echo "$PORTVER" +} + +checklicense-port() { + if [[ "$use_port" == "t" ]]; then + PORTLIC="$(port info --license --line $1 2>/dev/null)" + PORTURL="$(port info --homepage --line $1 2>/dev/null)" + if [[ -z "$PORTLIC" ]]; then + PORTLIC="Unknown" + fi + _spacer="\t\t" + PORTLIC="$(echo -ne "${_spacer}(License: ${PORTLIC}, Homepage: ${PORTURL})")" + else + PORTLIC="Unknown license" + fi + echo "$PORTLIC" +} + +checkversion-py-module () { + # python -c "import foo; ..." + echo "TODO." +} + +buildinfofile () { + getinkscapeinfo + # Prepare information file + echo "Build information on $(date) for $(whoami): + For OS X Ver $TARGETNAME ($TARGETVERSION) + Architecture $TARGETARCH +Build system information: + OS X Version $OSXVERSION + Architecture $_build_arch + MacPorts Ver $(port version 2>/dev/null | cut -f2 -d \ ) + Compiler $($CXX --version | head -1) + GTK+ backend $gtk_target +Included dependency versions (build or runtime): + Glib $(checkversion glib-2.0 glib2) + Glibmm $(checkversion glibmm-2.4 glibmm) + GTK $(checkversion gtk+-2.0 gtk2) + GTKmm $(checkversion gtkmm-2.4 gtkmm) + GdkPixbuf $(checkversion gdk-pixbuf-2.0 gdk-pixbuf2) + Pixman $(checkversion pixman-1 libpixman) + Cairo $(checkversion cairo cairo) + Cairomm $(checkversion cairomm-1.0 cairomm) + CairoPDF $(checkversion cairo-pdf cairo) + Poppler $(checkversion poppler-cairo poppler) + Fontconfig $(checkversion fontconfig fontconfig) + Freetype $(checkversion freetype2 freetype) + Pango $(checkversion pango pango) + Pangoft2 $(checkversion pangoft2 pango) + Harfbuzz $(checkversion harfbuzz harfbuzz) + LibXML2 $(checkversion libxml-2.0 libxml2) + LibXSLT $(checkversion libxslt libxslt) + LibSigC++ $(checkversion sigc++-2.0 libsigcxx2) + Boost $(checkversion boost boost) + Boehm GC $(checkversion bdw-gc boehmgc) + GSL $(checkversion gsl gsl) + LibPNG $(checkversion libpng libpng) + Librsvg $(checkversion librsvg-2.0 librsvg) + LittleCMS $(checkversion lcms lcms) + LittleCMS2 $(checkversion lcms2 lcms2) + GnomeVFS $(checkversion gnome-vfs-2.0 gnome-vfs) + DBus $(checkversion dbus-1 dbus) + Gvfs $(checkversion gvfs gvfs) + ImageMagick $(checkversion ImageMagick ImageMagick) + Libexif $(checkversion libexif libexif) + JPEG $(checkversion jpeg jpeg) + Icu $(checkversion icu-uc icu) + LibWPD $(checkversion libwpd-0.9 libwpd) + LibWPG $(checkversion libwpg-0.2 libwpg) + Libcdr $(checkversion libcdr-0.0 libcdr) + Libvisio $(checkversion libvisio-0.0 libvisio) +Included python modules: + lxml $(checkversion py27-lxml py27-lxml) + numpy $(checkversion py27-numpy py27-numpy) + sk1libs $(checkversion py27-sk1libs py27-sk1libs) + UniConvertor $(checkversion py27-uniconvertor py27-uniconvertor) + Pillow $(checkversion py27-Pillow py27-Pillow) +" > $INFOFILE + + ## TODO: Pending merge adds support for: + #LibRevenge $(checkversion librevenge-0.0 librevenge-devel) + #LibWPD $(checkversion libwpd-0.10 libwpd-10.0) + #LibWPG $(checkversion libwpg-0.3 libwpg-0.3) + #Libcdr $(checkversion libcdr-0.1 libcdr-0.1) + #Libvisio $(checkversion libvisio-0.1 libvisio-0.1) + + ## TODO: add support for gtk-mac-integration (see osxmenu branch) + #Gtk-mac-integration $(checkversion gtk-mac-integration gtk-osx-application) + + ## TODO: how to realiably add details specific to config and build + #if [[ ! -z "$ALLCONFFLAGS" ]]; then + # echo "Configure options: + # $ALLCONFFLAGS" >> $INFOFILE + #fi + #if [[ "$STRIP" == "-s" ]]; then + # echo "Debug info: + # no" >> $INFOFILE + #else + # echo "Debug info: + # yes" >> $INFOFILE + #fi +} + # Actions # ---------------------------------------------------------- if [[ "$BZRUPDATE" == "t" ]] then cd $SRCROOT - bzr pull + if [ -z "$(bzr info | grep "checkout")" ]; then + echo "repo is unbound (branch)" >&2 + bzr pull + else + echo "repo is bound (checkout)" >&2 + echo '... please update bound branch manually.' >&2 + false + fi status=$? if [[ $status -ne 0 ]]; then echo -e "\nBZR update failed" @@ -202,56 +432,9 @@ then cd $HERE fi -# Fetch some information -REVISION=`bzr version-info 2>/dev/null | grep revno | cut -d' ' -f2` -ARCH=`arch | tr [p,c] [P,C]` -OSXVERSION=`/usr/bin/sw_vers | grep ProductVersion | cut -d' ' -f2` - -if [[ "$OSXMINORVER" == "10.3" ]]; then - TARGETNAME="PANTHER" - TARGETVERSION="10.3" -elif [[ "$OSXMINORVER" == "10.4" ]]; then - TARGETNAME="TIGER" - TARGETVERSION="10.4" -elif [[ "$OSXMINORVER" == "10.5" ]]; then - TARGETNAME="LEOPARD+" - TARGETVERSION="10.5+" -fi - -TARGETARCH="$ARCH" -if [[ "$UNIVERSAL" == "t" ]]; then - TARGETARCH="UNIVERSAL" -fi - -NEWNAME="Inkscape-r$REVISION-$TARGETVERSION-$TARGETARCH" -DMGFILE="$NEWNAME.dmg" -INFOFILE="$NEWNAME-info.txt" - - -if [[ "$UPLOAD" == "t" ]] -then - # If we are uploading, we are probably building nightlies and don't - # need to build a new one if the repository hasn't changed since the - # last. Hence, if a dmg for this version already exists, then just - # exit here. - if [[ -f "$DMGFILE" ]]; then - echo -e "\nRepository hasn't changed: $DMGFILE already exists." - exit 0 - fi -fi - if [[ "$AUTOGEN" == "t" ]] then cd $SRCROOT - if [[ "$UNIVERSAL" == "t" ]] - then - # Universal builds have to be built with the option - # --disable-dependency-tracking. So they need to be - # started from scratch each time. - if [[ -f Makefile ]]; then - make distclean - fi - fi export NOCONFIGURE=true && ./autogen.sh status=$? if [[ $status -ne 0 ]]; then @@ -263,14 +446,19 @@ fi if [[ "$CONFIGURE" == "t" ]] then - ALLCONFFLAGS=`echo "$CONFFLAGS --prefix=$INSTALLPREFIX"` + ALLCONFFLAGS="$CONFFLAGS --prefix=$INSTALLPREFIX --enable-localinstall" cd $SRCROOT - if [ ! -f configure ] + if [ ! -d $BUILDPREFIX ] + then + mkdir $BUILDPREFIX || exit 1 + fi + cd $BUILDPREFIX + if [ ! -f $SRCROOT/configure ] then echo "Configure script not found in $SRCROOT. Run '$0 autogen' first" exit 1 fi - ./configure $ALLCONFFLAGS + $SRCROOT/configure $ALLCONFFLAGS status=$? if [[ $status -ne 0 ]]; then echo -e "\nConfigure failed" @@ -281,7 +469,8 @@ fi if [[ "$BUILD" == "t" ]] then - cd $SRCROOT + cd $BUILDPREFIX || exit 1 + touch "$SRCROOT/src/main.cpp" "$SRCROOT/src/ui/dialog/aboutbox.cpp" make -j $NJOBS status=$? if [[ $status -ne 0 ]]; then @@ -291,9 +480,9 @@ then cd $HERE fi -if [[ "$INSTALL" == "t" ]] +if [[ "$INSTALL" == "t" ]] then - cd $SRCROOT + cd $BUILDPREFIX || exit 1 make install status=$? if [[ $status -ne 0 ]]; then @@ -305,19 +494,19 @@ fi if [[ "$PACKAGE" == "t" ]] then - + # Test the existence of required files if [ ! -e $INSTALLPREFIX/bin/inkscape ] then echo "The inkscape executable \"$INSTALLPREFIX/bin/inkscape\" cound not be found." exit 1 fi - if [ ! -e $SRCROOT/Info.plist ] + if [ ! -e $BUILDPREFIX/Info.plist ] then - echo "The file \"$SRCROOT/Info.plist\" could not be found, please re-run configure." + echo "The file \"$BUILDPREFIX/Info.plist\" could not be found, please re-run configure." exit 1 fi - + # Set python command line option (if PYTHON_MODULES location is not empty, then add the python call to the command line, otherwise, stay empty) if [[ "$PYTHON_MODULES" != "" ]]; then PYTHON_MODULES="-py $PYTHON_MODULES" @@ -325,25 +514,20 @@ then fi # Create app bundle - ./osx-app.sh $STRIP -b $INSTALLPREFIX/bin/inkscape -p $SRCROOT/Info.plist $PYTHON_MODULES + ./osx-app.sh $STRIP $VERBOSE -b $INSTALLPREFIX/bin/inkscape -p $BUILDPREFIX/Info.plist $PYTHON_MODULES status=$? if [[ $status -ne 0 ]]; then echo -e "\nApplication bundle creation failed" exit $status fi -fi - -function checkversion { - DEPVER=`pkg-config --modversion $1 2>/dev/null` - if [[ "$?" == "1" ]]; then - DEPVER="Not included" - fi - echo "$DEPVER" -} + # Prepare information file + BUILD_INFO="t" +fi if [[ "$DISTRIB" == "t" ]] then + getinkscapeinfo # Create dmg bundle ./osx-dmg.sh -p "Inkscape.app" status=$? @@ -353,61 +537,18 @@ then fi mv Inkscape.dmg $DMGFILE - + # Prepare information file - echo "Build information on `date` for `whoami`: - For OS X Ver $TARGETNAME ($TARGETVERSION) - Architecture $TARGETARCH -Build system information: - OS X Version $OSXVERSION - Architecture $ARCH - MacPorts Ver `port version | cut -f2 -d \ ` - GCC `$CXX --version | grep GCC` -Included dependency versions: - GTK `checkversion gtk+-2.0` - GTKmm `checkversion gtkmm-2.4` - Cairo `checkversion cairo` - Cairomm `checkversion cairomm-1.0` - CairoPDF `checkversion cairo-pdf` - Fontconfig `checkversion fontconfig` - Pango `checkversion pango` - LibXML2 `checkversion libxml-2.0` - LibXSLT `checkversion libxslt` - LibSigC++ `checkversion sigc++-2.0` - LibPNG `checkversion libpng` - GSL `checkversion gsl` - ImageMagick `checkversion ImageMagick` - Poppler `checkversion poppler-cairo` - LittleCMS `checkversion lcms` - GnomeVFS `checkversion gnome-vfs-2.0` - LibWPG `checkversion libwpg-0.1` -Configure options: - $CONFFLAGS" > $INFOFILE - if [[ "$STRIP" == "t" ]]; then - echo "Debug info - no" >> $INFOFILE - else - echo "Debug info - yes" >> $INFOFILE - fi + BUILD_INFO="t" fi -if [[ "$UPLOAD" == "t" ]] +if [[ "$BUILD_INFO" == "t" ]] then - # Provide default for user name on modevia - if [[ "$MODEVIA_NAME" == "" ]]; then - MODEVIA_NAME=$USER - fi - # Uploasd file - scp $DMGFILE $INFOFILE "$MODEVIA_NAME"@inkscape.modevia.com:inkscape/docs/macosx-snap/ - status=$? - if [[ $status -ne 0 ]]; then - echo -e "\nUpload failed" - exit $status - fi + buildinfofile fi -if [[ "$PACKAGE" == "t" || "$DISTRIB" == "t" ]]; then +if [[ "$PACKAGE" == "t" || "$DISTRIB" == "t" ]]; +then # open a Finder window here to admire what we just produced open . fi diff --git a/packaging/macosx/osx-dmg.sh b/packaging/macosx/osx-dmg.sh index f1ce72132..95129b8cb 100755 --- a/packaging/macosx/osx-dmg.sh +++ b/packaging/macosx/osx-dmg.sh @@ -45,7 +45,7 @@ auto_open_opt= #---------------------------------------------------------- help() { -echo " +echo -e " Create a custom dmg file to distribute Inkscape \033[1mUSAGE\033[0m diff --git a/packaging/macosx/ports/devel/inkscape-packaging/Portfile b/packaging/macosx/ports/devel/inkscape-packaging/Portfile new file mode 100644 index 000000000..9a2bf0cf1 --- /dev/null +++ b/packaging/macosx/ports/devel/inkscape-packaging/Portfile @@ -0,0 +1,124 @@ +# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4 +# $Id: $ + +PortSystem 1.0 + +name inkscape-packaging +version 0.91 +revision 100 + +categories devel graphics +platforms darwin +license GPL-2 +supported_archs noarch + +maintainers users.sf.net:suv-sf + +description Dependencies for Inkscape.app +long_description ${description} + +homepage http://inkscape.org + +# this is a metaport - no fetch, configure and build phases +master_sites +distfiles +use_configure no +build {} +destroot { + # Create a dummy file so the port can be successfully activated + xinstall -d ${destroot}${prefix}/share/doc/${name} + set docfile [open ${destroot}${prefix}/share/doc/${name}/README.txt "w"] + puts $docfile "Inkscape packaging ${version} (meta port for all dependencies)\n" + close $docfile +} + +# build dependencies +depends_build port:bzr \ + port:autoconf \ + port:automake \ + port:pkgconfig \ + port:libtool \ + port:intltool \ + port:perl5 + +# core dependencies +depends_build-append port:popt \ + port:boehmgc \ + port:gsl \ + port:lcms2 \ + port:gtkmm \ + port:boost \ + port:ImageMagick \ + port:gtkspell2 \ + port:aspell-dict-en \ + port:poppler + +# ports for Inkscape.app +depends_build-append port:gnome-icon-theme \ + port:gnome-icon-theme-symbolic \ + port:icon-naming-utils \ + port:gnome-themes-standard \ + port:gtk-engines2 \ + port:gtk2-murrine + +# ports for python extensions +depends_build-append port:py27-lxml \ + port:py27-numpy \ + port:py27-Pillow \ + port:py27-uniconvertor \ + port:py27-pygtk + +if {${os.major} <= 10} { + # ports for python extensions on Snow Leopard and Leopard + depends_build-append port:py26-lxml \ + port:py26-numpy \ + port:py26-Pillow \ + port:py26-uniconvertor +} +if {${os.major} == 9} { + # ports for python extensions build deps on Leopard + depends_build-append port:gawk \ + port:py25-lxml \ + port:py25-numpy \ + port:py25-Pillow \ + port:py25-uniconvertor +} +if {${os.major} < 9} { + # we don't support Tiger anymore + return -code error "Mac OS X <= 10.4 not supported." +} + +# optional features +variant libwpd conflicts librevenge description {use libpwd for WPG, CDR, VSD} { +depends_build-append port:libcdr \ + port:libvisio \ + port:libwpg +} + +variant librevenge conflicts libwpd description {use librevenge for WPG, CDR, VSD} { +depends_build-append port:libcdr-0.1 \ + port:libvisio-0.1 \ + port:libwpg-0.3 +} + +variant gnome_vfs description {with gnome-vfs (deprecated)} { + depends_build-append port:gnome-vfs +} + +variant gvfs description {with gvfs} { + depends_build-append port:gvfs +} + +variant dbus description {with dbus} { + depends_build-append port:dbus \ + port:dbus-glib \ + port:dbus-python27 +} + +# variants +universal_variant no + +default_variants-append +gnome_vfs + +# livecheck +livecheck.type none diff --git a/packaging/macosx/ports/lang/python25/Portfile b/packaging/macosx/ports/lang/python25/Portfile new file mode 100644 index 000000000..a27bdaf64 --- /dev/null +++ b/packaging/macosx/ports/lang/python25/Portfile @@ -0,0 +1,214 @@ +# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4 +# $Id: Portfile 104926 2013-04-05 04:43:09Z larryv@macports.org $ + +PortSystem 1.0 +PortGroup select 1.0 + +name python25 +version 2.5.6 +revision 100 + +set branch [join [lrange [split ${version} .] 0 1] .] +categories lang +license PSF +platforms darwin +maintainers nomaintainer + +description An interpreted, object-oriented programming language +long_description Python is an interpreted, interactive, object-oriented \ + programming language. + +homepage http://www.python.org/ +master_sites http://ftp.python.org/ftp/python/${version}/ + +distname Python-${version} +use_bzip2 yes + +checksums md5 5d45979c5f30fb2dd5f067c6b06b88e4 \ + sha1 29f6dd41bf09c5e04311b367cbb7604fa016e699 \ + rmd160 92f0a955971f187a7d50c6422168202ec551bf22 + +# patch-Lib-distutils-dist.py.diff comes from +# <http://bugs.python.org/issue1180> +patchfiles patch-Makefile.pre.in.diff \ + patch-Lib-cgi.py.diff \ + patch-Lib-distutils-dist.py.diff \ + patch-setup.py.diff \ + patch-configure.diff \ + patch-64bit.diff \ + patch-setup.py-disabled_modules.diff \ + patch-mac_ver.diff \ + patch-libedit.diff \ + patch-fwrapv.diff + +depends_lib port:gettext port:zlib port:openssl \ + port:sqlite3 port:db46 port:bzip2 \ + port:libedit port:ncurses +depends_run port:python_select + +configure.args --enable-shared \ + --enable-framework=${frameworks_dir} \ + --mandir=${prefix}/share/man \ + --enable-ipv6 \ + --with-cxx=${configure.cxx} + +post-patch { + reinplace "s|__PREFIX__|${prefix}|g" ${worksrcpath}/Lib/cgi.py \ + ${worksrcpath}/setup.py + reinplace "s|/Applications/MacPython|${applications_dir}/MacPython|g" \ + ${worksrcpath}/Mac/Makefile.in \ + ${worksrcpath}/Mac/IDLE/Makefile.in \ + ${worksrcpath}/Mac/Tools/Doc/setup.py \ + ${worksrcpath}/Mac/PythonLauncher/Makefile.in \ + ${worksrcpath}/Mac/BuildScript/build-installer.py + reinplace "s|xargs -0 rm -r|xargs -0 rm -rf|g" \ + ${worksrcpath}/Mac/PythonLauncher/Makefile.in + reinplace "s|__BUILD_ARCH__|${build_arch}|" ${worksrcpath}/configure + reinplace "s|__UNIVERSAL_CFLAGS__|${configure.universal_cflags}|" ${worksrcpath}/configure + reinplace "s|__UNIVERSAL_LDFLAGS__|${configure.universal_ldflags}|" \ + ${worksrcpath}/configure \ + ${worksrcpath}/Makefile.pre.in + + # http://trac.macports.org/ticket/21517 + system -W ${worksrcpath} "ed - Modules/_localemodule.c < ${filespath}/_localemodule.c.ed" + system -W ${worksrcpath} "ed - Lib/locale.py < ${filespath}/locale.py.ed" +} + +build.target all + +# TODO: From python24, do we still need this? +# Workaround for case-sensitive file systems +post-build { + if { ![file exists ${worksrcpath}/python.exe] } { + ln -s python ${worksrcpath}/python.exe + } +} + +test.run yes +test.target test + +destroot.target frameworkinstall maninstall + +# ensure that correct compiler is used +build.args-append MAKE="${build.cmd}" CC="${configure.cc}" +destroot.args-append MAKE="${destroot.cmd}" CC="${configure.cc}" + +select.group python +select.file ${filespath}/python[string map {. {}} ${branch}] + +notes " +To make python ${branch} the default (i.e. the version you get when you run\ +'python'), please run: + +sudo port select --set ${select.group} [file tail ${select.file}] +" + +platform macosx { +post-destroot { + + set framewpath ${frameworks_dir}/Python.framework + set framewdir ${framewpath}/Versions/${branch} + + # Without this, LINKFORSHARED is set to + # ... $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK) + # (this becomes Python.framework/Versions/2.5/Python) which doesn't + # quite work (see ticket #15099); instead specifically list the + # full path to the proper Python framework file (which becomes + # ${prefix}/Library/Frameworks/Python.framework/Versions/2.5/Python) + reinplace {s|^\(LINKFORSHARED=.*\)$(PYTHONFRAMEWORKDIR).*$|\1 $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)|} ${destroot}${framewdir}/lib/python${branch}/config/Makefile + + foreach dir { lib include } { + file rename ${destroot}${framewdir}/${dir}/python${branch} ${destroot}${prefix}/${dir} + ln -s ${prefix}/${dir}/python${branch} ${destroot}${framewdir}/${dir}/python${branch} + } + ln -s ${prefix}/share ${destroot}${framewdir}/share + + ln -s ${framewdir}/Python ${destroot}${prefix}/lib/libpython${branch}.dylib + + file rename ${destroot}${prefix}/share/man/man1/python.1 ${destroot}${prefix}/share/man/man1/python${branch}.1 + + # delete symlinks without version suffix, use python_select instead to choose version + foreach bin { python pythonw idle pydoc smtpd.py python-config } { + file delete ${destroot}${prefix}/bin/${bin} + } + foreach bin [list python${branch} pythonw${branch} idle${branch} pydoc${branch} smtpd${branch}.py python${branch}-config] { + file rename -force ${destroot}${framewdir}/bin/${bin} ${destroot}${prefix}/bin + ln -s ${prefix}/bin/${bin} ${destroot}${framewdir}/bin/${bin} + } + + foreach dir { Headers Resources Python Versions/Current } { + file delete ${destroot}${framewpath}/${dir} + } + + # Fix incorrectly-pointed libpython2.5.a symlink, see + # http://trac.macports.org/ticket/19906 + set python_staticlink ${destroot}${prefix}/lib/python${branch}/config/libpython${branch}.a + file delete ${python_staticlink} + ln -s ${framewdir}/Python ${python_staticlink} +} +} + +platform darwin { + post-configure { + # See http://trac.macports.org/ticket/18376 + system -W ${worksrcpath} "ed - pyconfig.h < ${filespath}/pyconfig.ed" + } + if {${os.major} >= 10} { + configure.cppflags-append -D_DARWIN_C_SOURCE + patchfiles-append patch-pyconfig.h.in.diff + } + post-patch { + if {![file exists /usr/lib/libSystemStubs.a]} { + reinplace s/-lSystemStubs//g ${worksrcpath}/configure + } + } + post-destroot { + # remove -arch flags from the config + reinplace -E {s|-arch [a-z0-9_]+||g} \ + ${destroot}${prefix}/lib/python${branch}/config/Makefile + } +} + +platform darwin 8 { + patchfiles-append patch-FSIORefNum.diff +} + +platform darwin 9 { + configure.cppflags-append -D__DARWIN_UNIX03 +} + +platform puredarwin { + patchfiles-append patch-Modules-posixmodule.c.diff + configure.args-delete --enable-framework=${frameworks_dir} + configure.args-append --disable-toolbox-glue --disable-framework + destroot.target install maninstall + +post-build { + # thin dynamic library to have the same arch as static lib, even after -lSystemStubs + system "lipo ${worksrcpath}/libpython${branch}.dylib -output ${worksrcpath}/libpython${branch}.dylib -thin `lipo -info ${worksrcpath}/libpython${branch}.a | tail -n 1 | sed -e 's/.*architecture: \\(.*\\)/\\1/'`" +} + +post-destroot { + # delete symlinks without version suffix, use python_select instead to choose version + foreach bin { python pythonw idle pydoc smtpd.py python-config } { + file delete ${destroot}${prefix}/bin/${bin} + } + + file rename ${destroot}${prefix}/share/man/man1/python.1 ${destroot}${prefix}/share/man/man1/python${branch}.1 +} +} + +variant universal { + if {${configure.sdkroot} == ""} { + configure.args-append --enable-universalsdk=/ + } else { + configure.args-append --enable-universalsdk=${configure.sdkroot} + } + post-configure { + system -W ${worksrcpath} "ed - pyconfig.h < ${filespath}/pyconfig.h-universal.ed" + } +} + +livecheck.type regex +livecheck.url ${homepage}download/releases/ +livecheck.regex Python (${branch}.\[0-9\]+) diff --git a/packaging/macosx/ports/lang/python25/files/_localemodule.c.ed b/packaging/macosx/ports/lang/python25/files/_localemodule.c.ed new file mode 100644 index 000000000..d4617a931 --- /dev/null +++ b/packaging/macosx/ports/lang/python25/files/_localemodule.c.ed @@ -0,0 +1,2 @@ +g/defined(__APPLE__)/s//0/g +w diff --git a/packaging/macosx/ports/lang/python25/files/locale.py.ed b/packaging/macosx/ports/lang/python25/files/locale.py.ed new file mode 100644 index 000000000..0bdbf3ea0 --- /dev/null +++ b/packaging/macosx/ports/lang/python25/files/locale.py.ed @@ -0,0 +1,2 @@ +g/'darwin', /s/// +w diff --git a/packaging/macosx/ports/lang/python25/files/patch-64bit.diff b/packaging/macosx/ports/lang/python25/files/patch-64bit.diff new file mode 100644 index 000000000..100617df6 --- /dev/null +++ b/packaging/macosx/ports/lang/python25/files/patch-64bit.diff @@ -0,0 +1,1234 @@ +--- Include/pymactoolbox.h.orig 2004-11-05 18:02:59.000000000 +1100 ++++ Include/pymactoolbox.h 2009-09-10 18:08:58.000000000 +1000 +@@ -8,7 +8,9 @@ + #endif + + #include <Carbon/Carbon.h> ++#ifndef __LP64__ + #include <QuickTime/QuickTime.h> ++#endif /* !__LP64__ */ + + /* + ** Helper routines for error codes and such. +@@ -18,8 +20,10 @@ + PyObject *PyMac_GetOSErrException(void); /* Initialize & return it */ + PyObject *PyErr_Mac(PyObject *, int); /* Exception with a mac error */ + PyObject *PyMac_Error(OSErr); /* Uses PyMac_GetOSErrException */ ++#ifndef __LP64__ + extern OSErr PyMac_GetFullPathname(FSSpec *, char *, int); /* convert + fsspec->path */ ++#endif /* !__LP64__ */ + /* + ** These conversion routines are defined in mactoolboxglue.c itself. + */ +@@ -83,9 +87,10 @@ + #endif /* USE_TOOLBOX_OBJECT_GLUE */ + + /* macfs exports */ ++#ifndef __LP64__ + int PyMac_GetFSSpec(PyObject *, FSSpec *); /* argument parser for FSSpec */ + PyObject *PyMac_BuildFSSpec(FSSpec *); /* Convert FSSpec to PyObject */ +- ++#endif /* !__LP64__ */ + int PyMac_GetFSRef(PyObject *, FSRef *); /* argument parser for FSRef */ + PyObject *PyMac_BuildFSRef(FSRef *); /* Convert FSRef to PyObject */ + +@@ -101,39 +106,54 @@ + extern int CmpInstObj_Convert(PyObject *, ComponentInstance *); + + /* Ctl exports */ ++#ifndef __LP64__ + extern PyObject *CtlObj_New(ControlHandle); + extern int CtlObj_Convert(PyObject *, ControlHandle *); ++#endif /* !__LP64__ */ + + /* Dlg exports */ ++#ifndef __LP64__ + extern PyObject *DlgObj_New(DialogPtr); + extern int DlgObj_Convert(PyObject *, DialogPtr *); + extern PyObject *DlgObj_WhichDialog(DialogPtr); ++#endif /* !__LP64__ */ + + /* Drag exports */ ++#ifndef __LP64__ + extern PyObject *DragObj_New(DragReference); + extern int DragObj_Convert(PyObject *, DragReference *); ++#endif /* !__LP64__ */ + + /* List exports */ ++#ifndef __LP64__ + extern PyObject *ListObj_New(ListHandle); + extern int ListObj_Convert(PyObject *, ListHandle *); ++#endif /* !__LP64__ */ + + /* Menu exports */ ++#ifndef __LP64__ + extern PyObject *MenuObj_New(MenuHandle); + extern int MenuObj_Convert(PyObject *, MenuHandle *); ++#endif /* !__LP64__ */ + + /* Qd exports */ ++#ifndef __LP64__ + extern PyObject *GrafObj_New(GrafPtr); + extern int GrafObj_Convert(PyObject *, GrafPtr *); + extern PyObject *BMObj_New(BitMapPtr); + extern int BMObj_Convert(PyObject *, BitMapPtr *); + extern PyObject *QdRGB_New(RGBColor *); + extern int QdRGB_Convert(PyObject *, RGBColor *); ++#endif /* !__LP64__ */ + + /* Qdoffs exports */ ++#ifndef __LP64__ + extern PyObject *GWorldObj_New(GWorldPtr); + extern int GWorldObj_Convert(PyObject *, GWorldPtr *); ++#endif /* !__LP64__ */ + + /* Qt exports */ ++#ifndef __LP64__ + extern PyObject *TrackObj_New(Track); + extern int TrackObj_Convert(PyObject *, Track *); + extern PyObject *MovieObj_New(Movie); +@@ -146,6 +166,7 @@ + extern int UserDataObj_Convert(PyObject *, UserData *); + extern PyObject *MediaObj_New(Media); + extern int MediaObj_Convert(PyObject *, Media *); ++#endif /* !__LP64__ */ + + /* Res exports */ + extern PyObject *ResObj_New(Handle); +@@ -154,13 +175,17 @@ + extern int OptResObj_Convert(PyObject *, Handle *); + + /* TE exports */ ++#ifndef __LP64__ + extern PyObject *TEObj_New(TEHandle); + extern int TEObj_Convert(PyObject *, TEHandle *); ++#endif /* !__LP64__ */ + + /* Win exports */ ++#ifndef __LP64__ + extern PyObject *WinObj_New(WindowPtr); + extern int WinObj_Convert(PyObject *, WindowPtr *); + extern PyObject *WinObj_WhichWindow(WindowPtr); ++#endif /* !__LP64__ */ + + /* CF exports */ + extern PyObject *CFObj_New(CFTypeRef); +--- Python/mactoolboxglue.c.orig 2006-07-12 02:44:25.000000000 +1000 ++++ Python/mactoolboxglue.c 2009-09-10 19:26:39.000000000 +1000 +@@ -105,7 +105,7 @@ + return PyErr_Mac(PyMac_GetOSErrException(), err); + } + +- ++#ifndef __LP64__ + OSErr + PyMac_GetFullPathname(FSSpec *fss, char *path, int len) + { +@@ -153,6 +153,7 @@ + Py_XDECREF(fs); + return err; + } ++#endif /* !__LP64__ */ + + /* Convert a 4-char string object argument to an OSType value */ + int +@@ -417,6 +418,7 @@ + GLUE_NEW(GWorldPtr, GWorldObj_New, "Carbon.Qdoffs") + GLUE_CONVERT(GWorldPtr, GWorldObj_Convert, "Carbon.Qdoffs") + ++#ifndef __LP64__ + GLUE_NEW(Track, TrackObj_New, "Carbon.Qt") + GLUE_CONVERT(Track, TrackObj_Convert, "Carbon.Qt") + GLUE_NEW(Movie, MovieObj_New, "Carbon.Qt") +@@ -429,6 +431,7 @@ + GLUE_CONVERT(UserData, UserDataObj_Convert, "Carbon.Qt") + GLUE_NEW(Media, MediaObj_New, "Carbon.Qt") + GLUE_CONVERT(Media, MediaObj_Convert, "Carbon.Qt") ++#endif /* !__LP64__ */ + + GLUE_NEW(Handle, ResObj_New, "Carbon.Res") + GLUE_CONVERT(Handle, ResObj_Convert, "Carbon.Res") +--- Modules/_ctypes/libffi/src/darwin/ffitarget.h.orig 2006-05-26 07:58:05.000000000 +1000 ++++ Modules/_ctypes/libffi/src/darwin/ffitarget.h 2009-09-10 20:15:39.000000000 +1000 +@@ -4,7 +4,7 @@ + * created by configure). This makes is possible to build a univeral binary + * of ctypes in one go. + */ +-#if defined(__i386__) ++#if defined(__i386__) || defined(__x86_64__) + + #ifndef X86_DARWIN + #define X86_DARWIN +@@ -13,7 +13,7 @@ + + #include "../src/x86/ffitarget.h" + +-#elif defined(__ppc__) ++#elif defined(__ppc__) || defined(__ppc64__) + + #ifndef POWERPC_DARWIN + #define POWERPC_DARWIN +--- Mac/Modules/res/_Resmodule.c.orig 2005-07-04 06:59:44.000000000 +1000 ++++ Mac/Modules/res/_Resmodule.c 2009-09-10 20:44:43.000000000 +1000 +@@ -414,6 +414,7 @@ + return _res; + } + ++#ifndef __LP64__ + static PyObject *ResObj_as_Control(ResourceObject *_self, PyObject *_args) + { + PyObject *_res = NULL; +@@ -431,6 +432,7 @@ + return _res; + + } ++#endif /* !__LP64__ */ + + static PyObject *ResObj_LoadResource(ResourceObject *_self, PyObject *_args) + { +@@ -501,10 +503,12 @@ + PyDoc_STR("(long newSize) -> None")}, + {"GetNextFOND", (PyCFunction)ResObj_GetNextFOND, 1, + PyDoc_STR("() -> (Handle _rv)")}, ++#ifndef __LP64__ + {"as_Control", (PyCFunction)ResObj_as_Control, 1, + PyDoc_STR("Return this resource/handle as a Control")}, + {"as_Menu", (PyCFunction)ResObj_as_Menu, 1, + PyDoc_STR("Return this resource/handle as a Menu")}, ++#endif /* !__LP64__ */ + {"LoadResource", (PyCFunction)ResObj_LoadResource, 1, + PyDoc_STR("() -> None")}, + {"AutoDispose", (PyCFunction)ResObj_AutoDispose, 1, +@@ -1152,6 +1156,7 @@ + return _res; + } + ++#ifndef __LP64__ + static PyObject *Res_OpenRFPerm(PyObject *_self, PyObject *_args) + { + PyObject *_res = NULL; +@@ -1287,6 +1292,7 @@ + _res = Py_None; + return _res; + } ++#endif /* !__LP64__ */ + + static PyObject *Res_InsertResourceFile(PyObject *_self, PyObject *_args) + { +@@ -1327,6 +1333,7 @@ + return _res; + } + ++#ifndef __LP64__ + static PyObject *Res_FSpResourceFileAlreadyOpen(PyObject *_self, PyObject *_args) + { + PyObject *_res = NULL; +@@ -1413,6 +1420,7 @@ + nextRefNum); + return _res; + } ++#endif /* !__LP64__ */ + + static PyObject *Res_FSOpenResFile(PyObject *_self, PyObject *_args) + { +@@ -1438,6 +1446,7 @@ + return _res; + } + ++#ifndef __LP64__ + static PyObject *Res_FSCreateResFile(PyObject *_self, PyObject *_args) + { + PyObject *_res = NULL; +@@ -1534,6 +1543,7 @@ + PyMac_BuildFSSpec, &newSpec); + return _res; + } ++#endif /* !__LP64__ */ + + static PyObject *Res_FSOpenResourceFile(PyObject *_self, PyObject *_args) + { +@@ -1637,6 +1647,7 @@ + PyDoc_STR("(short refNum) -> (short _rv)")}, + {"SetResFileAttrs", (PyCFunction)Res_SetResFileAttrs, 1, + PyDoc_STR("(short refNum, short attrs) -> None")}, ++#ifndef __LP64__ + {"OpenRFPerm", (PyCFunction)Res_OpenRFPerm, 1, + PyDoc_STR("(Str255 fileName, short vRefNum, SignedByte permission) -> (short _rv)")}, + {"HOpenResFile", (PyCFunction)Res_HOpenResFile, 1, +@@ -1647,10 +1658,12 @@ + PyDoc_STR("(FSSpec spec, SignedByte permission) -> (short _rv)")}, + {"FSpCreateResFile", (PyCFunction)Res_FSpCreateResFile, 1, + PyDoc_STR("(FSSpec spec, OSType creator, OSType fileType, ScriptCode scriptTag) -> None")}, ++#endif /* !__LP64__ */ + {"InsertResourceFile", (PyCFunction)Res_InsertResourceFile, 1, + PyDoc_STR("(SInt16 refNum, RsrcChainLocation where) -> None")}, + {"DetachResourceFile", (PyCFunction)Res_DetachResourceFile, 1, + PyDoc_STR("(SInt16 refNum) -> None")}, ++#ifndef __LP64__ + {"FSpResourceFileAlreadyOpen", (PyCFunction)Res_FSpResourceFileAlreadyOpen, 1, + PyDoc_STR("(FSSpec resourceFile) -> (Boolean _rv, Boolean inChain, SInt16 refNum)")}, + {"FSpOpenOrphanResFile", (PyCFunction)Res_FSpOpenOrphanResFile, 1, +@@ -1659,14 +1672,17 @@ + PyDoc_STR("() -> (SInt16 refNum)")}, + {"GetNextResourceFile", (PyCFunction)Res_GetNextResourceFile, 1, + PyDoc_STR("(SInt16 curRefNum) -> (SInt16 nextRefNum)")}, ++#endif /* !__LP64__ */ + {"FSOpenResFile", (PyCFunction)Res_FSOpenResFile, 1, + PyDoc_STR("(FSRef ref, SignedByte permission) -> (short _rv)")}, ++#ifndef __LP64__ + {"FSCreateResFile", (PyCFunction)Res_FSCreateResFile, 1, + PyDoc_STR("(FSRef parentRef, Buffer nameLength) -> (FSRef newRef, FSSpec newSpec)")}, + {"FSResourceFileAlreadyOpen", (PyCFunction)Res_FSResourceFileAlreadyOpen, 1, + PyDoc_STR("(FSRef resourceFileRef) -> (Boolean _rv, Boolean inChain, SInt16 refNum)")}, + {"FSCreateResourceFile", (PyCFunction)Res_FSCreateResourceFile, 1, + PyDoc_STR("(FSRef parentRef, Buffer nameLength, Buffer forkNameLength) -> (FSRef newRef, FSSpec newSpec)")}, ++#endif /* !__LP64__ */ + {"FSOpenResourceFile", (PyCFunction)Res_FSOpenResourceFile, 1, + PyDoc_STR("(FSRef ref, Buffer forkNameLength, SignedByte permissions) -> (SInt16 refNum)")}, + {"Handle", (PyCFunction)Res_Handle, 1, +--- Mac/Modules/MacOS.c.orig 2006-07-26 05:20:54.000000000 +1000 ++++ Mac/Modules/MacOS.c 2009-09-10 21:47:34.000000000 +1000 +@@ -54,7 +54,7 @@ + do_close(rfobject *self) + { + if (self->isclosed ) return; +- (void)FSClose(self->fRefNum); ++ (void)FSCloseFork(self->fRefNum); + self->isclosed = 1; + } + +@@ -68,6 +68,7 @@ + long n; + PyObject *v; + OSErr err; ++ ByteCount n2; + + if (self->isclosed) { + PyErr_SetString(PyExc_ValueError, "Operation on closed file"); +@@ -81,13 +82,13 @@ + if (v == NULL) + return NULL; + +- err = FSRead(self->fRefNum, &n, PyString_AsString(v)); ++ err = FSReadFork(self->fRefNum, fsAtMark, 0, n, PyString_AsString(v), &n2); + if (err && err != eofErr) { + PyMac_Error(err); + Py_DECREF(v); + return NULL; + } +- _PyString_Resize(&v, n); ++ _PyString_Resize(&v, n2); + return v; + } + +@@ -109,7 +110,7 @@ + } + if (!PyArg_ParseTuple(args, "s#", &buffer, &size)) + return NULL; +- err = FSWrite(self->fRefNum, &size, buffer); ++ err = FSWriteFork(self->fRefNum, fsAtMark, 0, size, buffer, NULL); + if (err) { + PyMac_Error(err); + return NULL; +@@ -126,9 +127,9 @@ + static PyObject * + rf_seek(rfobject *self, PyObject *args) + { +- long amount, pos; ++ long amount; + int whence = SEEK_SET; +- long eof; ++ int mode; + OSErr err; + + if (self->isclosed) { +@@ -138,35 +139,23 @@ + if (!PyArg_ParseTuple(args, "l|i", &amount, &whence)) + return NULL; + +- if ((err = GetEOF(self->fRefNum, &eof))) +- goto ioerr; +- + switch (whence) { + case SEEK_CUR: +- if ((err = GetFPos(self->fRefNum, &pos))) +- goto ioerr; ++ mode = fsFromMark; + break; + case SEEK_END: +- pos = eof; ++ mode = fsFromLEOF; + break; + case SEEK_SET: +- pos = 0; ++ mode = fsFromStart; + break; + default: + PyErr_BadArgument(); + return NULL; + } + +- pos += amount; +- +- /* Don't bother implementing seek past EOF */ +- if (pos > eof || pos < 0) { +- PyErr_BadArgument(); +- return NULL; +- } +- +- if ((err = SetFPos(self->fRefNum, fsFromStart, pos)) ) { +-ioerr: ++ err = FSSetForkPosition(self->fRefNum, mode, amount); ++ if (err != noErr) { + PyMac_Error(err); + return NULL; + } +@@ -182,7 +171,7 @@ + static PyObject * + rf_tell(rfobject *self, PyObject *args) + { +- long where; ++ long long where; + OSErr err; + + if (self->isclosed) { +@@ -191,11 +180,13 @@ + } + if (!PyArg_ParseTuple(args, "")) + return NULL; +- if ((err = GetFPos(self->fRefNum, &where)) ) { ++ ++ err = FSGetForkPosition(self->fRefNum, &where); ++ if (err != noErr) { + PyMac_Error(err); + return NULL; + } +- return PyInt_FromLong(where); ++ return PyLong_FromLongLong(where); + } + + static char rf_close__doc__[] = +@@ -292,17 +283,61 @@ + static PyObject * + MacOS_GetCreatorAndType(PyObject *self, PyObject *args) + { +- FSSpec fss; +- FInfo info; + PyObject *creator, *type, *res; + OSErr err; +- +- if (!PyArg_ParseTuple(args, "O&", PyMac_GetFSSpec, &fss)) ++ FSRef ref; ++ FSCatalogInfo cataloginfo; ++ FileInfo* finfo; ++ ++ if (!PyArg_ParseTuple(args, "O&", PyMac_GetFSRef, &ref)) { ++#ifndef __LP64__ ++ /* This function is documented to take an FSSpec as well, ++ * which only works in 32-bit mode. ++ */ ++ PyErr_Clear(); ++ FSSpec fss; ++ FInfo info; ++ ++ if (!PyArg_ParseTuple(args, "O&", PyMac_GetFSSpec, &fss)) ++ return NULL; ++ ++ if ((err = FSpGetFInfo(&fss, &info)) != noErr) { ++ return PyErr_Mac(MacOS_Error, err); ++ } ++ creator = PyString_FromStringAndSize( ++ (char *)&info.fdCreator, 4); ++ type = PyString_FromStringAndSize((char *)&info.fdType, 4); ++ res = Py_BuildValue("OO", creator, type); ++ Py_DECREF(creator); ++ Py_DECREF(type); ++ return res; ++#else /* __LP64__ */ ++ return NULL; ++#endif /* __LP64__ */ ++ } ++ ++ err = FSGetCatalogInfo(&ref, ++ kFSCatInfoFinderInfo|kFSCatInfoNodeFlags, &cataloginfo, ++ NULL, NULL, NULL); ++ if (err != noErr) { ++ PyErr_Mac(MacOS_Error, err); + return NULL; +- if ((err = FSpGetFInfo(&fss, &info)) != noErr) +- return PyErr_Mac(MacOS_Error, err); +- creator = PyString_FromStringAndSize((char *)&info.fdCreator, 4); +- type = PyString_FromStringAndSize((char *)&info.fdType, 4); ++ } ++ ++ if ((cataloginfo.nodeFlags & kFSNodeIsDirectoryMask) != 0) { ++ /* Directory: doesn't have type/creator info. ++ * ++ * The specific error code is for backward compatibility with ++ * earlier versions. ++ */ ++ PyErr_Mac(MacOS_Error, fnfErr); ++ return NULL; ++ ++ } ++ finfo = (FileInfo*)&(cataloginfo.finderInfo); ++ creator = PyString_FromStringAndSize((char*)&(finfo->fileCreator), 4); ++ type = PyString_FromStringAndSize((char*)&(finfo->fileType), 4); ++ + res = Py_BuildValue("OO", creator, type); + Py_DECREF(creator); + Py_DECREF(type); +@@ -314,20 +349,66 @@ + static PyObject * + MacOS_SetCreatorAndType(PyObject *self, PyObject *args) + { +- FSSpec fss; + ResType creator, type; +- FInfo info; ++ FSRef ref; ++ FileInfo* finfo; + OSErr err; +- ++ FSCatalogInfo cataloginfo; ++ + if (!PyArg_ParseTuple(args, "O&O&O&", ++ PyMac_GetFSRef, &ref, PyMac_GetOSType, &creator, PyMac_GetOSType, &type)) { ++#ifndef __LP64__ ++ /* Try to handle FSSpec arguments, for backward compatibility */ ++ FSSpec fss; ++ FInfo info; ++ ++ if (!PyArg_ParseTuple(args, "O&O&O&", + PyMac_GetFSSpec, &fss, PyMac_GetOSType, &creator, PyMac_GetOSType, &type)) ++ return NULL; ++ ++ if ((err = FSpGetFInfo(&fss, &info)) != noErr) ++ return PyErr_Mac(MacOS_Error, err); ++ ++ info.fdCreator = creator; ++ info.fdType = type; ++ ++ if ((err = FSpSetFInfo(&fss, &info)) != noErr) ++ return PyErr_Mac(MacOS_Error, err); ++ Py_INCREF(Py_None); ++ return Py_None; ++#else /* __LP64__ */ ++ return NULL; ++#endif /* __LP64__ */ ++ } ++ ++ err = FSGetCatalogInfo(&ref, ++ kFSCatInfoFinderInfo|kFSCatInfoNodeFlags, &cataloginfo, ++ NULL, NULL, NULL); ++ if (err != noErr) { ++ PyErr_Mac(MacOS_Error, err); + return NULL; +- if ((err = FSpGetFInfo(&fss, &info)) != noErr) +- return PyErr_Mac(MacOS_Error, err); +- info.fdCreator = creator; +- info.fdType = type; +- if ((err = FSpSetFInfo(&fss, &info)) != noErr) +- return PyErr_Mac(MacOS_Error, err); ++ } ++ ++ if ((cataloginfo.nodeFlags & kFSNodeIsDirectoryMask) != 0) { ++ /* Directory: doesn't have type/creator info. ++ * ++ * The specific error code is for backward compatibility with ++ * earlier versions. ++ */ ++ PyErr_Mac(MacOS_Error, fnfErr); ++ return NULL; ++ ++ } ++ finfo = (FileInfo*)&(cataloginfo.finderInfo); ++ finfo->fileCreator = creator; ++ finfo->fileType = type; ++ ++ err = FSSetCatalogInfo(&ref, kFSCatInfoFinderInfo, &cataloginfo); ++ if (err != noErr) { ++ PyErr_Mac(MacOS_Error, fnfErr); ++ return NULL; ++ } ++ + Py_INCREF(Py_None); + return Py_None; + } +@@ -399,6 +480,7 @@ + return Py_BuildValue("s", buf); + } + ++#ifndef __LP64__ + static char splash_doc[] = "Open a splash-screen dialog by resource-id (0=close)"; + + static PyObject * +@@ -470,6 +552,7 @@ + Py_INCREF(Py_None); + return Py_None; + } ++#endif /* !__LP64__ */ + + static char WMAvailable_doc[] = + "True if this process can interact with the display." +@@ -530,17 +613,18 @@ + { + OSErr err; + char *mode = "r"; +- FSSpec fss; +- SignedByte permission = 1; ++ FSRef ref; ++ SInt8 permission = fsRdPerm; + rfobject *fp; ++ HFSUniStr255 name; + +- if (!PyArg_ParseTuple(args, "O&|s", PyMac_GetFSSpec, &fss, &mode)) ++ if (!PyArg_ParseTuple(args, "O&|s", PyMac_GetFSRef, &ref, &mode)) + return NULL; + while (*mode) { + switch (*mode++) { + case '*': break; +- case 'r': permission = 1; break; +- case 'w': permission = 2; break; ++ case 'r': permission = fsRdPerm; break; ++ case 'w': permission = fsWrPerm; break; + case 'b': break; + default: + PyErr_BadArgument(); +@@ -548,33 +632,18 @@ + } + } + +- if ( (fp = newrfobject()) == NULL ) ++ err = FSGetResourceForkName(&name); ++ if (err != noErr) { ++ PyMac_Error(err); + return NULL; ++ } + +- err = HOpenRF(fss.vRefNum, fss.parID, fss.name, permission, &fp->fRefNum); ++ if ( (fp = newrfobject()) == NULL ) ++ return NULL; ++ + +- if ( err == fnfErr ) { +- /* In stead of doing complicated things here to get creator/type +- ** correct we let the standard i/o library handle it +- */ +- FILE *tfp; +- char pathname[PATHNAMELEN]; +- +- if ( (err=PyMac_GetFullPathname(&fss, pathname, PATHNAMELEN)) ) { +- PyMac_Error(err); +- Py_DECREF(fp); +- return NULL; +- } +- +- if ( (tfp = fopen(pathname, "w")) == NULL ) { +- PyMac_Error(fnfErr); /* What else... */ +- Py_DECREF(fp); +- return NULL; +- } +- fclose(tfp); +- err = HOpenRF(fss.vRefNum, fss.parID, fss.name, permission, &fp->fRefNum); +- } +- if ( err ) { ++ err = FSOpenFork(&ref, name.length, name.unicode, permission, &fp->fRefNum); ++ if (err != noErr) { + Py_DECREF(fp); + PyMac_Error(err); + return NULL; +@@ -589,10 +658,12 @@ + {"SetCreatorAndType", MacOS_SetCreatorAndType, 1, setcrtp_doc}, + {"GetErrorString", MacOS_GetErrorString, 1, geterr_doc}, + {"openrf", MacOS_openrf, 1, openrf_doc}, ++#ifndef __LP64__ + {"splash", MacOS_splash, 1, splash_doc}, + {"DebugStr", MacOS_DebugStr, 1, DebugStr_doc}, +- {"GetTicks", MacOS_GetTicks, 1, GetTicks_doc}, + {"SysBeep", MacOS_SysBeep, 1, SysBeep_doc}, ++#endif /* !__LP64__ */ ++ {"GetTicks", MacOS_GetTicks, 1, GetTicks_doc}, + {"WMAvailable", MacOS_WMAvailable, 1, WMAvailable_doc}, + {NULL, NULL} /* Sentinel */ + }; +--- Mac/Modules/file/_Filemodule.c.orig 2006-05-29 07:57:35.000000000 +1000 ++++ Mac/Modules/file/_Filemodule.c 2009-09-10 22:48:47.000000000 +1000 +@@ -18,9 +18,11 @@ + #include <Carbon/Carbon.h> + + #ifdef USE_TOOLBOX_OBJECT_GLUE ++#ifndef __LP64__ + extern int _PyMac_GetFSSpec(PyObject *v, FSSpec *spec); +-extern int _PyMac_GetFSRef(PyObject *v, FSRef *fsr); + extern PyObject *_PyMac_BuildFSSpec(FSSpec *spec); ++#endif /* !__LP64__ */ ++extern int _PyMac_GetFSRef(PyObject *v, FSRef *fsr); + extern PyObject *_PyMac_BuildFSRef(FSRef *spec); + + #define PyMac_GetFSSpec _PyMac_GetFSSpec +@@ -28,20 +30,26 @@ + #define PyMac_BuildFSSpec _PyMac_BuildFSSpec + #define PyMac_BuildFSRef _PyMac_BuildFSRef + #else ++#ifndef __LP64__ + extern int PyMac_GetFSSpec(PyObject *v, FSSpec *spec); +-extern int PyMac_GetFSRef(PyObject *v, FSRef *fsr); + extern PyObject *PyMac_BuildFSSpec(FSSpec *spec); ++#endif /* !__LP64__ */ ++extern int PyMac_GetFSRef(PyObject *v, FSRef *fsr); + extern PyObject *PyMac_BuildFSRef(FSRef *spec); + #endif + + /* Forward declarations */ ++#ifndef __LP64__ + static PyObject *FInfo_New(FInfo *itself); +-static PyObject *FSRef_New(FSRef *itself); + static PyObject *FSSpec_New(FSSpec *itself); ++#define FSSpec_Convert PyMac_GetFSSpec ++#endif /* !__LP64__ */ ++static PyObject *FSRef_New(FSRef *itself); + static PyObject *Alias_New(AliasHandle itself); ++#ifndef __LP64__ + static int FInfo_Convert(PyObject *v, FInfo *p_itself); ++#endif /* !__LP64__ */ + #define FSRef_Convert PyMac_GetFSRef +-#define FSSpec_Convert PyMac_GetFSSpec + static int Alias_Convert(PyObject *v, AliasHandle *p_itself); + + /* +@@ -62,6 +70,7 @@ + /* + ** Optional fsspec and fsref pointers. None will pass NULL + */ ++#ifndef __LP64__ + static int + myPyMac_GetOptFSSpecPtr(PyObject *v, FSSpec **spec) + { +@@ -71,6 +80,7 @@ + } + return PyMac_GetFSSpec(v, *spec); + } ++#endif /* !__LP64__ */ + + static int + myPyMac_GetOptFSRefPtr(PyObject *v, FSRef **ref) +@@ -92,6 +102,7 @@ + return Py_BuildValue("u#", itself->unicode, itself->length); + } + ++#ifndef __LP64__ + static OSErr + _PyMac_GetFullPathname(FSSpec *fss, char *path, int len) + { +@@ -135,6 +146,7 @@ + } + return 0; + } ++#endif /* !__LP64__ */ + + + static PyObject *File_Error; +@@ -282,12 +294,28 @@ + + static PyObject *FSCatalogInfo_get_permissions(FSCatalogInfoObject *self, void *closure) + { +- return Py_BuildValue("(llll)", self->ob_itself.permissions[0], self->ob_itself.permissions[1], self->ob_itself.permissions[2], self->ob_itself.permissions[3]); ++ FSPermissionInfo* info = (FSPermissionInfo*)&(self->ob_itself.permissions); ++ return Py_BuildValue("(llll)", info->userID, info->groupID, info->userAccess, info->mode); + } + + static int FSCatalogInfo_set_permissions(FSCatalogInfoObject *self, PyObject *v, void *closure) + { +- return PyArg_Parse(v, "(llll)", &self->ob_itself.permissions[0], &self->ob_itself.permissions[1], &self->ob_itself.permissions[2], &self->ob_itself.permissions[3])-1; ++ long userID; ++ long groupID; ++ long userAccess; ++ long mode; ++ int r; ++ ++ FSPermissionInfo* info = (FSPermissionInfo*)&(self->ob_itself.permissions); ++ ++ r = PyArg_Parse(v, "(llll)", &userID, &groupID, &userAccess, &mode); ++ if (!r) { ++ return -1; ++ } ++ info->userID = userID; ++ info->groupID = groupID; ++ info->userAccess = userAccess; ++ info->mode = mode; + return 0; + } + +@@ -501,6 +529,7 @@ + + /* ----------------------- Object type FInfo ------------------------ */ + ++#ifndef __LP64__ + static PyTypeObject FInfo_Type; + + #define FInfo_Check(x) ((x)->ob_type == &FInfo_Type || PyObject_TypeCheck((x), &FInfo_Type)) +@@ -682,6 +711,7 @@ + FInfo_tp_free, /* tp_free */ + }; + ++#endif /* !__LP64__ */ + /* --------------------- End object type FInfo ---------------------- */ + + +@@ -729,6 +759,7 @@ + self->ob_type->tp_free((PyObject *)self); + } + ++#ifndef __LP64__ + static PyObject *Alias_ResolveAlias(AliasObject *_self, PyObject *_args) + { + PyObject *_res = NULL; +@@ -818,6 +849,7 @@ + wasChanged); + return _res; + } ++#endif /* !__LP64__ */ + + static PyObject *Alias_FSResolveAliasWithMountFlags(AliasObject *_self, PyObject *_args) + { +@@ -891,6 +923,7 @@ + } + + static PyMethodDef Alias_methods[] = { ++#ifndef __LP64__ + {"ResolveAlias", (PyCFunction)Alias_ResolveAlias, 1, + PyDoc_STR("(FSSpec fromFile) -> (FSSpec target, Boolean wasChanged)")}, + {"GetAliasInfo", (PyCFunction)Alias_GetAliasInfo, 1, +@@ -899,6 +932,7 @@ + PyDoc_STR("(FSSpec fromFile, unsigned long mountFlags) -> (FSSpec target, Boolean wasChanged)")}, + {"FollowFinderAlias", (PyCFunction)Alias_FollowFinderAlias, 1, + PyDoc_STR("(FSSpec fromFile, Boolean logon) -> (FSSpec target, Boolean wasChanged)")}, ++#endif /* !__LP64__ */ + {"FSResolveAliasWithMountFlags", (PyCFunction)Alias_FSResolveAliasWithMountFlags, 1, + PyDoc_STR("(FSRef fromFile, unsigned long mountFlags) -> (FSRef target, Boolean wasChanged)")}, + {"FSResolveAlias", (PyCFunction)Alias_FSResolveAlias, 1, +@@ -1033,6 +1067,7 @@ + + + /* ----------------------- Object type FSSpec ----------------------- */ ++#ifndef __LP64__ + + static PyTypeObject FSSpec_Type; + +@@ -1488,6 +1523,7 @@ + FSSpec_tp_free, /* tp_free */ + }; + ++#endif /* !__LP64__ */ + /* --------------------- End object type FSSpec --------------------- */ + + +@@ -1568,7 +1604,9 @@ + FSCatalogInfoBitmap whichInfo; + FSCatalogInfo catalogInfo; + FSRef newRef; ++#ifndef __LP64__ + FSSpec newSpec; ++#endif /* !__LP64__ */ + if (!PyArg_ParseTuple(_args, "u#lO&", + &nameLength__in__, &nameLength__in_len__, + &whichInfo, +@@ -1580,11 +1618,20 @@ + whichInfo, + &catalogInfo, + &newRef, +- &newSpec); ++#ifndef __LP64__ ++ &newSpec ++#else ++ NULL ++#endif /* !__LP64__ */ ++ ); + if (_err != noErr) return PyMac_Error(_err); ++#ifndef __LP64__ + _res = Py_BuildValue("O&O&", + FSRef_New, &newRef, + FSSpec_New, &newSpec); ++#else ++ _res = Py_BuildValue("O&O", FSRef_New, &newRef, Py_None); ++#endif /* !__LP64__ */ + return _res; + } + +@@ -1598,7 +1645,9 @@ + FSCatalogInfoBitmap whichInfo; + FSCatalogInfo catalogInfo; + FSRef newRef; ++#ifndef __LP64__ + FSSpec newSpec; ++#endif /* !__LP64__ */ + UInt32 newDirID; + if (!PyArg_ParseTuple(_args, "u#lO&", + &nameLength__in__, &nameLength__in_len__, +@@ -1611,13 +1660,25 @@ + whichInfo, + &catalogInfo, + &newRef, ++#ifndef __LP64__ + &newSpec, ++#else ++ NULL, ++#endif /* !__LP64__ */ + &newDirID); + if (_err != noErr) return PyMac_Error(_err); ++ ++#ifndef __LP64__ + _res = Py_BuildValue("O&O&l", + FSRef_New, &newRef, + FSSpec_New, &newSpec, + newDirID); ++#else ++ _res = Py_BuildValue("O&Ol", ++ FSRef_New, &newRef, ++ Py_None, ++ newDirID); ++#endif /* !__LP64__ */ + return _res; + } + +@@ -1699,7 +1760,9 @@ + FSCatalogInfoBitmap whichInfo; + FSCatalogInfo catalogInfo; + HFSUniStr255 outName; ++#ifndef __LP64__ + FSSpec fsSpec; ++#endif /* !__LP64__ */ + FSRef parentRef; + if (!PyArg_ParseTuple(_args, "l", + &whichInfo)) +@@ -1708,14 +1771,26 @@ + whichInfo, + &catalogInfo, + &outName, ++#ifndef __LP64__ + &fsSpec, ++#else ++ NULL, ++#endif /* !__LP64__ */ + &parentRef); + if (_err != noErr) return PyMac_Error(_err); ++#ifndef __LP64__ + _res = Py_BuildValue("O&O&O&O&", + FSCatalogInfo_New, &catalogInfo, + PyMac_BuildHFSUniStr255, &outName, + FSSpec_New, &fsSpec, + FSRef_New, &parentRef); ++#else ++ _res = Py_BuildValue("O&O&OO&", ++ FSCatalogInfo_New, &catalogInfo, ++ PyMac_BuildHFSUniStr255, &outName, ++ Py_None, ++ FSRef_New, &parentRef); ++#endif /* !__LP64__ */ + return _res; + } + +@@ -1784,7 +1859,7 @@ + UniCharCount forkNameLength__len__; + int forkNameLength__in_len__; + SInt8 permissions; +- SInt16 forkRefNum; ++ FSIORefNum forkRefNum; + if (!PyArg_ParseTuple(_args, "u#b", + &forkNameLength__in__, &forkNameLength__in_len__, + &permissions)) +@@ -2034,7 +2109,7 @@ + + /* --------------------- End object type FSRef ---------------------- */ + +- ++#ifndef __LP64__ + static PyObject *File_UnmountVol(PyObject *_self, PyObject *_args) + { + PyObject *_res = NULL; +@@ -2562,6 +2637,7 @@ + FSSpec_New, &spec); + return _res; + } ++#endif /* !__LP64__ */ + + static PyObject *File_FSGetForkPosition(PyObject *_self, PyObject *_args) + { +@@ -2785,6 +2861,7 @@ + return _res; + } + ++#ifndef __LP64__ + static PyObject *File_NewAlias(PyObject *_self, PyObject *_args) + { + PyObject *_res = NULL; +@@ -2933,6 +3010,7 @@ + wasAliased); + return _res; + } ++#endif /* !__LP64__ */ + + static PyObject *File_FSNewAlias(PyObject *_self, PyObject *_args) + { +@@ -3050,6 +3128,7 @@ + } + + static PyMethodDef File_methods[] = { ++#ifndef __LP64__ + {"UnmountVol", (PyCFunction)File_UnmountVol, 1, + PyDoc_STR("(Str63 volName, short vRefNum) -> None")}, + {"FlushVol", (PyCFunction)File_FlushVol, 1, +@@ -3100,6 +3179,7 @@ + PyDoc_STR("(short vRefNum, long dirID, Str255 oldName, long newDirID, Str255 newName) -> None")}, + {"FSMakeFSSpec", (PyCFunction)File_FSMakeFSSpec, 1, + PyDoc_STR("(short vRefNum, long dirID, Str255 fileName) -> (FSSpec spec)")}, ++#endif /* !__LP64__ */ + {"FSGetForkPosition", (PyCFunction)File_FSGetForkPosition, 1, + PyDoc_STR("(SInt16 forkRefNum) -> (SInt64 position)")}, + {"FSSetForkPosition", (PyCFunction)File_FSSetForkPosition, 1, +@@ -3124,6 +3204,7 @@ + PyDoc_STR("(UInt8 * path, FNMessage message, OptionBits flags) -> None")}, + {"FNNotifyAll", (PyCFunction)File_FNNotifyAll, 1, + PyDoc_STR("(FNMessage message, OptionBits flags) -> None")}, ++#ifndef __LP64__ + {"NewAlias", (PyCFunction)File_NewAlias, 1, + PyDoc_STR("(FSSpec fromFile, FSSpec target) -> (AliasHandle alias)")}, + {"NewAliasMinimalFromFullPath", (PyCFunction)File_NewAliasMinimalFromFullPath, 1, +@@ -3136,6 +3217,7 @@ + PyDoc_STR("(FSSpec fromFile, FSSpec target, AliasHandle alias) -> (Boolean wasChanged)")}, + {"ResolveAliasFileWithMountFlagsNoUI", (PyCFunction)File_ResolveAliasFileWithMountFlagsNoUI, 1, + PyDoc_STR("(FSSpec theSpec, Boolean resolveAliasChains, unsigned long mountFlags) -> (FSSpec theSpec, Boolean targetIsFolder, Boolean wasAliased)")}, ++#endif /* !__LP64__ */ + {"FSNewAlias", (PyCFunction)File_FSNewAlias, 1, + PyDoc_STR("(FSRef fromFile, FSRef target) -> (AliasHandle inAlias)")}, + {"FSResolveAliasFileWithMountFlags", (PyCFunction)File_FSResolveAliasFileWithMountFlags, 1, +@@ -3150,7 +3232,7 @@ + }; + + +- ++#ifndef __LP64__ + int + PyMac_GetFSSpec(PyObject *v, FSSpec *spec) + { +@@ -3188,12 +3270,15 @@ + } + return 0; + } ++#endif /* !__LP64__ */ + + int + PyMac_GetFSRef(PyObject *v, FSRef *fsr) + { + OSStatus err; ++#ifndef __LP64__ + FSSpec fss; ++#endif /* !__LP64__ */ + + if (FSRef_Check(v)) { + *fsr = ((FSRefObject *)v)->ob_itself; +@@ -3211,6 +3296,7 @@ + return !err; + } + /* XXXX Should try unicode here too */ ++#ifndef __LP64__ + /* Otherwise we try to go via an FSSpec */ + if (FSSpec_Check(v)) { + fss = ((FSSpecObject *)v)->ob_itself; +@@ -3219,15 +3305,18 @@ + PyMac_Error(err); + return 0; + } ++#endif /* !__LP64__ */ + PyErr_SetString(PyExc_TypeError, "FSRef, FSSpec or pathname required"); + return 0; + } + ++#ifndef __LP64__ + extern PyObject * + PyMac_BuildFSSpec(FSSpec *spec) + { + return FSSpec_New(spec); + } ++#endif /* !__LP64__ */ + + extern PyObject * + PyMac_BuildFSRef(FSRef *spec) +@@ -3242,10 +3331,11 @@ + PyObject *d; + + +- ++#ifndef __LP64__ + PyMac_INIT_TOOLBOX_OBJECT_NEW(FSSpec *, PyMac_BuildFSSpec); +- PyMac_INIT_TOOLBOX_OBJECT_NEW(FSRef *, PyMac_BuildFSRef); + PyMac_INIT_TOOLBOX_OBJECT_CONVERT(FSSpec, PyMac_GetFSSpec); ++#endif /* !__LP64__ */ ++ PyMac_INIT_TOOLBOX_OBJECT_NEW(FSRef *, PyMac_BuildFSRef); + PyMac_INIT_TOOLBOX_OBJECT_CONVERT(FSRef, PyMac_GetFSRef); + + +@@ -3262,6 +3352,7 @@ + /* Backward-compatible name */ + Py_INCREF(&FSCatalogInfo_Type); + PyModule_AddObject(m, "FSCatalogInfoType", (PyObject *)&FSCatalogInfo_Type); ++#ifndef __LP64__ + FInfo_Type.ob_type = &PyType_Type; + if (PyType_Ready(&FInfo_Type) < 0) return; + Py_INCREF(&FInfo_Type); +@@ -3269,6 +3360,7 @@ + /* Backward-compatible name */ + Py_INCREF(&FInfo_Type); + PyModule_AddObject(m, "FInfoType", (PyObject *)&FInfo_Type); ++#endif /* !__LP64__ */ + Alias_Type.ob_type = &PyType_Type; + if (PyType_Ready(&Alias_Type) < 0) return; + Py_INCREF(&Alias_Type); +@@ -3276,6 +3368,7 @@ + /* Backward-compatible name */ + Py_INCREF(&Alias_Type); + PyModule_AddObject(m, "AliasType", (PyObject *)&Alias_Type); ++#ifndef __LP64__ + FSSpec_Type.ob_type = &PyType_Type; + if (PyType_Ready(&FSSpec_Type) < 0) return; + Py_INCREF(&FSSpec_Type); +@@ -3283,6 +3376,7 @@ + /* Backward-compatible name */ + Py_INCREF(&FSSpec_Type); + PyModule_AddObject(m, "FSSpecType", (PyObject *)&FSSpec_Type); ++#endif /* !__LP64__ */ + FSRef_Type.ob_type = &PyType_Type; + if (PyType_Ready(&FSRef_Type) < 0) return; + Py_INCREF(&FSRef_Type); +Index: Lib/plat-mac/macresource.py +=================================================================== +--- Lib/plat-mac/macresource.py (revision 74680) ++++ Lib/plat-mac/macresource.py (revision 74681) +@@ -79,8 +79,8 @@ + AppleSingle file""" + try: + refno = Res.FSpOpenResFile(pathname, 1) +- except Res.Error, arg: +- if arg[0] in (-37, -39): ++ except (AttributeError, Res.Error), arg: ++ if isinstance(arg, AttributeError) or arg[0] in (-37, -39): + # No resource fork. We may be on OSX, and this may be either + # a data-fork based resource file or a AppleSingle file + # from the CVS repository. +@@ -106,8 +106,8 @@ + try: + refno = Res.FSpOpenResFile(pathname, 1) + Res.CloseResFile(refno) +- except Res.Error, arg: +- if arg[0] in (-37, -39): ++ except (AttributeError, Res.Error), arg: ++ if isinstance(arg, AttributeError) or arg[0] in (-37, -39): + # No resource fork. We may be on OSX, and this may be either + # a data-fork based resource file or a AppleSingle file + # from the CVS repository. +Index: Lib/plat-mac/applesingle.py +=================================================================== +--- Lib/plat-mac/applesingle.py (revision 74680) ++++ Lib/plat-mac/applesingle.py (revision 74681) +@@ -119,8 +119,13 @@ + if not hasattr(infile, 'read'): + if isinstance(infile, Carbon.File.Alias): + infile = infile.ResolveAlias()[0] +- if isinstance(infile, (Carbon.File.FSSpec, Carbon.File.FSRef)): +- infile = infile.as_pathname() ++ ++ if hasattr(Carbon.File, "FSSpec"): ++ if isinstance(infile, (Carbon.File.FSSpec, Carbon.File.FSRef)): ++ infile = infile.as_pathname() ++ else: ++ if isinstance(infile, Carbon.File.FSRef): ++ infile = infile.as_pathname() + infile = open(infile, 'rb') + + asfile = AppleSingle(infile, verbose=verbose) +Index: Mac/scripts/BuildApplet.py +=================================================================== +--- Mac/scripts/BuildApplet.py (revision 74680) ++++ Mac/scripts/BuildApplet.py (revision 74681) +@@ -12,7 +12,10 @@ + + import os + import MacOS +-import EasyDialogs ++try: ++ import EasyDialogs ++except ImportError: ++ EasyDialogs = None + import buildtools + import getopt + +@@ -32,7 +35,10 @@ + try: + buildapplet() + except buildtools.BuildError, detail: +- EasyDialogs.Message(detail) ++ if EasyDialogs is None: ++ print detail ++ else: ++ EasyDialogs.Message(detail) + + + def buildapplet(): +@@ -46,6 +52,10 @@ + # Ask for source text if not specified in sys.argv[1:] + + if not sys.argv[1:]: ++ if EasyDialogs is None: ++ usage() ++ sys.exit(1) ++ + filename = EasyDialogs.AskFileForOpen(message='Select Python source or applet:', + typeList=('TEXT', 'APPL')) + if not filename: +Index: Lib/plat-mac/buildtools.py +=================================================================== +--- Lib/plat-mac/buildtools.py (revision 74680) ++++ Lib/plat-mac/buildtools.py (revision 74681) +@@ -15,7 +15,10 @@ + import MacOS + import macostools + import macresource +-import EasyDialogs ++try: ++ import EasyDialogs ++except ImportError: ++ EasyDialogs = None + import shutil + + +@@ -67,9 +70,13 @@ + rsrcname=None, others=[], raw=0, progress="default", destroot=""): + + if progress == "default": +- progress = EasyDialogs.ProgressBar("Processing %s..."%os.path.split(filename)[1], 120) +- progress.label("Compiling...") +- progress.inc(0) ++ if EasyDialogs is None: ++ print "Compiling %s"%(os.path.split(filename)[1],) ++ process = None ++ else: ++ progress = EasyDialogs.ProgressBar("Processing %s..."%os.path.split(filename)[1], 120) ++ progress.label("Compiling...") ++ progress.inc(0) + # check for the script name being longer than 32 chars. This may trigger a bug + # on OSX that can destroy your sourcefile. + if '#' in os.path.split(filename)[1]: +@@ -119,7 +126,11 @@ + if MacOS.runtimemodel == 'macho': + raise BuildError, "No updating yet for MachO applets" + if progress: +- progress = EasyDialogs.ProgressBar("Updating %s..."%os.path.split(filename)[1], 120) ++ if EasyDialogs is None: ++ print "Updating %s"%(os.path.split(filename)[1],) ++ progress = None ++ else: ++ progress = EasyDialogs.ProgressBar("Updating %s..."%os.path.split(filename)[1], 120) + else: + progress = None + if not output: diff --git a/packaging/macosx/ports/lang/python25/files/patch-FSIORefNum.diff b/packaging/macosx/ports/lang/python25/files/patch-FSIORefNum.diff new file mode 100644 index 000000000..6f8ac6608 --- /dev/null +++ b/packaging/macosx/ports/lang/python25/files/patch-FSIORefNum.diff @@ -0,0 +1,11 @@ +--- Mac/Modules/file/_Filemodule.c.orig 2009-09-12 15:55:59.000000000 +1000 ++++ Mac/Modules/file/_Filemodule.c 2009-09-12 16:12:07.000000000 +1000 +@@ -7,6 +7,8 @@ + + #include "pymactoolbox.h" + ++typedef SInt16 FSIORefNum; ++ + /* Macro to test whether a weak-loaded CFM function exists */ + #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ + PyErr_SetString(PyExc_NotImplementedError, \ diff --git a/packaging/macosx/ports/lang/python25/files/patch-Lib-cgi.py.diff b/packaging/macosx/ports/lang/python25/files/patch-Lib-cgi.py.diff new file mode 100644 index 000000000..8153bebbd --- /dev/null +++ b/packaging/macosx/ports/lang/python25/files/patch-Lib-cgi.py.diff @@ -0,0 +1,18 @@ +--- Lib/cgi.py.orig 2006-08-10 19:41:07.000000000 +0200 ++++ Lib/cgi.py 2007-08-21 15:36:54.000000000 +0200 +@@ -1,13 +1,6 @@ +-#! /usr/local/bin/python ++#! __PREFIX__/bin/python2.5 + +-# NOTE: the above "/usr/local/bin/python" is NOT a mistake. It is +-# intentionally NOT "/usr/bin/env python". On many systems +-# (e.g. Solaris), /usr/local/bin is not in $PATH as passed to CGI +-# scripts, and /usr/local/bin is the default directory where Python is +-# installed, so /usr/bin/env would be unable to find python. Granted, +-# binary installations by Linux vendors often install Python in +-# /usr/bin. So let those vendors patch cgi.py to match their choice +-# of installation. ++# NOTE: The original #!/usr/local/bin/python patched for MacPorts installation + + """Support module for CGI (Common Gateway Interface) scripts. + diff --git a/packaging/macosx/ports/lang/python25/files/patch-Lib-distutils-dist.py.diff b/packaging/macosx/ports/lang/python25/files/patch-Lib-distutils-dist.py.diff new file mode 100644 index 000000000..961a8ad28 --- /dev/null +++ b/packaging/macosx/ports/lang/python25/files/patch-Lib-distutils-dist.py.diff @@ -0,0 +1,51 @@ +--- Lib/distutils/dist.py.orig 2005-03-23 11:54:36.000000000 -0700 ++++ Lib/distutils/dist.py 2008-07-25 21:27:15.000000000 -0600 +@@ -57,6 +57,7 @@ + ('quiet', 'q', "run quietly (turns verbosity off)"), + ('dry-run', 'n', "don't actually do anything"), + ('help', 'h', "show detailed help message"), ++ ('no-user-cfg', None,'ignore pydistutils.cfg in your home directory'), + ] + + # 'common_usage' is a short (2-3 line) string describing the common +@@ -264,6 +265,12 @@ + else: + sys.stderr.write(msg + "\n") + ++ # no-user-cfg is handled before other command line args ++ # because other args override the config files, and this ++ # one is needed before we can load the config files. ++ # If attrs['script_args'] wasn't passed, assume false. ++ self.want_user_cfg = '--no-user-cfg' not in (self.script_args or []) ++ + self.finalize_options() + + # __init__ () +@@ -324,6 +331,9 @@ + Distutils __inst__.py file lives), a file in the user's home + directory named .pydistutils.cfg on Unix and pydistutils.cfg + on Windows/Mac, and setup.cfg in the current directory. ++ ++ The file in the user's home directory can be disabled with the ++ --no-user-cfg option. + """ + files = [] + check_environ() +@@ -343,7 +353,7 @@ + user_filename = "pydistutils.cfg" + + # And look for the user config file +- if os.environ.has_key('HOME'): ++ if self.want_user_cfg and os.environ.has_key('HOME'): + user_file = os.path.join(os.environ.get('HOME'), user_filename) + if os.path.isfile(user_file): + files.append(user_file) +@@ -353,6 +363,8 @@ + if os.path.isfile(local_file): + files.append(local_file) + ++ if DEBUG: ++ print "using config files: %s" % ', '.join(files) + return files + + # find_config_files () diff --git a/packaging/macosx/ports/lang/python25/files/patch-Makefile.pre.in.diff b/packaging/macosx/ports/lang/python25/files/patch-Makefile.pre.in.diff new file mode 100644 index 000000000..e99a24741 --- /dev/null +++ b/packaging/macosx/ports/lang/python25/files/patch-Makefile.pre.in.diff @@ -0,0 +1,49 @@ +--- Makefile.pre.in.orig 2008-09-22 10:22:44.000000000 +1000 ++++ Makefile.pre.in 2011-10-27 06:47:17.000000000 +1100 +@@ -348,8 +348,8 @@ + # Build the shared modules + sharedmods: $(BUILDPYTHON) + case $$MAKEFLAGS in \ +- *-s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py -q build;; \ +- *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py build;; \ ++ *-s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py -q --no-user-cfg build;; \ ++ *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py --no-user-cfg build;; \ + esac + + # Build static library +@@ -387,7 +387,7 @@ + $(RESSRCDIR)/English.lproj/InfoPlist.strings + $(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION) + if test "${UNIVERSALSDK}"; then \ +- $(CC) -o $(LDLIBRARY) -arch i386 -arch ppc -dynamiclib \ ++ $(CC) -o $(LDLIBRARY) __UNIVERSAL_LDFLAGS__ -dynamiclib \ + -isysroot "${UNIVERSALSDK}" \ + -all_load $(LIBRARY) -Wl,-single_module \ + -install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/Python \ +@@ -458,7 +458,7 @@ + $(SIGNAL_OBJS) \ + $(MODOBJS) \ + $(srcdir)/Modules/getbuildinfo.c +- $(CC) -c $(PY_CFLAGS) -DSVNVERSION=\"`LC_ALL=C $(SVNVERSION)`\" -o $@ $(srcdir)/Modules/getbuildinfo.c ++ $(CC) -c $(PY_CFLAGS) -DSVNVERSION="\"`LC_ALL=C $(SVNVERSION)`\"" -o $@ $(srcdir)/Modules/getbuildinfo.c + + Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile + $(CC) -c $(PY_CFLAGS) -DPYTHONPATH='"$(PYTHONPATH)"' \ +@@ -894,7 +894,7 @@ + # Install the dynamically loadable modules + # This goes into $(exec_prefix) + sharedinstall: +- $(RUNSHARED) ./$(BUILDPYTHON) -E $(srcdir)/setup.py install \ ++ $(RUNSHARED) ./$(BUILDPYTHON) -E $(srcdir)/setup.py --no-user-cfg install \ + --prefix=$(prefix) \ + --install-scripts=$(BINDIR) \ + --install-platlib=$(DESTSHARED) \ +@@ -968,7 +968,7 @@ + # This installs a few of the useful scripts in Tools/scripts + scriptsinstall: + SRCDIR=$(srcdir) $(RUNSHARED) \ +- ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/setup.py install \ ++ ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/setup.py --no-user-cfg install \ + --prefix=$(prefix) \ + --install-scripts=$(BINDIR) \ + --root=/$(DESTDIR) diff --git a/packaging/macosx/ports/lang/python25/files/patch-Misc-setuid-prog.c.diff b/packaging/macosx/ports/lang/python25/files/patch-Misc-setuid-prog.c.diff new file mode 100644 index 000000000..0fee9e791 --- /dev/null +++ b/packaging/macosx/ports/lang/python25/files/patch-Misc-setuid-prog.c.diff @@ -0,0 +1,16 @@ +--- Misc/setuid-prog.c.orig Sat Dec 11 14:29:22 2004 ++++ Misc/setuid-prog.c Sat Dec 11 14:30:13 2004 +@@ -70,6 +70,12 @@ + #define environ _environ + #endif + ++#if defined(__APPLE__) ++#include <sys/time.h> ++#include <crt_externs.h> ++#define environ (*_NSGetEnviron()) ++#endif ++ + /* don't change def_IFS */ + char def_IFS[] = "IFS= \t\n"; + /* you may want to change def_PATH, but you should really change it in */ + diff --git a/packaging/macosx/ports/lang/python25/files/patch-Modules-posixmodule.c.diff b/packaging/macosx/ports/lang/python25/files/patch-Modules-posixmodule.c.diff new file mode 100644 index 000000000..c14913cf7 --- /dev/null +++ b/packaging/macosx/ports/lang/python25/files/patch-Modules-posixmodule.c.diff @@ -0,0 +1,21 @@ +--- Modules/posixmodule.c.orig Sat Dec 11 14:27:52 2004 ++++ Modules/posixmodule.c Sat Dec 11 14:28:17 2004 +@@ -339,7 +339,7 @@ + #endif + + /* Return a dictionary corresponding to the POSIX environment table */ +-#ifdef WITH_NEXT_FRAMEWORK ++#ifdef __APPLE__ + /* On Darwin/MacOSX a shared library or framework has no access to + ** environ directly, we must obtain it with _NSGetEnviron(). + */ +@@ -357,7 +357,7 @@ + d = PyDict_New(); + if (d == NULL) + return NULL; +-#ifdef WITH_NEXT_FRAMEWORK ++#ifdef __APPLE__ + if (environ == NULL) + environ = *_NSGetEnviron(); + #endif + diff --git a/packaging/macosx/ports/lang/python25/files/patch-configure.diff b/packaging/macosx/ports/lang/python25/files/patch-configure.diff new file mode 100644 index 000000000..22d260047 --- /dev/null +++ b/packaging/macosx/ports/lang/python25/files/patch-configure.diff @@ -0,0 +1,45 @@ +--- configure.orig 2008-12-14 01:13:52.000000000 +1100 ++++ configure 2011-05-10 16:25:02.000000000 +1000 +@@ -4534,9 +4534,11 @@ + ;; + # is there any other compiler on Darwin besides gcc? + Darwin*) +- BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp -mno-fused-madd" ++ BASECFLAGS="$BASECFLAGS -mno-fused-madd" + if test "${enable_universalsdk}"; then +- BASECFLAGS="-arch ppc -arch i386 -isysroot ${UNIVERSALSDK} ${BASECFLAGS}" ++ BASECFLAGS="__UNIVERSAL_CFLAGS__ -isysroot ${UNIVERSALSDK} ${BASECFLAGS}" ++ else ++ BASECFLAGS="-arch __BUILD_ARCH__ ${BASECFLAGS}" + fi + + ;; +@@ -11362,7 +11364,7 @@ + if test "${enable_universalsdk}"; then + : + else +- LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`" ++ LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only __BUILD_ARCH__" + fi + LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' + LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';; +@@ -11374,7 +11376,7 @@ + else + LIBTOOL_CRUFT="" + fi +- LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`" ++ LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only __BUILD_ARCH__" + LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' + LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';; + esac +@@ -11524,7 +11526,9 @@ + if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2 + then + if test "${enable_universalsdk}"; then +- LDFLAGS="-arch i386 -arch ppc -isysroot ${UNIVERSALSDK} ${LDFLAGS}" ++ LDFLAGS="__UNIVERSAL_LDFLAGS__ -isysroot ${UNIVERSALSDK} ${LDFLAGS}" ++ else ++ LDFLAGS="-arch __BUILD_ARCH__ ${LDFLAGS}" + fi + LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup' + BLDSHARED="$LDSHARED" diff --git a/packaging/macosx/ports/lang/python25/files/patch-fwrapv.diff b/packaging/macosx/ports/lang/python25/files/patch-fwrapv.diff new file mode 100644 index 000000000..130a3ad5d --- /dev/null +++ b/packaging/macosx/ports/lang/python25/files/patch-fwrapv.diff @@ -0,0 +1,12 @@ +--- configure.orig 2011-11-22 09:08:58.000000000 +1100 ++++ configure 2011-11-22 09:10:56.000000000 +1100 +@@ -4428,9 +4428,7 @@ + STRICT_PROTO="-Wstrict-prototypes" + fi + # For gcc 4.x we need to use -fwrapv so lets check if its supported +- if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then + WRAP="-fwrapv" +- fi + case $ac_cv_prog_cc_g in + yes) + if test "$Py_DEBUG" = 'true' ; then diff --git a/packaging/macosx/ports/lang/python25/files/patch-libedit.diff b/packaging/macosx/ports/lang/python25/files/patch-libedit.diff new file mode 100644 index 000000000..99da7a9c4 --- /dev/null +++ b/packaging/macosx/ports/lang/python25/files/patch-libedit.diff @@ -0,0 +1,132 @@ +--- configure.orig 2011-10-31 13:23:35.000000000 +1100 ++++ configure 2011-10-31 13:28:19.000000000 +1100 +@@ -20985,9 +20985,9 @@ + echo $ECHO_N "checking how to link readline libs... $ECHO_C" >&6; } + for py_libtermcap in "" ncursesw ncurses curses termcap; do + if test -z "$py_libtermcap"; then +- READLINE_LIBS="-lreadline" ++ READLINE_LIBS="-ledit" + else +- READLINE_LIBS="-lreadline -l$py_libtermcap" ++ READLINE_LIBS="-ledit -l$py_libtermcap" + fi + LIBS="$READLINE_LIBS $LIBS_no_readline" + cat >conftest.$ac_ext <<_ACEOF +@@ -21060,13 +21060,13 @@ + fi + + # check for readline 2.1 +-{ echo "$as_me:$LINENO: checking for rl_callback_handler_install in -lreadline" >&5 +-echo $ECHO_N "checking for rl_callback_handler_install in -lreadline... $ECHO_C" >&6; } ++{ echo "$as_me:$LINENO: checking for rl_callback_handler_install in -ledit" >&5 ++echo $ECHO_N "checking for rl_callback_handler_install in -ledit... $ECHO_C" >&6; } + if test "${ac_cv_lib_readline_rl_callback_handler_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lreadline $READLINE_LIBS $LIBS" ++LIBS="-ledit $READLINE_LIBS $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -21137,7 +21137,7 @@ + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include <readline/readline.h> ++#include <editline/readline.h> + _ACEOF + if { (ac_try="$ac_cpp conftest.$ac_ext" + case "(($ac_try" in +@@ -21172,7 +21172,7 @@ + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include <readline/readline.h> ++#include <editline/readline.h> + + _ACEOF + if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +@@ -21188,13 +21188,13 @@ + fi + + # check for readline 4.0 +-{ echo "$as_me:$LINENO: checking for rl_pre_input_hook in -lreadline" >&5 +-echo $ECHO_N "checking for rl_pre_input_hook in -lreadline... $ECHO_C" >&6; } ++{ echo "$as_me:$LINENO: checking for rl_pre_input_hook in -ledit" >&5 ++echo $ECHO_N "checking for rl_pre_input_hook in -ledit... $ECHO_C" >&6; } + if test "${ac_cv_lib_readline_rl_pre_input_hook+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lreadline $READLINE_LIBS $LIBS" ++LIBS="-ledit $READLINE_LIBS $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -21259,13 +21259,13 @@ + + + # check for readline 4.2 +-{ echo "$as_me:$LINENO: checking for rl_completion_matches in -lreadline" >&5 +-echo $ECHO_N "checking for rl_completion_matches in -lreadline... $ECHO_C" >&6; } ++{ echo "$as_me:$LINENO: checking for rl_completion_matches in -ledit" >&5 ++echo $ECHO_N "checking for rl_completion_matches in -ledit... $ECHO_C" >&6; } + if test "${ac_cv_lib_readline_rl_completion_matches+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lreadline $READLINE_LIBS $LIBS" ++LIBS="-ledit $READLINE_LIBS $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -21336,7 +21336,7 @@ + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include <readline/readline.h> ++#include <editline/readline.h> + _ACEOF + if { (ac_try="$ac_cpp conftest.$ac_ext" + case "(($ac_try" in +@@ -21371,7 +21371,7 @@ + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include <readline/readline.h> ++#include <editline/readline.h> + + _ACEOF + if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +--- setup.py.orig 2011-10-31 13:23:35.000000000 +1100 ++++ setup.py 2011-10-31 13:32:40.000000000 +1100 +@@ -488,7 +488,7 @@ + else: + readline_extra_link_args = () + +- readline_libs = ['readline'] ++ readline_libs = ['edit'] + if self.compiler.find_library_file(lib_dirs, + 'ncursesw'): + readline_libs.append('ncursesw') +--- Modules/readline.c.orig 2007-01-23 03:10:27.000000000 +1100 ++++ Modules/readline.c 2011-10-31 14:00:36.000000000 +1100 +@@ -28,8 +28,7 @@ + + /* GNU readline definitions */ + #undef HAVE_CONFIG_H /* Else readline/chardefs.h includes strings.h */ +-#include <readline/readline.h> +-#include <readline/history.h> ++#include <editline/readline.h> + + #ifdef HAVE_RL_COMPLETION_MATCHES + #define completion_matches(x, y) \ +@@ -794,7 +793,6 @@ readline_until_enter_or_signal(char *pro + PyEval_SaveThread(); + #endif + if (s < 0) { +- rl_free_line_state(); + rl_cleanup_after_signal(); + rl_callback_handler_remove(); + *signal = 1; diff --git a/packaging/macosx/ports/lang/python25/files/patch-mac_ver.diff b/packaging/macosx/ports/lang/python25/files/patch-mac_ver.diff new file mode 100644 index 000000000..5350dee29 --- /dev/null +++ b/packaging/macosx/ports/lang/python25/files/patch-mac_ver.diff @@ -0,0 +1,114 @@ + +# HG changeset patch +# User Ronald Oussoren <ronaldoussoren@mac.com> +# Date 1279889153 0 +# Node ID e267ee9760bd14a8b4270e12af982c941fa7a67d +# Parent bdc069a1a721b28ad21849232bd5426dda871506 +Merged revisions 83085 via svnmerge from +svn+ssh://pythondev@svn.python.org/python/branches/release27-maint + +................ + r83085 | ronald.oussoren | 2010-07-23 13:41:00 +0100 (Fri, 23 Jul 2010) | 12 lines + + Merged revisions 83075 via svnmerge from + svn+ssh://pythondev@svn.python.org/python/branches/py3k + + ........ + r83075 | ronald.oussoren | 2010-07-23 12:54:59 +0100 (Fri, 23 Jul 2010) | 5 lines + + Fix for issue 7895. Avoid crashing the interpreter + when calling platform.mac_ver after calling os.fork by + reading from a system configuration file instead of + using OSX APIs. + ........ +................ + +diff --git a/Lib/platform.py b/Lib/platform.py +--- Lib/platform.py ++++ Lib/platform.py +@@ -562,28 +562,20 @@ def _bcd2str(bcd): + + return hex(bcd)[2:] + +-def mac_ver(release='',versioninfo=('','',''),machine=''): +- +- """ Get MacOS version information and return it as tuple (release, +- versioninfo, machine) with versioninfo being a tuple (version, +- dev_stage, non_release_version). +- +- Entries which cannot be determined are set to the paramter values +- which default to ''. All tuple entries are strings. +- ++def _mac_ver_gestalt(): ++ """ + Thanks to Mark R. Levinson for mailing documentation links and + code examples for this function. Documentation for the + gestalt() API is available online at: + + http://www.rgaros.nl/gestalt/ +- + """ + # Check whether the version info module is available + try: + import gestalt + import MacOS + except ImportError: +- return release,versioninfo,machine ++ return None + # Get the infos + sysv,sysu,sysa = _mac_ver_lookup(('sysv','sysu','sysa')) + # Decode the infos +@@ -619,6 +611,53 @@ def mac_ver(release='',versioninfo=('',' + machine = {0x1: '68k', + 0x2: 'PowerPC', + 0xa: 'i386'}.get(sysa,'') ++ ++ return release,versioninfo,machine ++ ++def _mac_ver_xml(): ++ fn = '/System/Library/CoreServices/SystemVersion.plist' ++ if not os.path.exists(fn): ++ return None ++ ++ try: ++ import plistlib ++ except ImportError: ++ return None ++ ++ pl = plistlib.readPlist(fn) ++ release = pl['ProductVersion'] ++ versioninfo=('', '', '') ++ machine = os.uname()[4] ++ if machine == 'ppc': ++ # for compatibility with the gestalt based code ++ machine = 'PowerPC' ++ ++ return release,versioninfo,machine ++ ++ ++def mac_ver(release='',versioninfo=('','',''),machine=''): ++ ++ """ Get MacOS version information and return it as tuple (release, ++ versioninfo, machine) with versioninfo being a tuple (version, ++ dev_stage, non_release_version). ++ ++ Entries which cannot be determined are set to the paramter values ++ which default to ''. All tuple entries are strings. ++ """ ++ ++ # First try reading the information from an XML file which should ++ # always be present ++ info = _mac_ver_xml() ++ if info is not None: ++ return info ++ ++ # If that doesn't work for some reason fall back to reading the ++ # information using gestalt calls. ++ info = _mac_ver_gestalt() ++ if info is not None: ++ return info ++ ++ # If that also doesn't work return the default values + return release,versioninfo,machine + + def _java_getprop(name,default): diff --git a/packaging/macosx/ports/lang/python25/files/patch-pyconfig.h.in.diff b/packaging/macosx/ports/lang/python25/files/patch-pyconfig.h.in.diff new file mode 100644 index 000000000..bd0ecd803 --- /dev/null +++ b/packaging/macosx/ports/lang/python25/files/patch-pyconfig.h.in.diff @@ -0,0 +1,13 @@ +--- pyconfig.h.in.orig 2009-08-16 10:22:50.000000000 -0700 ++++ pyconfig.h.in 2009-08-16 10:23:24.000000000 -0700 +@@ -4,6 +4,10 @@ + #ifndef Py_PYCONFIG_H + #define Py_PYCONFIG_H + ++// Required on Darwin 10+ ++#ifndef _DARWIN_C_SOURCE ++#define _DARWIN_C_SOURCE ++#endif + + /* Define for AIX if your compiler is a genuine IBM xlC/xlC_r and you want + support for AIX C++ shared extension modules. */ diff --git a/packaging/macosx/ports/lang/python25/files/patch-setup.py-disabled_modules.diff b/packaging/macosx/ports/lang/python25/files/patch-setup.py-disabled_modules.diff new file mode 100644 index 000000000..14d3bc582 --- /dev/null +++ b/packaging/macosx/ports/lang/python25/files/patch-setup.py-disabled_modules.diff @@ -0,0 +1,11 @@ +--- setup.py.orig 2009-03-31 12:20:48.000000000 -0600 ++++ setup.py 2009-09-17 00:33:12.000000000 -0600 +@@ -17,7 +17,7 @@ + from distutils.command.install_lib import install_lib + + # This global variable is used to hold the list of modules to be disabled. +-disabled_module_list = [] ++disabled_module_list = ["_tkinter", "gdbm"] + + def add_dir_to_list(dirlist, dir): + """Add the directory 'dir' to the list 'dirlist' (at the front) if diff --git a/packaging/macosx/ports/lang/python25/files/patch-setup.py.diff b/packaging/macosx/ports/lang/python25/files/patch-setup.py.diff new file mode 100644 index 000000000..2649594c8 --- /dev/null +++ b/packaging/macosx/ports/lang/python25/files/patch-setup.py.diff @@ -0,0 +1,80 @@ +--- setup.py.orig 2008-10-16 12:58:19.000000000 -0600 ++++ setup.py 2009-06-07 20:55:17.000000000 -0600 +@@ -609,7 +609,7 @@ + # a release. Most open source OSes come with one or more + # versions of BerkeleyDB already installed. + +- max_db_ver = (4, 5) ++ max_db_ver = (4, 6) + # NOTE: while the _bsddb.c code links against BerkeleyDB 4.6.x + # we leave that version disabled by default as it has proven to be + # quite a buggy library release on many platforms. +@@ -636,6 +636,7 @@ + db_inc_paths.append('/usr/local/include/db4%d' % x) + db_inc_paths.append('/pkg/db-4.%d/include' % x) + db_inc_paths.append('/opt/db-4.%d/include' % x) ++ db_inc_paths.append('__PREFIX__/include/db4%d' % x) + # 3.x minor number specific paths + for x in (3,): + db_inc_paths.append('/usr/include/db3%d' % x) +@@ -711,6 +712,7 @@ + + # check lib directories parallel to the location of the header + db_dirs_to_check = [ ++ os.path.join('__PREFIX__', 'lib', 'db46'), + os.path.join(db_incdir, '..', 'lib64'), + os.path.join(db_incdir, '..', 'lib'), + os.path.join(db_incdir, '..', '..', 'lib64'), +@@ -1212,13 +1214,7 @@ + def detect_tkinter(self, inc_dirs, lib_dirs): + # The _tkinter module. + +- # Rather than complicate the code below, detecting and building +- # AquaTk is a separate method. Only one Tkinter will be built on +- # Darwin - either AquaTk, if it is found, or X11 based Tk. + platform = self.get_platform() +- if (platform == 'darwin' and +- self.detect_tkinter_darwin(inc_dirs, lib_dirs)): +- return + + # Assume we haven't found any of the libraries or include files + # The versions with dots are used on Unix, and the versions without +--- setup.py.orig 2009-09-10 19:41:32.000000000 +1000 ++++ setup.py 2009-09-10 19:48:30.000000000 +1000 +@@ -1197,7 +1197,7 @@ + # For 8.4a2, the X11 headers are not included. Rather than include a + # complicated search, this is a hard-coded path. It could bail out + # if X11 libs are not found... +- include_dirs.append('/usr/X11R6/include') ++ #include_dirs.append('/usr/X11R6/include') + frameworks = ['-framework', 'Tcl', '-framework', 'Tk'] + + ext = Extension('_tkinter', ['_tkinter.c', 'tkappinit.c'], +@@ -1262,17 +1262,17 @@ + if platform == 'sunos5': + include_dirs.append('/usr/openwin/include') + added_lib_dirs.append('/usr/openwin/lib') +- elif os.path.exists('/usr/X11R6/include'): +- include_dirs.append('/usr/X11R6/include') +- added_lib_dirs.append('/usr/X11R6/lib64') +- added_lib_dirs.append('/usr/X11R6/lib') +- elif os.path.exists('/usr/X11R5/include'): +- include_dirs.append('/usr/X11R5/include') +- added_lib_dirs.append('/usr/X11R5/lib') +- else: ++ #elif os.path.exists('/usr/X11R6/include'): ++ # include_dirs.append('/usr/X11R6/include') ++ # added_lib_dirs.append('/usr/X11R6/lib64') ++ # added_lib_dirs.append('/usr/X11R6/lib') ++ #elif os.path.exists('/usr/X11R5/include'): ++ # include_dirs.append('/usr/X11R5/include') ++ # added_lib_dirs.append('/usr/X11R5/lib') ++ #else: + # Assume default location for X11 +- include_dirs.append('/usr/X11/include') +- added_lib_dirs.append('/usr/X11/lib') ++ # include_dirs.append('/usr/X11/include') ++ # added_lib_dirs.append('/usr/X11/lib') + + # If Cygwin, then verify that X is installed before proceeding + if platform == 'cygwin': diff --git a/packaging/macosx/ports/lang/python25/files/pyconfig.ed b/packaging/macosx/ports/lang/python25/files/pyconfig.ed new file mode 100644 index 000000000..671d0d560 --- /dev/null +++ b/packaging/macosx/ports/lang/python25/files/pyconfig.ed @@ -0,0 +1,2 @@ +g,.*\(HAVE_POLL[_A-Z]*\).*,s,,/* #undef \1 */, +w diff --git a/packaging/macosx/ports/lang/python25/files/pyconfig.h-universal.ed b/packaging/macosx/ports/lang/python25/files/pyconfig.h-universal.ed new file mode 100644 index 000000000..67ecc11a1 --- /dev/null +++ b/packaging/macosx/ports/lang/python25/files/pyconfig.h-universal.ed @@ -0,0 +1,50 @@ +/HAVE_LARGEFILE_SUPPORT/c +#ifdef __LP64__ +/* #undef HAVE_LARGEFILE_SUPPORT */ +#else +#define HAVE_LARGEFILE_SUPPORT 1 +#endif +. +/SIZEOF_LONG/c +#ifdef __LP64__ +#define SIZEOF_LONG 8 +#else +#define SIZEOF_LONG 4 +#endif +. +/SIZEOF_PTHREAD_T/c +#ifdef __LP64__ +#define SIZEOF_PTHREAD_T 8 +#else +#define SIZEOF_PTHREAD_T 4 +#endif +. +/SIZEOF_SIZE_T/c +#ifdef __LP64__ +#define SIZEOF_SIZE_T 8 +#else +#define SIZEOF_SIZE_T 4 +#endif +. +/SIZEOF_TIME_T/c +#ifdef __LP64__ +#define SIZEOF_TIME_T 8 +#else +#define SIZEOF_TIME_T 4 +#endif +. +/SIZEOF_UINTPTR_T/c +#ifdef __LP64__ +#define SIZEOF_UINTPTR_T 8 +#else +#define SIZEOF_UINTPTR_T 4 +#endif +. +/SIZEOF_VOID_P/c +#ifdef __LP64__ +#define SIZEOF_VOID_P 8 +#else +#define SIZEOF_VOID_P 4 +#endif +. +w diff --git a/packaging/macosx/ports/lang/python25/files/python25 b/packaging/macosx/ports/lang/python25/files/python25 new file mode 100644 index 000000000..e7ca5aed2 --- /dev/null +++ b/packaging/macosx/ports/lang/python25/files/python25 @@ -0,0 +1,13 @@ +bin/python2.5 +bin/pythonw2.5 +bin/python2.5-config +bin/idle2.5 +bin/pydoc2.5 +bin/smtpd2.5.py +- +- +share/man/man1/python2.5.1.gz +${frameworks_dir}/Python.framework/Versions/2.5 +${frameworks_dir}/Python.framework/Versions/2.5/Headers +${frameworks_dir}/Python.framework/Versions/2.5/Resources +${frameworks_dir}/Python.framework/Versions/2.5/Python diff --git a/packaging/macosx/ports/lang/python26/Portfile b/packaging/macosx/ports/lang/python26/Portfile new file mode 100644 index 000000000..c72cd28d5 --- /dev/null +++ b/packaging/macosx/ports/lang/python26/Portfile @@ -0,0 +1,158 @@ +# $Id: Portfile 49077 2009-04-03 07:13:13Z erickt@macports.org $ + +PortSystem 1.0 +PortGroup select 1.0 + +name python26 +version 2.6.1 +revision 100 +set major [lindex [split $version .] 0] +set branch [join [lrange [split ${version} .] 0 1] .] +categories lang +platforms darwin +maintainers blb mcalhoun + +description An interpreted, object-oriented programming language +long_description Python is an interpreted, interactive, object-oriented \ + programming language. + +homepage http://www.python.org/ +master_sites ${homepage}/ftp/python/${version}/ \ + ftp://ftp.python.org/pub/python/${version}/ + +distname Python-${version} +use_bzip2 yes + +checksums md5 e81c2f0953aa60f8062c05a4673f2be0 \ + sha1 419f0cb29e9713ea861dde8c43d107c51329e57b \ + rmd160 497dafaca9c150fca611b0175eeb13c2fc4d3e2d + +# patch-Lib-distutils-dist.py.diff comes from +# <http://bugs.python.org/issue1180> +patchfiles patch-Makefile.pre.in.diff \ + patch-setup.py.diff \ + patch-Lib-cgi.py.diff \ + patch-Lib-distutils-dist.py.diff \ + patch-Mac-IDLE-Makefile.in.diff \ + patch-Mac-Makefile.in.diff \ + patch-Mac-PythonLauncher-Makefile.in.diff \ + patch-Mac-Tools-Doc-setup.py.diff + +depends_lib port:gettext port:zlib port:openssl port:tk \ + port:sqlite3 port:db46 port:ncurses port:gdbm \ + port:bzip2 port:readline + +configure.args --enable-framework=${frameworks_dir} \ + --enable-ipv6 + +use_parallel_build no + +post-patch { + reinplace "s|@@PREFIX@@|${prefix}|g" ${worksrcpath}/Lib/cgi.py + reinplace "s|@@APPLICATIONS_DIR@@|${applications_dir}|g" \ + ${worksrcpath}/Mac/Makefile.in ${worksrcpath}/Mac/IDLE/Makefile.in \ + ${worksrcpath}/Mac/Tools/Doc/setup.py \ + ${worksrcpath}/Mac/PythonLauncher/Makefile.in + + # See http://trac.macports.org/changeset/37861 + reinplace "s|xargs -0 rm -r|/usr/bin/xargs -0 /bin/rm -r|g" \ + ${worksrcpath}/Mac/PythonLauncher/Makefile.in +} + +build.target all + +test.run yes +test.target test + +destroot.target frameworkinstall maninstall + +# ensure that correct compiler is used +build.args-append MAKE="${build.cmd} CC=${configure.cc}" +destroot.args-append MAKE="${destroot.cmd} CC=${configure.cc}" + +select.group python +select.file ${filespath}/python[string map {. {}} ${branch}] + +post-destroot { + set framewpath ${frameworks_dir}/Python.framework + set framewdir ${framewpath}/Versions/${branch} + + foreach dir { Headers Resources Python Versions/Current } { + file delete ${destroot}${framewpath}/${dir} + } + + ln -s ${framewdir}/share/man/man1/python.1 ${destroot}${prefix}/share/man/man1/python${branch}.1 + + # Without this, LINKFORSHARED is set to + # ... $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK) + # (this becomes Python.framework/Versions/2.6/Python) which doesn't + # quite work (see ticket #15099); instead specifically list the + # full path to the proper Python framework file (which becomes + # ${prefix}/Library/Frameworks/Python.framework/Versions/2.6/Python) + reinplace {s|^\(LINKFORSHARED=.*\)$(PYTHONFRAMEWORKDIR).*$|\1 $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)|} ${destroot}${framewdir}/lib/python${branch}/config/Makefile + + # The framework version.plist isn't currently being installed so + # we'll copy ours for now (see http://trac.macports.org/ticket/18773 and + # http://bugs.python.org/issue4937) + xinstall -m 644 ${filespath}/version.plist \ + ${destroot}${framewdir}/Resources/version.plist +} + +post-activate { + ui_msg "\nTo fully complete your installation and make python $branch the default, please run +\n\tsudo port install python_select \ +\n\tsudo python_select $name\n" +} + +platform darwin { + post-configure { + # See http://trac.macports.org/ticket/18376 + system "cd ${worksrcpath} && ed - pyconfig.h < ${filespath}/pyconfig.ed" + } +} + +platform darwin 7 { + # there is no SystemStubs on 10.3 + post-patch { + reinplace "s|-lSystemStubs||g" ${worksrcpath}/configure \ + ${worksrcpath}/configure.in + } + post-configure { + reinplace "s|-lSystemStubs||g" ${worksrcpath}/Makefile.pre.in \ + ${worksrcpath}/Makefile.pre ${worksrcpath}/Makefile + } + # To avoid GCC incompatibility issue. See http://nxg.me.uk/note/2004/restFP/ (by ebgssth at gmail.com, ticket #13322) + configure.ldflags-append "-lcc_dynamic" +} + +platform darwin 10 { + configure.compiler gcc-4.2 +} + +variant universal { + post-patch { + set universal_arch_flags {} + set arch_run_32bit {} + foreach arch ${universal_archs} { + lappend universal_arch_flags -arch ${arch} + if { ${arch}=="i386" || ${arch}=="ppc" } { + lappend arch_run_32bit -${arch} + } + } + reinplace \ + "s|UNIVERSAL_ARCH_FLAGS=\".*\"|UNIVERSAL_ARCH_FLAGS=\"${universal_arch_flags}\"|" \ + ${worksrcpath}/configure + reinplace \ + "s|ARCH_RUN_32BIT=\".*\"|ARCH_RUN_32BIT=\"arch ${arch_run_32bit}\"|" \ + ${worksrcpath}/configure + } + configure.args-append --enable-universalsdk=${universal_sysroot} +} + +variant ucs4 description {Enable support for UCS4} { + configure.args-append --enable-unicode=ucs4 +} + +#livecheck.check regex +#livecheck.url ${homepage}download/releases/ +#livecheck.regex Python (${branch}(?:\\.\\d+)*) diff --git a/packaging/macosx/ports/lang/python26/files/patch-Lib-cgi.py.diff b/packaging/macosx/ports/lang/python26/files/patch-Lib-cgi.py.diff new file mode 100644 index 000000000..fb861bc82 --- /dev/null +++ b/packaging/macosx/ports/lang/python26/files/patch-Lib-cgi.py.diff @@ -0,0 +1,18 @@ +--- Lib/cgi.py.orig 2006-08-10 19:41:07.000000000 +0200 ++++ Lib/cgi.py 2007-08-21 15:36:54.000000000 +0200 +@@ -1,13 +1,6 @@ +-#! /usr/local/bin/python ++#! @@PREFIX@@/bin/python2.6 + +-# NOTE: the above "/usr/local/bin/python" is NOT a mistake. It is +-# intentionally NOT "/usr/bin/env python". On many systems +-# (e.g. Solaris), /usr/local/bin is not in $PATH as passed to CGI +-# scripts, and /usr/local/bin is the default directory where Python is +-# installed, so /usr/bin/env would be unable to find python. Granted, +-# binary installations by Linux vendors often install Python in +-# /usr/bin. So let those vendors patch cgi.py to match their choice +-# of installation. ++# NOTE: /usr/local/bin/python patched for MacPorts installation + + """Support module for CGI (Common Gateway Interface) scripts. + diff --git a/packaging/macosx/ports/lang/python26/files/patch-Lib-distutils-dist.py.diff b/packaging/macosx/ports/lang/python26/files/patch-Lib-distutils-dist.py.diff new file mode 100644 index 000000000..45276c555 --- /dev/null +++ b/packaging/macosx/ports/lang/python26/files/patch-Lib-distutils-dist.py.diff @@ -0,0 +1,51 @@ +--- Lib/distutils/dist.py.orig 2008-09-03 05:13:56.000000000 -0600 ++++ Lib/distutils/dist.py 2008-10-03 18:33:47.000000000 -0600 +@@ -60,6 +60,7 @@ + ('quiet', 'q', "run quietly (turns verbosity off)"), + ('dry-run', 'n', "don't actually do anything"), + ('help', 'h', "show detailed help message"), ++ ('no-user-cfg', None,'ignore pydistutils.cfg in your home directory'), + ] + + # 'common_usage' is a short (2-3 line) string describing the common +@@ -267,6 +268,12 @@ + else: + sys.stderr.write(msg + "\n") + ++ # no-user-cfg is handled before other command line args ++ # because other args override the config files, and this ++ # one is needed before we can load the config files. ++ # If attrs['script_args'] wasn't passed, assume false. ++ self.want_user_cfg = '--no-user-cfg' not in (self.script_args or []) ++ + self.finalize_options() + + # __init__ () +@@ -327,6 +334,9 @@ + Distutils __inst__.py file lives), a file in the user's home + directory named .pydistutils.cfg on Unix and pydistutils.cfg + on Windows/Mac, and setup.cfg in the current directory. ++ ++ The file in the user's home directory can be disabled with the ++ --no-user-cfg option. + """ + files = [] + check_environ() +@@ -347,7 +357,7 @@ + + # And look for the user config file + user_file = os.path.join(os.path.expanduser('~'), user_filename) +- if os.path.isfile(user_file): ++ if self.want_user_cfg and os.path.isfile(user_file): + files.append(user_file) + + # All platforms support local setup.cfg +@@ -355,6 +365,8 @@ + if os.path.isfile(local_file): + files.append(local_file) + ++ if DEBUG: ++ print "using config files: %s" % ', '.join(files) + return files + + # find_config_files () diff --git a/packaging/macosx/ports/lang/python26/files/patch-Mac-IDLE-Makefile.in.diff b/packaging/macosx/ports/lang/python26/files/patch-Mac-IDLE-Makefile.in.diff new file mode 100644 index 000000000..bafcf4715 --- /dev/null +++ b/packaging/macosx/ports/lang/python26/files/patch-Mac-IDLE-Makefile.in.diff @@ -0,0 +1,11 @@ +--- Mac/IDLE/Makefile.in.orig 2008-07-17 23:48:03.000000000 -0600 ++++ Mac/IDLE/Makefile.in 2008-10-04 19:50:50.000000000 -0600 +@@ -22,7 +22,7 @@ + + BUNDLEBULDER=$(srcdir)/../../Lib/plat-mac/bundlebuilder.py + +-PYTHONAPPSDIR=/Applications/$(PYTHONFRAMEWORK) $(VERSION) ++PYTHONAPPSDIR=@@APPLICATIONS_DIR@@/$(PYTHONFRAMEWORK) $(VERSION) + + all: IDLE.app + diff --git a/packaging/macosx/ports/lang/python26/files/patch-Mac-Makefile.in.diff b/packaging/macosx/ports/lang/python26/files/patch-Mac-Makefile.in.diff new file mode 100644 index 000000000..cfa5f88ff --- /dev/null +++ b/packaging/macosx/ports/lang/python26/files/patch-Mac-Makefile.in.diff @@ -0,0 +1,11 @@ +--- Mac/Makefile.in.orig 2008-07-22 01:06:33.000000000 -0600 ++++ Mac/Makefile.in 2008-10-04 19:51:40.000000000 -0600 +@@ -18,7 +18,7 @@ + + # These are normally glimpsed from the previous set + bindir=$(prefix)/bin +-PYTHONAPPSDIR=/Applications/$(PYTHONFRAMEWORK) $(VERSION) ++PYTHONAPPSDIR=@@APPLICATIONS_DIR@@/$(PYTHONFRAMEWORK) $(VERSION) + APPINSTALLDIR=$(prefix)/Resources/Python.app + + # Variables for installing the "normal" unix binaries diff --git a/packaging/macosx/ports/lang/python26/files/patch-Mac-PythonLauncher-Makefile.in.diff b/packaging/macosx/ports/lang/python26/files/patch-Mac-PythonLauncher-Makefile.in.diff new file mode 100644 index 000000000..be74da903 --- /dev/null +++ b/packaging/macosx/ports/lang/python26/files/patch-Mac-PythonLauncher-Makefile.in.diff @@ -0,0 +1,11 @@ +--- Mac/PythonLauncher/Makefile.in.orig 2008-05-02 13:58:56.000000000 -0600 ++++ Mac/PythonLauncher/Makefile.in 2008-10-04 19:52:27.000000000 -0600 +@@ -21,7 +21,7 @@ + + BUNDLEBULDER=$(srcdir)/../../Lib/plat-mac/bundlebuilder.py + +-PYTHONAPPSDIR=/Applications/$(PYTHONFRAMEWORK) $(VERSION) ++PYTHONAPPSDIR=@@APPLICATIONS_DIR@@/$(PYTHONFRAMEWORK) $(VERSION) + OBJECTS=FileSettings.o MyAppDelegate.o MyDocument.o PreferencesWindowController.o doscript.o main.o + + all: Python\ Launcher.app diff --git a/packaging/macosx/ports/lang/python26/files/patch-Mac-Tools-Doc-setup.py.diff b/packaging/macosx/ports/lang/python26/files/patch-Mac-Tools-Doc-setup.py.diff new file mode 100644 index 000000000..63e4e11d2 --- /dev/null +++ b/packaging/macosx/ports/lang/python26/files/patch-Mac-Tools-Doc-setup.py.diff @@ -0,0 +1,11 @@ +--- Mac/Tools/Doc/setup.py.diff 2008-03-29 09:24:25.000000000 -0600 ++++ Mac/Tools/Doc/setup.py 2008-10-04 19:53:40.000000000 -0600 +@@ -30,7 +30,7 @@ + + MAJOR_VERSION='2.4' + MINOR_VERSION='2.4.1' +-DESTDIR='/Applications/MacPython-%s/PythonIDE.app/Contents/Resources/English.lproj/PythonDocumentation' % MAJOR_VERSION ++DESTDIR='@@APPLICATIONS_DIR@@/MacPython-%s/PythonIDE.app/Contents/Resources/English.lproj/PythonDocumentation' % MAJOR_VERSION + + class DocBuild(build): + def initialize_options(self): diff --git a/packaging/macosx/ports/lang/python26/files/patch-Makefile.pre.in.diff b/packaging/macosx/ports/lang/python26/files/patch-Makefile.pre.in.diff new file mode 100644 index 000000000..60cd69706 --- /dev/null +++ b/packaging/macosx/ports/lang/python26/files/patch-Makefile.pre.in.diff @@ -0,0 +1,31 @@ +--- Makefile.pre.in.orig 2008-06-19 20:47:03.000000000 -0600 ++++ Makefile.pre.in 2008-07-28 19:57:15.000000000 -0600 +@@ -394,8 +394,8 @@ + # Build the shared modules + sharedmods: $(BUILDPYTHON) + @case $$MAKEFLAGS in \ +- *s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py -q build;; \ +- *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py build;; \ ++ *s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py -q --no-user-cfg build;; \ ++ *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py --no-user-cfg build;; \ + esac + + # Build static library +@@ -993,7 +993,7 @@ + # Install the dynamically loadable modules + # This goes into $(exec_prefix) + sharedinstall: +- $(RUNSHARED) ./$(BUILDPYTHON) -E $(srcdir)/setup.py install \ ++ $(RUNSHARED) ./$(BUILDPYTHON) -E $(srcdir)/setup.py --no-user-cfg install \ + --prefix=$(prefix) \ + --install-scripts=$(BINDIR) \ + --install-platlib=$(DESTSHARED) \ +@@ -1073,7 +1073,7 @@ + # This installs a few of the useful scripts in Tools/scripts + scriptsinstall: + SRCDIR=$(srcdir) $(RUNSHARED) \ +- ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/setup.py install \ ++ ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/setup.py --no-user-cfg install \ + --prefix=$(prefix) \ + --install-scripts=$(BINDIR) \ + --root=/$(DESTDIR) diff --git a/packaging/macosx/ports/lang/python26/files/patch-setup.py.diff b/packaging/macosx/ports/lang/python26/files/patch-setup.py.diff new file mode 100644 index 000000000..3acb4ac2b --- /dev/null +++ b/packaging/macosx/ports/lang/python26/files/patch-setup.py.diff @@ -0,0 +1,16 @@ +--- setup.py.orig 2008-09-29 18:15:45.000000000 -0600 ++++ setup.py 2008-11-30 23:13:09.000000000 -0700 +@@ -1506,13 +1506,7 @@ + def detect_tkinter(self, inc_dirs, lib_dirs): + # The _tkinter module. + +- # Rather than complicate the code below, detecting and building +- # AquaTk is a separate method. Only one Tkinter will be built on +- # Darwin - either AquaTk, if it is found, or X11 based Tk. + platform = self.get_platform() +- if (platform == 'darwin' and +- self.detect_tkinter_darwin(inc_dirs, lib_dirs)): +- return + + # Assume we haven't found any of the libraries or include files + # The versions with dots are used on Unix, and the versions without diff --git a/packaging/macosx/ports/lang/python26/files/pyconfig.ed b/packaging/macosx/ports/lang/python26/files/pyconfig.ed new file mode 100644 index 000000000..671d0d560 --- /dev/null +++ b/packaging/macosx/ports/lang/python26/files/pyconfig.ed @@ -0,0 +1,2 @@ +g,.*\(HAVE_POLL[_A-Z]*\).*,s,,/* #undef \1 */, +w diff --git a/packaging/macosx/ports/lang/python26/files/python26 b/packaging/macosx/ports/lang/python26/files/python26 new file mode 100644 index 000000000..5be5fa655 --- /dev/null +++ b/packaging/macosx/ports/lang/python26/files/python26 @@ -0,0 +1,12 @@ +bin/python2.6 +bin/pythonw2.6 +bin/python2.6-config +bin/idle2.6 +bin/pydoc2.6 +bin/smtpd2.6.py +- +share/man/man1/python2.6.1.gz +${frameworks_dir}/Library/Frameworks/Python.framework/Versions/2.6 +${frameworks_dir}/Library/Frameworks/Python.framework/Versions/2.6/Headers +${frameworks_dir}/Library/Frameworks/Python.framework/Versions/2.6/Resources +${frameworks_dir}/Library/Frameworks/Python.framework/Versions/2.6/Python diff --git a/packaging/macosx/ports/lang/python26/files/version.plist b/packaging/macosx/ports/lang/python26/files/version.plist new file mode 100644 index 000000000..acdfe5bac --- /dev/null +++ b/packaging/macosx/ports/lang/python26/files/version.plist @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>BuildVersion</key> + <string>1</string> + <key>CFBundleShortVersionString</key> + <string>2.6.1</string> + <key>CFBundleVersion</key> + <string>2.6.1</string> + <key>ProjectName</key> + <string>Python</string> + <key>SourceVersion</key> + <string>2.6.1</string> +</dict> +</plist> diff --git a/packaging/macosx/ports/python/py-Pillow/Portfile b/packaging/macosx/ports/python/py-Pillow/Portfile new file mode 100644 index 000000000..6935fab95 --- /dev/null +++ b/packaging/macosx/ports/python/py-Pillow/Portfile @@ -0,0 +1,74 @@ +# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4 +# $Id: Portfile 124123 2014-08-19 13:57:18Z stromnov@macports.org $ + +PortSystem 1.0 +PortGroup python 1.0 + +name py-Pillow +version 2.5.3 +revision 100 +categories-append devel +platforms darwin +license BSD + +python.versions 26 27 32 33 34 + +maintainers stromnov openmaintainer + +description Python Imaging Library (fork) + +long_description ${description} + +homepage http://github.com/python-imaging/Pillow +master_sites http://pypi.python.org/packages/source/P/Pillow/ + +distname Pillow-${version} + +checksums rmd160 f10cda34a62022edf3bfe626096b6bc009a74dc8 \ + sha256 62ff6c6cb88d4a1d6e856315b1691186b06cb923f18fde86d6abac9eeb9096d1 + +if {${name} ne ${subport}} { + use_zip yes + + conflicts py${python.version}-pil + + depends_build port:py${python.version}-setuptools + depends_lib-append \ + port:zlib \ + port:jpeg \ + port:tiff \ + port:lcms \ + port:webp \ + port:openjpeg \ + port:freetype + + patchfiles patch-setup.py.diff + + post-patch { + reinplace "s|@prefix@|${prefix}|g" ${worksrcpath}/setup.py + } + + livecheck.type none +} else { + livecheck.type regex + livecheck.url ${master_sites} + livecheck.regex {Pillow-(\d+(?:\.\d+)*)\.[tz]} +} + +variant quartz conflicts x11 tkinter { + # tkinter doesn't build +} + +variant x11 conflicts quartz { + # tkinter does build +} + +variant tkinter description {with tkinter support} { + if {$subport != $name} { + depends_lib-append port:py${python.version}-tkinter + } +} + +if { ![variant_isset quartz] } { + default_variants-append +tkinter +} diff --git a/packaging/macosx/ports/python/py-Pillow/files/patch-setup.py.diff b/packaging/macosx/ports/python/py-Pillow/files/patch-setup.py.diff new file mode 100644 index 000000000..fe300cfe5 --- /dev/null +++ b/packaging/macosx/ports/python/py-Pillow/files/patch-setup.py.diff @@ -0,0 +1,120 @@ +--- setup.py.orig 2014-07-04 17:25:36.000000000 +0200 ++++ setup.py 2014-07-04 17:33:05.000000000 +0200 +@@ -19,7 +19,7 @@ + from setuptools import Extension, setup, find_packages + + # monkey patch import hook. Even though flake8 says it's not used, it is. +-# comment this out to disable multi threaded builds. ++# comment this out to disable multi threaded builds. + import mp_compile + + _IMAGING = ( +@@ -200,44 +200,8 @@ + "/usr/lib", "python%s" % sys.version[:3], "config")) + + elif sys.platform == "darwin": +- # attempt to make sure we pick freetype2 over other versions +- _add_directory(include_dirs, "/sw/include/freetype2") +- _add_directory(include_dirs, "/sw/lib/freetype2/include") +- # fink installation directories +- _add_directory(library_dirs, "/sw/lib") +- _add_directory(include_dirs, "/sw/include") +- # darwin ports installation directories +- _add_directory(library_dirs, "/opt/local/lib") +- _add_directory(include_dirs, "/opt/local/include") +- +- # if Homebrew is installed, use its lib and include directories +- import subprocess +- try: +- prefix = subprocess.check_output( +- ['brew', '--prefix'] +- ).strip().decode('latin1') +- except: +- # Homebrew not installed +- prefix = None +- +- ft_prefix = None +- +- if prefix: +- # add Homebrew's include and lib directories +- _add_directory(library_dirs, os.path.join(prefix, 'lib')) +- _add_directory(include_dirs, os.path.join(prefix, 'include')) +- ft_prefix = os.path.join(prefix, 'opt', 'freetype') +- +- if ft_prefix and os.path.isdir(ft_prefix): +- # freetype might not be linked into Homebrew's prefix +- _add_directory(library_dirs, os.path.join(ft_prefix, 'lib')) +- _add_directory( +- include_dirs, os.path.join(ft_prefix, 'include')) +- else: +- # fall back to freetype from XQuartz if +- # Homebrew's freetype is missing +- _add_directory(library_dirs, "/usr/X11/lib") +- _add_directory(include_dirs, "/usr/X11/include") ++ _add_directory(library_dirs, "@prefix@/lib") ++ _add_directory(include_dirs, "@prefix@/include") + + elif sys.platform.startswith("linux"): + arch_tp = (plat.processor(), plat.architecture()[0]) +@@ -337,21 +301,6 @@ + else: + TCL_ROOT = None + +- # add standard directories +- +- # look for tcl specific subdirectory (e.g debian) +- if _tkinter: +- tcl_dir = "/usr/include/tcl" + TCL_VERSION +- if os.path.isfile(os.path.join(tcl_dir, "tk.h")): +- _add_directory(include_dirs, tcl_dir) +- +- # standard locations +- _add_directory(library_dirs, "/usr/local/lib") +- _add_directory(include_dirs, "/usr/local/include") +- +- _add_directory(library_dirs, "/usr/lib") +- _add_directory(include_dirs, "/usr/include") +- + # on Windows, look for the OpenJPEG libraries in the location that + # the official installer puts them + if sys.platform == "win32": +@@ -410,7 +359,7 @@ + for directory in self.compiler.include_dirs: + try: + listdir = os.listdir(directory) +- except Exception: ++ except Exception: + # WindowsError, FileNotFoundError + continue + for name in listdir: +@@ -570,29 +519,7 @@ + exts.append(Extension( + "PIL._webp", ["_webp.c"], libraries=libs, define_macros=defs)) + +- if sys.platform == "darwin": +- # locate Tcl/Tk frameworks +- frameworks = [] +- framework_roots = [ +- "/Library/Frameworks", +- "/System/Library/Frameworks"] +- for root in framework_roots: +- if ( +- os.path.exists(os.path.join(root, "Tcl.framework")) and +- os.path.exists(os.path.join(root, "Tk.framework"))): +- print("--- using frameworks at %s" % root) +- frameworks = ["-framework", "Tcl", "-framework", "Tk"] +- dir = os.path.join(root, "Tcl.framework", "Headers") +- _add_directory(self.compiler.include_dirs, dir, 0) +- dir = os.path.join(root, "Tk.framework", "Headers") +- _add_directory(self.compiler.include_dirs, dir, 1) +- break +- if frameworks: +- exts.append(Extension( +- "PIL._imagingtk", ["_imagingtk.c", "Tk/tkImaging.c"], +- extra_compile_args=frameworks, extra_link_args=frameworks)) +- feature.tcl = feature.tk = 1 # mark as present +- elif feature.tcl and feature.tk: ++ if feature.tcl and feature.tk: + exts.append(Extension( + "PIL._imagingtk", ["_imagingtk.c", "Tk/tkImaging.c"], + libraries=[feature.tcl, feature.tk])) diff --git a/packaging/macosx/ports/python/py-sk1libs/Portfile b/packaging/macosx/ports/python/py-sk1libs/Portfile new file mode 100644 index 000000000..0c152ce8c --- /dev/null +++ b/packaging/macosx/ports/python/py-sk1libs/Portfile @@ -0,0 +1,64 @@ +# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4 +# $Id$ + +PortSystem 1.0 +PortGroup python 1.0 + +name py-sk1libs +version 0.9.1 +revision 101 +license LGPL-2 +maintainers nomaintainer +categories python graphics +platforms darwin +homepage http://sk1project.org/ + +description Set of python non-GUI extensions for sK1 Project + +long_description \ + sk1libs is a set of python non-GUI extensions for sK1 Project. \ + The package includes multiplatform non-GUI extensions which are \ + usually native extensions. + +distname sk1libs-${version} +# MacPorts does not properly support URLs with a get parameter. +# Workaround for this bug: https://trac.macports.org/wiki/PortfileRecipes#fetchwithgetparams +master_sites http://sk1project.org/dc.php?target=${distfiles}&dummy= + +checksums md5 e18088bbc8a105e7535a96f40b80f284 \ + sha1 dd948558128bb6547b1f277087bf3066104912da \ + rmd160 38f22205e0b5b6078e31ec6dc4c1d93845533046 + +python.versions 25 26 27 + +if {$subport != $name} { + + depends_lib-append \ + port:freetype \ + port:jpeg \ + port:lcms \ + port:zlib + + depends_run-append \ + port:py${python.version}-pil + + variant Pillow { + depends_run-delete port:py${python.version}-pil + depends_run-append port:py${python.version}-Pillow + } + + patchfiles \ + patch-src-utils-fs.py.diff \ + patch-src-imaging-libimagingft-_imagingft.c.diff + + post-patch { + reinplace "s|'/usr/include/freetype2'|'${prefix}/include/freetype2'|g" ${worksrcpath}/setup.py + reinplace "s|__PREFIX__|${prefix}|g" ${worksrcpath}/src/utils/fs.py + } +} + +default_variants +Pillow + +livecheck.type regex +livecheck.url http://sk1project.org/modules.php?name=Products&product=uniconvertor&op=download +livecheck.regex "sk1libs-(\\d+(?:\\.\\d+)*)${extract.suffix}" diff --git a/packaging/macosx/ports/python/py-sk1libs/files/patch-src-imaging-libimagingft-_imagingft.c.diff b/packaging/macosx/ports/python/py-sk1libs/files/patch-src-imaging-libimagingft-_imagingft.c.diff new file mode 100644 index 000000000..1d69461a3 --- /dev/null +++ b/packaging/macosx/ports/python/py-sk1libs/files/patch-src-imaging-libimagingft-_imagingft.c.diff @@ -0,0 +1,16 @@ +--- src/imaging/libimagingft/_imagingft.c.orig 2014-07-13 00:37:57.000000000 +0200 ++++ src/imaging/libimagingft/_imagingft.c 2014-07-13 00:41:08.000000000 +0200 +@@ -70,7 +70,13 @@ + const char* message; + } ft_errors[] = + ++#if defined(USE_FREETYPE_2_1) ++/* freetype 2.1 and newer */ ++#include FT_ERRORS_H ++#else ++/* freetype 2.0 */ + #include <freetype/fterrors.h> ++#endif + + /* -------------------------------------------------------------------- */ + /* font objects */ diff --git a/packaging/macosx/ports/python/py-sk1libs/files/patch-src-utils-fs.py.diff b/packaging/macosx/ports/python/py-sk1libs/files/patch-src-utils-fs.py.diff new file mode 100644 index 000000000..541935e71 --- /dev/null +++ b/packaging/macosx/ports/python/py-sk1libs/files/patch-src-utils-fs.py.diff @@ -0,0 +1,26 @@ +--- src/utils/fs.py.orig 2010-05-23 12:46:21.000000000 +0200 ++++ src/utils/fs.py 2013-01-18 15:40:02.000000000 +0100 +@@ -220,8 +220,14 @@ + finally: + _winreg.CloseKey( k ) + if system.get_os_family()==system.MACOSX: +- #FIXME: It's a stub. The paths should be more exact. +- return ['/',] ++ return ['__PREFIX__/share/fonts', ++ '/usr/share/fonts', ++ '/opt/X11/lib/X11/fonts', ++ '/System/Library/Fonts', ++ '/Network/Library/Fonts', ++ '/Library/Fonts', ++ os.path.expanduser("~/Library/Fonts"), ++ os.path.expanduser("~/.fonts")] + + + DIRECTORY_OBJECT=0 +@@ -311,4 +317,4 @@ + if __name__ == '__main__': + _test() + +- +\ No newline at end of file ++ diff --git a/packaging/macosx/ports/python/py-uniconvertor/Portfile b/packaging/macosx/ports/python/py-uniconvertor/Portfile new file mode 100644 index 000000000..2c4a22ca0 --- /dev/null +++ b/packaging/macosx/ports/python/py-uniconvertor/Portfile @@ -0,0 +1,46 @@ +# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4 +# $Id$ + +PortSystem 1.0 +PortGroup python 1.0 + +name py-uniconvertor +version 1.1.5 +revision 100 +license LGPL-2 GPL-2 +maintainers nomaintainer +categories python graphics +platforms darwin +homepage http://sk1project.org/modules.php?name=Products&product=uniconvertor + +description universal vector graphics translator. + +long_description \ + UniConvertor is a universal vector graphics translator. It is a command \ + line tool which uses sK1 object model to convert one format to another. \ + Supported input formats include CorelDraw v7-X4 (CDR/CDT/CCX/CDRX/CMX), \ + Adobe Illustrator v5-9 (AI), PS, EPS, CGM, WMF, XFIG, SVG, SK, SK1, AFF. \ + Supported output formats include Adobe Illustrator AI, PS, CGM, WMF, \ + SVG, SK, SK1, PDF. + +distname uniconvertor-${version} +# MacPorts does not properly support URLs with a get parameter. +# Workaround for this bug: https://trac.macports.org/wiki/PortfileRecipes#fetchwithgetparams +master_sites http://sk1project.org/dc.php?target=${distfiles}&dummy= + +checksums md5 d1272315a58304ece2ff588834e23f72 \ + sha1 51ec7c4487048c3357ed95cdb4ab3524018a2c9e \ + rmd160 86211bdb7b7af7611a9db4a2e2f6101995af6850 + +python.versions 25 26 27 + +if {$subport != $name} { + + depends_lib-append \ + port:py${python.version}-sk1libs + +} + +livecheck.type regex +livecheck.url http://sk1project.org/modules.php?name=Products&product=uniconvertor&op=download +livecheck.regex "uniconvertor-(\\d+(?:\\.\\d+)*)${extract.suffix}" diff --git a/packaging/macosx/ports/python/py25-Pillow/Portfile b/packaging/macosx/ports/python/py25-Pillow/Portfile new file mode 100644 index 000000000..aa74a06ad --- /dev/null +++ b/packaging/macosx/ports/python/py25-Pillow/Portfile @@ -0,0 +1,77 @@ +# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4 +# $Id: Portfile 104088 2013-03-15 14:39:56Z stromnov@macports.org $ + +PortSystem 1.0 +PortGroup python 1.0 + +name py25-Pillow +set real_name py-Pillow +version 1.7.8 +revision 100 +categories-append devel +platforms darwin +license BSD + +python.versions 25 +python.version 25 + +maintainers stromnov openmaintainer + +description Python Imaging Library (fork) + +long_description ${description} + +homepage http://github.com/python-imaging/Pillow +master_sites http://pypi.python.org/packages/source/P/Pillow/ + +distname Pillow-${version} +use_zip yes + +checksums rmd160 e52cec02d943951a80d30b32b1764cb3ae87b283 \ + sha256 907f5342b1df1d277dcc10df2aeabc61099e5a07e0676b9fcd1bb7379890c0ee + +if {$subport == $name} { + conflicts py${python.version}-pil + + depends_build port:py${python.version}-setuptools + depends_lib-append \ + port:zlib \ + port:jpeg \ + port:tiff \ + port:lcms \ + port:webp \ + port:freetype + + patchfiles patch-setup.py-v1.7.8.diff \ + patch-_imagingft.c.diff + + post-patch { + reinplace "s|@prefix@|${prefix}|g" ${worksrcpath}/setup.py + } + + livecheck.type none +#} else { +# livecheck.type regex +# livecheck.url ${master_sites} +# livecheck.regex "Pillow-(\\d+(?:\\.\\d+)*)${extract.suffix}" +} + +variant quartz conflicts x11 tkinter { + # tkinter doesn't build +} + +variant x11 conflicts quartz { + # tkinter does build +} + +variant tkinter description {with tkinter support} { + if {$subport == $name} { + depends_lib-append port:py${python.version}-tkinter + } +} + +#if { ![variant_isset quartz] } { +# default_variants-append +tkinter +#} + +default_variants -tkinter diff --git a/packaging/macosx/ports/python/py25-Pillow/files/patch-_imagingft.c.diff b/packaging/macosx/ports/python/py25-Pillow/files/patch-_imagingft.c.diff new file mode 100644 index 000000000..99f72a8c9 --- /dev/null +++ b/packaging/macosx/ports/python/py25-Pillow/files/patch-_imagingft.c.diff @@ -0,0 +1,14 @@ +--- _imagingft.c.orig 2013-11-27 16:07:53.000000000 +0400 ++++ _imagingft.c 2013-11-27 16:12:01.000000000 +0400 +@@ -70,7 +70,11 @@ + const char* message; + } ft_errors[] = + ++#if defined(USE_FREETYPE_2_1) ++#include FT_ERRORS_H ++#else + #include <freetype/fterrors.h> ++#endif + + /* -------------------------------------------------------------------- */ + /* font objects */ diff --git a/packaging/macosx/ports/python/py25-Pillow/files/patch-setup.py-v1.7.8.diff b/packaging/macosx/ports/python/py25-Pillow/files/patch-setup.py-v1.7.8.diff new file mode 100644 index 000000000..2f4b797f6 --- /dev/null +++ b/packaging/macosx/ports/python/py25-Pillow/files/patch-setup.py-v1.7.8.diff @@ -0,0 +1,83 @@ +--- setup.py.orig 2014-09-02 02:51:22.000000000 +0200 ++++ setup.py 2014-09-02 02:53:51.000000000 +0200 +@@ -100,18 +100,9 @@ + "/usr/lib", "python%s" % sys.version[:3], "config")) + + elif sys.platform == "darwin": +- # attempt to make sure we pick freetype2 over other versions +- _add_directory(include_dirs, "/sw/include/freetype2") +- _add_directory(include_dirs, "/sw/lib/freetype2/include") +- # fink installation directories +- _add_directory(library_dirs, "/sw/lib") +- _add_directory(include_dirs, "/sw/include") + # darwin ports installation directories +- _add_directory(library_dirs, "/opt/local/lib") +- _add_directory(include_dirs, "/opt/local/include") +- # freetype2 ships with X11 +- _add_directory(library_dirs, "/usr/X11/lib") +- _add_directory(include_dirs, "/usr/X11/include") ++ _add_directory(library_dirs, "@prefix@/lib") ++ _add_directory(include_dirs, "@prefix@/include") + + elif sys.platform.startswith("linux"): + if platform.processor() == "x86_64": +@@ -126,9 +117,6 @@ + # work ;-) + self.add_multiarch_paths() + +- _add_directory(library_dirs, "/usr/local/lib") +- # FIXME: check /opt/stuff directories here? +- + prefix = sysconfig.get_config_var("prefix") + if prefix: + _add_directory(library_dirs, os.path.join(prefix, "lib")) +@@ -180,19 +168,6 @@ + # + # add standard directories + +- # look for tcl specific subdirectory (e.g debian) +- if _tkinter: +- tcl_dir = "/usr/include/tcl" + TCL_VERSION +- if os.path.isfile(os.path.join(tcl_dir, "tk.h")): +- _add_directory(include_dirs, tcl_dir) +- +- # standard locations +- _add_directory(library_dirs, "/usr/local/lib") +- _add_directory(include_dirs, "/usr/local/include") +- +- _add_directory(library_dirs, "/usr/lib") +- _add_directory(include_dirs, "/usr/include") +- + # + # insert new dirs *before* default libs, to avoid conflicts + # between Python PYD stub libs and real libraries +@@ -307,28 +282,7 @@ + exts.append(Extension( + "_imagingcms", ["_imagingcms.c"], libraries=["lcms"] + extra)) + +- if sys.platform == "darwin": +- # locate Tcl/Tk frameworks +- frameworks = [] +- framework_roots = [ +- "/Library/Frameworks", +- "/System/Library/Frameworks"] +- for root in framework_roots: +- if (os.path.exists(os.path.join(root, "Tcl.framework")) and +- os.path.exists(os.path.join(root, "Tk.framework"))): +- print("--- using frameworks at %s" % root) +- frameworks = ["-framework", "Tcl", "-framework", "Tk"] +- dir = os.path.join(root, "Tcl.framework", "Headers") +- _add_directory(self.compiler.include_dirs, dir, 0) +- dir = os.path.join(root, "Tk.framework", "Headers") +- _add_directory(self.compiler.include_dirs, dir, 1) +- break +- if frameworks: +- exts.append(Extension( +- "_imagingtk", ["_imagingtk.c", "Tk/tkImaging.c"], +- extra_compile_args=frameworks, extra_link_args=frameworks)) +- feature.tcl = feature.tk = 1 # mark as present +- elif feature.tcl and feature.tk: ++ if feature.tcl and feature.tk: + exts.append(Extension( + "_imagingtk", ["_imagingtk.c", "Tk/tkImaging.c"], + libraries=[feature.tcl, feature.tk])) diff --git a/packaging/macosx/ports/python/py25-lxml/Portfile b/packaging/macosx/ports/python/py25-lxml/Portfile new file mode 100644 index 000000000..49a753cd1 --- /dev/null +++ b/packaging/macosx/ports/python/py25-lxml/Portfile @@ -0,0 +1,51 @@ +# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:filetype=tcl:et:sw=4:ts=4:sts=4 +# $Id: Portfile 121661 2014-07-03 17:50:11Z mf2k@macports.org $ + +PortSystem 1.0 +PortGroup python 1.0 + +name py25-lxml +version 3.3.5 +revision 0 +categories-append devel +platforms darwin +license BSD + +python.versions 25 + +maintainers gmail.com:dbraband openmaintainer + +description Powerful and Pythonic XML processing library + +long_description lxml is a Pythonic binding for the libxml2 and \ + libxslt libraries. It is unique in that it \ + combines the speed and feature completeness of \ + these libraries with the simplicity of a native \ + Python API, mostly compatible but superior to \ + the well-known ElementTree API. + +homepage http://lxml.de/ +master_sites http://pypi.python.org/packages/source/l/lxml/ + +checksums rmd160 c7ccece50f8d20f5fac44ac1bf8dc0d8a85aa0f9 \ + sha256 6ad6949dc7eea744a30fba77a968dd5910f545220e58bcc813b9df5c793e318a + +distname lxml-${version} + +if {${name} eq ${subport}} { + + revision 100 + + depends_build-append \ + port:py${python.version}-setuptools + + depends_lib-append port:zlib \ + port:libxml2 \ + port:libxslt + + livecheck.type none +} else { + livecheck.type regex + livecheck.url ${master_sites} + livecheck.regex "lxml-(\\d+(?:\\.\\d+)*)${extract.suffix}" +} diff --git a/packaging/macosx/ports/python/py25-nose/Portfile b/packaging/macosx/ports/python/py25-nose/Portfile new file mode 100644 index 000000000..62a60eec5 --- /dev/null +++ b/packaging/macosx/ports/python/py25-nose/Portfile @@ -0,0 +1,86 @@ +# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4 +# $Id: Portfile 121661 2014-07-03 17:50:11Z mf2k@macports.org $ + +PortSystem 1.0 +PortGroup python 1.0 +PortGroup select 1.0 + +set my_name nose +name py25-${my_name} +version 1.3.1 +categories-append www +license LGPL-2+ +maintainers mcalhoun openmaintainer +description A Python unittest extension. +long_description \ + A unittest extension offering automatic test \ + suite discovery, simplified test authoring, \ + and output capture. Nose provides an alternate \ + test discovery and running process for \ + unittest, one that is intended to mimic the \ + behavior of py.test as much as is reasonably \ + possible without resorting to magic. + +platforms darwin +supported_archs noarch + +homepage http://somethingaboutorange.com/mrl/projects/${my_name} +master_sites http://pypi.python.org/packages/source/n/${my_name}/ +distname ${my_name}-${version} + +checksums md5 672398801ddf5ba745c55c6eed79c5aa \ + rmd160 7bf311d3d54f2ccb372dea331708c475b992ccec \ + sha256 85273b87ab3db9307e3b1452b071e25c1db1cc812bc337d2a97ea0b0cf2ab6ba + +python.versions 25 + +# already installs version-suffixed executables +python.link_binaries no +python.move_binaries no + +depends_run-append port:nosetests_select +if {${name} eq ${subport}} { + + revision 100 + + select.group nosetests + select.file ${filespath}/nosetests${python.version} + + depends_lib port:py${python.version}-setuptools + + post-patch { + reinplace "s|man/man|share/man/man|" ${worksrcpath}/setup.py + + # One of the tests fails if this directory does not exist + file mkdir ${worksrcpath}/functional_tests/support/empty + } + + post-destroot { + if {${python.version} == "24" || ${python.version} == "25"} { + move ${destroot}${prefix}/share/man/man1/nosetests.1 ${destroot}${prefix}/share/man/man1/nosetests${python.branch}.1 + delete ${destroot}${prefix}/bin/nosetests + } else { + ln -s ${python.prefix}/bin/nosetests-${python.branch} ${destroot}${prefix}/bin/ + ln -s ${python.prefix}/share/man/man1/nosetests.1 ${destroot}${prefix}/share/man/man1/nosetests${python.branch}.1 + } + + xinstall -m 644 -W ${worksrcpath} \ + AUTHORS CHANGELOG NEWS README.txt \ + ${destroot}${prefix}/share/doc/${subport} + + file copy ${worksrcpath}/doc ${destroot}${prefix}/share/doc/${subport}/html + + file delete ${destroot}${prefix}/share/doc/${subport}/examples + file copy ${worksrcpath}/examples ${destroot}${prefix}/share/doc/${subport} + } + + test.run yes + test.cmd ${python.bin} setup.py test + + livecheck.type none + +#} else { +# livecheck.type regex +# livecheck.url ${master_sites} +# livecheck.regex "${my_name}-(\\d+(?:\\.\\d+)*)${extract.suffix}" +} diff --git a/packaging/macosx/ports/python/py25-nose/files/nosetests24 b/packaging/macosx/ports/python/py25-nose/files/nosetests24 new file mode 100644 index 000000000..d9a8f4034 --- /dev/null +++ b/packaging/macosx/ports/python/py25-nose/files/nosetests24 @@ -0,0 +1 @@ +bin/nosetests-2.4 diff --git a/packaging/macosx/ports/python/py25-nose/files/nosetests25 b/packaging/macosx/ports/python/py25-nose/files/nosetests25 new file mode 100644 index 000000000..95864c283 --- /dev/null +++ b/packaging/macosx/ports/python/py25-nose/files/nosetests25 @@ -0,0 +1 @@ +bin/nosetests-2.5 diff --git a/packaging/macosx/ports/python/py25-nose/files/nosetests26 b/packaging/macosx/ports/python/py25-nose/files/nosetests26 new file mode 100644 index 000000000..bb670776f --- /dev/null +++ b/packaging/macosx/ports/python/py25-nose/files/nosetests26 @@ -0,0 +1 @@ +bin/nosetests-2.6 diff --git a/packaging/macosx/ports/python/py25-nose/files/nosetests27 b/packaging/macosx/ports/python/py25-nose/files/nosetests27 new file mode 100644 index 000000000..28c7bfe8c --- /dev/null +++ b/packaging/macosx/ports/python/py25-nose/files/nosetests27 @@ -0,0 +1 @@ +bin/nosetests-2.7 diff --git a/packaging/macosx/ports/python/py25-nose/files/nosetests31 b/packaging/macosx/ports/python/py25-nose/files/nosetests31 new file mode 100644 index 000000000..5ba27a4d5 --- /dev/null +++ b/packaging/macosx/ports/python/py25-nose/files/nosetests31 @@ -0,0 +1 @@ +bin/nosetests-3.1 diff --git a/packaging/macosx/ports/python/py25-nose/files/nosetests32 b/packaging/macosx/ports/python/py25-nose/files/nosetests32 new file mode 100644 index 000000000..07bfb86a1 --- /dev/null +++ b/packaging/macosx/ports/python/py25-nose/files/nosetests32 @@ -0,0 +1 @@ +bin/nosetests-3.2 diff --git a/packaging/macosx/ports/python/py25-nose/files/nosetests33 b/packaging/macosx/ports/python/py25-nose/files/nosetests33 new file mode 100644 index 000000000..b750d806b --- /dev/null +++ b/packaging/macosx/ports/python/py25-nose/files/nosetests33 @@ -0,0 +1 @@ +bin/nosetests-3.3 diff --git a/packaging/macosx/ports/python/py25-nose/files/nosetests34 b/packaging/macosx/ports/python/py25-nose/files/nosetests34 new file mode 100644 index 000000000..542ffc949 --- /dev/null +++ b/packaging/macosx/ports/python/py25-nose/files/nosetests34 @@ -0,0 +1 @@ +bin/nosetests-3.4 diff --git a/packaging/macosx/ports/python/py25-numpy/Portfile b/packaging/macosx/ports/python/py25-numpy/Portfile new file mode 100644 index 000000000..4575d6293 --- /dev/null +++ b/packaging/macosx/ports/python/py25-numpy/Portfile @@ -0,0 +1,209 @@ +# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:et:sw=4:ts=4:sts=4 +# $Id: Portfile 113172 2013-11-11 10:24:44Z jeremyhu@macports.org $ + +PortSystem 1.0 +PortGroup python 1.0 +PortGroup github 1.0 + +github.setup numpy numpy 1.7.1 v +name py25-numpy +revision 1 +dist_subdir ${name}/${version}_1 + +categories-append math +license BSD +platforms darwin +maintainers dh michaelld openmaintainer +description The core utilities for the scientific library scipy for Python +long_description ${description} + +checksums rmd160 16df4216f40b22077e1f14cc41b8c8ae486b45af \ + sha256 14964724915e5fa1ed34d2cdb93eed5a86bc16edd4a1203cf521ad8bbbcb5215 + +python.versions 25 + +if {$subport == $name} { + + revision 100 + + patchfiles patch-f2py_setup.py.diff \ + patch-numpy_distutils_fcompiler___init__.py.diff \ + patch-fcompiler_g95.diff + + depends_lib-append port:fftw-3 \ + port:py${python.version}-nose + + # http://trac.macports.org/ticket/34562 + destroot.env-append \ + CC="${configure.cc}" \ + CFLAGS="${configure.cflags} [get_canonical_archflags cc]" \ + CXX="${configure.cxx}" \ + CXXFLAGS="${configure.cxxflags} [get_canonical_archflags cxx]" \ + OBJC="${configure.objc}" \ + OBJCFLAGS="${configure.objcflags} [get_canonical_archflags objc]" \ + LDFLAGS="${configure.ldflags} [get_canonical_archflags ld]" + + build.env-append ARCHFLAGS="[get_canonical_archflags ld]" + destroot.env-append ARCHFLAGS="[get_canonical_archflags ld]" + + variant atlas description {Use the MacPorts' ATLAS libraries \ + instead of Apple's Accelerate framework} { + build.env-append ATLAS=${prefix}/lib \ + LAPACK=${prefix}/lib \ + BLAS=${prefix}/lib + destroot.env-append ATLAS=${prefix}/lib \ + LAPACK=${prefix}/lib \ + BLAS=${prefix}/lib + depends_lib-append port:atlas + + if {[variant_isset universal]} { + python.set_compiler no + } + } + + # when using ATLAS (whether by default or specified by the user via + # the +atlas variant) ... + set gcc_version "" + if {[variant_isset atlas]} { + + # see if the user has set -gcc4X to disable using MacPorts' + # compiler; if not, either use what the user set (as +gcc4X) or + # default to gcc47. + + variant gcc43 conflicts gcc44 gcc45 gcc46 gcc47 gcc48 \ + description {Use the gcc43 compiler (enables fortran linking)} { + configure.compiler macports-gcc-4.3 + } + + variant gcc44 conflicts gcc43 gcc45 gcc46 gcc47 gcc48 \ + description {Use the gcc44 compiler (enables fortran linking)} { + configure.compiler macports-gcc-4.4 + } + + variant gcc45 conflicts gcc43 gcc44 gcc46 gcc47 gcc48 \ + description {Use the gcc45 compiler (enables fortran linking)} { + configure.compiler macports-gcc-4.5 + } + + variant gcc46 conflicts gcc43 gcc44 gcc45 gcc47 gcc48 \ + description {Use the gcc46 compiler (enables fortran linking)} { + configure.compiler macports-gcc-4.6 + } + + variant gcc47 conflicts gcc43 gcc44 gcc45 gcc46 gcc48 \ + description {Use the gcc47 compiler (enables fortran linking)} { + configure.compiler macports-gcc-4.7 + } + + variant gcc48 conflicts gcc43 gcc44 gcc45 gcc46 gcc47 \ + description {Use the gcc48 compiler (enables fortran linking)} { + configure.compiler macports-gcc-4.8 + } + + if {![variant_isset gcc43] && ![variant_isset gcc44] && ![variant_isset gcc45] && ![variant_isset gcc46] && ![variant_isset gcc48]} { + default_variants +gcc47 + } + + if {[variant_isset gcc43]} { + set gcc_version "4.3" + } elseif {[variant_isset gcc44]} { + set gcc_version "4.4" + } elseif {[variant_isset gcc45]} { + set gcc_version "4.5" + } elseif {[variant_isset gcc46]} { + set gcc_version "4.6" + } elseif {[variant_isset gcc47]} { + set gcc_version "4.7" + } elseif {[variant_isset gcc48]} { + set gcc_version "4.8" + } + + # when using non-Apple GCC for universal install, it can + # create binaries only for the native OS architecture, at + # either 32 or 64 bits. Restrict the supported archs + # accordingly. + if {${os.arch} == "i386"} { + supported_archs i386 x86_64 + } elseif {${os.arch} == "powerpc"} { + supported_archs ppc ppc64 + } + + # include all the correct GCC4X port + depends_lib-append port:gcc[join [split ${gcc_version} "."] ""] + + # force LDFLAGS for correct linking of the linalg module + # for non-Apple GCC compilers + patchfiles-append patch-numpy_linalg_setup.py.diff + + if {${gcc_version} == ""} { + # user specified -gcc4X but +atlas (either as default or + # explicitly); do not allow since it might lead to + # undetermined runtime execution. + return -code error \ +"\n\nWhen using the +atlas variant (either as the default or setting +explicitly), one of the +gcc4X variants must be selected.\n" + } + + } else { + variant universal { + patchfiles-append patch-setup.py.diff + } + } + + post-patch { + reinplace "s|@@MPORTS_PYTHON@@|${python.bin}|" \ + ${worksrcpath}/numpy/f2py/setup.py + + if {[variant_isset universal] && [variant_isset atlas]} { + # Prepare wrappers + file copy -force ${filespath}/wrapper-template \ + ${worksrcpath}/c-wrapper + file copy -force ${filespath}/wrapper-template \ + ${worksrcpath}/f-wrapper + file copy -force ${filespath}/wrapper-template \ + ${worksrcpath}/cxx-wrapper + + reinplace "s|@@@|${configure.cc}|" ${worksrcpath}/c-wrapper + reinplace "s|---|\\\\.c|" ${worksrcpath}/c-wrapper + reinplace "s|&&&|${prefix}|" ${worksrcpath}/c-wrapper + + reinplace "s|@@@|${configure.cxx}|" ${worksrcpath}/cxx-wrapper + reinplace "s#---#(\\\\.C|\\\\.cpp|\\\\.cc)#" \ + ${worksrcpath}/cxx-wrapper + reinplace "s|&&&|${prefix}|" ${worksrcpath}/cxx-wrapper + + reinplace "s|@@@|${configure.f90}|" ${worksrcpath}/f-wrapper + reinplace "s|---|\\\\.f|" ${worksrcpath}/f-wrapper + reinplace "s|&&&|${prefix}|" ${worksrcpath}/f-wrapper + + build.env-append CC="${worksrcpath}/c-wrapper" \ + CXX="${worksrcpath}/cxx-wrapper" \ + F77="${worksrcpath}/f-wrapper" \ + F90="${worksrcpath}/f-wrapper" + + destroot.env-append CC="${worksrcpath}/c-wrapper" \ + CXX="${worksrcpath}/cxx-wrapper" \ + F77="${worksrcpath}/f-wrapper" \ + F90="${worksrcpath}/f-wrapper" + } + + if {[variant_isset atlas]} { + # We must link against libSatlas or libTatlas, not libAtlas + if {[file exists ${prefix}/lib/libtatlas.dylib]} { + reinplace -E \ + "s|_lib_atlas = \\\['atlas'\\\]|_lib_atlas = \\\['tatlas'\\\]|" \ + ${worksrcpath}/numpy/distutils/system_info.py + } elseif {[file exists ${prefix}/lib/libsatlas.dylib]} { + reinplace -E \ + "s|_lib_atlas = \\\['atlas'\\\]|_lib_atlas = \\\['satlas'\\\]|" \ + ${worksrcpath}/numpy/distutils/system_info.py + } else { + return -code error "Unable to find Atlas dylibs. Bailing out." + } + } + } + + livecheck.type none +#} else { +# livecheck.regex archive/[join ${github.tag_prefix} ""](\[\\d+(?:\\.\\d+)*"\]+)${extract.suffix}" +} diff --git a/packaging/macosx/ports/python/py25-numpy/files/patch-f2py_setup.py.diff b/packaging/macosx/ports/python/py25-numpy/files/patch-f2py_setup.py.diff new file mode 100644 index 000000000..5b8f2a28f --- /dev/null +++ b/packaging/macosx/ports/python/py25-numpy/files/patch-f2py_setup.py.diff @@ -0,0 +1,29 @@ +--- numpy/f2py/setup.py.orig 2013-02-10 00:51:36.000000000 +0400 ++++ numpy/f2py/setup.py 2013-03-19 15:27:15.000000000 +0400 +@@ -41,7 +41,7 @@ + config.make_svn_version_py() + + def generate_f2py_py(build_dir): +- f2py_exe = 'f2py'+os.path.basename(sys.executable)[6:] ++ f2py_exe = 'f2py' + if f2py_exe[-4:]=='.exe': + f2py_exe = f2py_exe[:-4] + '.py' + if 'bdist_wininst' in sys.argv and f2py_exe[-3:] != '.py': +@@ -51,7 +51,7 @@ + log.info('Creating %s', target) + f = open(target,'w') + f.write('''\ +-#!/usr/bin/env %s ++#!@@MPORTS_PYTHON@@ + # See http://cens.ioc.ee/projects/f2py2e/ + import os, sys + for mode in ["g3-numpy", "2e-numeric", "2e-numarray", "2e-numpy"]: +@@ -75,7 +75,7 @@ + sys.stderr.write("Unknown mode: " + repr(mode) + "\\n") + sys.exit(1) + main() +-'''%(os.path.basename(sys.executable))) ++''') + f.close() + return target + diff --git a/packaging/macosx/ports/python/py25-numpy/files/patch-fcompiler_g95.diff b/packaging/macosx/ports/python/py25-numpy/files/patch-fcompiler_g95.diff new file mode 100644 index 000000000..2640a530b --- /dev/null +++ b/packaging/macosx/ports/python/py25-numpy/files/patch-fcompiler_g95.diff @@ -0,0 +1,11 @@ +--- numpy/distutils/fcompiler/__init__.py.orig 2013-03-19 13:35:03.000000000 +0400 ++++ numpy/distutils/fcompiler/__init__.py 2013-03-19 13:35:27.000000000 +0400 +@@ -708,7 +708,7 @@ + ('cygwin.*', ('gnu','intelv','absoft','compaqv','intelev','gnu95','g95')), + ('linux.*', ('gnu95','intel','lahey','pg','absoft','nag','vast','compaq', + 'intele','intelem','gnu','g95','pathf95')), +- ('darwin.*', ('gnu95', 'nag', 'absoft', 'ibm', 'intel', 'gnu', 'g95', 'pg')), ++ ('darwin.*', ('gnu95', 'nag', 'absoft', 'ibm', 'intel', 'gnu', 'pg')), + ('sunos.*', ('sun','gnu','gnu95','g95')), + ('irix.*', ('mips','gnu','gnu95',)), + ('aix.*', ('ibm','gnu','gnu95',)), diff --git a/packaging/macosx/ports/python/py25-numpy/files/patch-numpy_distutils_fcompiler___init__.py.diff b/packaging/macosx/ports/python/py25-numpy/files/patch-numpy_distutils_fcompiler___init__.py.diff new file mode 100644 index 000000000..4f73dcfc9 --- /dev/null +++ b/packaging/macosx/ports/python/py25-numpy/files/patch-numpy_distutils_fcompiler___init__.py.diff @@ -0,0 +1,30 @@ +--- numpy/distutils/fcompiler/__init__.py.orig 2013-10-31 13:24:12.000000000 +0400 ++++ numpy/distutils/fcompiler/__init__.py 2013-10-31 13:45:03.000000000 +0400 +@@ -815,7 +815,7 @@ + return compiler_type + + # Flag to avoid rechecking for Fortran compiler every time +-failed_fcompiler = False ++failed_fcompilers = [] + + def new_fcompiler(plat=None, + compiler=None, +@@ -828,7 +828,8 @@ + platform/compiler combination. + """ + global failed_fcompiler +- if failed_fcompiler: ++ fcompiler_key = (plat, compiler) ++ if fcompiler_key in failed_fcompilers: + return None + + load_all_fcompiler_classes() +@@ -848,7 +849,7 @@ + msg = msg + " Supported compilers are: %s)" \ + % (','.join(fcompiler_class.keys())) + log.warn(msg) +- failed_fcompiler = True ++ failed_fcompilers.append(fcompiler_key) + return None + + compiler = klass(verbose=verbose, dry_run=dry_run, force=force) diff --git a/packaging/macosx/ports/python/py25-numpy/files/patch-numpy_linalg_setup.py.diff b/packaging/macosx/ports/python/py25-numpy/files/patch-numpy_linalg_setup.py.diff new file mode 100644 index 000000000..0b06883a4 --- /dev/null +++ b/packaging/macosx/ports/python/py25-numpy/files/patch-numpy_linalg_setup.py.diff @@ -0,0 +1,10 @@ +--- numpy/linalg/setup.py.orig 2010-09-14 11:44:21.000000000 -0400 ++++ numpy/linalg/setup.py 2010-09-14 11:45:01.000000000 -0400 +@@ -27,6 +27,7 @@ + 'zlapack_lite.c', 'dlapack_lite.c', + 'blas_lite.c', 'dlamch.c', + 'f2c_lite.c','f2c.h'], ++ extra_link_args=['-undefined dynamic_lookup -bundle'], + extra_info = lapack_info + ) + diff --git a/packaging/macosx/ports/python/py25-numpy/files/patch-setup.py.diff b/packaging/macosx/ports/python/py25-numpy/files/patch-setup.py.diff new file mode 100644 index 000000000..04e3cdd7a --- /dev/null +++ b/packaging/macosx/ports/python/py25-numpy/files/patch-setup.py.diff @@ -0,0 +1,34 @@ +--- numpy/core/setup.py.orig 2009-04-05 04:09:20.000000000 -0400 ++++ numpy/core/setup.py 2009-04-08 19:53:45.000000000 -0400 +@@ -309,7 +309,14 @@ + if isinstance(d,str): + target_f.write('#define %s\n' % (d)) + else: +- target_f.write('#define %s %s\n' % (d[0],d[1])) ++ if d[0]!='SIZEOF_LONG' and d[0]!='SIZEOF_PY_INTPTR_T': ++ target_f.write('#define %s %s\n' % (d[0],d[1])) ++ else: ++ target_f.write('#ifdef __LP64__\n') ++ target_f.write('#define %s %s\n' % (d[0],8)) ++ target_f.write('#else\n') ++ target_f.write('#define %s %s\n' % (d[0],4)) ++ target_f.write('#endif\n') + + # define inline to our keyword, or nothing + target_f.write('#ifndef __cplusplus\n') +@@ -393,7 +393,14 @@ + if isinstance(d,str): + target_f.write('#define %s\n' % (d)) + else: +- target_f.write('#define %s %s\n' % (d[0],d[1])) ++ if d[0]!='NPY_SIZEOF_LONG' and d[0]!='NPY_SIZEOF_PY_INTPTR_T': ++ target_f.write('#define %s %s\n' % (d[0],d[1])) ++ else: ++ target_f.write('#ifdef __LP64__\n') ++ target_f.write('#define %s %s\n' % (d[0],8)) ++ target_f.write('#else\n') ++ target_f.write('#define %s %s\n' % (d[0],4)) ++ target_f.write('#endif\n') + + # define NPY_INLINE to recognized keyword + target_f.write('#define NPY_INLINE %s\n' % inline) diff --git a/packaging/macosx/ports/python/py25-numpy/files/wrapper-template b/packaging/macosx/ports/python/py25-numpy/files/wrapper-template new file mode 100755 index 000000000..48936d107 --- /dev/null +++ b/packaging/macosx/ports/python/py25-numpy/files/wrapper-template @@ -0,0 +1,143 @@ +#!/bin/sh +COMPILER='@@@' +SUFFIX='---' +PREFIX='&&&' +OUTPUT_O='NO' +OUTPUT='' +NAMED_OUTPUT='' +LASTFILE='' +INTEL='NO' +SIZE32='NO' +SIZE64='NO' +NEWARGS='' + +SKIP='NO' + +for arg in $@ +do + if [ $SKIP = 'ARCH' ]; then + # intercept -arch option and set SIZEXX + SKIP='NO' + if [ $arg = 'x86_64' ] || [ $arg = 'ppc64' ]; then + SIZE64='YES' + else + SIZE32='YES' + fi + + # which architecture are we compiling for? + if [ $arg = 'x86_64' ] || [ $arg = 'i386' ]; then + INTEL='YES' + fi + + elif [ $arg = '-arch' ]; then + SKIP='ARCH' + + elif [ $arg = '--version' ]; then + ${COMPILER} --version + exit 0 + + else + NEWARGS+="$arg " + + # if the -c option is given, the output is .o + if [ $arg = '-c' ]; then + OUTPUT_O='YES' + fi + + # if the output file is given by a -o option, record it + if [ $SKIP = 'O' ]; then + SKIP='NO' + NAMED_OUTPUT=$arg + fi + + if [ $arg = '-o' ]; then + SKIP='O' + fi + + # Note each file ending by ${SUFFIX} and remember the last one + # Transform them in .o + if `echo $arg | grep -q "${SUFFIX}$"`; then + LASTFILE=$arg + OUTPUT+=`echo $arg | sed "s/${SUFFIX}/\.o/"` + OUTPUT+=' ' + fi + fi +done + +# What is the output? + +if [ ${NAMED_OUTPUT}"X" != "X" ]; then + OUTPUT=$NAMED_OUTPUT + +elif [ $OUTPUT_O = 'NO' ]; then + # It is an executable whose is name is the LASTFILE without suffix + OUTPUT=`echo ${LASTFILE} | sed "s/${SUFFIX}//"` +fi + +# Othewise, the output is just the ${OUTPUT} variable as computed before + +# For some reason, -dynamiclib and -lpython2.6 are missing when linking +# .so files. Add them, except if -bundle is set (incompatible switches) +if [ `echo $OUTPUT | sed -E 's|.*\.||'` = "so" ] && \ + ! `echo $NEWARGS | grep -q bundle`; then + NEWARGS="${NEWARGS} ${PREFIX}/lib/libpython2.6.dylib -dynamiclib" +fi + +# Now, compile + +if [ $SIZE32 = 'NO' ] && [ $SIZE64 = 'NO' ]; then + # No size indication given, just proceed with default + if `${COMPILER} $NEWARGS`; then + exit 0 + else + exit 1 + fi + +elif [ $SIZE32 = 'YES' ] && [ $SIZE64 = 'NO' ]; then + # 32-bit + if `${COMPILER} -m32 $NEWARGS`; then + exit 0 + else + exit 1 + fi + +elif [ $SIZE32 = 'NO' ] && [ $SIZE64 = 'YES' ]; then + # 64-bit + if `${COMPILER} -m64 $NEWARGS`; then + exit 0 + else + exit 1 + fi + +else + # Universal case + if `${COMPILER} -m32 $NEWARGS`; then + for filename in ${OUTPUT} + do + mv ${filename} ${filename}.32 + done + + if `${COMPILER} -m64 $NEWARGS`; then + for filename in ${OUTPUT} + do + mv ${filename} ${filename}.64 + if [ $INTEL = 'YES' ]; then + lipo -create -arch x86_64 ${filename}.64 \ + -arch i386 ${filename}.32 \ + -output ${filename} + else + lipo -create -arch ppc64 ${filename}.64 \ + -arch ppc ${filename}.32 \ + -output ${filename} + fi + + rm -f ${filename}.32 ${filename}.64 + done + else + exit 1 + fi + else + exit 1 + fi +fi +exit 0 diff --git a/packaging/macosx/ports/python/py25-setuptools/Portfile b/packaging/macosx/ports/python/py25-setuptools/Portfile new file mode 100644 index 000000000..35c528500 --- /dev/null +++ b/packaging/macosx/ports/python/py25-setuptools/Portfile @@ -0,0 +1,58 @@ +# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4 +# $Id: Portfile 123950 2014-08-16 14:24:07Z jmr@macports.org $ + +PortSystem 1.0 +PortGroup python 1.0 + +name py25-setuptools +version 5.7 +categories-append devel +license {PSF ZPL} +maintainers jmr openmaintainer +description distutils enhancement for build and distribution +long_description \ + setuptools is a collection of enhancements to the Python distutils that \ + allow you to more easily build and distribute Python packages, \ + especially ones that have dependencies on other packages. + +platforms darwin +supported_archs noarch + +homepage https://pypi.python.org/pypi/setuptools/ +master_sites https://pypi.python.org/packages/source/s/setuptools/ +distname setuptools-${version} + +checksums md5 81f980854a239d60d074d6ba052e21ed \ + rmd160 ee9eff6c77e6f27e22e2049a6685bb0e624f94b0 \ + sha256 a8bbdb2d67532c5b5cef5ba09553cea45d767378e42c7003347e53ebbe70f482 + +python.versions 25 +python.link_binaries no +python.move_binaries no + +if {$subport eq $name} { + if {${python.version} == 25} { + version 1.4.2 + revision 100 + distname setuptools-${version} + checksums md5 13951be6711438073fbe50843e7f141f \ + rmd160 b48086a2aae718fe433a8c882d2d9209aa157b0a \ + sha256 263986a60a83aba790a5bffc7d009ac88114ba4e908e5c90e453b3bf2155dbbd + } + + post-destroot { + xinstall -m 755 -d ${destroot}${prefix}/share/doc/${subport} + xinstall -m 644 -W ${worksrcpath} CHANGES.txt \ + DEVGUIDE.txt README.txt ${destroot}${prefix}/share/doc/${subport} + if {${python.version} <= 25} { + delete "${destroot}${prefix}/bin/easy_install" + } else { + ln -s "${python.prefix}/bin/easy_install-${python.branch}" "${destroot}${prefix}/bin/" + } + } + livecheck.type none +#} else { +# livecheck.type regex +# livecheck.url ${homepage} +# livecheck.regex setuptools/(\\d+(\\.\\d+)+) +} diff --git a/po/POTFILES.in b/po/POTFILES.in index df2b13745..1dc42ac65 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -135,7 +135,7 @@ src/live_effects/lpe-clone-original.cpp src/live_effects/lpe-constructgrid.cpp src/live_effects/lpe-curvestitch.cpp src/live_effects/lpe-envelope.cpp -src/live_effects/lpe-envelope-perspective.cpp +src/live_effects/lpe-perspective-envelope.cpp src/live_effects/lpe-extrude.cpp src/live_effects/lpe-fillet-chamfer.cpp src/live_effects/lpe-gears.cpp @@ -153,7 +153,7 @@ src/live_effects/lpe-show_handles.cpp src/live_effects/lpe-skeleton.cpp src/live_effects/lpe-sketch.cpp src/live_effects/lpe-vonkoch.cpp -src/live_effects/lpe-envelope-perspective.cpp +src/live_effects/lpe-perspective-envelope.cpp src/live_effects/lpe-attach-path.cpp src/live_effects/lpe-bounding-box.cpp src/live_effects/lpe-ellipse_5pts.cpp @@ -6,21 +6,21 @@ # Vitaly Lipatov <lav@altlinux.ru>, 2002, 2004. # Alexey Remizov <alexey@remizov.pp.ru>, 2004. # bulia byak <buliabyak@users.sf.net>, 2004. -# Александр Прокудин <alexandre.prokoudine@gmail.com>, 2004-2012, 2012. +# Александр Прокудин <alexandre.prokoudine@gmail.com>, 2004-2014, 2014. # msgid "" msgstr "" "Project-Id-Version: Inkscape 0.49\n" "Report-Msgid-Bugs-To: inkscape-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2014-08-14 23:05-0700\n" -"PO-Revision-Date: 2013-02-11 15:27+0300\n" +"POT-Creation-Date: 2014-10-02 10:03+0200\n" +"PO-Revision-Date: 2014-10-12 02:01+0400\n" "Last-Translator: Александр Прокудин <alexandre.prokoudine@gmail.com>\n" "Language-Team: русский <>\n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" +"X-Generator: Gtranslator 2.91.6\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); 10<=4 && (n%100<10 || n" "%100>=20) ? 1 : 2);\n" @@ -47,6 +47,2112 @@ msgstr "" msgid "New Drawing" msgstr "Новый рисунок" +#: ../share/filters/filters.svg.h:2 +#, fuzzy +msgid "Smart Jelly" +msgstr "Замысловатое желе" + +#: ../share/filters/filters.svg.h:3 ../share/filters/filters.svg.h:7 +#: ../share/filters/filters.svg.h:15 ../share/filters/filters.svg.h:31 +#: ../share/filters/filters.svg.h:35 ../share/filters/filters.svg.h:107 +#: ../share/filters/filters.svg.h:139 ../share/filters/filters.svg.h:143 +#: ../share/filters/filters.svg.h:147 ../share/filters/filters.svg.h:151 +#: ../share/filters/filters.svg.h:163 ../share/filters/filters.svg.h:171 +#: ../share/filters/filters.svg.h:219 ../share/filters/filters.svg.h:227 +#: ../share/filters/filters.svg.h:283 ../share/filters/filters.svg.h:299 +#: ../share/filters/filters.svg.h:303 ../share/filters/filters.svg.h:551 +#: ../share/filters/filters.svg.h:555 ../share/filters/filters.svg.h:559 +#: ../share/filters/filters.svg.h:563 ../share/filters/filters.svg.h:567 +#: ../src/extension/internal/filter/bevels.h:63 +#: ../src/extension/internal/filter/bevels.h:144 +#: ../src/extension/internal/filter/bevels.h:228 +msgid "Bevels" +msgstr "Фаска" + +#: ../share/filters/filters.svg.h:4 +msgid "Same as Matte jelly but with more controls" +msgstr "То же, что и матовое желе, но с увеличенным количеством регуляторов." + +#: ../share/filters/filters.svg.h:6 +#, fuzzy +msgid "Metal Casting" +msgstr "Металлическое литьё" + +#: ../share/filters/filters.svg.h:8 +msgid "Smooth drop-like bevel with metallic finish" +msgstr "Плавная каплевидная фаска с металлической полировкой" + +#: ../share/filters/filters.svg.h:10 +msgid "Apparition" +msgstr "Видение" + +#: ../share/filters/filters.svg.h:11 ../share/filters/filters.svg.h:323 +#: ../share/filters/filters.svg.h:655 +#: ../src/extension/internal/filter/blurs.h:63 +#: ../src/extension/internal/filter/blurs.h:132 +#: ../src/extension/internal/filter/blurs.h:201 +#: ../src/extension/internal/filter/blurs.h:267 +#: ../src/extension/internal/filter/blurs.h:351 +msgid "Blurs" +msgstr "Размывание" + +#: ../share/filters/filters.svg.h:12 +msgid "Edges are partly feathered out" +msgstr "Края частично растушёваны" + +#: ../share/filters/filters.svg.h:14 +#, fuzzy +msgid "Jigsaw Piece" +msgstr "Элемент паззла" + +#: ../share/filters/filters.svg.h:16 +msgid "Low, sharp bevel" +msgstr "Низкая, резкая фаска" + +#: ../share/filters/filters.svg.h:18 +#, fuzzy +msgid "Rubber Stamp" +msgstr "Штемпель" + +#: ../share/filters/filters.svg.h:19 ../share/filters/filters.svg.h:43 +#: ../share/filters/filters.svg.h:47 ../share/filters/filters.svg.h:51 +#: ../share/filters/filters.svg.h:59 ../share/filters/filters.svg.h:63 +#: ../share/filters/filters.svg.h:95 ../share/filters/filters.svg.h:99 +#: ../share/filters/filters.svg.h:103 ../share/filters/filters.svg.h:287 +#: ../share/filters/filters.svg.h:291 ../share/filters/filters.svg.h:331 +#: ../share/filters/filters.svg.h:335 ../share/filters/filters.svg.h:339 +#: ../share/filters/filters.svg.h:391 ../share/filters/filters.svg.h:407 +#: ../share/filters/filters.svg.h:451 ../share/filters/filters.svg.h:455 +#: ../share/filters/filters.svg.h:459 ../share/filters/filters.svg.h:475 +#: ../share/filters/filters.svg.h:487 ../share/filters/filters.svg.h:583 +#: ../share/filters/filters.svg.h:643 ../share/filters/filters.svg.h:683 +#: ../share/filters/filters.svg.h:687 ../share/filters/filters.svg.h:691 +#: ../share/filters/filters.svg.h:695 ../share/filters/filters.svg.h:699 +#: ../share/filters/filters.svg.h:703 ../share/filters/filters.svg.h:707 +#: ../share/filters/filters.svg.h:711 ../share/filters/filters.svg.h:715 +#: ../share/filters/filters.svg.h:723 +#: ../src/extension/internal/filter/overlays.h:80 +msgid "Overlays" +msgstr "Перекрытия" + +#: ../share/filters/filters.svg.h:20 +msgid "Random whiteouts inside" +msgstr "Случайные белые пятна внутри" + +#: ../share/filters/filters.svg.h:22 +#, fuzzy +msgid "Ink Bleed" +msgstr "Чернила протекли" + +#: ../share/filters/filters.svg.h:23 ../share/filters/filters.svg.h:27 +#: ../share/filters/filters.svg.h:115 ../share/filters/filters.svg.h:431 +msgid "Protrusions" +msgstr "Выступы" + +#: ../share/filters/filters.svg.h:24 +msgid "Inky splotches underneath the object" +msgstr "Чернильные пятна под объектом" + +#: ../share/filters/filters.svg.h:26 +msgid "Fire" +msgstr "Огонь" + +#: ../share/filters/filters.svg.h:28 +msgid "Edges of object are on fire" +msgstr "Края объекта охвачены огнем" + +#: ../share/filters/filters.svg.h:30 +msgid "Bloom" +msgstr "Расцвет" + +#: ../share/filters/filters.svg.h:32 +msgid "Soft, cushion-like bevel with matte highlights" +msgstr "Фаска с плавным подушкообразным переходом и матовым бликом" + +#: ../share/filters/filters.svg.h:34 +#, fuzzy +msgid "Ridged Border" +msgstr "Край с кромкой" + +#: ../share/filters/filters.svg.h:36 +msgid "Ridged border with inner bevel" +msgstr "Край с кромкой и внутренней фаской" + +#: ../share/filters/filters.svg.h:38 +msgid "Ripple" +msgstr "Рябь" + +#: ../share/filters/filters.svg.h:39 ../share/filters/filters.svg.h:123 +#: ../share/filters/filters.svg.h:315 ../share/filters/filters.svg.h:319 +#: ../share/filters/filters.svg.h:327 ../share/filters/filters.svg.h:363 +#: ../share/filters/filters.svg.h:443 ../share/filters/filters.svg.h:519 +#: ../share/filters/filters.svg.h:635 +#: ../src/extension/internal/filter/distort.h:96 +#: ../src/extension/internal/filter/distort.h:205 +msgid "Distort" +msgstr "Искажения" + +#: ../share/filters/filters.svg.h:40 +msgid "Horizontal rippling of edges" +msgstr "Горизонтальная рябь краёв" + +#: ../share/filters/filters.svg.h:42 +msgid "Speckle" +msgstr "Пятно" + +#: ../share/filters/filters.svg.h:44 +msgid "Fill object with sparse translucent specks" +msgstr "Заполнить объект редкими просвечивающими пятнами" + +#: ../share/filters/filters.svg.h:46 +msgid "Oil Slick" +msgstr "Масляная плёнка" + +#: ../share/filters/filters.svg.h:48 +msgid "Rainbow-colored semitransparent oily splotches" +msgstr "Масляные полупрозрачные пятна радужного цвета" + +#: ../share/filters/filters.svg.h:50 +msgid "Frost" +msgstr "Мороз" + +#: ../share/filters/filters.svg.h:52 +msgid "Flake-like white splotches" +msgstr "Белые пятна наподобие хлопьев" + +#: ../share/filters/filters.svg.h:54 +msgid "Leopard Fur" +msgstr "Шкура леопарда" + +#: ../share/filters/filters.svg.h:55 ../share/filters/filters.svg.h:175 +#: ../share/filters/filters.svg.h:179 ../share/filters/filters.svg.h:183 +#: ../share/filters/filters.svg.h:191 ../share/filters/filters.svg.h:211 +#: ../share/filters/filters.svg.h:239 ../share/filters/filters.svg.h:243 +#: ../share/filters/filters.svg.h:247 ../share/filters/filters.svg.h:255 +#: ../share/filters/filters.svg.h:387 ../share/filters/filters.svg.h:395 +#: ../share/filters/filters.svg.h:399 ../share/filters/filters.svg.h:403 +msgid "Materials" +msgstr "Материалы" + +#: ../share/filters/filters.svg.h:56 +msgid "Leopard spots (loses object's own color)" +msgstr "Пятна леопарда (исходный цвет объекта теряется)" + +#: ../share/filters/filters.svg.h:58 +msgid "Zebra" +msgstr "Зебра" + +#: ../share/filters/filters.svg.h:60 +msgid "Irregular vertical dark stripes (loses object's own color)" +msgstr "" +"Нерегулярные вертикальные темные полосы (исходный цвет объекта теряется)" + +#: ../share/filters/filters.svg.h:62 +msgid "Clouds" +msgstr "Облака" + +#: ../share/filters/filters.svg.h:64 +msgid "Airy, fluffy, sparse white clouds" +msgstr "Воздушные, пушистые, редкие облака" + +#: ../share/filters/filters.svg.h:66 +#: ../src/extension/internal/bitmap/sharpen.cpp:38 +msgid "Sharpen" +msgstr "Повысить резкость" + +#: ../share/filters/filters.svg.h:67 ../share/filters/filters.svg.h:71 +#: ../share/filters/filters.svg.h:87 ../share/filters/filters.svg.h:295 +#: ../share/filters/filters.svg.h:415 +#: ../src/extension/internal/filter/image.h:62 +msgid "Image Effects" +msgstr "Эффекты для растра" + +#: ../share/filters/filters.svg.h:68 +msgid "Sharpen edges and boundaries within the object, force=0.15" +msgstr "Повысить резкость краев и границ в рамках объекта, сила=0.15" + +#: ../share/filters/filters.svg.h:70 +#, fuzzy +msgid "Sharpen More" +msgstr "Усиленное повышение резкости" + +#: ../share/filters/filters.svg.h:72 +msgid "Sharpen edges and boundaries within the object, force=0.3" +msgstr "Повысить резкость краев и границ в рамках объекта, сила=0.3" + +#: ../share/filters/filters.svg.h:74 +msgid "Oil painting" +msgstr "Масляная краска" + +#: ../share/filters/filters.svg.h:75 ../share/filters/filters.svg.h:79 +#: ../share/filters/filters.svg.h:83 ../share/filters/filters.svg.h:447 +#: ../share/filters/filters.svg.h:495 ../share/filters/filters.svg.h:499 +#: ../share/filters/filters.svg.h:503 ../share/filters/filters.svg.h:507 +#: ../share/filters/filters.svg.h:515 ../share/filters/filters.svg.h:659 +#: ../share/filters/filters.svg.h:663 ../share/filters/filters.svg.h:667 +#: ../share/filters/filters.svg.h:671 ../share/filters/filters.svg.h:675 +#: ../share/filters/filters.svg.h:679 ../share/filters/filters.svg.h:719 +#: ../share/filters/filters.svg.h:803 ../share/filters/filters.svg.h:815 +#: ../src/extension/internal/filter/paint.h:113 +#: ../src/extension/internal/filter/paint.h:244 +#: ../src/extension/internal/filter/paint.h:363 +#: ../src/extension/internal/filter/paint.h:507 +#: ../src/extension/internal/filter/paint.h:602 +#: ../src/extension/internal/filter/paint.h:725 +#: ../src/extension/internal/filter/paint.h:877 +#: ../src/extension/internal/filter/paint.h:981 +msgid "Image Paint and Draw" +msgstr "" + +#: ../share/filters/filters.svg.h:76 +msgid "Simulate oil painting style" +msgstr "Имитация живописи маслом" + +#. Pencil +#: ../share/filters/filters.svg.h:78 +#: ../src/ui/dialog/inkscape-preferences.cpp:417 +msgid "Pencil" +msgstr "Карандаш" + +#: ../share/filters/filters.svg.h:80 +msgid "Detect color edges and retrace them in grayscale" +msgstr "Найти в объекте цветные края и перекрасить их в оттенки серого" + +#: ../share/filters/filters.svg.h:82 +msgid "Blueprint" +msgstr "Светокопия" + +#: ../share/filters/filters.svg.h:84 +msgid "Detect color edges and retrace them in blue" +msgstr "Найти в объекте цветные края и перекрасить их синим цветом" + +#: ../share/filters/filters.svg.h:86 +msgid "Age" +msgstr "Состаривание" + +#: ../share/filters/filters.svg.h:88 +msgid "Imitate aged photograph" +msgstr "Имитация старой фотографии" + +#: ../share/filters/filters.svg.h:90 +msgid "Organic" +msgstr "Органика" + +#: ../share/filters/filters.svg.h:91 ../share/filters/filters.svg.h:119 +#: ../share/filters/filters.svg.h:127 ../share/filters/filters.svg.h:187 +#: ../share/filters/filters.svg.h:195 ../share/filters/filters.svg.h:199 +#: ../share/filters/filters.svg.h:251 ../share/filters/filters.svg.h:259 +#: ../share/filters/filters.svg.h:263 ../share/filters/filters.svg.h:355 +#: ../share/filters/filters.svg.h:359 ../share/filters/filters.svg.h:367 +#: ../share/filters/filters.svg.h:371 ../share/filters/filters.svg.h:375 +#: ../share/filters/filters.svg.h:379 ../share/filters/filters.svg.h:383 +#: ../share/filters/filters.svg.h:439 ../share/filters/filters.svg.h:467 +#: ../share/filters/filters.svg.h:491 ../share/filters/filters.svg.h:531 +msgid "Textures" +msgstr "Текстуры" + +#: ../share/filters/filters.svg.h:92 +msgid "Bulging, knotty, slick 3D surface" +msgstr "Выпяченная, узловатая трехмерная текстура" + +#: ../share/filters/filters.svg.h:94 +msgid "Barbed Wire" +msgstr "Колючая проволока" + +#: ../share/filters/filters.svg.h:96 +msgid "Gray bevelled wires with drop shadows" +msgstr "Серые выступающие провода, отбрасывающие тень" + +#: ../share/filters/filters.svg.h:98 +msgid "Swiss Cheese" +msgstr "Швейцарский сыр" + +#: ../share/filters/filters.svg.h:100 +msgid "Random inner-bevel holes" +msgstr "Случайные дыры с внутренней фаской" + +#: ../share/filters/filters.svg.h:102 +msgid "Blue Cheese" +msgstr "Голубой сыр" + +#: ../share/filters/filters.svg.h:104 +msgid "Marble-like bluish speckles" +msgstr "Голубоватые пятна как в мраморе" + +#: ../share/filters/filters.svg.h:106 +msgid "Button" +msgstr "Кнопка" + +#: ../share/filters/filters.svg.h:108 +msgid "Soft bevel, slightly depressed middle" +msgstr "Плавная фаска, немного вдавленный центр" + +#: ../share/filters/filters.svg.h:110 +msgid "Inset" +msgstr "Врезка" + +#: ../share/filters/filters.svg.h:111 ../share/filters/filters.svg.h:267 +#: ../share/filters/filters.svg.h:343 ../share/filters/filters.svg.h:435 +#: ../share/filters/filters.svg.h:811 +#: ../src/extension/internal/filter/shadows.h:81 +msgid "Shadows and Glows" +msgstr "Свет и тень" + +#: ../share/filters/filters.svg.h:112 +msgid "Shadowy outer bevel" +msgstr "Затененная внешняя кромка" + +#: ../share/filters/filters.svg.h:114 +#, fuzzy +msgid "Dripping" +msgstr "Протекание" + +#: ../share/filters/filters.svg.h:116 +msgid "Random paint streaks downwards" +msgstr "Случайное стекание краски вниз" + +#: ../share/filters/filters.svg.h:118 +#, fuzzy +msgid "Jam Spread" +msgstr "Слой джема" + +#: ../share/filters/filters.svg.h:120 +msgid "Glossy clumpy jam spread" +msgstr "Слой блестящего комковатого джема" + +#: ../share/filters/filters.svg.h:122 +#, fuzzy +msgid "Pixel Smear" +msgstr "Пиксельные мазки" + +#: ../share/filters/filters.svg.h:124 +msgid "Van Gogh painting effect for bitmaps" +msgstr "Эффект рисования в стиле ван Гога" + +#: ../share/filters/filters.svg.h:126 +msgid "Cracked Glass" +msgstr "Треснутое стекло" + +#: ../share/filters/filters.svg.h:128 +msgid "Under a cracked glass" +msgstr "Под треснутым стеклом" + +#: ../share/filters/filters.svg.h:130 +msgid "Bubbly Bumps" +msgstr "Пузыристые выпуклости " + +#: ../share/filters/filters.svg.h:131 ../share/filters/filters.svg.h:307 +#: ../share/filters/filters.svg.h:311 ../share/filters/filters.svg.h:347 +#: ../share/filters/filters.svg.h:351 ../share/filters/filters.svg.h:419 +#: ../share/filters/filters.svg.h:423 ../share/filters/filters.svg.h:463 +#: ../share/filters/filters.svg.h:471 ../share/filters/filters.svg.h:479 +#: ../share/filters/filters.svg.h:483 ../share/filters/filters.svg.h:511 +#: ../share/filters/filters.svg.h:535 ../share/filters/filters.svg.h:539 +#: ../share/filters/filters.svg.h:543 ../share/filters/filters.svg.h:547 +#: ../share/filters/filters.svg.h:571 ../share/filters/filters.svg.h:579 +#: ../share/filters/filters.svg.h:595 ../share/filters/filters.svg.h:599 +#: ../share/filters/filters.svg.h:603 ../share/filters/filters.svg.h:607 +#: ../share/filters/filters.svg.h:611 ../share/filters/filters.svg.h:615 +#: ../share/filters/filters.svg.h:619 ../share/filters/filters.svg.h:623 +#: ../share/filters/filters.svg.h:799 ../share/filters/filters.svg.h:807 +#: ../src/extension/internal/filter/bumps.h:142 +#: ../src/extension/internal/filter/bumps.h:362 +msgid "Bumps" +msgstr "Выпуклости" + +#: ../share/filters/filters.svg.h:132 +msgid "Flexible bubbles effect with some displacement" +msgstr "Гибкий эффект пузырей с некоторым смещением" + +#: ../share/filters/filters.svg.h:134 +msgid "Glowing Bubble" +msgstr "Светящийся пузырь" + +#: ../share/filters/filters.svg.h:135 ../share/filters/filters.svg.h:155 +#: ../share/filters/filters.svg.h:159 ../share/filters/filters.svg.h:203 +#: ../share/filters/filters.svg.h:207 ../share/filters/filters.svg.h:215 +#: ../share/filters/filters.svg.h:223 +msgid "Ridges" +msgstr "Кромки" + +#: ../share/filters/filters.svg.h:136 +msgid "Bubble effect with refraction and glow" +msgstr "Эффект пузыря с рефракцией и свечением" + +#: ../share/filters/filters.svg.h:138 +msgid "Neon" +msgstr "Неон" + +#: ../share/filters/filters.svg.h:140 +msgid "Neon light effect" +msgstr "Эффект неонового свечения" + +#: ../share/filters/filters.svg.h:142 +msgid "Molten Metal" +msgstr "Расплавленный металл" + +#: ../share/filters/filters.svg.h:144 +msgid "Melting parts of object together, with a glossy bevel and a glow" +msgstr "Сплавить части объекта, добавив блестящую фаску и свечение" + +#: ../share/filters/filters.svg.h:146 +msgid "Pressed Steel" +msgstr "Штампованная сталь" + +#: ../share/filters/filters.svg.h:148 +msgid "Pressed metal with a rolled edge" +msgstr "Штампованная сталь с вальцованным краем" + +#: ../share/filters/filters.svg.h:150 +msgid "Matte Bevel" +msgstr "Матовая фаска" + +#: ../share/filters/filters.svg.h:152 +msgid "Soft, pastel-colored, blurry bevel" +msgstr "Плавная фаска пастельных тонов" + +#: ../share/filters/filters.svg.h:154 +msgid "Thin Membrane" +msgstr "Тонкая мембрана" + +#: ../share/filters/filters.svg.h:156 +msgid "Thin like a soap membrane" +msgstr "Мембрана, тонкая как мыльный пузырь" + +#: ../share/filters/filters.svg.h:158 +msgid "Matte Ridge" +msgstr "Матовая кромка" + +#: ../share/filters/filters.svg.h:160 +msgid "Soft pastel ridge" +msgstr "Мягкая пастельная кромка" + +#: ../share/filters/filters.svg.h:162 +msgid "Glowing Metal" +msgstr "Сверкающий металл" + +#: ../share/filters/filters.svg.h:164 +msgid "Glowing metal texture" +msgstr "Текстура сверкающего металла" + +#: ../share/filters/filters.svg.h:166 +msgid "Leaves" +msgstr "Листва" + +#: ../share/filters/filters.svg.h:167 ../share/filters/filters.svg.h:235 +#: ../share/filters/filters.svg.h:271 ../share/filters/filters.svg.h:639 +#: ../share/extensions/pathscatter.inx.h:1 +msgid "Scatter" +msgstr "Рассеивание" + +#: ../share/filters/filters.svg.h:168 +msgid "Leaves on the ground in Fall, or living foliage" +msgstr "Листва на осенней земле или лиственный орнамент" + +#: ../share/filters/filters.svg.h:170 +#: ../src/extension/internal/filter/paint.h:339 +msgid "Translucent" +msgstr "Ослепительно яркая" + +#: ../share/filters/filters.svg.h:172 +msgid "Illuminated translucent plastic or glass effect" +msgstr "Эффект подсвеченного полупрозрачного пластика" + +#: ../share/filters/filters.svg.h:174 +msgid "Iridescent Beeswax" +msgstr "Радужный воск" + +#: ../share/filters/filters.svg.h:176 +msgid "Waxy texture which keeps its iridescence through color fill change" +msgstr "Восковая текстура с радужностью за счет смены цвета заливки" + +#: ../share/filters/filters.svg.h:178 +msgid "Eroded Metal" +msgstr "Ржавчина" + +#: ../share/filters/filters.svg.h:180 +msgid "Eroded metal texture with ridges, grooves, holes and bumps" +msgstr "Текстура ржавого металла с кромкой, желобками, дырка и выпуклостями" + +#: ../share/filters/filters.svg.h:182 +msgid "Cracked Lava" +msgstr "Пузырящаяся лава" + +#: ../share/filters/filters.svg.h:184 +msgid "A volcanic texture, a little like leather" +msgstr "Вулканическая текстура с пузырями лавы, похожая на кожу" + +#: ../share/filters/filters.svg.h:186 +msgid "Bark" +msgstr "Кора" + +#: ../share/filters/filters.svg.h:188 +msgid "Bark texture, vertical; use with deep colors" +msgstr "" +"Текстура коры дерева, вертикальная; используйте с темными насыщенными цветами" + +#: ../share/filters/filters.svg.h:190 +msgid "Lizard Skin" +msgstr "Кожа ящерицы" + +#: ../share/filters/filters.svg.h:192 +msgid "Stylized reptile skin texture" +msgstr "Текстура, стилизованная под кожу ящерицы" + +#: ../share/filters/filters.svg.h:194 +msgid "Stone Wall" +msgstr "Каменная кладка" + +#: ../share/filters/filters.svg.h:196 +msgid "Stone wall texture to use with not too saturated colors" +msgstr "Текстура камня для использования с не очень насыщенными цветами" + +#: ../share/filters/filters.svg.h:198 +msgid "Silk Carpet" +msgstr "Шёлковый ковер" + +#: ../share/filters/filters.svg.h:200 +msgid "Silk carpet texture, horizontal stripes" +msgstr "Текстура шелкового ковра с горизонтальными полосками" + +#: ../share/filters/filters.svg.h:202 +msgid "Refractive Gel A" +msgstr "Преломляющий гель А" + +#: ../share/filters/filters.svg.h:204 +msgid "Gel effect with light refraction" +msgstr "Гелевый эффект с легким преломлением" + +#: ../share/filters/filters.svg.h:206 +msgid "Refractive Gel B" +msgstr "Преломляющий гель Б" + +#: ../share/filters/filters.svg.h:208 +msgid "Gel effect with strong refraction" +msgstr "Гелевый эффект с сильным преломлением" + +#: ../share/filters/filters.svg.h:210 +msgid "Metallized Paint" +msgstr "Металлизированная краска" + +#: ../share/filters/filters.svg.h:212 +msgid "" +"Metallized effect with a soft lighting, slightly translucent at the edges" +msgstr "Эффект металла в рассеянном свете, слегка полупрозрачного по краям" + +#: ../share/filters/filters.svg.h:214 +msgid "Dragee" +msgstr "Драже" + +#: ../share/filters/filters.svg.h:216 +msgid "Gel Ridge with a pearlescent look" +msgstr "Гелевая кромка жемчужного вида" + +#: ../share/filters/filters.svg.h:218 +msgid "Raised Border" +msgstr "Приподнятый край" + +#: ../share/filters/filters.svg.h:220 +msgid "Strongly raised border around a flat surface" +msgstr "Высоко поднятая над плоской поверхностью фаска" + +#: ../share/filters/filters.svg.h:222 +msgid "Metallized Ridge" +msgstr "Металлизированная кромка" + +#: ../share/filters/filters.svg.h:224 +msgid "Gel Ridge metallized at its top" +msgstr "Гелевая кромка с металликом наверху" + +#: ../share/filters/filters.svg.h:226 +msgid "Fat Oil" +msgstr "Жирная масляная краска" + +#: ../share/filters/filters.svg.h:228 +msgid "Fat oil with some adjustable turbulence" +msgstr "Жирная масляная краска с регулируемой турбулентностью" + +#: ../share/filters/filters.svg.h:230 +msgid "Black Hole" +msgstr "Чёрная дыра" + +#: ../share/filters/filters.svg.h:231 ../share/filters/filters.svg.h:275 +#: ../share/filters/filters.svg.h:279 ../share/filters/filters.svg.h:835 +#: ../share/filters/filters.svg.h:839 ../share/filters/filters.svg.h:843 +#: ../src/extension/internal/filter/morphology.h:76 +#: ../src/extension/internal/filter/morphology.h:203 +#: ../src/filter-enums.cpp:31 +msgid "Morphology" +msgstr "Морфология" + +#: ../share/filters/filters.svg.h:232 +msgid "Creates a black light inside and outside" +msgstr "Создать черный свет изнутри и снаружи" + +#: ../share/filters/filters.svg.h:234 +msgid "Cubes" +msgstr "Кубики" + +#: ../share/filters/filters.svg.h:236 +msgid "Scattered cubes; adjust the Morphology primitive to vary size" +msgstr "" +"Эффект разбросанных кубиков; размер меняется коррекцией примитива Морфология" + +#: ../share/filters/filters.svg.h:238 +#, fuzzy +msgid "Peel Off" +msgstr "Шелуха" + +#: ../share/filters/filters.svg.h:240 +msgid "Peeling painting on a wall" +msgstr "Отслаивающаяся от стены краска" + +#: ../share/filters/filters.svg.h:242 +msgid "Gold Splatter" +msgstr "Золотые брызги" + +#: ../share/filters/filters.svg.h:244 +msgid "Splattered cast metal, with golden highlights" +msgstr "Брызги металла с золотистыми бликами" + +#: ../share/filters/filters.svg.h:246 +#, fuzzy +msgid "Gold Paste" +msgstr "Золотая паста" + +#: ../share/filters/filters.svg.h:248 +msgid "Fat pasted cast metal, with golden highlights" +msgstr "Толстый пласт металла с золотистыми бликами" + +#: ../share/filters/filters.svg.h:250 +msgid "Crumpled Plastic" +msgstr "Мятый пластик" + +#: ../share/filters/filters.svg.h:252 +msgid "Crumpled matte plastic, with melted edge" +msgstr "Мятый матовый пластик с оплавленными краями" + +#: ../share/filters/filters.svg.h:254 +msgid "Enamel Jewelry" +msgstr "Финифть" + +#: ../share/filters/filters.svg.h:256 +msgid "Slightly cracked enameled texture" +msgstr "Текстура слегка потрескавшейся финифти" + +#: ../share/filters/filters.svg.h:258 +msgid "Rough Paper" +msgstr "Шероховатая бумага" + +#: ../share/filters/filters.svg.h:260 +msgid "Aquarelle paper effect which can be used for pictures as for objects" +msgstr "Эффект бумаги для акварели; годится для растровых и векторных объектов" + +#: ../share/filters/filters.svg.h:262 +#, fuzzy +msgid "Rough and Glossy" +msgstr "Грубая глянцевая бумага" + +#: ../share/filters/filters.svg.h:264 +msgid "" +"Crumpled glossy paper effect which can be used for pictures as for objects" +msgstr "Мятая глянцевая бумага; можно применять к готовым рисункам" + +#: ../share/filters/filters.svg.h:266 +#, fuzzy +msgid "In and Out" +msgstr "Внутри и снаружи" + +#: ../share/filters/filters.svg.h:268 +msgid "Inner colorized shadow, outer black shadow" +msgstr "Внутренняя цветная и черная внешняя тени" + +#: ../share/filters/filters.svg.h:270 +msgid "Air Spray" +msgstr "Аэрограф" + +#: ../share/filters/filters.svg.h:272 +msgid "Convert to small scattered particles with some thickness" +msgstr "Превратить в маленькие рассеянные частицы некоторой толщины" + +#: ../share/filters/filters.svg.h:274 +#, fuzzy +msgid "Warm Inside" +msgstr "Внутреннее тепло" + +#: ../share/filters/filters.svg.h:276 +msgid "Blurred colorized contour, filled inside" +msgstr "Заполненный контур с размытой обводкой" + +#: ../share/filters/filters.svg.h:278 +#, fuzzy +msgid "Cool Outside" +msgstr "Прохлада снаружи" + +#: ../share/filters/filters.svg.h:280 +msgid "Blurred colorized contour, empty inside" +msgstr "Пустой контур с размытой обводкой" + +#: ../share/filters/filters.svg.h:282 +#, fuzzy +msgid "Electronic Microscopy" +msgstr "Электронный микроскоп" + +#: ../share/filters/filters.svg.h:284 +msgid "" +"Bevel, crude light, discoloration and glow like in electronic microscopy" +msgstr "" +"Фаска, жёсткий свет, обесцвечивание и свечение как в электронном микроскопе" + +#: ../share/filters/filters.svg.h:286 +msgid "Tartan" +msgstr "Шотландка" + +#: ../share/filters/filters.svg.h:288 +msgid "Checkered tartan pattern" +msgstr "Клетчатая шерстяная материя" + +#: ../share/filters/filters.svg.h:290 +#, fuzzy +msgid "Shaken Liquid" +msgstr "Взболтанная жидкость" + +#: ../share/filters/filters.svg.h:292 +msgid "Colorizable filling with flow inside like transparency" +msgstr "Раскрашиваемая заливка с внутренним полупрозрачным потоком" + +#: ../share/filters/filters.svg.h:294 +#, fuzzy +msgid "Soft Focus Lens" +msgstr "Размывание вне фокуса" + +#: ../share/filters/filters.svg.h:296 +msgid "Glowing image content without blurring it" +msgstr "Свечение содержимого объекта без размывания" + +#: ../share/filters/filters.svg.h:298 +#, fuzzy +msgid "Stained Glass" +msgstr "Треснутое стекло" + +#: ../share/filters/filters.svg.h:300 +msgid "Illuminated stained glass effect" +msgstr "Иллюминированный эффект тонированного стекла" + +#: ../share/filters/filters.svg.h:302 +#, fuzzy +msgid "Dark Glass" +msgstr "Тёмное стекло" + +#: ../share/filters/filters.svg.h:304 +msgid "Illuminated glass effect with light coming from beneath" +msgstr "Эффект подсвеченного стекла, при котором свет исходит снизу" + +#: ../share/filters/filters.svg.h:306 +#, fuzzy +msgid "HSL Bumps Alpha" +msgstr "Выпуклости HSL с альфа-каналом" + +#: ../share/filters/filters.svg.h:308 +msgid "Same as HSL Bumps but with transparent highlights" +msgstr "То же, что и Выпуклости HSL, но с прозрачными яркими участками" + +#: ../share/filters/filters.svg.h:310 +#, fuzzy +msgid "Bubbly Bumps Alpha" +msgstr "Пузыристые выпуклости с альфа-каналом" + +#: ../share/filters/filters.svg.h:312 +msgid "Same as Bubbly Bumps but with transparent highlights" +msgstr "То же, что и Пузыристые выпуклости, но с прозрачными яркими участками" + +#: ../share/filters/filters.svg.h:314 ../share/filters/filters.svg.h:362 +#, fuzzy +msgid "Torn Edges" +msgstr "Неровные края" + +#: ../share/filters/filters.svg.h:316 ../share/filters/filters.svg.h:364 +msgid "" +"Displace the outside of shapes and pictures without altering their content" +msgstr "" +"Сместить внешнюю часть объектов и растровых изображений без изменения их " +"содержимого" + +#: ../share/filters/filters.svg.h:318 +#, fuzzy +msgid "Roughen Inside" +msgstr "Огрубление изнутри" + +#: ../share/filters/filters.svg.h:320 +msgid "Roughen all inside shapes" +msgstr "Огрубление всего внутри объектов" + +#: ../share/filters/filters.svg.h:322 +msgid "Evanescent" +msgstr "Мгновение" + +#: ../share/filters/filters.svg.h:324 +msgid "" +"Blur the contents of objects, preserving the outline and adding progressive " +"transparency at edges" +msgstr "" +"Размыть содержимое объектов, сохраняя контур и добавляя нарастающую " +"прозрачность по краям" + +#: ../share/filters/filters.svg.h:326 +#, fuzzy +msgid "Chalk and Sponge" +msgstr "Мел и губка" + +#: ../share/filters/filters.svg.h:328 +msgid "Low turbulence gives sponge look and high turbulence chalk" +msgstr "Низкая турбулентность создает эффект губки, а высокая — мела" + +#: ../share/filters/filters.svg.h:330 +msgid "People" +msgstr "Толпа" + +#: ../share/filters/filters.svg.h:332 +msgid "Colorized blotches, like a crowd of people" +msgstr "Разноцветные пятна, напоминающие толпу людей" + +#: ../share/filters/filters.svg.h:334 +msgid "Scotland" +msgstr "Шотландия" + +#: ../share/filters/filters.svg.h:336 +msgid "Colorized mountain tops out of the fog" +msgstr "Раскрашенные верхушки гор, выглядывающие из тумана" + +#: ../share/filters/filters.svg.h:338 +msgid "Garden of Delights" +msgstr "Сады земных наслаждений" + +#: ../share/filters/filters.svg.h:340 +msgid "" +"Phantasmagorical turbulent wisps, like Hieronymus Bosch's Garden of Delights" +msgstr "" +"Фантасмагорическая турбулентность, напоминающая «Сады земных наслаждений» " +"Иеронима Босха" + +#: ../share/filters/filters.svg.h:342 +msgid "Cutout Glow" +msgstr "Вырезанное свечение" + +#: ../share/filters/filters.svg.h:344 +msgid "In and out glow with a possible offset and colorizable flood" +msgstr "" +"Свечение изнутри и снаружи с возможным смещением и раскрашиваемой заливкой" + +#: ../share/filters/filters.svg.h:346 +msgid "Dark Emboss" +msgstr "Тёмный рельеф" + +#: ../share/filters/filters.svg.h:348 +msgid "Emboss effect : 3D relief where white is replaced by black" +msgstr "Эффект рельефа, где белое заменяется черным" + +#: ../share/filters/filters.svg.h:350 +#, fuzzy +msgid "Bubbly Bumps Matte" +msgstr "Пузыристые матовые выпуклости" + +#: ../share/filters/filters.svg.h:352 +msgid "Same as Bubbly Bumps but with a diffuse light instead of a specular one" +msgstr "" +"То же, что и пузыристые выпуклости, но с рассеянным, а не отраженным светом" + +#: ../share/filters/filters.svg.h:354 +#, fuzzy +msgid "Blotting Paper" +msgstr "Промокшая бумага" + +#: ../share/filters/filters.svg.h:356 +msgid "Inkblot on blotting paper" +msgstr "Чернильное пятно на промокшей бумаге" + +#: ../share/filters/filters.svg.h:358 +#, fuzzy +msgid "Wax Print" +msgstr "Восковая печать" + +#: ../share/filters/filters.svg.h:360 +msgid "Wax print on tissue texture" +msgstr "Восковая печать на бумажной текстуре" + +#: ../share/filters/filters.svg.h:366 +msgid "Watercolor" +msgstr "Акварель" + +#: ../share/filters/filters.svg.h:368 +msgid "Cloudy watercolor effect" +msgstr "Облачный акварельный эффект" + +#: ../share/filters/filters.svg.h:370 +msgid "Felt" +msgstr "Войлок" + +#: ../share/filters/filters.svg.h:372 +msgid "" +"Felt like texture with color turbulence and slightly darker at the edges" +msgstr "" +"Текстура, напоминающая войлок, с цветной турбулентностью, слегка темная по " +"краям" + +#: ../share/filters/filters.svg.h:374 +#, fuzzy +msgid "Ink Paint" +msgstr "Краска" + +#: ../share/filters/filters.svg.h:376 +msgid "Ink paint on paper with some turbulent color shift" +msgstr "Цветная краска на бумаге, с небольшим турбулентным цветовым сдвигом" + +#: ../share/filters/filters.svg.h:378 +#, fuzzy +msgid "Tinted Rainbow" +msgstr "Окрашенная радуга" + +#: ../share/filters/filters.svg.h:380 +msgid "Smooth rainbow colors melted along the edges and colorizable" +msgstr "" +"Мягкие цвета радуги, оплавляющие объект по краям и зависящие от заливки " +"объекта" + +#: ../share/filters/filters.svg.h:382 +#, fuzzy +msgid "Melted Rainbow" +msgstr "Расплавленная радуга" + +#: ../share/filters/filters.svg.h:384 +msgid "Smooth rainbow colors slightly melted along the edges" +msgstr "Мягкие радужные цвета цвета, слегка оплавляющие края объекта" + +#: ../share/filters/filters.svg.h:386 +#, fuzzy +msgid "Flex Metal" +msgstr "Гибкий металл" + +#: ../share/filters/filters.svg.h:388 +msgid "Bright, polished uneven metal casting, colorizable" +msgstr "Яркая и отполированная раскрашиваемая металлическая отливка" + +#: ../share/filters/filters.svg.h:390 +#, fuzzy +msgid "Wavy Tartan" +msgstr "Волнистая шотландка" + +#: ../share/filters/filters.svg.h:392 +msgid "Tartan pattern with a wavy displacement and bevel around the edges" +msgstr "" +"Узор клетчатой шерстяной материи с волнистым искажением и фаской по краям" + +#: ../share/filters/filters.svg.h:394 +msgid "3D Marble" +msgstr "Объёмный мрамор" + +#: ../share/filters/filters.svg.h:396 +msgid "3D warped marble texture" +msgstr "Объемная текстура мрамора" + +#: ../share/filters/filters.svg.h:398 +msgid "3D Wood" +msgstr "Объёмное дерево" + +#: ../share/filters/filters.svg.h:400 +msgid "3D warped, fibered wood texture" +msgstr "Объёмная текстура древесины" + +#: ../share/filters/filters.svg.h:402 +msgid "3D Mother of Pearl" +msgstr "Объёмный перламутр" + +#: ../share/filters/filters.svg.h:404 +msgid "3D warped, iridescent pearly shell texture" +msgstr "Объёмная текстура перламутровой раковины" + +#: ../share/filters/filters.svg.h:406 +msgid "Tiger Fur" +msgstr "Тигровая шкура" + +#: ../share/filters/filters.svg.h:408 +msgid "Tiger fur pattern with folds and bevel around the edges" +msgstr "Узор тигровой шкуры со складками и фаской по краям" + +#: ../share/filters/filters.svg.h:410 +msgid "Black Light" +msgstr "Черный свет" + +#: ../share/filters/filters.svg.h:411 ../share/filters/filters.svg.h:575 +#: ../share/filters/filters.svg.h:587 ../share/filters/filters.svg.h:627 +#: ../share/filters/filters.svg.h:631 ../share/filters/filters.svg.h:819 +#: ../share/filters/filters.svg.h:827 ../share/filters/filters.svg.h:831 +#: ../src/extension/internal/bitmap/colorize.cpp:52 +#: ../src/extension/internal/filter/bumps.h:101 +#: ../src/extension/internal/filter/bumps.h:321 +#: ../src/extension/internal/filter/bumps.h:328 +#: ../src/extension/internal/filter/color.h:82 +#: ../src/extension/internal/filter/color.h:164 +#: ../src/extension/internal/filter/color.h:171 +#: ../src/extension/internal/filter/color.h:262 +#: ../src/extension/internal/filter/color.h:340 +#: ../src/extension/internal/filter/color.h:347 +#: ../src/extension/internal/filter/color.h:437 +#: ../src/extension/internal/filter/color.h:532 +#: ../src/extension/internal/filter/color.h:654 +#: ../src/extension/internal/filter/color.h:751 +#: ../src/extension/internal/filter/color.h:830 +#: ../src/extension/internal/filter/color.h:921 +#: ../src/extension/internal/filter/color.h:1049 +#: ../src/extension/internal/filter/color.h:1119 +#: ../src/extension/internal/filter/color.h:1212 +#: ../src/extension/internal/filter/color.h:1324 +#: ../src/extension/internal/filter/color.h:1429 +#: ../src/extension/internal/filter/color.h:1505 +#: ../src/extension/internal/filter/color.h:1609 +#: ../src/extension/internal/filter/color.h:1616 +#: ../src/extension/internal/filter/morphology.h:194 +#: ../src/extension/internal/filter/overlays.h:73 +#: ../src/extension/internal/filter/paint.h:99 +#: ../src/extension/internal/filter/paint.h:713 +#: ../src/extension/internal/filter/paint.h:717 +#: ../src/extension/internal/filter/shadows.h:73 +#: ../src/extension/internal/filter/transparency.h:345 +#: ../src/filter-enums.cpp:66 ../src/ui/dialog/clonetiler.cpp:832 +#: ../src/ui/dialog/clonetiler.cpp:983 +#: ../src/ui/dialog/document-properties.cpp:157 +#: ../share/extensions/color_HSL_adjust.inx.h:20 +#: ../share/extensions/color_blackandwhite.inx.h:3 +#: ../share/extensions/color_brighter.inx.h:2 +#: ../share/extensions/color_custom.inx.h:15 +#: ../share/extensions/color_darker.inx.h:2 +#: ../share/extensions/color_desaturate.inx.h:2 +#: ../share/extensions/color_grayscale.inx.h:2 +#: ../share/extensions/color_lesshue.inx.h:2 +#: ../share/extensions/color_lesslight.inx.h:2 +#: ../share/extensions/color_lesssaturation.inx.h:2 +#: ../share/extensions/color_morehue.inx.h:2 +#: ../share/extensions/color_morelight.inx.h:2 +#: ../share/extensions/color_moresaturation.inx.h:2 +#: ../share/extensions/color_negative.inx.h:2 +#: ../share/extensions/color_randomize.inx.h:8 +#: ../share/extensions/color_removeblue.inx.h:2 +#: ../share/extensions/color_removegreen.inx.h:2 +#: ../share/extensions/color_removered.inx.h:2 +#: ../share/extensions/color_replace.inx.h:6 +#: ../share/extensions/color_rgbbarrel.inx.h:2 +#: ../share/extensions/interp_att_g.inx.h:19 +msgid "Color" +msgstr "Цвет" + +#: ../share/filters/filters.svg.h:412 +msgid "Light areas turn to black" +msgstr "Светлые области становятся черными" + +#: ../share/filters/filters.svg.h:414 +msgid "Film Grain" +msgstr "Плёночный шум" + +#: ../share/filters/filters.svg.h:416 +msgid "Adds a small scale graininess" +msgstr "Добавить небольшую зашумленность как на фотопленке" + +#: ../share/filters/filters.svg.h:418 +msgid "Plaster Color" +msgstr "" + +#: ../share/filters/filters.svg.h:420 +msgid "Colored plaster emboss effect" +msgstr "" + +#: ../share/filters/filters.svg.h:422 +msgid "Velvet Bumps" +msgstr "Вельветовые шишки" + +#: ../share/filters/filters.svg.h:424 +msgid "Gives Smooth Bumps velvet like" +msgstr "Создать выпуклости наподобие вельветовой ткани" + +#: ../share/filters/filters.svg.h:426 +#, fuzzy +msgid "Comics Cream" +msgstr "Кремовый комикс" + +#: ../share/filters/filters.svg.h:427 ../share/filters/filters.svg.h:727 +#: ../share/filters/filters.svg.h:731 ../share/filters/filters.svg.h:735 +#: ../share/filters/filters.svg.h:739 ../share/filters/filters.svg.h:743 +#: ../share/filters/filters.svg.h:747 ../share/filters/filters.svg.h:751 +#: ../share/filters/filters.svg.h:755 ../share/filters/filters.svg.h:759 +#: ../share/filters/filters.svg.h:763 ../share/filters/filters.svg.h:767 +#: ../share/filters/filters.svg.h:771 ../share/filters/filters.svg.h:775 +#: ../share/filters/filters.svg.h:779 ../share/filters/filters.svg.h:783 +#: ../share/filters/filters.svg.h:787 ../share/filters/filters.svg.h:791 +#: ../share/filters/filters.svg.h:795 +msgid "Non realistic 3D shaders" +msgstr "Нереалистичные 3D-шейдеры" + +#: ../share/filters/filters.svg.h:428 +msgid "Comics shader with creamy waves transparency" +msgstr "Комиксовый шейдер с кремовой волнистой полупрозрачностью" + +#: ../share/filters/filters.svg.h:430 +#, fuzzy +msgid "Chewing Gum" +msgstr "Жевательная резинка" + +#: ../share/filters/filters.svg.h:432 +msgid "" +"Creates colorizable blotches which smoothly flow over the edges of the lines " +"at their crossings" +msgstr "" +"Создать раскрашиваемые пятна, слегка вытекающие за края линий в местах " +"пересечений этих линий" + +#: ../share/filters/filters.svg.h:434 +#, fuzzy +msgid "Dark And Glow" +msgstr "Тёмный и светящийся" + +#: ../share/filters/filters.svg.h:436 +msgid "Darkens the edge with an inner blur and adds a flexible glow" +msgstr "" +"Затемнить края, добавить внутреннее размывание и настраиваемое свечение" + +#: ../share/filters/filters.svg.h:438 +#, fuzzy +msgid "Warped Rainbow" +msgstr "Деформированная радуга" + +#: ../share/filters/filters.svg.h:440 +msgid "Smooth rainbow colors warped along the edges and colorizable" +msgstr "" +"Мягкие радужные цвета, деформированные по краям и зависящие от заливки " +"объекта" + +#: ../share/filters/filters.svg.h:442 +#, fuzzy +msgid "Rough and Dilate" +msgstr "Неровный и растянутый" + +#: ../share/filters/filters.svg.h:444 +msgid "Create a turbulent contour around" +msgstr "Создать турбулентный контур вокруг" + +#: ../share/filters/filters.svg.h:446 +#, fuzzy +msgid "Old Postcard" +msgstr "Старая открытка" + +#: ../share/filters/filters.svg.h:448 +msgid "Slightly posterize and draw edges like on old printed postcards" +msgstr "Легкая постеризация и края как на старых открытках" + +#: ../share/filters/filters.svg.h:450 +#, fuzzy +msgid "Dots Transparency" +msgstr "Прозрачные точки" + +#: ../share/filters/filters.svg.h:452 +msgid "Gives a pointillist HSL sensitive transparency" +msgstr "Создать пуантилистическую прозрачность, чувствительную к HSL" + +#: ../share/filters/filters.svg.h:454 +#, fuzzy +msgid "Canvas Transparency" +msgstr "Прозрачный холст" + +#: ../share/filters/filters.svg.h:456 +#, fuzzy +msgid "Gives a canvas like HSL sensitive transparency." +msgstr "Создать похожую на холст прозрачность, чувствительную к HSL" + +#: ../share/filters/filters.svg.h:458 +#, fuzzy +msgid "Smear Transparency" +msgstr "Прозрачные мазки" + +#: ../share/filters/filters.svg.h:460 +msgid "" +"Paint objects with a transparent turbulence which turns around color edges" +msgstr "Закрасить объекты прозрачной турбулентностью, огибающей цветные края" + +#: ../share/filters/filters.svg.h:462 +#, fuzzy +msgid "Thick Paint" +msgstr "Густая краска" + +#: ../share/filters/filters.svg.h:464 +msgid "Thick painting effect with turbulence" +msgstr "Эффект густой краски с турбулентностью" + +#: ../share/filters/filters.svg.h:466 +msgid "Burst" +msgstr "Лопнувший шарик" + +#: ../share/filters/filters.svg.h:468 +msgid "Burst balloon texture crumpled and with holes" +msgstr "Текстура разорвавшегося воздушного шарика" + +#: ../share/filters/filters.svg.h:470 +#, fuzzy +msgid "Embossed Leather" +msgstr "Рельефная кожа" + +#: ../share/filters/filters.svg.h:472 +msgid "" +"Combine a HSL edges detection bump with a leathery or woody and colorizable " +"texture" +msgstr "Эффект текстуры кожи или дерева с выдавливанием краев" + +#: ../share/filters/filters.svg.h:474 +msgid "Carnaval" +msgstr "Карнавал" + +#: ../share/filters/filters.svg.h:476 +msgid "White splotches evocating carnaval masks" +msgstr "Белые неровные пятна, напоминающие карнавальные маски" + +#: ../share/filters/filters.svg.h:478 +msgid "Plastify" +msgstr "Пластификация" + +#: ../share/filters/filters.svg.h:480 +msgid "" +"HSL edges detection bump with a wavy reflective surface effect and variable " +"crumple" +msgstr "" +"Выпуклость по определенным краям HSL с эффектом волнистой отражающей " +"поверхности и переменной смятостью" + +#: ../share/filters/filters.svg.h:482 +msgid "Plaster" +msgstr "Штукатурка" + +#: ../share/filters/filters.svg.h:484 +msgid "" +"Combine a HSL edges detection bump with a matte and crumpled surface effect" +msgstr "" +"Объединение выпуклости по определенным краям с эффектом сморщенной " +"поверхности" + +#: ../share/filters/filters.svg.h:486 +msgid "Rough Transparency" +msgstr "Грубая прозрачность" + +#: ../share/filters/filters.svg.h:488 +msgid "Adds a turbulent transparency which displaces pixels at the same time" +msgstr "Добавить турбулентную прозрачность с одновременным смещением пикселов" + +#: ../share/filters/filters.svg.h:490 +msgid "Gouache" +msgstr "Гуашь" + +#: ../share/filters/filters.svg.h:492 +msgid "Partly opaque water color effect with bleed" +msgstr "Полупрозрачный эффект акварели с " + +#: ../share/filters/filters.svg.h:494 +msgid "Alpha Engraving" +msgstr "Альфа-гравировка" + +#: ../share/filters/filters.svg.h:496 +msgid "Gives a transparent engraving effect with rough line and filling" +msgstr "Создать прозрачный эффект гравюры с грубыми линиями и заливкой" + +#: ../share/filters/filters.svg.h:498 +#, fuzzy +msgid "Alpha Draw Liquid" +msgstr "Текучий прозрачный рисунок" + +#: ../share/filters/filters.svg.h:500 +msgid "Gives a transparent fluid drawing effect with rough line and filling" +msgstr "Создать текучий прозрачный эффект с грубыми линиями и заливкой" + +#: ../share/filters/filters.svg.h:502 +#, fuzzy +msgid "Liquid Drawing" +msgstr "Экспрессионизм" + +#: ../share/filters/filters.svg.h:504 +msgid "Gives a fluid and wavy expressionist drawing effect to images" +msgstr "" +"Применить эффект текучего и волнистого рисунка в стиле экспрессионизма к " +"растровым изображениям" + +#: ../share/filters/filters.svg.h:506 +msgid "Marbled Ink" +msgstr "Мраморные чернила" + +#: ../share/filters/filters.svg.h:508 +msgid "Marbled transparency effect which conforms to image detected edges" +msgstr "Эффект прозрачного мрамора, соответствующего обнаруженным краям" + +#: ../share/filters/filters.svg.h:510 +msgid "Thick Acrylic" +msgstr "Густая акриловая краска" + +#: ../share/filters/filters.svg.h:512 +msgid "Thick acrylic paint texture with high texture depth" +msgstr "Рельефная текстура густой акриловой краски" + +#: ../share/filters/filters.svg.h:514 +msgid "Alpha Engraving B" +msgstr "Альфа-гравировка №2" + +#: ../share/filters/filters.svg.h:516 +msgid "" +"Gives a controllable roughness engraving effect to bitmaps and materials" +msgstr "" +"Применить эффект регулируемой грубой гравировки к растровым изображениям или " +"материалам" + +#: ../share/filters/filters.svg.h:518 +msgid "Lapping" +msgstr "Плеск волн" + +#: ../share/filters/filters.svg.h:520 +msgid "Something like a water noise" +msgstr "Что-то вроде водного шума" + +#: ../share/filters/filters.svg.h:522 +msgid "Monochrome Transparency" +msgstr "Монохромная прозрачность" + +#: ../share/filters/filters.svg.h:523 ../share/filters/filters.svg.h:527 +#: ../share/filters/filters.svg.h:647 ../share/filters/filters.svg.h:651 +#: ../share/filters/filters.svg.h:823 +#: ../src/extension/internal/filter/transparency.h:70 +#: ../src/extension/internal/filter/transparency.h:141 +#: ../src/extension/internal/filter/transparency.h:215 +#: ../src/extension/internal/filter/transparency.h:288 +#: ../src/extension/internal/filter/transparency.h:350 +msgid "Fill and Transparency" +msgstr "Заливка и прозрачность" + +#: ../share/filters/filters.svg.h:524 +msgid "Convert to a colorizable transparent positive or negative" +msgstr "Преобразовать в раскрашиваемый прозрачный позитив или негатив" + +#: ../share/filters/filters.svg.h:526 +msgid "Saturation Map" +msgstr "Прокция насыщенности" + +#: ../share/filters/filters.svg.h:528 +msgid "" +"Creates an approximative semi-transparent and colorizable image of the " +"saturation levels" +msgstr "" +"Создать приблизительное полупрозрачное и раскрашиваемое изображение уровней " +"насыщенности" + +#: ../share/filters/filters.svg.h:530 +msgid "Riddled" +msgstr "Решето" + +#: ../share/filters/filters.svg.h:532 +msgid "Riddle the surface and add bump to images" +msgstr "Изрешетить поверхность и добавить выпуклости" + +#: ../share/filters/filters.svg.h:534 +msgid "Wrinkled Varnish" +msgstr "Смятая глазурь" + +#: ../share/filters/filters.svg.h:536 +msgid "Thick glossy and translucent paint texture with high depth" +msgstr "Толстая, блестящая, рельефная и полупрозрачная текстура краски" + +#: ../share/filters/filters.svg.h:538 +msgid "Canvas Bumps" +msgstr "Холщовые выпуклости" + +#: ../share/filters/filters.svg.h:540 +msgid "Canvas texture with an HSL sensitive height map" +msgstr "Текстура холста с чувствительной к HSL картой высот" + +#: ../share/filters/filters.svg.h:542 +#, fuzzy +msgid "Canvas Bumps Matte" +msgstr "Холщовые матовые выпуклости" + +#: ../share/filters/filters.svg.h:544 +msgid "Same as Canvas Bumps but with a diffuse light instead of a specular one" +msgstr "" +"То же, что и холщовые выпуклости, но с рассеянным светом вместо отраженного" + +#: ../share/filters/filters.svg.h:546 +#, fuzzy +msgid "Canvas Bumps Alpha" +msgstr "Холщовые выпуклости с альфа-каналом" + +#: ../share/filters/filters.svg.h:548 +msgid "Same as Canvas Bumps but with transparent highlights" +msgstr "То же, что и холщовые выпуклости, но с прозрачными яркими участками" + +#: ../share/filters/filters.svg.h:550 +#, fuzzy +msgid "Bright Metal" +msgstr "Яркий металл" + +#: ../share/filters/filters.svg.h:552 +msgid "Bright metallic effect for any color" +msgstr "Яркий эффект металла для любого цвета" + +#: ../share/filters/filters.svg.h:554 +#, fuzzy +msgid "Deep Colors Plastic" +msgstr "Тёмный пластик" + +#: ../share/filters/filters.svg.h:556 +msgid "Transparent plastic with deep colors" +msgstr "Прозрачный пластик тёмных цветов" + +#: ../share/filters/filters.svg.h:558 +#, fuzzy +msgid "Melted Jelly Matte" +msgstr "Матовое расплавленное желе" + +#: ../share/filters/filters.svg.h:560 +msgid "Matte bevel with blurred edges" +msgstr "Матовая фаска с размытыми краями" + +#: ../share/filters/filters.svg.h:562 +msgid "Melted Jelly" +msgstr "Расплавленное желе" + +#: ../share/filters/filters.svg.h:564 +msgid "Glossy bevel with blurred edges" +msgstr "Блестящая фаска с размытыми краями" + +#: ../share/filters/filters.svg.h:566 +#, fuzzy +msgid "Combined Lighting" +msgstr "Объединённое освещение" + +#: ../share/filters/filters.svg.h:568 +#: ../src/extension/internal/filter/bevels.h:231 +msgid "Basic specular bevel to use for building textures" +msgstr "Типичная отражающая фаска для создания текстур" + +#: ../share/filters/filters.svg.h:570 +msgid "Tinfoil" +msgstr "Оловянная фольга" + +#: ../share/filters/filters.svg.h:572 +msgid "Metallic foil effect combining two lighting types and variable crumple" +msgstr "" +"Эффект металлической фольги, объединяющий два типа освещения и настраиваемую " +"смятость" + +#: ../share/filters/filters.svg.h:574 +#, fuzzy +msgid "Soft Colors" +msgstr "Мягкие цвета" + +#: ../share/filters/filters.svg.h:576 +msgid "Adds a colorizable edges glow inside objects and pictures" +msgstr "" +"Создать раскрашиваемое свечение краёв внутри объектов и растровых изображений" + +#: ../share/filters/filters.svg.h:578 +#, fuzzy +msgid "Relief Print" +msgstr "Рельефный отпечаток" + +#: ../share/filters/filters.svg.h:580 +msgid "Bumps effect with a bevel, color flood and complex lighting" +msgstr "Эффект выпуклости с фаской, заливкой цветом и сложным освещением" + +#: ../share/filters/filters.svg.h:582 +msgid "Growing Cells" +msgstr "Растущие клетки" + +#: ../share/filters/filters.svg.h:584 +msgid "Random rounded living cells like fill" +msgstr "Заливка случайными круглыми объектами наподобие живых клеток" + +#: ../share/filters/filters.svg.h:586 +msgid "Fluorescence" +msgstr "Флюоресценция" + +#: ../share/filters/filters.svg.h:588 +msgid "Oversaturate colors which can be fluorescent in real world" +msgstr "" +"Перенасытить цвета, которые в реальном мире могут быть флюоресцирующими" + +#: ../share/filters/filters.svg.h:590 +#, fuzzy +msgid "Pixellize" +msgstr "Пиксел" + +#: ../share/filters/filters.svg.h:591 +#, fuzzy +msgid "Pixel tools" +msgstr "Пикселы" + +#: ../share/filters/filters.svg.h:592 +msgid "Reduce or remove antialiasing around shapes" +msgstr "" + +#: ../share/filters/filters.svg.h:594 +msgid "Basic Diffuse Bump" +msgstr "" + +#: ../share/filters/filters.svg.h:596 +#, fuzzy +msgid "Matte emboss effect" +msgstr "Удалить эффекты" + +#: ../share/filters/filters.svg.h:598 +msgid "Basic Specular Bump" +msgstr "" + +#: ../share/filters/filters.svg.h:600 +#, fuzzy +msgid "Specular emboss effect" +msgstr "Степень отражения" + +#: ../share/filters/filters.svg.h:602 +msgid "Basic Two Lights Bump" +msgstr "" + +#: ../share/filters/filters.svg.h:604 +#, fuzzy +msgid "Two types of lighting emboss effect" +msgstr "Вставить динамический контурный эффект" + +#: ../share/filters/filters.svg.h:606 +#, fuzzy +msgid "Linen Canvas" +msgstr "Холст" + +#: ../share/filters/filters.svg.h:608 ../share/filters/filters.svg.h:616 +#, fuzzy +msgid "Painting canvas emboss effect" +msgstr "Вставить динамический контурный эффект" + +#: ../share/filters/filters.svg.h:610 +#, fuzzy +msgid "Plasticine" +msgstr "Штукатурка" + +#: ../share/filters/filters.svg.h:612 +#, fuzzy +msgid "Matte modeling paste emboss effect" +msgstr "Вставить динамический контурный эффект" + +#: ../share/filters/filters.svg.h:614 +#, fuzzy +msgid "Rough Canvas Painting" +msgstr "Масляная краска" + +#: ../share/filters/filters.svg.h:618 +#, fuzzy +msgid "Paper Bump" +msgstr "Выпуклости" + +#: ../share/filters/filters.svg.h:620 +#, fuzzy +msgid "Paper like emboss effect" +msgstr "Вставить динамический контурный эффект" + +#: ../share/filters/filters.svg.h:622 +#, fuzzy +msgid "Jelly Bump" +msgstr "Пузыристые выпуклости " + +#: ../share/filters/filters.svg.h:624 +#, fuzzy +msgid "Convert pictures to thick jelly" +msgstr "Текст в кривые Безье" + +#: ../share/filters/filters.svg.h:626 +#, fuzzy +msgid "Blend Opposites" +msgstr "Режим смешивания:" + +#: ../share/filters/filters.svg.h:628 +msgid "Blend an image with its hue opposite" +msgstr "" + +#: ../share/filters/filters.svg.h:630 +#, fuzzy +msgid "Hue to White" +msgstr "Вращение тона" + +#: ../share/filters/filters.svg.h:632 +msgid "Fades hue progressively to white" +msgstr "" + +#: ../share/filters/filters.svg.h:634 +#: ../src/extension/internal/bitmap/swirl.cpp:37 +msgid "Swirl" +msgstr "Вихрь" + +#: ../share/filters/filters.svg.h:636 +#, fuzzy +msgid "" +"Paint objects with a transparent turbulence which wraps around color edges" +msgstr "Закрасить объекты прозрачной турбулентностью, огибающей цветные края" + +#: ../share/filters/filters.svg.h:638 +msgid "Pointillism" +msgstr "Пуантилизм" + +#: ../share/filters/filters.svg.h:640 +#, fuzzy +msgid "Gives a turbulent pointillist HSL sensitive transparency" +msgstr "Создать пуантилистическую прозрачность, чувствительную к HSL" + +#: ../share/filters/filters.svg.h:642 +msgid "Silhouette Marbled" +msgstr "" + +#: ../share/filters/filters.svg.h:644 +msgid "Basic noise transparency texture" +msgstr "Простая текстура полупрозрачного шума" + +#: ../share/filters/filters.svg.h:646 +#, fuzzy +msgid "Fill Background" +msgstr "Фон" + +#: ../share/filters/filters.svg.h:648 +#, fuzzy +msgid "Adds a colorizable opaque background" +msgstr "Создать раскрашиваемую тень внутри" + +#: ../share/filters/filters.svg.h:650 +#, fuzzy +msgid "Flatten Transparency" +msgstr "Прозрачность диалога:" + +#: ../share/filters/filters.svg.h:652 +#, fuzzy +msgid "Adds a white opaque background" +msgstr "default background" + +#: ../share/filters/filters.svg.h:654 +#, fuzzy +msgid "Blur Double" +msgstr "Размывание" + +#: ../share/filters/filters.svg.h:656 +msgid "" +"Overlays two copies with different blur amounts and modifiable blend and " +"composite" +msgstr "" + +#: ../share/filters/filters.svg.h:658 +#, fuzzy +msgid "Image Drawing Basic" +msgstr "Новый рисунок" + +#: ../share/filters/filters.svg.h:660 +msgid "Enhance and redraw color edges in 1 bit black and white" +msgstr "" + +#: ../share/filters/filters.svg.h:662 +#, fuzzy +msgid "Poster Draw" +msgstr "Штукатурка" + +#: ../share/filters/filters.svg.h:664 +msgid "Enhance and redraw edges around posterized areas" +msgstr "" + +#: ../share/filters/filters.svg.h:666 +#, fuzzy +msgid "Cross Noise Poster" +msgstr "Шум Пуассона" + +#: ../share/filters/filters.svg.h:668 +#, fuzzy +msgid "Overlay with a small scale screen like noise" +msgstr "Добавить небольшую зашумленность как на фотопленке" + +#: ../share/filters/filters.svg.h:670 +#, fuzzy +msgid "Cross Noise Poster B" +msgstr "Шум Пуассона" + +#: ../share/filters/filters.svg.h:672 +#, fuzzy +msgid "Adds a small scale screen like noise locally" +msgstr "Добавить небольшую зашумленность как на фотопленке" + +#: ../share/filters/filters.svg.h:674 +#, fuzzy +msgid "Poster Color Fun" +msgstr "Вставить цвет" + +#: ../share/filters/filters.svg.h:678 +#, fuzzy +msgid "Poster Rough" +msgstr "Штукатурка" + +#: ../share/filters/filters.svg.h:680 +msgid "Adds roughness to one of the two channels of the Poster paint filter" +msgstr "" + +#: ../share/filters/filters.svg.h:682 +msgid "Alpha Monochrome Cracked" +msgstr "" + +#: ../share/filters/filters.svg.h:684 ../share/filters/filters.svg.h:688 +#: ../share/filters/filters.svg.h:692 ../share/filters/filters.svg.h:704 +#: ../share/filters/filters.svg.h:708 ../share/filters/filters.svg.h:712 +msgid "Basic noise fill texture; adjust color in Flood" +msgstr "Простая текстура шума; цвет меняется в примитиве Заливка" + +#: ../share/filters/filters.svg.h:686 +#, fuzzy +msgid "Alpha Turbulent" +msgstr "Перекрашивание" + +#: ../share/filters/filters.svg.h:690 +#, fuzzy +msgid "Colorize Turbulent" +msgstr "Тонирование" + +#: ../share/filters/filters.svg.h:694 +#, fuzzy +msgid "Cross Noise B" +msgstr "Шум Пуассона" + +#: ../share/filters/filters.svg.h:696 +#, fuzzy +msgid "Adds a small scale crossy graininess" +msgstr "Добавить небольшую зашумленность как на фотопленке" + +#: ../share/filters/filters.svg.h:698 +#, fuzzy +msgid "Cross Noise" +msgstr "Шум Пуассона" + +#: ../share/filters/filters.svg.h:700 +#, fuzzy +msgid "Adds a small scale screen like graininess" +msgstr "Добавить небольшую зашумленность как на фотопленке" + +#: ../share/filters/filters.svg.h:702 +#, fuzzy +msgid "Duotone Turbulent" +msgstr "Турбулентность" + +#: ../share/filters/filters.svg.h:706 +#, fuzzy +msgid "Light Eraser Cracked" +msgstr "Ластик для светлых областей" + +#: ../share/filters/filters.svg.h:710 +#, fuzzy +msgid "Poster Turbulent" +msgstr "Турбулентность" + +#: ../share/filters/filters.svg.h:714 +#, fuzzy +msgid "Tartan Smart" +msgstr "Шотландка" + +#: ../share/filters/filters.svg.h:716 +#, fuzzy +msgid "Highly configurable checkered tartan pattern" +msgstr "Клетчатая шерстяная материя" + +#: ../share/filters/filters.svg.h:718 +#, fuzzy +msgid "Light Contour" +msgstr "Источник света:" + +#: ../share/filters/filters.svg.h:720 +msgid "Uses vertical specular light to draw lines" +msgstr "" + +#: ../share/filters/filters.svg.h:722 +msgid "Liquid" +msgstr "Жидкость" + +#: ../share/filters/filters.svg.h:724 +msgid "Colorizable filling with liquid transparency" +msgstr "Раскрашиваемая заливка, придающая объекту эффект жидкости" + +#: ../share/filters/filters.svg.h:726 +msgid "Aluminium" +msgstr "Алюминий" + +#: ../share/filters/filters.svg.h:728 +#, fuzzy +msgid "Aluminium effect with sharp brushed reflections" +msgstr "Гелевый эффект с сильным преломлением" + +#: ../share/filters/filters.svg.h:730 +msgid "Comics" +msgstr "Комикс" + +#: ../share/filters/filters.svg.h:732 +#, fuzzy +msgid "Comics cartoon drawing effect" +msgstr "Комикс, нарисованный мокрой кистью" + +#: ../share/filters/filters.svg.h:734 +#, fuzzy +msgid "Comics Draft" +msgstr "Черновик комикса" + +#: ../share/filters/filters.svg.h:736 ../share/filters/filters.svg.h:768 +msgid "Draft painted cartoon shading with a glassy look" +msgstr "Начерно нарисованный комикс с блеском" + +#: ../share/filters/filters.svg.h:738 +#, fuzzy +msgid "Comics Fading" +msgstr "Комикс с затуханием" + +#: ../share/filters/filters.svg.h:740 +msgid "Cartoon paint style with some fading at the edges" +msgstr "Стиль рисования наподобие комиксов с затуханием по краям" + +#: ../share/filters/filters.svg.h:742 +#, fuzzy +msgid "Brushed Metal" +msgstr "Ржавчина" + +#: ../share/filters/filters.svg.h:744 +#, fuzzy +msgid "Satiny metal surface effect" +msgstr "Иллюминированный эффект тонированного стекла" + +#: ../share/filters/filters.svg.h:746 +#, fuzzy +msgid "Opaline" +msgstr "Контур" + +#: ../share/filters/filters.svg.h:748 +msgid "Contouring version of smooth shader" +msgstr "Абрисная версия плавного шейдера" + +#: ../share/filters/filters.svg.h:750 +msgid "Chrome" +msgstr "Хром" + +#: ../share/filters/filters.svg.h:752 +#, fuzzy +msgid "Bright chrome effect" +msgstr "Справа налево" + +#: ../share/filters/filters.svg.h:754 +#, fuzzy +msgid "Deep Chrome" +msgstr "Хром" + +#: ../share/filters/filters.svg.h:756 +#, fuzzy +msgid "Dark chrome effect" +msgstr "Текущий эффект" + +#: ../share/filters/filters.svg.h:758 +#, fuzzy +msgid "Emboss Shader" +msgstr "Рельефный шейдер" + +#: ../share/filters/filters.svg.h:760 +#, fuzzy +msgid "Combination of satiny and emboss effect" +msgstr "Комбинация из плавного и рельефного шейдеров" + +#: ../share/filters/filters.svg.h:762 +#, fuzzy +msgid "Sharp Metal" +msgstr "Тёмный рельеф" + +#: ../share/filters/filters.svg.h:764 +#, fuzzy +msgid "Chrome effect with darkened edges" +msgstr "Гелевый эффект с легким преломлением" + +#: ../share/filters/filters.svg.h:766 +#, fuzzy +msgid "Brush Draw" +msgstr "Кисть" + +#: ../share/filters/filters.svg.h:770 +#, fuzzy +msgid "Chrome Emboss" +msgstr "Тёмный рельеф" + +#: ../share/filters/filters.svg.h:772 +#, fuzzy +msgid "Embossed chrome effect" +msgstr "Удаление контурного эффекта" + +#: ../share/filters/filters.svg.h:774 +#, fuzzy +msgid "Contour Emboss" +msgstr "Цветной рельеф" + +#: ../share/filters/filters.svg.h:776 +#, fuzzy +msgid "Satiny and embossed contour effect" +msgstr "Удалить эффекты" + +#: ../share/filters/filters.svg.h:778 +#, fuzzy +msgid "Sharp Deco" +msgstr "Повысить резкость" + +#: ../share/filters/filters.svg.h:780 +msgid "Unrealistic reflections with sharp edges" +msgstr "Нереалистичные отражения с острыми краями" + +#: ../share/filters/filters.svg.h:782 +#, fuzzy +msgid "Deep Metal" +msgstr "Гибкий металл" + +#: ../share/filters/filters.svg.h:784 +msgid "Deep and dark metal shading" +msgstr "" + +#: ../share/filters/filters.svg.h:786 +#, fuzzy +msgid "Aluminium Emboss" +msgstr "Aluminium 1" + +#: ../share/filters/filters.svg.h:788 +msgid "Satiny aluminium effect with embossing" +msgstr "" + +#: ../share/filters/filters.svg.h:790 +#, fuzzy +msgid "Refractive Glass" +msgstr "Преломляющий гель А" + +#: ../share/filters/filters.svg.h:792 +#, fuzzy +msgid "Double reflection through glass with some refraction" +msgstr "Гелевый эффект с сильным преломлением" + +#: ../share/filters/filters.svg.h:794 +#, fuzzy +msgid "Frosted Glass" +msgstr "Замороженное стекло" + +#: ../share/filters/filters.svg.h:796 +#, fuzzy +msgid "Satiny glass effect" +msgstr "Иллюминированный эффект тонированного стекла" + +#: ../share/filters/filters.svg.h:798 +#, fuzzy +msgid "Bump Engraving" +msgstr "Альфа-гравировка №1" + +#: ../share/filters/filters.svg.h:800 +#, fuzzy +msgid "Carving emboss effect" +msgstr "Вставить динамический контурный эффект" + +#: ../share/filters/filters.svg.h:802 +msgid "Chromolitho Alternate" +msgstr "" + +#: ../share/filters/filters.svg.h:804 +#, fuzzy +msgid "Old chromolithographic effect" +msgstr "Создание контурного эффекта" + +#: ../share/filters/filters.svg.h:806 +#, fuzzy +msgid "Convoluted Bump" +msgstr "Облачный акварельный эффект" + +#: ../share/filters/filters.svg.h:808 +#, fuzzy +msgid "Convoluted emboss effect" +msgstr "Облачный акварельный эффект" + +#: ../share/filters/filters.svg.h:810 +#, fuzzy +msgid "Emergence" +msgstr "Отклонение" + +#: ../share/filters/filters.svg.h:812 +msgid "Cut out, add inner shadow and colorize some parts of an image" +msgstr "" + +#: ../share/filters/filters.svg.h:814 +msgid "Litho" +msgstr "" + +#: ../share/filters/filters.svg.h:816 +#, fuzzy +msgid "Create a two colors lithographic effect" +msgstr "Создание контурного эффекта" + +#: ../share/filters/filters.svg.h:818 +#, fuzzy +msgid "Paint Channels" +msgstr "Голубой канал (C)" + +#: ../share/filters/filters.svg.h:820 +msgid "Colorize separately the three color channels" +msgstr "" + +#: ../share/filters/filters.svg.h:822 +#, fuzzy +msgid "Posterized Light Eraser" +msgstr "Ластик для светлых областей" + +#: ../share/filters/filters.svg.h:824 +msgid "Create a semi transparent posterized image" +msgstr "" + +#: ../share/filters/filters.svg.h:826 +#, fuzzy +msgid "Trichrome" +msgstr "Хром" + +#: ../share/filters/filters.svg.h:828 +msgid "Like Duochrome but with three colors" +msgstr "" + +#: ../share/filters/filters.svg.h:830 +msgid "Simulate CMY" +msgstr "" + +#: ../share/filters/filters.svg.h:832 +msgid "Render Cyan, Magenta and Yellow channels with a colorizable background" +msgstr "" + +#: ../share/filters/filters.svg.h:834 +#, fuzzy +msgid "Contouring table" +msgstr "Вписанный треугольник" + +#: ../share/filters/filters.svg.h:836 +#, fuzzy +msgid "Blurred multiple contours for objects" +msgstr "Пустой контур с размытой обводкой" + +#: ../share/filters/filters.svg.h:838 +#, fuzzy +msgid "Posterized Blur" +msgstr "Ластик для светлых областей" + +#: ../share/filters/filters.svg.h:840 +msgid "Converts blurred contour to posterized steps" +msgstr "" + +#: ../share/filters/filters.svg.h:842 +#, fuzzy +msgid "Contouring discrete" +msgstr "Controlling dock item" + +#: ../share/filters/filters.svg.h:844 +#, fuzzy +msgid "Sharp multiple contour for objects" +msgstr "Прилипать центрами объектов" + #. Palette: ./inkscape.gpl #: ../share/palettes/palettes.h:2 msgctxt "Palette" @@ -1225,6 +3331,170 @@ msgctxt "Palette" msgid "Jet Black" msgstr "Чёрный" +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 1:1" +msgstr "Полосы 1:1" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 1:1 white" +msgstr "Полосы белые 1:1" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 1:1.5" +msgstr "Полосы 1:1.5" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 1:1.5 white" +msgstr "Полосы белые 1:1.5" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 1:2" +msgstr "Полосы 1:2" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 1:2 white" +msgstr "Полосы белые 1:2" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 1:3" +msgstr "Полосы 1:3" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 1:3 white" +msgstr "Полосы белые 1:3" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 1:4" +msgstr "Полосы 1:4" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 1:4 white" +msgstr "Полосы белые 1:4" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 1:5" +msgstr "Полосы 1:5" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 1:5 white" +msgstr "Полосы белые 1:5" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 1:8" +msgstr "Полосы 1:8" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 1:8 white" +msgstr "Полосы белые 1:8" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 1:10" +msgstr "Полосы 1:10" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 1:10 white" +msgstr "Полосы белые 1:10" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 1:16" +msgstr "Полосы 1:16" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 1:16 white" +msgstr "Полосы белые 1:16" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 1:32" +msgstr "Полосы 1:32" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 1:32 white" +msgstr "Полосы белые 1:32" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 1:64" +msgstr "Полосы 1:64" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 2:1" +msgstr "Полосы 2:1" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 2:1 white" +msgstr "Полосы белые 2:1" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 4:1" +msgstr "Полосы 4:1" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Stripes 4:1 white" +msgstr "Полосы белые 4:1" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Checkerboard" +msgstr "Шахматная доска" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Checkerboard white" +msgstr "Шахматная доска белая" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Packed circles" +msgstr "Упакованные круги" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Polka dots, small" +msgstr "Горошек мелкий" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Polka dots, small white" +msgstr "Горошек мелкий белый" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Polka dots, medium" +msgstr "Горошек средний" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Polka dots, medium white" +msgstr "Горошек средний белый" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Polka dots, large" +msgstr "Горошек крупный" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Polka dots, large white" +msgstr "Горошек крупный белый" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Wavy" +msgstr "Волна" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Wavy white" +msgstr "Волна белая" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Camouflage" +msgstr "Камуфляж" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Ermine" +msgstr "Горностай" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Sand (bitmap)" +msgstr "Песок (растровая текстура)" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Cloth (bitmap)" +msgstr "Ткань (растровая текстура)" + +#: ../share/patterns/patterns.svg.h:1 +msgid "Old paint (bitmap)" +msgstr "Старая краска (растровая текстура)" + #. Symbols: ./AigaSymbols.svg #: ../share/symbols/symbols.h:2 msgctxt "Symbol" @@ -1232,7 +3502,9 @@ msgid "AIGA Symbol Signs" msgstr "" #. Symbols: ./AigaSymbols.svg +#. Symbols: ./MapSymbolsNPS.svg #: ../share/symbols/symbols.h:3 ../share/symbols/symbols.h:4 +#: ../share/symbols/symbols.h:277 ../share/symbols/symbols.h:278 msgctxt "Symbol" msgid "Telephone" msgstr "" @@ -1263,7 +3535,9 @@ msgid "Cashier" msgstr "" #. Symbols: ./AigaSymbols.svg +#. Symbols: ./MapSymbolsNPS.svg #: ../share/symbols/symbols.h:13 ../share/symbols/symbols.h:14 +#: ../share/symbols/symbols.h:213 ../share/symbols/symbols.h:214 #, fuzzy msgctxt "Symbol" msgid "First Aid" @@ -1350,9 +3624,7 @@ msgid "Toilets" msgstr "" #. Symbols: ./AigaSymbols.svg -#. Symbols: ./MapSymbols.svg #: ../share/symbols/symbols.h:41 ../share/symbols/symbols.h:42 -#: ../share/symbols/symbols.h:227 msgctxt "Symbol" msgid "Nursery" msgstr "" @@ -1371,9 +3643,9 @@ msgid "Waiting Room" msgstr "Сценарии" #. Symbols: ./AigaSymbols.svg -#. Symbols: ./MapSymbols.svg +#. Symbols: ./MapSymbolsNPS.svg #: ../share/symbols/symbols.h:47 ../share/symbols/symbols.h:48 -#: ../share/symbols/symbols.h:308 +#: ../share/symbols/symbols.h:231 ../share/symbols/symbols.h:232 #, fuzzy msgctxt "Symbol" msgid "Information" @@ -1394,17 +3666,13 @@ msgid "Air Transportation" msgstr "Преобразование" #. Symbols: ./AigaSymbols.svg -#. Symbols: ./MapSymbols.svg #: ../share/symbols/symbols.h:53 ../share/symbols/symbols.h:54 -#: ../share/symbols/symbols.h:318 msgctxt "Symbol" msgid "Heliport" msgstr "" #. Symbols: ./AigaSymbols.svg -#. Symbols: ./MapSymbols.svg #: ../share/symbols/symbols.h:55 ../share/symbols/symbols.h:56 -#: ../share/symbols/symbols.h:314 msgctxt "Symbol" msgid "Taxi" msgstr "" @@ -1438,17 +3706,13 @@ msgid "Water Transportation" msgstr "Преобразование" #. Symbols: ./AigaSymbols.svg -#. Symbols: ./MapSymbols.svg #: ../share/symbols/symbols.h:65 ../share/symbols/symbols.h:66 -#: ../share/symbols/symbols.h:316 msgctxt "Symbol" msgid "Car Rental" msgstr "" #. Symbols: ./AigaSymbols.svg -#. Symbols: ./MapSymbols.svg #: ../share/symbols/symbols.h:67 ../share/symbols/symbols.h:68 -#: ../share/symbols/symbols.h:228 msgctxt "Symbol" msgid "Restaurant" msgstr "" @@ -1549,9 +3813,9 @@ msgid "No Smoking" msgstr "" #. Symbols: ./AigaSymbols.svg -#. Symbols: ./MapSymbols.svg +#. Symbols: ./MapSymbolsNPS.svg #: ../share/symbols/symbols.h:99 ../share/symbols/symbols.h:100 -#: ../share/symbols/symbols.h:325 +#: ../share/symbols/symbols.h:241 ../share/symbols/symbols.h:242 msgctxt "Symbol" msgid "Parking" msgstr "" @@ -1575,9 +3839,7 @@ msgid "No Entry" msgstr "" #. Symbols: ./AigaSymbols.svg -#. Symbols: ./MapSymbols.svg #: ../share/symbols/symbols.h:107 ../share/symbols/symbols.h:108 -#: ../share/symbols/symbols.h:218 msgctxt "Symbol" msgid "Exit" msgstr "" @@ -2004,861 +4266,305 @@ msgctxt "Symbol" msgid "Not Gate Small" msgstr "" -#. Symbols: ./MapSymbols.svg +#. Symbols: ./MapSymbolsNPS.svg #: ../share/symbols/symbols.h:188 -#, fuzzy -msgctxt "Symbol" -msgid "Map Symbols" -msgstr "Кхмерские символы" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:189 -#, fuzzy -msgctxt "Symbol" -msgid "Bed and Breakfast" -msgstr "Красный и зелёный" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:190 -msgctxt "Symbol" -msgid "Youth Hostel" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:191 -#, fuzzy -msgctxt "Symbol" -msgid "Shelter" -msgstr "фильтр" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:192 -msgctxt "Symbol" -msgid "Motel" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:193 -msgctxt "Symbol" -msgid "Hotel" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:194 -#, fuzzy -msgctxt "Symbol" -msgid "Hostel" -msgstr "Host" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:195 -#, fuzzy -msgctxt "Symbol" -msgid "Chalet" -msgstr "Палитра" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:196 -msgctxt "Symbol" -msgid "Caravan Park" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:197 -#, fuzzy -msgctxt "Symbol" -msgid "Camping" -msgstr "Плеск волн" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:198 -msgctxt "Symbol" -msgid "Alpine Hut" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:199 msgctxt "Symbol" -msgid "Bench or Park" +msgid "United States National Park Service Map Symbols" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:200 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:189 ../share/symbols/symbols.h:190 #, fuzzy msgctxt "Symbol" -msgid "Playground" -msgstr "Фон" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:201 -msgctxt "Symbol" -msgid "Fountain" -msgstr "" +msgid "Airport" +msgstr "Импорт" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:202 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:191 ../share/symbols/symbols.h:192 msgctxt "Symbol" -msgid "Library" +msgid "Amphitheatre" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:203 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:193 ../share/symbols/symbols.h:194 msgctxt "Symbol" -msgid "Town Hall" +msgid "Bicycle Trail" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:204 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:195 ../share/symbols/symbols.h:196 msgctxt "Symbol" -msgid "Court" +msgid "Boat Launch" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:205 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:197 ../share/symbols/symbols.h:198 msgctxt "Symbol" -msgid "Fire Station / House" +msgid "Boat Tour" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:206 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:199 ../share/symbols/symbols.h:200 #, fuzzy msgctxt "Symbol" -msgid "Police Station" -msgstr "Больше насыщенности" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:207 -msgctxt "Symbol" -msgid "Prison" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:208 -msgctxt "Symbol" -msgid "Post Office" -msgstr "" +msgid "Bus Stop" +msgstr "_Остановить" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:209 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:201 ../share/symbols/symbols.h:202 #, fuzzy msgctxt "Symbol" -msgid "Public Building" -msgstr "Общественное достояние" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:210 -msgctxt "Symbol" -msgid "Recycling" -msgstr "" +msgid "Campfire" +msgstr "Плеск волн" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:211 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:203 ../share/symbols/symbols.h:204 #, fuzzy msgctxt "Symbol" -msgid "Survey Point" -msgstr "Точка Жергонна" +msgid "Campground" +msgstr "Закругление концов" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:212 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:205 ../share/symbols/symbols.h:206 msgctxt "Symbol" -msgid "Toll Booth" +msgid "CanoeAccess" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:213 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:207 ../share/symbols/symbols.h:208 msgctxt "Symbol" -msgid "Lift Gate" +msgid "Crosscountry Ski Trail" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:214 -#, fuzzy -msgctxt "Symbol" -msgid "Steps" -msgstr "Шаги" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:215 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:209 ../share/symbols/symbols.h:210 msgctxt "Symbol" -msgid "Stile" +msgid "Downhill Skiing" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:216 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:211 ../share/symbols/symbols.h:212 #, fuzzy msgctxt "Symbol" -msgid "Kissing Gate" -msgstr "Отсутствующий глиф:" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:217 -msgctxt "Symbol" -msgid "Gate" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:219 -#, fuzzy -msgctxt "Symbol" -msgid "Entrance" -msgstr "Повысить качество" +msgid "Drinking Water" +msgstr "Метки для печати" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:220 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:215 ../share/symbols/symbols.h:216 msgctxt "Symbol" -msgid "Cycle Barrier" +msgid "Fishing" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:221 -#, fuzzy -msgctxt "Symbol" -msgid "Cattle Grid" -msgstr "Картезианская сетка" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:222 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:217 ../share/symbols/symbols.h:218 msgctxt "Symbol" -msgid "Bollard" +msgid "Food Service" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:223 +#. Symbols: ./MapSymbolsNPS.svg +#. Symbols: ./MapSymbolsNPS.svg +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:221 ../share/symbols/symbols.h:222 #, fuzzy msgctxt "Symbol" -msgid "University" -msgstr "Идентичная функция" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:224 -#, fuzzy -msgctxt "Symbol" -msgid "High/Secondary School" -msgstr "Второй язык:" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:225 -msgctxt "Symbol" -msgid "School" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:226 -msgctxt "Symbol" -msgid "Kindergarten" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:229 -msgctxt "Symbol" -msgid "Pub" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:230 -msgctxt "Symbol" -msgid "Desserts/Cakes Shop" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:231 -msgctxt "Symbol" -msgid "Fast Food" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:232 -msgctxt "Symbol" -msgid "Public Tap/Water" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:233 -msgctxt "Symbol" -msgid "Cafe" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:234 -msgctxt "Symbol" -msgid "Beer Garden" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:235 -msgctxt "Symbol" -msgid "Wine Bar" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:236 -msgctxt "Symbol" -msgid "Opticians/Eye Doctors" -msgstr "" +msgid "Gas Station" +msgstr "Меньше насыщенности" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:237 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:223 ../share/symbols/symbols.h:224 #, fuzzy msgctxt "Symbol" -msgid "Dentist" -msgstr "Идентичная функция" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:238 -msgctxt "Symbol" -msgid "Veterinarian" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:239 -msgctxt "Symbol" -msgid "Drugs Dispensary" -msgstr "" +msgid "Golfing" +msgstr "Цветопроба" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:240 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:225 ../share/symbols/symbols.h:226 msgctxt "Symbol" -msgid "Pharmacy" +msgid "Horseback Riding" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:241 -#, fuzzy -msgctxt "Symbol" -msgid "Accident & Emergency" -msgstr "Accent Green" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:242 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:227 ../share/symbols/symbols.h:228 msgctxt "Symbol" msgid "Hospital" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:243 -#, fuzzy -msgctxt "Symbol" -msgid "Doctors" -msgstr "Соединительные линии" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:244 -msgctxt "Symbol" -msgid "Scrub Land" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:245 -msgctxt "Symbol" -msgid "Swamp" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:246 -msgctxt "Symbol" -msgid "Hills" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:247 -msgctxt "Symbol" -msgid "Grass Land" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:248 -msgctxt "Symbol" -msgid "Deciduous Forest" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:249 -msgctxt "Symbol" -msgid "Mixed Forest" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:250 -msgctxt "Symbol" -msgid "Coniferous Forest" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:251 -msgctxt "Symbol" -msgid "Church or Place of Worship" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:252 -msgctxt "Symbol" -msgid "Bank" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:253 -#, fuzzy -msgctxt "Symbol" -msgid "Power Lines" -msgstr "Линия по узлам" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:254 -msgctxt "Symbol" -msgid "Watch Tower" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:255 -#, fuzzy -msgctxt "Symbol" -msgid "Transmitter" -msgstr "Трансформировать текстуры" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:256 -msgctxt "Symbol" -msgid "Village" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:257 -msgctxt "Symbol" -msgid "Town" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:258 -msgctxt "Symbol" -msgid "Hamlet" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:259 -msgctxt "Symbol" -msgid "City" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:260 -msgctxt "Symbol" -msgid "Peak" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:261 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:229 ../share/symbols/symbols.h:230 #, fuzzy msgctxt "Symbol" -msgid "Mountain Pass" -msgstr "Тонированное стекло" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:262 -msgctxt "Symbol" -msgid "Mine" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:263 -msgctxt "Symbol" -msgid "Military Complex" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:264 -msgctxt "Symbol" -msgid "Embassy" -msgstr "" +msgid "Ice Skating" +msgstr "Сатин" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:265 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:233 ../share/symbols/symbols.h:234 msgctxt "Symbol" -msgid "Toy Shop" +msgid "Litter Receptacle" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:266 -#, fuzzy -msgctxt "Symbol" -msgid "Supermarket" -msgstr "Установка маркеров" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:267 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:235 ../share/symbols/symbols.h:236 msgctxt "Symbol" -msgid "Jewlers" +msgid "Lodging" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:268 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:237 ../share/symbols/symbols.h:238 msgctxt "Symbol" -msgid "Hairdressers" +msgid "Marina" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:269 -#, fuzzy -msgctxt "Symbol" -msgid "Greengrocer" -msgstr "Зеленый" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:270 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:239 ../share/symbols/symbols.h:240 msgctxt "Symbol" -msgid "Gift Shop" +msgid "Recycling" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:271 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:243 ../share/symbols/symbols.h:244 #, fuzzy msgctxt "Symbol" -msgid "Garden Center" -msgstr "Вверху и по центру" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:272 -msgctxt "Symbol" -msgid "Florist" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:273 -msgctxt "Symbol" -msgid "Fish Monger" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:274 -msgctxt "Symbol" -msgid "Real Estate" -msgstr "" +msgid "Pets On Leash" +msgstr "_Разместить по контуру" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:275 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:245 ../share/symbols/symbols.h:246 #, fuzzy msgctxt "Symbol" -msgid "Hardware / DIY" -msgstr "Устройства" +msgid "Picnic Area" +msgstr "Сплошной цвет" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:276 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:247 ../share/symbols/symbols.h:248 msgctxt "Symbol" -msgid "Shop" +msgid "Post Office" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:277 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:249 ../share/symbols/symbols.h:250 #, fuzzy msgctxt "Symbol" -msgid "Confectioner" -msgstr "Cоединения" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:278 -msgctxt "Symbol" -msgid "Computer Shop" -msgstr "" +msgid "Ranger Station" +msgstr "Смежный" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:279 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:251 ../share/symbols/symbols.h:252 #, fuzzy msgctxt "Symbol" -msgid "Clothing" -msgstr "Сглаживание:" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:280 -msgctxt "Symbol" -msgid "Mechanic" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:281 -msgctxt "Symbol" -msgid "Car Dealer" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:282 -msgctxt "Symbol" -msgid "Butcher" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:283 -msgctxt "Symbol" -msgid "Meat Shop" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:284 -msgctxt "Symbol" -msgid "Bicycle Shop" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:285 -msgctxt "Symbol" -msgid "Baker" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:286 -msgctxt "Symbol" -msgid "Off License / Liquor Store" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:287 -msgctxt "Symbol" -msgid "Wind Surfing" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:288 -msgctxt "Symbol" -msgid "Tennis" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:289 -msgctxt "Symbol" -msgid "Outdoor Pool" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:290 -msgctxt "Symbol" -msgid "Indoor Pool" -msgstr "" +msgid "RV Campground" +msgstr "Закругление концов" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:291 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:253 ../share/symbols/symbols.h:254 msgctxt "Symbol" -msgid "Skiing" +msgid "Restrooms" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:292 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:255 ../share/symbols/symbols.h:256 #, fuzzy msgctxt "Symbol" msgid "Sailing" msgstr "Прокрутка" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:293 -#, fuzzy +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:257 ../share/symbols/symbols.h:258 msgctxt "Symbol" -msgid "Leisure Center" -msgstr "Возврат к исходному центру" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:294 -#, fuzzy -msgctxt "Symbol" -msgid "Ice Skating" -msgstr "Сатин" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:295 -msgctxt "Symbol" -msgid "Equine Sports" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:296 -msgctxt "Symbol" -msgid "Rock Climbing" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:297 -msgctxt "Symbol" -msgid "Gym" +msgid "Sanitary Disposal Station" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:298 -msgctxt "Symbol" -msgid "Golf" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:299 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:259 ../share/symbols/symbols.h:260 #, fuzzy msgctxt "Symbol" -msgid "Diving" +msgid "Scuba Diving" msgstr "Деление" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:300 -msgctxt "Symbol" -msgid "Archery" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:301 -#, fuzzy -msgctxt "Symbol" -msgid "Zoo" -msgstr "Лупа" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:302 -msgctxt "Symbol" -msgid "Wreck" -msgstr "" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:303 -#, fuzzy -msgctxt "Symbol" -msgid "Water Wheel" -msgstr "Круг" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:304 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:261 ../share/symbols/symbols.h:262 msgctxt "Symbol" -msgid "Point of Interest" +msgid "Self Guided Trail" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:305 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:263 ../share/symbols/symbols.h:264 #, fuzzy msgctxt "Symbol" -msgid "Theater" -msgstr "Создать" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:306 -msgctxt "Symbol" -msgid "Park / Picnic Area" -msgstr "" +msgid "Shelter" +msgstr "фильтр" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:307 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:265 ../share/symbols/symbols.h:266 #, fuzzy msgctxt "Symbol" -msgid "Monument" -msgstr "Документ" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:309 -msgctxt "Symbol" -msgid "Beach" -msgstr "" +msgid "Showers" +msgstr "Показывать:" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:310 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:267 ../share/symbols/symbols.h:268 #, fuzzy msgctxt "Symbol" -msgid "Battle Location" -msgstr "Расположение:" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:311 -msgctxt "Symbol" -msgid "Archaeology / Ruins" -msgstr "" +msgid "Sledding" +msgstr "Затенение" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:312 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:269 ../share/symbols/symbols.h:270 msgctxt "Symbol" -msgid "Walking" +msgid "SnowmobileTrail" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:313 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:271 ../share/symbols/symbols.h:272 #, fuzzy msgctxt "Symbol" -msgid "Train" -msgstr "Режим рисования" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:315 -msgctxt "Symbol" -msgid "Underground Rail" -msgstr "" +msgid "Stable" +msgstr "Табличная функция" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:317 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:273 ../share/symbols/symbols.h:274 msgctxt "Symbol" -msgid "Bike Rental" +msgid "Store" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:319 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:275 ../share/symbols/symbols.h:276 msgctxt "Symbol" -msgid "Carpool" +msgid "Swimming" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:320 -#, fuzzy -msgctxt "Symbol" -msgid "Flood Gate" -msgstr "Заливка" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:321 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:279 ../share/symbols/symbols.h:280 #, fuzzy msgctxt "Symbol" -msgid "Shipping" -msgstr "Протекание" +msgid "Emergency Telephone" +msgstr "Отклонение" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:322 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:281 ../share/symbols/symbols.h:282 #, fuzzy msgctxt "Symbol" -msgid "Disabled Parking" -msgstr "Отключено" +msgid "Trailhead" +msgstr "Брейлева азбука" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:323 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:283 ../share/symbols/symbols.h:284 msgctxt "Symbol" -msgid "Paid Parking" +msgid "Wheelchair Accessible" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:324 +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:285 ../share/symbols/symbols.h:286 msgctxt "Symbol" -msgid "Bike Parking" +msgid "Wind Surfing" msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:326 +#. Symbols: ./MapSymbolsNPS.svg +#. Symbols: ./MapSymbolsNPS.svg +#: ../share/symbols/symbols.h:220 ../share/symbols/symbols.h:219 msgctxt "Symbol" -msgid "Marina" +msgid "Four Wheel Drive Road)," msgstr "" -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:327 -#, fuzzy -msgctxt "Symbol" -msgid "Fuel Station" -msgstr "Смежный" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:328 -#, fuzzy -msgctxt "Symbol" -msgid "Bus Stop" -msgstr "_Остановить" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:329 -#, fuzzy -msgctxt "Symbol" -msgid "Bus Station" -msgstr "Меньше насыщенности" - -#. Symbols: ./MapSymbols.svg -#: ../share/symbols/symbols.h:330 -#, fuzzy -msgctxt "Symbol" -msgid "Airport" -msgstr "Импорт" - #: ../share/templates/templates.h:1 #, fuzzy msgid "A4 Landscape Page" @@ -3237,40 +4943,22 @@ msgstr "1 Настроить холст" #. 3D box #: ../src/box3d.cpp:259 ../src/box3d.cpp:1310 -#: ../src/ui/dialog/inkscape-preferences.cpp:398 +#: ../src/ui/dialog/inkscape-preferences.cpp:400 msgid "3D Box" msgstr "Паралеллепипед" -#: ../src/color-profile.cpp:852 +#: ../src/color-profile.cpp:853 #, c-format msgid "Color profiles directory (%s) is unavailable." msgstr "Каталог с профилями (%s) недоступен." -#: ../src/color-profile.cpp:911 ../src/color-profile.cpp:928 +#: ../src/color-profile.cpp:912 ../src/color-profile.cpp:929 msgid "(invalid UTF-8 string)" msgstr "(некорректная строка UTF-8)" -#: ../src/color-profile.cpp:913 ../src/filter-enums.cpp:121 -#: ../src/live_effects/lpe-ruler.cpp:32 -#: ../src/ui/dialog/filter-effects-dialog.cpp:549 -#: ../src/ui/dialog/inkscape-preferences.cpp:332 -#: ../src/ui/dialog/inkscape-preferences.cpp:643 -#: ../src/ui/dialog/inkscape-preferences.cpp:1261 -#: ../src/ui/dialog/inkscape-preferences.cpp:1837 -#: ../src/ui/dialog/input.cpp:742 ../src/ui/dialog/input.cpp:743 -#: ../src/ui/dialog/input.cpp:1571 ../src/ui/dialog/input.cpp:1625 -#: ../src/verbs.cpp:2349 ../src/widgets/gradient-toolbar.cpp:1112 -#: ../src/widgets/pencil-toolbar.cpp:155 -#: ../src/widgets/stroke-marker-selector.cpp:388 -#: ../share/extensions/gcodetools_area.inx.h:48 -#: ../share/extensions/gcodetools_dxf_points.inx.h:20 -#: ../share/extensions/gcodetools_engraving.inx.h:26 -#: ../share/extensions/gcodetools_graffiti.inx.h:37 -#: ../share/extensions/gcodetools_lathe.inx.h:41 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:30 -#: ../share/extensions/grid_polar.inx.h:4 -#: ../share/extensions/guides_creator.inx.h:24 -#: ../share/extensions/plotter.inx.h:15 ../share/extensions/scour.inx.h:18 +#: ../src/color-profile.cpp:914 +#, fuzzy +msgctxt "Profile name" msgid "None" msgstr "Нет" @@ -3321,8 +5009,8 @@ msgid "_Origin X:" msgstr "_Точка отсчёта по X:" #: ../src/display/canvas-axonomgrid.cpp:319 ../src/display/canvas-grid.cpp:695 -#: ../src/ui/dialog/inkscape-preferences.cpp:737 -#: ../src/ui/dialog/inkscape-preferences.cpp:762 +#: ../src/ui/dialog/inkscape-preferences.cpp:739 +#: ../src/ui/dialog/inkscape-preferences.cpp:764 msgid "X coordinate of grid origin" msgstr "Координата начала отсчёта по оси X" @@ -3331,8 +5019,8 @@ msgid "O_rigin Y:" msgstr "Т_очка отсчёта по Y:" #: ../src/display/canvas-axonomgrid.cpp:321 ../src/display/canvas-grid.cpp:697 -#: ../src/ui/dialog/inkscape-preferences.cpp:738 -#: ../src/ui/dialog/inkscape-preferences.cpp:763 +#: ../src/ui/dialog/inkscape-preferences.cpp:740 +#: ../src/ui/dialog/inkscape-preferences.cpp:765 msgid "Y coordinate of grid origin" msgstr "Координата начала отсчёта по оси Y" @@ -3341,29 +5029,29 @@ msgid "Spacing _Y:" msgstr "И_нтервал по Y:" #: ../src/display/canvas-axonomgrid.cpp:323 -#: ../src/ui/dialog/inkscape-preferences.cpp:766 +#: ../src/ui/dialog/inkscape-preferences.cpp:768 msgid "Base length of z-axis" msgstr "Основная длина оси Z" #: ../src/display/canvas-axonomgrid.cpp:325 -#: ../src/ui/dialog/inkscape-preferences.cpp:769 +#: ../src/ui/dialog/inkscape-preferences.cpp:771 #: ../src/widgets/box3d-toolbar.cpp:299 msgid "Angle X:" msgstr "Угол X:" #: ../src/display/canvas-axonomgrid.cpp:325 -#: ../src/ui/dialog/inkscape-preferences.cpp:769 +#: ../src/ui/dialog/inkscape-preferences.cpp:771 msgid "Angle of x-axis" msgstr "Угол оси X" #: ../src/display/canvas-axonomgrid.cpp:327 -#: ../src/ui/dialog/inkscape-preferences.cpp:770 +#: ../src/ui/dialog/inkscape-preferences.cpp:772 #: ../src/widgets/box3d-toolbar.cpp:378 msgid "Angle Z:" msgstr "Угол Z:" #: ../src/display/canvas-axonomgrid.cpp:327 -#: ../src/ui/dialog/inkscape-preferences.cpp:770 +#: ../src/ui/dialog/inkscape-preferences.cpp:772 msgid "Angle of z-axis" msgstr "Угол оси Z" @@ -3373,7 +5061,7 @@ msgid "Minor grid line _color:" msgstr "Цвет основных линий сетки:" #: ../src/display/canvas-axonomgrid.cpp:331 ../src/display/canvas-grid.cpp:705 -#: ../src/ui/dialog/inkscape-preferences.cpp:721 +#: ../src/ui/dialog/inkscape-preferences.cpp:723 #, fuzzy msgid "Minor grid line color" msgstr "Цвет основных линий сетки" @@ -3388,7 +5076,7 @@ msgid "Ma_jor grid line color:" msgstr "Цвет о_сновных линий сетки:" #: ../src/display/canvas-axonomgrid.cpp:336 ../src/display/canvas-grid.cpp:710 -#: ../src/ui/dialog/inkscape-preferences.cpp:723 +#: ../src/ui/dialog/inkscape-preferences.cpp:725 msgid "Major grid line color" msgstr "Цвет основных линий сетки" @@ -3457,12 +5145,12 @@ msgid "Spacing _X:" msgstr "_Интервал по X:" #: ../src/display/canvas-grid.cpp:699 -#: ../src/ui/dialog/inkscape-preferences.cpp:743 +#: ../src/ui/dialog/inkscape-preferences.cpp:745 msgid "Distance between vertical grid lines" msgstr "Расстояние между вертикальными линиями сетки" #: ../src/display/canvas-grid.cpp:701 -#: ../src/ui/dialog/inkscape-preferences.cpp:744 +#: ../src/ui/dialog/inkscape-preferences.cpp:746 msgid "Distance between horizontal grid lines" msgstr "Расстояние между горизонтальными линиями сетки" @@ -3689,22 +5377,22 @@ msgstr "" msgid " to " msgstr " к " -#: ../src/document.cpp:542 +#: ../src/document.cpp:541 #, c-format msgid "New document %d" msgstr "Новый документ %d" -#: ../src/document.cpp:547 +#: ../src/document.cpp:546 #, fuzzy, c-format msgid "Memory document %d" msgstr "Документ в памяти %d" -#: ../src/document.cpp:576 +#: ../src/document.cpp:575 #, fuzzy msgid "Memory document %1" msgstr "Документ в памяти %d" -#: ../src/document.cpp:788 +#: ../src/document.cpp:787 #, c-format msgid "Unnamed document %d" msgstr "Безымянный документ %d" @@ -3778,7 +5466,7 @@ msgstr "Применяется эффект '%s' , подождите немно #. static int i = 0; #. std::cout << "Checking module[" << i++ << "]: " << name << std::endl; -#: ../src/extension/extension.cpp:266 +#: ../src/extension/extension.cpp:271 msgid "" " This is caused by an improper .inx file for this extension. An improper ." "inx file could have been caused by a faulty installation of Inkscape." @@ -3786,70 +5474,70 @@ msgstr "" "Это вызвано неправильным .inx файлом для данного расширения. Неправильный ." "inx файл мог появиться из-за ошибки при инсталляции Inkscape." -#: ../src/extension/extension.cpp:276 +#: ../src/extension/extension.cpp:281 msgid "the extension is designed for Windows only." msgstr "" -#: ../src/extension/extension.cpp:281 +#: ../src/extension/extension.cpp:286 msgid "an ID was not defined for it." msgstr "ID не был определен." -#: ../src/extension/extension.cpp:285 +#: ../src/extension/extension.cpp:290 msgid "there was no name defined for it." msgstr "не было определено имени." -#: ../src/extension/extension.cpp:289 +#: ../src/extension/extension.cpp:294 msgid "the XML description of it got lost." msgstr "XML-описание было потеряно." -#: ../src/extension/extension.cpp:293 +#: ../src/extension/extension.cpp:298 msgid "no implementation was defined for the extension." msgstr "для этого расширения не была определена реализация." #. std::cout << "Failed: " << *(_deps[i]) << std::endl; -#: ../src/extension/extension.cpp:300 +#: ../src/extension/extension.cpp:305 msgid "a dependency was not met." msgstr "не установлен необходимый для выполнения сценария компонент." -#: ../src/extension/extension.cpp:320 +#: ../src/extension/extension.cpp:325 msgid "Extension \"" msgstr "Расширение \"" -#: ../src/extension/extension.cpp:320 +#: ../src/extension/extension.cpp:325 msgid "\" failed to load because " msgstr "\" не удалось загрузить, потому что " -#: ../src/extension/extension.cpp:669 +#: ../src/extension/extension.cpp:674 #, c-format msgid "Could not create extension error log file '%s'" msgstr "Невозможно создать файл журнала %s." -#: ../src/extension/extension.cpp:777 +#: ../src/extension/extension.cpp:782 #: ../share/extensions/webslicer_create_rect.inx.h:2 msgid "Name:" msgstr "Имя:" -#: ../src/extension/extension.cpp:778 +#: ../src/extension/extension.cpp:783 msgid "ID:" msgstr "ID" -#: ../src/extension/extension.cpp:779 +#: ../src/extension/extension.cpp:784 msgid "State:" msgstr "Состояние:" -#: ../src/extension/extension.cpp:779 +#: ../src/extension/extension.cpp:784 msgid "Loaded" msgstr "Загружен" -#: ../src/extension/extension.cpp:779 +#: ../src/extension/extension.cpp:784 msgid "Unloaded" msgstr "Не загружен" -#: ../src/extension/extension.cpp:779 +#: ../src/extension/extension.cpp:784 msgid "Deactivated" msgstr "Деактивирован" -#: ../src/extension/extension.cpp:819 +#: ../src/extension/extension.cpp:824 msgid "" "Currently there is no help available for this Extension. Please look on the " "Inkscape website or ask on the mailing lists if you have questions regarding " @@ -4110,64 +5798,6 @@ msgstr "Применить эффект рисования углем к выб msgid "Colorize" msgstr "Тонирование" -#: ../src/extension/internal/bitmap/colorize.cpp:52 -#: ../src/extension/internal/filter/bumps.h:101 -#: ../src/extension/internal/filter/bumps.h:321 -#: ../src/extension/internal/filter/bumps.h:328 -#: ../src/extension/internal/filter/color.h:82 -#: ../src/extension/internal/filter/color.h:164 -#: ../src/extension/internal/filter/color.h:171 -#: ../src/extension/internal/filter/color.h:262 -#: ../src/extension/internal/filter/color.h:340 -#: ../src/extension/internal/filter/color.h:347 -#: ../src/extension/internal/filter/color.h:437 -#: ../src/extension/internal/filter/color.h:532 -#: ../src/extension/internal/filter/color.h:654 -#: ../src/extension/internal/filter/color.h:751 -#: ../src/extension/internal/filter/color.h:830 -#: ../src/extension/internal/filter/color.h:921 -#: ../src/extension/internal/filter/color.h:1049 -#: ../src/extension/internal/filter/color.h:1119 -#: ../src/extension/internal/filter/color.h:1212 -#: ../src/extension/internal/filter/color.h:1324 -#: ../src/extension/internal/filter/color.h:1429 -#: ../src/extension/internal/filter/color.h:1505 -#: ../src/extension/internal/filter/color.h:1609 -#: ../src/extension/internal/filter/color.h:1616 -#: ../src/extension/internal/filter/morphology.h:194 -#: ../src/extension/internal/filter/overlays.h:73 -#: ../src/extension/internal/filter/paint.h:99 -#: ../src/extension/internal/filter/paint.h:713 -#: ../src/extension/internal/filter/paint.h:717 -#: ../src/extension/internal/filter/shadows.h:73 -#: ../src/extension/internal/filter/transparency.h:345 -#: ../src/filter-enums.cpp:66 ../src/ui/dialog/clonetiler.cpp:832 -#: ../src/ui/dialog/clonetiler.cpp:983 -#: ../src/ui/dialog/document-properties.cpp:157 -#: ../share/extensions/color_HSL_adjust.inx.h:20 -#: ../share/extensions/color_blackandwhite.inx.h:3 -#: ../share/extensions/color_brighter.inx.h:2 -#: ../share/extensions/color_custom.inx.h:15 -#: ../share/extensions/color_darker.inx.h:2 -#: ../share/extensions/color_desaturate.inx.h:2 -#: ../share/extensions/color_grayscale.inx.h:2 -#: ../share/extensions/color_lesshue.inx.h:2 -#: ../share/extensions/color_lesslight.inx.h:2 -#: ../share/extensions/color_lesssaturation.inx.h:2 -#: ../share/extensions/color_morehue.inx.h:2 -#: ../share/extensions/color_morelight.inx.h:2 -#: ../share/extensions/color_moresaturation.inx.h:2 -#: ../share/extensions/color_negative.inx.h:2 -#: ../share/extensions/color_randomize.inx.h:8 -#: ../share/extensions/color_removeblue.inx.h:2 -#: ../share/extensions/color_removegreen.inx.h:2 -#: ../share/extensions/color_removered.inx.h:2 -#: ../share/extensions/color_replace.inx.h:6 -#: ../share/extensions/color_rgbbarrel.inx.h:2 -#: ../share/extensions/interp_att_g.inx.h:19 -msgid "Color" -msgstr "Цвет" - #: ../src/extension/internal/bitmap/colorize.cpp:58 #, fuzzy msgid "Colorize selected bitmap(s) with specified color, using given opacity" @@ -4216,7 +5846,7 @@ msgstr "Правое:" #: ../src/extension/internal/bitmap/crop.cpp:77 #, fuzzy -msgid "Crop selected bitmap(s)." +msgid "Crop selected bitmap(s)" msgstr "Размыть выделенные растровые объекты" #: ../src/extension/internal/bitmap/cycleColormap.cpp:37 @@ -4444,7 +6074,8 @@ msgid "Opacity:" msgstr "Непрозрачность:" #: ../src/extension/internal/bitmap/opacity.cpp:46 -msgid "Modify opacity channel(s) of selected bitmap(s)." +#, fuzzy +msgid "Modify opacity channel(s) of selected bitmap(s)" msgstr "Изменить канал непрозрачности в выбранных изображениях." #: ../src/extension/internal/bitmap/raise.cpp:40 @@ -4514,10 +6145,6 @@ msgstr "В цвете" msgid "Shade selected bitmap(s) simulating distant light source" msgstr "Оттенить выбранные изображения, имитируя удаленный источник света." -#: ../src/extension/internal/bitmap/sharpen.cpp:38 -msgid "Sharpen" -msgstr "Повысить резкость" - #: ../src/extension/internal/bitmap/sharpen.cpp:47 #, fuzzy msgid "Sharpen selected bitmap(s)" @@ -4548,10 +6175,6 @@ msgstr "" "Случайным образом распределить пикселы выбранных изображений в заданном " "радиусе от исходного положения" -#: ../src/extension/internal/bitmap/swirl.cpp:37 -msgid "Swirl" -msgstr "Вихрь" - #: ../src/extension/internal/bitmap/swirl.cpp:39 #, fuzzy msgid "Degrees:" @@ -4657,8 +6280,8 @@ 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:3550 -#: ../src/extension/internal/wmf-inout.cpp:3141 +#: ../src/extension/internal/emf-inout.cpp:3569 +#: ../src/extension/internal/wmf-inout.cpp:3143 msgid "Convert texts to paths" msgstr "Текст в кривые Безье" @@ -4846,77 +6469,77 @@ msgstr "Файлы Corel DRAW Presentation Exchange (.cmx)" msgid "Open presentation exchange files saved in Corel DRAW" msgstr "Открыть файлы, сохраненные Corel DRAW для обмена данными" -#: ../src/extension/internal/emf-inout.cpp:3534 +#: ../src/extension/internal/emf-inout.cpp:3553 msgid "EMF Input" msgstr "Импорт EMF" -#: ../src/extension/internal/emf-inout.cpp:3539 +#: ../src/extension/internal/emf-inout.cpp:3558 msgid "Enhanced Metafiles (*.emf)" msgstr "Файлы Enhanced Metafiles (*.emf)" -#: ../src/extension/internal/emf-inout.cpp:3540 +#: ../src/extension/internal/emf-inout.cpp:3559 msgid "Enhanced Metafiles" msgstr "Файлы Enhanced Metafile" -#: ../src/extension/internal/emf-inout.cpp:3548 +#: ../src/extension/internal/emf-inout.cpp:3567 msgid "EMF Output" msgstr "Экспорт в EMF" -#: ../src/extension/internal/emf-inout.cpp:3551 -#: ../src/extension/internal/wmf-inout.cpp:3142 +#: ../src/extension/internal/emf-inout.cpp:3570 +#: ../src/extension/internal/wmf-inout.cpp:3144 msgid "Map Unicode to Symbol font" msgstr "" -#: ../src/extension/internal/emf-inout.cpp:3552 -#: ../src/extension/internal/wmf-inout.cpp:3143 +#: ../src/extension/internal/emf-inout.cpp:3571 +#: ../src/extension/internal/wmf-inout.cpp:3145 msgid "Map Unicode to Wingdings" msgstr "" -#: ../src/extension/internal/emf-inout.cpp:3553 -#: ../src/extension/internal/wmf-inout.cpp:3144 +#: ../src/extension/internal/emf-inout.cpp:3572 +#: ../src/extension/internal/wmf-inout.cpp:3146 msgid "Map Unicode to Zapf Dingbats" msgstr "" -#: ../src/extension/internal/emf-inout.cpp:3554 -#: ../src/extension/internal/wmf-inout.cpp:3145 +#: ../src/extension/internal/emf-inout.cpp:3573 +#: ../src/extension/internal/wmf-inout.cpp:3147 msgid "Use MS Unicode PUA (0xF020-0xF0FF) for converted characters" msgstr "" -#: ../src/extension/internal/emf-inout.cpp:3555 -#: ../src/extension/internal/wmf-inout.cpp:3146 +#: ../src/extension/internal/emf-inout.cpp:3574 +#: ../src/extension/internal/wmf-inout.cpp:3148 msgid "Compensate for PPT font bug" msgstr "" -#: ../src/extension/internal/emf-inout.cpp:3556 -#: ../src/extension/internal/wmf-inout.cpp:3147 +#: ../src/extension/internal/emf-inout.cpp:3575 +#: ../src/extension/internal/wmf-inout.cpp:3149 msgid "Convert dashed/dotted lines to single lines" msgstr "" -#: ../src/extension/internal/emf-inout.cpp:3557 -#: ../src/extension/internal/wmf-inout.cpp:3148 +#: ../src/extension/internal/emf-inout.cpp:3576 +#: ../src/extension/internal/wmf-inout.cpp:3150 #, fuzzy msgid "Convert gradients to colored polygon series" msgstr "Смена цвета опорной точки градиента" -#: ../src/extension/internal/emf-inout.cpp:3558 +#: ../src/extension/internal/emf-inout.cpp:3577 #, fuzzy msgid "Use native rectangular linear gradients" msgstr "Создать линейный градиент" -#: ../src/extension/internal/emf-inout.cpp:3559 +#: ../src/extension/internal/emf-inout.cpp:3578 msgid "Map all fill patterns to standard EMF hatches" msgstr "" -#: ../src/extension/internal/emf-inout.cpp:3560 +#: ../src/extension/internal/emf-inout.cpp:3579 #, fuzzy msgid "Ignore image rotations" msgstr "Ориентация" -#: ../src/extension/internal/emf-inout.cpp:3564 +#: ../src/extension/internal/emf-inout.cpp:3583 msgid "Enhanced Metafile (*.emf)" msgstr "Файлы Enhanced Metafile (*.emf)" -#: ../src/extension/internal/emf-inout.cpp:3565 +#: ../src/extension/internal/emf-inout.cpp:3584 msgid "Enhanced Metafile" msgstr "Enhanced Metafile" @@ -5008,12 +6631,6 @@ msgstr "По_дсветка:" msgid "Filters" msgstr "Фильтры" -#: ../src/extension/internal/filter/bevels.h:63 -#: ../src/extension/internal/filter/bevels.h:144 -#: ../src/extension/internal/filter/bevels.h:228 -msgid "Bevels" -msgstr "Фаска" - #: ../src/extension/internal/filter/bevels.h:66 msgid "Basic diffuse bevel to use for building textures" msgstr "Проста рассеянная фаска для создания текстур" @@ -5040,10 +6657,6 @@ msgstr "Вздутый слой матового желе" msgid "Specular Light" msgstr "Отражение света" -#: ../src/extension/internal/filter/bevels.h:231 -msgid "Basic specular bevel to use for building textures" -msgstr "Типичная отражающая фаска для создания текстур" - #: ../src/extension/internal/filter/blurs.h:56 #: ../src/extension/internal/filter/blurs.h:189 #: ../src/extension/internal/filter/blurs.h:329 @@ -5064,14 +6677,6 @@ msgstr "Размывание по вертикали:" msgid "Blur content only" msgstr "Размыть только содержимое" -#: ../src/extension/internal/filter/blurs.h:63 -#: ../src/extension/internal/filter/blurs.h:132 -#: ../src/extension/internal/filter/blurs.h:201 -#: ../src/extension/internal/filter/blurs.h:267 -#: ../src/extension/internal/filter/blurs.h:351 -msgid "Blurs" -msgstr "Размывание" - #: ../src/extension/internal/filter/blurs.h:66 msgid "Simple vertical and horizontal blur effect" msgstr "" @@ -5245,7 +6850,7 @@ msgstr "Режим смешивания:" #: ../src/extension/internal/filter/paint.h:702 #: ../src/extension/internal/filter/textures.h:77 #: ../src/extension/internal/filter/transparency.h:61 -#: ../src/filter-enums.cpp:51 ../src/ui/dialog/inkscape-preferences.cpp:644 +#: ../src/filter-enums.cpp:51 ../src/ui/dialog/inkscape-preferences.cpp:646 msgid "Normal" msgstr "Нормальный" @@ -5384,7 +6989,7 @@ msgid "Distant" msgstr "Искажения" #: ../src/extension/internal/filter/bumps.h:106 -#: ../src/ui/dialog/inkscape-preferences.cpp:451 +#: ../src/ui/dialog/inkscape-preferences.cpp:453 msgid "Point" msgstr "Пункт" @@ -5472,11 +7077,6 @@ msgstr "Вставить цвет" msgid "Color bump" msgstr "Цвет" -#: ../src/extension/internal/filter/bumps.h:142 -#: ../src/extension/internal/filter/bumps.h:362 -msgid "Bumps" -msgstr "Выпуклости" - #: ../src/extension/internal/filter/bumps.h:145 msgid "All purposes bump filter" msgstr "" @@ -5590,7 +7190,7 @@ msgstr "Масляная краска" #: ../src/extension/internal/filter/color.h:156 #: ../src/extension/internal/filter/color.h:257 #: ../src/extension/internal/filter/paint.h:87 ../src/filter-enums.cpp:65 -#: ../src/ui/dialog/inkscape-preferences.cpp:943 +#: ../src/ui/dialog/inkscape-preferences.cpp:945 #: ../src/ui/tools/flood-tool.cpp:197 #: ../src/widgets/sp-color-icc-selector.cpp:362 #: ../src/widgets/sp-color-icc-selector.cpp:367 @@ -5797,7 +7397,7 @@ msgid "Fade to:" msgstr "Угасание" #: ../src/extension/internal/filter/color.h:744 -#: ../src/ui/widget/selected-style.cpp:257 +#: ../src/ui/widget/selected-style.cpp:261 #: ../src/widgets/sp-color-icc-selector.cpp:372 #: ../src/widgets/sp-color-scales.cpp:492 #: ../src/widgets/sp-color-scales.cpp:493 @@ -5805,7 +7405,7 @@ msgid "Black" msgstr "Черный" #: ../src/extension/internal/filter/color.h:745 -#: ../src/ui/widget/selected-style.cpp:253 +#: ../src/ui/widget/selected-style.cpp:257 msgid "White" msgstr "Белый" @@ -5830,7 +7430,7 @@ msgid "Customize greyscale components" msgstr "" #: ../src/extension/internal/filter/color.h:905 -#: ../src/ui/widget/selected-style.cpp:249 +#: ../src/ui/widget/selected-style.cpp:253 msgid "Invert" msgstr "Инвертировать" @@ -6162,11 +7762,6 @@ msgstr "Насыщенность" msgid "Intensity" msgstr "Идентичная функция" -#: ../src/extension/internal/filter/distort.h:96 -#: ../src/extension/internal/filter/distort.h:205 -msgid "Distort" -msgstr "Искажения" - #: ../src/extension/internal/filter/distort.h:99 #, fuzzy msgid "Blur and displace edges of shapes and pictures" @@ -6231,10 +7826,6 @@ msgstr "Горизонтальный радиус" msgid "Invert colors" msgstr "Инвертировать цвета" -#: ../src/extension/internal/filter/image.h:62 -msgid "Image Effects" -msgstr "Эффекты для растра" - #: ../src/extension/internal/filter/image.h:65 msgid "Detect color edges in object" msgstr "Найти в объекте цветные края" @@ -6277,12 +7868,6 @@ msgstr "Сглаживать" msgid "Blur content" msgstr "Размыть содержимое" -#: ../src/extension/internal/filter/morphology.h:76 -#: ../src/extension/internal/filter/morphology.h:203 -#: ../src/filter-enums.cpp:31 -msgid "Morphology" -msgstr "Морфология" - #: ../src/extension/internal/filter/morphology.h:79 msgid "Smooth edges and angles of shapes" msgstr "" @@ -6453,10 +8038,6 @@ msgstr "Эрозия:" msgid "Noise color" msgstr "Цвет года" -#: ../src/extension/internal/filter/overlays.h:80 -msgid "Overlays" -msgstr "Перекрытия" - #: ../src/extension/internal/filter/overlays.h:83 #, fuzzy msgid "Basic noise fill and transparency texture" @@ -6509,17 +8090,6 @@ msgstr "Расширение \"" msgid "Grain blend:" msgstr "Градиентная заливка" -#: ../src/extension/internal/filter/paint.h:113 -#: ../src/extension/internal/filter/paint.h:244 -#: ../src/extension/internal/filter/paint.h:363 -#: ../src/extension/internal/filter/paint.h:507 -#: ../src/extension/internal/filter/paint.h:602 -#: ../src/extension/internal/filter/paint.h:725 -#: ../src/extension/internal/filter/paint.h:877 -#: ../src/extension/internal/filter/paint.h:981 -msgid "Image Paint and Draw" -msgstr "" - #: ../src/extension/internal/filter/paint.h:116 msgid "Chromo effect with customizable edge drawing and graininess" msgstr "" @@ -6563,10 +8133,6 @@ msgstr "Упрощение контура" msgid "Erase" msgstr "Стирание:" -#: ../src/extension/internal/filter/paint.h:339 -msgid "Translucent" -msgstr "Ослепительно яркая" - #: ../src/extension/internal/filter/paint.h:344 msgid "Melt" msgstr "Таяние" @@ -6800,10 +8366,6 @@ msgstr "" msgid "Use object's color" msgstr "Использовать именованные цвета" -#: ../src/extension/internal/filter/shadows.h:81 -msgid "Shadows and Glows" -msgstr "Свет и тень" - #: ../src/extension/internal/filter/shadows.h:84 #, fuzzy msgid "Colorizable Drop shadow" @@ -6895,14 +8457,6 @@ msgstr "Фон" msgid "Mode:" msgstr "Режим:" -#: ../src/extension/internal/filter/transparency.h:70 -#: ../src/extension/internal/filter/transparency.h:141 -#: ../src/extension/internal/filter/transparency.h:215 -#: ../src/extension/internal/filter/transparency.h:288 -#: ../src/extension/internal/filter/transparency.h:350 -msgid "Fill and Transparency" -msgstr "Заливка и прозрачность" - #: ../src/extension/internal/filter/transparency.h:73 msgid "Blend objects with background images or with themselves" msgstr "" @@ -6967,13 +8521,13 @@ msgstr "" "что файл будет вне SVG, их придётся перемещать вместе." #: ../src/extension/internal/gdkpixbuf-input.cpp:192 -#: ../src/ui/dialog/inkscape-preferences.cpp:1447 +#: ../src/ui/dialog/inkscape-preferences.cpp:1449 #, fuzzy msgid "Embed" msgstr "внедрить" #: ../src/extension/internal/gdkpixbuf-input.cpp:193 ../src/sp-anchor.cpp:119 -#: ../src/ui/dialog/inkscape-preferences.cpp:1447 +#: ../src/ui/dialog/inkscape-preferences.cpp:1449 #, fuzzy msgid "Link" msgstr "Связь:" @@ -7011,18 +8565,18 @@ msgid "" msgstr "" #: ../src/extension/internal/gdkpixbuf-input.cpp:202 -#: ../src/ui/dialog/inkscape-preferences.cpp:1454 +#: ../src/ui/dialog/inkscape-preferences.cpp:1456 #, fuzzy msgid "None (auto)" msgstr "Нет (по умолчанию)" #: ../src/extension/internal/gdkpixbuf-input.cpp:203 -#: ../src/ui/dialog/inkscape-preferences.cpp:1454 +#: ../src/ui/dialog/inkscape-preferences.cpp:1456 msgid "Smooth (optimizeQuality)" msgstr "" #: ../src/extension/internal/gdkpixbuf-input.cpp:204 -#: ../src/ui/dialog/inkscape-preferences.cpp:1454 +#: ../src/ui/dialog/inkscape-preferences.cpp:1456 msgid "Blocky (optimizeSpeed)" msgstr "" @@ -7076,7 +8630,7 @@ msgid "Vertical Offset:" msgstr "Сдвиг по вертикали" #: ../src/extension/internal/grid.cpp:220 -#: ../src/ui/dialog/inkscape-preferences.cpp:1468 +#: ../src/ui/dialog/inkscape-preferences.cpp:1470 #: ../share/extensions/draw_from_triangle.inx.h:58 #: ../share/extensions/eqtexsvg.inx.h:4 #: ../share/extensions/foldablebox.inx.h:9 @@ -7107,7 +8661,7 @@ msgstr "Отрисовка" #: ../src/extension/internal/grid.cpp:221 #: ../src/ui/dialog/document-properties.cpp:155 -#: ../src/ui/dialog/inkscape-preferences.cpp:778 +#: ../src/ui/dialog/inkscape-preferences.cpp:780 #: ../src/widgets/toolbox.cpp:1826 msgid "Grids" msgstr "Сетки" @@ -7410,34 +8964,34 @@ msgstr "Импорт DXF" msgid "Microsoft Visio 2013 drawing (*.vsdx)" msgstr "" -#: ../src/extension/internal/wmf-inout.cpp:3125 +#: ../src/extension/internal/wmf-inout.cpp:3127 msgid "WMF Input" msgstr "Импорт WMF" -#: ../src/extension/internal/wmf-inout.cpp:3130 +#: ../src/extension/internal/wmf-inout.cpp:3132 msgid "Windows Metafiles (*.wmf)" msgstr "Файлы Windows Metafile (*.wmf)" -#: ../src/extension/internal/wmf-inout.cpp:3131 +#: ../src/extension/internal/wmf-inout.cpp:3133 msgid "Windows Metafiles" msgstr "Файлы Windows Metafile" -#: ../src/extension/internal/wmf-inout.cpp:3139 +#: ../src/extension/internal/wmf-inout.cpp:3141 #, fuzzy msgid "WMF Output" msgstr "Экспорт в EMF" -#: ../src/extension/internal/wmf-inout.cpp:3149 +#: ../src/extension/internal/wmf-inout.cpp:3151 msgid "Map all fill patterns to standard WMF hatches" msgstr "" -#: ../src/extension/internal/wmf-inout.cpp:3153 +#: ../src/extension/internal/wmf-inout.cpp:3155 #: ../share/extensions/wmf_input.inx.h:2 #: ../share/extensions/wmf_output.inx.h:2 msgid "Windows Metafile (*.wmf)" msgstr "Файлы Windows Metafile (*.wmf)" -#: ../src/extension/internal/wmf-inout.cpp:3154 +#: ../src/extension/internal/wmf-inout.cpp:3156 #, fuzzy msgid "Windows Metafile" msgstr "Файлы Windows Metafile" @@ -7454,11 +9008,11 @@ msgstr "Графика WordPerfect (*.wpg)" msgid "Vector graphics format used by Corel WordPerfect" msgstr "Формат векторной графики, используемой Corel WordPerfect" -#: ../src/extension/prefdialog.cpp:272 +#: ../src/extension/prefdialog.cpp:276 msgid "Live preview" msgstr "Предпросмотр" -#: ../src/extension/prefdialog.cpp:272 +#: ../src/extension/prefdialog.cpp:276 msgid "Is the effect previewed live on canvas?" msgstr "Показывать ли результат применения эффекта сразу на холсте" @@ -7466,47 +9020,47 @@ msgstr "Показывать ли результат применения эфф msgid "Format autodetect failed. The file is being opened as SVG." msgstr "Невозможно определить формат файла. Файл будет открыт как SVG." -#: ../src/file.cpp:181 +#: ../src/file.cpp:183 msgid "default.svg" msgstr "default.svg" -#: ../src/file.cpp:320 +#: ../src/file.cpp:322 msgid "Broken links have been changed to point to existing files." msgstr "" -#: ../src/file.cpp:331 ../src/file.cpp:1247 +#: ../src/file.cpp:333 ../src/file.cpp:1249 #, c-format msgid "Failed to load the requested file %s" msgstr "Не удалось загрузить запрошенный файл %s" -#: ../src/file.cpp:357 +#: ../src/file.cpp:359 msgid "Document not saved yet. Cannot revert." msgstr "Документ еще не был сохранен. Вернуться к сохраненному невозможно." -#: ../src/file.cpp:363 +#: ../src/file.cpp:365 #, fuzzy msgid "Changes will be lost! Are you sure you want to reload document %1?" msgstr "" "Изменения будут потеряны! Вы уверены, что хотите загрузить документ %s " "заново?" -#: ../src/file.cpp:389 +#: ../src/file.cpp:391 msgid "Document reverted." msgstr "Документ возвращен к последнему сохраненному состоянию." -#: ../src/file.cpp:391 +#: ../src/file.cpp:393 msgid "Document not reverted." msgstr "Документ не возвращен к сохраненному состоянию." -#: ../src/file.cpp:541 +#: ../src/file.cpp:543 msgid "Select file to open" msgstr "Выберите файл" -#: ../src/file.cpp:623 +#: ../src/file.cpp:625 msgid "Clean up document" msgstr "Подчистка документа" -#: ../src/file.cpp:630 +#: ../src/file.cpp:632 #, c-format msgid "Removed <b>%i</b> unused definition in <defs>." msgid_plural "Removed <b>%i</b> unused definitions in <defs>." @@ -7514,11 +9068,11 @@ msgstr[0] "Удалено <b>%i</b> ненужное определение в & msgstr[1] "Удалено <b>%i</b> ненужных определения в <defs>." msgstr[2] "Удалено <b>%i</b> ненужных определений в <defs>." -#: ../src/file.cpp:635 +#: ../src/file.cpp:637 msgid "No unused definitions in <defs>." msgstr "Нет ненужных элементов в <defs>." -#: ../src/file.cpp:667 +#: ../src/file.cpp:669 #, c-format msgid "" "No Inkscape extension found to save document (%s). This may have been " @@ -7527,68 +9081,68 @@ msgstr "" "Не найдено расширение Inkscape для сохранения документа (%s). Возможно, " "задано неизвестное расширение имени файла." -#: ../src/file.cpp:668 ../src/file.cpp:676 ../src/file.cpp:684 -#: ../src/file.cpp:690 ../src/file.cpp:695 +#: ../src/file.cpp:670 ../src/file.cpp:678 ../src/file.cpp:686 +#: ../src/file.cpp:692 ../src/file.cpp:697 msgid "Document not saved." msgstr "Документ не сохранен." -#: ../src/file.cpp:675 +#: ../src/file.cpp:677 #, c-format msgid "" "File %s is write protected. Please remove write protection and try again." msgstr "" "Файл %s защищён от записи. Уберите защиту от записи и попробуйте снова." -#: ../src/file.cpp:683 +#: ../src/file.cpp:685 #, c-format msgid "File %s could not be saved." msgstr "Невозможно сохранить файл %s." -#: ../src/file.cpp:713 ../src/file.cpp:715 +#: ../src/file.cpp:715 ../src/file.cpp:717 msgid "Document saved." msgstr "Документ сохранен." #. We are saving for the first time; create a unique default filename -#: ../src/file.cpp:858 ../src/file.cpp:1406 +#: ../src/file.cpp:860 ../src/file.cpp:1408 #, fuzzy msgid "drawing" msgstr "рисунок%s" -#: ../src/file.cpp:863 +#: ../src/file.cpp:865 #, fuzzy msgid "drawing-%1" msgstr "рисунок%s" -#: ../src/file.cpp:880 +#: ../src/file.cpp:882 msgid "Select file to save a copy to" msgstr "Выберите файл для сохранения копии" -#: ../src/file.cpp:882 +#: ../src/file.cpp:884 msgid "Select file to save to" msgstr "Выберите файл для сохранения" -#: ../src/file.cpp:987 ../src/file.cpp:989 +#: ../src/file.cpp:989 ../src/file.cpp:991 msgid "No changes need to be saved." msgstr "Файл не был изменен. Сохранение не требуется." -#: ../src/file.cpp:1008 +#: ../src/file.cpp:1010 msgid "Saving document..." msgstr "Выполняется сохранение документа..." -#: ../src/file.cpp:1244 ../src/ui/dialog/inkscape-preferences.cpp:1441 +#: ../src/file.cpp:1246 ../src/ui/dialog/inkscape-preferences.cpp:1443 #: ../src/ui/dialog/ocaldialogs.cpp:1244 msgid "Import" msgstr "Импорт" -#: ../src/file.cpp:1294 +#: ../src/file.cpp:1296 msgid "Select file to import" msgstr "Выберите файл для импорта" -#: ../src/file.cpp:1427 +#: ../src/file.cpp:1429 msgid "Select file to export to" msgstr "Выберите файл для экспорта" -#: ../src/file.cpp:1680 +#: ../src/file.cpp:1682 msgid "Import Clip Art" msgstr "Импорт из Open Clip Art Library" @@ -7774,6 +9328,12 @@ msgstr "Продублировать" msgid "Wrap" msgstr "Крупнее" +#: ../src/filter-enums.cpp:121 +#, fuzzy +msgctxt "Convolve matrix, edge mode" +msgid "None" +msgstr "Нет" + #: ../src/filter-enums.cpp:136 msgid "Erode" msgstr "Эрозия" @@ -8024,7 +9584,7 @@ msgid "Open _Recent" msgstr "Открыть н_едавние" #: ../src/interface.cpp:1009 ../src/interface.cpp:1095 -#: ../src/interface.cpp:1198 ../src/ui/widget/selected-style.cpp:528 +#: ../src/interface.cpp:1198 ../src/ui/widget/selected-style.cpp:532 msgid "Drop color" msgstr "Перенос цвета" @@ -8080,9 +9640,8 @@ msgstr "На уровень выше" #. TRANSLATORS: #%1 is the id of the group e.g. <g id="#g7">, not a number. #: ../src/interface.cpp:1505 -#, fuzzy msgid "Enter group #%1" -msgstr "Войти в группу #%s" +msgstr "Войти в группу #%1" #. Item dialog #: ../src/interface.cpp:1641 ../src/verbs.cpp:2849 @@ -8129,7 +9688,6 @@ msgstr "Пере_местить на слой..." #. Create link #: ../src/interface.cpp:1716 -#, fuzzy msgid "Create _Link" msgstr "Создать сс_ылку" @@ -8145,7 +9703,6 @@ msgstr "Снять маску" #. Set Clip #: ../src/interface.cpp:1761 -#, fuzzy msgid "Set Cl_ip" msgstr "Применить о_бтравочный контур" @@ -8184,7 +9741,6 @@ msgid "_Remove Link" msgstr "_Удалить ссылку" #: ../src/interface.cpp:1953 -#, fuzzy msgid "Remove link" msgstr "_Удалить ссылку" @@ -8207,19 +9763,17 @@ msgstr "_Векторизовать растр..." #. Trace Pixel Art #: ../src/interface.cpp:1988 msgid "Trace Pixel Art" -msgstr "" +msgstr "Векторизация пиксельной графики" #: ../src/interface.cpp:1998 -#, fuzzy msgctxt "Context menu" msgid "Embed Image" -msgstr "Встроить все растровые изображения" +msgstr "Встроить изображение" #: ../src/interface.cpp:2009 -#, fuzzy msgctxt "Context menu" msgid "Extract Image..." -msgstr "Извлечь растровое изображение" +msgstr "Извлечь изображение..." #. Item dialog #. Fill and Stroke dialog @@ -8454,7 +10008,7 @@ msgid "The index of the current page" msgstr "Индекс текущей страницы" #: ../src/libgdl/gdl-dock-object.c:125 -#: ../src/ui/dialog/inkscape-preferences.cpp:1502 +#: ../src/ui/dialog/inkscape-preferences.cpp:1504 #: ../src/ui/widget/page-sizer.cpp:258 #: ../src/widgets/gradient-selector.cpp:158 #: ../src/widgets/sp-xmlview-attr-list.cpp:54 @@ -8625,8 +10179,8 @@ msgstr "" msgid "Dockitem which 'owns' this tablabel" msgstr "Dockitem which 'owns' this tablabel" -#: ../src/libgdl/gdl-dock.c:176 ../src/ui/dialog/inkscape-preferences.cpp:633 -#: ../src/ui/dialog/inkscape-preferences.cpp:676 +#: ../src/libgdl/gdl-dock.c:176 ../src/ui/dialog/inkscape-preferences.cpp:635 +#: ../src/ui/dialog/inkscape-preferences.cpp:678 msgid "Floating" msgstr "Свободно перемещаются по экрану" @@ -8667,7 +10221,7 @@ msgstr "Координата Y плавающей панели" msgid "Dock #%d" msgstr "Панель №%d" -#: ../src/libnrtype/FontFactory.cpp:767 +#: ../src/libnrtype/FontFactory.cpp:891 msgid "Ignoring font without family that will crash Pango" msgstr "Игнорирование шрифта без гарнитуры приведет к обрушиванию Pango" @@ -8805,7 +10359,7 @@ msgstr "Линейка" msgid "Power stroke" msgstr "Текстурная обводка" -#: ../src/live_effects/effect.cpp:122 ../src/selection-chemistry.cpp:2835 +#: ../src/live_effects/effect.cpp:122 ../src/selection-chemistry.cpp:2837 #, fuzzy msgid "Clone original path" msgstr "Заменить текст" @@ -9295,103 +10849,103 @@ msgstr "" msgid "SpiroInterpolator" msgstr "Интерполяция" -#: ../src/live_effects/lpe-powerstroke.cpp:203 +#: ../src/live_effects/lpe-powerstroke.cpp:192 +msgid "Centripetal Catmull-Rom" +msgstr "" + +#: ../src/live_effects/lpe-powerstroke.cpp:204 #, fuzzy msgid "Butt" msgstr "Кнопка" -#: ../src/live_effects/lpe-powerstroke.cpp:204 +#: ../src/live_effects/lpe-powerstroke.cpp:205 #, fuzzy msgid "Square" msgstr "Квадратные" -#: ../src/live_effects/lpe-powerstroke.cpp:205 +#: ../src/live_effects/lpe-powerstroke.cpp:206 #: ../share/extensions/gcodetools_prepare_path_for_plasma.inx.h:13 #, fuzzy msgid "Round" msgstr "Закругление" -#: ../src/live_effects/lpe-powerstroke.cpp:206 +#: ../src/live_effects/lpe-powerstroke.cpp:207 msgid "Peak" msgstr "" -#: ../src/live_effects/lpe-powerstroke.cpp:207 +#: ../src/live_effects/lpe-powerstroke.cpp:208 #, fuzzy msgid "Zero width" msgstr "Толщина пера" -#: ../src/live_effects/lpe-powerstroke.cpp:220 +#: ../src/live_effects/lpe-powerstroke.cpp:221 #, fuzzy msgid "Beveled" msgstr "Фаска" -#: ../src/live_effects/lpe-powerstroke.cpp:221 +#: ../src/live_effects/lpe-powerstroke.cpp:222 #: ../src/widgets/star-toolbar.cpp:534 msgid "Rounded" msgstr "Закругление" -#: ../src/live_effects/lpe-powerstroke.cpp:222 -#, fuzzy -msgid "Extrapolated" -msgstr "Интерполяция" +#. {LINEJOIN_EXTRP_MITER, N_("Extrapolated"), "extrapolated"}, // disabled because doesn't work well +#: ../src/live_effects/lpe-powerstroke.cpp:224 +msgid "Extrapolated arc" +msgstr "" -#: ../src/live_effects/lpe-powerstroke.cpp:223 +#: ../src/live_effects/lpe-powerstroke.cpp:225 #, fuzzy msgid "Miter" msgstr "Острое" -#: ../src/live_effects/lpe-powerstroke.cpp:224 +#: ../src/live_effects/lpe-powerstroke.cpp:226 #: ../src/widgets/pencil-toolbar.cpp:103 msgid "Spiro" msgstr "Кривые Спиро" -#: ../src/live_effects/lpe-powerstroke.cpp:226 -msgid "Extrapolated arc" -msgstr "" - -#: ../src/live_effects/lpe-powerstroke.cpp:233 +#: ../src/live_effects/lpe-powerstroke.cpp:232 #, fuzzy msgid "Offset points" msgstr "Растянутый контур" -#: ../src/live_effects/lpe-powerstroke.cpp:234 +#: ../src/live_effects/lpe-powerstroke.cpp:233 #, fuzzy msgid "Sort points" msgstr "Ориентация" -#: ../src/live_effects/lpe-powerstroke.cpp:234 +#: ../src/live_effects/lpe-powerstroke.cpp:233 msgid "Sort offset points according to their time value along the curve" msgstr "" -#: ../src/live_effects/lpe-powerstroke.cpp:235 +#: ../src/live_effects/lpe-powerstroke.cpp:234 #, fuzzy msgid "Interpolator type:" msgstr "Интерполировать стиль" -#: ../src/live_effects/lpe-powerstroke.cpp:235 +#: ../src/live_effects/lpe-powerstroke.cpp:234 msgid "" "Determines which kind of interpolator will be used to interpolate between " "stroke width along the path" msgstr "" -#: ../src/live_effects/lpe-powerstroke.cpp:236 +#: ../src/live_effects/lpe-powerstroke.cpp:235 #: ../share/extensions/fractalize.inx.h:3 #, fuzzy msgid "Smoothness:" msgstr "Сглаженность:" -#: ../src/live_effects/lpe-powerstroke.cpp:236 +#: ../src/live_effects/lpe-powerstroke.cpp:235 msgid "" "Sets the smoothness for the CubicBezierJohan interpolator; 0 = linear " "interpolation, 1 = smooth" msgstr "" -#: ../src/live_effects/lpe-powerstroke.cpp:237 +#: ../src/live_effects/lpe-powerstroke.cpp:236 #, fuzzy msgid "Start cap:" msgstr "Начало:" -#: ../src/live_effects/lpe-powerstroke.cpp:237 +#: ../src/live_effects/lpe-powerstroke.cpp:236 #, fuzzy msgid "Determines the shape of the path's start" msgstr "Количество промежуточных фигур между начальным и конечным субконтурами" @@ -9399,32 +10953,32 @@ msgstr "Количество промежуточных фигур между н #. Join type #. TRANSLATORS: The line join style specifies the shape to be used at the #. corners of paths. It can be "miter", "round" or "bevel". -#: ../src/live_effects/lpe-powerstroke.cpp:238 +#: ../src/live_effects/lpe-powerstroke.cpp:237 #: ../src/widgets/stroke-style.cpp:227 msgid "Join:" msgstr "Соединение:" -#: ../src/live_effects/lpe-powerstroke.cpp:238 +#: ../src/live_effects/lpe-powerstroke.cpp:237 #, fuzzy msgid "Determines the shape of the path's corners" msgstr "Количество промежуточных фигур между начальным и конечным субконтурами" -#: ../src/live_effects/lpe-powerstroke.cpp:239 +#: ../src/live_effects/lpe-powerstroke.cpp:238 #, fuzzy msgid "Miter limit:" msgstr "Пред_ел острия:" -#: ../src/live_effects/lpe-powerstroke.cpp:239 +#: ../src/live_effects/lpe-powerstroke.cpp:238 #: ../src/widgets/stroke-style.cpp:278 msgid "Maximum length of the miter (in units of stroke width)" msgstr "Максимальная длина острия (в единицах толщины обводки)" -#: ../src/live_effects/lpe-powerstroke.cpp:240 +#: ../src/live_effects/lpe-powerstroke.cpp:239 #, fuzzy msgid "End cap:" msgstr "Круглые" -#: ../src/live_effects/lpe-powerstroke.cpp:240 +#: ../src/live_effects/lpe-powerstroke.cpp:239 #, fuzzy msgid "Determines the shape of the path's end" msgstr "Количество промежуточных фигур между начальным и конечным субконтурами" @@ -9645,6 +11199,12 @@ msgstr "Справа" msgid "Both" msgstr "Оба" +#: ../src/live_effects/lpe-ruler.cpp:32 +#, fuzzy +msgctxt "Border mark" +msgid "None" +msgstr "Нет" + #: ../src/live_effects/lpe-ruler.cpp:33 ../src/widgets/arc-toolbar.cpp:326 msgid "Start" msgstr "Начало" @@ -9967,7 +11527,7 @@ msgstr "Связать с контуром" msgid "Select original" msgstr "Выделить _оригинал" -#: ../src/live_effects/parameter/parameter.cpp:141 +#: ../src/live_effects/parameter/parameter.cpp:147 msgid "Change scalar parameter" msgstr "Смена скалярного параметра" @@ -10136,7 +11696,7 @@ msgid "The ID of the object to export" msgstr "Идентификатор экспортируемого объекта" #: ../src/main.cpp:366 ../src/main.cpp:479 -#: ../src/ui/dialog/inkscape-preferences.cpp:1505 +#: ../src/ui/dialog/inkscape-preferences.cpp:1507 msgid "ID" msgstr "ID" @@ -10359,9 +11919,8 @@ msgid "Clo_ne" msgstr "Клон_ы" #: ../src/menus-skeleton.h:79 -#, fuzzy msgid "Select Sa_me" -msgstr "Выберите страницу:" +msgstr "Выбрат_ь одинаковые" #: ../src/menus-skeleton.h:97 msgid "_View" @@ -10416,7 +11975,7 @@ msgid "_Path" msgstr "_Контур" #: ../src/menus-skeleton.h:248 ../src/ui/dialog/find.cpp:77 -#: ../src/ui/dialog/text-edit.cpp:72 +#: ../src/ui/dialog/text-edit.cpp:71 msgid "_Text" msgstr "_Текст" @@ -10767,9 +12326,8 @@ msgid "The nature or genre of the resource" msgstr "В каких единицах производить измерения" #: ../src/rdf.cpp:248 -#, fuzzy msgid "Creator:" -msgstr "Создатель" +msgstr "Создатель:" #: ../src/rdf.cpp:249 #, fuzzy @@ -10779,18 +12337,16 @@ msgstr "" "документа." #: ../src/rdf.cpp:251 -#, fuzzy msgid "Rights:" -msgstr "Правое:" +msgstr "Права:" #: ../src/rdf.cpp:252 msgid "Information about rights held in and over the resource" msgstr "" #: ../src/rdf.cpp:254 -#, fuzzy msgid "Publisher:" -msgstr "Издатель" +msgstr "Издатель:" #: ../src/rdf.cpp:255 #, fuzzy @@ -10798,9 +12354,8 @@ msgid "An entity responsible for making the resource available" msgstr "Название организации, ответственной за публикацию этого документа." #: ../src/rdf.cpp:258 -#, fuzzy msgid "Identifier:" -msgstr "Идентификатор" +msgstr "Идентификатор:" #: ../src/rdf.cpp:259 msgid "An unambiguous reference to the resource within a given context" @@ -10811,16 +12366,15 @@ msgid "A related resource from which the described resource is derived" msgstr "" #: ../src/rdf.cpp:264 -#, fuzzy msgid "Relation:" -msgstr "Смежный" +msgstr "" #: ../src/rdf.cpp:265 #, fuzzy msgid "A related resource" msgstr "Режим смешивания:" -#: ../src/rdf.cpp:267 ../src/ui/dialog/inkscape-preferences.cpp:1857 +#: ../src/rdf.cpp:267 ../src/ui/dialog/inkscape-preferences.cpp:1859 msgid "Language:" msgstr "Язык:" @@ -10841,9 +12395,8 @@ msgstr "Исходный правый край" #. TRANSLATORS: "Coverage": the spatial or temporal characteristics of the content. #. For info, see Appendix D of http://www.w3.org/TR/1998/WD-rdf-schema-19980409/ #: ../src/rdf.cpp:275 -#, fuzzy msgid "Coverage:" -msgstr "Охват" +msgstr "Охват:" #: ../src/rdf.cpp:276 msgid "" @@ -10852,9 +12405,8 @@ msgid "" msgstr "" #: ../src/rdf.cpp:279 -#, fuzzy msgid "Description:" -msgstr "Описание" +msgstr "Описание:" #: ../src/rdf.cpp:280 #, fuzzy @@ -10863,9 +12415,8 @@ msgstr "Краткое описание содержимого документ #. FIXME: need to handle 1 agent per line of input #: ../src/rdf.cpp:284 -#, fuzzy msgid "Contributors:" -msgstr "Соавторы" +msgstr "Соавторы:" #: ../src/rdf.cpp:285 #, fuzzy @@ -10874,9 +12425,8 @@ msgstr "Названия или имена тех, кто внес вклад в #. TRANSLATORS: URL to a page that defines the license for the document #: ../src/rdf.cpp:289 -#, fuzzy msgid "URI:" -msgstr "URI" +msgstr "URI:" #. TRANSLATORS: this is where you put a URL to a page that defines the license #: ../src/rdf.cpp:291 @@ -10886,9 +12436,8 @@ msgstr "URI текста лицензии, применимой к данном #. TRANSLATORS: fragment of XML representing the license of the document #: ../src/rdf.cpp:295 -#, fuzzy msgid "Fragment:" -msgstr "Фрагмент" +msgstr "" #: ../src/rdf.cpp:296 #, fuzzy @@ -10930,7 +12479,9 @@ msgstr "Удалить всё" msgid "Select <b>some objects</b> to group." msgstr "Выделите <b>несколько объектов</b> для группировки." -#: ../src/selection-chemistry.cpp:765 ../src/sp-item-group.cpp:329 +#: ../src/selection-chemistry.cpp:765 +#, fuzzy +msgctxt "Verb" msgid "Group" msgstr "Группа" @@ -11075,105 +12626,105 @@ msgstr "Перенос выделения в слой" msgid "Cannot transform an embedded SVG." msgstr "" -#: ../src/selection-chemistry.cpp:1647 +#: ../src/selection-chemistry.cpp:1649 msgid "Remove transform" msgstr "Убрать трансформацию" -#: ../src/selection-chemistry.cpp:1750 +#: ../src/selection-chemistry.cpp:1752 #, fuzzy msgid "Rotate 90° CCW" msgstr "Повернуть на 90° против часовой стрелки" -#: ../src/selection-chemistry.cpp:1750 +#: ../src/selection-chemistry.cpp:1752 #, fuzzy msgid "Rotate 90° CW" msgstr "Повернуть на 90° по часовой стрелке" -#: ../src/selection-chemistry.cpp:1771 ../src/seltrans.cpp:483 +#: ../src/selection-chemistry.cpp:1773 ../src/seltrans.cpp:483 #: ../src/ui/dialog/transformation.cpp:894 msgid "Rotate" msgstr "Вращение" -#: ../src/selection-chemistry.cpp:2142 +#: ../src/selection-chemistry.cpp:2144 msgid "Rotate by pixels" msgstr "Вращение по пикселам" -#: ../src/selection-chemistry.cpp:2172 ../src/seltrans.cpp:480 +#: ../src/selection-chemistry.cpp:2174 ../src/seltrans.cpp:480 #: ../src/ui/dialog/transformation.cpp:869 #: ../share/extensions/interp_att_g.inx.h:12 msgid "Scale" msgstr "Масштабирование:" -#: ../src/selection-chemistry.cpp:2197 +#: ../src/selection-chemistry.cpp:2199 msgid "Scale by whole factor" msgstr "Масштабирование по целым числам" -#: ../src/selection-chemistry.cpp:2212 +#: ../src/selection-chemistry.cpp:2214 msgid "Move vertically" msgstr "Смещение по вертикали" -#: ../src/selection-chemistry.cpp:2215 +#: ../src/selection-chemistry.cpp:2217 msgid "Move horizontally" msgstr "Смещение по горизонтали" -#: ../src/selection-chemistry.cpp:2218 ../src/selection-chemistry.cpp:2244 +#: ../src/selection-chemistry.cpp:2220 ../src/selection-chemistry.cpp:2246 #: ../src/seltrans.cpp:477 ../src/ui/dialog/transformation.cpp:807 msgid "Move" msgstr "Смещение" -#: ../src/selection-chemistry.cpp:2238 +#: ../src/selection-chemistry.cpp:2240 msgid "Move vertically by pixels" msgstr "Попиксельное смещение по вертикали" -#: ../src/selection-chemistry.cpp:2241 +#: ../src/selection-chemistry.cpp:2243 msgid "Move horizontally by pixels" msgstr "Попиксельное смещение по горизонтали" -#: ../src/selection-chemistry.cpp:2373 +#: ../src/selection-chemistry.cpp:2375 msgid "The selection has no applied path effect." msgstr "В выделении нет примененного контурного эффекта." -#: ../src/selection-chemistry.cpp:2542 ../src/ui/dialog/clonetiler.cpp:2218 +#: ../src/selection-chemistry.cpp:2544 ../src/ui/dialog/clonetiler.cpp:2218 msgid "Select an <b>object</b> to clone." msgstr "Выделите <b>объект</b> для клонирования." -#: ../src/selection-chemistry.cpp:2578 +#: ../src/selection-chemistry.cpp:2580 #, fuzzy msgctxt "Action" msgid "Clone" msgstr "Склонирована" -#: ../src/selection-chemistry.cpp:2594 +#: ../src/selection-chemistry.cpp:2596 msgid "Select <b>clones</b> to relink." msgstr "Выделите <b>клоны</b> для пересоединения" -#: ../src/selection-chemistry.cpp:2601 +#: ../src/selection-chemistry.cpp:2603 msgid "Copy an <b>object</b> to clipboard to relink clones to." msgstr "" "Скопируйте <b>объект</b> в буфер обмена, чтобы затем повторно присоединить к " "нему клоны." -#: ../src/selection-chemistry.cpp:2625 +#: ../src/selection-chemistry.cpp:2627 msgid "<b>No clones to relink</b> in the selection." msgstr "В текущем выделении <b>нет клонов для повторного связывания</b>." -#: ../src/selection-chemistry.cpp:2628 +#: ../src/selection-chemistry.cpp:2630 msgid "Relink clone" msgstr "Повторно связать клон" -#: ../src/selection-chemistry.cpp:2642 +#: ../src/selection-chemistry.cpp:2644 msgid "Select <b>clones</b> to unlink." msgstr "Выделите <b>клоны</b> для отсоединения." -#: ../src/selection-chemistry.cpp:2696 +#: ../src/selection-chemistry.cpp:2698 msgid "<b>No clones to unlink</b> in the selection." msgstr "В выделении нет <b>клонов</b>." -#: ../src/selection-chemistry.cpp:2700 +#: ../src/selection-chemistry.cpp:2702 msgid "Unlink clone" msgstr "Отсоединение клона" -#: ../src/selection-chemistry.cpp:2713 +#: ../src/selection-chemistry.cpp:2715 msgid "" "Select a <b>clone</b> to go to its original. Select a <b>linked offset</b> " "to go to its source. Select a <b>text on path</b> to go to the path. Select " @@ -11184,7 +12735,7 @@ msgstr "" "b>, чтобы перейти к его контуру. Выделите <b>текст в рамке</b>, чтобы " "перейти к рамке." -#: ../src/selection-chemistry.cpp:2746 +#: ../src/selection-chemistry.cpp:2748 msgid "" "<b>Cannot find</b> the object to select (orphaned clone, offset, textpath, " "flowed text?)" @@ -11192,7 +12743,7 @@ msgstr "" "<b>Невозможно найти</b> выбираемый объект (orphaned clone, offset, текст по " "контуру, завёрстанный текст?)" -#: ../src/selection-chemistry.cpp:2752 +#: ../src/selection-chemistry.cpp:2754 msgid "" "The object you're trying to select is <b>not visible</b> (it is in <" "defs>)" @@ -11200,137 +12751,137 @@ msgstr "" "Объект, который вы пытаетесь выделить, <b>невидим</b> (находится в <" "defs>)" -#: ../src/selection-chemistry.cpp:2797 +#: ../src/selection-chemistry.cpp:2799 #, fuzzy msgid "Select <b>one</b> path to clone." msgstr "Выделите <b>объект</b> для клонирования." -#: ../src/selection-chemistry.cpp:2801 +#: ../src/selection-chemistry.cpp:2803 #, fuzzy msgid "Select one <b>path</b> to clone." msgstr "Выделите <b>объект</b> для клонирования." -#: ../src/selection-chemistry.cpp:2857 +#: ../src/selection-chemistry.cpp:2859 msgid "Select <b>object(s)</b> to convert to marker." msgstr "Выделите <b>объект</b> для преобразования в маркер." -#: ../src/selection-chemistry.cpp:2924 +#: ../src/selection-chemistry.cpp:2926 msgid "Objects to marker" msgstr "Объекты в маркер" -#: ../src/selection-chemistry.cpp:2948 +#: ../src/selection-chemistry.cpp:2950 msgid "Select <b>object(s)</b> to convert to guides." msgstr "Выделите <b>объект</b> для преобразования в направляющие." -#: ../src/selection-chemistry.cpp:2971 +#: ../src/selection-chemistry.cpp:2973 msgid "Objects to guides" msgstr "Объекты в направляющие" -#: ../src/selection-chemistry.cpp:3007 +#: ../src/selection-chemistry.cpp:3009 #, fuzzy msgid "Select <b>objects</b> to convert to symbol." msgstr "Выделите <b>объект</b> для преобразования в маркер." -#: ../src/selection-chemistry.cpp:3113 +#: ../src/selection-chemistry.cpp:3115 msgid "Group to symbol" msgstr "Группа в символ" -#: ../src/selection-chemistry.cpp:3132 +#: ../src/selection-chemistry.cpp:3134 #, fuzzy msgid "Select a <b>symbol</b> to extract objects from." msgstr "" "Выделите <b>объект с текстурной заливкой</b> для извлечения из него объектов." -#: ../src/selection-chemistry.cpp:3141 +#: ../src/selection-chemistry.cpp:3143 #, fuzzy msgid "Select only one <b>symbol</b> in Symbol dialog to convert to group." msgstr "Выделите <b>объект</b> для преобразования в направляющие." -#: ../src/selection-chemistry.cpp:3199 +#: ../src/selection-chemistry.cpp:3201 msgid "Group from symbol" msgstr "Группа из символа" -#: ../src/selection-chemistry.cpp:3217 +#: ../src/selection-chemistry.cpp:3219 msgid "Select <b>object(s)</b> to convert to pattern." msgstr "Выделите <b>объект(ы)</b> для преобразования в текстуру." -#: ../src/selection-chemistry.cpp:3307 +#: ../src/selection-chemistry.cpp:3309 msgid "Objects to pattern" msgstr "Объекты в текстуру" -#: ../src/selection-chemistry.cpp:3323 +#: ../src/selection-chemistry.cpp:3325 msgid "Select an <b>object with pattern fill</b> to extract objects from." msgstr "" "Выделите <b>объект с текстурной заливкой</b> для извлечения из него объектов." -#: ../src/selection-chemistry.cpp:3378 +#: ../src/selection-chemistry.cpp:3380 msgid "<b>No pattern fills</b> in the selection." msgstr "В выделении <b>нет текстурной заливки</b>." -#: ../src/selection-chemistry.cpp:3381 +#: ../src/selection-chemistry.cpp:3383 msgid "Pattern to objects" msgstr "Текстура в объекты" -#: ../src/selection-chemistry.cpp:3472 +#: ../src/selection-chemistry.cpp:3474 msgid "Select <b>object(s)</b> to make a bitmap copy." msgstr "Выделите <b>объект(ы)</b> для создания растровой копии." -#: ../src/selection-chemistry.cpp:3476 +#: ../src/selection-chemistry.cpp:3478 msgid "Rendering bitmap..." msgstr "Создается растровая копия..." -#: ../src/selection-chemistry.cpp:3655 +#: ../src/selection-chemistry.cpp:3657 msgid "Create bitmap" msgstr "Создание растровой копии" -#: ../src/selection-chemistry.cpp:3687 +#: ../src/selection-chemistry.cpp:3689 msgid "Select <b>object(s)</b> to create clippath or mask from." msgstr "" "Выделите <b>объект(ы)</b>, из которых будет создан обтравочный контур или " "маска." -#: ../src/selection-chemistry.cpp:3690 +#: ../src/selection-chemistry.cpp:3692 msgid "Select mask object and <b>object(s)</b> to apply clippath or mask to." msgstr "" "Выделите объект-маску и <b>объект(ы)</b>, к которым применить обтравочный " "контур или маску." -#: ../src/selection-chemistry.cpp:3873 +#: ../src/selection-chemistry.cpp:3875 msgid "Set clipping path" msgstr "Установлен обтравочный контур" -#: ../src/selection-chemistry.cpp:3875 +#: ../src/selection-chemistry.cpp:3877 msgid "Set mask" msgstr "Установлена маска" -#: ../src/selection-chemistry.cpp:3890 +#: ../src/selection-chemistry.cpp:3892 msgid "Select <b>object(s)</b> to remove clippath or mask from." msgstr "" "Выделите <b>объект(ы)</b>, с которых нужно снять обтравочный контур или " "маску." -#: ../src/selection-chemistry.cpp:4001 +#: ../src/selection-chemistry.cpp:4003 msgid "Release clipping path" msgstr "Обтравочный контур снят" -#: ../src/selection-chemistry.cpp:4003 +#: ../src/selection-chemistry.cpp:4005 msgid "Release mask" msgstr "Маска снята" -#: ../src/selection-chemistry.cpp:4022 +#: ../src/selection-chemistry.cpp:4024 msgid "Select <b>object(s)</b> to fit canvas to." msgstr "Выделите <b>объект</b>, по размеру которого подогнать холст." #. Fit Page -#: ../src/selection-chemistry.cpp:4042 ../src/verbs.cpp:2905 +#: ../src/selection-chemistry.cpp:4044 ../src/verbs.cpp:2905 msgid "Fit Page to Selection" msgstr "Cтраница до выделения" -#: ../src/selection-chemistry.cpp:4071 ../src/verbs.cpp:2907 +#: ../src/selection-chemistry.cpp:4073 ../src/verbs.cpp:2907 msgid "Fit Page to Drawing" msgstr "Откадрировать холст до рисунка" -#: ../src/selection-chemistry.cpp:4092 ../src/verbs.cpp:2909 +#: ../src/selection-chemistry.cpp:4094 ../src/verbs.cpp:2909 msgid "Fit Page to Selection or Drawing" msgstr "Откадрировать холст до выделения или рисунка" @@ -11496,24 +13047,24 @@ msgstr "" #. TRANSLATORS: don't modify the first ";" #. (it will NOT be displayed as ";" - only the second one will be) -#: ../src/seltrans.cpp:1192 +#: ../src/seltrans.cpp:1199 #, c-format msgid "<b>Skew</b>: %0.2f°; with <b>Ctrl</b> to snap angle" msgstr "<b>Наклон</b>: %0.2f°; <b>Ctrl</b> ограничивает угол" #. TRANSLATORS: don't modify the first ";" #. (it will NOT be displayed as ";" - only the second one will be) -#: ../src/seltrans.cpp:1267 +#: ../src/seltrans.cpp:1274 #, c-format msgid "<b>Rotate</b>: %0.2f°; with <b>Ctrl</b> to snap angle" msgstr "<b>Вращение</b>: %0.2f°; <b>Ctrl</b> ограничивает угол" -#: ../src/seltrans.cpp:1304 +#: ../src/seltrans.cpp:1311 #, c-format msgid "Move <b>center</b> to %s, %s" msgstr "Переместить <b>центр</b> в %s, %s" -#: ../src/seltrans.cpp:1458 +#: ../src/seltrans.cpp:1465 #, c-format msgid "" "<b>Move</b> by %s, %s; with <b>Ctrl</b> to restrict to horizontal/vertical; " @@ -11559,7 +13110,7 @@ msgstr "Арабский" #. Ellipse #: ../src/sp-ellipse.cpp:379 ../src/sp-ellipse.cpp:386 -#: ../src/ui/dialog/inkscape-preferences.cpp:403 +#: ../src/ui/dialog/inkscape-preferences.cpp:405 #: ../src/widgets/pencil-toolbar.cpp:158 msgid "Ellipse" msgstr "Эллипс" @@ -11593,7 +13144,7 @@ msgstr "Текст в рамке" msgid "Linked Flowed Text" msgstr "Текст в рамке" -#: ../src/sp-flowtext.cpp:298 ../src/sp-text.cpp:353 +#: ../src/sp-flowtext.cpp:298 ../src/sp-text.cpp:352 #: ../src/ui/tools/text-tool.cpp:1566 msgid " [truncated]" msgstr " [не уместились]" @@ -11656,6 +13207,10 @@ msgstr "Параметры Звезды" msgid "%d × %d: %s" msgstr "<b>Изображение</b> %d x %d: %s" +#: ../src/sp-item-group.cpp:329 +msgid "Group" +msgstr "Группа" + #: ../src/sp-item-group.cpp:335 ../src/sp-switch.cpp:82 #, fuzzy, c-format msgid "of <b>%d</b> object" @@ -11666,26 +13221,26 @@ msgstr "<b>Группа</b> из <b>%d</b> объекта" msgid "of <b>%d</b> objects" msgstr "<b>Группа</b> из <b>%d</b> объекта" -#: ../src/sp-item.cpp:961 ../src/verbs.cpp:213 +#: ../src/sp-item.cpp:970 ../src/verbs.cpp:213 msgid "Object" msgstr "Объект" -#: ../src/sp-item.cpp:978 +#: ../src/sp-item.cpp:987 #, c-format msgid "%s; <i>clipped</i>" msgstr "%s; <i>под обтравочным контуром</i>" -#: ../src/sp-item.cpp:984 +#: ../src/sp-item.cpp:993 #, c-format msgid "%s; <i>masked</i>" msgstr "%s; <i>маскирован</i>" -#: ../src/sp-item.cpp:994 +#: ../src/sp-item.cpp:1003 #, c-format msgid "%s; <i>filtered (%s)</i>" msgstr "%s; <i>с фильтром (%s)</i>" -#: ../src/sp-item.cpp:996 +#: ../src/sp-item.cpp:1005 #, c-format msgid "%s; <i>filtered</i>" msgstr "%s; <i>с фильтром</i>" @@ -11750,12 +13305,12 @@ msgid "<b>Polyline</b>" msgstr "<b>Полилиния</b>" #. Rectangle -#: ../src/sp-rect.cpp:163 ../src/ui/dialog/inkscape-preferences.cpp:393 +#: ../src/sp-rect.cpp:163 ../src/ui/dialog/inkscape-preferences.cpp:395 msgid "Rectangle" msgstr "Прямоугольник" #. Spiral -#: ../src/sp-spiral.cpp:230 ../src/ui/dialog/inkscape-preferences.cpp:411 +#: ../src/sp-spiral.cpp:230 ../src/ui/dialog/inkscape-preferences.cpp:413 #: ../share/extensions/gcodetools_area.inx.h:11 msgid "Spiral" msgstr "Спираль" @@ -11768,7 +13323,7 @@ msgid "with %3f turns" msgstr "<b>Спираль</b> на %3f оборотов" #. Star -#: ../src/sp-star.cpp:256 ../src/ui/dialog/inkscape-preferences.cpp:407 +#: ../src/sp-star.cpp:256 ../src/ui/dialog/inkscape-preferences.cpp:409 #: ../src/widgets/star-toolbar.cpp:469 msgid "Star" msgstr "Звезда" @@ -11794,7 +13349,7 @@ msgstr "<b>Звезда</b> с %d лучом" msgid "Conditional Group" msgstr "" -#: ../src/sp-text.cpp:326 ../src/verbs.cpp:328 +#: ../src/sp-text.cpp:325 ../src/verbs.cpp:328 #: ../share/extensions/lorem_ipsum.inx.h:8 #: ../share/extensions/replace_font.inx.h:11 #: ../share/extensions/split.inx.h:10 ../share/extensions/text_braille.inx.h:2 @@ -11810,16 +13365,16 @@ msgid "Text" msgstr "Текст" #. TRANSLATORS: For description of font with no name. -#: ../src/sp-text.cpp:343 +#: ../src/sp-text.cpp:342 msgid "<no name found>" msgstr "<нет имени>" -#: ../src/sp-text.cpp:357 +#: ../src/sp-text.cpp:356 #, fuzzy, c-format msgid "on path%s (%s, %s)" msgstr "<b>Текст по контуру</b>%s (%s, %s)" -#: ../src/sp-text.cpp:358 +#: ../src/sp-text.cpp:357 #, fuzzy, c-format msgid "%s (%s, %s)" msgstr "<b>Текст</b>%s (%s, %s)" @@ -12374,7 +13929,7 @@ msgstr "about.svg" #. TRANSLATORS: Put here your name (and other national contributors') #. one per line in the form of: name surname (email). Use \n for newline. -#: ../src/ui/dialog/aboutbox.cpp:416 +#: ../src/ui/dialog/aboutbox.cpp:426 msgid "translator-credits" msgstr "" "Valek Filippov (frob@df.ru), 2000, 2003.\n" @@ -13492,9 +15047,8 @@ msgstr "<b>Лицензия</b>" #. --------------------------------------------------------------- #: ../src/ui/dialog/document-properties.cpp:111 -#, fuzzy msgid "Use antialiasing" -msgstr "Сглаживать" +msgstr "Использовать сглаживание" #: ../src/ui/dialog/document-properties.cpp:111 #, fuzzy @@ -13526,15 +15080,16 @@ msgid "If set, page border shows a shadow on its right and lower side" msgstr "Если включено, кайма холста отбрасывает тень вправо и вниз" #: ../src/ui/dialog/document-properties.cpp:115 -#, fuzzy msgid "Back_ground color:" -msgstr "Цвет фона:" +msgstr "Цвет _фона:" #: ../src/ui/dialog/document-properties.cpp:115 msgid "" "Color of the page background. Note: transparency setting ignored while " "editing but used when exporting to bitmap." msgstr "" +"Цвет фона страницы. Внимание: полупрозрачность игнорируется при работе над " +"иллюстрацией, но учитывается при экспорте." #: ../src/ui/dialog/document-properties.cpp:116 msgid "Border _color:" @@ -13745,9 +15300,8 @@ msgid "<b>Page Size</b>" msgstr "<b>Размер страницы</b>" #: ../src/ui/dialog/document-properties.cpp:326 -#, fuzzy msgid "<b>Display</b>" -msgstr "<b>a</b>" +msgstr "<b>Отображение</b>" #: ../src/ui/dialog/document-properties.cpp:361 msgid "<b>Guides</b>" @@ -13766,9 +15320,8 @@ msgid "<b>Snap to guides</b>" msgstr "<b>Прилипание к направляющим</b>" #: ../src/ui/dialog/document-properties.cpp:385 -#, fuzzy msgid "<b>Miscellaneous</b>" -msgstr "Прочие параметры:" +msgstr "<b>Разное</b>" #. TODO check if this next line was sometimes needed. It being there caused an assertion. #. Inkscape::GC::release(defsRepr); @@ -13804,16 +15357,15 @@ msgstr "Название профиля" #: ../src/ui/dialog/document-properties.cpp:746 msgid "External scripts" -msgstr "Внешние сценарии" +msgstr "Внешние скрипты" #: ../src/ui/dialog/document-properties.cpp:747 -#, fuzzy msgid "Embedded scripts" -msgstr "Удалить сценарий" +msgstr "Встроенные скрипты" #: ../src/ui/dialog/document-properties.cpp:752 msgid "<b>External script files:</b>" -msgstr "<b>Внешние файлы сценариев:</b>" +msgstr "<b>Внешние файлы скриптов:</b>" #: ../src/ui/dialog/document-properties.cpp:754 msgid "Add the current file name or browse for a file" @@ -13821,7 +15373,7 @@ msgstr "" #: ../src/ui/dialog/document-properties.cpp:763 #: ../src/ui/dialog/document-properties.cpp:852 -#: ../src/ui/widget/selected-style.cpp:339 +#: ../src/ui/widget/selected-style.cpp:343 msgid "Remove" msgstr "Удалить" @@ -13830,38 +15382,32 @@ msgid "Filename" msgstr "Имя файла" #: ../src/ui/dialog/document-properties.cpp:841 -#, fuzzy msgid "<b>Embedded script files:</b>" -msgstr "<b>Внешние файлы сценариев:</b>" +msgstr "<b>Встроенные файлы скриптов:</b>" #: ../src/ui/dialog/document-properties.cpp:843 -#, fuzzy msgid "New" -msgstr "Новый" +msgstr "" #: ../src/ui/dialog/document-properties.cpp:922 -#, fuzzy msgid "Script id" -msgstr "Письменность:" +msgstr "ID скрипта" #: ../src/ui/dialog/document-properties.cpp:928 -#, fuzzy msgid "<b>Content:</b>" -msgstr "<b>Экспонента:</b>" +msgstr "<b>Содержание:</b>" #: ../src/ui/dialog/document-properties.cpp:1045 -#, fuzzy msgid "_Save as default" -msgstr "Сохранить как умолчание" +msgstr "_Сохранить и использовать по умолчанию" #: ../src/ui/dialog/document-properties.cpp:1046 msgid "Save this metadata as the default metadata" msgstr "" #: ../src/ui/dialog/document-properties.cpp:1047 -#, fuzzy msgid "Use _default" -msgstr "Используемый системой" +msgstr "_Использовать значения по умолчанию" #: ../src/ui/dialog/document-properties.cpp:1048 msgid "Use the previously saved default metadata here" @@ -13870,18 +15416,16 @@ msgstr "" #. inform the document, so we can undo #: ../src/ui/dialog/document-properties.cpp:1121 msgid "Add external script..." -msgstr "Добавить внешний сценарий" +msgstr "Добавить внешний скрипт..." #: ../src/ui/dialog/document-properties.cpp:1160 -#, fuzzy msgid "Select a script to load" -msgstr "Выберите контур или фигуру" +msgstr "Выберите скрипт для загрузки" #. inform the document, so we can undo #: ../src/ui/dialog/document-properties.cpp:1188 -#, fuzzy msgid "Add embedded script..." -msgstr "Добавить внешний сценарий" +msgstr "Добавить встроенный скрипт..." #. inform the document, so we can undo #: ../src/ui/dialog/document-properties.cpp:1219 @@ -13890,16 +15434,14 @@ msgstr "Удалить внешний сценарий" #. inform the document, so we can undo #: ../src/ui/dialog/document-properties.cpp:1249 -#, fuzzy msgid "Remove embedded script" -msgstr "Удалить сценарий" +msgstr "Удалить встроенный скрипт" #. TODO repr->set_content(_EmbeddedContent.get_buffer()->get_text()); #. inform the document, so we can undo #: ../src/ui/dialog/document-properties.cpp:1346 -#, fuzzy msgid "Edit embedded script" -msgstr "Удалить сценарий" +msgstr "Изменить встроенный скрипт" #: ../src/ui/dialog/document-properties.cpp:1429 msgid "<b>Creation</b>" @@ -13913,10 +15455,9 @@ msgstr "<b>Определённые пользователем сетки</b>" msgid "Remove grid" msgstr "Удаление сетки" -#: ../src/ui/dialog/document-properties.cpp:1756 -#, fuzzy +#: ../src/ui/dialog/document-properties.cpp:1761 msgid "Changed document unit" -msgstr "Безымянный документ %d" +msgstr "Изменена единица измерения" #: ../src/ui/dialog/export.cpp:152 ../src/verbs.cpp:2796 msgid "_Page" @@ -14023,9 +15564,9 @@ msgid "_Height:" msgstr "_Высота:" #: ../src/ui/dialog/export.cpp:309 -#: ../src/ui/dialog/inkscape-preferences.cpp:1434 -#: ../src/ui/dialog/inkscape-preferences.cpp:1438 -#: ../src/ui/dialog/inkscape-preferences.cpp:1462 +#: ../src/ui/dialog/inkscape-preferences.cpp:1436 +#: ../src/ui/dialog/inkscape-preferences.cpp:1440 +#: ../src/ui/dialog/inkscape-preferences.cpp:1464 msgid "dpi" msgstr "dpi" @@ -14346,6 +15887,13 @@ msgstr "" "выход. Последний столбец не зависит от входящих цветов, поэтому его можно " "использовать для коррекции постоянного значения компонента." +#: ../src/ui/dialog/filter-effects-dialog.cpp:549 +#: ../share/extensions/grid_polar.inx.h:4 +#, fuzzy +msgctxt "Label" +msgid "None" +msgstr "Нет" + #: ../src/ui/dialog/filter-effects-dialog.cpp:656 msgid "Image File" msgstr "Файл..." @@ -16202,9 +17750,8 @@ msgstr "" #. Anchor selection widget #: ../src/ui/dialog/grid-arrange-tab.cpp:711 -#, fuzzy msgid "Alignment:" -msgstr "Выключка" +msgstr "Выравнивание:" #. #### Radio buttons to control spacing manually or to fit selection bbox #### #: ../src/ui/dialog/grid-arrange-tab.cpp:720 @@ -16224,13 +17771,11 @@ msgid "Move and/or rotate the guide relative to current settings" msgstr "Сместить и/или повернуть направляющую относительно текущих параметров" #: ../src/ui/dialog/guides.cpp:48 -#, fuzzy msgctxt "Guides" msgid "_X:" msgstr "_X:" #: ../src/ui/dialog/guides.cpp:49 -#, fuzzy msgctxt "Guides" msgid "_Y:" msgstr "_Y:" @@ -16241,7 +17786,7 @@ msgstr "_Метка:" #: ../src/ui/dialog/guides.cpp:50 msgid "Optionally give this guideline a name" -msgstr "" +msgstr "Необязательное название направляющей" #: ../src/ui/dialog/guides.cpp:51 msgid "_Angle:" @@ -16288,30 +17833,30 @@ msgstr "Выделение" msgid "Selection only or whole document" msgstr "Либо только выделение, либо весь документ" -#: ../src/ui/dialog/inkscape-preferences.cpp:181 +#: ../src/ui/dialog/inkscape-preferences.cpp:183 msgid "Show selection cue" msgstr "Показывать пометку выделения" -#: ../src/ui/dialog/inkscape-preferences.cpp:182 +#: ../src/ui/dialog/inkscape-preferences.cpp:184 msgid "" "Whether selected objects display a selection cue (the same as in selector)" msgstr "Будет ли отображаться пометка выделения (как и в Выделителе)" -#: ../src/ui/dialog/inkscape-preferences.cpp:188 +#: ../src/ui/dialog/inkscape-preferences.cpp:190 msgid "Enable gradient editing" msgstr "Включить правку градиентов" -#: ../src/ui/dialog/inkscape-preferences.cpp:189 +#: ../src/ui/dialog/inkscape-preferences.cpp:191 msgid "Whether selected objects display gradient editing controls" msgstr "Будут ли отображаться средства правки градиентов" -#: ../src/ui/dialog/inkscape-preferences.cpp:194 +#: ../src/ui/dialog/inkscape-preferences.cpp:196 msgid "Conversion to guides uses edges instead of bounding box" msgstr "" "При преобразовании в направляющие вместо\n" "площадки (BB) используются края" -#: ../src/ui/dialog/inkscape-preferences.cpp:195 +#: ../src/ui/dialog/inkscape-preferences.cpp:197 msgid "" "Converting an object to guides places these along the object's true edges " "(imitating the object's shape), not along the bounding box" @@ -16319,25 +17864,25 @@ msgstr "" "При преобразовании объекта в направляющие эти направляющие будут размещены " "по настоящим краям объекта, а не по его площадке (BB)" -#: ../src/ui/dialog/inkscape-preferences.cpp:202 +#: ../src/ui/dialog/inkscape-preferences.cpp:204 msgid "Ctrl+click _dot size:" msgstr "Размер точки по Ctrl+щелчок в" -#: ../src/ui/dialog/inkscape-preferences.cpp:202 +#: ../src/ui/dialog/inkscape-preferences.cpp:204 msgid "times current stroke width" msgstr "раза больше текущей обводки" -#: ../src/ui/dialog/inkscape-preferences.cpp:203 +#: ../src/ui/dialog/inkscape-preferences.cpp:205 msgid "Size of dots created with Ctrl+click (relative to current stroke width)" msgstr "" "Размер точек, создаваемых по Ctrl+щелчок (относительно текущей толщины " "штриха)" -#: ../src/ui/dialog/inkscape-preferences.cpp:218 +#: ../src/ui/dialog/inkscape-preferences.cpp:220 msgid "<b>No objects selected</b> to take the style from." msgstr "<b>Нет выделенных объектов</b>, откуда можно было бы взять стиль." -#: ../src/ui/dialog/inkscape-preferences.cpp:227 +#: ../src/ui/dialog/inkscape-preferences.cpp:229 msgid "" "<b>More than one object selected.</b> Cannot take style from multiple " "objects." @@ -16345,23 +17890,23 @@ msgstr "" "<b>Выделено больше одного объекта.</b> Невозможно взять стиль от нескольких " "объектов сразу." -#: ../src/ui/dialog/inkscape-preferences.cpp:260 +#: ../src/ui/dialog/inkscape-preferences.cpp:262 msgid "Style of new objects" msgstr "Стиль новых объектов" -#: ../src/ui/dialog/inkscape-preferences.cpp:262 +#: ../src/ui/dialog/inkscape-preferences.cpp:264 msgid "Last used style" msgstr "Последним использованным стилем" -#: ../src/ui/dialog/inkscape-preferences.cpp:264 +#: ../src/ui/dialog/inkscape-preferences.cpp:266 msgid "Apply the style you last set on an object" msgstr "Применить последний использованный стиль" -#: ../src/ui/dialog/inkscape-preferences.cpp:269 +#: ../src/ui/dialog/inkscape-preferences.cpp:271 msgid "This tool's own style:" msgstr "Собственным стилем инструмента:" -#: ../src/ui/dialog/inkscape-preferences.cpp:273 +#: ../src/ui/dialog/inkscape-preferences.cpp:275 msgid "" "Each tool may store its own style to apply to the newly created objects. Use " "the button below to set it." @@ -16370,64 +17915,64 @@ msgstr "" "объектов. Кнопка внизу устанавливает этот стиль." #. style swatch -#: ../src/ui/dialog/inkscape-preferences.cpp:277 +#: ../src/ui/dialog/inkscape-preferences.cpp:279 msgid "Take from selection" msgstr "Взять от выделения" -#: ../src/ui/dialog/inkscape-preferences.cpp:282 +#: ../src/ui/dialog/inkscape-preferences.cpp:284 msgid "This tool's style of new objects" msgstr "Стиль новых объектов, создаваемых этим инструментом" -#: ../src/ui/dialog/inkscape-preferences.cpp:289 +#: ../src/ui/dialog/inkscape-preferences.cpp:291 msgid "Remember the style of the (first) selected object as this tool's style" msgstr "" "Запомнить стиль (первого) выделенного объекта как стиль данного инструмента" -#: ../src/ui/dialog/inkscape-preferences.cpp:294 +#: ../src/ui/dialog/inkscape-preferences.cpp:296 msgid "Tools" msgstr "Инструменты" -#: ../src/ui/dialog/inkscape-preferences.cpp:297 +#: ../src/ui/dialog/inkscape-preferences.cpp:299 #, fuzzy msgid "Bounding box to use" msgstr "Используемая площадка (BB):" -#: ../src/ui/dialog/inkscape-preferences.cpp:298 +#: ../src/ui/dialog/inkscape-preferences.cpp:300 msgid "Visual bounding box" msgstr "Видимая площадка (BB)" -#: ../src/ui/dialog/inkscape-preferences.cpp:300 +#: ../src/ui/dialog/inkscape-preferences.cpp:302 msgid "This bounding box includes stroke width, markers, filter margins, etc." msgstr "Сюда входит толщина обводки, маркеры, поля фильтра и т.д." -#: ../src/ui/dialog/inkscape-preferences.cpp:301 +#: ../src/ui/dialog/inkscape-preferences.cpp:303 msgid "Geometric bounding box" msgstr "Геометрическая площадка (BB)" -#: ../src/ui/dialog/inkscape-preferences.cpp:303 +#: ../src/ui/dialog/inkscape-preferences.cpp:305 msgid "This bounding box includes only the bare path" msgstr "Сюда входит только сам контур" -#: ../src/ui/dialog/inkscape-preferences.cpp:305 +#: ../src/ui/dialog/inkscape-preferences.cpp:307 #, fuzzy msgid "Conversion to guides" msgstr "Преобразование в направляющие:" -#: ../src/ui/dialog/inkscape-preferences.cpp:306 +#: ../src/ui/dialog/inkscape-preferences.cpp:308 msgid "Keep objects after conversion to guides" msgstr "Сохранять объекты после преобразования" -#: ../src/ui/dialog/inkscape-preferences.cpp:308 +#: ../src/ui/dialog/inkscape-preferences.cpp:310 msgid "" "When converting an object to guides, don't delete the object after the " "conversion" msgstr "После преобразования в направляющие не удалять исходный объект." -#: ../src/ui/dialog/inkscape-preferences.cpp:309 +#: ../src/ui/dialog/inkscape-preferences.cpp:311 msgid "Treat groups as a single object" msgstr "Считать группы единым объектом" -#: ../src/ui/dialog/inkscape-preferences.cpp:311 +#: ../src/ui/dialog/inkscape-preferences.cpp:313 msgid "" "Treat groups as a single object during conversion to guides rather than " "converting each child separately" @@ -16435,104 +17980,110 @@ msgstr "" "Считать группы одним объектом при преобразовании в направляющие, не " "преобразовывать каждый элемент группы отдельно" -#: ../src/ui/dialog/inkscape-preferences.cpp:313 +#: ../src/ui/dialog/inkscape-preferences.cpp:315 msgid "Average all sketches" msgstr "Усреднять все штрихи" -#: ../src/ui/dialog/inkscape-preferences.cpp:314 +#: ../src/ui/dialog/inkscape-preferences.cpp:316 msgid "Width is in absolute units" msgstr "Ширина в абсолютных единицах измерения" -#: ../src/ui/dialog/inkscape-preferences.cpp:315 +#: ../src/ui/dialog/inkscape-preferences.cpp:317 msgid "Select new path" msgstr "Выделять новый контур" -#: ../src/ui/dialog/inkscape-preferences.cpp:316 +#: ../src/ui/dialog/inkscape-preferences.cpp:318 msgid "Don't attach connectors to text objects" msgstr "Не соединяться линиями с текстовыми объектами" #. Selector -#: ../src/ui/dialog/inkscape-preferences.cpp:319 +#: ../src/ui/dialog/inkscape-preferences.cpp:321 msgid "Selector" msgstr "Выделитель" -#: ../src/ui/dialog/inkscape-preferences.cpp:324 +#: ../src/ui/dialog/inkscape-preferences.cpp:326 msgid "When transforming, show" msgstr "При трансформации показывать" -#: ../src/ui/dialog/inkscape-preferences.cpp:325 +#: ../src/ui/dialog/inkscape-preferences.cpp:327 msgid "Objects" msgstr "Объекты" -#: ../src/ui/dialog/inkscape-preferences.cpp:327 +#: ../src/ui/dialog/inkscape-preferences.cpp:329 msgid "Show the actual objects when moving or transforming" msgstr "Показывать объекты полностью при перемещении или трансформации" -#: ../src/ui/dialog/inkscape-preferences.cpp:328 +#: ../src/ui/dialog/inkscape-preferences.cpp:330 msgid "Box outline" msgstr "Рамку" -#: ../src/ui/dialog/inkscape-preferences.cpp:330 +#: ../src/ui/dialog/inkscape-preferences.cpp:332 msgid "Show only a box outline of the objects when moving or transforming" msgstr "" "Показывать только прямоугольную рамку объектов при перемещении или " "трансформации" -#: ../src/ui/dialog/inkscape-preferences.cpp:331 +#: ../src/ui/dialog/inkscape-preferences.cpp:333 msgid "Per-object selection cue" msgstr "Пометка выделенных объектов" #: ../src/ui/dialog/inkscape-preferences.cpp:334 +#, fuzzy +msgctxt "Selection cue" +msgid "None" +msgstr "Нет" + +#: ../src/ui/dialog/inkscape-preferences.cpp:336 msgid "No per-object selection indication" msgstr "Выделенные объекты никак не помечены" -#: ../src/ui/dialog/inkscape-preferences.cpp:335 +#: ../src/ui/dialog/inkscape-preferences.cpp:337 msgid "Mark" msgstr "Метка" -#: ../src/ui/dialog/inkscape-preferences.cpp:337 +#: ../src/ui/dialog/inkscape-preferences.cpp:339 msgid "Each selected object has a diamond mark in the top left corner" msgstr "" "Каждый выделенный объект имеет метку в виде ромбика в левом верхнем углу" -#: ../src/ui/dialog/inkscape-preferences.cpp:338 +#: ../src/ui/dialog/inkscape-preferences.cpp:340 msgid "Box" msgstr "Рамка" -#: ../src/ui/dialog/inkscape-preferences.cpp:340 +#: ../src/ui/dialog/inkscape-preferences.cpp:342 msgid "Each selected object displays its bounding box" msgstr "Каждый выделенный объект помечен пунктирной рамкой" #. Node -#: ../src/ui/dialog/inkscape-preferences.cpp:343 +#: ../src/ui/dialog/inkscape-preferences.cpp:345 msgid "Node" msgstr "Узлы" -#: ../src/ui/dialog/inkscape-preferences.cpp:346 +#: ../src/ui/dialog/inkscape-preferences.cpp:348 msgid "Path outline" msgstr "Абрис контура" -#: ../src/ui/dialog/inkscape-preferences.cpp:347 +#: ../src/ui/dialog/inkscape-preferences.cpp:349 msgid "Path outline color" msgstr "Цвет обводки контура" -#: ../src/ui/dialog/inkscape-preferences.cpp:348 +#: ../src/ui/dialog/inkscape-preferences.cpp:350 msgid "Selects the color used for showing the path outline" msgstr "Выбрать цвет, используемый для отображения абриса контура." -#: ../src/ui/dialog/inkscape-preferences.cpp:349 +#: ../src/ui/dialog/inkscape-preferences.cpp:351 msgid "Always show outline" msgstr "Всегда показывать абрис" -#: ../src/ui/dialog/inkscape-preferences.cpp:350 +#: ../src/ui/dialog/inkscape-preferences.cpp:352 msgid "Show outlines for all paths, not only invisible paths" msgstr "Показывать абрисы для всех контуров, не только невидимых" -#: ../src/ui/dialog/inkscape-preferences.cpp:351 +#: ../src/ui/dialog/inkscape-preferences.cpp:353 msgid "Update outline when dragging nodes" msgstr "Обновлять абрис при перемещении узлов" -#: ../src/ui/dialog/inkscape-preferences.cpp:352 +#: ../src/ui/dialog/inkscape-preferences.cpp:354 msgid "" "Update the outline when dragging or transforming nodes; if this is off, the " "outline will only update when completing a drag" @@ -16540,11 +18091,11 @@ msgstr "" "Обновлять абрис при перетаскивании или трансформации узлов. Если выключено, " "абрисы обновятся лишь по завершении действия." -#: ../src/ui/dialog/inkscape-preferences.cpp:353 +#: ../src/ui/dialog/inkscape-preferences.cpp:355 msgid "Update paths when dragging nodes" msgstr "Обновлять контуры при перемещении узлов" -#: ../src/ui/dialog/inkscape-preferences.cpp:354 +#: ../src/ui/dialog/inkscape-preferences.cpp:356 msgid "" "Update paths when dragging or transforming nodes; if this is off, paths will " "only be updated when completing a drag" @@ -16552,11 +18103,11 @@ msgstr "" "Обновлять контуры при перетаскивании или трансформации узлов. Если " "выключено, контуры обновятся лишь по завершении действия." -#: ../src/ui/dialog/inkscape-preferences.cpp:355 +#: ../src/ui/dialog/inkscape-preferences.cpp:357 msgid "Show path direction on outlines" msgstr "Показывать направление контура на абрисе" -#: ../src/ui/dialog/inkscape-preferences.cpp:356 +#: ../src/ui/dialog/inkscape-preferences.cpp:358 msgid "" "Visualize the direction of selected paths by drawing small arrows in the " "middle of each outline segment" @@ -16564,32 +18115,32 @@ msgstr "" "Показывать направление выделенных контуров при помощи небольших стрелок " "посередине каждого сегмента" -#: ../src/ui/dialog/inkscape-preferences.cpp:357 +#: ../src/ui/dialog/inkscape-preferences.cpp:359 msgid "Show temporary path outline" msgstr "На время показывать абрис" -#: ../src/ui/dialog/inkscape-preferences.cpp:358 +#: ../src/ui/dialog/inkscape-preferences.cpp:360 msgid "When hovering over a path, briefly flash its outline" msgstr "" "Мерцать скелетом контура, когда курсор мыши или иного устройства ввода " "проходит над ним." -#: ../src/ui/dialog/inkscape-preferences.cpp:359 +#: ../src/ui/dialog/inkscape-preferences.cpp:361 msgid "Show temporary outline for selected paths" msgstr "На время показывать абрис выделенных контуров" -#: ../src/ui/dialog/inkscape-preferences.cpp:360 +#: ../src/ui/dialog/inkscape-preferences.cpp:362 msgid "Show temporary outline even when a path is selected for editing" msgstr "" "На время показывать абрис контура, даже если этот контур выделен для " "изменения" -#: ../src/ui/dialog/inkscape-preferences.cpp:362 +#: ../src/ui/dialog/inkscape-preferences.cpp:364 #, fuzzy msgid "_Flash time:" msgstr "Длительность мерцания:" -#: ../src/ui/dialog/inkscape-preferences.cpp:362 +#: ../src/ui/dialog/inkscape-preferences.cpp:364 msgid "" "Specifies how long the path outline will be visible after a mouse-over (in " "milliseconds); specify 0 to have the outline shown until mouse leaves the " @@ -16598,23 +18149,23 @@ msgstr "" "Как долго (мс) должен подсвечиваться контур при прохождении курсора " "инструмента над ним. Ноль означает постоянную подсветку." -#: ../src/ui/dialog/inkscape-preferences.cpp:363 +#: ../src/ui/dialog/inkscape-preferences.cpp:365 msgid "Editing preferences" msgstr "Параметры редактирования" -#: ../src/ui/dialog/inkscape-preferences.cpp:364 +#: ../src/ui/dialog/inkscape-preferences.cpp:366 msgid "Show transform handles for single nodes" msgstr "Показывать рычаги единичных узлов" -#: ../src/ui/dialog/inkscape-preferences.cpp:365 +#: ../src/ui/dialog/inkscape-preferences.cpp:367 msgid "Show transform handles even when only a single node is selected" msgstr "Показывать рычаги единичных узлов, даже если выделен только один узел" -#: ../src/ui/dialog/inkscape-preferences.cpp:366 +#: ../src/ui/dialog/inkscape-preferences.cpp:368 msgid "Deleting nodes preserves shape" msgstr "Сохранять форму объекта при удалении узлов" -#: ../src/ui/dialog/inkscape-preferences.cpp:367 +#: ../src/ui/dialog/inkscape-preferences.cpp:369 msgid "" "Move handles next to deleted nodes to resemble original shape; hold Ctrl to " "get the other behavior" @@ -16623,31 +18174,31 @@ msgstr "" "возможности сохраняла свою форму; при нажатом Ctrl форма не сохраняется" #. Tweak -#: ../src/ui/dialog/inkscape-preferences.cpp:370 +#: ../src/ui/dialog/inkscape-preferences.cpp:372 msgid "Tweak" msgstr "Корректор" -#: ../src/ui/dialog/inkscape-preferences.cpp:371 +#: ../src/ui/dialog/inkscape-preferences.cpp:373 msgid "Object paint style" msgstr "Стиль раскрашивания объекта" #. Zoom -#: ../src/ui/dialog/inkscape-preferences.cpp:376 +#: ../src/ui/dialog/inkscape-preferences.cpp:378 #: ../src/widgets/desktop-widget.cpp:631 msgid "Zoom" msgstr "Лупа" #. Measure -#: ../src/ui/dialog/inkscape-preferences.cpp:381 ../src/verbs.cpp:2678 +#: ../src/ui/dialog/inkscape-preferences.cpp:383 ../src/verbs.cpp:2678 msgctxt "ContextVerb" msgid "Measure" msgstr "Измеритель" -#: ../src/ui/dialog/inkscape-preferences.cpp:383 +#: ../src/ui/dialog/inkscape-preferences.cpp:385 msgid "Ignore first and last points" msgstr "Игнорировать первую и последнюю точки" -#: ../src/ui/dialog/inkscape-preferences.cpp:384 +#: ../src/ui/dialog/inkscape-preferences.cpp:386 msgid "" "The start and end of the measurement tool's control line will not be " "considered for calculating lengths. Only lengths between actual curve " @@ -16655,20 +18206,15 @@ msgid "" msgstr "" #. Shapes -#: ../src/ui/dialog/inkscape-preferences.cpp:387 +#: ../src/ui/dialog/inkscape-preferences.cpp:389 msgid "Shapes" msgstr "Фигуры" -#. Pencil -#: ../src/ui/dialog/inkscape-preferences.cpp:415 -msgid "Pencil" -msgstr "Карандаш" - -#: ../src/ui/dialog/inkscape-preferences.cpp:419 +#: ../src/ui/dialog/inkscape-preferences.cpp:421 msgid "Sketch mode" msgstr "Эскизный режим" -#: ../src/ui/dialog/inkscape-preferences.cpp:421 +#: ../src/ui/dialog/inkscape-preferences.cpp:423 #, fuzzy msgid "" "If on, the sketch result will be the normal average of all sketches made, " @@ -16679,17 +18225,17 @@ msgstr "" "штриховки." #. Pen -#: ../src/ui/dialog/inkscape-preferences.cpp:424 +#: ../src/ui/dialog/inkscape-preferences.cpp:426 #: ../src/ui/dialog/input.cpp:1485 msgid "Pen" msgstr "Перо" #. Calligraphy -#: ../src/ui/dialog/inkscape-preferences.cpp:430 +#: ../src/ui/dialog/inkscape-preferences.cpp:432 msgid "Calligraphy" msgstr "Каллиграфическое перо" -#: ../src/ui/dialog/inkscape-preferences.cpp:434 +#: ../src/ui/dialog/inkscape-preferences.cpp:436 msgid "" "If on, pen width is in absolute units (px) independent of zoom; otherwise " "pen width depends on zoom so that it looks the same at any zoom" @@ -16698,7 +18244,7 @@ msgstr "" "масштаба; в противном случае толщина линии зависит от масштаба и выглядит " "одинаково при любом масштабе" -#: ../src/ui/dialog/inkscape-preferences.cpp:436 +#: ../src/ui/dialog/inkscape-preferences.cpp:438 msgid "" "If on, each newly created object will be selected (deselecting previous " "selection)" @@ -16707,106 +18253,106 @@ msgstr "" "сбросом предыдущего выделения)" #. Text -#: ../src/ui/dialog/inkscape-preferences.cpp:439 ../src/verbs.cpp:2670 +#: ../src/ui/dialog/inkscape-preferences.cpp:441 ../src/verbs.cpp:2670 msgctxt "ContextVerb" msgid "Text" msgstr "Текст" -#: ../src/ui/dialog/inkscape-preferences.cpp:444 +#: ../src/ui/dialog/inkscape-preferences.cpp:446 msgid "Show font samples in the drop-down list" msgstr "Показывать образцы шрифтов в раскрывающемся списке" -#: ../src/ui/dialog/inkscape-preferences.cpp:445 +#: ../src/ui/dialog/inkscape-preferences.cpp:447 msgid "" "Show font samples alongside font names in the drop-down list in Text bar" msgstr "" "Показывать образцы шрифтов рядом с их названиями в раскрывающемся списке" -#: ../src/ui/dialog/inkscape-preferences.cpp:447 +#: ../src/ui/dialog/inkscape-preferences.cpp:449 msgid "Show font substitution warning dialog" msgstr "Показывать диалог подстановки шрифтов" -#: ../src/ui/dialog/inkscape-preferences.cpp:448 +#: ../src/ui/dialog/inkscape-preferences.cpp:450 msgid "" "Show font substitution warning dialog when requested fonts are not available " "on the system" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:451 +#: ../src/ui/dialog/inkscape-preferences.cpp:453 msgid "Pixel" msgstr "Пиксел" -#: ../src/ui/dialog/inkscape-preferences.cpp:451 +#: ../src/ui/dialog/inkscape-preferences.cpp:453 msgid "Pica" msgstr "Пика" -#: ../src/ui/dialog/inkscape-preferences.cpp:451 +#: ../src/ui/dialog/inkscape-preferences.cpp:453 msgid "Millimeter" msgstr "Миллиметр" -#: ../src/ui/dialog/inkscape-preferences.cpp:451 +#: ../src/ui/dialog/inkscape-preferences.cpp:453 msgid "Centimeter" msgstr "Сантиметр" -#: ../src/ui/dialog/inkscape-preferences.cpp:451 +#: ../src/ui/dialog/inkscape-preferences.cpp:453 msgid "Inch" msgstr "Дюйм" -#: ../src/ui/dialog/inkscape-preferences.cpp:451 +#: ../src/ui/dialog/inkscape-preferences.cpp:453 msgid "Em square" msgstr "Em square" #. , _("Ex square"), _("Percent") #. , SP_CSS_UNIT_EX, SP_CSS_UNIT_PERCENT -#: ../src/ui/dialog/inkscape-preferences.cpp:454 +#: ../src/ui/dialog/inkscape-preferences.cpp:456 msgid "Text units" msgstr "Единицы кегля" -#: ../src/ui/dialog/inkscape-preferences.cpp:456 +#: ../src/ui/dialog/inkscape-preferences.cpp:458 msgid "Text size unit type:" msgstr "Единица измерения кегля" -#: ../src/ui/dialog/inkscape-preferences.cpp:457 +#: ../src/ui/dialog/inkscape-preferences.cpp:459 msgid "Set the type of unit used in the text toolbar and text dialogs" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:458 +#: ../src/ui/dialog/inkscape-preferences.cpp:460 msgid "Always output text size in pixels (px)" msgstr "Всегда выводить кегль текста в пикселах (px)" -#: ../src/ui/dialog/inkscape-preferences.cpp:459 +#: ../src/ui/dialog/inkscape-preferences.cpp:461 msgid "" "Always convert the text size units above into pixels (px) before saving to " "file" msgstr "" #. Spray -#: ../src/ui/dialog/inkscape-preferences.cpp:464 +#: ../src/ui/dialog/inkscape-preferences.cpp:466 msgid "Spray" msgstr "Распылитель" #. Eraser -#: ../src/ui/dialog/inkscape-preferences.cpp:469 +#: ../src/ui/dialog/inkscape-preferences.cpp:471 msgid "Eraser" msgstr "Ластик" #. Paint Bucket -#: ../src/ui/dialog/inkscape-preferences.cpp:473 +#: ../src/ui/dialog/inkscape-preferences.cpp:475 msgid "Paint Bucket" msgstr "Сплошная заливка" #. Gradient -#: ../src/ui/dialog/inkscape-preferences.cpp:478 +#: ../src/ui/dialog/inkscape-preferences.cpp:480 #: ../src/widgets/gradient-selector.cpp:152 #: ../src/widgets/gradient-selector.cpp:320 msgid "Gradient" msgstr "Градиентная заливка" -#: ../src/ui/dialog/inkscape-preferences.cpp:480 +#: ../src/ui/dialog/inkscape-preferences.cpp:482 msgid "Prevent sharing of gradient definitions" msgstr "Не разделять определения градиентов между объектами" -#: ../src/ui/dialog/inkscape-preferences.cpp:482 +#: ../src/ui/dialog/inkscape-preferences.cpp:484 msgid "" "When on, shared gradient definitions are automatically forked on change; " "uncheck to allow sharing of gradient definitions so that editing one object " @@ -16817,383 +18363,383 @@ msgstr "" "объектами, так что изменение градиента для одного объекта может сказаться на " "другом объекте." -#: ../src/ui/dialog/inkscape-preferences.cpp:483 +#: ../src/ui/dialog/inkscape-preferences.cpp:485 msgid "Use legacy Gradient Editor" msgstr "Использовать старый редактор градиентов" -#: ../src/ui/dialog/inkscape-preferences.cpp:485 +#: ../src/ui/dialog/inkscape-preferences.cpp:487 msgid "" "When on, the Gradient Edit button in the Fill & Stroke dialog will show the " "legacy Gradient Editor dialog, when off the Gradient Tool will be used" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:488 +#: ../src/ui/dialog/inkscape-preferences.cpp:490 msgid "Linear gradient _angle:" msgstr "_Угол линейного градиента:" -#: ../src/ui/dialog/inkscape-preferences.cpp:489 +#: ../src/ui/dialog/inkscape-preferences.cpp:491 msgid "" "Default angle of new linear gradients in degrees (clockwise from horizontal)" msgstr "" #. Dropper -#: ../src/ui/dialog/inkscape-preferences.cpp:493 +#: ../src/ui/dialog/inkscape-preferences.cpp:495 msgid "Dropper" msgstr "Пипетка" #. Connector -#: ../src/ui/dialog/inkscape-preferences.cpp:498 +#: ../src/ui/dialog/inkscape-preferences.cpp:500 msgid "Connector" msgstr "Соединительные линии" -#: ../src/ui/dialog/inkscape-preferences.cpp:501 +#: ../src/ui/dialog/inkscape-preferences.cpp:503 msgid "If on, connector attachment points will not be shown for text objects" msgstr "" "Если включено, точки соединения линиями не показываются на текстовых объектах" #. LPETool #. disabled, because the LPETool is not finished yet. -#: ../src/ui/dialog/inkscape-preferences.cpp:506 +#: ../src/ui/dialog/inkscape-preferences.cpp:508 #, fuzzy msgid "LPE Tool" msgstr "Геометрические построения" -#: ../src/ui/dialog/inkscape-preferences.cpp:513 +#: ../src/ui/dialog/inkscape-preferences.cpp:515 msgid "Interface" msgstr "Интерфейс" -#: ../src/ui/dialog/inkscape-preferences.cpp:516 +#: ../src/ui/dialog/inkscape-preferences.cpp:518 msgid "System default" msgstr "Используемый системой" -#: ../src/ui/dialog/inkscape-preferences.cpp:516 +#: ../src/ui/dialog/inkscape-preferences.cpp:518 msgid "Albanian (sq)" msgstr "Албанский (sq)" -#: ../src/ui/dialog/inkscape-preferences.cpp:516 +#: ../src/ui/dialog/inkscape-preferences.cpp:518 msgid "Amharic (am)" msgstr "Амхарский (am)" -#: ../src/ui/dialog/inkscape-preferences.cpp:516 +#: ../src/ui/dialog/inkscape-preferences.cpp:518 msgid "Arabic (ar)" msgstr "Арабский (ar)" -#: ../src/ui/dialog/inkscape-preferences.cpp:516 +#: ../src/ui/dialog/inkscape-preferences.cpp:518 msgid "Armenian (hy)" msgstr "Армянский (hy)" -#: ../src/ui/dialog/inkscape-preferences.cpp:516 +#: ../src/ui/dialog/inkscape-preferences.cpp:518 msgid "Azerbaijani (az)" msgstr "Азербайджанский (az)" -#: ../src/ui/dialog/inkscape-preferences.cpp:516 +#: ../src/ui/dialog/inkscape-preferences.cpp:518 msgid "Basque (eu)" msgstr "Баскский (eu)" -#: ../src/ui/dialog/inkscape-preferences.cpp:516 +#: ../src/ui/dialog/inkscape-preferences.cpp:518 msgid "Belarusian (be)" msgstr "Белорусский (be)" -#: ../src/ui/dialog/inkscape-preferences.cpp:517 +#: ../src/ui/dialog/inkscape-preferences.cpp:519 msgid "Bulgarian (bg)" msgstr "Болгарский (bg)" -#: ../src/ui/dialog/inkscape-preferences.cpp:517 +#: ../src/ui/dialog/inkscape-preferences.cpp:519 msgid "Bengali (bn)" msgstr "Бенгальский (bn)" -#: ../src/ui/dialog/inkscape-preferences.cpp:517 +#: ../src/ui/dialog/inkscape-preferences.cpp:519 #, fuzzy msgid "Bengali/Bangladesh (bn_BD)" msgstr "Бенгальский (bn)" -#: ../src/ui/dialog/inkscape-preferences.cpp:517 +#: ../src/ui/dialog/inkscape-preferences.cpp:519 msgid "Breton (br)" msgstr "Бретонский (br)" -#: ../src/ui/dialog/inkscape-preferences.cpp:517 +#: ../src/ui/dialog/inkscape-preferences.cpp:519 msgid "Catalan (ca)" msgstr "Каталонский (ca)" -#: ../src/ui/dialog/inkscape-preferences.cpp:517 +#: ../src/ui/dialog/inkscape-preferences.cpp:519 msgid "Valencian Catalan (ca@valencia)" msgstr "Каталонский, Валенсия (ca@valencia)" -#: ../src/ui/dialog/inkscape-preferences.cpp:517 +#: ../src/ui/dialog/inkscape-preferences.cpp:519 msgid "Chinese/China (zh_CN)" msgstr "Китайский, Китай (zh_CN)" -#: ../src/ui/dialog/inkscape-preferences.cpp:518 +#: ../src/ui/dialog/inkscape-preferences.cpp:520 msgid "Chinese/Taiwan (zh_TW)" msgstr "Китайский, Тайвань (zh_TW)" -#: ../src/ui/dialog/inkscape-preferences.cpp:518 +#: ../src/ui/dialog/inkscape-preferences.cpp:520 msgid "Croatian (hr)" msgstr "Хорватский (hr)" -#: ../src/ui/dialog/inkscape-preferences.cpp:518 +#: ../src/ui/dialog/inkscape-preferences.cpp:520 msgid "Czech (cs)" msgstr "Чешский (cs)" -#: ../src/ui/dialog/inkscape-preferences.cpp:519 +#: ../src/ui/dialog/inkscape-preferences.cpp:521 msgid "Danish (da)" msgstr "Датский (da)" -#: ../src/ui/dialog/inkscape-preferences.cpp:519 +#: ../src/ui/dialog/inkscape-preferences.cpp:521 msgid "Dutch (nl)" msgstr "Голландский (nl)" -#: ../src/ui/dialog/inkscape-preferences.cpp:519 +#: ../src/ui/dialog/inkscape-preferences.cpp:521 msgid "Dzongkha (dz)" msgstr "Дзонг-кэ (dz)" -#: ../src/ui/dialog/inkscape-preferences.cpp:519 +#: ../src/ui/dialog/inkscape-preferences.cpp:521 msgid "German (de)" msgstr "Немецкий (de)" -#: ../src/ui/dialog/inkscape-preferences.cpp:519 +#: ../src/ui/dialog/inkscape-preferences.cpp:521 msgid "Greek (el)" msgstr "Греческий (el)" -#: ../src/ui/dialog/inkscape-preferences.cpp:519 +#: ../src/ui/dialog/inkscape-preferences.cpp:521 msgid "English (en)" msgstr "Английский (en)" -#: ../src/ui/dialog/inkscape-preferences.cpp:519 +#: ../src/ui/dialog/inkscape-preferences.cpp:521 msgid "English/Australia (en_AU)" msgstr "Английский, Австралия (en_AU)" -#: ../src/ui/dialog/inkscape-preferences.cpp:520 +#: ../src/ui/dialog/inkscape-preferences.cpp:522 msgid "English/Canada (en_CA)" msgstr "Английский, Канада (en_CA)" -#: ../src/ui/dialog/inkscape-preferences.cpp:520 +#: ../src/ui/dialog/inkscape-preferences.cpp:522 msgid "English/Great Britain (en_GB)" msgstr "Английский, Великобритания (en_GB)" -#: ../src/ui/dialog/inkscape-preferences.cpp:520 +#: ../src/ui/dialog/inkscape-preferences.cpp:522 msgid "Pig Latin (en_US@piglatin)" msgstr "Поросячья латынь (en_US@piglatin)" -#: ../src/ui/dialog/inkscape-preferences.cpp:521 +#: ../src/ui/dialog/inkscape-preferences.cpp:523 msgid "Esperanto (eo)" msgstr "Эсперанто (eo)" -#: ../src/ui/dialog/inkscape-preferences.cpp:521 +#: ../src/ui/dialog/inkscape-preferences.cpp:523 msgid "Estonian (et)" msgstr "Эстонский (et)" -#: ../src/ui/dialog/inkscape-preferences.cpp:521 +#: ../src/ui/dialog/inkscape-preferences.cpp:523 msgid "Farsi (fa)" msgstr "Фарси (fa)" -#: ../src/ui/dialog/inkscape-preferences.cpp:521 +#: ../src/ui/dialog/inkscape-preferences.cpp:523 msgid "Finnish (fi)" msgstr "Финский (fi)" -#: ../src/ui/dialog/inkscape-preferences.cpp:522 +#: ../src/ui/dialog/inkscape-preferences.cpp:524 msgid "French (fr)" msgstr "Французский (fr)" -#: ../src/ui/dialog/inkscape-preferences.cpp:522 +#: ../src/ui/dialog/inkscape-preferences.cpp:524 msgid "Irish (ga)" msgstr "Ирландский (ga)" -#: ../src/ui/dialog/inkscape-preferences.cpp:522 +#: ../src/ui/dialog/inkscape-preferences.cpp:524 msgid "Galician (gl)" msgstr "Галицийский (gl)" -#: ../src/ui/dialog/inkscape-preferences.cpp:522 +#: ../src/ui/dialog/inkscape-preferences.cpp:524 msgid "Hebrew (he)" msgstr "Иврит (he)" -#: ../src/ui/dialog/inkscape-preferences.cpp:522 +#: ../src/ui/dialog/inkscape-preferences.cpp:524 msgid "Hungarian (hu)" msgstr "Венгерский (hu)" -#: ../src/ui/dialog/inkscape-preferences.cpp:523 +#: ../src/ui/dialog/inkscape-preferences.cpp:525 msgid "Indonesian (id)" msgstr "Индонезийский (id)" -#: ../src/ui/dialog/inkscape-preferences.cpp:523 +#: ../src/ui/dialog/inkscape-preferences.cpp:525 msgid "Italian (it)" msgstr "Итальянский (it)" -#: ../src/ui/dialog/inkscape-preferences.cpp:523 +#: ../src/ui/dialog/inkscape-preferences.cpp:525 msgid "Japanese (ja)" msgstr "Японский (ja)" -#: ../src/ui/dialog/inkscape-preferences.cpp:523 +#: ../src/ui/dialog/inkscape-preferences.cpp:525 msgid "Khmer (km)" msgstr "Кхмерский (km)" -#: ../src/ui/dialog/inkscape-preferences.cpp:523 +#: ../src/ui/dialog/inkscape-preferences.cpp:525 msgid "Kinyarwanda (rw)" msgstr "Руанда (rw)" -#: ../src/ui/dialog/inkscape-preferences.cpp:523 +#: ../src/ui/dialog/inkscape-preferences.cpp:525 msgid "Korean (ko)" msgstr "Корейский (ko)" -#: ../src/ui/dialog/inkscape-preferences.cpp:523 +#: ../src/ui/dialog/inkscape-preferences.cpp:525 msgid "Lithuanian (lt)" msgstr "Литовский (lt)" -#: ../src/ui/dialog/inkscape-preferences.cpp:523 +#: ../src/ui/dialog/inkscape-preferences.cpp:525 #, fuzzy msgid "Latvian (lv)" msgstr "Литовский (lt)" -#: ../src/ui/dialog/inkscape-preferences.cpp:523 +#: ../src/ui/dialog/inkscape-preferences.cpp:525 msgid "Macedonian (mk)" msgstr "Македонский (mk)" -#: ../src/ui/dialog/inkscape-preferences.cpp:524 +#: ../src/ui/dialog/inkscape-preferences.cpp:526 msgid "Mongolian (mn)" msgstr "Монгольский (mn)" -#: ../src/ui/dialog/inkscape-preferences.cpp:524 +#: ../src/ui/dialog/inkscape-preferences.cpp:526 msgid "Nepali (ne)" msgstr "Непальский (ne)" -#: ../src/ui/dialog/inkscape-preferences.cpp:524 +#: ../src/ui/dialog/inkscape-preferences.cpp:526 msgid "Norwegian Bokmål (nb)" msgstr "Норвежский, бокмол (nb)" -#: ../src/ui/dialog/inkscape-preferences.cpp:524 +#: ../src/ui/dialog/inkscape-preferences.cpp:526 msgid "Norwegian Nynorsk (nn)" msgstr "Норвежский, нюнорск (nn)" -#: ../src/ui/dialog/inkscape-preferences.cpp:524 +#: ../src/ui/dialog/inkscape-preferences.cpp:526 msgid "Panjabi (pa)" msgstr "Пенджаби (pa)" -#: ../src/ui/dialog/inkscape-preferences.cpp:525 +#: ../src/ui/dialog/inkscape-preferences.cpp:527 msgid "Polish (pl)" msgstr "Польский (pl)" -#: ../src/ui/dialog/inkscape-preferences.cpp:525 +#: ../src/ui/dialog/inkscape-preferences.cpp:527 msgid "Portuguese (pt)" msgstr "Португальский (pt)" -#: ../src/ui/dialog/inkscape-preferences.cpp:525 +#: ../src/ui/dialog/inkscape-preferences.cpp:527 msgid "Portuguese/Brazil (pt_BR)" msgstr "Португальский, Бразилия (pt_BR)" -#: ../src/ui/dialog/inkscape-preferences.cpp:525 +#: ../src/ui/dialog/inkscape-preferences.cpp:527 msgid "Romanian (ro)" msgstr "Румынский (ro)" -#: ../src/ui/dialog/inkscape-preferences.cpp:525 +#: ../src/ui/dialog/inkscape-preferences.cpp:527 msgid "Russian (ru)" msgstr "Русский (ru)" -#: ../src/ui/dialog/inkscape-preferences.cpp:526 +#: ../src/ui/dialog/inkscape-preferences.cpp:528 msgid "Serbian (sr)" msgstr "Сербский, кириллица (sr)" -#: ../src/ui/dialog/inkscape-preferences.cpp:526 +#: ../src/ui/dialog/inkscape-preferences.cpp:528 msgid "Serbian in Latin script (sr@latin)" msgstr "Сербский, латиница (sr@latin)" -#: ../src/ui/dialog/inkscape-preferences.cpp:526 +#: ../src/ui/dialog/inkscape-preferences.cpp:528 msgid "Slovak (sk)" msgstr "Словацкий (sk)" -#: ../src/ui/dialog/inkscape-preferences.cpp:526 +#: ../src/ui/dialog/inkscape-preferences.cpp:528 msgid "Slovenian (sl)" msgstr "Словенский (sl)" -#: ../src/ui/dialog/inkscape-preferences.cpp:526 +#: ../src/ui/dialog/inkscape-preferences.cpp:528 msgid "Spanish (es)" msgstr "Испанский (es)" -#: ../src/ui/dialog/inkscape-preferences.cpp:526 +#: ../src/ui/dialog/inkscape-preferences.cpp:528 msgid "Spanish/Mexico (es_MX)" msgstr "Испанский, Мексика (es_MX)" -#: ../src/ui/dialog/inkscape-preferences.cpp:527 +#: ../src/ui/dialog/inkscape-preferences.cpp:529 msgid "Swedish (sv)" msgstr "Шведский (sv)" -#: ../src/ui/dialog/inkscape-preferences.cpp:527 +#: ../src/ui/dialog/inkscape-preferences.cpp:529 #, fuzzy -msgid "Telugu (te_IN)" +msgid "Telugu (te)" msgstr "Телугу" -#: ../src/ui/dialog/inkscape-preferences.cpp:527 +#: ../src/ui/dialog/inkscape-preferences.cpp:529 msgid "Thai (th)" msgstr "Тайский (th)" -#: ../src/ui/dialog/inkscape-preferences.cpp:527 +#: ../src/ui/dialog/inkscape-preferences.cpp:529 msgid "Turkish (tr)" msgstr "Турецкий (tr)" -#: ../src/ui/dialog/inkscape-preferences.cpp:527 +#: ../src/ui/dialog/inkscape-preferences.cpp:529 msgid "Ukrainian (uk)" msgstr "Украинский (uk)" -#: ../src/ui/dialog/inkscape-preferences.cpp:527 +#: ../src/ui/dialog/inkscape-preferences.cpp:529 msgid "Vietnamese (vi)" msgstr "Вьетнамский (vi)" -#: ../src/ui/dialog/inkscape-preferences.cpp:559 +#: ../src/ui/dialog/inkscape-preferences.cpp:561 msgid "Language (requires restart):" msgstr "Язык (нужен перезапуск):" -#: ../src/ui/dialog/inkscape-preferences.cpp:560 +#: ../src/ui/dialog/inkscape-preferences.cpp:562 msgid "Set the language for menus and number formats" msgstr "Укажите язык интерфейса и формата чисел" -#: ../src/ui/dialog/inkscape-preferences.cpp:563 -#: ../src/ui/dialog/inkscape-preferences.cpp:648 +#: ../src/ui/dialog/inkscape-preferences.cpp:565 +#: ../src/ui/dialog/inkscape-preferences.cpp:650 msgid "Large" msgstr "Большие" -#: ../src/ui/dialog/inkscape-preferences.cpp:563 -#: ../src/ui/dialog/inkscape-preferences.cpp:648 +#: ../src/ui/dialog/inkscape-preferences.cpp:565 +#: ../src/ui/dialog/inkscape-preferences.cpp:650 msgid "Small" msgstr "Маленькие" -#: ../src/ui/dialog/inkscape-preferences.cpp:563 +#: ../src/ui/dialog/inkscape-preferences.cpp:565 msgid "Smaller" msgstr "Еще меньше" -#: ../src/ui/dialog/inkscape-preferences.cpp:567 +#: ../src/ui/dialog/inkscape-preferences.cpp:569 msgid "Toolbox icon size:" msgstr "Значки панели инструментов:" -#: ../src/ui/dialog/inkscape-preferences.cpp:568 +#: ../src/ui/dialog/inkscape-preferences.cpp:570 msgid "Set the size for the tool icons (requires restart)" msgstr "" "Изменить размер значков в панели инструментов (требует перезапуска программы)" -#: ../src/ui/dialog/inkscape-preferences.cpp:571 +#: ../src/ui/dialog/inkscape-preferences.cpp:573 msgid "Control bar icon size:" msgstr "Значки панели параметров:" -#: ../src/ui/dialog/inkscape-preferences.cpp:572 +#: ../src/ui/dialog/inkscape-preferences.cpp:574 msgid "" "Set the size for the icons in tools' control bars to use (requires restart)" msgstr "" "Изменить размер значков в панели команд (требует перезапуска программы)" -#: ../src/ui/dialog/inkscape-preferences.cpp:575 +#: ../src/ui/dialog/inkscape-preferences.cpp:577 msgid "Secondary toolbar icon size:" msgstr "Значки второй панели:" -#: ../src/ui/dialog/inkscape-preferences.cpp:576 +#: ../src/ui/dialog/inkscape-preferences.cpp:578 msgid "" "Set the size for the icons in secondary toolbars to use (requires restart)" msgstr "" "Изменить размер значков в панели параметров инструментов (требует " "перезапуска программы)" -#: ../src/ui/dialog/inkscape-preferences.cpp:579 +#: ../src/ui/dialog/inkscape-preferences.cpp:581 msgid "Work-around color sliders not drawing" msgstr "Попытаться исправить ползунок альфа-канала" -#: ../src/ui/dialog/inkscape-preferences.cpp:581 +#: ../src/ui/dialog/inkscape-preferences.cpp:583 msgid "" "When on, will attempt to work around bugs in certain GTK themes drawing " "color sliders" @@ -17201,27 +18747,27 @@ msgstr "" "При использовании некоторых тем GTK+ ползунок альфа-канал замирает на " "отметке 244. Inkscape может попытаться исправить это." -#: ../src/ui/dialog/inkscape-preferences.cpp:586 +#: ../src/ui/dialog/inkscape-preferences.cpp:588 msgid "Clear list" msgstr "Очистить список" -#: ../src/ui/dialog/inkscape-preferences.cpp:589 +#: ../src/ui/dialog/inkscape-preferences.cpp:591 #, fuzzy msgid "Maximum documents in Open _Recent:" msgstr "Недавних документов в меню:" -#: ../src/ui/dialog/inkscape-preferences.cpp:590 +#: ../src/ui/dialog/inkscape-preferences.cpp:592 msgid "" "Set the maximum length of the Open Recent list in the File menu, or clear " "the list" msgstr "Сколько недавно открывавшихся документов помнить" -#: ../src/ui/dialog/inkscape-preferences.cpp:593 +#: ../src/ui/dialog/inkscape-preferences.cpp:595 #, fuzzy msgid "_Zoom correction factor (in %):" msgstr "Масштаб видимой страницы (%):" -#: ../src/ui/dialog/inkscape-preferences.cpp:594 +#: ../src/ui/dialog/inkscape-preferences.cpp:596 msgid "" "Adjust the slider until the length of the ruler on your screen matches its " "real length. This information is used when zooming to 1:1, 1:2, etc., to " @@ -17231,11 +18777,11 @@ msgstr "" "деления на линейке и на экране совпадают. После этого масштаб отображения " "документа 1:1 будет соответствовать реальному." -#: ../src/ui/dialog/inkscape-preferences.cpp:597 +#: ../src/ui/dialog/inkscape-preferences.cpp:599 msgid "Enable dynamic relayout for incomplete sections" msgstr "Динамическое размещение недоработанных частей интерфейса" -#: ../src/ui/dialog/inkscape-preferences.cpp:599 +#: ../src/ui/dialog/inkscape-preferences.cpp:601 msgid "" "When on, will allow dynamic layout of components that are not completely " "finished being refactored" @@ -17244,12 +18790,12 @@ msgstr "" "частей интерфейса" #. show infobox -#: ../src/ui/dialog/inkscape-preferences.cpp:602 +#: ../src/ui/dialog/inkscape-preferences.cpp:604 #, fuzzy msgid "Show filter primitives infobox (requires restart)" msgstr "Показывать справку по примитивам фильтра" -#: ../src/ui/dialog/inkscape-preferences.cpp:604 +#: ../src/ui/dialog/inkscape-preferences.cpp:606 msgid "" "Show icons and descriptions for the filter primitives available at the " "filter effects dialog" @@ -17257,133 +18803,139 @@ msgstr "" "Показывать значки и описания для каждого примитива фильтров в диалоге " "фильтров эффектов" -#: ../src/ui/dialog/inkscape-preferences.cpp:607 -#: ../src/ui/dialog/inkscape-preferences.cpp:615 +#: ../src/ui/dialog/inkscape-preferences.cpp:609 +#: ../src/ui/dialog/inkscape-preferences.cpp:617 #, fuzzy msgid "Icons only" msgstr "Цвет" -#: ../src/ui/dialog/inkscape-preferences.cpp:607 -#: ../src/ui/dialog/inkscape-preferences.cpp:615 +#: ../src/ui/dialog/inkscape-preferences.cpp:609 +#: ../src/ui/dialog/inkscape-preferences.cpp:617 #, fuzzy msgid "Text only" msgstr "Импорт текстовых файлов" -#: ../src/ui/dialog/inkscape-preferences.cpp:607 -#: ../src/ui/dialog/inkscape-preferences.cpp:615 +#: ../src/ui/dialog/inkscape-preferences.cpp:609 +#: ../src/ui/dialog/inkscape-preferences.cpp:617 #, fuzzy msgid "Icons and text" msgstr "Внутри и снаружи" -#: ../src/ui/dialog/inkscape-preferences.cpp:612 +#: ../src/ui/dialog/inkscape-preferences.cpp:614 #, fuzzy msgid "Dockbar style (requires restart):" msgstr "Язык (нужен перезапуск):" -#: ../src/ui/dialog/inkscape-preferences.cpp:613 +#: ../src/ui/dialog/inkscape-preferences.cpp:615 msgid "" "Selects whether the vertical bars on the dockbar will show text labels, " "icons, or both" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:620 +#: ../src/ui/dialog/inkscape-preferences.cpp:622 #, fuzzy msgid "Switcher style (requires restart):" msgstr "(требует перезапуска программы)" -#: ../src/ui/dialog/inkscape-preferences.cpp:621 +#: ../src/ui/dialog/inkscape-preferences.cpp:623 msgid "" "Selects whether the dockbar switcher will show text labels, icons, or both" msgstr "" #. Windows -#: ../src/ui/dialog/inkscape-preferences.cpp:625 +#: ../src/ui/dialog/inkscape-preferences.cpp:627 msgid "Save and restore window geometry for each document" msgstr "Запоминать и использовать геометрию окна для каждого документа" -#: ../src/ui/dialog/inkscape-preferences.cpp:626 +#: ../src/ui/dialog/inkscape-preferences.cpp:628 msgid "Remember and use last window's geometry" msgstr "Запоминать и использовать геометрию последнего окна" -#: ../src/ui/dialog/inkscape-preferences.cpp:627 +#: ../src/ui/dialog/inkscape-preferences.cpp:629 msgid "Don't save window geometry" msgstr "Не запоминать геометрию окон" -#: ../src/ui/dialog/inkscape-preferences.cpp:629 +#: ../src/ui/dialog/inkscape-preferences.cpp:631 msgid "Save and restore dialogs status" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:630 -#: ../src/ui/dialog/inkscape-preferences.cpp:666 +#: ../src/ui/dialog/inkscape-preferences.cpp:632 +#: ../src/ui/dialog/inkscape-preferences.cpp:668 msgid "Don't save dialogs status" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:632 -#: ../src/ui/dialog/inkscape-preferences.cpp:674 +#: ../src/ui/dialog/inkscape-preferences.cpp:634 +#: ../src/ui/dialog/inkscape-preferences.cpp:676 msgid "Dockable" msgstr "Прикрепляются к правому краю окна" -#: ../src/ui/dialog/inkscape-preferences.cpp:636 +#: ../src/ui/dialog/inkscape-preferences.cpp:638 msgid "Native open/save dialogs" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:637 +#: ../src/ui/dialog/inkscape-preferences.cpp:639 msgid "GTK open/save dialogs" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:639 +#: ../src/ui/dialog/inkscape-preferences.cpp:641 msgid "Dialogs are hidden in taskbar" msgstr "Диалоги не видны на панели задач" -#: ../src/ui/dialog/inkscape-preferences.cpp:640 +#: ../src/ui/dialog/inkscape-preferences.cpp:642 #, fuzzy msgid "Save and restore documents viewport" msgstr "Запоминать и использовать геометрию окна для каждого документа" -#: ../src/ui/dialog/inkscape-preferences.cpp:641 +#: ../src/ui/dialog/inkscape-preferences.cpp:643 msgid "Zoom when window is resized" msgstr "Масштабировать рисунок при изменении размеров окна" -#: ../src/ui/dialog/inkscape-preferences.cpp:642 +#: ../src/ui/dialog/inkscape-preferences.cpp:644 msgid "Show close button on dialogs" msgstr "Показывать кнопку «Закрыть» во всех диалогах" #: ../src/ui/dialog/inkscape-preferences.cpp:645 +#, fuzzy +msgctxt "Dialog on top" +msgid "None" +msgstr "Нет" + +#: ../src/ui/dialog/inkscape-preferences.cpp:647 msgid "Aggressive" msgstr "Настойчивый" -#: ../src/ui/dialog/inkscape-preferences.cpp:648 +#: ../src/ui/dialog/inkscape-preferences.cpp:650 #, fuzzy msgid "Maximized" msgstr "С оптимизацией" -#: ../src/ui/dialog/inkscape-preferences.cpp:652 +#: ../src/ui/dialog/inkscape-preferences.cpp:654 #, fuzzy msgid "Default window size:" msgstr "Параметры сетки по умолчанию" -#: ../src/ui/dialog/inkscape-preferences.cpp:653 +#: ../src/ui/dialog/inkscape-preferences.cpp:655 #, fuzzy msgid "Set the default window size" msgstr "Создание обычного градиента" -#: ../src/ui/dialog/inkscape-preferences.cpp:656 +#: ../src/ui/dialog/inkscape-preferences.cpp:658 #, fuzzy msgid "Saving window geometry (size and position)" msgstr "Запоминание геометрии окна (размера и положения)" -#: ../src/ui/dialog/inkscape-preferences.cpp:658 +#: ../src/ui/dialog/inkscape-preferences.cpp:660 msgid "Let the window manager determine placement of all windows" msgstr "Пусть оконный менеджер сам определяет располжение окон" -#: ../src/ui/dialog/inkscape-preferences.cpp:660 +#: ../src/ui/dialog/inkscape-preferences.cpp:662 msgid "" "Remember and use the last window's geometry (saves geometry to user " "preferences)" msgstr "" "Запоминать (в параметрах программы) и использовать геометрию последнего окна" -#: ../src/ui/dialog/inkscape-preferences.cpp:662 +#: ../src/ui/dialog/inkscape-preferences.cpp:664 msgid "" "Save and restore window geometry for each document (saves geometry in the " "document)" @@ -17391,83 +18943,83 @@ msgstr "" "Запоминать (в параметрах документа) и использовать геометрию окна каждого " "документа" -#: ../src/ui/dialog/inkscape-preferences.cpp:664 +#: ../src/ui/dialog/inkscape-preferences.cpp:666 #, fuzzy msgid "Saving dialogs status" msgstr "Показывать диалог при запуске" -#: ../src/ui/dialog/inkscape-preferences.cpp:668 +#: ../src/ui/dialog/inkscape-preferences.cpp:670 msgid "" "Save and restore dialogs status (the last open windows dialogs are saved " "when it closes)" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:672 +#: ../src/ui/dialog/inkscape-preferences.cpp:674 #, fuzzy msgid "Dialog behavior (requires restart)" msgstr "Поведение диалогов (требует перезапуска программы)" -#: ../src/ui/dialog/inkscape-preferences.cpp:678 +#: ../src/ui/dialog/inkscape-preferences.cpp:680 #, fuzzy msgid "Desktop integration" msgstr "Назначение" -#: ../src/ui/dialog/inkscape-preferences.cpp:680 +#: ../src/ui/dialog/inkscape-preferences.cpp:682 msgid "Use Windows like open and save dialogs" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:682 +#: ../src/ui/dialog/inkscape-preferences.cpp:684 msgid "Use GTK open and save dialogs " msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:686 +#: ../src/ui/dialog/inkscape-preferences.cpp:688 msgid "Dialogs on top:" msgstr "Способ размещения диалогов поверх окна:" -#: ../src/ui/dialog/inkscape-preferences.cpp:689 +#: ../src/ui/dialog/inkscape-preferences.cpp:691 msgid "Dialogs are treated as regular windows" msgstr "Диалоги рассматриваются как обычные окна" -#: ../src/ui/dialog/inkscape-preferences.cpp:691 +#: ../src/ui/dialog/inkscape-preferences.cpp:693 msgid "Dialogs stay on top of document windows" msgstr "Диалоги остаются поверх окон с документами" -#: ../src/ui/dialog/inkscape-preferences.cpp:693 +#: ../src/ui/dialog/inkscape-preferences.cpp:695 msgid "Same as Normal but may work better with some window managers" msgstr "" "То же, что и «Нормальный», но может лучше работать с некоторыми оконными " "менеджерами" -#: ../src/ui/dialog/inkscape-preferences.cpp:696 +#: ../src/ui/dialog/inkscape-preferences.cpp:698 #, fuzzy msgid "Dialog Transparency" msgstr "Прозрачность диалога:" -#: ../src/ui/dialog/inkscape-preferences.cpp:698 +#: ../src/ui/dialog/inkscape-preferences.cpp:700 #, fuzzy msgid "_Opacity when focused:" msgstr "Непрозрачность в фокусе:" -#: ../src/ui/dialog/inkscape-preferences.cpp:700 +#: ../src/ui/dialog/inkscape-preferences.cpp:702 #, fuzzy msgid "Opacity when _unfocused:" msgstr "Непрозрачность вне фокуса:" -#: ../src/ui/dialog/inkscape-preferences.cpp:702 +#: ../src/ui/dialog/inkscape-preferences.cpp:704 #, fuzzy msgid "_Time of opacity change animation:" msgstr "Длительность анимации:" -#: ../src/ui/dialog/inkscape-preferences.cpp:705 +#: ../src/ui/dialog/inkscape-preferences.cpp:707 #, fuzzy msgid "Miscellaneous" msgstr "Прочие параметры:" -#: ../src/ui/dialog/inkscape-preferences.cpp:708 +#: ../src/ui/dialog/inkscape-preferences.cpp:710 msgid "Whether dialog windows are to be hidden in the window manager taskbar" msgstr "Убирать ли диалоговые окна из панели задач оконного менеджера" -#: ../src/ui/dialog/inkscape-preferences.cpp:711 +#: ../src/ui/dialog/inkscape-preferences.cpp:713 msgid "" "Zoom drawing when document window is resized, to keep the same area visible " "(this is the default which can be changed in any window using the button " @@ -17477,116 +19029,115 @@ msgstr "" "область (для каждого окна это можно изменить с помощью кнопки над правой " "полосой прокрутки)" -#: ../src/ui/dialog/inkscape-preferences.cpp:713 +#: ../src/ui/dialog/inkscape-preferences.cpp:715 msgid "" "Save documents viewport (zoom and panning position). Useful to turn off when " "sharing version controlled files." msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:715 +#: ../src/ui/dialog/inkscape-preferences.cpp:717 msgid "Whether dialog windows have a close button (requires restart)" msgstr "Отображается ли в диалогах кнопка «Закрыть»" -#: ../src/ui/dialog/inkscape-preferences.cpp:716 +#: ../src/ui/dialog/inkscape-preferences.cpp:718 msgid "Windows" msgstr "Окна" #. Grids -#: ../src/ui/dialog/inkscape-preferences.cpp:719 +#: ../src/ui/dialog/inkscape-preferences.cpp:721 msgid "Line color when zooming out" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:722 +#: ../src/ui/dialog/inkscape-preferences.cpp:724 #, fuzzy msgid "The gridlines will be shown in minor grid line color" msgstr "" "При просмотре на большом удалении основные линии сетки будут отображаться " "обычным цветом." -#: ../src/ui/dialog/inkscape-preferences.cpp:724 +#: ../src/ui/dialog/inkscape-preferences.cpp:726 #, fuzzy msgid "The gridlines will be shown in major grid line color" msgstr "" "При просмотре на большом удалении основные линии сетки будут отображаться " "обычным цветом." -#: ../src/ui/dialog/inkscape-preferences.cpp:726 +#: ../src/ui/dialog/inkscape-preferences.cpp:728 msgid "Default grid settings" msgstr "Параметры сетки по умолчанию" -#: ../src/ui/dialog/inkscape-preferences.cpp:732 -#: ../src/ui/dialog/inkscape-preferences.cpp:757 +#: ../src/ui/dialog/inkscape-preferences.cpp:734 +#: ../src/ui/dialog/inkscape-preferences.cpp:759 msgid "Grid units:" msgstr "Единицы сетки:" -#: ../src/ui/dialog/inkscape-preferences.cpp:737 -#: ../src/ui/dialog/inkscape-preferences.cpp:762 +#: ../src/ui/dialog/inkscape-preferences.cpp:739 +#: ../src/ui/dialog/inkscape-preferences.cpp:764 msgid "Origin X:" msgstr "Точка отсчета по X:" -#: ../src/ui/dialog/inkscape-preferences.cpp:738 -#: ../src/ui/dialog/inkscape-preferences.cpp:763 +#: ../src/ui/dialog/inkscape-preferences.cpp:740 +#: ../src/ui/dialog/inkscape-preferences.cpp:765 msgid "Origin Y:" msgstr "Точка отсчета по Y:" -#: ../src/ui/dialog/inkscape-preferences.cpp:743 +#: ../src/ui/dialog/inkscape-preferences.cpp:745 msgid "Spacing X:" msgstr "Интервал по X:" -#: ../src/ui/dialog/inkscape-preferences.cpp:744 -#: ../src/ui/dialog/inkscape-preferences.cpp:766 +#: ../src/ui/dialog/inkscape-preferences.cpp:746 +#: ../src/ui/dialog/inkscape-preferences.cpp:768 msgid "Spacing Y:" msgstr "Интервал по Y:" -#: ../src/ui/dialog/inkscape-preferences.cpp:746 -#: ../src/ui/dialog/inkscape-preferences.cpp:747 -#: ../src/ui/dialog/inkscape-preferences.cpp:771 -#: ../src/ui/dialog/inkscape-preferences.cpp:772 -#, fuzzy +#: ../src/ui/dialog/inkscape-preferences.cpp:748 +#: ../src/ui/dialog/inkscape-preferences.cpp:749 +#: ../src/ui/dialog/inkscape-preferences.cpp:773 +#: ../src/ui/dialog/inkscape-preferences.cpp:774 msgid "Minor grid line color:" -msgstr "Цвет основных линий сетки:" +msgstr "Цвет дополнительных линий сетки:" -#: ../src/ui/dialog/inkscape-preferences.cpp:747 -#: ../src/ui/dialog/inkscape-preferences.cpp:772 +#: ../src/ui/dialog/inkscape-preferences.cpp:749 +#: ../src/ui/dialog/inkscape-preferences.cpp:774 msgid "Color used for normal grid lines" msgstr "Цвет обычных линий сетки" -#: ../src/ui/dialog/inkscape-preferences.cpp:748 -#: ../src/ui/dialog/inkscape-preferences.cpp:749 -#: ../src/ui/dialog/inkscape-preferences.cpp:773 -#: ../src/ui/dialog/inkscape-preferences.cpp:774 +#: ../src/ui/dialog/inkscape-preferences.cpp:750 +#: ../src/ui/dialog/inkscape-preferences.cpp:751 +#: ../src/ui/dialog/inkscape-preferences.cpp:775 +#: ../src/ui/dialog/inkscape-preferences.cpp:776 msgid "Major grid line color:" msgstr "Цвет основных линий сетки:" -#: ../src/ui/dialog/inkscape-preferences.cpp:749 -#: ../src/ui/dialog/inkscape-preferences.cpp:774 +#: ../src/ui/dialog/inkscape-preferences.cpp:751 +#: ../src/ui/dialog/inkscape-preferences.cpp:776 msgid "Color used for major (highlighted) grid lines" msgstr "Цвет основных линий сетки" -#: ../src/ui/dialog/inkscape-preferences.cpp:751 -#: ../src/ui/dialog/inkscape-preferences.cpp:776 +#: ../src/ui/dialog/inkscape-preferences.cpp:753 +#: ../src/ui/dialog/inkscape-preferences.cpp:778 msgid "Major grid line every:" msgstr "Основная линия сетки каждые:" -#: ../src/ui/dialog/inkscape-preferences.cpp:752 +#: ../src/ui/dialog/inkscape-preferences.cpp:754 msgid "Show dots instead of lines" msgstr "Показывать точки вместо линий" -#: ../src/ui/dialog/inkscape-preferences.cpp:753 +#: ../src/ui/dialog/inkscape-preferences.cpp:755 msgid "If set, display dots at gridpoints instead of gridlines" msgstr "" "Если включено, сетка отображается лишь точками пересечения ее линий, а не " "самими линиями" -#: ../src/ui/dialog/inkscape-preferences.cpp:834 +#: ../src/ui/dialog/inkscape-preferences.cpp:836 msgid "Input/Output" msgstr "Ввод и вывод" -#: ../src/ui/dialog/inkscape-preferences.cpp:837 +#: ../src/ui/dialog/inkscape-preferences.cpp:839 msgid "Use current directory for \"Save As ...\"" msgstr "Использовать текущий каталог при сохранении файла под другим именем" -#: ../src/ui/dialog/inkscape-preferences.cpp:839 +#: ../src/ui/dialog/inkscape-preferences.cpp:841 #, fuzzy msgid "" "When this option is on, the \"Save as...\" and \"Save a Copy\" dialogs will " @@ -17597,11 +19148,11 @@ msgstr "" "открываться в каталоге, где сохранён текущий файл. Если выключено, будет " "открываться каталог, в котором был в последний раз сохранён какой-либо файл." -#: ../src/ui/dialog/inkscape-preferences.cpp:841 +#: ../src/ui/dialog/inkscape-preferences.cpp:843 msgid "Add label comments to printing output" msgstr "Добавлять метки в виде комментариев при выводе на печать" -#: ../src/ui/dialog/inkscape-preferences.cpp:843 +#: ../src/ui/dialog/inkscape-preferences.cpp:845 msgid "" "When on, a comment will be added to the raw print output, marking the " "rendered output for an object with its label" @@ -17609,27 +19160,27 @@ msgstr "" "С этой опцией при выводе на печать будут добавляться комментарии, содержащие " "метки для каждого объекта" -#: ../src/ui/dialog/inkscape-preferences.cpp:845 +#: ../src/ui/dialog/inkscape-preferences.cpp:847 #, fuzzy msgid "Add default metadata to new documents" msgstr "Изменить сведения о документе, сохраняемые вместе с ним" -#: ../src/ui/dialog/inkscape-preferences.cpp:847 +#: ../src/ui/dialog/inkscape-preferences.cpp:849 msgid "" "Add default metadata to new documents. Default metadata can be set from " "Document Properties->Metadata." msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:851 +#: ../src/ui/dialog/inkscape-preferences.cpp:853 msgid "_Grab sensitivity:" msgstr "_Чувствительность захвата:" -#: ../src/ui/dialog/inkscape-preferences.cpp:851 +#: ../src/ui/dialog/inkscape-preferences.cpp:853 #, fuzzy msgid "pixels (requires restart)" msgstr "(требует перезапуска программы)" -#: ../src/ui/dialog/inkscape-preferences.cpp:852 +#: ../src/ui/dialog/inkscape-preferences.cpp:854 msgid "" "How close on the screen you need to be to an object to be able to grab it " "with mouse (in screen pixels)" @@ -17637,38 +19188,38 @@ msgstr "" "Насколько близко (в пикселах) нужно подвести курсор мыши к объекту, чтобы " "ухватить его мышью" -#: ../src/ui/dialog/inkscape-preferences.cpp:854 +#: ../src/ui/dialog/inkscape-preferences.cpp:856 msgid "_Click/drag threshold:" msgstr "Порог _щелчка/перетаскивания:" -#: ../src/ui/dialog/inkscape-preferences.cpp:854 -#: ../src/ui/dialog/inkscape-preferences.cpp:1196 -#: ../src/ui/dialog/inkscape-preferences.cpp:1200 -#: ../src/ui/dialog/inkscape-preferences.cpp:1210 +#: ../src/ui/dialog/inkscape-preferences.cpp:856 +#: ../src/ui/dialog/inkscape-preferences.cpp:1198 +#: ../src/ui/dialog/inkscape-preferences.cpp:1202 +#: ../src/ui/dialog/inkscape-preferences.cpp:1212 msgid "pixels" msgstr "пикселов" -#: ../src/ui/dialog/inkscape-preferences.cpp:855 +#: ../src/ui/dialog/inkscape-preferences.cpp:857 msgid "" "Maximum mouse drag (in screen pixels) which is considered a click, not a drag" msgstr "" "Максимальное количество пикселов, перетаскивание на которое\n" "воспринимается как щелчок, а не как перетаскивание" -#: ../src/ui/dialog/inkscape-preferences.cpp:858 +#: ../src/ui/dialog/inkscape-preferences.cpp:860 msgid "_Handle size:" msgstr "_Размер рычагов:" -#: ../src/ui/dialog/inkscape-preferences.cpp:859 +#: ../src/ui/dialog/inkscape-preferences.cpp:861 #, fuzzy msgid "Set the relative size of node handles" msgstr "Смещение рычагов узла" -#: ../src/ui/dialog/inkscape-preferences.cpp:861 +#: ../src/ui/dialog/inkscape-preferences.cpp:863 msgid "Use pressure-sensitive tablet (requires restart)" msgstr "Использовать графический планшет (требует перезапуска)" -#: ../src/ui/dialog/inkscape-preferences.cpp:863 +#: ../src/ui/dialog/inkscape-preferences.cpp:865 msgid "" "Use the capabilities of a tablet or other pressure-sensitive device. Disable " "this only if you have problems with the tablet (you can still use it as a " @@ -17678,27 +19229,27 @@ msgstr "" "распознающего силу нажатия. Отключайте этот параметр только при " "возникновении неполадок с устройством. Мышь по-прежнему будет доступна." -#: ../src/ui/dialog/inkscape-preferences.cpp:865 +#: ../src/ui/dialog/inkscape-preferences.cpp:867 msgid "Switch tool based on tablet device (requires restart)" msgstr "" "Менять инструмент в зависимости от активного устройства\n" "графического планшета (требует перезапуска)" -#: ../src/ui/dialog/inkscape-preferences.cpp:867 +#: ../src/ui/dialog/inkscape-preferences.cpp:869 msgid "" "Change tool as different devices are used on the tablet (pen, eraser, mouse)" msgstr "Менять инструмент в зависимости от активного инструмента планшета" -#: ../src/ui/dialog/inkscape-preferences.cpp:868 +#: ../src/ui/dialog/inkscape-preferences.cpp:870 msgid "Input devices" msgstr "Устройства ввода" #. SVG output options -#: ../src/ui/dialog/inkscape-preferences.cpp:871 +#: ../src/ui/dialog/inkscape-preferences.cpp:873 msgid "Use named colors" msgstr "Использовать именованные цвета" -#: ../src/ui/dialog/inkscape-preferences.cpp:872 +#: ../src/ui/dialog/inkscape-preferences.cpp:874 msgid "" "If set, write the CSS name of the color when available (e.g. 'red' or " "'magenta') instead of the numeric value" @@ -17706,24 +19257,24 @@ msgstr "" "Если включено, записывать название цвета по CSS (например, 'red' или " "'magenta') вместо числового значения" -#: ../src/ui/dialog/inkscape-preferences.cpp:874 +#: ../src/ui/dialog/inkscape-preferences.cpp:876 msgid "XML formatting" msgstr "Форматирование XML" -#: ../src/ui/dialog/inkscape-preferences.cpp:876 +#: ../src/ui/dialog/inkscape-preferences.cpp:878 msgid "Inline attributes" msgstr "Внутристрочные атрибуты" -#: ../src/ui/dialog/inkscape-preferences.cpp:877 +#: ../src/ui/dialog/inkscape-preferences.cpp:879 msgid "Put attributes on the same line as the element tag" msgstr "Атрибуты пишутся в той же строке, что и тэги элемента" -#: ../src/ui/dialog/inkscape-preferences.cpp:880 +#: ../src/ui/dialog/inkscape-preferences.cpp:882 #, fuzzy msgid "_Indent, spaces:" msgstr "Отступ в пробелах:" -#: ../src/ui/dialog/inkscape-preferences.cpp:880 +#: ../src/ui/dialog/inkscape-preferences.cpp:882 msgid "" "The number of spaces to use for indenting nested elements; set to 0 for no " "indentation" @@ -17731,40 +19282,40 @@ msgstr "" "Количество пробелов, используемых для отступов вложенных элементов; ноль " "выключает отступы" -#: ../src/ui/dialog/inkscape-preferences.cpp:882 +#: ../src/ui/dialog/inkscape-preferences.cpp:884 msgid "Path data" msgstr "Данные контуров" -#: ../src/ui/dialog/inkscape-preferences.cpp:885 +#: ../src/ui/dialog/inkscape-preferences.cpp:887 msgid "Absolute" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:885 +#: ../src/ui/dialog/inkscape-preferences.cpp:887 #, fuzzy msgid "Relative" msgstr "Ориентир: " -#: ../src/ui/dialog/inkscape-preferences.cpp:885 -#: ../src/ui/dialog/inkscape-preferences.cpp:1175 +#: ../src/ui/dialog/inkscape-preferences.cpp:887 +#: ../src/ui/dialog/inkscape-preferences.cpp:1177 msgid "Optimized" msgstr "С оптимизацией" -#: ../src/ui/dialog/inkscape-preferences.cpp:889 +#: ../src/ui/dialog/inkscape-preferences.cpp:891 msgid "Path string format:" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:889 +#: ../src/ui/dialog/inkscape-preferences.cpp:891 msgid "" "Path data should be written: only with absolute coordinates, only with " "relative coordinates, or optimized for string length (mixed absolute and " "relative coordinates)" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:891 +#: ../src/ui/dialog/inkscape-preferences.cpp:893 msgid "Force repeat commands" msgstr "Принудительно повторять команды" -#: ../src/ui/dialog/inkscape-preferences.cpp:892 +#: ../src/ui/dialog/inkscape-preferences.cpp:894 msgid "" "Force repeating of the same path command (for example, 'L 1,2 L 3,4' instead " "of 'L 1,2 3,4')" @@ -17772,25 +19323,25 @@ msgstr "" "Принудительно повторять команды контуров (например, 'L 1,2 L 3,4' вместо 'L " "1,2 3,4')" -#: ../src/ui/dialog/inkscape-preferences.cpp:894 +#: ../src/ui/dialog/inkscape-preferences.cpp:896 msgid "Numbers" msgstr "Числа" -#: ../src/ui/dialog/inkscape-preferences.cpp:897 +#: ../src/ui/dialog/inkscape-preferences.cpp:899 #, fuzzy msgid "_Numeric precision:" msgstr "Точность чисел:" -#: ../src/ui/dialog/inkscape-preferences.cpp:897 +#: ../src/ui/dialog/inkscape-preferences.cpp:899 msgid "Significant figures of the values written to the SVG file" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:900 +#: ../src/ui/dialog/inkscape-preferences.cpp:902 #, fuzzy msgid "Minimum _exponent:" msgstr "Минимальная экспонента:" -#: ../src/ui/dialog/inkscape-preferences.cpp:900 +#: ../src/ui/dialog/inkscape-preferences.cpp:902 msgid "" "The smallest number written to SVG is 10 to the power of this exponent; " "anything smaller is written as zero" @@ -17800,60 +19351,60 @@ msgstr "" #. Code to add controls for attribute checking options #. Add incorrect style properties options -#: ../src/ui/dialog/inkscape-preferences.cpp:905 +#: ../src/ui/dialog/inkscape-preferences.cpp:907 msgid "Improper Attributes Actions" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:907 -#: ../src/ui/dialog/inkscape-preferences.cpp:915 -#: ../src/ui/dialog/inkscape-preferences.cpp:923 +#: ../src/ui/dialog/inkscape-preferences.cpp:909 +#: ../src/ui/dialog/inkscape-preferences.cpp:917 +#: ../src/ui/dialog/inkscape-preferences.cpp:925 #, fuzzy msgid "Print warnings" msgstr "Метки для печати" -#: ../src/ui/dialog/inkscape-preferences.cpp:908 +#: ../src/ui/dialog/inkscape-preferences.cpp:910 msgid "" "Print warning if invalid or non-useful attributes found. Database files " "located in inkscape_data_dir/attributes." msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:909 +#: ../src/ui/dialog/inkscape-preferences.cpp:911 #, fuzzy msgid "Remove attributes" msgstr "Установить атрибут" -#: ../src/ui/dialog/inkscape-preferences.cpp:910 +#: ../src/ui/dialog/inkscape-preferences.cpp:912 msgid "Delete invalid or non-useful attributes from element tag" msgstr "" #. Add incorrect style properties options -#: ../src/ui/dialog/inkscape-preferences.cpp:913 +#: ../src/ui/dialog/inkscape-preferences.cpp:915 msgid "Inappropriate Style Properties Actions" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:916 +#: ../src/ui/dialog/inkscape-preferences.cpp:918 msgid "" "Print warning if inappropriate style properties found (i.e. 'font-family' " "set on a <rect>). Database files located in inkscape_data_dir/attributes." msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:917 -#: ../src/ui/dialog/inkscape-preferences.cpp:925 +#: ../src/ui/dialog/inkscape-preferences.cpp:919 +#: ../src/ui/dialog/inkscape-preferences.cpp:927 #, fuzzy msgid "Remove style properties" msgstr "Вывести свойства этого треугольника" -#: ../src/ui/dialog/inkscape-preferences.cpp:918 +#: ../src/ui/dialog/inkscape-preferences.cpp:920 #, fuzzy msgid "Delete inappropriate style properties" msgstr "Смена свойств направляющей" #. Add default or inherited style properties options -#: ../src/ui/dialog/inkscape-preferences.cpp:921 +#: ../src/ui/dialog/inkscape-preferences.cpp:923 msgid "Non-useful Style Properties Actions" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:924 +#: ../src/ui/dialog/inkscape-preferences.cpp:926 msgid "" "Print warning if redundant style properties found (i.e. if a property has " "the default value and a different value is not inherited or if value is the " @@ -17861,72 +19412,72 @@ msgid "" "attributes." msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:926 +#: ../src/ui/dialog/inkscape-preferences.cpp:928 #, fuzzy msgid "Delete redundant style properties" msgstr "Смена свойств направляющей" -#: ../src/ui/dialog/inkscape-preferences.cpp:928 +#: ../src/ui/dialog/inkscape-preferences.cpp:930 msgid "Check Attributes and Style Properties on" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:930 +#: ../src/ui/dialog/inkscape-preferences.cpp:932 #, fuzzy msgid "Reading" msgstr "Затенение" -#: ../src/ui/dialog/inkscape-preferences.cpp:931 +#: ../src/ui/dialog/inkscape-preferences.cpp:933 msgid "" "Check attributes and style properties on reading in SVG files (including " "those internal to Inkscape which will slow down startup)" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:932 +#: ../src/ui/dialog/inkscape-preferences.cpp:934 #, fuzzy msgid "Editing" msgstr "Осветление" -#: ../src/ui/dialog/inkscape-preferences.cpp:933 +#: ../src/ui/dialog/inkscape-preferences.cpp:935 msgid "" "Check attributes and style properties while editing SVG files (may slow down " "Inkscape, mostly useful for debugging)" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:934 +#: ../src/ui/dialog/inkscape-preferences.cpp:936 #, fuzzy msgid "Writing" msgstr "Сценарии" -#: ../src/ui/dialog/inkscape-preferences.cpp:935 +#: ../src/ui/dialog/inkscape-preferences.cpp:937 msgid "Check attributes and style properties on writing out SVG files" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:937 +#: ../src/ui/dialog/inkscape-preferences.cpp:939 msgid "SVG output" msgstr "Экспорт в SVG" #. TRANSLATORS: see http://www.newsandtech.com/issues/2004/03-04/pt/03-04_rendering.htm -#: ../src/ui/dialog/inkscape-preferences.cpp:943 +#: ../src/ui/dialog/inkscape-preferences.cpp:945 msgid "Perceptual" msgstr "Воспринимаемая" -#: ../src/ui/dialog/inkscape-preferences.cpp:943 +#: ../src/ui/dialog/inkscape-preferences.cpp:945 msgid "Relative Colorimetric" msgstr "Относительная колориметрическая" -#: ../src/ui/dialog/inkscape-preferences.cpp:943 +#: ../src/ui/dialog/inkscape-preferences.cpp:945 msgid "Absolute Colorimetric" msgstr "Абсолютная колориметрическая" -#: ../src/ui/dialog/inkscape-preferences.cpp:947 +#: ../src/ui/dialog/inkscape-preferences.cpp:949 msgid "(Note: Color management has been disabled in this build)" msgstr "(Примечание: в этой сборке управление цветом отключено)" -#: ../src/ui/dialog/inkscape-preferences.cpp:951 +#: ../src/ui/dialog/inkscape-preferences.cpp:953 msgid "Display adjustment" msgstr "Коррекция вывода на монитор" -#: ../src/ui/dialog/inkscape-preferences.cpp:961 +#: ../src/ui/dialog/inkscape-preferences.cpp:963 #, c-format msgid "" "The ICC profile to use to calibrate display output.\n" @@ -17935,112 +19486,112 @@ msgstr "" "Профиль ICC, используемый для коррекции вывода на дисплей.\n" "В этих каталогах ищутся профили: %s" -#: ../src/ui/dialog/inkscape-preferences.cpp:962 +#: ../src/ui/dialog/inkscape-preferences.cpp:964 msgid "Display profile:" msgstr "Профиль монитора:" -#: ../src/ui/dialog/inkscape-preferences.cpp:967 +#: ../src/ui/dialog/inkscape-preferences.cpp:969 msgid "Retrieve profile from display" msgstr "Получать профиль от видеоподсистемы" -#: ../src/ui/dialog/inkscape-preferences.cpp:970 +#: ../src/ui/dialog/inkscape-preferences.cpp:972 msgid "Retrieve profiles from those attached to displays via XICC" msgstr "Использовать профиль, назначенный монитору через xicc" -#: ../src/ui/dialog/inkscape-preferences.cpp:972 +#: ../src/ui/dialog/inkscape-preferences.cpp:974 msgid "Retrieve profiles from those attached to displays" msgstr "" "Использовать профили, используемые видеподсистемой для каждого из мониторов" -#: ../src/ui/dialog/inkscape-preferences.cpp:977 +#: ../src/ui/dialog/inkscape-preferences.cpp:979 msgid "Display rendering intent:" msgstr "Цветопередача монитора:" -#: ../src/ui/dialog/inkscape-preferences.cpp:978 +#: ../src/ui/dialog/inkscape-preferences.cpp:980 msgid "The rendering intent to use to calibrate display output" msgstr "Цветопередача выводимых на дисплей изображений" -#: ../src/ui/dialog/inkscape-preferences.cpp:980 +#: ../src/ui/dialog/inkscape-preferences.cpp:982 msgid "Proofing" msgstr "Цветопроба" -#: ../src/ui/dialog/inkscape-preferences.cpp:982 +#: ../src/ui/dialog/inkscape-preferences.cpp:984 msgid "Simulate output on screen" msgstr "Имитировать устройство вывода" -#: ../src/ui/dialog/inkscape-preferences.cpp:984 +#: ../src/ui/dialog/inkscape-preferences.cpp:986 msgid "Simulates output of target device" msgstr "Имитировать на экране устройство вывода" -#: ../src/ui/dialog/inkscape-preferences.cpp:986 +#: ../src/ui/dialog/inkscape-preferences.cpp:988 msgid "Mark out of gamut colors" msgstr "Помечать цвета вне цветового охвата" -#: ../src/ui/dialog/inkscape-preferences.cpp:988 +#: ../src/ui/dialog/inkscape-preferences.cpp:990 msgid "Highlights colors that are out of gamut for the target device" msgstr "" "Помечать цвета, выходящие за рамки цветового охвата для данного устройства" -#: ../src/ui/dialog/inkscape-preferences.cpp:1000 +#: ../src/ui/dialog/inkscape-preferences.cpp:1002 msgid "Out of gamut warning color:" msgstr "Цвета вне цветового охвата:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1001 +#: ../src/ui/dialog/inkscape-preferences.cpp:1003 msgid "Selects the color used for out of gamut warning" msgstr "Выберите цвет предупреждения о выходе за цветовой охват" -#: ../src/ui/dialog/inkscape-preferences.cpp:1003 +#: ../src/ui/dialog/inkscape-preferences.cpp:1005 msgid "Device profile:" msgstr "Профиль устройства вывода:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1004 +#: ../src/ui/dialog/inkscape-preferences.cpp:1006 msgid "The ICC profile to use to simulate device output" msgstr "ICC-профиль, используемый для имитации устройства вывода" -#: ../src/ui/dialog/inkscape-preferences.cpp:1007 +#: ../src/ui/dialog/inkscape-preferences.cpp:1009 msgid "Device rendering intent:" msgstr "Цветопередача устройства вывода:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1008 +#: ../src/ui/dialog/inkscape-preferences.cpp:1010 msgid "The rendering intent to use to calibrate device output" msgstr "Цветопередача выводимых на дисплей изображений" -#: ../src/ui/dialog/inkscape-preferences.cpp:1010 +#: ../src/ui/dialog/inkscape-preferences.cpp:1012 msgid "Black point compensation" msgstr "Использовать компенсацию черной точки" -#: ../src/ui/dialog/inkscape-preferences.cpp:1012 +#: ../src/ui/dialog/inkscape-preferences.cpp:1014 msgid "Enables black point compensation" msgstr "Включить компенсацию чёрной точки" -#: ../src/ui/dialog/inkscape-preferences.cpp:1014 +#: ../src/ui/dialog/inkscape-preferences.cpp:1016 msgid "Preserve black" msgstr "Сохранять черный цвет" -#: ../src/ui/dialog/inkscape-preferences.cpp:1021 +#: ../src/ui/dialog/inkscape-preferences.cpp:1023 msgid "(LittleCMS 1.15 or later required)" msgstr "(необходима библиотека LittleCMS версии 1.15 или новее)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1023 +#: ../src/ui/dialog/inkscape-preferences.cpp:1025 msgid "Preserve K channel in CMYK -> CMYK transforms" msgstr "Сохранять канал K при преобразованиях CMYK → CMYK" -#: ../src/ui/dialog/inkscape-preferences.cpp:1037 +#: ../src/ui/dialog/inkscape-preferences.cpp:1039 #: ../src/widgets/sp-color-icc-selector.cpp:474 #: ../src/widgets/sp-color-icc-selector.cpp:766 msgid "<none>" msgstr "<нет>" -#: ../src/ui/dialog/inkscape-preferences.cpp:1082 +#: ../src/ui/dialog/inkscape-preferences.cpp:1084 msgid "Color management" msgstr "Управление цветом" #. Autosave options -#: ../src/ui/dialog/inkscape-preferences.cpp:1085 +#: ../src/ui/dialog/inkscape-preferences.cpp:1087 msgid "Enable autosave (requires restart)" msgstr "Включить автосохранение (требует перезапуска программы)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1086 +#: ../src/ui/dialog/inkscape-preferences.cpp:1088 msgid "" "Automatically save the current document(s) at a given interval, thus " "minimizing loss in case of a crash" @@ -18048,30 +19599,30 @@ msgstr "" "Автоматически сохранять текущий документ через заданный временной интервал, " "минимизируя риск потери данных" -#: ../src/ui/dialog/inkscape-preferences.cpp:1092 +#: ../src/ui/dialog/inkscape-preferences.cpp:1094 msgctxt "Filesystem" msgid "Autosave _directory:" msgstr "Каталог для временных файлов:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1092 +#: ../src/ui/dialog/inkscape-preferences.cpp:1094 msgid "" "The directory where autosaves will be written. This should be an absolute " "path (starts with / on UNIX or a drive letter such as C: on Windows). " msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1094 +#: ../src/ui/dialog/inkscape-preferences.cpp:1096 msgid "_Interval (in minutes):" msgstr "_Интервал (в минутах):" -#: ../src/ui/dialog/inkscape-preferences.cpp:1094 +#: ../src/ui/dialog/inkscape-preferences.cpp:1096 msgid "Interval (in minutes) at which document will be autosaved" msgstr "Интервал в минутах, через который документ автоматически сохраняется" -#: ../src/ui/dialog/inkscape-preferences.cpp:1096 +#: ../src/ui/dialog/inkscape-preferences.cpp:1098 msgid "_Maximum number of autosaves:" msgstr "_Максимальное число автосохранений:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1096 +#: ../src/ui/dialog/inkscape-preferences.cpp:1098 msgid "" "Maximum number of autosaved files; use this to limit the storage space used" msgstr "" @@ -18090,15 +19641,15 @@ msgstr "" #. _autosave_autosave_interval.signal_changed().connect( sigc::ptr_fun(inkscape_autosave_init), TRUE ); #. #. ----------- -#: ../src/ui/dialog/inkscape-preferences.cpp:1111 +#: ../src/ui/dialog/inkscape-preferences.cpp:1113 msgid "Autosave" msgstr "Автосохранение" -#: ../src/ui/dialog/inkscape-preferences.cpp:1115 +#: ../src/ui/dialog/inkscape-preferences.cpp:1117 msgid "Open Clip Art Library _Server Name:" msgstr "_Сервер Open Clip Art Library:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1116 +#: ../src/ui/dialog/inkscape-preferences.cpp:1118 msgid "" "The server name of the Open Clip Art Library webdav server; it's used by the " "Import and Export to OCAL function" @@ -18106,37 +19657,37 @@ msgstr "" "Имя webdav-сервера Open Clip Art Library. Используется для функций импорта и " "экспорта в OCAL" -#: ../src/ui/dialog/inkscape-preferences.cpp:1118 +#: ../src/ui/dialog/inkscape-preferences.cpp:1120 msgid "Open Clip Art Library _Username:" msgstr "П_ользователь Open Clip Art Library:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1119 +#: ../src/ui/dialog/inkscape-preferences.cpp:1121 msgid "The username used to log into Open Clip Art Library" msgstr "Имя пользователя для авторизации на Open Clip Art Library" -#: ../src/ui/dialog/inkscape-preferences.cpp:1121 +#: ../src/ui/dialog/inkscape-preferences.cpp:1123 msgid "Open Clip Art Library _Password:" msgstr "П_ароль на Open Clip Art Library:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1122 +#: ../src/ui/dialog/inkscape-preferences.cpp:1124 msgid "The password used to log into Open Clip Art Library" msgstr "Пароль для авторизации на Open Clip Art Library" -#: ../src/ui/dialog/inkscape-preferences.cpp:1123 +#: ../src/ui/dialog/inkscape-preferences.cpp:1125 msgid "Open Clip Art" msgstr "Open Clip Art" -#: ../src/ui/dialog/inkscape-preferences.cpp:1128 +#: ../src/ui/dialog/inkscape-preferences.cpp:1130 #, fuzzy msgid "Behavior" msgstr "Поведение" -#: ../src/ui/dialog/inkscape-preferences.cpp:1132 +#: ../src/ui/dialog/inkscape-preferences.cpp:1134 #, fuzzy msgid "_Simplification threshold:" msgstr "Порог упрощения:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1133 +#: ../src/ui/dialog/inkscape-preferences.cpp:1135 msgid "" "How strong is the Node tool's Simplify command by default. If you invoke " "this command several times in quick succession, it will act more and more " @@ -18147,45 +19698,45 @@ msgstr "" "агрессивно; чтобы вернуться к значению по умолчанию, сделайте паузу перед " "очередным вызовом команды." -#: ../src/ui/dialog/inkscape-preferences.cpp:1135 +#: ../src/ui/dialog/inkscape-preferences.cpp:1137 msgid "Color stock markers the same color as object" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1136 +#: ../src/ui/dialog/inkscape-preferences.cpp:1138 msgid "Color custom markers the same color as object" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1137 -#: ../src/ui/dialog/inkscape-preferences.cpp:1347 +#: ../src/ui/dialog/inkscape-preferences.cpp:1139 +#: ../src/ui/dialog/inkscape-preferences.cpp:1349 msgid "Update marker color when object color changes" msgstr "" #. Selecting options -#: ../src/ui/dialog/inkscape-preferences.cpp:1140 +#: ../src/ui/dialog/inkscape-preferences.cpp:1142 msgid "Select in all layers" msgstr "Работают во всех слоях" -#: ../src/ui/dialog/inkscape-preferences.cpp:1141 +#: ../src/ui/dialog/inkscape-preferences.cpp:1143 msgid "Select only within current layer" msgstr "Работают только в текущем слое" -#: ../src/ui/dialog/inkscape-preferences.cpp:1142 +#: ../src/ui/dialog/inkscape-preferences.cpp:1144 msgid "Select in current layer and sublayers" msgstr "Работают только в текущем слое и субслоях" -#: ../src/ui/dialog/inkscape-preferences.cpp:1143 +#: ../src/ui/dialog/inkscape-preferences.cpp:1145 msgid "Ignore hidden objects and layers" msgstr "Игнорируют скрытые объекты и слои" -#: ../src/ui/dialog/inkscape-preferences.cpp:1144 +#: ../src/ui/dialog/inkscape-preferences.cpp:1146 msgid "Ignore locked objects and layers" msgstr "Игнорируют заблокированные объекты и слои" -#: ../src/ui/dialog/inkscape-preferences.cpp:1145 +#: ../src/ui/dialog/inkscape-preferences.cpp:1147 msgid "Deselect upon layer change" msgstr "Снять выделение при изменениях в слое" -#: ../src/ui/dialog/inkscape-preferences.cpp:1148 +#: ../src/ui/dialog/inkscape-preferences.cpp:1150 msgid "" "Uncheck this to be able to keep the current objects selected when the " "current layer changes" @@ -18193,26 +19744,26 @@ msgstr "" "Отключите эту опцию, если хотите оставлять объекты выбранными при изменениях " "в текущем слое." -#: ../src/ui/dialog/inkscape-preferences.cpp:1150 +#: ../src/ui/dialog/inkscape-preferences.cpp:1152 msgid "Ctrl+A, Tab, Shift+Tab" msgstr "Ctrl+A, Tab, Shift+Tab" -#: ../src/ui/dialog/inkscape-preferences.cpp:1152 +#: ../src/ui/dialog/inkscape-preferences.cpp:1154 msgid "Make keyboard selection commands work on objects in all layers" msgstr "Команды выделения с клавиатуры работают во всех слоях." -#: ../src/ui/dialog/inkscape-preferences.cpp:1154 +#: ../src/ui/dialog/inkscape-preferences.cpp:1156 msgid "Make keyboard selection commands work on objects in current layer only" msgstr "Команды выделения с клавиатуры работают только в текущем слое." -#: ../src/ui/dialog/inkscape-preferences.cpp:1156 +#: ../src/ui/dialog/inkscape-preferences.cpp:1158 msgid "" "Make keyboard selection commands work on objects in current layer and all " "its sublayers" msgstr "" "Команды выделения с клавиатуры работают в текущем слое и всех его субслоях." -#: ../src/ui/dialog/inkscape-preferences.cpp:1158 +#: ../src/ui/dialog/inkscape-preferences.cpp:1160 msgid "" "Uncheck this to be able to select objects that are hidden (either by " "themselves or by being in a hidden layer)" @@ -18220,7 +19771,7 @@ msgstr "" "Отключите этот параметр, если хотите выделять скрытые объекты или объекты на " "скрытом слое" -#: ../src/ui/dialog/inkscape-preferences.cpp:1160 +#: ../src/ui/dialog/inkscape-preferences.cpp:1162 msgid "" "Uncheck this to be able to select objects that are locked (either by " "themselves or by being in a locked layer)" @@ -18228,72 +19779,72 @@ msgstr "" "Отключите эту опцию, если хотите выделять заблокированные объекты или " "объекты на заблокированном слое" -#: ../src/ui/dialog/inkscape-preferences.cpp:1162 +#: ../src/ui/dialog/inkscape-preferences.cpp:1164 msgid "Wrap when cycling objects in z-order" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1164 +#: ../src/ui/dialog/inkscape-preferences.cpp:1166 msgid "Alt+Scroll Wheel" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1166 +#: ../src/ui/dialog/inkscape-preferences.cpp:1168 msgid "Wrap around at start and end when cycling objects in z-order" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1168 +#: ../src/ui/dialog/inkscape-preferences.cpp:1170 msgid "Selecting" msgstr "Выделение" #. Transforms options -#: ../src/ui/dialog/inkscape-preferences.cpp:1171 +#: ../src/ui/dialog/inkscape-preferences.cpp:1173 #: ../src/widgets/select-toolbar.cpp:570 msgid "Scale stroke width" msgstr "Менять толщину обводки" -#: ../src/ui/dialog/inkscape-preferences.cpp:1172 +#: ../src/ui/dialog/inkscape-preferences.cpp:1174 msgid "Scale rounded corners in rectangles" msgstr "Менять радиус закругленных углов" -#: ../src/ui/dialog/inkscape-preferences.cpp:1173 +#: ../src/ui/dialog/inkscape-preferences.cpp:1175 msgid "Transform gradients" msgstr "Трансформировать градиенты" -#: ../src/ui/dialog/inkscape-preferences.cpp:1174 +#: ../src/ui/dialog/inkscape-preferences.cpp:1176 msgid "Transform patterns" msgstr "Трансформировать текстуры" -#: ../src/ui/dialog/inkscape-preferences.cpp:1176 +#: ../src/ui/dialog/inkscape-preferences.cpp:1178 msgid "Preserved" msgstr "Без оптимизации" -#: ../src/ui/dialog/inkscape-preferences.cpp:1179 +#: ../src/ui/dialog/inkscape-preferences.cpp:1181 #: ../src/widgets/select-toolbar.cpp:571 msgid "When scaling objects, scale the stroke width by the same proportion" msgstr "" "При изменении размера объектов менять в той же пропорции и толщину обводки" -#: ../src/ui/dialog/inkscape-preferences.cpp:1181 +#: ../src/ui/dialog/inkscape-preferences.cpp:1183 #: ../src/widgets/select-toolbar.cpp:582 msgid "When scaling rectangles, scale the radii of rounded corners" msgstr "" "При изменении размера прямоугольников менять в той же пропорции и радиус " "закруглённых углов" -#: ../src/ui/dialog/inkscape-preferences.cpp:1183 +#: ../src/ui/dialog/inkscape-preferences.cpp:1185 #: ../src/widgets/select-toolbar.cpp:593 msgid "Move gradients (in fill or stroke) along with the objects" msgstr "Трансформировать градиенты (в заливке или обводке) вместе с объектом" -#: ../src/ui/dialog/inkscape-preferences.cpp:1185 +#: ../src/ui/dialog/inkscape-preferences.cpp:1187 #: ../src/widgets/select-toolbar.cpp:604 msgid "Move patterns (in fill or stroke) along with the objects" msgstr "Трансформировать текстуры (в заливке или обводке) вместе с объектом" -#: ../src/ui/dialog/inkscape-preferences.cpp:1186 +#: ../src/ui/dialog/inkscape-preferences.cpp:1188 msgid "Store transformation" msgstr "Сохранение трансформации" -#: ../src/ui/dialog/inkscape-preferences.cpp:1188 +#: ../src/ui/dialog/inkscape-preferences.cpp:1190 msgid "" "If possible, apply transformation to objects without adding a transform= " "attribute" @@ -18301,19 +19852,19 @@ msgstr "" "По возможности применять трансформацию к объектам без добавления атрибута " "transform=" -#: ../src/ui/dialog/inkscape-preferences.cpp:1190 +#: ../src/ui/dialog/inkscape-preferences.cpp:1192 msgid "Always store transformation as a transform= attribute on objects" msgstr "Всегда сохранять трансформацию в виде атрибута transform=" -#: ../src/ui/dialog/inkscape-preferences.cpp:1192 +#: ../src/ui/dialog/inkscape-preferences.cpp:1194 msgid "Transforms" msgstr "Трансформации" -#: ../src/ui/dialog/inkscape-preferences.cpp:1196 +#: ../src/ui/dialog/inkscape-preferences.cpp:1198 msgid "Mouse _wheel scrolls by:" msgstr "_Колёсико мыши прокручивает на:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1197 +#: ../src/ui/dialog/inkscape-preferences.cpp:1199 msgid "" "One mouse wheel notch scrolls by this distance in screen pixels " "(horizontally with Shift)" @@ -18321,24 +19872,24 @@ msgstr "" "На это расстояние в пикселах изображение сдвигается одним щелчком\n" "колесика мыши (с нажатой клавишей Shift - по горизонтали)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1198 +#: ../src/ui/dialog/inkscape-preferences.cpp:1200 msgid "Ctrl+arrows" msgstr "Ctrl+стрелки" -#: ../src/ui/dialog/inkscape-preferences.cpp:1200 +#: ../src/ui/dialog/inkscape-preferences.cpp:1202 msgid "Sc_roll by:" msgstr "_Шаг прокрутки:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1201 +#: ../src/ui/dialog/inkscape-preferences.cpp:1203 msgid "Pressing Ctrl+arrow key scrolls by this distance (in screen pixels)" msgstr "" "На это расстояние в пикселах изображение сдвигается при нажатии Ctrl+стрелки" -#: ../src/ui/dialog/inkscape-preferences.cpp:1203 +#: ../src/ui/dialog/inkscape-preferences.cpp:1205 msgid "_Acceleration:" msgstr "_Ускорение:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1204 +#: ../src/ui/dialog/inkscape-preferences.cpp:1206 msgid "" "Pressing and holding Ctrl+arrow will gradually speed up scrolling (0 for no " "acceleration)" @@ -18346,15 +19897,15 @@ msgstr "" "Если удерживать нажатыми Ctrl+стрелку, скорость прокрутки будет возрастать " "(0 отменяет ускорение)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1205 +#: ../src/ui/dialog/inkscape-preferences.cpp:1207 msgid "Autoscrolling" msgstr "Автопрокрутка" -#: ../src/ui/dialog/inkscape-preferences.cpp:1207 +#: ../src/ui/dialog/inkscape-preferences.cpp:1209 msgid "_Speed:" msgstr "_Скорость:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1208 +#: ../src/ui/dialog/inkscape-preferences.cpp:1210 msgid "" "How fast the canvas autoscrolls when you drag beyond canvas edge (0 to turn " "autoscroll off)" @@ -18362,12 +19913,12 @@ msgstr "" "С какой скоростью будет происходить прокрутка при перетаскивании объекта за " "пределы окна (0 отменяет автопрокрутку)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1210 +#: ../src/ui/dialog/inkscape-preferences.cpp:1212 #: ../src/ui/dialog/tracedialog.cpp:522 ../src/ui/dialog/tracedialog.cpp:721 msgid "_Threshold:" msgstr "Поро_г:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1211 +#: ../src/ui/dialog/inkscape-preferences.cpp:1213 msgid "" "How far (in screen pixels) you need to be from the canvas edge to trigger " "autoscroll; positive is outside the canvas, negative is within the canvas" @@ -18381,11 +19932,11 @@ msgstr "" #. _page_scrolling.add_line( false, "", _scroll_space, "", #. _("When on, pressing and holding Space and dragging with left mouse button pans canvas (as in Adobe Illustrator); when off, Space temporarily switches to Selector tool (default)")); #. -#: ../src/ui/dialog/inkscape-preferences.cpp:1217 +#: ../src/ui/dialog/inkscape-preferences.cpp:1219 msgid "Mouse wheel zooms by default" msgstr "По умолчанию колесо мыши масштабирует вид" -#: ../src/ui/dialog/inkscape-preferences.cpp:1219 +#: ../src/ui/dialog/inkscape-preferences.cpp:1221 msgid "" "When on, mouse wheel zooms without Ctrl and scrolls canvas with Ctrl; when " "off, it zooms with Ctrl and scrolls without Ctrl" @@ -18394,24 +19945,24 @@ msgstr "" "с Ctrl — прокручивает холст; если выключено, с Ctrl масштабируется вид " "документа, а без - прокручивается холст." -#: ../src/ui/dialog/inkscape-preferences.cpp:1220 +#: ../src/ui/dialog/inkscape-preferences.cpp:1222 msgid "Scrolling" msgstr "Прокрутка" #. Snapping options -#: ../src/ui/dialog/inkscape-preferences.cpp:1223 +#: ../src/ui/dialog/inkscape-preferences.cpp:1225 msgid "Enable snap indicator" msgstr "Включить индикатор прилипания" -#: ../src/ui/dialog/inkscape-preferences.cpp:1225 +#: ../src/ui/dialog/inkscape-preferences.cpp:1227 msgid "After snapping, a symbol is drawn at the point that has snapped" msgstr "В предполагаемой точке прилипания рисуется символ" -#: ../src/ui/dialog/inkscape-preferences.cpp:1228 +#: ../src/ui/dialog/inkscape-preferences.cpp:1230 msgid "_Delay (in ms):" msgstr "За_держка (мс):" -#: ../src/ui/dialog/inkscape-preferences.cpp:1229 +#: ../src/ui/dialog/inkscape-preferences.cpp:1231 msgid "" "Postpone snapping as long as the mouse is moving, and then wait an " "additional fraction of a second. This additional delay is specified here. " @@ -18421,22 +19972,22 @@ msgstr "" "время. Если значение очень мало или равно нулю, прилипание будет выполняться " "немедленно." -#: ../src/ui/dialog/inkscape-preferences.cpp:1231 +#: ../src/ui/dialog/inkscape-preferences.cpp:1233 msgid "Only snap the node closest to the pointer" msgstr "Прилипает только ближайший к указателю узел" -#: ../src/ui/dialog/inkscape-preferences.cpp:1233 +#: ../src/ui/dialog/inkscape-preferences.cpp:1235 msgid "" "Only try to snap the node that is initially closest to the mouse pointer" msgstr "" "Прилипать только к тому узлу, который изначально расположен ближе остальных " "к указателю мыши" -#: ../src/ui/dialog/inkscape-preferences.cpp:1236 +#: ../src/ui/dialog/inkscape-preferences.cpp:1238 msgid "_Weight factor:" msgstr "Коэффициент _взвешивания:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1237 +#: ../src/ui/dialog/inkscape-preferences.cpp:1239 msgid "" "When multiple snap solutions are found, then Inkscape can either prefer the " "closest transformation (when set to 0), or prefer the node that was " @@ -18446,11 +19997,11 @@ msgstr "" "либо ближайшую трансформацию (0), либо узел, изначально более близкий к " "курсору мыши (1)." -#: ../src/ui/dialog/inkscape-preferences.cpp:1239 +#: ../src/ui/dialog/inkscape-preferences.cpp:1241 msgid "Snap the mouse pointer when dragging a constrained knot" msgstr "Указатель мыши прилипает при перетаскивании узла с ограничением" -#: ../src/ui/dialog/inkscape-preferences.cpp:1241 +#: ../src/ui/dialog/inkscape-preferences.cpp:1243 msgid "" "When dragging a knot along a constraint line, then snap the position of the " "mouse pointer instead of snapping the projection of the knot onto the " @@ -18459,16 +20010,16 @@ msgstr "" "При перемещении узла вдоль ограничительной линии прилипает указатель мыши, а " "не проекция узла на ограничительную линию" -#: ../src/ui/dialog/inkscape-preferences.cpp:1243 +#: ../src/ui/dialog/inkscape-preferences.cpp:1245 msgid "Snapping" msgstr "Прилипание" #. nudgedistance is limited to 1000 in select-context.cpp: use the same limit here -#: ../src/ui/dialog/inkscape-preferences.cpp:1248 +#: ../src/ui/dialog/inkscape-preferences.cpp:1250 msgid "_Arrow keys move by:" msgstr "_Стрелки двигают на:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1249 +#: ../src/ui/dialog/inkscape-preferences.cpp:1251 #, fuzzy msgid "" "Pressing an arrow key moves selected object(s) or node(s) by this distance" @@ -18477,34 +20028,34 @@ msgstr "" "по нажатию клавиши со стрелкой" #. defaultscale is limited to 1000 in select-context.cpp: use the same limit here -#: ../src/ui/dialog/inkscape-preferences.cpp:1252 +#: ../src/ui/dialog/inkscape-preferences.cpp:1254 #, fuzzy msgid "> and < _scale by:" msgstr "Шаг масштабирования по > и <:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1253 +#: ../src/ui/dialog/inkscape-preferences.cpp:1255 #, fuzzy msgid "Pressing > or < scales selection up or down by this increment" msgstr "" "На эту величину (в SVG пикселах) изменяется размер выделения по нажатию " "клавиш > и <" -#: ../src/ui/dialog/inkscape-preferences.cpp:1255 +#: ../src/ui/dialog/inkscape-preferences.cpp:1257 #, fuzzy msgid "_Inset/Outset by:" msgstr "Втяжка или растяжка на:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1256 +#: ../src/ui/dialog/inkscape-preferences.cpp:1258 #, fuzzy msgid "Inset and Outset commands displace the path by this distance" msgstr "" "На это расстояние (в SVG пикселах) команды втяжки и растяжки смещают контур" -#: ../src/ui/dialog/inkscape-preferences.cpp:1257 +#: ../src/ui/dialog/inkscape-preferences.cpp:1259 msgid "Compass-like display of angles" msgstr "Компасообразное отображение углов" -#: ../src/ui/dialog/inkscape-preferences.cpp:1259 +#: ../src/ui/dialog/inkscape-preferences.cpp:1261 msgid "" "When on, angles are displayed with 0 at north, 0 to 360 range, positive " "clockwise; otherwise with 0 at east, -180 to 180 range, positive " @@ -18515,16 +20066,22 @@ msgstr "" "случае 0° показывает на восток, диапазон значений находится между -180° и " "180°, приращение угла происходит против часовой стрелки." -#: ../src/ui/dialog/inkscape-preferences.cpp:1265 +#: ../src/ui/dialog/inkscape-preferences.cpp:1263 +#, fuzzy +msgctxt "Rotation angle" +msgid "None" +msgstr "Нет" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1267 #, fuzzy msgid "_Rotation snaps every:" msgstr "Ограничение вращения:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1265 +#: ../src/ui/dialog/inkscape-preferences.cpp:1267 msgid "degrees" msgstr "градусов" -#: ../src/ui/dialog/inkscape-preferences.cpp:1266 +#: ../src/ui/dialog/inkscape-preferences.cpp:1268 msgid "" "Rotating with Ctrl pressed snaps every that much degrees; also, pressing " "[ or ] rotates by this amount" @@ -18532,26 +20089,26 @@ msgstr "" "Вращение с нажатым Ctrl ограничивает угол значениями, кратными выбранному; " "нажатие [ или ] поворачивает на выбранный угол" -#: ../src/ui/dialog/inkscape-preferences.cpp:1267 +#: ../src/ui/dialog/inkscape-preferences.cpp:1269 msgid "Relative snapping of guideline angles" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1269 +#: ../src/ui/dialog/inkscape-preferences.cpp:1271 msgid "" "When on, the snap angles when rotating a guideline will be relative to the " "original angle" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1271 +#: ../src/ui/dialog/inkscape-preferences.cpp:1273 #, fuzzy msgid "_Zoom in/out by:" msgstr "Шаг масштаба:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1271 +#: ../src/ui/dialog/inkscape-preferences.cpp:1273 msgid "%" msgstr "%" -#: ../src/ui/dialog/inkscape-preferences.cpp:1272 +#: ../src/ui/dialog/inkscape-preferences.cpp:1274 msgid "" "Zoom tool click, +/- keys, and middle click zoom in and out by this " "multiplier" @@ -18559,45 +20116,45 @@ msgstr "" "Шаг для щелчка инструментом масштаба,\n" "нажатия клавиш +/- и щелчка средней клавишей мыши" -#: ../src/ui/dialog/inkscape-preferences.cpp:1273 +#: ../src/ui/dialog/inkscape-preferences.cpp:1275 msgid "Steps" msgstr "Шаги" #. Clones options -#: ../src/ui/dialog/inkscape-preferences.cpp:1276 +#: ../src/ui/dialog/inkscape-preferences.cpp:1278 msgid "Move in parallel" msgstr "Двигаются параллельно" -#: ../src/ui/dialog/inkscape-preferences.cpp:1278 +#: ../src/ui/dialog/inkscape-preferences.cpp:1280 msgid "Stay unmoved" msgstr "Остаются неподвижными" -#: ../src/ui/dialog/inkscape-preferences.cpp:1280 +#: ../src/ui/dialog/inkscape-preferences.cpp:1282 msgid "Move according to transform" msgstr "Двигаются в соответствии с transform=" -#: ../src/ui/dialog/inkscape-preferences.cpp:1282 +#: ../src/ui/dialog/inkscape-preferences.cpp:1284 msgid "Are unlinked" msgstr "Отсоединяются" -#: ../src/ui/dialog/inkscape-preferences.cpp:1284 +#: ../src/ui/dialog/inkscape-preferences.cpp:1286 msgid "Are deleted" msgstr "Удаляются" -#: ../src/ui/dialog/inkscape-preferences.cpp:1287 +#: ../src/ui/dialog/inkscape-preferences.cpp:1289 #, fuzzy msgid "Moving original: clones and linked offsets" msgstr "Когда перемещается оригинал, его клоны и потомки:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1289 +#: ../src/ui/dialog/inkscape-preferences.cpp:1291 msgid "Clones are translated by the same vector as their original" msgstr "Каждый клон сдвигается по тому же вектору, что и его оригинал." -#: ../src/ui/dialog/inkscape-preferences.cpp:1291 +#: ../src/ui/dialog/inkscape-preferences.cpp:1293 msgid "Clones preserve their positions when their original is moved" msgstr "Клоны остаются на месте, когда перемещаются их оригиналы." -#: ../src/ui/dialog/inkscape-preferences.cpp:1293 +#: ../src/ui/dialog/inkscape-preferences.cpp:1295 msgid "" "Each clone moves according to the value of its transform= attribute; for " "example, a rotated clone will move in a different direction than its original" @@ -18606,29 +20163,29 @@ msgstr "" "Например, повёрнутый клон будет перемещаться в ином направлении, нежели его " "оригинал." -#: ../src/ui/dialog/inkscape-preferences.cpp:1294 +#: ../src/ui/dialog/inkscape-preferences.cpp:1296 #, fuzzy msgid "Deleting original: clones" msgstr "При дублировании оригиналов с клонами:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1296 +#: ../src/ui/dialog/inkscape-preferences.cpp:1298 msgid "Orphaned clones are converted to regular objects" msgstr "Осиротевшие клоны преобразуются в обычные объекты" -#: ../src/ui/dialog/inkscape-preferences.cpp:1298 +#: ../src/ui/dialog/inkscape-preferences.cpp:1300 msgid "Orphaned clones are deleted along with their original" msgstr "Осиротевшие клоны удаляются вместе с их оригиналом" -#: ../src/ui/dialog/inkscape-preferences.cpp:1300 +#: ../src/ui/dialog/inkscape-preferences.cpp:1302 #, fuzzy msgid "Duplicating original+clones/linked offset" msgstr "При дублировании оригиналов с клонами:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1302 +#: ../src/ui/dialog/inkscape-preferences.cpp:1304 msgid "Relink duplicated clones" msgstr "Повторно связывать продублированные клоны" -#: ../src/ui/dialog/inkscape-preferences.cpp:1304 +#: ../src/ui/dialog/inkscape-preferences.cpp:1306 msgid "" "When duplicating a selection containing both a clone and its original " "(possibly in groups), relink the duplicated clone to the duplicated original " @@ -18639,27 +20196,27 @@ msgstr "" "оригиналом вместо первого оригинала." #. TRANSLATORS: Heading for the Inkscape Preferences "Clones" Page -#: ../src/ui/dialog/inkscape-preferences.cpp:1307 +#: ../src/ui/dialog/inkscape-preferences.cpp:1309 msgid "Clones" msgstr "Клоны" #. Clip paths and masks options -#: ../src/ui/dialog/inkscape-preferences.cpp:1310 +#: ../src/ui/dialog/inkscape-preferences.cpp:1312 msgid "When applying, use the topmost selected object as clippath/mask" msgstr "Верхний выбранный объект — обтравочный контур или маска" -#: ../src/ui/dialog/inkscape-preferences.cpp:1312 +#: ../src/ui/dialog/inkscape-preferences.cpp:1314 msgid "" "Uncheck this to use the bottom selected object as the clipping path or mask" msgstr "" "Отключите эту опцию, если хотите использовать в качестве обтравочного " "контура или маски самый нижний из выбранных объектов" -#: ../src/ui/dialog/inkscape-preferences.cpp:1313 +#: ../src/ui/dialog/inkscape-preferences.cpp:1315 msgid "Remove clippath/mask object after applying" msgstr "Убрать обтравочный контур или маску после применения" -#: ../src/ui/dialog/inkscape-preferences.cpp:1315 +#: ../src/ui/dialog/inkscape-preferences.cpp:1317 msgid "" "After applying, remove the object used as the clipping path or mask from the " "drawing" @@ -18667,117 +20224,117 @@ msgstr "" "По применении удалить из рисунка объект, использованный в качестве " "обтравочного контура или маски" -#: ../src/ui/dialog/inkscape-preferences.cpp:1317 +#: ../src/ui/dialog/inkscape-preferences.cpp:1319 #, fuzzy msgid "Before applying" msgstr "Перед применением обтравочного контура или маски:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1319 +#: ../src/ui/dialog/inkscape-preferences.cpp:1321 msgid "Do not group clipped/masked objects" msgstr "Не группировать обтравленные или замаскированные объекты" -#: ../src/ui/dialog/inkscape-preferences.cpp:1320 +#: ../src/ui/dialog/inkscape-preferences.cpp:1322 #, fuzzy msgid "Put every clipped/masked object in its own group" msgstr "" "Включать каждый обтравленный или замаскированный объект в собственную группу" -#: ../src/ui/dialog/inkscape-preferences.cpp:1321 +#: ../src/ui/dialog/inkscape-preferences.cpp:1323 msgid "Put all clipped/masked objects into one group" msgstr "Помещать все обтравленные или замаскированные объекты в одну группу" -#: ../src/ui/dialog/inkscape-preferences.cpp:1324 +#: ../src/ui/dialog/inkscape-preferences.cpp:1326 msgid "Apply clippath/mask to every object" msgstr "Применить обтравочный контур или маску к каждому объекту" -#: ../src/ui/dialog/inkscape-preferences.cpp:1327 +#: ../src/ui/dialog/inkscape-preferences.cpp:1329 msgid "Apply clippath/mask to groups containing single object" msgstr "" "Применить обтравочный контур или маску к группам, содержащим единичные " "объекты" -#: ../src/ui/dialog/inkscape-preferences.cpp:1330 +#: ../src/ui/dialog/inkscape-preferences.cpp:1332 msgid "Apply clippath/mask to group containing all objects" msgstr "" "Применить обтравочный контур или маску к группе, содержащей все объекты" -#: ../src/ui/dialog/inkscape-preferences.cpp:1332 +#: ../src/ui/dialog/inkscape-preferences.cpp:1334 #, fuzzy msgid "After releasing" msgstr "После снятия обтравочного контура или маски:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1334 +#: ../src/ui/dialog/inkscape-preferences.cpp:1336 msgid "Ungroup automatically created groups" msgstr "Разгруппировать автоматически созданные группы" -#: ../src/ui/dialog/inkscape-preferences.cpp:1336 +#: ../src/ui/dialog/inkscape-preferences.cpp:1338 msgid "Ungroup groups created when setting clip/mask" msgstr "" "Разгруппировать группы, созданные при наложении обтравочного контура или " "маски" -#: ../src/ui/dialog/inkscape-preferences.cpp:1338 +#: ../src/ui/dialog/inkscape-preferences.cpp:1340 msgid "Clippaths and masks" msgstr "Обтравочные контуры и маски" -#: ../src/ui/dialog/inkscape-preferences.cpp:1341 +#: ../src/ui/dialog/inkscape-preferences.cpp:1343 #, fuzzy msgid "Stroke Style Markers" msgstr "_Стиль обводки" -#: ../src/ui/dialog/inkscape-preferences.cpp:1343 #: ../src/ui/dialog/inkscape-preferences.cpp:1345 +#: ../src/ui/dialog/inkscape-preferences.cpp:1347 msgid "" "Stroke color same as object, fill color either object fill color or marker " "fill color" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1349 +#: ../src/ui/dialog/inkscape-preferences.cpp:1351 #: ../share/extensions/hershey.inx.h:27 msgid "Markers" msgstr "Маркеры" -#: ../src/ui/dialog/inkscape-preferences.cpp:1352 +#: ../src/ui/dialog/inkscape-preferences.cpp:1354 #, fuzzy msgid "Document cleanup" msgstr "Документ" -#: ../src/ui/dialog/inkscape-preferences.cpp:1353 #: ../src/ui/dialog/inkscape-preferences.cpp:1355 +#: ../src/ui/dialog/inkscape-preferences.cpp:1357 msgid "Remove unused swatches when doing a document cleanup" msgstr "" #. tooltip -#: ../src/ui/dialog/inkscape-preferences.cpp:1356 +#: ../src/ui/dialog/inkscape-preferences.cpp:1358 #, fuzzy msgid "Cleanup" msgstr "Концы:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1364 +#: ../src/ui/dialog/inkscape-preferences.cpp:1366 msgid "Number of _Threads:" msgstr "_Количество потоков:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1364 -#: ../src/ui/dialog/inkscape-preferences.cpp:1896 +#: ../src/ui/dialog/inkscape-preferences.cpp:1366 +#: ../src/ui/dialog/inkscape-preferences.cpp:1898 msgid "(requires restart)" msgstr "(требует перезапуска программы)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1365 +#: ../src/ui/dialog/inkscape-preferences.cpp:1367 #, fuzzy msgid "Configure number of processors/threads to use when rendering filters" msgstr "Количество процессоров/потоков при визуализации гауссова размывания" -#: ../src/ui/dialog/inkscape-preferences.cpp:1369 +#: ../src/ui/dialog/inkscape-preferences.cpp:1371 msgid "Rendering _cache size:" msgstr "_Размер кэша для рендеринга:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1369 +#: ../src/ui/dialog/inkscape-preferences.cpp:1371 #, fuzzy msgctxt "mebibyte (2^20 bytes) abbreviation" msgid "MiB" msgstr "Мин:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1369 +#: ../src/ui/dialog/inkscape-preferences.cpp:1371 msgid "" "Set the amount of memory per document which can be used to store rendered " "parts of the drawing for later reuse; set to zero to disable caching" @@ -18785,37 +20342,37 @@ msgstr "" #. blur quality #. filter quality -#: ../src/ui/dialog/inkscape-preferences.cpp:1372 -#: ../src/ui/dialog/inkscape-preferences.cpp:1396 +#: ../src/ui/dialog/inkscape-preferences.cpp:1374 +#: ../src/ui/dialog/inkscape-preferences.cpp:1398 msgid "Best quality (slowest)" msgstr "Наилучшее качество (самая медленная отрисовка)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1374 -#: ../src/ui/dialog/inkscape-preferences.cpp:1398 +#: ../src/ui/dialog/inkscape-preferences.cpp:1376 +#: ../src/ui/dialog/inkscape-preferences.cpp:1400 msgid "Better quality (slower)" msgstr "Хорошее качество (медленная отрисовка)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1376 -#: ../src/ui/dialog/inkscape-preferences.cpp:1400 +#: ../src/ui/dialog/inkscape-preferences.cpp:1378 +#: ../src/ui/dialog/inkscape-preferences.cpp:1402 msgid "Average quality" msgstr "Среднее качество" -#: ../src/ui/dialog/inkscape-preferences.cpp:1378 -#: ../src/ui/dialog/inkscape-preferences.cpp:1402 +#: ../src/ui/dialog/inkscape-preferences.cpp:1380 +#: ../src/ui/dialog/inkscape-preferences.cpp:1404 msgid "Lower quality (faster)" msgstr "Низкое качество (быстрая отрисовка)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1380 -#: ../src/ui/dialog/inkscape-preferences.cpp:1404 +#: ../src/ui/dialog/inkscape-preferences.cpp:1382 +#: ../src/ui/dialog/inkscape-preferences.cpp:1406 msgid "Lowest quality (fastest)" msgstr "Самое низкое качество (самая быстрая отрисовка)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1383 +#: ../src/ui/dialog/inkscape-preferences.cpp:1385 msgid "Gaussian blur quality for display" msgstr "Качество гауссова размывания на экране" -#: ../src/ui/dialog/inkscape-preferences.cpp:1385 -#: ../src/ui/dialog/inkscape-preferences.cpp:1409 +#: ../src/ui/dialog/inkscape-preferences.cpp:1387 +#: ../src/ui/dialog/inkscape-preferences.cpp:1411 msgid "" "Best quality, but display may be very slow at high zooms (bitmap export " "always uses best quality)" @@ -18823,167 +20380,167 @@ msgstr "" "Наилучшее качество, но при большом масштабе отрисовка очень медленная (при " "экспорте качество остаётся максимальным)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1387 -#: ../src/ui/dialog/inkscape-preferences.cpp:1411 +#: ../src/ui/dialog/inkscape-preferences.cpp:1389 +#: ../src/ui/dialog/inkscape-preferences.cpp:1413 msgid "Better quality, but slower display" msgstr "Хорошее качество, но невысокая скорость" -#: ../src/ui/dialog/inkscape-preferences.cpp:1389 -#: ../src/ui/dialog/inkscape-preferences.cpp:1413 +#: ../src/ui/dialog/inkscape-preferences.cpp:1391 +#: ../src/ui/dialog/inkscape-preferences.cpp:1415 msgid "Average quality, acceptable display speed" msgstr "Среднее качество, приемлимая скорость отрисовки" -#: ../src/ui/dialog/inkscape-preferences.cpp:1391 -#: ../src/ui/dialog/inkscape-preferences.cpp:1415 +#: ../src/ui/dialog/inkscape-preferences.cpp:1393 +#: ../src/ui/dialog/inkscape-preferences.cpp:1417 msgid "Lower quality (some artifacts), but display is faster" msgstr "Низкое качество с видимым артефактами, но быстрая отрисовка" -#: ../src/ui/dialog/inkscape-preferences.cpp:1393 -#: ../src/ui/dialog/inkscape-preferences.cpp:1417 +#: ../src/ui/dialog/inkscape-preferences.cpp:1395 +#: ../src/ui/dialog/inkscape-preferences.cpp:1419 msgid "Lowest quality (considerable artifacts), but display is fastest" msgstr "" "Очень низкое качество с достаточно заметными артефактами, но очень быстрая " "отрисовка" -#: ../src/ui/dialog/inkscape-preferences.cpp:1407 +#: ../src/ui/dialog/inkscape-preferences.cpp:1409 msgid "Filter effects quality for display" msgstr "Качество фильтров эффектов на экране" #. build custom preferences tab -#: ../src/ui/dialog/inkscape-preferences.cpp:1419 +#: ../src/ui/dialog/inkscape-preferences.cpp:1421 #: ../src/ui/dialog/print.cpp:232 msgid "Rendering" msgstr "Тип печати" #. Note: /options/bitmapoversample removed with Cairo renderer -#: ../src/ui/dialog/inkscape-preferences.cpp:1425 ../src/verbs.cpp:156 +#: ../src/ui/dialog/inkscape-preferences.cpp:1427 ../src/verbs.cpp:156 #: ../src/widgets/calligraphy-toolbar.cpp:626 #, fuzzy msgid "Edit" msgstr "_Правка" -#: ../src/ui/dialog/inkscape-preferences.cpp:1426 +#: ../src/ui/dialog/inkscape-preferences.cpp:1428 msgid "Automatically reload bitmaps" msgstr "Автоматически перезагружать растровые файлы" -#: ../src/ui/dialog/inkscape-preferences.cpp:1428 +#: ../src/ui/dialog/inkscape-preferences.cpp:1430 msgid "Automatically reload linked images when file is changed on disk" msgstr "" "Автоматически заново загружать связанные изображения, когда они меняются на " "диске" -#: ../src/ui/dialog/inkscape-preferences.cpp:1430 +#: ../src/ui/dialog/inkscape-preferences.cpp:1432 #, fuzzy msgid "_Bitmap editor:" msgstr "Редактор растровых файлов:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1432 +#: ../src/ui/dialog/inkscape-preferences.cpp:1434 #: ../share/extensions/guillotine.inx.h:5 ../share/extensions/plotter.inx.h:55 #: ../share/extensions/print_win32_vector.inx.h:2 msgid "Export" msgstr "Экспорт" -#: ../src/ui/dialog/inkscape-preferences.cpp:1434 +#: ../src/ui/dialog/inkscape-preferences.cpp:1436 #, fuzzy msgid "Default export _resolution:" msgstr "Разрешение для экспорта:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1435 +#: ../src/ui/dialog/inkscape-preferences.cpp:1437 msgid "Default bitmap resolution (in dots per inch) in the Export dialog" msgstr "Разрешение растра (в точках на дюйм) в диалоге экспорта по умолчанию" -#: ../src/ui/dialog/inkscape-preferences.cpp:1436 +#: ../src/ui/dialog/inkscape-preferences.cpp:1438 #: ../src/ui/dialog/xml-tree.cpp:912 msgid "Create" msgstr "Создать" -#: ../src/ui/dialog/inkscape-preferences.cpp:1438 +#: ../src/ui/dialog/inkscape-preferences.cpp:1440 #, fuzzy msgid "Resolution for Create Bitmap _Copy:" msgstr "Разрешение растровой копии:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1439 +#: ../src/ui/dialog/inkscape-preferences.cpp:1441 msgid "Resolution used by the Create Bitmap Copy command" msgstr "Разрешение растра при создании растровой копии выделения" -#: ../src/ui/dialog/inkscape-preferences.cpp:1442 +#: ../src/ui/dialog/inkscape-preferences.cpp:1444 msgid "Ask about linking and scaling when importing" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1444 +#: ../src/ui/dialog/inkscape-preferences.cpp:1446 msgid "Pop-up linking and scaling dialog when importing bitmap image." msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1450 +#: ../src/ui/dialog/inkscape-preferences.cpp:1452 #, fuzzy msgid "Bitmap link:" msgstr "Редактор растровых файлов:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1457 +#: ../src/ui/dialog/inkscape-preferences.cpp:1459 msgid "Bitmap scale (image-rendering):" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1462 +#: ../src/ui/dialog/inkscape-preferences.cpp:1464 #, fuzzy msgid "Default _import resolution:" msgstr "Разрешение для экспорта:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1463 +#: ../src/ui/dialog/inkscape-preferences.cpp:1465 #, fuzzy msgid "Default bitmap resolution (in dots per inch) for bitmap import" msgstr "Разрешение растра (в точках на дюйм) в диалоге экспорта по умолчанию" -#: ../src/ui/dialog/inkscape-preferences.cpp:1464 +#: ../src/ui/dialog/inkscape-preferences.cpp:1466 #, fuzzy msgid "Override file resolution" msgstr "Разрешение для экспорта:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1466 +#: ../src/ui/dialog/inkscape-preferences.cpp:1468 #, fuzzy msgid "Use default bitmap resolution in favor of information from file" msgstr "Разрешение растра (в точках на дюйм) в диалоге экспорта по умолчанию" #. rendering outlines for pixmap image tags -#: ../src/ui/dialog/inkscape-preferences.cpp:1470 +#: ../src/ui/dialog/inkscape-preferences.cpp:1472 #, fuzzy msgid "Images in Outline Mode" msgstr "Нарисовать абрис вокруг" -#: ../src/ui/dialog/inkscape-preferences.cpp:1471 +#: ../src/ui/dialog/inkscape-preferences.cpp:1473 msgid "" "When active will render images while in outline mode instead of a red box " "with an x. This is useful for manual tracing." msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1473 +#: ../src/ui/dialog/inkscape-preferences.cpp:1475 msgid "Bitmaps" msgstr "Растр" -#: ../src/ui/dialog/inkscape-preferences.cpp:1485 +#: ../src/ui/dialog/inkscape-preferences.cpp:1487 msgid "" "Select a file of predefined shortcuts to use. Any customized shortcuts you " "create will be added seperately to " msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1488 +#: ../src/ui/dialog/inkscape-preferences.cpp:1490 msgid "Shortcut file:" msgstr "Файл схемы:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1491 +#: ../src/ui/dialog/inkscape-preferences.cpp:1493 #: ../src/ui/dialog/template-load-tab.cpp:48 msgid "Search:" msgstr "Искать:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1503 +#: ../src/ui/dialog/inkscape-preferences.cpp:1505 msgid "Shortcut" msgstr "Комбинация" -#: ../src/ui/dialog/inkscape-preferences.cpp:1504 +#: ../src/ui/dialog/inkscape-preferences.cpp:1506 #: ../src/ui/widget/page-sizer.cpp:260 msgid "Description" msgstr "Описание" -#: ../src/ui/dialog/inkscape-preferences.cpp:1559 +#: ../src/ui/dialog/inkscape-preferences.cpp:1561 #: ../src/ui/dialog/pixelartdialog.cpp:296 #: ../src/ui/dialog/svg-fonts-dialog.cpp:698 #: ../src/ui/dialog/tracedialog.cpp:813 @@ -18991,49 +20548,55 @@ msgstr "Описание" msgid "Reset" msgstr "Сбросить " -#: ../src/ui/dialog/inkscape-preferences.cpp:1559 +#: ../src/ui/dialog/inkscape-preferences.cpp:1561 msgid "" "Remove all your customized keyboard shortcuts, and revert to the shortcuts " "in the shortcut file listed above" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1563 +#: ../src/ui/dialog/inkscape-preferences.cpp:1565 #, fuzzy msgid "Import ..." msgstr "_Импортировать..." -#: ../src/ui/dialog/inkscape-preferences.cpp:1563 +#: ../src/ui/dialog/inkscape-preferences.cpp:1565 msgid "Import custom keyboard shortcuts from a file" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1566 +#: ../src/ui/dialog/inkscape-preferences.cpp:1568 #, fuzzy msgid "Export ..." msgstr "_Экспортировать в растр..." -#: ../src/ui/dialog/inkscape-preferences.cpp:1566 +#: ../src/ui/dialog/inkscape-preferences.cpp:1568 #, fuzzy msgid "Export custom keyboard shortcuts to a file" msgstr "Экспортировать документ в файл PS" -#: ../src/ui/dialog/inkscape-preferences.cpp:1576 +#: ../src/ui/dialog/inkscape-preferences.cpp:1578 msgid "Keyboard Shortcuts" msgstr "Клавиатурные комбинации" #. Find this group in the tree -#: ../src/ui/dialog/inkscape-preferences.cpp:1739 +#: ../src/ui/dialog/inkscape-preferences.cpp:1741 msgid "Misc" msgstr "Прочее" -#: ../src/ui/dialog/inkscape-preferences.cpp:1858 +#: ../src/ui/dialog/inkscape-preferences.cpp:1839 +#, fuzzy +msgctxt "Spellchecker language" +msgid "None" +msgstr "Нет" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1860 msgid "Set the main spell check language" msgstr "Первый по важности язык для проверки орфографии" -#: ../src/ui/dialog/inkscape-preferences.cpp:1861 +#: ../src/ui/dialog/inkscape-preferences.cpp:1863 msgid "Second language:" msgstr "Второй язык:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1862 +#: ../src/ui/dialog/inkscape-preferences.cpp:1864 msgid "" "Set the second spell check language; checking will only stop on words " "unknown in ALL chosen languages" @@ -19041,11 +20604,11 @@ msgstr "" "Второй по важности язык для проверки орфографии; проверка завершится лишь в " "случае ненахождения слов во ВСЕХ выбранных языках." -#: ../src/ui/dialog/inkscape-preferences.cpp:1865 +#: ../src/ui/dialog/inkscape-preferences.cpp:1867 msgid "Third language:" msgstr "Третий язык:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1866 +#: ../src/ui/dialog/inkscape-preferences.cpp:1868 msgid "" "Set the third spell check language; checking will only stop on words unknown " "in ALL chosen languages" @@ -19053,32 +20616,32 @@ msgstr "" "Третий по важности язык для проверки орфографии; проверка завершится лишь в " "случае ненахождения слов во ВСЕХ выбранных языках." -#: ../src/ui/dialog/inkscape-preferences.cpp:1868 +#: ../src/ui/dialog/inkscape-preferences.cpp:1870 msgid "Ignore words with digits" msgstr "Игнорировать слова с цифрами" -#: ../src/ui/dialog/inkscape-preferences.cpp:1870 +#: ../src/ui/dialog/inkscape-preferences.cpp:1872 msgid "Ignore words containing digits, such as \"R2D2\"" msgstr "Инорировать слова, содержащие цифры — например, \"R2D2\"" -#: ../src/ui/dialog/inkscape-preferences.cpp:1872 +#: ../src/ui/dialog/inkscape-preferences.cpp:1874 msgid "Ignore words in ALL CAPITALS" msgstr "Игнорировать слова, написанные заглавными" -#: ../src/ui/dialog/inkscape-preferences.cpp:1874 +#: ../src/ui/dialog/inkscape-preferences.cpp:1876 msgid "Ignore words in all capitals, such as \"IUPAC\"" msgstr "Игнорировать слова, написанные заглавными — например, «НИИЧАВО»" -#: ../src/ui/dialog/inkscape-preferences.cpp:1876 +#: ../src/ui/dialog/inkscape-preferences.cpp:1878 msgid "Spellcheck" msgstr "Проверка орфографии" -#: ../src/ui/dialog/inkscape-preferences.cpp:1896 +#: ../src/ui/dialog/inkscape-preferences.cpp:1898 #, fuzzy msgid "Latency _skew:" msgstr "Отклонение задержки:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1897 +#: ../src/ui/dialog/inkscape-preferences.cpp:1899 #, fuzzy msgid "" "Factor by which the event clock is skewed from the actual time (0.9766 on " @@ -19087,11 +20650,11 @@ msgstr "" "Коэффициент, на который часы событий отклоняются от настоящего времени " "(0.9766 в некоторых системах)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1899 +#: ../src/ui/dialog/inkscape-preferences.cpp:1901 msgid "Pre-render named icons" msgstr "Предварительно отрисовывать именованные значки" -#: ../src/ui/dialog/inkscape-preferences.cpp:1901 +#: ../src/ui/dialog/inkscape-preferences.cpp:1903 msgid "" "When on, named icons will be rendered before displaying the ui. This is for " "working around bugs in GTK+ named icon notification" @@ -19100,89 +20663,89 @@ msgstr "" "интерфейса. Это местечковое решение ошибки в GTK+, касающейся именованных " "значков." -#: ../src/ui/dialog/inkscape-preferences.cpp:1909 +#: ../src/ui/dialog/inkscape-preferences.cpp:1911 msgid "System info" msgstr "Информация о системе" -#: ../src/ui/dialog/inkscape-preferences.cpp:1913 +#: ../src/ui/dialog/inkscape-preferences.cpp:1915 msgid "User config: " msgstr "Пользовательская конфигурация:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1913 +#: ../src/ui/dialog/inkscape-preferences.cpp:1915 msgid "Location of users configuration" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1917 +#: ../src/ui/dialog/inkscape-preferences.cpp:1919 msgid "User preferences: " msgstr "Пользовательские предпочтения:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1917 +#: ../src/ui/dialog/inkscape-preferences.cpp:1919 #, fuzzy msgid "Location of the users preferences file" msgstr "Не удалось загрузить файл параметров %s." -#: ../src/ui/dialog/inkscape-preferences.cpp:1921 +#: ../src/ui/dialog/inkscape-preferences.cpp:1923 msgid "User extensions: " msgstr "Пользовательские расширения:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1921 +#: ../src/ui/dialog/inkscape-preferences.cpp:1923 #, fuzzy msgid "Location of the users extensions" msgstr "Информация о расширениях Inkscape" -#: ../src/ui/dialog/inkscape-preferences.cpp:1925 +#: ../src/ui/dialog/inkscape-preferences.cpp:1927 msgid "User cache: " msgstr "Кэш пользователя:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1925 +#: ../src/ui/dialog/inkscape-preferences.cpp:1927 msgid "Location of users cache" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1933 +#: ../src/ui/dialog/inkscape-preferences.cpp:1935 msgid "Temporary files: " msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1933 +#: ../src/ui/dialog/inkscape-preferences.cpp:1935 msgid "Location of the temporary files used for autosave" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1937 +#: ../src/ui/dialog/inkscape-preferences.cpp:1939 #, fuzzy msgid "Inkscape data: " msgstr "Руководство по Inkscape" -#: ../src/ui/dialog/inkscape-preferences.cpp:1937 +#: ../src/ui/dialog/inkscape-preferences.cpp:1939 #, fuzzy msgid "Location of Inkscape data" msgstr "Информация о расширениях Inkscape" -#: ../src/ui/dialog/inkscape-preferences.cpp:1941 +#: ../src/ui/dialog/inkscape-preferences.cpp:1943 msgid "Inkscape extensions: " msgstr "Расширения Inkscape:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1941 +#: ../src/ui/dialog/inkscape-preferences.cpp:1943 #, fuzzy msgid "Location of the Inkscape extensions" msgstr "Информация о расширениях Inkscape" -#: ../src/ui/dialog/inkscape-preferences.cpp:1950 +#: ../src/ui/dialog/inkscape-preferences.cpp:1952 msgid "System data: " msgstr "Данные о системе" -#: ../src/ui/dialog/inkscape-preferences.cpp:1950 +#: ../src/ui/dialog/inkscape-preferences.cpp:1952 msgid "Locations of system data" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1974 +#: ../src/ui/dialog/inkscape-preferences.cpp:1976 msgid "Icon theme: " msgstr "Тема значков:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1974 +#: ../src/ui/dialog/inkscape-preferences.cpp:1976 #, fuzzy msgid "Locations of icon themes" msgstr "Информация о расширениях Inkscape" -#: ../src/ui/dialog/inkscape-preferences.cpp:1976 +#: ../src/ui/dialog/inkscape-preferences.cpp:1978 msgid "System" msgstr "Системный" @@ -19220,6 +20783,11 @@ msgstr "Устройства" msgid "Link:" msgstr "Связь:" +#: ../src/ui/dialog/input.cpp:742 ../src/ui/dialog/input.cpp:743 +#: ../src/ui/dialog/input.cpp:1571 +msgid "None" +msgstr "Нет" + #: ../src/ui/dialog/input.cpp:758 msgid "Axes count:" msgstr "Число осей:" @@ -19277,6 +20845,12 @@ msgstr "" msgid "Wheel" msgstr "Круг" +#: ../src/ui/dialog/input.cpp:1625 +#, fuzzy +msgctxt "Input device axe" +msgid "None" +msgstr "Нет" + #: ../src/ui/dialog/layer-properties.cpp:55 msgid "Layer name:" msgstr "Имя слоя:" @@ -19402,9 +20976,8 @@ msgid "Top" msgstr "Верх" #: ../src/ui/dialog/livepatheffect-add.cpp:32 -#, fuzzy msgid "Add Path Effect" -msgstr "Добавить контурный эффект" +msgstr "Добавка контурного эффекта" #: ../src/ui/dialog/livepatheffect-editor.cpp:109 msgid "Add path effect" @@ -19794,30 +21367,27 @@ msgstr "" #: ../src/ui/dialog/pixelartdialog.cpp:259 msgid "Heuristics" -msgstr "" +msgstr "Эвристика" #: ../src/ui/dialog/pixelartdialog.cpp:266 -#, fuzzy msgid "_Voronoi diagram" -msgstr "Мозаика Вороного" +msgstr "_Диаграмма Вороного" #: ../src/ui/dialog/pixelartdialog.cpp:267 msgid "Output composed of straight lines" -msgstr "" +msgstr "Вывод составлен из прямых линий" #: ../src/ui/dialog/pixelartdialog.cpp:273 -#, fuzzy msgid "Convert to _B-spline curves" -msgstr "Преобразовать в пунктир" +msgstr "Преобразовать в кривые _Безье" #: ../src/ui/dialog/pixelartdialog.cpp:274 msgid "Preserve staircasing artifacts" -msgstr "" +msgstr "Сохранить артефакты в виде «лесенки»" #: ../src/ui/dialog/pixelartdialog.cpp:281 -#, fuzzy msgid "_Smooth curves" -msgstr "Сгладить _углы" +msgstr "С_глаженные кривые" #: ../src/ui/dialog/pixelartdialog.cpp:282 msgid "The Kopf-Lischinski algorithm" @@ -19843,13 +21413,6 @@ msgid "Execute the trace" msgstr "Векторизовать" #: ../src/ui/dialog/pixelartdialog.cpp:388 -msgid "" -"Image looks too big. Process may take a while and is wise to save your " -"document before continue.\n" -"\n" -"Continue the procedure (without saving)?" -msgstr "" - #: ../src/ui/dialog/pixelartdialog.cpp:422 msgid "" "Image looks too big. Process may take a while and it is wise to save your " @@ -19859,51 +21422,43 @@ msgid "" msgstr "" #: ../src/ui/dialog/pixelartdialog.cpp:499 -#, fuzzy msgid "Trace pixel art" -msgstr "пикселов при" +msgstr "Векторизация пиксельной графики" #: ../src/ui/dialog/polar-arrange-tab.cpp:43 -#, fuzzy msgctxt "Polar arrange tab" msgid "Anchor point:" -msgstr "Ориентация" +msgstr "Точка привязки:" #: ../src/ui/dialog/polar-arrange-tab.cpp:47 -#, fuzzy msgctxt "Polar arrange tab" msgid "Object's bounding box:" -msgstr "площадке" +msgstr "В площадке (BB) объекта:" #: ../src/ui/dialog/polar-arrange-tab.cpp:54 -#, fuzzy msgctxt "Polar arrange tab" msgid "Object's rotational center" msgstr "Центр вращения объекта" #: ../src/ui/dialog/polar-arrange-tab.cpp:59 -#, fuzzy msgctxt "Polar arrange tab" msgid "Arrange on:" -msgstr "Расстановка" +msgstr "Расставить:" #: ../src/ui/dialog/polar-arrange-tab.cpp:63 -#, fuzzy msgctxt "Polar arrange tab" msgid "First selected circle/ellipse/arc" -msgstr "Рисовать круги, эллипсы и дуги" +msgstr "По первой выбранной окружности, эллипсу или дуге" #: ../src/ui/dialog/polar-arrange-tab.cpp:68 -#, fuzzy msgctxt "Polar arrange tab" msgid "Last selected circle/ellipse/arc" -msgstr "Последним выбранным цветом" +msgstr "По последней выбранной окружности, эллипсу или дуге" #: ../src/ui/dialog/polar-arrange-tab.cpp:73 -#, fuzzy msgctxt "Polar arrange tab" msgid "Parameterized:" -msgstr "Параметры" +msgstr "Параметрически:" #: ../src/ui/dialog/polar-arrange-tab.cpp:78 #, fuzzy @@ -19921,18 +21476,16 @@ msgid "Angle X/Y:" msgstr "Угол X:" #: ../src/ui/dialog/polar-arrange-tab.cpp:118 -#, fuzzy msgid "Rotate objects" -msgstr "Вращение узлов" +msgstr "Повернуть объекты" #: ../src/ui/dialog/polar-arrange-tab.cpp:306 msgid "Couldn't find an ellipse in selection" -msgstr "" +msgstr "Не удалось найти эллипс в выделении" #: ../src/ui/dialog/polar-arrange-tab.cpp:371 -#, fuzzy msgid "Arrange on ellipse" -msgstr "Создание эллипса" +msgstr "Расставить по эллипсу" #: ../src/ui/dialog/print.cpp:111 msgid "Could not open temporary PNG for bitmap printing" @@ -19969,7 +21522,7 @@ msgstr "_Пропустить" #: ../src/ui/dialog/spellcheck.cpp:76 msgid "A_dd" -msgstr "" +msgstr "_Добавить" #: ../src/ui/dialog/spellcheck.cpp:78 msgid "_Stop" @@ -20167,7 +21720,7 @@ msgstr "шрифт" msgid "Add font" msgstr "Добавить шрифт" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:912 ../src/ui/dialog/text-edit.cpp:70 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:912 ../src/ui/dialog/text-edit.cpp:69 msgid "_Font" msgstr "_Шрифт" @@ -20232,24 +21785,20 @@ msgid "Current Document" msgstr "Текущий документ" #: ../src/ui/dialog/symbols.cpp:204 -#, fuzzy msgid "Add Symbol from the current document." -msgstr "Отображение только активного слоя" +msgstr "Добавить символ из активного документа" #: ../src/ui/dialog/symbols.cpp:213 -#, fuzzy msgid "Remove Symbol from the current document." -msgstr "Выбрать опорную точку градиента" +msgstr "Удалить символ из активного документа" #: ../src/ui/dialog/symbols.cpp:227 -#, fuzzy msgid "Display more icons in row." -msgstr "Показывать данные измерений" +msgstr "Показывать больше миниатюр в ряду" #: ../src/ui/dialog/symbols.cpp:236 -#, fuzzy msgid "Display fewer icons in row." -msgstr "Показывать данные измерений" +msgstr "Показывать меньше миниатюр в ряду" #: ../src/ui/dialog/symbols.cpp:246 msgid "Toggle 'fit' symbols in icon space." @@ -20257,112 +21806,101 @@ msgstr "" #: ../src/ui/dialog/symbols.cpp:258 msgid "Make symbols smaller by zooming out." -msgstr "" +msgstr "Уменьшить символы уменьшением масштаба" #: ../src/ui/dialog/symbols.cpp:268 msgid "Make symbols bigger by zooming in." -msgstr "" +msgstr "Уменьшить символы увеличением масштаба" #: ../src/ui/dialog/symbols.cpp:622 -#, fuzzy msgid "Unnamed Symbols" -msgstr "Кхмерские символы" +msgstr "Безымянные символы" #: ../src/ui/dialog/template-widget.cpp:36 -#, fuzzy msgid "More info" -msgstr "Больше яркости" +msgstr "Подробности" #: ../src/ui/dialog/template-widget.cpp:38 -#, fuzzy msgid "no template selected" -msgstr "Ни один объект не выбран" +msgstr "Ни один шаблон не выбран" #: ../src/ui/dialog/template-widget.cpp:119 -#, fuzzy msgid "Path: " -msgstr "Контур" +msgstr "" #: ../src/ui/dialog/template-widget.cpp:122 -#, fuzzy msgid "Description: " -msgstr "Описание" +msgstr "Описание: " #: ../src/ui/dialog/template-widget.cpp:124 -#, fuzzy msgid "Keywords: " -msgstr "Ключевые слова:" +msgstr "Ключевые слова: " #: ../src/ui/dialog/template-widget.cpp:131 msgid "By: " -msgstr "" +msgstr "Автор: " -#: ../src/ui/dialog/text-edit.cpp:73 +#: ../src/ui/dialog/text-edit.cpp:72 msgid "Set as _default" msgstr "_Использовать по умолчанию" -#: ../src/ui/dialog/text-edit.cpp:87 +#: ../src/ui/dialog/text-edit.cpp:86 msgid "AaBbCcIiPpQq12369$€¢?.;/()" msgstr "АаБбВвГгЁёФфЩщЯя$€¢?.;/()" #. Align buttons -#: ../src/ui/dialog/text-edit.cpp:97 ../src/widgets/text-toolbar.cpp:1344 +#: ../src/ui/dialog/text-edit.cpp:96 ../src/widgets/text-toolbar.cpp:1344 #: ../src/widgets/text-toolbar.cpp:1345 msgid "Align left" msgstr "Выключка влево" -#: ../src/ui/dialog/text-edit.cpp:98 ../src/widgets/text-toolbar.cpp:1352 +#: ../src/ui/dialog/text-edit.cpp:97 ../src/widgets/text-toolbar.cpp:1352 #: ../src/widgets/text-toolbar.cpp:1353 msgid "Align center" msgstr "Выключка по центру" -#: ../src/ui/dialog/text-edit.cpp:99 ../src/widgets/text-toolbar.cpp:1360 +#: ../src/ui/dialog/text-edit.cpp:98 ../src/widgets/text-toolbar.cpp:1360 #: ../src/widgets/text-toolbar.cpp:1361 msgid "Align right" msgstr "Выключка вправо" -#: ../src/ui/dialog/text-edit.cpp:100 ../src/widgets/text-toolbar.cpp:1369 +#: ../src/ui/dialog/text-edit.cpp:99 ../src/widgets/text-toolbar.cpp:1369 msgid "Justify (only flowed text)" msgstr "Выключка по ширине (только завёрстанный текст)" #. Direction buttons -#: ../src/ui/dialog/text-edit.cpp:109 ../src/widgets/text-toolbar.cpp:1404 +#: ../src/ui/dialog/text-edit.cpp:108 ../src/widgets/text-toolbar.cpp:1404 msgid "Horizontal text" msgstr "Горизонтальный текст" -#: ../src/ui/dialog/text-edit.cpp:110 ../src/widgets/text-toolbar.cpp:1411 +#: ../src/ui/dialog/text-edit.cpp:109 ../src/widgets/text-toolbar.cpp:1411 msgid "Vertical text" msgstr "Вертикальный текст" -#: ../src/ui/dialog/text-edit.cpp:130 ../src/ui/dialog/text-edit.cpp:131 -#, fuzzy +#: ../src/ui/dialog/text-edit.cpp:129 ../src/ui/dialog/text-edit.cpp:130 msgid "Spacing between lines (percent of font size)" -msgstr "Межстрочный интервал (кратный кеглю шрифта)" +msgstr "Межстрочный интервал (в % от кегля шрифта)" -#: ../src/ui/dialog/text-edit.cpp:147 -#, fuzzy +#: ../src/ui/dialog/text-edit.cpp:146 msgid "Text path offset" -msgstr "Смещение по касательной:" +msgstr "Смещение текста от контура" -#: ../src/ui/dialog/text-edit.cpp:588 ../src/ui/dialog/text-edit.cpp:662 +#: ../src/ui/dialog/text-edit.cpp:587 ../src/ui/dialog/text-edit.cpp:661 #: ../src/ui/tools/text-tool.cpp:1455 msgid "Set text style" msgstr "Смена стиля текста" #: ../src/ui/dialog/tile.cpp:36 -#, fuzzy msgctxt "Arrange dialog" msgid "Rectangular grid" msgstr "Прямоугольная сетка" #: ../src/ui/dialog/tile.cpp:37 -#, fuzzy msgctxt "Arrange dialog" msgid "Polar Coordinates" -msgstr "трилинейными координатами" +msgstr "Полярные координаты" #: ../src/ui/dialog/tile.cpp:40 -#, fuzzy msgctxt "Arrange dialog" msgid "_Arrange" msgstr "_Расставить" @@ -20601,7 +22139,7 @@ msgstr "Обведите область изображения, которая #: ../src/ui/dialog/tracedialog.cpp:782 msgid "Live Preview" -msgstr "" +msgstr "Предпросмотр" #: ../src/ui/dialog/tracedialog.cpp:788 msgid "_Update" @@ -21559,24 +23097,24 @@ msgstr "" "<b>Alt</b> для переключения на касательную заливку" #. We hit green anchor, closing Green-Blue-Red -#: ../src/ui/tools/freehand-base.cpp:518 +#: ../src/ui/tools/freehand-base.cpp:517 msgid "Path is closed." msgstr "Контур закрыт." #. We hit bot start and end of single curve, closing paths -#: ../src/ui/tools/freehand-base.cpp:533 +#: ../src/ui/tools/freehand-base.cpp:532 msgid "Closing path." msgstr "Закрываем контур" -#: ../src/ui/tools/freehand-base.cpp:635 +#: ../src/ui/tools/freehand-base.cpp:634 msgid "Draw path" msgstr "Создание контура" -#: ../src/ui/tools/freehand-base.cpp:792 +#: ../src/ui/tools/freehand-base.cpp:791 msgid "Creating single dot" msgstr "Рисуется точка" -#: ../src/ui/tools/freehand-base.cpp:793 +#: ../src/ui/tools/freehand-base.cpp:792 msgid "Create single dot" msgstr "Рисование точки" @@ -21758,7 +23296,7 @@ msgstr "<b>Ctrl</b>: ограничить угол" msgid "FIXME<b>Shift</b>: draw mesh around the starting point" msgstr "<b>Shift</b>: рисовать вокруг начальной точки" -#: ../src/ui/tools/node-tool.cpp:598 +#: ../src/ui/tools/node-tool.cpp:594 msgctxt "Node tool tip" msgid "" "<b>Shift</b>: drag to add nodes to the selection, click to toggle object " @@ -21767,12 +23305,12 @@ msgstr "" "<b>Shift</b>: перетаскивание добавляет узлы в выделение, щелчок переключает " "выделение" -#: ../src/ui/tools/node-tool.cpp:602 +#: ../src/ui/tools/node-tool.cpp:598 msgctxt "Node tool tip" msgid "<b>Shift</b>: drag to add nodes to the selection" msgstr "<b>Shift</b>: перетаскивание добавляет узлы в выделение" -#: ../src/ui/tools/node-tool.cpp:614 +#: ../src/ui/tools/node-tool.cpp:610 #, fuzzy, c-format msgid "<b>%u of %u</b> node selected." msgid_plural "<b>%u of %u</b> nodes selected." @@ -21780,38 +23318,38 @@ msgstr[0] "<b>%i</b> из <b>%i</b> узла выделен. %s." msgstr[1] "<b>%i</b> из <b>%i</b> узлов выделено. %s." msgstr[2] "<b>%i</b> из <b>%i</b> узлов выделено. %s." -#: ../src/ui/tools/node-tool.cpp:620 +#: ../src/ui/tools/node-tool.cpp:616 #, fuzzy, c-format msgctxt "Node tool tip" msgid "%s Drag to select nodes, click to edit only this object (more: Shift)" msgstr "" "Перетаскивание выделяет узлы, щелчок включает изменение только этого объекта" -#: ../src/ui/tools/node-tool.cpp:626 +#: ../src/ui/tools/node-tool.cpp:622 #, fuzzy, c-format msgctxt "Node tool tip" msgid "%s Drag to select nodes, click clear the selection" msgstr "Перетаскивание выделяет узлы, щелчок снимает выделение" -#: ../src/ui/tools/node-tool.cpp:635 +#: ../src/ui/tools/node-tool.cpp:631 msgctxt "Node tool tip" msgid "Drag to select nodes, click to edit only this object" msgstr "" "Перетаскивание выделяет узлы, щелчок включает изменение только этого объекта" -#: ../src/ui/tools/node-tool.cpp:638 +#: ../src/ui/tools/node-tool.cpp:634 msgctxt "Node tool tip" msgid "Drag to select nodes, click to clear the selection" msgstr "Перетаскивание выделяет узлы, щелчок снимает выделение" -#: ../src/ui/tools/node-tool.cpp:643 +#: ../src/ui/tools/node-tool.cpp:639 msgctxt "Node tool tip" msgid "Drag to select objects to edit, click to edit this object (more: Shift)" msgstr "" "Перетаскивание выделяет объекты для изменения, щелчок включает изменение " "объекта (попробуйте Shift)" -#: ../src/ui/tools/node-tool.cpp:646 +#: ../src/ui/tools/node-tool.cpp:642 msgctxt "Node tool tip" msgid "Drag to select objects to edit" msgstr "Перетаскивание выделяет объекты для изменения" @@ -22462,8 +24000,8 @@ msgid "MetadataLicence|Other" msgstr "Другая" #: ../src/ui/widget/object-composite-settings.cpp:67 -#: ../src/ui/widget/selected-style.cpp:1095 -#: ../src/ui/widget/selected-style.cpp:1096 +#: ../src/ui/widget/selected-style.cpp:1099 +#: ../src/ui/widget/selected-style.cpp:1100 msgid "Opacity (%)" msgstr "Непрозрачность (%)" @@ -22472,8 +24010,8 @@ msgid "Change blur" msgstr "Смена размывания" #: ../src/ui/widget/object-composite-settings.cpp:220 -#: ../src/ui/widget/selected-style.cpp:927 -#: ../src/ui/widget/selected-style.cpp:1221 +#: ../src/ui/widget/selected-style.cpp:931 +#: ../src/ui/widget/selected-style.cpp:1225 msgid "Change opacity" msgstr "Смена непрозрачности" @@ -22721,270 +24259,275 @@ msgid "N/A" msgstr "Н/Д" #: ../src/ui/widget/selected-style.cpp:180 -#: ../src/ui/widget/selected-style.cpp:1088 -#: ../src/ui/widget/selected-style.cpp:1089 +#: ../src/ui/widget/selected-style.cpp:1092 +#: ../src/ui/widget/selected-style.cpp:1093 #: ../src/widgets/gradient-toolbar.cpp:162 msgid "Nothing selected" msgstr "Ничего не выбрано" -#: ../src/ui/widget/selected-style.cpp:182 -#: ../src/ui/widget/style-swatch.cpp:320 +#: ../src/ui/widget/selected-style.cpp:183 #, fuzzy -msgctxt "Fill and stroke" +msgctxt "Fill" msgid "<i>None</i>" msgstr "<i>Нет</i>" #: ../src/ui/widget/selected-style.cpp:185 +#, fuzzy +msgctxt "Stroke" +msgid "<i>None</i>" +msgstr "<i>Нет</i>" + +#: ../src/ui/widget/selected-style.cpp:189 #: ../src/ui/widget/style-swatch.cpp:322 #, fuzzy msgctxt "Fill and stroke" msgid "No fill" msgstr "Без заливки" -#: ../src/ui/widget/selected-style.cpp:185 +#: ../src/ui/widget/selected-style.cpp:189 #: ../src/ui/widget/style-swatch.cpp:322 #, fuzzy msgctxt "Fill and stroke" msgid "No stroke" msgstr "Без обводки" -#: ../src/ui/widget/selected-style.cpp:187 +#: ../src/ui/widget/selected-style.cpp:191 #: ../src/ui/widget/style-swatch.cpp:301 ../src/widgets/paint-selector.cpp:242 msgid "Pattern" msgstr "Текстура" -#: ../src/ui/widget/selected-style.cpp:190 +#: ../src/ui/widget/selected-style.cpp:194 #: ../src/ui/widget/style-swatch.cpp:303 msgid "Pattern fill" msgstr "Текстурная заливка" -#: ../src/ui/widget/selected-style.cpp:190 +#: ../src/ui/widget/selected-style.cpp:194 #: ../src/ui/widget/style-swatch.cpp:303 msgid "Pattern stroke" msgstr "Текстурная обводка" -#: ../src/ui/widget/selected-style.cpp:192 +#: ../src/ui/widget/selected-style.cpp:196 msgid "<b>L</b>" msgstr "<b>Л:</b>" -#: ../src/ui/widget/selected-style.cpp:195 +#: ../src/ui/widget/selected-style.cpp:199 #: ../src/ui/widget/style-swatch.cpp:295 msgid "Linear gradient fill" msgstr "Линейная градиентная заливка" -#: ../src/ui/widget/selected-style.cpp:195 +#: ../src/ui/widget/selected-style.cpp:199 #: ../src/ui/widget/style-swatch.cpp:295 msgid "Linear gradient stroke" msgstr "Линейная градиентная обводка" -#: ../src/ui/widget/selected-style.cpp:202 +#: ../src/ui/widget/selected-style.cpp:206 msgid "<b>R</b>" msgstr "<b>Р</b>" -#: ../src/ui/widget/selected-style.cpp:205 +#: ../src/ui/widget/selected-style.cpp:209 #: ../src/ui/widget/style-swatch.cpp:299 msgid "Radial gradient fill" msgstr "Радиальная градиентная заливка" -#: ../src/ui/widget/selected-style.cpp:205 +#: ../src/ui/widget/selected-style.cpp:209 #: ../src/ui/widget/style-swatch.cpp:299 msgid "Radial gradient stroke" msgstr "Радиальная градиентная обводка" -#: ../src/ui/widget/selected-style.cpp:212 +#: ../src/ui/widget/selected-style.cpp:216 msgid "Different" msgstr "Разные" -#: ../src/ui/widget/selected-style.cpp:215 +#: ../src/ui/widget/selected-style.cpp:219 msgid "Different fills" msgstr "Разные заливки" -#: ../src/ui/widget/selected-style.cpp:215 +#: ../src/ui/widget/selected-style.cpp:219 msgid "Different strokes" msgstr "Разные обводки" -#: ../src/ui/widget/selected-style.cpp:217 +#: ../src/ui/widget/selected-style.cpp:221 #: ../src/ui/widget/style-swatch.cpp:325 msgid "<b>Unset</b>" msgstr "<b>Снята</b>" #. TRANSLATORS COMMENT: unset is a verb here -#: ../src/ui/widget/selected-style.cpp:220 -#: ../src/ui/widget/selected-style.cpp:278 -#: ../src/ui/widget/selected-style.cpp:559 +#: ../src/ui/widget/selected-style.cpp:224 +#: ../src/ui/widget/selected-style.cpp:282 +#: ../src/ui/widget/selected-style.cpp:563 #: ../src/ui/widget/style-swatch.cpp:327 ../src/widgets/fill-style.cpp:712 msgid "Unset fill" msgstr "Снять заливку" -#: ../src/ui/widget/selected-style.cpp:220 -#: ../src/ui/widget/selected-style.cpp:278 -#: ../src/ui/widget/selected-style.cpp:575 +#: ../src/ui/widget/selected-style.cpp:224 +#: ../src/ui/widget/selected-style.cpp:282 +#: ../src/ui/widget/selected-style.cpp:579 #: ../src/ui/widget/style-swatch.cpp:327 ../src/widgets/fill-style.cpp:712 msgid "Unset stroke" msgstr "Снять обводку" -#: ../src/ui/widget/selected-style.cpp:223 +#: ../src/ui/widget/selected-style.cpp:227 msgid "Flat color fill" msgstr "Цвет сплошной заливки" -#: ../src/ui/widget/selected-style.cpp:223 +#: ../src/ui/widget/selected-style.cpp:227 msgid "Flat color stroke" msgstr "Цвет сплошной обводки" #. TRANSLATOR COMMENT: A means "Averaged" -#: ../src/ui/widget/selected-style.cpp:226 +#: ../src/ui/widget/selected-style.cpp:230 msgid "<b>a</b>" msgstr "<b>a</b>" -#: ../src/ui/widget/selected-style.cpp:229 +#: ../src/ui/widget/selected-style.cpp:233 msgid "Fill is averaged over selected objects" msgstr "Заливка усреднена для выбранных объектов" -#: ../src/ui/widget/selected-style.cpp:229 +#: ../src/ui/widget/selected-style.cpp:233 msgid "Stroke is averaged over selected objects" msgstr "Обводка усреднена для выбранных объектов" #. TRANSLATOR COMMENT: M means "Multiple" -#: ../src/ui/widget/selected-style.cpp:232 +#: ../src/ui/widget/selected-style.cpp:236 msgid "<b>m</b>" msgstr "<b>m</b>" -#: ../src/ui/widget/selected-style.cpp:235 +#: ../src/ui/widget/selected-style.cpp:239 msgid "Multiple selected objects have the same fill" msgstr "У нескольких выбранных объектов одинаковая заливка" -#: ../src/ui/widget/selected-style.cpp:235 +#: ../src/ui/widget/selected-style.cpp:239 msgid "Multiple selected objects have the same stroke" msgstr "У нескольких выбранных объектов одинаковая обводка" -#: ../src/ui/widget/selected-style.cpp:237 +#: ../src/ui/widget/selected-style.cpp:241 msgid "Edit fill..." msgstr "Изменить заливку..." -#: ../src/ui/widget/selected-style.cpp:237 +#: ../src/ui/widget/selected-style.cpp:241 msgid "Edit stroke..." msgstr "Изменить обводку..." -#: ../src/ui/widget/selected-style.cpp:241 +#: ../src/ui/widget/selected-style.cpp:245 msgid "Last set color" msgstr "Последним использованным цветом" -#: ../src/ui/widget/selected-style.cpp:245 +#: ../src/ui/widget/selected-style.cpp:249 msgid "Last selected color" msgstr "Последним выбранным цветом" -#: ../src/ui/widget/selected-style.cpp:261 +#: ../src/ui/widget/selected-style.cpp:265 msgid "Copy color" msgstr "Скопировать цвет" -#: ../src/ui/widget/selected-style.cpp:265 +#: ../src/ui/widget/selected-style.cpp:269 msgid "Paste color" msgstr "Вставить цвет" -#: ../src/ui/widget/selected-style.cpp:269 -#: ../src/ui/widget/selected-style.cpp:852 +#: ../src/ui/widget/selected-style.cpp:273 +#: ../src/ui/widget/selected-style.cpp:856 msgid "Swap fill and stroke" msgstr "Поменять местами заливку и обводку" -#: ../src/ui/widget/selected-style.cpp:273 -#: ../src/ui/widget/selected-style.cpp:584 -#: ../src/ui/widget/selected-style.cpp:593 +#: ../src/ui/widget/selected-style.cpp:277 +#: ../src/ui/widget/selected-style.cpp:588 +#: ../src/ui/widget/selected-style.cpp:597 msgid "Make fill opaque" msgstr "Сделать заливку непрозрачной" -#: ../src/ui/widget/selected-style.cpp:273 +#: ../src/ui/widget/selected-style.cpp:277 msgid "Make stroke opaque" msgstr "Сделать обводку непрозрачной" -#: ../src/ui/widget/selected-style.cpp:282 -#: ../src/ui/widget/selected-style.cpp:541 ../src/widgets/fill-style.cpp:510 +#: ../src/ui/widget/selected-style.cpp:286 +#: ../src/ui/widget/selected-style.cpp:545 ../src/widgets/fill-style.cpp:510 msgid "Remove fill" msgstr "Полностью удалить заливку" -#: ../src/ui/widget/selected-style.cpp:282 -#: ../src/ui/widget/selected-style.cpp:550 ../src/widgets/fill-style.cpp:510 +#: ../src/ui/widget/selected-style.cpp:286 +#: ../src/ui/widget/selected-style.cpp:554 ../src/widgets/fill-style.cpp:510 msgid "Remove stroke" msgstr "Удалить обводку" -#: ../src/ui/widget/selected-style.cpp:605 +#: ../src/ui/widget/selected-style.cpp:609 msgid "Apply last set color to fill" msgstr "Заливка последним примененным цветом" -#: ../src/ui/widget/selected-style.cpp:617 +#: ../src/ui/widget/selected-style.cpp:621 msgid "Apply last set color to stroke" msgstr "Обводка последним примененным цветом" -#: ../src/ui/widget/selected-style.cpp:628 +#: ../src/ui/widget/selected-style.cpp:632 msgid "Apply last selected color to fill" msgstr "Заливка последним выбранным цветом" -#: ../src/ui/widget/selected-style.cpp:639 +#: ../src/ui/widget/selected-style.cpp:643 msgid "Apply last selected color to stroke" msgstr "Обводка последним выбранным цветом" -#: ../src/ui/widget/selected-style.cpp:665 +#: ../src/ui/widget/selected-style.cpp:669 msgid "Invert fill" msgstr "Инвертирование заливки" -#: ../src/ui/widget/selected-style.cpp:689 +#: ../src/ui/widget/selected-style.cpp:693 msgid "Invert stroke" msgstr "Инвертирование обводки" -#: ../src/ui/widget/selected-style.cpp:701 +#: ../src/ui/widget/selected-style.cpp:705 msgid "White fill" msgstr "Заливка белым цветом" -#: ../src/ui/widget/selected-style.cpp:713 +#: ../src/ui/widget/selected-style.cpp:717 msgid "White stroke" msgstr "Заливка обводки белым цветом" -#: ../src/ui/widget/selected-style.cpp:725 +#: ../src/ui/widget/selected-style.cpp:729 msgid "Black fill" msgstr "Заливка черным цветом" -#: ../src/ui/widget/selected-style.cpp:737 +#: ../src/ui/widget/selected-style.cpp:741 msgid "Black stroke" msgstr "Заливка обводки черным цветом" -#: ../src/ui/widget/selected-style.cpp:780 +#: ../src/ui/widget/selected-style.cpp:784 msgid "Paste fill" msgstr "Вставка заливки" -#: ../src/ui/widget/selected-style.cpp:798 +#: ../src/ui/widget/selected-style.cpp:802 msgid "Paste stroke" msgstr "Вставка обводки" -#: ../src/ui/widget/selected-style.cpp:954 +#: ../src/ui/widget/selected-style.cpp:958 msgid "Change stroke width" msgstr "Смена толщины обводки" -#: ../src/ui/widget/selected-style.cpp:1049 +#: ../src/ui/widget/selected-style.cpp:1053 msgid ", drag to adjust" msgstr ", потащите мышкой, чтобы изменить его" -#: ../src/ui/widget/selected-style.cpp:1134 +#: ../src/ui/widget/selected-style.cpp:1138 #, c-format msgid "Stroke width: %.5g%s%s" msgstr "Толщина обводки: %.5g%s%s" -#: ../src/ui/widget/selected-style.cpp:1138 +#: ../src/ui/widget/selected-style.cpp:1142 msgid " (averaged)" msgstr "(усреднено)" -#: ../src/ui/widget/selected-style.cpp:1166 +#: ../src/ui/widget/selected-style.cpp:1170 msgid "0 (transparent)" msgstr "0 (прозрачно)" -#: ../src/ui/widget/selected-style.cpp:1190 +#: ../src/ui/widget/selected-style.cpp:1194 msgid "100% (opaque)" msgstr "100% (непрозрачно)" -#: ../src/ui/widget/selected-style.cpp:1362 +#: ../src/ui/widget/selected-style.cpp:1366 #, fuzzy msgid "Adjust alpha" msgstr "Коррекция тона" -#: ../src/ui/widget/selected-style.cpp:1364 +#: ../src/ui/widget/selected-style.cpp:1368 #, fuzzy, c-format msgid "" "Adjusting <b>alpha</b>: was %.3g, now <b>%.3g</b> (diff %.3g); with <b>Ctrl</" @@ -22994,11 +24537,11 @@ msgstr "" "Коррекция <b>яркости</b>: было %.3g, стало <b>%.3g</b> (разница %.3g); с " "<b>Shift</b> для насыщенности, без модификаторов смены тона" -#: ../src/ui/widget/selected-style.cpp:1368 +#: ../src/ui/widget/selected-style.cpp:1372 msgid "Adjust saturation" msgstr "Коррекция насыщенности" -#: ../src/ui/widget/selected-style.cpp:1370 +#: ../src/ui/widget/selected-style.cpp:1374 #, fuzzy, c-format msgid "" "Adjusting <b>saturation</b>: was %.3g, now <b>%.3g</b> (diff %.3g); with " @@ -23008,11 +24551,11 @@ msgstr "" "Коррекция <b>насыщенности</b>: было %.3g, стало <b>%.3g</b> (разница %.3g); " "с <b>Ctrl</b> для смены яркости, без модификаторов смены тона" -#: ../src/ui/widget/selected-style.cpp:1374 +#: ../src/ui/widget/selected-style.cpp:1378 msgid "Adjust lightness" msgstr "Коррекция яркости" -#: ../src/ui/widget/selected-style.cpp:1376 +#: ../src/ui/widget/selected-style.cpp:1380 #, fuzzy, c-format msgid "" "Adjusting <b>lightness</b>: was %.3g, now <b>%.3g</b> (diff %.3g); with " @@ -23022,11 +24565,11 @@ msgstr "" "Коррекция <b>яркости</b>: было %.3g, стало <b>%.3g</b> (разница %.3g); с " "<b>Shift</b> для насыщенности, без модификаторов смены тона" -#: ../src/ui/widget/selected-style.cpp:1380 +#: ../src/ui/widget/selected-style.cpp:1384 msgid "Adjust hue" msgstr "Коррекция тона" -#: ../src/ui/widget/selected-style.cpp:1382 +#: ../src/ui/widget/selected-style.cpp:1386 #, fuzzy, c-format msgid "" "Adjusting <b>hue</b>: was %.3g, now <b>%.3g</b> (diff %.3g); with <b>Shift</" @@ -23036,12 +24579,12 @@ msgstr "" "Коррекция <b>тона</b>: было %.3g, стало <b>%.3g</b> (разница %.3g); с " "<b>Shift</b> для смены насыщенности, с <b>Ctrl</b> для смены яркости" -#: ../src/ui/widget/selected-style.cpp:1500 -#: ../src/ui/widget/selected-style.cpp:1514 +#: ../src/ui/widget/selected-style.cpp:1504 +#: ../src/ui/widget/selected-style.cpp:1518 msgid "Adjust stroke width" msgstr "Изменить толщину обводки" -#: ../src/ui/widget/selected-style.cpp:1501 +#: ../src/ui/widget/selected-style.cpp:1505 #, c-format msgid "Adjusting <b>stroke width</b>: was %.3g, now <b>%.3g</b> (diff %.3g)" msgstr "" @@ -23071,6 +24614,12 @@ msgstr "Заливка: %06x/%.3g" msgid "Stroke: %06x/%.3g" msgstr "Обводка: %06x/%.3g" +#: ../src/ui/widget/style-swatch.cpp:320 +#, fuzzy +msgctxt "Fill and stroke" +msgid "<i>None</i>" +msgstr "<i>Нет</i>" + #: ../src/ui/widget/style-swatch.cpp:347 #, c-format msgid "Stroke width: %.5g%s" @@ -23134,8 +24683,8 @@ msgstr[2] "" msgid "" "shared by <b>%d</b> box; drag with <b>Shift</b> to separate selected box(es)" msgid_plural "" -"shared by <b>%d</b> boxes; drag with <b>Shift</b> to separate selected box" -"(es)" +"shared by <b>%d</b> boxes; drag with <b>Shift</b> to separate selected " +"box(es)" msgstr[0] "" "разделяемых <b>%d</b> параллелепипедом; перетаскиванием с <b>Shift</b> " "разделяются выбранные параллелепипеды" @@ -23337,6 +24886,12 @@ msgid "Unhide all objects in all layers" msgstr "Раскрыть все объекты во всех слоях" #: ../src/verbs.cpp:2349 +#, fuzzy +msgctxt "Verb" +msgid "None" +msgstr "Нет" + +#: ../src/verbs.cpp:2349 msgid "Does nothing" msgstr "Нет действий" @@ -23730,7 +25285,6 @@ msgid "Select all objects in all visible and unlocked layers" msgstr "Выделить все объекты во всех видимых и незаблокированных слоях" #: ../src/verbs.cpp:2450 -#, fuzzy msgid "Fill _and Stroke" msgstr "_Заливка и обводка" @@ -23742,9 +25296,8 @@ msgstr "" "Выделите <b>объект с текстурной заливкой</b> для извлечения из него объектов." #: ../src/verbs.cpp:2452 -#, fuzzy msgid "_Fill Color" -msgstr "Цвет заливки" +msgstr "_Цвет заливки" #: ../src/verbs.cpp:2453 #, fuzzy @@ -23753,9 +25306,8 @@ msgstr "" "Выделите <b>объект с текстурной заливкой</b> для извлечения из него объектов." #: ../src/verbs.cpp:2454 -#, fuzzy msgid "_Stroke Color" -msgstr "Цвет обводки" +msgstr "Ц_вет обводки" #: ../src/verbs.cpp:2455 #, fuzzy @@ -23765,7 +25317,6 @@ msgstr "" "скопированного объекта" #: ../src/verbs.cpp:2456 -#, fuzzy msgid "Stroke St_yle" msgstr "_Стиль обводки" @@ -23779,9 +25330,8 @@ msgstr "" "скопированного объекта" #: ../src/verbs.cpp:2458 -#, fuzzy msgid "_Object Type" -msgstr "Тип объекта:" +msgstr "_Тип объекта" #: ../src/verbs.cpp:2459 #, fuzzy @@ -24067,9 +25617,8 @@ msgid "Create one or more paths from a bitmap by tracing it" msgstr "Создать один или более контуров из растра, векторизовав его" #: ../src/verbs.cpp:2551 -#, fuzzy msgid "Trace Pixel Art..." -msgstr "_Векторизовать растр..." +msgstr "Векторизовать пиксельную графику..." #: ../src/verbs.cpp:2552 msgid "Create paths using Kopf-Lischinski algorithm to vectorize pixel art" @@ -24102,9 +25651,8 @@ msgid "Break selected paths into subpaths" msgstr "Разбить выделенные контуры на части" #: ../src/verbs.cpp:2561 -#, fuzzy msgid "_Arrange..." -msgstr "_Расставить" +msgstr "_Расставить..." #: ../src/verbs.cpp:2562 #, fuzzy @@ -24265,22 +25813,19 @@ msgid "_Lock/Unlock Current Layer" msgstr "_Заблокировать/разблокировать текущий слой" #: ../src/verbs.cpp:2603 -#, fuzzy msgid "Toggle lock on current layer" -msgstr "Отображение только активного слоя" +msgstr "Переключить заблокированность активного слоя" #: ../src/verbs.cpp:2604 msgid "_Show/hide Current Layer" msgstr "Пока_зать/скрыть текущий слой" #: ../src/verbs.cpp:2605 -#, fuzzy msgid "Toggle visibility of current layer" -msgstr "Отображение только активного слоя" +msgstr "Переключить видимость активного слоя" #. Object #: ../src/verbs.cpp:2608 -#, fuzzy msgid "Rotate _90° CW" msgstr "Повернуть на _90° по часовой стрелке" @@ -24291,7 +25836,6 @@ msgid "Rotate selection 90° clockwise" msgstr "Повернуть выделение на 90° по часовой стрелке" #: ../src/verbs.cpp:2612 -#, fuzzy msgid "Rotate 9_0° CCW" msgstr "Повернуть на 9_0° против часовой стрелки" @@ -24810,14 +26354,12 @@ msgid "Show or hide the canvas scrollbars" msgstr "Показать или скрыть полосы прокрутки холста" #: ../src/verbs.cpp:2742 -#, fuzzy msgid "Page _Grid" -msgstr "_Ширина страницы" +msgstr "Сетка стран_ицы" #: ../src/verbs.cpp:2742 -#, fuzzy msgid "Show or hide the page grid" -msgstr "Показать или скрыть сетку" +msgstr "Показать или скрыть сетку страницы" #: ../src/verbs.cpp:2743 msgid "G_uides" @@ -26240,17 +27782,17 @@ msgid "Font family" msgstr "Гарнитура" #. Style frame -#: ../src/widgets/font-selector.cpp:192 +#: ../src/widgets/font-selector.cpp:193 msgctxt "Font selector" msgid "Style" msgstr "Стиль" -#: ../src/widgets/font-selector.cpp:224 +#: ../src/widgets/font-selector.cpp:225 #, fuzzy msgid "Face" msgstr "Стороны" -#: ../src/widgets/font-selector.cpp:253 ../share/extensions/dots.inx.h:3 +#: ../src/widgets/font-selector.cpp:254 ../share/extensions/dots.inx.h:3 msgid "Font size:" msgstr "Кегль шрифта:" @@ -26370,6 +27912,12 @@ msgstr "Выбрать градиент" msgid "Select:" msgstr "Градиенты:" +#: ../src/widgets/gradient-toolbar.cpp:1112 +#, fuzzy +msgctxt "Gradient repeat type" +msgid "None" +msgstr "Нет" + #: ../src/widgets/gradient-toolbar.cpp:1115 msgid "Reflected" msgstr "Отражённый" @@ -27038,6 +28586,12 @@ msgstr "Рисовать последовательность прямых от msgid "Mode of new lines drawn by this tool" msgstr "Режим рисования новых контуров этим инструментом" +#: ../src/widgets/pencil-toolbar.cpp:155 +#, fuzzy +msgctxt "Freehand shape" +msgid "None" +msgstr "Нет" + #: ../src/widgets/pencil-toolbar.cpp:156 msgid "Triangle in" msgstr "Угасание" @@ -27877,6 +29431,12 @@ msgstr "Искажение:" msgid "Scatter randomly the corners and angles" msgstr "Случайным образом смещать вершины и вращать углы" +#: ../src/widgets/stroke-marker-selector.cpp:388 +#, fuzzy +msgctxt "Marker" +msgid "None" +msgstr "Нет" + #: ../src/widgets/stroke-style.cpp:192 msgid "Stroke width" msgstr "Прибавить толщину обводки" @@ -30165,8 +31725,8 @@ msgstr "" "cos(x); sin(x); tan(x); degrees(x); radians(x); \n" "cosh(x); sinh(x); tanh(x)\n" "\n" -"Кроме того, доступны обратные тригонометрические функции: sec(x); csc(x); cot" -"(x)\n" +"Кроме того, доступны обратные тригонометрические функции: sec(x); csc(x); " +"cot(x)\n" "\n" "Вы можете указывать радиус окружности вокруг заказной точки при помощи " "формулы, которая также может содержать длины сторон, углы и т.д. Вы также " @@ -30207,9 +31767,8 @@ msgid "Character encoding:" msgstr "Кодировка символов:" #: ../share/extensions/dxf_input.inx.h:9 -#, fuzzy msgid "Text Font:" -msgstr "Импорт текстовых файлов" +msgstr "Шрифт текста:" #: ../share/extensions/dxf_input.inx.h:11 #, fuzzy @@ -30316,7 +31875,6 @@ msgid "ft" msgstr "ft" #: ../share/extensions/dxf_outlines.inx.h:17 -#, fuzzy msgid "Latin 1" msgstr "Латиница" @@ -30401,9 +31959,8 @@ msgid "Edge 3D" msgstr "Объёмные края" #: ../share/extensions/edge3d.inx.h:2 -#, fuzzy msgid "Illumination Angle:" -msgstr "Угол освещения" +msgstr "Угол освещения:" #: ../share/extensions/edge3d.inx.h:3 #, fuzzy @@ -30416,22 +31973,18 @@ msgid "Only black and white:" msgstr "Только ч/б" #: ../share/extensions/edge3d.inx.h:5 -#, fuzzy msgid "Stroke width:" -msgstr "Прибавить толщину обводки" +msgstr "Толщина обводки:" #: ../share/extensions/edge3d.inx.h:6 -#, fuzzy msgid "Blur stdDeviation:" -msgstr "Стд. отклонение размывания" +msgstr "Стд. отклонение размывания:" #: ../share/extensions/edge3d.inx.h:7 -#, fuzzy msgid "Blur width:" -msgstr "Ширина размывания" +msgstr "Ширина размывания:" #: ../share/extensions/edge3d.inx.h:8 -#, fuzzy msgid "Blur height:" msgstr "Высота размывания:" @@ -30445,18 +31998,16 @@ msgid "Embed only selected images" msgstr "Встроить только выбранные растровые файлы" #: ../share/extensions/embedselectedimages.inx.h:1 -#, fuzzy msgid "Embed Selected Images" -msgstr "Встроить только выбранные растровые файлы" +msgstr "Встроить выбранные изображения" #: ../share/extensions/empty_page.inx.h:1 msgid "Empty Page" -msgstr "" +msgstr "Чистая страница" #: ../share/extensions/empty_page.inx.h:2 -#, fuzzy msgid "Page size:" -msgstr "_Размер:" +msgstr "Размер страницы:" #: ../share/extensions/empty_page.inx.h:3 msgid "Page orientation:" @@ -30467,7 +32018,6 @@ msgid "EPS Input" msgstr "Импорт файлов EPS" #: ../share/extensions/eqtexsvg.inx.h:1 -#, fuzzy msgid "LaTeX" msgstr "Печать в LaTeX" @@ -30681,7 +32231,6 @@ msgstr "" "Также возможно использование констант pi и e." #: ../share/extensions/funcplot.inx.h:31 -#, fuzzy msgid "Function:" msgstr "Функция" @@ -30979,9 +32528,8 @@ msgstr "Параметры" #: ../share/extensions/gcodetools_graffiti.inx.h:29 #: ../share/extensions/gcodetools_lathe.inx.h:30 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:19 -#, fuzzy msgid "File:" -msgstr "_Файл" +msgstr "Файл:" #: ../share/extensions/gcodetools_area.inx.h:38 #: ../share/extensions/gcodetools_dxf_points.inx.h:10 @@ -30998,9 +32546,8 @@ msgstr "" #: ../share/extensions/gcodetools_graffiti.inx.h:31 #: ../share/extensions/gcodetools_lathe.inx.h:32 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:21 -#, fuzzy msgid "Directory:" -msgstr "Направление" +msgstr "Каталог:" #: ../share/extensions/gcodetools_area.inx.h:40 #: ../share/extensions/gcodetools_dxf_points.inx.h:12 @@ -31028,7 +32575,7 @@ msgstr "Единица (mm или in):" #: ../share/extensions/gcodetools_lathe.inx.h:35 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:24 msgid "Post-processor:" -msgstr "" +msgstr "Послеобработчик:" #: ../share/extensions/gcodetools_area.inx.h:43 #: ../share/extensions/gcodetools_dxf_points.inx.h:15 @@ -31045,9 +32592,8 @@ msgstr "" #: ../share/extensions/gcodetools_graffiti.inx.h:35 #: ../share/extensions/gcodetools_lathe.inx.h:37 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:26 -#, fuzzy msgid "Generate log file" -msgstr "Создание из контура" +msgstr "Создать файл журнала" #: ../share/extensions/gcodetools_area.inx.h:45 #: ../share/extensions/gcodetools_dxf_points.inx.h:17 @@ -31059,6 +32605,17 @@ msgstr "Создание из контура" msgid "Full path to log file:" msgstr "Цвет сплошной заливки" +#: ../share/extensions/gcodetools_area.inx.h:48 +#: ../share/extensions/gcodetools_dxf_points.inx.h:20 +#: ../share/extensions/gcodetools_engraving.inx.h:26 +#: ../share/extensions/gcodetools_graffiti.inx.h:37 +#: ../share/extensions/gcodetools_lathe.inx.h:41 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:30 +#, fuzzy +msgctxt "GCode postprocessor" +msgid "None" +msgstr "Нет" + #: ../share/extensions/gcodetools_area.inx.h:49 #: ../share/extensions/gcodetools_dxf_points.inx.h:21 #: ../share/extensions/gcodetools_engraving.inx.h:27 @@ -31173,7 +32730,7 @@ msgstr "" #: ../share/extensions/gcodetools_graffiti.inx.h:1 msgid "Graffiti" -msgstr "" +msgstr "Граффити" #: ../share/extensions/gcodetools_graffiti.inx.h:2 #, fuzzy @@ -31191,9 +32748,8 @@ msgid "Start position (x;y):" msgstr "Размещение макета:" #: ../share/extensions/gcodetools_graffiti.inx.h:5 -#, fuzzy msgid "Create preview" -msgstr "Включить предпросмотр" +msgstr "Создать предпросмотр" #: ../share/extensions/gcodetools_graffiti.inx.h:6 #, fuzzy @@ -31211,7 +32767,6 @@ msgstr "" #: ../share/extensions/gcodetools_graffiti.inx.h:10 #: ../share/extensions/gcodetools_orientation_points.inx.h:3 -#, fuzzy msgid "Orientation type:" msgstr "Ориентация:" @@ -31476,24 +33031,20 @@ msgid "GIMP XCF" msgstr "GIMP XCF" #: ../share/extensions/gimp_xcf.inx.h:3 -#, fuzzy msgid "Save Guides" -msgstr "Сохранить направляющие:" +msgstr "Сохранить направляющие" #: ../share/extensions/gimp_xcf.inx.h:4 -#, fuzzy msgid "Save Grid" -msgstr "Сохранить сетку:" +msgstr "Сохранить сетку" #: ../share/extensions/gimp_xcf.inx.h:5 -#, fuzzy msgid "Save Background" -msgstr "Трассировать фон" +msgstr "Сохранить фон" #: ../share/extensions/gimp_xcf.inx.h:6 -#, fuzzy msgid "File Resolution:" -msgstr "Разрешение:" +msgstr "Разрешение файла:" #: ../share/extensions/gimp_xcf.inx.h:8 msgid "" @@ -31866,6 +33417,12 @@ msgstr "Левый угол" msgid "Right book page" msgstr "Правый угол" +#: ../share/extensions/guides_creator.inx.h:24 +#, fuzzy +msgctxt "Margin" +msgid "None" +msgstr "Нет" + #: ../share/extensions/guillotine.inx.h:1 msgid "Guillotine" msgstr "Гильотина" @@ -33313,16 +34870,14 @@ msgid "Area" msgstr "Площадь" #: ../share/extensions/measure.inx.h:13 -#, fuzzy msgctxt "measure extension" msgid "Center of Mass" -msgstr "Масса пера" +msgstr "Центр массы" #: ../share/extensions/measure.inx.h:14 -#, fuzzy msgctxt "measure extension" msgid "Text On Path" -msgstr "_Разместить по контуру" +msgstr "Текст по контуру" #: ../share/extensions/measure.inx.h:15 #, fuzzy @@ -33361,7 +34916,7 @@ msgstr "" #: ../share/extensions/merge_styles.inx.h:1 msgid "Merge Styles into CSS" -msgstr "" +msgstr "Встроить стили в CSS" #: ../share/extensions/merge_styles.inx.h:2 msgid "" @@ -33373,12 +34928,11 @@ msgstr "" #: ../share/extensions/merge_styles.inx.h:3 msgid "New Class Name:" -msgstr "" +msgstr "Имя нового класса:" #: ../share/extensions/merge_styles.inx.h:4 -#, fuzzy msgid "Stylesheet" -msgstr "Стиль" +msgstr "Каскадный стиль" #: ../share/extensions/motion.inx.h:1 msgid "Motion" @@ -33527,10 +35081,6 @@ msgstr "" "контуру. Текстура является верхним объектом в выделении. Допустимы группы из " "контуров, фигур и клонов." -#: ../share/extensions/pathscatter.inx.h:1 -msgid "Scatter" -msgstr "Рассеивание" - #: ../share/extensions/pathscatter.inx.h:3 msgid "Follow path orientation" msgstr "Следовать ориентации контура" @@ -33682,14 +35232,12 @@ msgid "" msgstr "" #: ../share/extensions/plotter.inx.h:3 -#, fuzzy msgid "Connection Settings " -msgstr "Cоединения" +msgstr "Параметры соединения" #: ../share/extensions/plotter.inx.h:4 -#, fuzzy msgid "Serial port:" -msgstr "Вертикальная точка:" +msgstr "Последовательный порт:" #: ../share/extensions/plotter.inx.h:5 msgid "" @@ -33698,9 +35246,8 @@ msgid "" msgstr "" #: ../share/extensions/plotter.inx.h:6 -#, fuzzy msgid "Serial baud rate:" -msgstr "Размывание по вертикали:" +msgstr "" #: ../share/extensions/plotter.inx.h:7 msgid "The Baud rate of your serial connection (Default: 9600)" @@ -33717,9 +35264,8 @@ msgid "" msgstr "" #: ../share/extensions/plotter.inx.h:10 -#, fuzzy msgid "Command language:" -msgstr "Второй язык:" +msgstr "Язык управления:" #: ../share/extensions/plotter.inx.h:11 msgid "The command language to use (Default: HPGL)" @@ -33738,17 +35284,22 @@ msgstr "Устройства" msgid "Hardware (DSR/DTR + RTS/CTS)" msgstr "" +#: ../share/extensions/plotter.inx.h:15 +msgctxt "Flow control" +msgid "None" +msgstr "Нет" + #: ../share/extensions/plotter.inx.h:16 msgid "HPGL" -msgstr "" +msgstr "HPGL" #: ../share/extensions/plotter.inx.h:17 msgid "DMPL" -msgstr "" +msgstr "DMPL" #: ../share/extensions/plotter.inx.h:18 msgid "KNK Zing (HPGL variant)" -msgstr "" +msgstr "KNK Zing (вариант HPGL)" #: ../share/extensions/plotter.inx.h:19 msgid "" @@ -33774,9 +35325,8 @@ msgid "" msgstr "" #: ../share/extensions/plotter.inx.h:33 -#, fuzzy msgid "Rotation (°, clockwise):" -msgstr "Поворот по часовой стрелке" +msgstr "Вращение (°, по часовой стрелке):" #: ../share/extensions/plotter.inx.h:52 #, fuzzy @@ -34409,14 +35959,12 @@ msgid "Keep editor data" msgstr "Сохранить данные редактора" #: ../share/extensions/scour.inx.h:9 -#, fuzzy msgid "Remove metadata" -msgstr "Удалить красный компонент" +msgstr "Удалить метаданные" #: ../share/extensions/scour.inx.h:10 -#, fuzzy msgid "Remove comments" -msgstr "Удалить шрифт" +msgstr "Удалить комментарии" #: ../share/extensions/scour.inx.h:11 msgid "Work around renderer bugs" @@ -34447,6 +35995,12 @@ msgstr "Пробел" msgid "Tab" msgstr "Табулятор" +#: ../share/extensions/scour.inx.h:18 +#, fuzzy +msgctxt "Indent" +msgid "None" +msgstr "Нет" + #: ../share/extensions/scour.inx.h:19 #, fuzzy msgid "Ids" @@ -35546,1013 +37100,183 @@ msgid "XAML Input" msgstr "Импорт XAML" #, fuzzy -#~ msgid "Smart Jelly" -#~ msgstr "Замысловатое желе" - -#~ msgid "Same as Matte jelly but with more controls" -#~ msgstr "" -#~ "То же, что и матовое желе, но с увеличенным количеством регуляторов." - -#, fuzzy -#~ msgid "Metal Casting" -#~ msgstr "Металлическое литьё" - -#~ msgid "Smooth drop-like bevel with metallic finish" -#~ msgstr "Плавная каплевидная фаска с металлической полировкой" - -#~ msgid "Apparition" -#~ msgstr "Видение" - -#~ msgid "Edges are partly feathered out" -#~ msgstr "Края частично растушёваны" - -#, fuzzy -#~ msgid "Jigsaw Piece" -#~ msgstr "Элемент паззла" - -#~ msgid "Low, sharp bevel" -#~ msgstr "Низкая, резкая фаска" - -#, fuzzy -#~ msgid "Rubber Stamp" -#~ msgstr "Штемпель" - -#~ msgid "Random whiteouts inside" -#~ msgstr "Случайные белые пятна внутри" - -#, fuzzy -#~ msgid "Ink Bleed" -#~ msgstr "Чернила протекли" - -#~ msgid "Protrusions" -#~ msgstr "Выступы" - -#~ msgid "Inky splotches underneath the object" -#~ msgstr "Чернильные пятна под объектом" - -#~ msgid "Fire" -#~ msgstr "Огонь" - -#~ msgid "Edges of object are on fire" -#~ msgstr "Края объекта охвачены огнем" - -#~ msgid "Bloom" -#~ msgstr "Расцвет" - -#~ msgid "Soft, cushion-like bevel with matte highlights" -#~ msgstr "Фаска с плавным подушкообразным переходом и матовым бликом" - -#, fuzzy -#~ msgid "Ridged Border" -#~ msgstr "Край с кромкой" - -#~ msgid "Ridged border with inner bevel" -#~ msgstr "Край с кромкой и внутренней фаской" - -#~ msgid "Ripple" -#~ msgstr "Рябь" - -#~ msgid "Horizontal rippling of edges" -#~ msgstr "Горизонтальная рябь краёв" - -#~ msgid "Speckle" -#~ msgstr "Пятно" - -#~ msgid "Fill object with sparse translucent specks" -#~ msgstr "Заполнить объект редкими просвечивающими пятнами" - -#~ msgid "Oil Slick" -#~ msgstr "Масляная плёнка" - -#~ msgid "Rainbow-colored semitransparent oily splotches" -#~ msgstr "Масляные полупрозрачные пятна радужного цвета" - -#~ msgid "Frost" -#~ msgstr "Мороз" - -#~ msgid "Flake-like white splotches" -#~ msgstr "Белые пятна наподобие хлопьев" - -#~ msgid "Leopard Fur" -#~ msgstr "Шкура леопарда" - -#~ msgid "Materials" -#~ msgstr "Материалы" - -#~ msgid "Leopard spots (loses object's own color)" -#~ msgstr "Пятна леопарда (исходный цвет объекта теряется)" - -#~ msgid "Zebra" -#~ msgstr "Зебра" - -#~ msgid "Irregular vertical dark stripes (loses object's own color)" -#~ msgstr "" -#~ "Нерегулярные вертикальные темные полосы (исходный цвет объекта теряется)" - -#~ msgid "Clouds" -#~ msgstr "Облака" - -#~ msgid "Airy, fluffy, sparse white clouds" -#~ msgstr "Воздушные, пушистые, редкие облака" - -#~ msgid "Sharpen edges and boundaries within the object, force=0.15" -#~ msgstr "Повысить резкость краев и границ в рамках объекта, сила=0.15" - -#, fuzzy -#~ msgid "Sharpen More" -#~ msgstr "Усиленное повышение резкости" - -#~ msgid "Sharpen edges and boundaries within the object, force=0.3" -#~ msgstr "Повысить резкость краев и границ в рамках объекта, сила=0.3" - -#~ msgid "Oil painting" -#~ msgstr "Масляная краска" - -#~ msgid "Simulate oil painting style" -#~ msgstr "Имитация живописи маслом" - -#~ msgid "Detect color edges and retrace them in grayscale" -#~ msgstr "Найти в объекте цветные края и перекрасить их в оттенки серого" - -#~ msgid "Blueprint" -#~ msgstr "Светокопия" - -#~ msgid "Detect color edges and retrace them in blue" -#~ msgstr "Найти в объекте цветные края и перекрасить их синим цветом" - -#~ msgid "Age" -#~ msgstr "Состаривание" - -#~ msgid "Imitate aged photograph" -#~ msgstr "Имитация старой фотографии" - -#~ msgid "Organic" -#~ msgstr "Органика" - -#~ msgid "Textures" -#~ msgstr "Текстуры" - -#~ msgid "Bulging, knotty, slick 3D surface" -#~ msgstr "Выпяченная, узловатая трехмерная текстура" - -#~ msgid "Barbed Wire" -#~ msgstr "Колючая проволока" - -#~ msgid "Gray bevelled wires with drop shadows" -#~ msgstr "Серые выступающие провода, отбрасывающие тень" - -#~ msgid "Swiss Cheese" -#~ msgstr "Швейцарский сыр" - -#~ msgid "Random inner-bevel holes" -#~ msgstr "Случайные дыры с внутренней фаской" - -#~ msgid "Blue Cheese" -#~ msgstr "Голубой сыр" - -#~ msgid "Marble-like bluish speckles" -#~ msgstr "Голубоватые пятна как в мраморе" - -#~ msgid "Button" -#~ msgstr "Кнопка" - -#~ msgid "Soft bevel, slightly depressed middle" -#~ msgstr "Плавная фаска, немного вдавленный центр" - -#~ msgid "Inset" -#~ msgstr "Врезка" - -#~ msgid "Shadowy outer bevel" -#~ msgstr "Затененная внешняя кромка" - -#~ msgid "Random paint streaks downwards" -#~ msgstr "Случайное стекание краски вниз" - -#, fuzzy -#~ msgid "Jam Spread" -#~ msgstr "Слой джема" - -#~ msgid "Glossy clumpy jam spread" -#~ msgstr "Слой блестящего комковатого джема" - -#, fuzzy -#~ msgid "Pixel Smear" -#~ msgstr "Пиксельные мазки" - -#~ msgid "Van Gogh painting effect for bitmaps" -#~ msgstr "Эффект рисования в стиле ван Гога" - -#~ msgid "Cracked Glass" -#~ msgstr "Треснутое стекло" - -#~ msgid "Under a cracked glass" -#~ msgstr "Под треснутым стеклом" - -#~ msgid "Bubbly Bumps" -#~ msgstr "Пузыристые выпуклости " - -#~ msgid "Flexible bubbles effect with some displacement" -#~ msgstr "Гибкий эффект пузырей с некоторым смещением" - -#~ msgid "Glowing Bubble" -#~ msgstr "Светящийся пузырь" - -#~ msgid "Ridges" -#~ msgstr "Кромки" - -#~ msgid "Bubble effect with refraction and glow" -#~ msgstr "Эффект пузыря с рефракцией и свечением" - -#~ msgid "Neon" -#~ msgstr "Неон" - -#~ msgid "Neon light effect" -#~ msgstr "Эффект неонового свечения" - -#~ msgid "Molten Metal" -#~ msgstr "Расплавленный металл" - -#~ msgid "Melting parts of object together, with a glossy bevel and a glow" -#~ msgstr "Сплавить части объекта, добавив блестящую фаску и свечение" - -#~ msgid "Pressed Steel" -#~ msgstr "Штампованная сталь" - -#~ msgid "Pressed metal with a rolled edge" -#~ msgstr "Штампованная сталь с вальцованным краем" - -#~ msgid "Matte Bevel" -#~ msgstr "Матовая фаска" - -#~ msgid "Soft, pastel-colored, blurry bevel" -#~ msgstr "Плавная фаска пастельных тонов" - -#~ msgid "Thin Membrane" -#~ msgstr "Тонкая мембрана" - -#~ msgid "Thin like a soap membrane" -#~ msgstr "Мембрана, тонкая как мыльный пузырь" - -#~ msgid "Matte Ridge" -#~ msgstr "Матовая кромка" - -#~ msgid "Soft pastel ridge" -#~ msgstr "Мягкая пастельная кромка" - -#~ msgid "Glowing Metal" -#~ msgstr "Сверкающий металл" - -#~ msgid "Glowing metal texture" -#~ msgstr "Текстура сверкающего металла" - -#~ msgid "Leaves" -#~ msgstr "Листва" - -#~ msgid "Leaves on the ground in Fall, or living foliage" -#~ msgstr "Листва на осенней земле или лиственный орнамент" - -#~ msgid "Illuminated translucent plastic or glass effect" -#~ msgstr "Эффект подсвеченного полупрозрачного пластика" - -#~ msgid "Iridescent Beeswax" -#~ msgstr "Радужный воск" - -#~ msgid "Waxy texture which keeps its iridescence through color fill change" -#~ msgstr "Восковая текстура с радужностью за счет смены цвета заливки" - -#~ msgid "Eroded Metal" -#~ msgstr "Ржавчина" - -#~ msgid "Eroded metal texture with ridges, grooves, holes and bumps" -#~ msgstr "Текстура ржавого металла с кромкой, желобками, дырка и выпуклостями" - -#~ msgid "Cracked Lava" -#~ msgstr "Пузырящаяся лава" - -#~ msgid "A volcanic texture, a little like leather" -#~ msgstr "Вулканическая текстура с пузырями лавы, похожая на кожу" - -#~ msgid "Bark texture, vertical; use with deep colors" -#~ msgstr "" -#~ "Текстура коры дерева, вертикальная; используйте с темными насыщенными " -#~ "цветами" - -#~ msgid "Lizard Skin" -#~ msgstr "Кожа ящерицы" - -#~ msgid "Stylized reptile skin texture" -#~ msgstr "Текстура, стилизованная под кожу ящерицы" - -#~ msgid "Stone Wall" -#~ msgstr "Каменная кладка" - -#~ msgid "Stone wall texture to use with not too saturated colors" -#~ msgstr "Текстура камня для использования с не очень насыщенными цветами" - -#~ msgid "Silk Carpet" -#~ msgstr "Шёлковый ковер" - -#~ msgid "Silk carpet texture, horizontal stripes" -#~ msgstr "Текстура шелкового ковра с горизонтальными полосками" - -#~ msgid "Refractive Gel A" -#~ msgstr "Преломляющий гель А" - -#~ msgid "Gel effect with light refraction" -#~ msgstr "Гелевый эффект с легким преломлением" - -#~ msgid "Refractive Gel B" -#~ msgstr "Преломляющий гель Б" - -#~ msgid "Gel effect with strong refraction" -#~ msgstr "Гелевый эффект с сильным преломлением" - -#~ msgid "Metallized Paint" -#~ msgstr "Металлизированная краска" - -#~ msgid "" -#~ "Metallized effect with a soft lighting, slightly translucent at the edges" -#~ msgstr "Эффект металла в рассеянном свете, слегка полупрозрачного по краям" - -#~ msgid "Dragee" -#~ msgstr "Драже" - -#~ msgid "Gel Ridge with a pearlescent look" -#~ msgstr "Гелевая кромка жемчужного вида" - -#~ msgid "Raised Border" -#~ msgstr "Приподнятый край" - -#~ msgid "Strongly raised border around a flat surface" -#~ msgstr "Высоко поднятая над плоской поверхностью фаска" - -#~ msgid "Metallized Ridge" -#~ msgstr "Металлизированная кромка" - -#~ msgid "Gel Ridge metallized at its top" -#~ msgstr "Гелевая кромка с металликом наверху" - -#~ msgid "Fat Oil" -#~ msgstr "Жирная масляная краска" - -#~ msgid "Fat oil with some adjustable turbulence" -#~ msgstr "Жирная масляная краска с регулируемой турбулентностью" - -#~ msgid "Black Hole" -#~ msgstr "Чёрная дыра" - -#~ msgid "Creates a black light inside and outside" -#~ msgstr "Создать черный свет изнутри и снаружи" - -#~ msgid "Cubes" -#~ msgstr "Кубики" - -#~ msgid "Scattered cubes; adjust the Morphology primitive to vary size" -#~ msgstr "" -#~ "Эффект разбросанных кубиков; размер меняется коррекцией примитива " -#~ "Морфология" - -#, fuzzy -#~ msgid "Peel Off" -#~ msgstr "Шелуха" - -#~ msgid "Peeling painting on a wall" -#~ msgstr "Отслаивающаяся от стены краска" - -#, fuzzy -#~ msgid "Gold Splatter" -#~ msgstr "Золотые брызги" - -#~ msgid "Splattered cast metal, with golden highlights" -#~ msgstr "Брызги металла с золотистыми бликами" - -#, fuzzy -#~ msgid "Gold Paste" -#~ msgstr "Золотая паста" - -#~ msgid "Fat pasted cast metal, with golden highlights" -#~ msgstr "Толстый пласт металла с золотистыми бликами" - -#, fuzzy -#~ msgid "Crumpled Plastic" -#~ msgstr "Мятый пластик" - -#~ msgid "Crumpled matte plastic, with melted edge" -#~ msgstr "Мятый матовый пластик с оплавленными краями" - -#, fuzzy -#~ msgid "Enamel Jewelry" -#~ msgstr "Финифть" - -#~ msgid "Slightly cracked enameled texture" -#~ msgstr "Текстура слегка потрескавшейся финифти" - -#, fuzzy -#~ msgid "Rough Paper" -#~ msgstr "Шероховатая бумага" - -#~ msgid "Aquarelle paper effect which can be used for pictures as for objects" -#~ msgstr "" -#~ "Эффект бумаги для акварели; годится для растровых и векторных объектов" - -#, fuzzy -#~ msgid "Rough and Glossy" -#~ msgstr "Грубая глянцевая бумага" - -#~ msgid "" -#~ "Crumpled glossy paper effect which can be used for pictures as for objects" -#~ msgstr "Мятая глянцевая бумага; можно применять к готовым рисункам" - -#~ msgid "Inner colorized shadow, outer black shadow" -#~ msgstr "Внутренняя цветная и черная внешняя тени" +#~ msgctxt "Symbol" +#~ msgid "Map Symbols" +#~ msgstr "Кхмерские символы" #, fuzzy -#~ msgid "Air Spray" -#~ msgstr "Аэрограф" - -#~ msgid "Convert to small scattered particles with some thickness" -#~ msgstr "Превратить в маленькие рассеянные частицы некоторой толщины" +#~ msgctxt "Symbol" +#~ msgid "Bed and Breakfast" +#~ msgstr "Красный и зелёный" #, fuzzy -#~ msgid "Warm Inside" -#~ msgstr "Внутреннее тепло" - -#~ msgid "Blurred colorized contour, filled inside" -#~ msgstr "Заполненный контур с размытой обводкой" +#~ msgctxt "Symbol" +#~ msgid "Hostel" +#~ msgstr "Host" #, fuzzy -#~ msgid "Cool Outside" -#~ msgstr "Прохлада снаружи" - -#~ msgid "Blurred colorized contour, empty inside" -#~ msgstr "Пустой контур с размытой обводкой" +#~ msgctxt "Symbol" +#~ msgid "Chalet" +#~ msgstr "Палитра" #, fuzzy -#~ msgid "Electronic Microscopy" -#~ msgstr "Электронный микроскоп" - -#~ msgid "" -#~ "Bevel, crude light, discoloration and glow like in electronic microscopy" -#~ msgstr "" -#~ "Фаска, жёсткий свет, обесцвечивание и свечение как в электронном " -#~ "микроскопе" - -#~ msgid "Tartan" -#~ msgstr "Шотландка" - -#~ msgid "Checkered tartan pattern" -#~ msgstr "Клетчатая шерстяная материя" - -#, fuzzy -#~ msgid "Shaken Liquid" -#~ msgstr "Взболтанная жидкость" - -#~ msgid "Colorizable filling with flow inside like transparency" -#~ msgstr "Раскрашиваемая заливка с внутренним полупрозрачным потоком" - -#, fuzzy -#~ msgid "Soft Focus Lens" -#~ msgstr "Размывание вне фокуса" - -#~ msgid "Glowing image content without blurring it" -#~ msgstr "Свечение содержимого объекта без размывания" - -#~ msgid "Illuminated stained glass effect" -#~ msgstr "Иллюминированный эффект тонированного стекла" - -#, fuzzy -#~ msgid "Dark Glass" -#~ msgstr "Тёмное стекло" - -#~ msgid "Illuminated glass effect with light coming from beneath" -#~ msgstr "Эффект подсвеченного стекла, при котором свет исходит снизу" - -#, fuzzy -#~ msgid "HSL Bumps Alpha" -#~ msgstr "Выпуклости HSL с альфа-каналом" - -#~ msgid "Same as HSL Bumps but with transparent highlights" -#~ msgstr "То же, что и Выпуклости HSL, но с прозрачными яркими участками" - -#, fuzzy -#~ msgid "Bubbly Bumps Alpha" -#~ msgstr "Пузыристые выпуклости с альфа-каналом" - -#~ msgid "Same as Bubbly Bumps but with transparent highlights" -#~ msgstr "" -#~ "То же, что и Пузыристые выпуклости, но с прозрачными яркими участками" - -#, fuzzy -#~ msgid "Torn Edges" -#~ msgstr "Неровные края" - -#~ msgid "" -#~ "Displace the outside of shapes and pictures without altering their content" -#~ msgstr "" -#~ "Сместить внешнюю часть объектов и растровых изображений без изменения их " -#~ "содержимого" - -#, fuzzy -#~ msgid "Roughen Inside" -#~ msgstr "Огрубление изнутри" - -#~ msgid "Roughen all inside shapes" -#~ msgstr "Огрубление всего внутри объектов" - -#~ msgid "Evanescent" -#~ msgstr "Мгновение" - -#~ msgid "" -#~ "Blur the contents of objects, preserving the outline and adding " -#~ "progressive transparency at edges" -#~ msgstr "" -#~ "Размыть содержимое объектов, сохраняя контур и добавляя нарастающую " -#~ "прозрачность по краям" - -#, fuzzy -#~ msgid "Chalk and Sponge" -#~ msgstr "Мел и губка" - -#~ msgid "Low turbulence gives sponge look and high turbulence chalk" -#~ msgstr "Низкая турбулентность создает эффект губки, а высокая — мела" - -#~ msgid "People" -#~ msgstr "Толпа" - -#~ msgid "Colorized blotches, like a crowd of people" -#~ msgstr "Разноцветные пятна, напоминающие толпу людей" - -#~ msgid "Scotland" -#~ msgstr "Шотландия" - -#~ msgid "Colorized mountain tops out of the fog" -#~ msgstr "Раскрашенные верхушки гор, выглядывающие из тумана" - -#~ msgid "Garden of Delights" -#~ msgstr "Сады земных наслаждений" - -#~ msgid "" -#~ "Phantasmagorical turbulent wisps, like Hieronymus Bosch's Garden of " -#~ "Delights" -#~ msgstr "" -#~ "Фантасмагорическая турбулентность, напоминающая «Сады земных наслаждений» " -#~ "Иеронима Босха" - -#~ msgid "Cutout Glow" -#~ msgstr "Вырезанное свечение" - -#~ msgid "In and out glow with a possible offset and colorizable flood" -#~ msgstr "" -#~ "Свечение изнутри и снаружи с возможным смещением и раскрашиваемой заливкой" - -#~ msgid "Dark Emboss" -#~ msgstr "Тёмный рельеф" - -#~ msgid "Emboss effect : 3D relief where white is replaced by black" -#~ msgstr "Эффект рельефа, где белое заменяется черным" - -#, fuzzy -#~ msgid "Bubbly Bumps Matte" -#~ msgstr "Пузыристые матовые выпуклости" - -#~ msgid "" -#~ "Same as Bubbly Bumps but with a diffuse light instead of a specular one" -#~ msgstr "" -#~ "То же, что и пузыристые выпуклости, но с рассеянным, а не отраженным " -#~ "светом" - -#, fuzzy -#~ msgid "Blotting Paper" -#~ msgstr "Промокшая бумага" - -#~ msgid "Inkblot on blotting paper" -#~ msgstr "Чернильное пятно на промокшей бумаге" - -#, fuzzy -#~ msgid "Wax Print" -#~ msgstr "Восковая печать" - -#~ msgid "Wax print on tissue texture" -#~ msgstr "Восковая печать на бумажной текстуре" - -#~ msgid "Watercolor" -#~ msgstr "Акварель" - -#~ msgid "Cloudy watercolor effect" -#~ msgstr "Облачный акварельный эффект" - -#~ msgid "Felt" -#~ msgstr "Войлок" - -#~ msgid "" -#~ "Felt like texture with color turbulence and slightly darker at the edges" -#~ msgstr "" -#~ "Текстура, напоминающая войлок, с цветной турбулентностью, слегка темная " -#~ "по краям" - -#, fuzzy -#~ msgid "Ink Paint" -#~ msgstr "Краска" - -#~ msgid "Ink paint on paper with some turbulent color shift" -#~ msgstr "Цветная краска на бумаге, с небольшим турбулентным цветовым сдвигом" - -#, fuzzy -#~ msgid "Tinted Rainbow" -#~ msgstr "Окрашенная радуга" - -#~ msgid "Smooth rainbow colors melted along the edges and colorizable" -#~ msgstr "" -#~ "Мягкие цвета радуги, оплавляющие объект по краям и зависящие от заливки " -#~ "объекта" - -#, fuzzy -#~ msgid "Melted Rainbow" -#~ msgstr "Расплавленная радуга" - -#~ msgid "Smooth rainbow colors slightly melted along the edges" -#~ msgstr "Мягкие радужные цвета цвета, слегка оплавляющие края объекта" - -#, fuzzy -#~ msgid "Flex Metal" -#~ msgstr "Гибкий металл" - -#~ msgid "Bright, polished uneven metal casting, colorizable" -#~ msgstr "Яркая и отполированная раскрашиваемая металлическая отливка" +#~ msgctxt "Symbol" +#~ msgid "Playground" +#~ msgstr "Фон" #, fuzzy -#~ msgid "Wavy Tartan" -#~ msgstr "Волнистая шотландка" - -#~ msgid "Tartan pattern with a wavy displacement and bevel around the edges" -#~ msgstr "" -#~ "Узор клетчатой шерстяной материи с волнистым искажением и фаской по краям" +#~ msgctxt "Symbol" +#~ msgid "Police Station" +#~ msgstr "Больше насыщенности" #, fuzzy -#~ msgid "3D Marble" -#~ msgstr "Трехмерный мрамор" - -#~ msgid "3D warped marble texture" -#~ msgstr "Объемная текстура мрамора" - -#~ msgid "3D warped, fibered wood texture" -#~ msgstr "Объёмная текстура древесины" +#~ msgctxt "Symbol" +#~ msgid "Public Building" +#~ msgstr "Общественное достояние" #, fuzzy -#~ msgid "3D Mother of Pearl" -#~ msgstr "Объёмный перламутр" - -#~ msgid "3D warped, iridescent pearly shell texture" -#~ msgstr "Объёмная текстура перламутровой раковины" +#~ msgctxt "Symbol" +#~ msgid "Survey Point" +#~ msgstr "Точка Жергонна" #, fuzzy -#~ msgid "Tiger Fur" -#~ msgstr "Тигровая шкура" - -#~ msgid "Tiger fur pattern with folds and bevel around the edges" -#~ msgstr "Узор тигровой шкуры со складками и фаской по краям" - -#~ msgid "Black Light" -#~ msgstr "Черный свет" - -#~ msgid "Light areas turn to black" -#~ msgstr "Светлые области становятся черными" +#~ msgctxt "Symbol" +#~ msgid "Steps" +#~ msgstr "Шаги" #, fuzzy -#~ msgid "Film Grain" -#~ msgstr "Пленочный шум" - -#~ msgid "Adds a small scale graininess" -#~ msgstr "Добавить небольшую зашумленность как на фотопленке" +#~ msgctxt "Symbol" +#~ msgid "Kissing Gate" +#~ msgstr "Отсутствующий глиф:" #, fuzzy -#~ msgid "Plaster Color" -#~ msgstr "Вставить цвет" +#~ msgctxt "Symbol" +#~ msgid "Entrance" +#~ msgstr "Повысить качество" #, fuzzy -#~ msgid "Colored plaster emboss effect" -#~ msgstr "Облачный акварельный эффект" - -#~ msgid "Velvet Bumps" -#~ msgstr "Вельветовые шишки" - -#~ msgid "Gives Smooth Bumps velvet like" -#~ msgstr "Создать выпуклости наподобие вельветовой ткани" +#~ msgctxt "Symbol" +#~ msgid "Cattle Grid" +#~ msgstr "Картезианская сетка" #, fuzzy -#~ msgid "Comics Cream" -#~ msgstr "Кремовый комикс" - -#~ msgid "Non realistic 3D shaders" -#~ msgstr "Нереалистичные 3D-шейдеры" - -#~ msgid "Comics shader with creamy waves transparency" -#~ msgstr "Комиксовый шейдер с кремовой волнистой полупрозрачностью" +#~ msgctxt "Symbol" +#~ msgid "University" +#~ msgstr "Идентичная функция" #, fuzzy -#~ msgid "Chewing Gum" -#~ msgstr "Жевательная резинка" - -#~ msgid "" -#~ "Creates colorizable blotches which smoothly flow over the edges of the " -#~ "lines at their crossings" -#~ msgstr "" -#~ "Создать раскрашиваемые пятна, слегка вытекающие за края линий в местах " -#~ "пересечений этих линий" +#~ msgctxt "Symbol" +#~ msgid "High/Secondary School" +#~ msgstr "Второй язык:" #, fuzzy -#~ msgid "Dark And Glow" -#~ msgstr "Тёмный и светящийся" - -#~ msgid "Darkens the edge with an inner blur and adds a flexible glow" -#~ msgstr "" -#~ "Затемнить края, добавить внутреннее размывание и настраиваемое свечение" +#~ msgctxt "Symbol" +#~ msgid "Dentist" +#~ msgstr "Идентичная функция" #, fuzzy -#~ msgid "Warped Rainbow" -#~ msgstr "Деформированная радуга" - -#~ msgid "Smooth rainbow colors warped along the edges and colorizable" -#~ msgstr "" -#~ "Мягкие радужные цвета, деформированные по краям и зависящие от заливки " -#~ "объекта" +#~ msgctxt "Symbol" +#~ msgid "Accident & Emergency" +#~ msgstr "Accent Green" #, fuzzy -#~ msgid "Rough and Dilate" -#~ msgstr "Неровный и растянутый" - -#~ msgid "Create a turbulent contour around" -#~ msgstr "Создать турбулентный контур вокруг" +#~ msgctxt "Symbol" +#~ msgid "Doctors" +#~ msgstr "Соединительные линии" #, fuzzy -#~ msgid "Old Postcard" -#~ msgstr "Старая открытка" - -#~ msgid "Slightly posterize and draw edges like on old printed postcards" -#~ msgstr "Легкая постеризация и края как на старых открытках" +#~ msgctxt "Symbol" +#~ msgid "Power Lines" +#~ msgstr "Линия по узлам" #, fuzzy -#~ msgid "Dots Transparency" -#~ msgstr "Прозрачные точки" - -#~ msgid "Gives a pointillist HSL sensitive transparency" -#~ msgstr "Создать пуантилистическую прозрачность, чувствительную к HSL" +#~ msgctxt "Symbol" +#~ msgid "Transmitter" +#~ msgstr "Трансформировать текстуры" #, fuzzy -#~ msgid "Canvas Transparency" -#~ msgstr "Прозрачный холст" +#~ msgctxt "Symbol" +#~ msgid "Mountain Pass" +#~ msgstr "Тонированное стекло" #, fuzzy -#~ msgid "Gives a canvas like HSL sensitive transparency." -#~ msgstr "Создать похожую на холст прозрачность, чувствительную к HSL" +#~ msgctxt "Symbol" +#~ msgid "Supermarket" +#~ msgstr "Установка маркеров" #, fuzzy -#~ msgid "Smear Transparency" -#~ msgstr "Прозрачные мазки" - -#~ msgid "" -#~ "Paint objects with a transparent turbulence which turns around color edges" -#~ msgstr "" -#~ "Закрасить объекты прозрачной турбулентностью, огибающей цветные края" +#~ msgctxt "Symbol" +#~ msgid "Greengrocer" +#~ msgstr "Зеленый" #, fuzzy -#~ msgid "Thick Paint" -#~ msgstr "Густая краска" - -#~ msgid "Thick painting effect with turbulence" -#~ msgstr "Эффект густой краски с турбулентностью" - -#~ msgid "Burst" -#~ msgstr "Лопнувший шарик" - -#~ msgid "Burst balloon texture crumpled and with holes" -#~ msgstr "Текстура разорвавшегося воздушного шарика" +#~ msgctxt "Symbol" +#~ msgid "Garden Center" +#~ msgstr "Вверху и по центру" #, fuzzy -#~ msgid "Embossed Leather" -#~ msgstr "Рельефная кожа" - -#~ msgid "" -#~ "Combine a HSL edges detection bump with a leathery or woody and " -#~ "colorizable texture" -#~ msgstr "Эффект текстуры кожи или дерева с выдавливанием краев" - -#~ msgid "Carnaval" -#~ msgstr "Карнавал" - -#~ msgid "White splotches evocating carnaval masks" -#~ msgstr "Белые неровные пятна, напоминающие карнавальные маски" - -#~ msgid "Plastify" -#~ msgstr "Пластификация" - -#~ msgid "" -#~ "HSL edges detection bump with a wavy reflective surface effect and " -#~ "variable crumple" -#~ msgstr "" -#~ "Выпуклость по определенным краям HSL с эффектом волнистой отражающей " -#~ "поверхности и переменной смятостью" - -#~ msgid "Plaster" -#~ msgstr "Штукатурка" - -#~ msgid "" -#~ "Combine a HSL edges detection bump with a matte and crumpled surface " -#~ "effect" -#~ msgstr "" -#~ "Объединение выпуклости по определенным краям с эффектом сморщенной " -#~ "поверхности" - -#~ msgid "Rough Transparency" -#~ msgstr "Грубая прозрачность" - -#~ msgid "" -#~ "Adds a turbulent transparency which displaces pixels at the same time" -#~ msgstr "" -#~ "Добавить турбулентную прозрачность с одновременным смещением пикселов" - -#~ msgid "Gouache" -#~ msgstr "Гуашь" - -#~ msgid "Partly opaque water color effect with bleed" -#~ msgstr "Полупрозрачный эффект акварели с " - -#~ msgid "Alpha Engraving" -#~ msgstr "Альфа-гравировка" - -#~ msgid "Gives a transparent engraving effect with rough line and filling" -#~ msgstr "Создать прозрачный эффект гравюры с грубыми линиями и заливкой" +#~ msgctxt "Symbol" +#~ msgid "Hardware / DIY" +#~ msgstr "Устройства" #, fuzzy -#~ msgid "Alpha Draw Liquid" -#~ msgstr "Текучий прозрачный рисунок" - -#~ msgid "Gives a transparent fluid drawing effect with rough line and filling" -#~ msgstr "Создать текучий прозрачный эффект с грубыми линиями и заливкой" +#~ msgctxt "Symbol" +#~ msgid "Confectioner" +#~ msgstr "Cоединения" #, fuzzy -#~ msgid "Liquid Drawing" -#~ msgstr "Экспрессионизм" - -#~ msgid "Gives a fluid and wavy expressionist drawing effect to images" -#~ msgstr "" -#~ "Применить эффект текучего и волнистого рисунка в стиле экспрессионизма к " -#~ "растровым изображениям" - -#~ msgid "Marbled Ink" -#~ msgstr "Мраморные чернила" - -#~ msgid "Marbled transparency effect which conforms to image detected edges" -#~ msgstr "Эффект прозрачного мрамора, соответствующего обнаруженным краям" - -#~ msgid "Thick Acrylic" -#~ msgstr "Густая акриловая краска" - -#~ msgid "Thick acrylic paint texture with high texture depth" -#~ msgstr "Рельефная текстура густой акриловой краски" - -#~ msgid "Alpha Engraving B" -#~ msgstr "Альфа-гравировка №2" - -#~ msgid "" -#~ "Gives a controllable roughness engraving effect to bitmaps and materials" -#~ msgstr "" -#~ "Применить эффект регулируемой грубой гравировки к растровым изображениям " -#~ "или материалам" - -#~ msgid "Lapping" -#~ msgstr "Плеск волн" - -#~ msgid "Something like a water noise" -#~ msgstr "Что-то вроде водного шума" - -#~ msgid "Monochrome Transparency" -#~ msgstr "Монохромная прозрачность" - -#~ msgid "Convert to a colorizable transparent positive or negative" -#~ msgstr "Преобразовать в раскрашиваемый прозрачный позитив или негатив" - -#~ msgid "Saturation Map" -#~ msgstr "Прокция насыщенности" - -#~ msgid "" -#~ "Creates an approximative semi-transparent and colorizable image of the " -#~ "saturation levels" -#~ msgstr "" -#~ "Создать приблизительное полупрозрачное и раскрашиваемое изображение " -#~ "уровней насыщенности" - -#~ msgid "Riddled" -#~ msgstr "Решето" - -#~ msgid "Riddle the surface and add bump to images" -#~ msgstr "Изрешетить поверхность и добавить выпуклости" - -#~ msgid "Wrinkled Varnish" -#~ msgstr "Смятая глазурь" - -#~ msgid "Thick glossy and translucent paint texture with high depth" -#~ msgstr "Толстая, блестящая, рельефная и полупрозрачная текстура краски" - -#~ msgid "Canvas Bumps" -#~ msgstr "Холщовые выпуклости" - -#~ msgid "Canvas texture with an HSL sensitive height map" -#~ msgstr "Текстура холста с чувствительной к HSL картой высот" +#~ msgctxt "Symbol" +#~ msgid "Clothing" +#~ msgstr "Сглаживание:" #, fuzzy -#~ msgid "Canvas Bumps Matte" -#~ msgstr "Холщовые матовые выпуклости" - -#~ msgid "" -#~ "Same as Canvas Bumps but with a diffuse light instead of a specular one" -#~ msgstr "" -#~ "То же, что и холщовые выпуклости, но с рассеянным светом вместо " -#~ "отраженного" +#~ msgctxt "Symbol" +#~ msgid "Leisure Center" +#~ msgstr "Возврат к исходному центру" #, fuzzy -#~ msgid "Canvas Bumps Alpha" -#~ msgstr "Холщовые выпуклости с альфа-каналом" - -#~ msgid "Same as Canvas Bumps but with transparent highlights" -#~ msgstr "То же, что и холщовые выпуклости, но с прозрачными яркими участками" +#~ msgctxt "Symbol" +#~ msgid "Zoo" +#~ msgstr "Лупа" #, fuzzy -#~ msgid "Bright Metal" -#~ msgstr "Яркий металл" - -#~ msgid "Bright metallic effect for any color" -#~ msgstr "Яркий эффект металла для любого цвета" +#~ msgctxt "Symbol" +#~ msgid "Water Wheel" +#~ msgstr "Круг" #, fuzzy -#~ msgid "Deep Colors Plastic" -#~ msgstr "Тёмный пластик" - -#~ msgid "Transparent plastic with deep colors" -#~ msgstr "Прозрачный пластик тёмных цветов" +#~ msgctxt "Symbol" +#~ msgid "Theater" +#~ msgstr "Создать" #, fuzzy -#~ msgid "Melted Jelly Matte" -#~ msgstr "Матовое расплавленное желе" - -#~ msgid "Matte bevel with blurred edges" -#~ msgstr "Матовая фаска с размытыми краями" - -#~ msgid "Melted Jelly" -#~ msgstr "Расплавленное желе" - -#~ msgid "Glossy bevel with blurred edges" -#~ msgstr "Блестящая фаска с размытыми краями" +#~ msgctxt "Symbol" +#~ msgid "Monument" +#~ msgstr "Документ" #, fuzzy -#~ msgid "Combined Lighting" -#~ msgstr "Объединённое освещение" - -#~ msgid "Tinfoil" -#~ msgstr "Оловянная фольга" - -#~ msgid "" -#~ "Metallic foil effect combining two lighting types and variable crumple" -#~ msgstr "" -#~ "Эффект металлической фольги, объединяющий два типа освещения и " -#~ "настраиваемую смятость" +#~ msgctxt "Symbol" +#~ msgid "Battle Location" +#~ msgstr "Расположение:" #, fuzzy -#~ msgid "Soft Colors" -#~ msgstr "Мягкие цвета" - -#~ msgid "Adds a colorizable edges glow inside objects and pictures" -#~ msgstr "" -#~ "Создать раскрашиваемое свечение краёв внутри объектов и растровых " -#~ "изображений" +#~ msgctxt "Symbol" +#~ msgid "Train" +#~ msgstr "Режим рисования" #, fuzzy -#~ msgid "Relief Print" -#~ msgstr "Рельефный отпечаток" - -#~ msgid "Bumps effect with a bevel, color flood and complex lighting" -#~ msgstr "Эффект выпуклости с фаской, заливкой цветом и сложным освещением" - -#~ msgid "Growing Cells" -#~ msgstr "Растущие клетки" - -#~ msgid "Random rounded living cells like fill" -#~ msgstr "Заливка случайными круглыми объектами наподобие живых клеток" - -#~ msgid "Fluorescence" -#~ msgstr "Флюоресценция" - -#~ msgid "Oversaturate colors which can be fluorescent in real world" -#~ msgstr "" -#~ "Перенасытить цвета, которые в реальном мире могут быть флюоресцирующими" +#~ msgctxt "Symbol" +#~ msgid "Flood Gate" +#~ msgstr "Заливка" #, fuzzy -#~ msgid "Pixellize" -#~ msgstr "Пиксел" +#~ msgctxt "Symbol" +#~ msgid "Disabled Parking" +#~ msgstr "Отключено" #, fuzzy -#~ msgid "Pixel tools" -#~ msgstr "Пикселы" +#~ msgid "Extrapolated" +#~ msgstr "Интерполяция" #, fuzzy #~ msgid "Set Resolution" @@ -36562,439 +37286,6 @@ msgstr "Импорт XAML" #~ msgid "Set filter resolution" #~ msgstr "Разрешение для экспорта:" -#, fuzzy -#~ msgid "Matte emboss effect" -#~ msgstr "Удалить эффекты" - -#, fuzzy -#~ msgid "Specular emboss effect" -#~ msgstr "Степень отражения" - -#, fuzzy -#~ msgid "Linen Canvas" -#~ msgstr "Холст" - -#, fuzzy -#~ msgid "Plasticine" -#~ msgstr "Штукатурка" - -#, fuzzy -#~ msgid "Matte modeling paste emboss effect" -#~ msgstr "Вставить динамический контурный эффект" - -#, fuzzy -#~ msgid "Paper like emboss effect" -#~ msgstr "Вставить динамический контурный эффект" - -#, fuzzy -#~ msgid "Jelly Bump" -#~ msgstr "Пузыристые выпуклости " - -#, fuzzy -#~ msgid "Convert pictures to thick jelly" -#~ msgstr "Текст в кривые Безье" - -#, fuzzy -#~ msgid "Blend Opposites" -#~ msgstr "Режим смешивания:" - -#, fuzzy -#~ msgid "Hue to White" -#~ msgstr "Вращение тона" - -#, fuzzy -#~ msgid "" -#~ "Paint objects with a transparent turbulence which wraps around color edges" -#~ msgstr "" -#~ "Закрасить объекты прозрачной турбулентностью, огибающей цветные края" - -#~ msgid "Pointillism" -#~ msgstr "Пуантилизм" - -#, fuzzy -#~ msgid "Gives a turbulent pointillist HSL sensitive transparency" -#~ msgstr "Создать пуантилистическую прозрачность, чувствительную к HSL" - -#~ msgid "Basic noise transparency texture" -#~ msgstr "Простая текстура полупрозрачного шума" - -#, fuzzy -#~ msgid "Fill Background" -#~ msgstr "Фон" - -#, fuzzy -#~ msgid "Adds a colorizable opaque background" -#~ msgstr "Создать раскрашиваемую тень внутри" - -#, fuzzy -#~ msgid "Flatten Transparency" -#~ msgstr "Прозрачность диалога:" - -#, fuzzy -#~ msgid "Adds a white opaque background" -#~ msgstr "default background" - -#, fuzzy -#~ msgid "Fill Area" -#~ msgstr "Сплошной цвет" - -#, fuzzy -#~ msgid "Blur Double" -#~ msgstr "Размывание" - -#, fuzzy -#~ msgid "Adds a small scale screen like noise locally" -#~ msgstr "Добавить небольшую зашумленность как на фотопленке" - -#, fuzzy -#~ msgid "Poster Color Fun" -#~ msgstr "Вставить цвет" - -#~ msgid "Basic noise fill texture; adjust color in Flood" -#~ msgstr "Простая текстура шума; цвет меняется в примитиве Заливка" - -#, fuzzy -#~ msgid "Alpha Turbulent" -#~ msgstr "Перекрашивание" - -#, fuzzy -#~ msgid "Colorize Turbulent" -#~ msgstr "Тонирование" - -#, fuzzy -#~ msgid "Cross Noise B" -#~ msgstr "Шум Пуассона" - -#, fuzzy -#~ msgid "Adds a small scale crossy graininess" -#~ msgstr "Добавить небольшую зашумленность как на фотопленке" - -#, fuzzy -#~ msgid "Cross Noise" -#~ msgstr "Шум Пуассона" - -#, fuzzy -#~ msgid "Adds a small scale screen like graininess" -#~ msgstr "Добавить небольшую зашумленность как на фотопленке" - -#, fuzzy -#~ msgid "Light Eraser Cracked" -#~ msgstr "Ластик для светлых областей" - -#, fuzzy -#~ msgid "Poster Turbulent" -#~ msgstr "Турбулентность" - -#, fuzzy -#~ msgid "Tartan Smart" -#~ msgstr "Шотландка" - -#, fuzzy -#~ msgid "Highly configurable checkered tartan pattern" -#~ msgstr "Клетчатая шерстяная материя" - -#, fuzzy -#~ msgid "Light Contour" -#~ msgstr "Источник света:" - -#~ msgid "Liquid" -#~ msgstr "Жидкость" - -#~ msgid "Colorizable filling with liquid transparency" -#~ msgstr "Раскрашиваемая заливка, придающая объекту эффект жидкости" - -#~ msgid "Aluminium" -#~ msgstr "Алюминий" - -#, fuzzy -#~ msgid "Aluminium effect with sharp brushed reflections" -#~ msgstr "Гелевый эффект с сильным преломлением" - -#~ msgid "Comics" -#~ msgstr "Комикс" - -#, fuzzy -#~ msgid "Comics cartoon drawing effect" -#~ msgstr "Комикс, нарисованный мокрой кистью" - -#, fuzzy -#~ msgid "Comics Draft" -#~ msgstr "Черновик комикса" - -#~ msgid "Draft painted cartoon shading with a glassy look" -#~ msgstr "Начерно нарисованный комикс с блеском" - -#, fuzzy -#~ msgid "Comics Fading" -#~ msgstr "Комикс с затуханием" - -#~ msgid "Cartoon paint style with some fading at the edges" -#~ msgstr "Стиль рисования наподобие комиксов с затуханием по краям" - -#, fuzzy -#~ msgid "Brushed Metal" -#~ msgstr "Ржавчина" - -#, fuzzy -#~ msgid "Opaline" -#~ msgstr "Контур" - -#~ msgid "Contouring version of smooth shader" -#~ msgstr "Абрисная версия плавного шейдера" - -#~ msgid "Chrome" -#~ msgstr "Хром" - -#, fuzzy -#~ msgid "Bright chrome effect" -#~ msgstr "Справа налево" - -#, fuzzy -#~ msgid "Deep Chrome" -#~ msgstr "Хром" - -#, fuzzy -#~ msgid "Dark chrome effect" -#~ msgstr "Текущий эффект" - -#, fuzzy -#~ msgid "Emboss Shader" -#~ msgstr "Рельефный шейдер" - -#, fuzzy -#~ msgid "Combination of satiny and emboss effect" -#~ msgstr "Комбинация из плавного и рельефного шейдеров" - -#, fuzzy -#~ msgid "Sharp Metal" -#~ msgstr "Тёмный рельеф" - -#, fuzzy -#~ msgid "Chrome effect with darkened edges" -#~ msgstr "Гелевый эффект с легким преломлением" - -#, fuzzy -#~ msgid "Brush Draw" -#~ msgstr "Кисть" - -#, fuzzy -#~ msgid "Chrome Emboss" -#~ msgstr "Тёмный рельеф" - -#, fuzzy -#~ msgid "Embossed chrome effect" -#~ msgstr "Удаление контурного эффекта" - -#, fuzzy -#~ msgid "Contour Emboss" -#~ msgstr "Цветной рельеф" - -#, fuzzy -#~ msgid "Satiny and embossed contour effect" -#~ msgstr "Удалить эффекты" - -#, fuzzy -#~ msgid "Sharp Deco" -#~ msgstr "Повысить резкость" - -#~ msgid "Unrealistic reflections with sharp edges" -#~ msgstr "Нереалистичные отражения с острыми краями" - -#, fuzzy -#~ msgid "Deep Metal" -#~ msgstr "Гибкий металл" - -#, fuzzy -#~ msgid "Aluminium Emboss" -#~ msgstr "Aluminium 1" - -#, fuzzy -#~ msgid "Refractive Glass" -#~ msgstr "Преломляющий гель А" - -#, fuzzy -#~ msgid "Double reflection through glass with some refraction" -#~ msgstr "Гелевый эффект с сильным преломлением" - -#, fuzzy -#~ msgid "Frosted Glass" -#~ msgstr "Замороженное стекло" - -#, fuzzy -#~ msgid "Satiny glass effect" -#~ msgstr "Иллюминированный эффект тонированного стекла" - -#, fuzzy -#~ msgid "Bump Engraving" -#~ msgstr "Альфа-гравировка №1" - -#, fuzzy -#~ msgid "Carving emboss effect" -#~ msgstr "Вставить динамический контурный эффект" - -#, fuzzy -#~ msgid "Convoluted emboss effect" -#~ msgstr "Облачный акварельный эффект" - -#, fuzzy -#~ msgid "Emergence" -#~ msgstr "Отклонение" - -#, fuzzy -#~ msgid "Create a two colors lithographic effect" -#~ msgstr "Создание контурного эффекта" - -#, fuzzy -#~ msgid "Paint Channels" -#~ msgstr "Голубой канал (C)" - -#, fuzzy -#~ msgid "Posterized Light Eraser" -#~ msgstr "Ластик для светлых областей" - -#, fuzzy -#~ msgid "Trichrome" -#~ msgstr "Хром" - -#, fuzzy -#~ msgid "Contouring table" -#~ msgstr "Вписанный треугольник" - -#, fuzzy -#~ msgid "Blurred multiple contours for objects" -#~ msgstr "Пустой контур с размытой обводкой" - -#, fuzzy -#~ msgid "Contouring discrete" -#~ msgstr "Controlling dock item" - -#, fuzzy -#~ msgid "Sharp multiple contour for objects" -#~ msgstr "Прилипать центрами объектов" - -#~ msgid "Stripes 1:1" -#~ msgstr "Полосы 1:1" - -#~ msgid "Stripes 1:1 white" -#~ msgstr "Полосы белые 1:1" - -#~ msgid "Stripes 1:1.5" -#~ msgstr "Полосы 1:1.5" - -#~ msgid "Stripes 1:1.5 white" -#~ msgstr "Полосы белые 1:1.5" - -#~ msgid "Stripes 1:2" -#~ msgstr "Полосы 1:2" - -#~ msgid "Stripes 1:2 white" -#~ msgstr "Полосы белые 1:2" - -#~ msgid "Stripes 1:3" -#~ msgstr "Полосы 1:3" - -#~ msgid "Stripes 1:3 white" -#~ msgstr "Полосы белые 1:3" - -#~ msgid "Stripes 1:4" -#~ msgstr "Полосы 1:4" - -#~ msgid "Stripes 1:4 white" -#~ msgstr "Полосы белые 1:4" - -#~ msgid "Stripes 1:5" -#~ msgstr "Полосы 1:5" - -#~ msgid "Stripes 1:5 white" -#~ msgstr "Полосы белые 1:5" - -#~ msgid "Stripes 1:8" -#~ msgstr "Полосы 1:8" - -#~ msgid "Stripes 1:8 white" -#~ msgstr "Полосы белые 1:8" - -#~ msgid "Stripes 1:10" -#~ msgstr "Полосы 1:10" - -#~ msgid "Stripes 1:10 white" -#~ msgstr "Полосы белые 1:10" - -#~ msgid "Stripes 1:16" -#~ msgstr "Полосы 1:16" - -#~ msgid "Stripes 1:16 white" -#~ msgstr "Полосы белые 1:16" - -#~ msgid "Stripes 1:32" -#~ msgstr "Полосы 1:32" - -#~ msgid "Stripes 1:32 white" -#~ msgstr "Полосы белые 1:32" - -#~ msgid "Stripes 1:64" -#~ msgstr "Полосы 1:64" - -#~ msgid "Stripes 2:1" -#~ msgstr "Полосы 2:1" - -#~ msgid "Stripes 2:1 white" -#~ msgstr "Полосы белые 2:1" - -#~ msgid "Stripes 4:1" -#~ msgstr "Полосы 4:1" - -#~ msgid "Stripes 4:1 white" -#~ msgstr "Полосы белые 4:1" - -#~ msgid "Checkerboard" -#~ msgstr "Шахматная доска" - -#~ msgid "Checkerboard white" -#~ msgstr "Шахматная доска белая" - -#~ msgid "Packed circles" -#~ msgstr "Упакованные круги" - -#~ msgid "Polka dots, small" -#~ msgstr "Горошек мелкий" - -#~ msgid "Polka dots, small white" -#~ msgstr "Горошек мелкий белый" - -#~ msgid "Polka dots, medium" -#~ msgstr "Горошек средний" - -#~ msgid "Polka dots, medium white" -#~ msgstr "Горошек средний белый" - -#~ msgid "Polka dots, large" -#~ msgstr "Горошек крупный" - -#~ msgid "Polka dots, large white" -#~ msgstr "Горошек крупный белый" - -#~ msgid "Wavy" -#~ msgstr "Волна" - -#~ msgid "Wavy white" -#~ msgstr "Волна белая" - -#~ msgid "Camouflage" -#~ msgstr "Камуфляж" - -#~ msgid "Ermine" -#~ msgstr "Горностай" - -#~ msgid "Sand (bitmap)" -#~ msgstr "Песок (растровая текстура)" - -#~ msgid "Cloth (bitmap)" -#~ msgstr "Ткань (растровая текстура)" - -#~ msgid "Old paint (bitmap)" -#~ msgstr "Старая краска (растровая текстура)" - #~ msgid "<b>Flowed text</b> (%d character%s)" #~ msgid_plural "<b>Flowed text</b> (%d characters%s)" #~ msgstr[0] "<b>Завёрстанный текст</b> (%d символ%s)" diff --git a/share/extensions/empty_business_card.inx b/share/extensions/empty_business_card.inx new file mode 100644 index 000000000..1513ebf26 --- /dev/null +++ b/share/extensions/empty_business_card.inx @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"> + <_name>Business Card</_name> + <id>org.inkscape.render.empty_business_card</id> + <dependency type="executable" location="extensions">business_card.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + + <param name="size" _gui-text="Business card size:" type="enum"> + <item value="74mmx52mm">74mm x 52mm (A8)</item> + <item value="85mmx55mm">85mm x 55mm (Europe)</item> + <item value="90mmx55mm">90mm x 55mm (Australia, India, ...)</item> + <item value="91mmx55mm">91mm x 55mm (Japan)</item> + <item value="90mmx54mm">90mm x 54mm (China, ...)</item> + <item value="90mmx50mm">90mm x 50mm (India, Russia, ...)</item> + <item value="3.5inx2in">3.5in x 2in (United States, Canada)</item> + </param> + + <effect needs-live-preview="false"> + <object-type>all</object-type> + <effects-menu hidden="true" /> + </effect> + <inkscape:_templateinfo> + <inkscape:_name>Business Card...</inkscape:_name> + <inkscape:author>Tavmjong Bah</inkscape:author> + <inkscape:_shortdesc>Business card of chosen size.</inkscape:_shortdesc> + <inkscape:date>2014-10-09</inkscape:date> + <inkscape:_keywords>business card</inkscape:_keywords> + </inkscape:_templateinfo> + <script> + <command reldir="extensions" interpreter="python">business_card.py</command> + </script> +</inkscape-extension> diff --git a/share/extensions/empty_business_card.py b/share/extensions/empty_business_card.py new file mode 100644 index 000000000..586c37abc --- /dev/null +++ b/share/extensions/empty_business_card.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python + +# Written by Tavmjong Bah + +import inkex +import re + +class C(inkex.Effect): + def __init__(self): + inkex.Effect.__init__(self) + self.OptionParser.add_option("-s", "--size", action="store", type="string", dest="card_size", default="90mmx55mm", help="Business card size") + + def effect(self): + + size = self.options.card_size + + p = re.compile('([0-9.]*)([a-z][a-z])x([0-9.]*)([a-z][a-z])') + m = p.match( size ) + width = m.group(1) + width_unit = m.group(2) + height = m.group(3) + height_unit = m.group(4) + + root = self.document.getroot() + root.set("id", "SVGRoot") + root.set("width", width + width_unit) + root.set("height", height + height_unit) + root.set("viewBox", "0 0 " + width + " " + height ) + + namedview = root.find(inkex.addNS('namedview', 'sodipodi')) + if namedview is None: + namedview = inkex.etree.SubElement( root, inkex.addNS('namedview', 'sodipodi') ); + + namedview.set(inkex.addNS('document-units', 'inkscape'), width_unit) + + width_int = int(self.uutounit(float(width), 'px')) + height_int = int(self.uutounit(float(height), 'px')) + + namedview.set(inkex.addNS('zoom', 'inkscape'), str(2) ) + namedview.set(inkex.addNS('cx', 'inkscape'), str(width_int/2.0) ) + namedview.set(inkex.addNS('cy', 'inkscape'), str(height_int/2.0) ) + + +c = C() +c.affect() diff --git a/share/extensions/empty_desktop.inx b/share/extensions/empty_desktop.inx new file mode 100644 index 000000000..75762b660 --- /dev/null +++ b/share/extensions/empty_desktop.inx @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"> + <_name>Desktop</_name> + <id>org.inkscape.render.empty_desktop</id> + <dependency type="executable" location="extensions">empty_desktop.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + + <param name="size" _gui-text="Desktop size:" type="enum"> + <item value="Custom">Custom</item> + <item value="640x480">640x480 (VGA)</item> + <item value="800x600">800x600 (SVGA)</item> + <item value="1024x768">1024x768 (XGA)</item> + <item value="1366x768">1366x768 (HD)</item> + <item value="1600x900">1600x900 (HD+)</item> + <item value="1600x1200">1600x1200 (UXGA)</item> + <item value="1920x1080">1920x1080 (FHD)</item> + <item value="1920x1200">1920x1200 (WUXGA)</item> + <item value="2560x1600">2560x1600 (WQXGA)</item> + </param> + + <!-- Maximum size is '16k' --> + <param name="width" _gui-text="Custom Width:" type="int" min="240" max="15360">1920</param> + <param name="height" _gui-text="Custom Height:" type="int" min="160" max="8640">1080</param> + + <effect needs-live-preview="false"> + <object-type>all</object-type> + <effects-menu hidden="true" /> + </effect> + <inkscape:_templateinfo> + <inkscape:_name>Desktop...</inkscape:_name> + <inkscape:author>Tavmjong Bah</inkscape:author> + <inkscape:_shortdesc>Empty desktop of chosen size.</inkscape:_shortdesc> + <inkscape:date>2014-10-09</inkscape:date> + <inkscape:_keywords>empty desktop</inkscape:_keywords> + </inkscape:_templateinfo> + <script> + <command reldir="extensions" interpreter="python">empty_desktop.py</command> + </script> +</inkscape-extension> diff --git a/share/extensions/empty_desktop.py b/share/extensions/empty_desktop.py new file mode 100644 index 000000000..31cb35f9d --- /dev/null +++ b/share/extensions/empty_desktop.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python + +# Written by Tavmjong Bah + +import inkex +import re + +class C(inkex.Effect): + def __init__(self): + inkex.Effect.__init__(self) + self.OptionParser.add_option("-s", "--size", action="store", type="string", dest="desktop_size", default="16", help="Desktop size") + + self.OptionParser.add_option("-w", "--width", action="store", type="int", dest="desktop_width", default="1920", help="Custom width") + self.OptionParser.add_option("-z", "--height", action="store", type="int", dest="desktop_height", default="1080", help="Custom height") + + def effect(self): + + size = self.options.desktop_size + width = self.options.desktop_width + height = self.options.desktop_height + + if size != "Custom": + p = re.compile('([0-9]*)x([0-9]*)') + m = p.match( size ) + width = int(m.group(1)) + height = int(m.group(2)) + + + root = self.document.getroot() + root.set("id", "SVGRoot") + root.set("width", str(width) + 'px') + root.set("height", str(height) + 'px') + root.set("viewBox", "0 0 " + str(width) + " " + str(height) ) + + namedview = root.find(inkex.addNS('namedview', 'sodipodi')) + if namedview is None: + namedview = inkex.etree.SubElement( root, inkex.addNS('namedview', 'sodipodi') ); + + namedview.set(inkex.addNS('document-units', 'inkscape'), 'px') + + namedview.set(inkex.addNS('cx', 'inkscape'), str(width/2.0) ) + namedview.set(inkex.addNS('cy', 'inkscape'), str(height/2.0) ) + + +c = C() +c.affect() diff --git a/share/extensions/empty_dvd_cover.inx b/share/extensions/empty_dvd_cover.inx new file mode 100644 index 000000000..facb523d1 --- /dev/null +++ b/share/extensions/empty_dvd_cover.inx @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"> + <_name>DVD Cover</_name> + <id>org.inkscape.render.empty_dvd_cover</id> + <dependency type="executable" location="extensions">empty_dvd_cover.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + + <param name="spine" _gui-text="DVD spine width:" type="enum"> + <item value="14">Normal (14mm)</item> + <item value="9">Slim (9mm)</item> + <item value="7">Super Slim (7mm)</item> + <item value="5">Ultra Slim (5mm)</item> + </param> + + <param name="bleed" _gui-text="DVD cover bleed (mm):" type="float" min="0" max="25">3</param> + + <effect needs-live-preview="false"> + <object-type>all</object-type> + <effects-menu hidden="true" /> + </effect> + <inkscape:_templateinfo> + <inkscape:_name>DVD Cover...</inkscape:_name> + <inkscape:author>Tavmjong Bah</inkscape:author> + <inkscape:_shortdesc>DVD cover of chosen size.</inkscape:_shortdesc> + <inkscape:date>2014-10-10</inkscape:date> + <inkscape:_keywords>dvd cover</inkscape:_keywords> + </inkscape:_templateinfo> + <script> + <command reldir="extensions" interpreter="python">empty_dvd_cover.py</command> + </script> +</inkscape-extension> diff --git a/share/extensions/empty_dvd_cover.py b/share/extensions/empty_dvd_cover.py new file mode 100644 index 000000000..1456de51d --- /dev/null +++ b/share/extensions/empty_dvd_cover.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python + +# Written by Tavmjong Bah + +import inkex + +class C(inkex.Effect): + def __init__(self): + inkex.Effect.__init__(self) + self.OptionParser.add_option("-s", "--spine", action="store", type="string", dest="dvd_cover_spine", default="normal", help="Dvd spine width") + self.OptionParser.add_option("-b", "--bleed", action="store", type="float", dest="dvd_cover_bleed", default="3", help="Bleed (extra area around image") + + def create_horizontal_guideline(self, name, position): + self.create_guideline(name, "0,1", 0, position) + + def create_vertical_guideline(self, name, position): + self.create_guideline(name, "1,0", position, 0) + + def create_guideline(self, label, orientation, x,y): + namedview = self.root.find(inkex.addNS('namedview', 'sodipodi')) + guide = inkex.etree.SubElement(namedview, inkex.addNS('guide', 'sodipodi')) + guide.set("orientation", orientation) + guide.set("position", str(x)+","+str(y)) + # No need to set label (causes translation problems, etc.) + # guide.set(inkex.addNS('label', 'inkscape'), label) + + def effect(self): + + # Dimensions in mm + width = 259.0 # Before adding spine width or bleed + height = 183.0 # Before adding bleed + + bleed = self.options.dvd_cover_bleed + spine = float( self.options.dvd_cover_spine ) + + width += spine + width += 2.0 * bleed + height += 2.0 * bleed + + self.root = self.document.getroot() + self.root.set("id", "SVGRoot") + self.root.set("width", str(width) + 'mm') + self.root.set("height", str(height) + 'mm') + self.root.set("viewBox", "0 0 " + str(width) + " " + str(height) ) + + namedview = self.root.find(inkex.addNS('namedview', 'sodipodi')) + if namedview is None: + namedview = inkex.etree.SubElement( self.root, inkex.addNS('namedview', 'sodipodi') ); + + namedview.set(inkex.addNS('document-units', 'inkscape'), "mm") + + # Until units are supported in 'cx', etc. + namedview.set(inkex.addNS('cx', 'inkscape'), str(self.uutounit( width, 'px' )/2.0 ) ) + namedview.set(inkex.addNS('cy', 'inkscape'), str(self.uutounit( height, 'px' )/2.0 ) ) + + self.create_horizontal_guideline("bottom", str(self.uutounit( bleed, 'px' )) ) + self.create_horizontal_guideline("top", str(self.uutounit( height-bleed, 'px' )) ) + self.create_vertical_guideline("left edge", str(self.uutounit( bleed, 'px' )) ) + self.create_vertical_guideline("left spline", str(self.uutounit( (width-spine)/2.0,'px' )) ) + self.create_vertical_guideline("right spline", str(self.uutounit( (width+spine)/2.0,'px' )) ) + self.create_vertical_guideline("left edge", str(self.uutounit( width-bleed, 'px' )) ) + +c = C() +c.affect() diff --git a/share/extensions/empty_generic.inx b/share/extensions/empty_generic.inx new file mode 100644 index 000000000..b430cfba5 --- /dev/null +++ b/share/extensions/empty_generic.inx @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"> + <_name>Generic Canvas</_name> + <id>org.inkscape.render.empty_generic_canvas</id> + <dependency type="executable" location="extensions">empty_generic.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + + <param name="width" _gui-text="Custom Width:" type="float" min="1" max="15360">800</param> + <param name="height" _gui-text="Custom Height:" type="float" min="1" max="8640">600</param> + + <param name="unit" _gui-text="SVG Unit:" type="enum"> + <item value="px">'px'</item> + <item value="in">'in'</item> + <item value="mm">'mm'</item> + <item value="cm">'cm'</item> + <item value="pc">'pc'</item> + <item value="pt">'pt'</item> + </param> + + <param name="background" _gui-text="Canvas background:" type="enum"> + <item value="normal">Normal</item> + <item value="black">Black Opaque</item> + <item value="gray">Gray Opaque</item> + <item value="white">White Opaque</item> + </param> + + <param name="noborder" type="boolean" _gui-text="Hide border">false</param> + + <!-- + <param name="layer" type="boolean" _gui-text="Include default layer">true</param> + --> + + <effect needs-live-preview="false"> + <object-type>all</object-type> + <effects-menu hidden="true" /> + </effect> + <inkscape:_templateinfo> + <inkscape:_name>Generic canvas...</inkscape:_name> + <inkscape:author>Tavmjong Bah</inkscape:author> + <inkscape:_shortdesc>Genric canvas of choosen size.</inkscape:_shortdesc> + <inkscape:date>2014-10-09</inkscape:date> + <inkscape:_keywords>empty generic canvas</inkscape:_keywords> + </inkscape:_templateinfo> + <script> + <command reldir="extensions" interpreter="python">empty_generic.py</command> + </script> +</inkscape-extension> diff --git a/share/extensions/empty_generic.py b/share/extensions/empty_generic.py new file mode 100644 index 000000000..62e27d220 --- /dev/null +++ b/share/extensions/empty_generic.py @@ -0,0 +1,82 @@ +#!/usr/bin/env python + +# Written by Tavmjong Bah + +import inkex +import re + +class C(inkex.Effect): + def __init__(self): + inkex.Effect.__init__(self) + self.OptionParser.add_option("-w", "--width", action="store", type="int", dest="generic_width", default="1920", help="Custom width") + self.OptionParser.add_option("-z", "--height", action="store", type="int", dest="generic_height", default="1080", help="Custom height") + self.OptionParser.add_option("-u", "--unit", action="store", type="string", dest="generic_unit", default="px", help="SVG Unit") + self.OptionParser.add_option("-b", "--background", action="store", type="string", dest="generic_background", default="normal", help="Canvas background") + self.OptionParser.add_option("-n", "--noborder", action="store", type="inkbool", dest="generic_noborder", default=False) + # self.OptionParser.add_option("-l", "--layer", action="store", type="inkbool", dest="generic_layer", default=True) + + def effect(self): + + width = self.options.generic_width + height = self.options.generic_height + unit = self.options.generic_unit + + root = self.document.getroot() + root.set("id", "SVGRoot") + root.set("width", str(width) + unit) + root.set("height", str(height) + unit) + root.set("viewBox", "0 0 " + str(width) + " " + str(height) ) + + namedview = root.find(inkex.addNS('namedview', 'sodipodi')) + if namedview is None: + namedview = inkex.etree.SubElement( root, inkex.addNS('namedview', 'sodipodi') ); + + namedview.set(inkex.addNS('document-units', 'inkscape'), unit) + + # Until units are supported in 'cx', etc. + namedview.set(inkex.addNS('zoom', 'inkscape'), str(512.0/self.uutounit( width, 'px' )) ) + namedview.set(inkex.addNS('cx', 'inkscape'), str(self.uutounit( width, 'px' )/2.0 ) ) + namedview.set(inkex.addNS('cy', 'inkscape'), str(self.uutounit( height, 'px' )/2.0 ) ) + + if self.options.generic_background == "white": + namedview.set( 'pagecolor', "#ffffff" ) + namedview.set( 'bordercolor', "#666666" ) + namedview.set(inkex.addNS('pageopacity', 'inkscape'), "1.0" ) + namedview.set(inkex.addNS('pageshadow', 'inkscape'), "0" ) + + if self.options.generic_background == "gray": + namedview.set( 'pagecolor', "#808080" ) + namedview.set( 'bordercolor', "#444444" ) + namedview.set(inkex.addNS('pageopacity', 'inkscape'), "1.0" ) + namedview.set(inkex.addNS('pageshadow', 'inkscape'), "0" ) + + if self.options.generic_background == "black": + namedview.set( 'pagecolor', "#000000" ) + namedview.set( 'bordercolor', "#999999" ) + namedview.set(inkex.addNS('pageopacity', 'inkscape'), "1.0" ) + namedview.set(inkex.addNS('pageshadow', 'inkscape'), "0" ) + + if self.options.generic_noborder: + pagecolor = namedview.get( 'pagecolor' ) + namedview.set( 'bordercolor', pagecolor ) + namedview.set( 'borderopacity', "0" ) + + # This nees more thought... we need to set "Current layer" to (root), how? + # if self.options.generic_layer: + # # Add layer + # inkex.debug( "We want a layer" ) + # else: + # # Remove layer id default document (assuming only one) + # inkex.debug( "We don't want a layer" ) + # layer_node = self.current_layer + # if layer_node is not None: + # inkex.debug( "We have layer" ) + # root.remove(layer_node) + # try: + # del namedview.attrib[ inkex.addNS('current-layer', 'inkscape') ] + # except: + # pass + + +c = C() +c.affect() diff --git a/share/extensions/empty_icon.inx b/share/extensions/empty_icon.inx new file mode 100644 index 000000000..9e36b9d20 --- /dev/null +++ b/share/extensions/empty_icon.inx @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"> + <_name>Icon</_name> + <id>org.inkscape.render.empty_icon</id> + <dependency type="executable" location="extensions">empty_icon.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + + <param name="size" _gui-text="Icon size:" type="int" min="8" max="256">16</param> + + <effect needs-live-preview="false"> + <object-type>all</object-type> + <effects-menu hidden="true" /> + </effect> + <inkscape:_templateinfo> + <inkscape:_name>Icon...</inkscape:_name> + <inkscape:author>Tavmjong Bah</inkscape:author> + <inkscape:_shortdesc>Empty icon of chosen size.</inkscape:_shortdesc> + <inkscape:date>2014-10-09</inkscape:date> + <inkscape:_keywords>empty icon</inkscape:_keywords> + </inkscape:_templateinfo> + <script> + <command reldir="extensions" interpreter="python">empty_icon.py</command> + </script> +</inkscape-extension> diff --git a/share/extensions/empty_icon.py b/share/extensions/empty_icon.py new file mode 100644 index 000000000..979edbae4 --- /dev/null +++ b/share/extensions/empty_icon.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python + +# Written by Tavmjong Bah + +import inkex + +class C(inkex.Effect): + def __init__(self): + inkex.Effect.__init__(self) + self.OptionParser.add_option("-s", "--size", action="store", type="int", dest="icon_size", default="16", help="Icon size") + + def effect(self): + + size = self.options.icon_size + + root = self.document.getroot() + root.set("id", "SVGRoot") + root.set("width", str(size) + 'px') + root.set("height", str(size) + 'px') + root.set("viewBox", "0 0 " + str(size) + " " + str(size) ) + + namedview = root.find(inkex.addNS('namedview', 'sodipodi')) + if namedview is None: + namedview = inkex.etree.SubElement( root, inkex.addNS('namedview', 'sodipodi') ); + + namedview.set(inkex.addNS('document-units', 'inkscape'), 'px') + + namedview.set(inkex.addNS('zoom', 'inkscape'), str(256.0/size) ) + namedview.set(inkex.addNS('cx', 'inkscape'), str(size/2.0) ) + namedview.set(inkex.addNS('cy', 'inkscape'), str(size/2.0) ) + namedview.set(inkex.addNS('grid-bbox', 'inkscape'), "true" ) + + + +c = C() +c.affect() diff --git a/share/extensions/empty_page.inx b/share/extensions/empty_page.inx index f3f60f796..6882b7273 100644 --- a/share/extensions/empty_page.inx +++ b/share/extensions/empty_page.inx @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <inkscape-extension xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"> - <_name>Empty Page</_name> + <_name>Page</_name> <id>org.inkscape.render.empty_page</id> <dependency type="executable" location="extensions">empty_page.py</dependency> <dependency type="executable" location="extensions">inkex.py</dependency> @@ -16,17 +16,26 @@ <item value="horizontal">Horizontal</item> <item value="vertical">Vertical</item> </param> - + + <param name="background" _gui-text="Page background:" type="enum"> + <item value="normal">Normal</item> + <item value="black">Black Opaque</item> + <item value="gray">Gray Opaque</item> + <item value="white">White Opaque</item> + </param> + + <param name="noborder" type="boolean" _gui-text="Hide border">false</param> + <effect needs-live-preview="false"> <object-type>all</object-type> <effects-menu hidden="true" /> </effect> <inkscape:_templateinfo> - <inkscape:_name>Empty page</inkscape:_name> - <inkscape:author>Jan Darowski</inkscape:author> + <inkscape:_name>Page...</inkscape:_name> + <inkscape:author>Jan Darowski, updated by Tavmjong Bah</inkscape:author> <inkscape:_shortdesc>Empty page of chosen size.</inkscape:_shortdesc> - <inkscape:date>2013-09-10</inkscape:date> - <inkscape:_keywords>empty sheet a4 a3 a5 letter</inkscape:_keywords> + <inkscape:date>2014-10-06</inkscape:date> + <inkscape:_keywords>empty sheet a4 a3 a5 letter black white opaque</inkscape:_keywords> </inkscape:_templateinfo> <script> <command reldir="extensions" interpreter="python">empty_page.py</command> diff --git a/share/extensions/empty_page.py b/share/extensions/empty_page.py index dc16bab97..3c1f67041 100644 --- a/share/extensions/empty_page.py +++ b/share/extensions/empty_page.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +# Rewritten by Tavmjong Bah to add correct viewBox, inkscape:cx, etc. attributes + import inkex class C(inkex.Effect): @@ -7,38 +9,77 @@ class C(inkex.Effect): inkex.Effect.__init__(self) self.OptionParser.add_option("-s", "--size", action="store", type="string", dest="page_size", default="a4", help="Page size") self.OptionParser.add_option("-o", "--orientation", action="store", type="string", dest="page_orientation", default="vertical", help="Page orientation") + self.OptionParser.add_option("-b", "--background", action="store", type="string", dest="page_background", default="normal", help="Page background") + self.OptionParser.add_option("-n", "--noborder", action="store", type="inkbool", dest="page_noborder", default=False) + + def effect(self): + + width = 300 + height = 300 + units = 'px' + + if self.options.page_size == "a5": + width = 148 + height= 210 + units = 'mm' + + if self.options.page_size == "a4": + width = 210 + height= 297 + units = 'mm' + + if self.options.page_size == "a3": + width = 297 + height= 420 + units = 'mm' + + if self.options.page_size == "letter": + width = 8.5 + height = 11 + units = 'in' + + if self.options.page_orientation == "horizontal": + width, height = height, width - def effect(self): root = self.document.getroot() - root.set("width", "12in") - root.set("height", "12in") - if self.options.page_size == "a4" and self.options.page_orientation == "vertical": - root.set("width", "210mm") - root.set("height", "297mm") - if self.options.page_size == "a4" and self.options.page_orientation == "horizontal": - root.set("height", "210mm") - root.set("width", "297mm") - - if self.options.page_size == "a5" and self.options.page_orientation == "vertical": - root.set("width", "148mm") - root.set("height", "210mm") - if self.options.page_size == "a5" and self.options.page_orientation == "horizontal": - root.set("width", "210mm") - root.set("height", "148mm") - - if self.options.page_size == "a3" and self.options.page_orientation == "vertical": - root.set("width", "297mm") - root.set("height", "420mm") - if self.options.page_size == "a3" and self.options.page_orientation == "horizontal": - root.set("width", "420mm") - root.set("height", "297mm") - - if self.options.page_size == "letter" and self.options.page_orientation == "vertical": - root.set("width", "8.5in") - root.set("height", "11in") - if self.options.page_size == "letter" and self.options.page_orientation == "horizontal": - root.set("width", "11in") - root.set("height", "8.5in") + root.set("id", "SVGRoot") + root.set("width", str(width) + units) + root.set("height", str(height) + units) + root.set("viewBox", "0 0 " + str(width) + " " + str(height) ) + + namedview = root.find(inkex.addNS('namedview', 'sodipodi')) + if namedview is None: + namedview = inkex.etree.SubElement( root, inkex.addNS('namedview', 'sodipodi') ); + + namedview.set(inkex.addNS('document-units', 'inkscape'), units) + + # Until units are supported in 'cx', etc. + namedview.set(inkex.addNS('cx', 'inkscape'), str(self.uutounit( width, 'px' )/2.0 ) ) + namedview.set(inkex.addNS('cy', 'inkscape'), str(self.uutounit( height, 'px' )/2.0 ) ) + + + if self.options.page_background == "white": + namedview.set( 'pagecolor', "#ffffff" ) + namedview.set( 'bordercolor', "#666666" ) + namedview.set(inkex.addNS('pageopacity', 'inkscape'), "1.0" ) + namedview.set(inkex.addNS('pageshadow', 'inkscape'), "0" ) + + if self.options.page_background == "gray": + namedview.set( 'pagecolor', "#808080" ) + namedview.set( 'bordercolor', "#444444" ) + namedview.set(inkex.addNS('pageopacity', 'inkscape'), "1.0" ) + namedview.set(inkex.addNS('pageshadow', 'inkscape'), "0" ) + + if self.options.page_background == "black": + namedview.set( 'pagecolor', "#000000" ) + namedview.set( 'bordercolor', "#999999" ) + namedview.set(inkex.addNS('pageopacity', 'inkscape'), "1.0" ) + namedview.set(inkex.addNS('pageshadow', 'inkscape'), "0" ) + + if self.options.page_noborder: + pagecolor = namedview.get( 'pagecolor' ) + namedview.set( 'bordercolor', pagecolor ) + namedview.set( 'borderopacity', "0" ) c = C() c.affect() diff --git a/share/extensions/empty_video.inx b/share/extensions/empty_video.inx new file mode 100644 index 000000000..8ca148cfc --- /dev/null +++ b/share/extensions/empty_video.inx @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"> + <_name>Video Screen</_name> + <id>org.inkscape.render.empty_video</id> + <dependency type="executable" location="extensions">empty_video.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + + <param name="size" _gui-text="Video size:" type="enum"> + <item value="Custom">Custom</item> + <item value="720x486">720x486 (NTSC)</item> + <item value="720x576">720x576 (PAL)</item> + <item value="1920x1080">1920x1080 (HDTV)</item> + <item value="3840x2160">3840x2160 (4K)</item> + <item value="7680x4320">7680x4320 (8K)</item> + </param> + + <!-- Maximum size is '16k' --> + <param name="width" _gui-text="Custom Width:" type="int" min="240" max="15360">1920</param> + <param name="height" _gui-text="Custom Height:" type="int" min="160" max="8640">1080</param> + + <effect needs-live-preview="false"> + <object-type>all</object-type> + <effects-menu hidden="true" /> + </effect> + <inkscape:_templateinfo> + <inkscape:_name>Video...</inkscape:_name> + <inkscape:author>Tavmjong Bah</inkscape:author> + <inkscape:_shortdesc>Video screen of chosen size.</inkscape:_shortdesc> + <inkscape:date>2014-10-09</inkscape:date> + <inkscape:_keywords>empty video</inkscape:_keywords> + </inkscape:_templateinfo> + <script> + <command reldir="extensions" interpreter="python">empty_video.py</command> + </script> +</inkscape-extension> diff --git a/share/extensions/empty_video.py b/share/extensions/empty_video.py new file mode 100644 index 000000000..4b440704c --- /dev/null +++ b/share/extensions/empty_video.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python + +# Written by Tavmjong Bah + +import inkex +import re + +class C(inkex.Effect): + def __init__(self): + inkex.Effect.__init__(self) + self.OptionParser.add_option("-s", "--size", action="store", type="string", dest="video_size", default="16", help="Video size") + + self.OptionParser.add_option("-w", "--width", action="store", type="int", dest="video_width", default="1920", help="Custom width") + self.OptionParser.add_option("-z", "--height", action="store", type="int", dest="video_height", default="1080", help="Custom height") + + def effect(self): + + size = self.options.video_size + width = self.options.video_width + height = self.options.video_height + + if size != "Custom": + p = re.compile('([0-9]*)x([0-9]*)') + m = p.match( size ) + width = int(m.group(1)) + height = int(m.group(2)) + + + root = self.document.getroot() + root.set("id", "SVGRoot") + root.set("width", str(width) + 'px') + root.set("height", str(height) + 'px') + root.set("viewBox", "0 0 " + str(width) + " " + str(height) ) + + namedview = root.find(inkex.addNS('namedview', 'sodipodi')) + if namedview is None: + namedview = inkex.etree.SubElement( root, inkex.addNS('namedview', 'sodipodi') ); + + namedview.set(inkex.addNS('document-units', 'inkscape'), 'px') + + namedview.set(inkex.addNS('cx', 'inkscape'), str(width/2.0) ) + namedview.set(inkex.addNS('cy', 'inkscape'), str(height/2.0) ) + + +c = C() +c.affect() diff --git a/share/extensions/setup_typography_canvas.inx b/share/extensions/setup_typography_canvas.inx index 332a14ade..8e7739b5c 100644 --- a/share/extensions/setup_typography_canvas.inx +++ b/share/extensions/setup_typography_canvas.inx @@ -4,11 +4,11 @@ <id>org.inkscape.typography.setuptypographycanvas</id> <dependency type="executable" location="extensions">inkex.py</dependency> <dependency type="executable" location="extensions">setup_typography_canvas.py</dependency> - <param name="emsize" type="int" _gui-text="Em-size:" min="10" max="2000">1000</param> - <param name="ascender" type="int" _gui-text="Ascender:" min="0" max="2000">750</param> - <param name="caps" type="int" _gui-text="Caps Height:" min="0" max="2000">700</param> - <param name="xheight" type="int" _gui-text="X-Height:" min="0" max="2000">500</param> - <param name="descender" type="int" _gui-text="Descender:" min="0" max="1000">250</param> + <param name="emsize" type="int" _gui-text="Em-size:" min="10" max="2048">1000</param> + <param name="ascender" type="int" _gui-text="Ascender:" min="0" max="2048">750</param> + <param name="caps" type="int" _gui-text="Caps Height:" min="0" max="2048">700</param> + <param name="xheight" type="int" _gui-text="X-Height:" min="0" max="2048">500</param> + <param name="descender" type="int" _gui-text="Descender:" min="0" max="1024">250</param> <effect> <object-type>all</object-type> <effects-menu> diff --git a/share/extensions/setup_typography_canvas.py b/share/extensions/setup_typography_canvas.py index 197aeb77e..a1000f2d1 100755 --- a/share/extensions/setup_typography_canvas.py +++ b/share/extensions/setup_typography_canvas.py @@ -69,6 +69,7 @@ class SetupTypographyCanvas(inkex.Effect): self.svg = self.document.getroot() self.svg.set("width", str(emsize)) self.svg.set("height", str(emsize)) + self.svg.set("viewBox", "0 0 " + str(emsize) + " " + str(emsize) ) baseline = descender # Create guidelines @@ -78,6 +79,12 @@ class SetupTypographyCanvas(inkex.Effect): self.create_horizontal_guideline("xheight", baseline+xheight) self.create_horizontal_guideline("descender", baseline-descender) + namedview = self.svg.find(inkex.addNS('namedview', 'sodipodi')) + namedview.set(inkex.addNS('document-units', 'inkscape'), 'px') + namedview.set(inkex.addNS('cx', 'inkscape'), str(emsize/2.0 )) + namedview.set(inkex.addNS('cy', 'inkscape'), str(emsize/2.0 )) + + if __name__ == '__main__': e = SetupTypographyCanvas() e.affect() diff --git a/share/templates/A4.svg b/share/templates/A4.svg deleted file mode 100644 index b7d7968d6..000000000 --- a/share/templates/A4.svg +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:cc="http://web.resource.org/cc/" - xmlns:dc="http://purl.org/dc/elements/1.1/" - width="210mm" - height="297mm" - viewBox="0 0 210 297"> - <defs - id="defs3" /> - <sodipodi:namedview - inkscape:document-units="mm" - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.35" - inkscape:cx="350" - inkscape:cy="520" - inkscape:current-layer="layer1" /> - <metadata - id="metadata4"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>A4 Page</inkscape:_name> - <inkscape:_shortdesc>Empty A4 sheet</inkscape:_shortdesc> - <inkscape:_keywords>A4 paper sheet empty</inkscape:_keywords> - </inkscape:_templateinfo> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" /> -</svg> diff --git a/share/templates/A4_landscape.svg b/share/templates/A4_landscape.svg deleted file mode 100644 index 7d550b3ff..000000000 --- a/share/templates/A4_landscape.svg +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:cc="http://web.resource.org/cc/" - xmlns:dc="http://purl.org/dc/elements/1.1/" - width="297mm" - height="210mm" - viewBox="0 0 297 210"> - <defs /> - <sodipodi:namedview - inkscape:document-units="mm" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.43415836" - inkscape:cx="490" - inkscape:cy="380" - inkscape:current-layer="layer1" /> - <metadata> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>A4 Landscape Page</inkscape:_name> - <inkscape:_shortdesc>Empty A4 landscape sheet</inkscape:_shortdesc> - <inkscape:_keywords>A4 paper sheet empty landscape</inkscape:_keywords> - </inkscape:_templateinfo> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" /> -</svg> diff --git a/share/templates/CD_cover_300dpi.svg b/share/templates/CD_cover_300dpi.svg deleted file mode 100644 index fc23cd48e..000000000 --- a/share/templates/CD_cover_300dpi.svg +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:cc="http://web.resource.org/cc/" - xmlns:dc="http://purl.org/dc/elements/1.1/" - width="343pt" - height="340pt" - viewBox="0 0 343 340"> - <defs /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.8" - inkscape:cx="210" - inkscape:cy="210" - inkscape:document-units="pt" - inkscape:current-layer="layer1" /> - <metadata> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>CD Cover 300dpi</inkscape:_name> - <inkscape:_shortdesc>Empty CD box cover.</inkscape:_shortdesc> - <inkscape:_keywords>CD cover disc disk 300dpi box</inkscape:_keywords> - </inkscape:_templateinfo> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" /> -</svg> diff --git a/share/templates/DVD_cover_regular_300dpi.svg b/share/templates/DVD_cover_regular_300dpi.svg deleted file mode 100644 index b9f471afd..000000000 --- a/share/templates/DVD_cover_regular_300dpi.svg +++ /dev/null @@ -1,89 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://web.resource.org/cc/" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="988.58264" - height="669.685" - id="svg1878" - sodipodi:version="0.32" - inkscape:version="0.43+0.44pre3" - version="1.0" - sodipodi:docbase="c:\Program Files\inkscape\share\templates" - sodipodi:docname="DVD_cover_regular_300dpi.svg"> - <defs - id="defs1880" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.76155208" - inkscape:cx="494.29132" - inkscape:cy="334.8425" - inkscape:document-units="mm" - inkscape:current-layer="layer1" - id="namedview1882" - width="279mm" - height="189mm" - units="mm" - showguides="true" - inkscape:guide-bbox="true" - inkscape:window-width="1024" - inkscape:window-height="719" - inkscape:window-x="-4" - inkscape:window-y="-4"> - <sodipodi:guide - orientation="vertical" - position="10.629921" - id="guide1887" /> - <sodipodi:guide - orientation="vertical" - position="977.95276" - id="guide1889" /> - <sodipodi:guide - orientation="horizontal" - position="659.05512" - id="guide1891" /> - <sodipodi:guide - orientation="horizontal" - position="10.629921" - id="guide1893" /> - <sodipodi:guide - orientation="vertical" - position="469.48819" - id="guide1895" /> - <sodipodi:guide - orientation="vertical" - position="519.09449" - id="guide1897" /> - </sodipodi:namedview> - <metadata - id="metadata1884"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>DVD Cover Regular 300dpi </inkscape:_name> - <inkscape:author>cmarqu</inkscape:author> - <inkscape:_shortdesc>Template for both-sides DVD covers.</inkscape:_shortdesc> - <inkscape:date>2006-06-21</inkscape:date> - <inkscape:_keywords>DVD cover regular 300dpi</inkscape:_keywords> - </inkscape:_templateinfo> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" /> -</svg> diff --git a/share/templates/DVD_cover_slim_300dpi.svg b/share/templates/DVD_cover_slim_300dpi.svg deleted file mode 100644 index ee7e1584c..000000000 --- a/share/templates/DVD_cover_slim_300dpi.svg +++ /dev/null @@ -1,89 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://web.resource.org/cc/" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="970.86609" - height="669.685" - id="svg1878" - sodipodi:version="0.32" - inkscape:version="0.43+0.44pre3" - version="1.0" - sodipodi:docbase="c:\Program Files\inkscape\share\templates" - sodipodi:docname="DVD_cover_slim_300dpi.svg"> - <defs - id="defs1880" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.76155208" - inkscape:cx="494.29132" - inkscape:cy="334.8425" - inkscape:document-units="mm" - inkscape:current-layer="layer1" - id="namedview1882" - width="273.99999mm" - height="189mm" - units="mm" - showguides="true" - inkscape:guide-bbox="true" - inkscape:window-width="1024" - inkscape:window-height="719" - inkscape:window-x="-4" - inkscape:window-y="-4"> - <sodipodi:guide - orientation="vertical" - position="10.629921" - id="guide1887" /> - <sodipodi:guide - orientation="vertical" - position="960.23622" - id="guide1889" /> - <sodipodi:guide - orientation="horizontal" - position="659.05512" - id="guide1891" /> - <sodipodi:guide - orientation="horizontal" - position="10.629921" - id="guide1893" /> - <sodipodi:guide - orientation="vertical" - position="469.48819" - id="guide1895" /> - <sodipodi:guide - orientation="vertical" - position="501.37795" - id="guide1897" /> - </sodipodi:namedview> - <metadata - id="metadata1884"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>DVD Cover Slim 300dpi </inkscape:_name> - <inkscape:author>cmarqu</inkscape:author> - <inkscape:_shortdesc>Template for both-sides DVD slim covers.</inkscape:_shortdesc> - <inkscape:date>2006-06-21</inkscape:date> - <inkscape:_keywords>DVD cover slim 300dpi</inkscape:_keywords> - </inkscape:_templateinfo> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" /> -</svg> diff --git a/share/templates/DVD_cover_superslim_300dpi.svg b/share/templates/DVD_cover_superslim_300dpi.svg deleted file mode 100644 index fecff3979..000000000 --- a/share/templates/DVD_cover_superslim_300dpi.svg +++ /dev/null @@ -1,89 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://web.resource.org/cc/" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="963.77948" - height="669.685" - id="svg1878" - sodipodi:version="0.32" - inkscape:version="0.43+0.44pre3" - version="1.0" - sodipodi:docbase="c:\Program Files\inkscape\share\templates" - sodipodi:docname="DVD_cover_superslim_300dpi.svg"> - <defs - id="defs1880" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.76155208" - inkscape:cx="494.29132" - inkscape:cy="334.8425" - inkscape:document-units="mm" - inkscape:current-layer="layer1" - id="namedview1882" - width="271.99999mm" - height="189mm" - units="mm" - showguides="true" - inkscape:guide-bbox="true" - inkscape:window-width="1024" - inkscape:window-height="719" - inkscape:window-x="-4" - inkscape:window-y="-4"> - <sodipodi:guide - orientation="vertical" - position="10.629921" - id="guide1887" /> - <sodipodi:guide - orientation="vertical" - position="953.14961" - id="guide1889" /> - <sodipodi:guide - orientation="horizontal" - position="659.05512" - id="guide1891" /> - <sodipodi:guide - orientation="horizontal" - position="10.629921" - id="guide1893" /> - <sodipodi:guide - orientation="vertical" - position="469.48819" - id="guide1895" /> - <sodipodi:guide - orientation="vertical" - position="494.29134" - id="guide1897" /> - </sodipodi:namedview> - <metadata - id="metadata1884"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>DVD Cover Superslim 300dpi </inkscape:_name> - <inkscape:author>cmarqu</inkscape:author> - <inkscape:_shortdesc>Template for both-sides DVD superslim covers.</inkscape:_shortdesc> - <inkscape:date>2006-06-21</inkscape:date> - <inkscape:_keywords>DVD cover superslim 300dpi</inkscape:_keywords> - </inkscape:_templateinfo> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" /> -</svg> diff --git a/share/templates/DVD_cover_ultraslim_300dpi.svg b/share/templates/DVD_cover_ultraslim_300dpi.svg deleted file mode 100644 index 79288832e..000000000 --- a/share/templates/DVD_cover_ultraslim_300dpi.svg +++ /dev/null @@ -1,89 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://web.resource.org/cc/" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="956.69287" - height="669.685" - id="svg1878" - sodipodi:version="0.32" - inkscape:version="0.43+0.44pre3" - version="1.0" - sodipodi:docbase="c:\Program Files\inkscape\share\templates" - sodipodi:docname="DVD_cover_ultraslim_300dpi.svg"> - <defs - id="defs1880" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.76155208" - inkscape:cx="478.34644" - inkscape:cy="334.8425" - inkscape:document-units="mm" - inkscape:current-layer="layer1" - id="namedview1882" - width="269.99999mm" - height="189mm" - units="mm" - showguides="true" - inkscape:guide-bbox="true" - inkscape:window-width="1024" - inkscape:window-height="719" - inkscape:window-x="-4" - inkscape:window-y="-4"> - <sodipodi:guide - orientation="vertical" - position="10.629921" - id="guide1887" /> - <sodipodi:guide - orientation="vertical" - position="946.063" - id="guide1889" /> - <sodipodi:guide - orientation="horizontal" - position="659.05512" - id="guide1891" /> - <sodipodi:guide - orientation="horizontal" - position="10.629921" - id="guide1893" /> - <sodipodi:guide - orientation="vertical" - position="469.48819" - id="guide1895" /> - <sodipodi:guide - orientation="vertical" - position="487.20473" - id="guide1897" /> - </sodipodi:namedview> - <metadata - id="metadata1884"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>DVD Cover Ultraslim 300dpi </inkscape:_name> - <inkscape:author>cmarqu</inkscape:author> - <inkscape:_shortdesc>Template for both-sides DVD ultraslim covers.</inkscape:_shortdesc> - <inkscape:date>2006-06-21</inkscape:date> - <inkscape:_keywords>DVD cover ultraslim 300dpi</inkscape:_keywords> - </inkscape:_templateinfo> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" /> -</svg> diff --git a/share/templates/Letter.svg b/share/templates/Letter.svg deleted file mode 100644 index 8942d2e2f..000000000 --- a/share/templates/Letter.svg +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:cc="http://web.resource.org/cc/" - xmlns:dc="http://purl.org/dc/elements/1.1/" - width="8.5in" - height="11in" - viewBox="0 0 8.5 11"> - <defs /> - <sodipodi:namedview - inkscape:document-units="in" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.36" - inkscape:cx="340" - inkscape:cy="500" - inkscape:current-layer="layer1" /> - <metadata> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>Letter</inkscape:_name> - <inkscape:_shortdesc>Standard letter sheet - 612x792</inkscape:_shortdesc> - <inkscape:_keywords>letter 612x792 empty</inkscape:_keywords> - </inkscape:_templateinfo> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" /> -</svg> diff --git a/share/templates/Letter_landscape.svg b/share/templates/Letter_landscape.svg deleted file mode 100644 index 531bb9d3e..000000000 --- a/share/templates/Letter_landscape.svg +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:cc="http://web.resource.org/cc/" - xmlns:dc="http://purl.org/dc/elements/1.1/" - width="11in" - height="8.5in" - viewBox="0 0 11 8.5"> - <defs /> - <sodipodi:namedview - inkscape:document-units="in" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.43415836" - inkscape:cx="490" - inkscape:cy="380" - inkscape:current-layer="layer1" /> - <metadata> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>Letter Landscape</inkscape:_name> - <inkscape:_shortdesc>Standard letter landscape sheet - 792x612</inkscape:_shortdesc> - <inkscape:_keywords>letter landscape 792x612 empty</inkscape:_keywords> - </inkscape:_templateinfo> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" /> -</svg> diff --git a/share/templates/Makefile.am b/share/templates/Makefile.am index 452c6aa91..390204ff7 100644 --- a/share/templates/Makefile.am +++ b/share/templates/Makefile.am @@ -3,18 +3,7 @@ templatesdir = $(datadir)/inkscape/templates templates_DATA = \ README \ - A4_landscape.svg \ - A4.svg \ - black_opaque.svg \ - white_opaque.svg \ - business_card_85x54mm.svg \ - business_card_90x50mm.svg \ - CD_cover_300dpi.svg \ CD_label_120x120.svg \ - DVD_cover_regular_300dpi.svg \ - DVD_cover_slim_300dpi.svg \ - DVD_cover_superslim_300dpi.svg \ - DVD_cover_ultraslim_300dpi.svg \ default.svg \ default.be.svg \ default.ca.svg \ @@ -36,41 +25,13 @@ templates_DATA = \ default.sk.svg \ default_pt.svg \ default_px.svg \ - desktop_1024x768.svg \ - desktop_1600x1200.svg \ - desktop_640x480.svg \ - desktop_800x600.svg \ - fontforge_glyph.svg \ - icon_16x16.svg \ - icon_32x32.svg \ - icon_48x48.svg \ - icon_64x64.svg \ - Letter_landscape.svg \ - Letter.svg \ - no_borders.svg \ no_layers.svg \ - video_HDTV_1920x1080.svg \ - video_NTSC_720x486.svg \ - video_PAL_720x576.svg \ - web_banner_468x60.svg \ - web_banner_728x90.svg \ LaTeX_Beamer.svg \ Typography_Canvas.svg \ templates.h templates_i18n = \ - A4_landscape.svg \ - A4.svg \ - black_opaque.svg \ - white_opaque.svg \ - business_card_85x54mm.svg \ - business_card_90x50mm.svg \ - CD_cover_300dpi.svg \ CD_label_120x120.svg \ - DVD_cover_regular_300dpi.svg \ - DVD_cover_slim_300dpi.svg \ - DVD_cover_superslim_300dpi.svg \ - DVD_cover_ultraslim_300dpi.svg \ default.svg \ default.be.svg \ default.ca.svg \ @@ -92,24 +53,7 @@ templates_i18n = \ default.sk.svg \ default_pt.svg \ default_px.svg \ - desktop_1024x768.svg \ - desktop_1600x1200.svg \ - desktop_640x480.svg \ - desktop_800x600.svg \ - fontforge_glyph.svg \ - icon_16x16.svg \ - icon_32x32.svg \ - icon_48x48.svg \ - icon_64x64.svg \ - Letter_landscape.svg \ - Letter.svg \ - no_borders.svg \ no_layers.svg \ - video_HDTV_1920x1080.svg \ - video_NTSC_720x486.svg \ - video_PAL_720x576.svg \ - web_banner_468x60.svg \ - web_banner_728x90.svg \ LaTeX_Beamer.svg \ Typography_Canvas.svg diff --git a/share/templates/README b/share/templates/README index 38a0be05c..423f25092 100644 --- a/share/templates/README +++ b/share/templates/README @@ -1,21 +1,28 @@ -This folder contains the templates for new documents created in Inkscape. You will -normally see them listed in the File > New submenu. A template may store any -document-specific settings (such as initial zoom and view, paper size, background and -borders, metadata, window geometry, grid and guide settings, export hints) as well as -any objects. To add a new template, simply save or copy it in this folder; nothing else -is required. +This folder contains the templates for new documents created in +Inkscape. You will normally see them listed in the File > New +submenu. A template may store any document-specific settings (such as +initial zoom and view, paper size, background and borders, metadata, +window geometry, grid and guide settings, export hints) as well as any +objects. To add a new template, simply save or copy it to this folder; +nothing else is required. -Files of the mask default.*.svg are the translations of default.svg template into -different languages. The default.svg itself is in English. These translations contain -a translated name of the default layer and possibly different canvas size. Each -language version of Inkscape will only use one of these templates and ignore the rest. +Procedural templates are located in the adjacent 'extension' +directory. By convention, they begin with 'empty'. -Internationalization -This file is internationalized the same way as share/filters/filters/svg -The i18n.py script called from the makefile will extract strings from the *.svg -into a *.svg.h file. Intltool is then able to extracts these strings just like -from normal .h files. +Internationalization: + +Files of the mask default.*.svg are the translations of default.svg +template into different languages. The default.svg itself is in +English. These translations contain a translated name of the default +layer and possibly different canvas size. Each language version of +Inkscape will only use one of these templates and ignore the rest. + +These files are internationalized the same way as +share/filters/filters/svg The i18n.py script called from the makefile +will extract strings from the *.svg files into a *.svg.h +file. Intltool is then able to extracts these strings just like from +normal .h files. The internationalized default files (A4 only) are created using the PERL script "create_defaults.pl" and are based on default.svg. To add diff --git a/share/templates/Typography_Canvas.svg b/share/templates/Typography_Canvas.svg index f142da13f..42a2919cb 100644 --- a/share/templates/Typography_Canvas.svg +++ b/share/templates/Typography_Canvas.svg @@ -9,9 +9,6 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - inkscape:version="0.48+devel r10213" - version="1.1" - id="svg2" height="1000" width="1000" sodipodi:docname="Typography_Canvas.svg"> @@ -22,12 +19,13 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="0.537" + inkscape:zoom="0.5" inkscape:cx="500" inkscape:cy="500" inkscape:document-units="px" - inkscape:current-layer="svg2" + inkscape:current-layer="layer1" showgrid="false" + showguides="true" inkscape:window-width="1280" inkscape:window-height="737" inkscape:window-x="0" @@ -36,27 +34,27 @@ showborder="true" inkscape:showpageshadow="false"> <sodipodi:guide - id="guide45" + id="guide_baseline" inkscape:label="baseline" position="0,253" orientation="0,1" /> <sodipodi:guide - id="guide47" + id="guide_ascender" inkscape:label="ascender" position="0,945" orientation="0,1" /> <sodipodi:guide - id="guide49" + id="guide_caps" inkscape:label="caps" position="0,896" orientation="0,1" /> <sodipodi:guide - id="guide51" + id="guide_xheight" inkscape:label="xheight" position="0,729" orientation="0,1" /> <sodipodi:guide - id="guide53" + id="guide_descender" inkscape:label="descender" position="0,28" orientation="0,1" /> diff --git a/share/templates/black_opaque.svg b/share/templates/black_opaque.svg deleted file mode 100644 index 7bed84ee5..000000000 --- a/share/templates/black_opaque.svg +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:cc="http://web.resource.org/cc/" - xmlns:dc="http://purl.org/dc/elements/1.1/" - width="210mm" - height="297mm" - viewBox="0 0 210 297"> - <defs /> - <sodipodi:namedview - id="base" - pagecolor="#000000" - bordercolor="#000000" - borderopacity="1.0" - inkscape:pageopacity="1.0" - inkscape:pageshadow="0" - inkscape:zoom="0.35" - inkscape:cx="400" - inkscape:cy="560" - inkscape:document-units="mm" - inkscape:current-layer="layer1" /> - <metadata> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>Black Opaque</inkscape:_name> - <inkscape:_shortdesc>Empty black page</inkscape:_shortdesc> - <inkscape:_keywords>black opaque empty</inkscape:_keywords> - </inkscape:_templateinfo> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" /> -</svg> diff --git a/share/templates/business_card_85x54mm.svg b/share/templates/business_card_85x54mm.svg deleted file mode 100644 index 257cb6060..000000000 --- a/share/templates/business_card_85x54mm.svg +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:cc="http://web.resource.org/cc/" - xmlns:dc="http://purl.org/dc/elements/1.1/" - width="85mm" - height="54mm" - viewBox="0 0 85 54"> - <defs - id="defs3" /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="1.2" - inkscape:cx="160" - inkscape:cy="100" - inkscape:document-units="mm" - inkscape:current-layer="layer1" /> - <metadata> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>Business Card 85x54mm</inkscape:_name> - <inkscape:_shortdesc>Empty business card template.</inkscape:_shortdesc> - <inkscape:_keywords>business card empty 85mmx54mm</inkscape:_keywords> - </inkscape:_templateinfo> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" /> -</svg> diff --git a/share/templates/business_card_90x50mm.svg b/share/templates/business_card_90x50mm.svg deleted file mode 100644 index c25556468..000000000 --- a/share/templates/business_card_90x50mm.svg +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:cc="http://web.resource.org/cc/" - xmlns:dc="http://purl.org/dc/elements/1.1/" - width="90mm" - height="50mm" - viewBox="0 0 90 50"> - <defs - id="defs3" /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="1.2" - inkscape:cx="170" - inkscape:cy="95" - inkscape:document-units="mm" - inkscape:current-layer="layer1" /> - <metadata> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>Business Card 90x50mm</inkscape:_name> - <inkscape:_shortdesc>Empty business card template.</inkscape:_shortdesc> - <inkscape:_keywords>business card empty 90mmx50mm</inkscape:_keywords> - </inkscape:_templateinfo> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" /> -</svg> diff --git a/share/templates/desktop_1024x768.svg b/share/templates/desktop_1024x768.svg deleted file mode 100644 index b64a1bc79..000000000 --- a/share/templates/desktop_1024x768.svg +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - width="1024px" - height="768px" - xmlns="http://www.w3.org/2000/svg" - xmlns:cc="http://web.resource.org/cc/" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.5" - inkscape:cx="512" - inkscape:cy="382" - inkscape:current-layer="layer1" - inkscape:document-units="px"/> - <metadata> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>Desktop 1024x768</inkscape:_name> - <inkscape:_shortdesc>Empty desktop size sheet</inkscape:_shortdesc> - <inkscape:_keywords>desktop 1024x768 wallpaper</inkscape:_keywords> - </inkscape:_templateinfo> - <g id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer" /> -</svg> diff --git a/share/templates/desktop_1600x1200.svg b/share/templates/desktop_1600x1200.svg deleted file mode 100644 index bb8ca4bd5..000000000 --- a/share/templates/desktop_1600x1200.svg +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - width="1600px" - height="1200px" - xmlns="http://www.w3.org/2000/svg" - xmlns:cc="http://web.resource.org/cc/" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.3" - inkscape:cx="800" - inkscape:cy="600" - inkscape:current-layer="layer1" - inkscape:document-units="px"/> - <metadata> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>Desktop 1600x1200</inkscape:_name> - <inkscape:_shortdesc>Empty desktop size sheet</inkscape:_shortdesc> - <inkscape:_keywords>desktop 1600x1200 wallpaper</inkscape:_keywords> - </inkscape:_templateinfo> - <g id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer" /> -</svg> diff --git a/share/templates/desktop_640x480.svg b/share/templates/desktop_640x480.svg deleted file mode 100644 index 28f3de41e..000000000 --- a/share/templates/desktop_640x480.svg +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - width="640px" - height="480px" - xmlns="http://www.w3.org/2000/svg" - xmlns:cc="http://web.resource.org/cc/" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.77472527" - inkscape:cx="320" - inkscape:cy="240" - inkscape:current-layer="layer1" - inkscape:document-units="px"/> - <metadata> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>Desktop 640x480</inkscape:_name> - <inkscape:_shortdesc>Empty desktop size sheet</inkscape:_shortdesc> - <inkscape:_keywords>desktop 640x480 wallpaper</inkscape:_keywords> - </inkscape:_templateinfo> - <g id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer" /> -</svg> diff --git a/share/templates/desktop_800x600.svg b/share/templates/desktop_800x600.svg deleted file mode 100644 index 2f58e3b9d..000000000 --- a/share/templates/desktop_800x600.svg +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - width="800px" - height="600px" - xmlns="http://www.w3.org/2000/svg" - xmlns:cc="http://web.resource.org/cc/" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.6" - inkscape:cx="400" - inkscape:cy="300" - inkscape:current-layer="layer1" - inkscape:document-units="px" - /> - <metadata> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>Desktop 800x600</inkscape:_name> - <inkscape:_shortdesc>Empty desktop size sheet</inkscape:_shortdesc> - <inkscape:_keywords>desktop 800x600 wallpaper</inkscape:_keywords> - </inkscape:_templateinfo> - <g id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer" /> -</svg> diff --git a/share/templates/fontforge_glyph.svg b/share/templates/fontforge_glyph.svg deleted file mode 100644 index 84ea05753..000000000 --- a/share/templates/fontforge_glyph.svg +++ /dev/null @@ -1,59 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:cc="http://web.resource.org/cc/" - xmlns:dc="http://purl.org/dc/elements/1.1/" - width="1000" - height="1000"> - <defs - id="defs5498" /> - <sodipodi:namedview - inkscape:window-height="618" - inkscape:window-width="641" - inkscape:pageshadow="2" - inkscape:pageopacity="0.0" - borderopacity="1.0" - bordercolor="#666666" - pagecolor="#ffffff" - id="base" - showgrid="false" - showguides="true" - inkscape:guide-bbox="true" - inkscape:zoom="0.454" - inkscape:cx="500" - inkscape:cy="500" - inkscape:window-x="0" - inkscape:window-y="25" - inkscape:current-layer="layer1"> - <sodipodi:guide - orientation="horizontal" - position="200" - id="guide5596" /> - </sodipodi:namedview> - <metadata - id="metadata5594"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>Fontforge Glyph</inkscape:_name> - <inkscape:author>prokoudine</inkscape:author> - <inkscape:date>2007-11-11</inkscape:date> - <inkscape:_keywords>font fontforge glyph 1000x1000</inkscape:_keywords> - </inkscape:_templateinfo> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" /> -</svg> diff --git a/share/templates/icon_16x16.svg b/share/templates/icon_16x16.svg deleted file mode 100644 index bb4f5e7a0..000000000 --- a/share/templates/icon_16x16.svg +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - width="16px" - height="16px" - xmlns="http://www.w3.org/2000/svg" - xmlns:cc="http://web.resource.org/cc/" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="22.197802" - inkscape:cx="8" - inkscape:cy="8" - inkscape:current-layer="layer1" - showgrid="true" - inkscape:grid-bbox="true" - inkscape:document-units="px"/> - <metadata> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>Icon 16x16</inkscape:_name> - <inkscape:_shortdesc>Small 16x16 icon template.</inkscape:_shortdesc> - <inkscape:_keywords>icon 16x16 empty</inkscape:_keywords> - </inkscape:_templateinfo> - <g - id="layer1" - inkscape:label="Layer 1" - inkscape:groupmode="layer" /> -</svg> diff --git a/share/templates/icon_32x32.svg b/share/templates/icon_32x32.svg deleted file mode 100644 index 72d56ee7d..000000000 --- a/share/templates/icon_32x32.svg +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - width="32px" - height="32px" - xmlns="http://www.w3.org/2000/svg" - xmlns:cc="http://web.resource.org/cc/" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="11.197802" - inkscape:cx="16" - inkscape:cy="16" - inkscape:current-layer="layer1" - showgrid="true" - inkscape:grid-bbox="true" - inkscape:document-units="px"/> - <metadata> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>Icon 32x32</inkscape:_name> - <inkscape:_shortdesc>32x32 icon template.</inkscape:_shortdesc> - <inkscape:_keywords>icon 32x32 empty</inkscape:_keywords> - </inkscape:_templateinfo> - <g - id="layer1" - inkscape:label="Layer 1" - inkscape:groupmode="layer" /> -</svg> diff --git a/share/templates/icon_48x48.svg b/share/templates/icon_48x48.svg deleted file mode 100644 index 9c2ba463b..000000000 --- a/share/templates/icon_48x48.svg +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - width="48px" - height="48px" - xmlns="http://www.w3.org/2000/svg" - xmlns:cc="http://web.resource.org/cc/" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="7" - inkscape:cx="24" - inkscape:cy="24" - inkscape:current-layer="layer1" - showgrid="true" - inkscape:grid-bbox="true" - inkscape:document-units="px"/> - <metadata> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>Icon 48x48</inkscape:_name> - <inkscape:_shortdesc>48x48 icon template.</inkscape:_shortdesc> - <inkscape:_keywords>icon 48x48 empty</inkscape:_keywords> - </inkscape:_templateinfo> - <g - id="layer1" - inkscape:label="Layer 1" - inkscape:groupmode="layer" /> -</svg> diff --git a/share/templates/icon_64x64.svg b/share/templates/icon_64x64.svg deleted file mode 100644 index ce317acc4..000000000 --- a/share/templates/icon_64x64.svg +++ /dev/null @@ -1,48 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - width="64px" - height="64px" - xmlns="http://www.w3.org/2000/svg" - xmlns:cc="http://web.resource.org/cc/" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="5.5" - inkscape:cx="32" - inkscape:cy="32" - inkscape:current-layer="layer1" - showgrid="true" - inkscape:document-units="px" - inkscape:grid-bbox="true" - /> - <metadata> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>Icon 64x64</inkscape:_name> - <inkscape:_shortdesc>64x64 icon template.</inkscape:_shortdesc> - <inkscape:_keywords>icon 64x64 empty</inkscape:_keywords> - </inkscape:_templateinfo> - <g - id="layer1" - inkscape:label="Layer 1" - inkscape:groupmode="layer" /> -</svg> diff --git a/share/templates/no_borders.svg b/share/templates/no_borders.svg deleted file mode 100644 index 95ac43302..000000000 --- a/share/templates/no_borders.svg +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:cc="http://web.resource.org/cc/" - xmlns:dc="http://purl.org/dc/elements/1.1/" - width="210mm" - height="297mm" - viewBox="0 0 210 297"> - <defs /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#ffffff" - borderopacity="0.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="0" - inkscape:zoom="0.35" - inkscape:cx="400" - inkscape:cy="560" - inkscape:document-units="mm" - inkscape:current-layer="layer1" /> - <metadata> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>No Borders</inkscape:_name> - <inkscape:_shortdesc>Empty sheet with no borders</inkscape:_shortdesc> - <inkscape:_keywords>no borders empty</inkscape:_keywords> - </inkscape:_templateinfo> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" /> -</svg> diff --git a/share/templates/video_HDTV_1920x1080.svg b/share/templates/video_HDTV_1920x1080.svg deleted file mode 100644 index b2c8da68f..000000000 --- a/share/templates/video_HDTV_1920x1080.svg +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - width="1920px" - height="1080px" - xmlns="http://www.w3.org/2000/svg" - xmlns:cc="http://web.resource.org/cc/" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.3" - inkscape:cx="960" - inkscape:cy="540" - inkscape:document-units="px" - inkscape:current-layer="layer1" /> - <metadata> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>Video HDTV 1920x1080</inkscape:_name> - <inkscape:author>popolon2</inkscape:author> - <inkscape:_shortdesc>HDTV video template for 1920x1080 resolution.</inkscape:_shortdesc> - <inkscape:date>2006-10-14</inkscape:date> - <inkscape:_keywords>HDTV video empty 1920x1080</inkscape:_keywords> - </inkscape:_templateinfo> - <g id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer" /> -</svg> diff --git a/share/templates/video_NTSC_720x486.svg b/share/templates/video_NTSC_720x486.svg deleted file mode 100644 index 8609c5ca8..000000000 --- a/share/templates/video_NTSC_720x486.svg +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - width="720px" - height="486px" - xmlns="http://www.w3.org/2000/svg" - xmlns:cc="http://web.resource.org/cc/" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.75" - inkscape:cx="360" - inkscape:cy="243" - inkscape:document-units="px" - inkscape:current-layer="layer1" /> - <metadata> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>Video NTSC 720x486</inkscape:_name> - <inkscape:author>popolon2</inkscape:author> - <inkscape:_shortdesc>NTSC video template for 720x486 resolution.</inkscape:_shortdesc> - <inkscape:date>2006-10-14</inkscape:date> - <inkscape:_keywords>NTSC video empty 720x486</inkscape:_keywords> - </inkscape:_templateinfo> - <g id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer" /> -</svg> diff --git a/share/templates/video_PAL_720x576.svg b/share/templates/video_PAL_720x576.svg deleted file mode 100644 index 84eeb5547..000000000 --- a/share/templates/video_PAL_720x576.svg +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - width="720px" - height="576px" - xmlns="http://www.w3.org/2000/svg" - xmlns:cc="http://web.resource.org/cc/" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.6" - inkscape:cx="360" - inkscape:cy="290" - inkscape:document-units="px" - inkscape:current-layer="layer1" /> - <metadata> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>Video PAL 728x576</inkscape:_name> - <inkscape:author>popolon2</inkscape:author> - <inkscape:_shortdesc>PAL video template for 728x576 resolution.</inkscape:_shortdesc> - <inkscape:date>2006-10-14</inkscape:date> - <inkscape:_keywords>PAL video empty 728x576</inkscape:_keywords> - </inkscape:_templateinfo> - <g id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer" /> -</svg> diff --git a/share/templates/web_banner_468x60.svg b/share/templates/web_banner_468x60.svg deleted file mode 100644 index 14237b101..000000000 --- a/share/templates/web_banner_468x60.svg +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - width="468px" - height="60px" - xmlns="http://www.w3.org/2000/svg" - xmlns:cc="http://web.resource.org/cc/" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="1.2" - inkscape:cx="234" - inkscape:cy="30" - inkscape:document-units="px" - inkscape:current-layer="layer1" /> - <metadata> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>Web Banner 468x60</inkscape:_name> - <inkscape:_shortdesc>Empty 468x60 web banner template.</inkscape:_shortdesc> - <inkscape:_keywords>web banner 468x60 empty</inkscape:_keywords> - </inkscape:_templateinfo> - <g id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer" /> -</svg> diff --git a/share/templates/web_banner_728x90.svg b/share/templates/web_banner_728x90.svg deleted file mode 100644 index 1133fa98f..000000000 --- a/share/templates/web_banner_728x90.svg +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - width="728px" - height="90px" - xmlns="http://www.w3.org/2000/svg" - xmlns:cc="http://web.resource.org/cc/" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.75" - inkscape:cx="360" - inkscape:cy="45" - inkscape:document-units="px" - inkscape:current-layer="layer1" /> - <metadata> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>Web Banner 728x90</inkscape:_name> - <inkscape:_shortdesc>Empty 728x90 web banner template.</inkscape:_shortdesc> - <inkscape:_keywords>web banner 728x90 empty</inkscape:_keywords> - </inkscape:_templateinfo> - <g id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer" /> -</svg> diff --git a/share/templates/web_banners.svg b/share/templates/web_banners.svg deleted file mode 100644 index 02ad6bcac..000000000 --- a/share/templates/web_banners.svg +++ /dev/null @@ -1,112 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:ns="http://purl.org/dc/elements/1/" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="1430" - height="835" - id="svg2839" - version="1" - inkscape:version="0.46+devel r22620" - sodipodi:docname="web_banners.svg"> - <defs - id="defs2841"> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:zoom="0.5" - inkscape:cx="715" - inkscape:cy="415" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:window-width="900" - inkscape:window-height="700" - inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="1" - showguides="true" - inkscape:guide-bbox="true" /> - <metadata - id="metadata2844"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <ns:format>image/svg+xml</ns:format> - <ns:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <ns:title /> - <ns:format>image/svg+xml</ns:format> - <ns:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>Web Banners Collection</inkscape:_name> - <inkscape:author>Aurélio A. Heckert</inkscape:author> - <inkscape:_shortdesc>A collection of standard web banners</inkscape:_shortdesc> - <inkscape:date>2010-05-27</inkscape:date> - <inkscape:_keywords>web banners collection</inkscape:_keywords> - </inkscape:_templateinfo> - <g inkscape:label="Camada 1" inkscape:groupmode="layer" id="layer1"> - <g id="Areas" style="fill:#999999"> - <rect id="cell_phone_header" width="300" height="50" x="20" y="120" /> - <rect id="full_banner" width="468" height="60" x="692" y="758" /> - <rect id="leaderboard" width="728" height="90" x="20" y="16" /> - <rect id="square_pop-up" width="250" height="250" x="20" y="271" /> - <rect id="square" width="200" height="200" x="288" y="321" /> - <rect id="large_rectangle" width="336" height="280" x="20" y="538" /> - <rect id="medium_rectangle" width="300" height="250" x="373" y="568" /> - <rect id="skyscraper" width="120" height="600" x="1290" y="138" /> - <rect id="wide_skyscraper" width="160" height="600" x="1101" y="138" /> - <rect id="half_page_ad" width="300" height="600" x="772" y="138" /> - <rect id="half_banner" width="234" height="60" x="1176" y="758" /> - <rect id="3:1_rectangle" width="300" height="100" x="772" y="16" /> - <rect id="vertical_banner" width="120" height="240" x="627" y="121" /> - <rect id="button1" width="120" height="90" x="488" y="121" /> - <rect id="button2" width="120" height="60" x="488" y="231" /> - <rect id="micro_bar" width="88" height="31" x="520" y="311" /> - <rect id="square_button" width="125" height="125" x="347" y="166" /> - <rect id="rectangle" width="180" height="150" x="535" y="388" /> - </g> - <g id="Text" style="font-family:sans-serif;font-size:28px;letter-spacing:-2px;text-anchor:middle;fill:#000000"> - <text x="168" y="155">Cell Phone Header</text> - <text x="923" y="798">Full Banner</text> - <text x="382" y="71">Leaderboard</text> - <text x="143" y="403">Square Pop-Up</text> - <text x="387" y="429">Square</text> - <text x="186" y="685">Large Rectangle</text> - <text x="521" y="700">Medium Rectangle</text> - <text x="436" y="-1173" transform="matrix(0,1,-1,0,0,0)">Wide Skyscraper</text> - <text x="436" y="-1342" transform="matrix(0,1,-1,0,0,0)">Skyscraper</text> - <text x="436" y="-914" transform="matrix(0,1,-1,0,0,0)">Half Page Ad</text> - <text x="1290" y="798">Half Banner</text> - <text x="920" y="73">3:1 Rectangle</text> - <text x="240" y="-677" transform="matrix(0,1,-1,0,0,0)">Vertical Banner</text> - <text x="562" y="334" style="font-size:20px">Micro Bar</text> - <text x="547" y="176">Button 1</text> - <text x="547" y="271">Button 2</text> - <text x="623" y="471">Rectangle</text> - <text x="408" y="225"> - <tspan x="408" y="225">Square</tspan> - <tspan x="408" y="253">Button</tspan> - </text> - </g> - </g> -</svg> diff --git a/share/templates/white_opaque.svg b/share/templates/white_opaque.svg deleted file mode 100644 index b94aaeb75..000000000 --- a/share/templates/white_opaque.svg +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:cc="http://web.resource.org/cc/" - xmlns:dc="http://purl.org/dc/elements/1.1/" - width="210mm" - height="297mm" - viewBox="0 0 210 297"> - <defs /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#000000" - borderopacity="1.0" - inkscape:pageopacity="1.0" - inkscape:pageshadow="0" - inkscape:zoom="0.35" - inkscape:cx="400" - inkscape:cy="560" - inkscape:document-units="mm" - inkscape:current-layer="layer1" /> - <metadata> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <inkscape:_templateinfo> - <inkscape:_name>White Opaque</inkscape:_name> - <inkscape:_shortdesc>Empty white page</inkscape:_shortdesc> - <inkscape:_keywords>white opaque empty</inkscape:_keywords> - </inkscape:_templateinfo> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" /> -</svg> diff --git a/src/2geom/math-utils.h b/src/2geom/math-utils.h index 83c7b4f5e..0d5d3667b 100644 --- a/src/2geom/math-utils.h +++ b/src/2geom/math-utils.h @@ -111,7 +111,7 @@ inline void sincos(double angle, double &sin_, double &cos_) { # define IS_NAN(_a) (_isnan(_a)) /* Win32 definition */ #elif defined(isnan) || defined(__FreeBSD__) || defined(__osf__) # define IS_NAN(_a) (isnan(_a)) /* GNU definition */ -#elif defined (SOLARIS_2_8) && __GNUC__ == 3 && __GNUC_MINOR__ == 2 +#elif defined (SOLARIS) # define IS_NAN(_a) (isnan(_a)) /* GNU definition */ #else # define IS_NAN(_a) (boost::math::isnan(_a)) @@ -129,7 +129,7 @@ inline void sincos(double angle, double &sin_, double &cos_) { # define IS_FINITE(_a) (isfinite(_a)) #elif defined(__osf__) # define IS_FINITE(_a) (finite(_a) && !IS_NAN(_a)) -#elif defined (SOLARIS_2_8) && __GNUC__ == 3 && __GNUC_MINOR__ == 2 +#elif defined (SOLARIS) #include <ieeefp.h> #define IS_FINITE(_a) (finite(_a) && !IS_NAN(_a)) #else diff --git a/src/2geom/numeric/symmetric-matrix-fs-operation.h b/src/2geom/numeric/symmetric-matrix-fs-operation.h index 5222d2734..37ece56ae 100644 --- a/src/2geom/numeric/symmetric-matrix-fs-operation.h +++ b/src/2geom/numeric/symmetric-matrix-fs-operation.h @@ -44,7 +44,7 @@ namespace Geom { namespace NL { template <size_t N> inline -SymmetricMatrix<N> adj(const ConstBaseSymmetricMatrix<N> & S) +SymmetricMatrix<N> adj(const ConstBaseSymmetricMatrix<N> & /*S*/) { THROW_NOTIMPLEMENTED(); return SymmetricMatrix<N>(); diff --git a/src/2geom/numeric/symmetric-matrix-fs-trace.h b/src/2geom/numeric/symmetric-matrix-fs-trace.h index 099c834a8..dbabecf6e 100644 --- a/src/2geom/numeric/symmetric-matrix-fs-trace.h +++ b/src/2geom/numeric/symmetric-matrix-fs-trace.h @@ -74,7 +74,7 @@ template <size_t K, size_t N> struct trace { static - double evaluate (const ConstBaseSymmetricMatrix<N> & S) + double evaluate (const ConstBaseSymmetricMatrix<N> & /*S*/) { THROW_NOTIMPLEMENTED(); return K; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 008a888e0..f0bacff16 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -32,6 +32,8 @@ set(sp_SRC sp-gradient-reference.cpp sp-gradient.cpp sp-guide.cpp + sp-hatch.cpp + sp-hatch-path.cpp sp-image.cpp sp-item-group.cpp sp-item-notify-moveto.cpp @@ -116,6 +118,8 @@ set(sp_SRC sp-guide-attachment.h sp-guide-constraint.h sp-guide.h + sp-hatch.h + sp-hatch-path.h sp-image.h sp-item-group.h sp-item-notify-moveto.h diff --git a/src/Makefile_insert b/src/Makefile_insert index 541bd20ca..acf317c47 100644 --- a/src/Makefile_insert +++ b/src/Makefile_insert @@ -145,6 +145,8 @@ ink_common_sources += \ sp-guide-attachment.h \ sp-guide-constraint.h \ sp-guide.cpp sp-guide.h \ + sp-hatch.cpp sp-hatch.h \ + sp-hatch-path.cpp sp-hatch-path.h \ sp-image.cpp sp-image.h \ sp-item.cpp sp-item.h \ sp-item-group.cpp sp-item-group.h \ diff --git a/src/attributes.cpp b/src/attributes.cpp index 87bfdbe88..d142d1a06 100644 --- a/src/attributes.cpp +++ b/src/attributes.cpp @@ -293,6 +293,11 @@ static SPStyleProp const props[] = { {SP_ATTR_PATTERNUNITS, "patternUnits"}, {SP_ATTR_PATTERNCONTENTUNITS, "patternContentUnits"}, {SP_ATTR_PATTERNTRANSFORM, "patternTransform"}, + /* SPHatch */ + {SP_ATTR_HATCHUNITS, "hatchUnits"}, + {SP_ATTR_HATCHCONTENTUNITS, "hatchContentUnits"}, + {SP_ATTR_HATCHTRANSFORM, "hatchTransform"}, + {SP_ATTR_PITCH, "pitch"}, /* SPClipPath */ {SP_ATTR_CLIPPATHUNITS, "clipPathUnits"}, /* SPMask */ diff --git a/src/attributes.h b/src/attributes.h index 598d68fa3..8e091df71 100644 --- a/src/attributes.h +++ b/src/attributes.h @@ -295,6 +295,11 @@ enum SPAttributeEnum { SP_ATTR_PATTERNUNITS, SP_ATTR_PATTERNCONTENTUNITS, SP_ATTR_PATTERNTRANSFORM, + /* SPHatch */ + SP_ATTR_HATCHUNITS, + SP_ATTR_HATCHCONTENTUNITS, + SP_ATTR_HATCHTRANSFORM, + SP_ATTR_PITCH, /* SPClipPath */ SP_ATTR_CLIPPATHUNITS, /* SPMask */ diff --git a/src/box3d-side.h b/src/box3d-side.h index 89b3b0399..4783a5f24 100644 --- a/src/box3d-side.h +++ b/src/box3d-side.h @@ -7,6 +7,7 @@ * Authors: * Maximilian Albert <Anhalter42@gmx.de> * Abhishek Sharma + * Jon A. Cruz <jon@joncruz.org> * * Copyright (C) 2007 Authors * @@ -17,9 +18,6 @@ #include "axis-manip.h" -#define SP_BOX3D_SIDE(obj) (dynamic_cast<Box3DSide*>((SPObject*)obj)) -#define SP_IS_BOX3D_SIDE(obj) (dynamic_cast<const Box3DSide*>((SPObject*)obj) != NULL) - class SPBox3D; class Persp3D; diff --git a/src/box3d.cpp b/src/box3d.cpp index 5598bc83d..f872081b8 100644 --- a/src/box3d.cpp +++ b/src/box3d.cpp @@ -6,6 +6,7 @@ * Lauris Kaplinski <lauris@kaplinski.com> * bulia byak <buliabyak@users.sf.net> * Abhishek Sharma + * Jon A. Cruz <jon@joncruz.org> * * Copyright (C) 2007 Authors * Copyright (C) 1999-2002 Lauris Kaplinski @@ -263,9 +264,10 @@ void box3d_position_set(SPBox3D *box) { /* This draws the curve and calls requestDisplayUpdate() for each side (the latter is done in box3d_side_position_set() to avoid update conflicts with the parent box) */ - for ( SPObject *child = box->firstChild(); child; child = child->getNext() ) { - if (SP_IS_BOX3D_SIDE(child)) { - box3d_side_position_set(SP_BOX3D_SIDE(child)); + for ( SPObject *obj = box->firstChild(); obj; obj = obj->getNext() ) { + Box3DSide *side = dynamic_cast<Box3DSide *>(obj); + if (side) { + box3d_side_position_set(side); } } } @@ -1079,10 +1081,10 @@ box3d_recompute_z_orders (SPBox3D *box) { static std::map<int, Box3DSide *> box3d_get_sides(SPBox3D *box) { std::map<int, Box3DSide *> sides; - for ( SPObject *side = box->firstChild(); side; side = side->getNext() ) { - if (SP_IS_BOX3D_SIDE(side)){ - Box3DSide *bside = SP_BOX3D_SIDE(side); - sides[Box3D::face_to_int(bside->getFaceId())] = bside; + for ( SPObject *obj = box->firstChild(); obj; obj = obj->getNext() ) { + Box3DSide *side = dynamic_cast<Box3DSide *>(obj); + if (side) { + sides[Box3D::face_to_int(side->getFaceId())] = side; } } sides.erase(-1); @@ -1280,9 +1282,10 @@ SPGroup *box3d_convert_to_group(SPBox3D *box) // create a new group and add the sides (converted to ordinary paths) as its children Inkscape::XML::Node *grepr = xml_doc->createElement("svg:g"); - for ( SPObject *child = box->firstChild(); child; child = child->getNext() ) { - if (SP_IS_BOX3D_SIDE(child)) { - Inkscape::XML::Node *repr = box3d_side_convert_to_path(SP_BOX3D_SIDE(child)); + for ( SPObject *obj = box->firstChild(); obj; obj = obj->getNext() ) { + Box3DSide *side = dynamic_cast<Box3DSide *>(obj); + if (side) { + Inkscape::XML::Node *repr = box3d_side_convert_to_path(side); grepr->appendChild(repr); } else { g_warning("Non-side item encountered as child of a 3D box."); diff --git a/src/desktop-style.cpp b/src/desktop-style.cpp index ce8a06f29..15dc339cf 100644 --- a/src/desktop-style.cpp +++ b/src/desktop-style.cpp @@ -174,8 +174,10 @@ sp_desktop_set_style(SPDesktop *desktop, SPCSSAttr *css, bool change, bool write for (const GSList *i = desktop->selection->itemList(); i != NULL; i = i->next) { /* last used styles for 3D box faces are stored separately */ - if (SP_IS_BOX3D_SIDE (i->data)) { - const char * descr = box3d_side_axes_string(SP_BOX3D_SIDE(i->data)); + SPObject *obj = reinterpret_cast<SPObject *>(i->data); // TODO unsafe until Selection is refactored. + Box3DSide *side = dynamic_cast<Box3DSide *>(obj); + if (side) { + const char * descr = box3d_side_axes_string(side); if (descr != NULL) { prefs->mergeStyle(Glib::ustring("/desktop/") + descr + "/style", css_write); } diff --git a/src/display/CMakeLists.txt b/src/display/CMakeLists.txt index 20424c845..800c4d0d4 100644 --- a/src/display/CMakeLists.txt +++ b/src/display/CMakeLists.txt @@ -13,6 +13,7 @@ set(display_SRC drawing-group.cpp drawing-image.cpp drawing-item.cpp + drawing-pattern.cpp drawing-shape.cpp drawing-surface.cpp drawing-text.cpp @@ -75,6 +76,7 @@ set(display_SRC drawing-group.h drawing-image.h drawing-item.h + drawing-pattern.h drawing-shape.h drawing-surface.h drawing-text.h diff --git a/src/display/Makefile_insert b/src/display/Makefile_insert index abbd89a68..2355c3653 100644 --- a/src/display/Makefile_insert +++ b/src/display/Makefile_insert @@ -33,6 +33,8 @@ ink_common_sources += \ display/drawing-image.h \ display/drawing-item.cpp \ display/drawing-item.h \ + display/drawing-pattern.cpp \ + display/drawing-pattern.h \ display/drawing-shape.cpp \ display/drawing-shape.h \ display/drawing-surface.cpp \ diff --git a/src/display/drawing-item.cpp b/src/display/drawing-item.cpp index 56507bacb..9bb81cea5 100644 --- a/src/display/drawing-item.cpp +++ b/src/display/drawing-item.cpp @@ -15,6 +15,7 @@ #include "display/drawing-context.h" #include "display/drawing-item.h" #include "display/drawing-group.h" +#include "display/drawing-pattern.h" #include "display/drawing-surface.h" #include "nr-filter.h" #include "preferences.h" @@ -112,6 +113,8 @@ DrawingItem::DrawingItem(Drawing &drawing) , _transform(NULL) , _clip(NULL) , _mask(NULL) + , _fill_pattern(NULL) + , _stroke_pattern(NULL) , _filter(NULL) , _user_data(NULL) , _cache(NULL) @@ -166,6 +169,12 @@ DrawingItem::~DrawingItem() case CHILD_ROOT: _drawing._root = NULL; break; + case CHILD_FILL_PATTERN: + _parent->_fill_pattern = NULL; + break; + case CHILD_STROKE_PATTERN: + _parent->_stroke_pattern = NULL; + break; default: ; } @@ -174,6 +183,8 @@ DrawingItem::~DrawingItem() } clearChildren(); delete _transform; + delete _stroke_pattern; + delete _fill_pattern; delete _clip; delete _mask; delete _filter; @@ -368,6 +379,34 @@ DrawingItem::setMask(DrawingItem *item) _markForUpdate(STATE_ALL, true); } +void +DrawingItem::setFillPattern(DrawingPattern *pattern) +{ + _markForRendering(); + delete _fill_pattern; + _fill_pattern = pattern; + if (pattern) { + pattern->_parent = this; + assert(pattern->_child_type == CHILD_ORPHAN); + pattern->_child_type = CHILD_FILL_PATTERN; + } + _markForUpdate(STATE_ALL, true); +} + +void +DrawingItem::setStrokePattern(DrawingPattern *pattern) +{ + _markForRendering(); + delete _stroke_pattern; + _stroke_pattern = pattern; + if (pattern) { + pattern->_parent = this; + assert(pattern->_child_type == CHILD_ORPHAN); + pattern->_child_type = CHILD_STROKE_PATTERN; + } + _markForUpdate(STATE_ALL, true); +} + /// Move this item to the given place in the Z order of siblings. /// Does nothing if the item has no parent. void @@ -532,6 +571,12 @@ DrawingItem::update(Geom::IntRect const &area, UpdateContext const &ctx, unsigne if (to_update & STATE_RENDER) { // now that we know drawbox, dirty the corresponding rect on canvas // unless filtered, groups do not need to render by themselves, only their members + if (_fill_pattern) { + _fill_pattern->update(area, child_ctx, flags, reset); + } + if (_stroke_pattern) { + _stroke_pattern->update(area, child_ctx, flags, reset); + } if (!is_drawing_group(this) || (_filter && render_filters)) { _markForRendering(); } @@ -970,7 +1015,7 @@ DrawingItem::_setStyleCommon(SPStyle *&_style, SPStyle *style) if (_style) sp_style_unref(_style); _style = style; - if (style->filter.set && style->getFilter()) { + if (style && style->filter.set && style->getFilter()) { if (!_filter) { int primitives = sp_filter_primitive_count(SP_FILTER(style->getFilter())); _filter = new Inkscape::Filters::Filter(primitives); diff --git a/src/display/drawing-item.h b/src/display/drawing-item.h index dda5cd6ac..9b399e6e3 100644 --- a/src/display/drawing-item.h +++ b/src/display/drawing-item.h @@ -28,6 +28,7 @@ class Drawing; class DrawingCache; class DrawingContext; class DrawingItem; +class DrawingPattern; namespace Filters { @@ -114,6 +115,8 @@ public: void setTransform(Geom::Affine const &trans); void setClip(DrawingItem *item); void setMask(DrawingItem *item); + void setFillPattern(DrawingPattern *pattern); + void setStrokePattern(DrawingPattern *pattern); void setZOrder(unsigned z); void setItemBounds(Geom::OptRect const &bounds); void setFilterBounds(Geom::OptRect const &bounds); @@ -135,8 +138,8 @@ protected: CHILD_CLIP = 2, // referenced by _clip member of parent CHILD_MASK = 3, // referenced by _mask member of parent CHILD_ROOT = 4, // root item of _drawing - CHILD_FILL_PATTERN = 5, // not yet implemented: referenced by fill pattern of parent - CHILD_STROKE_PATTERN = 6 // not yet implemented: referenced by stroke pattern of parent + CHILD_FILL_PATTERN = 5, // referenced by fill pattern of parent + CHILD_STROKE_PATTERN = 6 // referenced by stroke pattern of parent }; enum RenderResult { RENDER_OK = 0, @@ -185,6 +188,8 @@ protected: DrawingItem *_clip; DrawingItem *_mask; + DrawingPattern *_fill_pattern; + DrawingPattern *_stroke_pattern; Inkscape::Filters::Filter *_filter; void *_user_data; ///< Used to associate DrawingItems with SPItems that created them DrawingCache *_cache; diff --git a/src/display/drawing-pattern.cpp b/src/display/drawing-pattern.cpp new file mode 100644 index 000000000..cf6358278 --- /dev/null +++ b/src/display/drawing-pattern.cpp @@ -0,0 +1,194 @@ +/** + * @file + * Canvas belonging to SVG pattern. + *//* + * Authors: + * Tomasz Boczkowski <penginsbacon@gmail.com> + * + * Copyright (C) 2014 Authors + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "display/cairo-utils.h" +#include "display/drawing-context.h" +#include "display/drawing-pattern.h" +#include "display/drawing-surface.h" + +namespace Inkscape { + +DrawingPattern::DrawingPattern(Drawing &drawing, bool debug) + : DrawingGroup(drawing) + , _pattern_to_user(NULL) + , _overflow_steps(1) + , _debug(debug) +{ +} + +DrawingPattern::~DrawingPattern() +{ + delete _pattern_to_user; // delete NULL; is safe +} + +void +DrawingPattern::setPatternToUserTransform(Geom::Affine const &new_trans) { + Geom::Affine current; + if (_pattern_to_user) { + current = *_pattern_to_user; + } + + if (!Geom::are_near(current, new_trans, 1e-18)) { + // mark the area where the object was for redraw. + _markForRendering(); + if (new_trans.isIdentity()) { + delete _pattern_to_user; // delete NULL; is safe + _pattern_to_user = NULL; + } else { + _pattern_to_user = new Geom::Affine(new_trans); + } + _markForUpdate(STATE_ALL, true); + } +} + +void +DrawingPattern::setTileRect(Geom::Rect const &tile_rect) { + _tile_rect = tile_rect; +} + +void +DrawingPattern::setOverflow(Geom::Affine initial_transform, int steps, Geom::Affine step_transform) { + _overflow_initial_transform = initial_transform; + _overflow_steps = steps; + _overflow_step_transform = step_transform; +} + +cairo_pattern_t * +DrawingPattern::renderPattern(float opacity) { + bool needs_opacity = (1.0 - opacity) >= 1e-3; + bool visible = opacity >= 1e-3; + + if (!visible) { + return NULL; + } + + if (!_tile_rect || (_tile_rect->area() == 0)) { + return NULL; + } + Geom::Rect pattern_tile = *_tile_rect; + + //TODO: If pattern_to_user set it to identity transform + + // The DrawingSurface class handles the mapping from "logical space" + // (coordinates in the rendering) to "physical space" (surface pixels). + // An oversampling is done as the pattern may not pixel align with the final surface. + // The cairo surface is created when the DrawingContext is declared. + // Create drawing surface with size of pattern tile (in pattern space) but with number of pixels + // based on required resolution (c). + Inkscape::DrawingSurface pattern_surface(pattern_tile, _pattern_resolution); + Inkscape::DrawingContext dc(pattern_surface); + dc.transform( pattern_surface.drawingTransform().inverse() ); + + pattern_tile *= pattern_surface.drawingTransform(); + Geom::IntRect one_tile = pattern_tile.roundOutwards(); + + // Render pattern. + if (needs_opacity) { + dc.pushGroup(); // this group is for pattern + opacity + } + + if (_debug) { + dc.setSource(0.8, 0.0, 0.8); + dc.paint(); + } + + //FIXME: What flags to choose? + if (_overflow_steps == 1) { + render(dc, one_tile, RENDER_DEFAULT); + } else { + //Overflow transforms need to be transformed to the new coordinate system + //introduced by dc.transform( pattern_surface.drawingTransform().inverse() ); + Geom::Affine dt = pattern_surface.drawingTransform(); + Geom::Affine idt = pattern_surface.drawingTransform().inverse(); + Geom::Affine initial_transform = idt * _overflow_initial_transform * dt; + Geom::Affine step_transform = idt * _overflow_step_transform * dt; + + dc.transform(initial_transform); + for (int i = 0; i < _overflow_steps; i++) { + render(dc, one_tile, RENDER_DEFAULT); + dc.transform(step_transform); + } + } + + //Uncomment to debug + // cairo_surface_t* raw = pattern_surface.raw(); + // std::cout << " cairo_surface (sp-pattern): " + // << " width: " << cairo_image_surface_get_width( raw ) + // << " height: " << cairo_image_surface_get_height( raw ) + // << std::endl; + // std::string filename = "drawing-pattern.png"; + // cairo_surface_write_to_png( pattern_surface.raw(), filename.c_str() ); + + if (needs_opacity) { + dc.popGroupToSource(); // pop raw pattern + dc.paint(opacity); // apply opacity + } + + cairo_pattern_t *cp = cairo_pattern_create_for_surface(pattern_surface.raw()); + // Apply transformation to user space. Also compensate for oversampling. + if (_pattern_to_user) { + ink_cairo_pattern_set_matrix(cp, _pattern_to_user->inverse() * pattern_surface.drawingTransform()); + } else { + ink_cairo_pattern_set_matrix(cp, pattern_surface.drawingTransform()); + } + + if (_debug) { + cairo_pattern_set_extend(cp, CAIRO_EXTEND_NONE); + } else { + cairo_pattern_set_extend(cp, CAIRO_EXTEND_REPEAT); + } + + return cp; +} + +unsigned +DrawingPattern::_updateItem(Geom::IntRect const &area, UpdateContext const &ctx, unsigned flags, unsigned reset) +{ + UpdateContext pattern_ctx; + + if (!_tile_rect || (_tile_rect->area() == 0)) { + return STATE_NONE; + } + + Geom::Rect pattern_tile = *_tile_rect; + Geom::Coord det_ctm = ctx.ctm.descrim(); + Geom::Coord det_ps2user = _pattern_to_user ? _pattern_to_user->descrim() : 1.0; + Geom::Coord det_child_transform = _child_transform ? _child_transform->descrim() : 1.0; + const double oversampling = 2.0; + double scale = det_ctm*det_ps2user*det_child_transform * oversampling; + //FIXME: When scale is too big (zooming in a hatch), cairo doesn't render the pattern + //More precisely it fails when seting pattern matrix in DrawingPattern::renderPattern + //Fully correct solution should make use of visible area bbox and change hach tile rect + //accordingly + if (scale > 25) { + scale = 25; + } + Geom::Point c(pattern_tile.dimensions()*scale*oversampling); + _pattern_resolution = c.ceil(); + + Inkscape::DrawingSurface pattern_surface(pattern_tile, _pattern_resolution); + + pattern_ctx.ctm = pattern_surface.drawingTransform(); + return DrawingGroup::_updateItem(Geom::IntRect::infinite(), pattern_ctx, flags, reset); +} + +} // end namespace Inkscape + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/src/display/drawing-pattern.h b/src/display/drawing-pattern.h new file mode 100644 index 000000000..7483ba067 --- /dev/null +++ b/src/display/drawing-pattern.h @@ -0,0 +1,87 @@ +/** + * @file + * Canvas belonging to SVG pattern. + *//* + * Authors: + * Tomasz Boczkowski <penginsbacon@gmail.com> + * + * Copyright (C) 2014 Authors + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifndef SEEN_INKSCAPE_DISPLAY_DRAWING_PATTERN_H +#define SEEN_INKSCAPE_DISPLAY_DRAWING_PATTERN_H + +#include "display/drawing-group.h" + +typedef struct _cairo_pattern cairo_pattern_t; +class SPStyle; + +namespace Inkscape { + +/** + * @brief Drawing tree node used for rendering paints. + * + * DrawingPattern is used for rendering patterns and hatches. + * + * It renders it's children to a cairo_pattern_t structure that can be + * applied as source for fill or stroke operations. + */ +class DrawingPattern + : public DrawingGroup +{ +public: + DrawingPattern(Drawing &drawing, bool debug = false); + ~DrawingPattern(); + + /** + * Set the transformation from pattern to user coordinate systems. + * @see SPPattern description for explanation of coordinate systems. + */ + void setPatternToUserTransform(Geom::Affine const &new_trans); + /** + * Set the tile rect position and dimentions in content coordinate system + */ + void setTileRect(Geom::Rect const &tile_rect); + /** + * Turn on overflow rendering. + * + * Overflow is implemented as repeated rendering of pattern contents. In every step + * a translation transform is applied. + */ + void setOverflow(Geom::Affine initial_transform, int steps, Geom::Affine step_transform); + /** + * Render the pattern. + * + * Returns caito_pattern_t structure that can be set as source surface. + */ + cairo_pattern_t *renderPattern(float opacity); +protected: + virtual unsigned _updateItem(Geom::IntRect const &area, UpdateContext const &ctx, + unsigned flags, unsigned reset); + + Geom::Affine *_pattern_to_user; + Geom::Affine _overflow_initial_transform; + Geom::Affine _overflow_step_transform; + int _overflow_steps; + Geom::OptRect _tile_rect; + bool _debug; + Geom::IntPoint _pattern_resolution; +}; + +bool is_drawing_group(DrawingItem *item); + +} // end namespace Inkscape + +#endif // !SEEN_INKSCAPE_DISPLAY_DRAWING_PATTERN_H + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/src/display/drawing-shape.cpp b/src/display/drawing-shape.cpp index 88506f2b9..66160638f 100644 --- a/src/display/drawing-shape.cpp +++ b/src/display/drawing-shape.cpp @@ -155,7 +155,7 @@ DrawingShape::_renderFill(DrawingContext &dc) Inkscape::DrawingContext::Save save(dc); dc.transform(_ctm); - bool has_fill = _nrstyle.prepareFill(dc, _item_bbox); + bool has_fill = _nrstyle.prepareFill(dc, _item_bbox, _fill_pattern); if( has_fill ) { dc.path(_curve->get_pathvector()); @@ -171,7 +171,7 @@ DrawingShape::_renderStroke(DrawingContext &dc) Inkscape::DrawingContext::Save save(dc); dc.transform(_ctm); - bool has_stroke = _nrstyle.prepareStroke(dc, _item_bbox); + bool has_stroke = _nrstyle.prepareStroke(dc, _item_bbox, _stroke_pattern); has_stroke &= (_nrstyle.stroke_width != 0); if( has_stroke ) { @@ -231,8 +231,8 @@ DrawingShape::_renderItem(DrawingContext &dc, Geom::IntRect const &area, unsigne // update fill and stroke paints. // this cannot be done during nr_arena_shape_update, because we need a Cairo context // to render svg:pattern - bool has_fill = _nrstyle.prepareFill(dc, _item_bbox); - bool has_stroke = _nrstyle.prepareStroke(dc, _item_bbox); + bool has_fill = _nrstyle.prepareFill(dc, _item_bbox, _fill_pattern); + bool has_stroke = _nrstyle.prepareStroke(dc, _item_bbox, _stroke_pattern); has_stroke &= (_nrstyle.stroke_width != 0); if (has_fill || has_stroke) { diff --git a/src/display/drawing-text.cpp b/src/display/drawing-text.cpp index 97a8c23d3..afe661b2e 100644 --- a/src/display/drawing-text.cpp +++ b/src/display/drawing-text.cpp @@ -448,13 +448,13 @@ unsigned DrawingText::_renderItem(DrawingContext &dc, Geom::IntRect const &/*are Inkscape::DrawingContext::Save save(dc); dc.transform(_ctm); - has_fill = _nrstyle.prepareFill( dc, _item_bbox); - has_stroke = _nrstyle.prepareStroke( dc, _item_bbox); + has_fill = _nrstyle.prepareFill( dc, _item_bbox, _fill_pattern); + has_stroke = _nrstyle.prepareStroke( dc, _item_bbox, _stroke_pattern); // Avoid creating patterns if not needed if( decorate ) { - has_td_fill = _nrstyle.prepareTextDecorationFill( dc, _item_bbox); - has_td_stroke = _nrstyle.prepareTextDecorationStroke(dc, _item_bbox); + has_td_fill = _nrstyle.prepareTextDecorationFill( dc, _item_bbox, _fill_pattern); + has_td_stroke = _nrstyle.prepareTextDecorationStroke(dc, _item_bbox, _stroke_pattern); } } diff --git a/src/display/nr-style.cpp b/src/display/nr-style.cpp index a9f101f69..96d16bf06 100644 --- a/src/display/nr-style.cpp +++ b/src/display/nr-style.cpp @@ -14,6 +14,7 @@ #include "sp-paint-server.h" #include "display/canvas-bpath.h" // contains SPStrokeJoinType, SPStrokeCapType etc. (WTF!) #include "display/drawing-context.h" +#include "display/drawing-pattern.h" void NRStyle::Paint::clear() { @@ -299,13 +300,16 @@ void NRStyle::set(SPStyle *style) update(); } -bool NRStyle::prepareFill(Inkscape::DrawingContext &dc, Geom::OptRect const &paintbox) +bool NRStyle::prepareFill(Inkscape::DrawingContext &dc, Geom::OptRect const &paintbox, Inkscape::DrawingPattern *pattern) { // update fill pattern if (!fill_pattern) { switch (fill.type) { - case PAINT_SERVER: { - fill_pattern = fill.server->pattern_new(dc.raw(), paintbox, fill.opacity); + case PAINT_SERVER: + if (pattern) { + fill_pattern = pattern->renderPattern(fill.opacity); + } else { + fill_pattern = fill.server->pattern_new(dc.raw(), paintbox, fill.opacity); } break; case PAINT_COLOR: { SPColor const &c = fill.color; @@ -325,14 +329,20 @@ void NRStyle::applyFill(Inkscape::DrawingContext &dc) dc.setFillRule(fill_rule); } -bool NRStyle::prepareTextDecorationFill(Inkscape::DrawingContext &dc, Geom::OptRect const &paintbox) +bool NRStyle::prepareTextDecorationFill(Inkscape::DrawingContext &dc, Geom::OptRect const &paintbox, Inkscape::DrawingPattern *pattern) { // update text decoration pattern if (!text_decoration_fill_pattern) { switch (text_decoration_fill.type) { - case PAINT_SERVER: { - text_decoration_fill_pattern = text_decoration_fill.server->pattern_new(dc.raw(), paintbox, text_decoration_fill.opacity); - } break; + case PAINT_SERVER: + if (pattern) { + text_decoration_fill_pattern = pattern->renderPattern( + text_decoration_fill.opacity); + } else { + text_decoration_fill_pattern = text_decoration_fill.server->pattern_new(dc.raw(), + paintbox, text_decoration_fill.opacity); + } + break; case PAINT_COLOR: { SPColor const &c = text_decoration_fill.color; text_decoration_fill_pattern = cairo_pattern_create_rgba( @@ -351,19 +361,25 @@ void NRStyle::applyTextDecorationFill(Inkscape::DrawingContext &dc) // Fill rule does not matter, no intersections. } -bool NRStyle::prepareStroke(Inkscape::DrawingContext &dc, Geom::OptRect const &paintbox) +bool NRStyle::prepareStroke(Inkscape::DrawingContext &dc, Geom::OptRect const &paintbox, Inkscape::DrawingPattern *pattern) { if (!stroke_pattern) { switch (stroke.type) { - case PAINT_SERVER: { - stroke_pattern = stroke.server->pattern_new(dc.raw(), paintbox, stroke.opacity); - } break; + case PAINT_SERVER: + if (pattern) { + stroke_pattern = pattern->renderPattern(stroke.opacity); + } else { + stroke_pattern = stroke.server->pattern_new(dc.raw(), paintbox, stroke.opacity); + } + break; case PAINT_COLOR: { SPColor const &c = stroke.color; - stroke_pattern = cairo_pattern_create_rgba( - c.v.c[0], c.v.c[1], c.v.c[2], stroke.opacity); - } break; - default: break; + stroke_pattern = cairo_pattern_create_rgba(c.v.c[0], c.v.c[1], c.v.c[2], + stroke.opacity); + } + break; + default: + break; } } if (!stroke_pattern) return false; @@ -380,13 +396,19 @@ void NRStyle::applyStroke(Inkscape::DrawingContext &dc) cairo_set_dash(dc.raw(), dash, n_dash, dash_offset); // fixme } -bool NRStyle::prepareTextDecorationStroke(Inkscape::DrawingContext &dc, Geom::OptRect const &paintbox) +bool NRStyle::prepareTextDecorationStroke(Inkscape::DrawingContext &dc, Geom::OptRect const &paintbox, Inkscape::DrawingPattern *pattern) { if (!text_decoration_stroke_pattern) { switch (text_decoration_stroke.type) { - case PAINT_SERVER: { - text_decoration_stroke_pattern = text_decoration_stroke.server->pattern_new(dc.raw(), paintbox, text_decoration_stroke.opacity); - } break; + case PAINT_SERVER: + if (pattern) { + text_decoration_stroke_pattern = pattern->renderPattern( + text_decoration_stroke.opacity); + } else { + text_decoration_stroke_pattern = text_decoration_stroke.server->pattern_new( + dc.raw(), paintbox, text_decoration_stroke.opacity); + } + break; case PAINT_COLOR: { SPColor const &c = text_decoration_stroke.color; text_decoration_stroke_pattern = cairo_pattern_create_rgba( diff --git a/src/display/nr-style.h b/src/display/nr-style.h index 83bcb1ab7..f324fdb56 100644 --- a/src/display/nr-style.h +++ b/src/display/nr-style.h @@ -21,6 +21,7 @@ class SPStyle; namespace Inkscape { class DrawingContext; +class DrawingPattern; } struct NRStyle { @@ -28,10 +29,10 @@ struct NRStyle { ~NRStyle(); void set(SPStyle *); - bool prepareFill(Inkscape::DrawingContext &dc, Geom::OptRect const &paintbox); - bool prepareStroke(Inkscape::DrawingContext &dc, Geom::OptRect const &paintbox); - bool prepareTextDecorationFill(Inkscape::DrawingContext &dc, Geom::OptRect const &paintbox); - bool prepareTextDecorationStroke(Inkscape::DrawingContext &dc, Geom::OptRect const &paintbox); + bool prepareFill(Inkscape::DrawingContext &dc, Geom::OptRect const &paintbox, Inkscape::DrawingPattern *pattern); + bool prepareStroke(Inkscape::DrawingContext &dc, Geom::OptRect const &paintbox, Inkscape::DrawingPattern *pattern); + bool prepareTextDecorationFill(Inkscape::DrawingContext &dc, Geom::OptRect const &paintbox, Inkscape::DrawingPattern *pattern); + bool prepareTextDecorationStroke(Inkscape::DrawingContext &dc, Geom::OptRect const &paintbox, Inkscape::DrawingPattern *pattern); void applyFill(Inkscape::DrawingContext &dc); void applyStroke(Inkscape::DrawingContext &dc); void applyTextDecorationFill(Inkscape::DrawingContext &dc); diff --git a/src/document.cpp b/src/document.cpp index 5aad4ca5e..70fec83d7 100644 --- a/src/document.cpp +++ b/src/document.cpp @@ -709,7 +709,12 @@ void SPDocument::fitToRect(Geom::Rect const &rect, bool with_margins) double const h = rect.height(); double const old_height = getHeight().value("px"); - Inkscape::Util::Unit const *px = unit_table.getUnit("px"); + Inkscape::Util::Unit const *nv_units = unit_table.getUnit("px"); + SPNamedView *nv = sp_document_namedview(this, NULL); + if (nv != NULL) { + if (nv->getAttribute("units")) + nv_units = unit_table.getUnit(nv->getAttribute("units")); + } /* in px */ double margin_top = 0.0; @@ -717,22 +722,16 @@ void SPDocument::fitToRect(Geom::Rect const &rect, bool with_margins) double margin_right = 0.0; double margin_bottom = 0.0; - SPNamedView *nv = sp_document_namedview(this, NULL); - if (with_margins && nv) { if (nv != NULL) { - gchar const * const units_abbr = nv->getAttribute("units"); - Inkscape::Util::Unit const *margin_units = NULL; - if (units_abbr) { - margin_units = unit_table.getUnit(units_abbr); - } - if (!margin_units) { - margin_units = px; - } - margin_top = nv->getMarginLength("fit-margin-top",margin_units, px, w, h, false); - margin_left = nv->getMarginLength("fit-margin-left",margin_units, px, w, h, true); - margin_right = nv->getMarginLength("fit-margin-right",margin_units, px, w, h, true); - margin_bottom = nv->getMarginLength("fit-margin-bottom",margin_units, px, w, h, false); + margin_top = nv->getMarginLength("fit-margin-top", nv_units, unit_table.getUnit("px"), w, h, false); + margin_left = nv->getMarginLength("fit-margin-left", nv_units, unit_table.getUnit("px"), w, h, true); + margin_right = nv->getMarginLength("fit-margin-right", nv_units, unit_table.getUnit("px"), w, h, true); + margin_bottom = nv->getMarginLength("fit-margin-bottom", nv_units, unit_table.getUnit("px"), w, h, false); + margin_top = Inkscape::Util::Quantity::convert(margin_top, nv_units, "px"); + margin_left = Inkscape::Util::Quantity::convert(margin_left, nv_units, "px"); + margin_right = Inkscape::Util::Quantity::convert(margin_right, nv_units, "px"); + margin_bottom = Inkscape::Util::Quantity::convert(margin_bottom, nv_units, "px"); } } @@ -741,8 +740,8 @@ void SPDocument::fitToRect(Geom::Rect const &rect, bool with_margins) rect.max() + Geom::Point(margin_right, margin_top)); - setWidth(Inkscape::Util::Quantity(rect_with_margins.width(), px)); - setHeight(Inkscape::Util::Quantity(rect_with_margins.height(), px)); + setWidth(Inkscape::Util::Quantity(Inkscape::Util::Quantity::convert(rect_with_margins.width(), "px", nv_units), nv_units)); + setHeight(Inkscape::Util::Quantity(Inkscape::Util::Quantity::convert(rect_with_margins.height(), "px", nv_units), nv_units)); Geom::Translate const tr( Geom::Point(0, old_height - rect_with_margins.height()) diff --git a/src/extension/implementation/script.cpp b/src/extension/implementation/script.cpp index 5ee226ccf..e6ac13cdc 100644 --- a/src/extension/implementation/script.cpp +++ b/src/extension/implementation/script.cpp @@ -726,12 +726,12 @@ void Script::effect(Inkscape::Extension::Effect *module, vd->emitReconstructionStart(); copy_doc(vd->rroot, mydoc->rroot); vd->emitReconstructionFinish(); - SPObject *layer = NULL; - + // Getting the named view from the document generated by the extension SPNamedView *nv = sp_document_namedview(mydoc, NULL); //Check if it has a default layer set up + SPObject *layer = NULL; if ( nv != NULL) { if( nv->default_layer_id != 0 ) { @@ -760,19 +760,21 @@ void Script::effect(Inkscape::Extension::Effect *module, /** - \brief A function to take all the svg elements from one document - and put them in another. - \param oldroot The root node of the document to be replaced - \param newroot The root node of the document to replace it with - - This function first deletes all of the data in the old document. It - does this by creating a list of what needs to be deleted, and then - goes through the list. This two pass approach removes issues with - the list being change while parsing through it. Lots of nasty bugs. - - Then, it goes through the new document, duplicating all of the - elements and putting them into the old document. The copy - is then complete. + \brief A function to replace all the elements in an old document + by those from a new document. + document and repinserts them into an emptied old document. + \param oldroot The root node of the old (destination) document. + \param newroot The root node of the new (source) document. + + This function first deletes all the elements in the old document by + making two pass, the first to create a list of the old elements and + the second to actually delete them. This two pass approach removes issues + with the list being change while parsing through it... lots of nasty bugs. + + Then, it copies all the element in the new document into the old document. + + Finally, it replaces the attributes in the root element of the old document + by the attributes in root of the new document. */ void Script::copy_doc (Inkscape::XML::Node * oldroot, Inkscape::XML::Node * newroot) { @@ -781,9 +783,21 @@ void Script::copy_doc (Inkscape::XML::Node * oldroot, Inkscape::XML::Node * newr g_warning("Error on copy_doc: NULL pointer input."); return; } + + // For copying attributes in root and in namedview + using Inkscape::Util::List; + using Inkscape::XML::AttributeRecord; + + // Question: Why is the "sodipodi:namedview" special? Treating it as a normal + // elmement results in crashes. + // Seems to be a bug: + // http://inkscape.13.x6.nabble.com/Effect-that-modifies-the-document-properties-tt2822126.html + std::vector<Inkscape::XML::Node *> delete_list; Inkscape::XML::Node * oldroot_namedview = NULL; + Inkscape::XML::Node * newroot_namedview = NULL; + // Make list for (Inkscape::XML::Node * child = oldroot->firstChild(); child != NULL; child = child->next()) { @@ -798,14 +812,18 @@ void Script::copy_doc (Inkscape::XML::Node * oldroot, Inkscape::XML::Node * newr delete_list.push_back(child); } } + + // Unparent (delete) for (unsigned int i = 0; i < delete_list.size(); i++) { sp_repr_unparent(delete_list[i]); } + // Copy for (Inkscape::XML::Node * child = newroot->firstChild(); child != NULL; child = child->next()) { if (!strcmp("sodipodi:namedview", child->name())) { + newroot_namedview = child; if (oldroot_namedview != NULL) { for (Inkscape::XML::Node * newroot_namedview_child = child->firstChild(); newroot_namedview_child != NULL; @@ -818,26 +836,44 @@ void Script::copy_doc (Inkscape::XML::Node * oldroot, Inkscape::XML::Node * newr } } - { - using Inkscape::Util::List; - using Inkscape::XML::AttributeRecord; - std::vector<gchar const *> attribs; + std::vector<gchar const *> attribs; - // Make a list of all attributes of the old root node. - for (List<AttributeRecord const> iter = oldroot->attributeList(); iter; ++iter) { - attribs.push_back(g_quark_to_string(iter->key)); - } + // Must explicitly copy root attributes. - // Delete the attributes of the old root nodes. - for (std::vector<gchar const *>::const_iterator it = attribs.begin(); it != attribs.end(); ++it) { - oldroot->setAttribute(*it, NULL); - } + // Make a list of all attributes of the old root node. + for (List<AttributeRecord const> iter = oldroot->attributeList(); iter; ++iter) { + attribs.push_back(g_quark_to_string(iter->key)); + } - // Set the new attributes. - for (List<AttributeRecord const> iter = newroot->attributeList(); iter; ++iter) { - gchar const *name = g_quark_to_string(iter->key); - oldroot->setAttribute(name, newroot->attribute(name)); - } + // Delete the attributes of the old root node. + for (std::vector<gchar const *>::const_iterator it = attribs.begin(); it != attribs.end(); ++it) { + oldroot->setAttribute(*it, NULL); + } + + // Set the new attributes. + for (List<AttributeRecord const> iter = newroot->attributeList(); iter; ++iter) { + gchar const *name = g_quark_to_string(iter->key); + oldroot->setAttribute(name, newroot->attribute(name)); + } + + attribs.clear(); + + // Must explicitly copy namedview attributes. + + // Make a list of all attributes of the old namedview node. + for (List<AttributeRecord const> iter = oldroot_namedview->attributeList(); iter; ++iter) { + attribs.push_back(g_quark_to_string(iter->key)); + } + + // Delete the attributes of the old namedview node. + for (std::vector<gchar const *>::const_iterator it = attribs.begin(); it != attribs.end(); ++it) { + oldroot_namedview->setAttribute(*it, NULL); + } + + // Set the new attributes. + for (List<AttributeRecord const> iter = newroot_namedview->attributeList(); iter; ++iter) { + gchar const *name = g_quark_to_string(iter->key); + oldroot_namedview->setAttribute(name, newroot_namedview->attribute(name)); } /** \todo Restore correct layer */ diff --git a/src/extension/internal/cairo-render-context.cpp b/src/extension/internal/cairo-render-context.cpp index c09b8e9c8..7e61cdbbb 100644 --- a/src/extension/internal/cairo-render-context.cpp +++ b/src/extension/internal/cairo-render-context.cpp @@ -39,6 +39,7 @@ #include "sp-item.h" #include "sp-item-group.h" #include "style.h" +#include "sp-hatch.h" #include "sp-linear-gradient.h" #include "sp-radial-gradient.h" #include "sp-pattern.h" @@ -1130,6 +1131,82 @@ CairoRenderContext::_createPatternPainter(SPPaintServer const *const paintserver } cairo_pattern_t* +CairoRenderContext::_createHatchPainter(SPPaintServer const *const paintserver, Geom::OptRect const &pbox) { + g_assert( SP_IS_HATCH(paintserver) ); + SPHatch *hatch = SP_HATCH(paintserver); + + g_assert(hatch->pitch() > 0); + + // create drawing and group + Inkscape::Drawing drawing; + unsigned dkey = SPItem::display_key_new(1); + + hatch->show(drawing, dkey, pbox); + + SPHatch::RenderInfo render_info = hatch->calculateRenderInfo(dkey); + Geom::Rect tile_rect = render_info.tile_rect; + + // Cairo requires an integer pattern surface width/height. + // Subtract 0.5 to prevent small rounding errors from increasing pattern size by one pixel. + // Multiply by SUBPIX_SCALE to allow for less than a pixel precision + const int subpix_scale = 10; + double surface_width = MAX(ceil(subpix_scale * tile_rect.width() - 0.5), 1); + double surface_height = MAX(ceil(subpix_scale * tile_rect.height() - 0.5), 1); + Geom::Affine drawing_scale = Geom::Scale(surface_width / tile_rect.width(), surface_height / tile_rect.height()); + Geom::Affine drawing_transform = Geom::Translate(-tile_rect.min()) * drawing_scale; + + Geom::Affine child_transform = render_info.child_transform; + child_transform *= drawing_transform; + + //The rendering of hatch overflow is implemented by repeated drawing + //of hatch paths over one strip. Within each iteration paths are moved by pitch value. + //The movement progresses from right to left. This gives the same result + //as drawing whole strips in left-to-right order. + gdouble overflow_right_strip = 0.0; + int overflow_steps = 1; + Geom::Affine overflow_transform; + if (hatch->style->overflow.computed == SP_CSS_OVERFLOW_VISIBLE) { + Geom::Interval bounds = hatch->bounds(); + overflow_right_strip = floor(bounds.max() / hatch->pitch()) * hatch->pitch(); + overflow_steps = ceil((overflow_right_strip - bounds.min()) / hatch->pitch()) + 1; + overflow_transform = Geom::Translate(hatch->pitch(), 0.0); + } + + CairoRenderContext *pattern_ctx = cloneMe(surface_width, surface_height); + pattern_ctx->setTransform(child_transform); + pattern_ctx->transform(Geom::Translate(-overflow_right_strip, 0.0)); + pattern_ctx->pushState(); + + std::vector<SPHatchPath *> children; + hatch->hatchPaths(children); + + for (int i = 0; i < overflow_steps; i++) { + for (std::vector<SPHatchPath *>::iterator iter = children.begin(); iter != children.end(); iter++) { + SPHatchPath *path = *iter; + _renderer->renderHatchPath(pattern_ctx, *path, dkey); + } + pattern_ctx->transform(overflow_transform); + } + + pattern_ctx->popState(); + + // setup a cairo_pattern_t + cairo_surface_t *pattern_surface = pattern_ctx->getSurface(); + TEST(pattern_ctx->saveAsPng("hatch.png")); + cairo_pattern_t *result = cairo_pattern_create_for_surface(pattern_surface); + cairo_pattern_set_extend(result, CAIRO_EXTEND_REPEAT); + + Geom::Affine pattern_transform; + pattern_transform = render_info.pattern_to_user_transform.inverse() * drawing_transform; + ink_cairo_pattern_set_matrix(result, pattern_transform); + + hatch->hide(dkey); + + delete pattern_ctx; + return result; +} + +cairo_pattern_t* CairoRenderContext::_createPatternForPaintServer(SPPaintServer const *const paintserver, Geom::OptRect const &pbox, float alpha) { @@ -1182,8 +1259,9 @@ CairoRenderContext::_createPatternForPaintServer(SPPaintServer const *const pain cairo_pattern_add_color_stop_rgba(pattern, rg->vector.stops[i].offset, rgb[0], rgb[1], rgb[2], rg->vector.stops[i].opacity * alpha); } } else if (SP_IS_PATTERN (paintserver)) { - pattern = _createPatternPainter(paintserver, pbox); + } else if (SP_IS_HATCH (paintserver)) { + pattern = _createHatchPainter(paintserver, pbox); } else { return NULL; } @@ -1249,26 +1327,29 @@ CairoRenderContext::_setFillStyle(SPStyle const *const style, Geom::OptRect cons TRACE(("merged op=%f\n", alpha)); } - if (style->fill.isColor()) { - float rgb[3]; - sp_color_get_rgb_floatv(&style->fill.value.color, rgb); + SPPaintServer const *paint_server = style->getFillPaintServer(); + if (paint_server && paint_server->isValid()) { - cairo_set_source_rgba(_cr, rgb[0], rgb[1], rgb[2], alpha); - - } else if (!style->fill.set) { // unset fill is black - cairo_set_source_rgba(_cr, 0, 0, 0, alpha); - - } else { - g_assert( style->fill.isPaintserver() - || SP_IS_GRADIENT(SP_STYLE_FILL_SERVER(style)) - || SP_IS_PATTERN(SP_STYLE_FILL_SERVER(style)) ); - - cairo_pattern_t *pattern = _createPatternForPaintServer(SP_STYLE_FILL_SERVER(style), pbox, alpha); + g_assert(SP_IS_GRADIENT(SP_STYLE_FILL_SERVER(style)) + || SP_IS_PATTERN(SP_STYLE_FILL_SERVER(style)) + || SP_IS_HATCH(SP_STYLE_FILL_SERVER(style))); + cairo_pattern_t *pattern = _createPatternForPaintServer(paint_server, pbox, alpha); if (pattern) { cairo_set_source(_cr, pattern); cairo_pattern_destroy(pattern); } + } else if (style->fill.colorSet) { + float rgb[3]; + sp_color_get_rgb_floatv(&style->fill.value.color, rgb); + + cairo_set_source_rgba(_cr, rgb[0], rgb[1], rgb[2], alpha); + + } else { // unset fill is black + g_assert(!style->fill.set + || (paint_server && !paint_server->isValid())); + + cairo_set_source_rgba(_cr, 0, 0, 0, alpha); } } @@ -1279,7 +1360,7 @@ CairoRenderContext::_setStrokeStyle(SPStyle const *style, Geom::OptRect const &p if (_state->merge_opacity) alpha *= _state->opacity; - if (style->stroke.isColor()) { + if (style->stroke.isColor() || (style->stroke.isPaintserver() && !style->getStrokePaintServer()->isValid())) { float rgb[3]; sp_color_get_rgb_floatv(&style->stroke.value.color, rgb); @@ -1287,7 +1368,8 @@ CairoRenderContext::_setStrokeStyle(SPStyle const *style, Geom::OptRect const &p } else { g_assert( style->stroke.isPaintserver() || SP_IS_GRADIENT(SP_STYLE_STROKE_SERVER(style)) - || SP_IS_PATTERN(SP_STYLE_STROKE_SERVER(style)) ); + || SP_IS_PATTERN(SP_STYLE_STROKE_SERVER(style)) + || SP_IS_HATCH(SP_STYLE_STROKE_SERVER(style))); cairo_pattern_t *pattern = _createPatternForPaintServer(SP_STYLE_STROKE_SERVER(style), pbox, alpha); diff --git a/src/extension/internal/cairo-render-context.h b/src/extension/internal/cairo-render-context.h index 8071cae36..57d155b60 100644 --- a/src/extension/internal/cairo-render-context.h +++ b/src/extension/internal/cairo-render-context.h @@ -204,6 +204,7 @@ protected: cairo_pattern_t *_createPatternForPaintServer(SPPaintServer const *const paintserver, Geom::OptRect const &pbox, float alpha); cairo_pattern_t *_createPatternPainter(SPPaintServer const *const paintserver, Geom::OptRect const &pbox); + cairo_pattern_t *_createHatchPainter(SPPaintServer const *const paintserver, Geom::OptRect const &pbox); unsigned int _showGlyphs(cairo_t *cr, PangoFont *font, std::vector<CairoGlyphInfo> const &glyphtext, bool is_stroke); diff --git a/src/extension/internal/cairo-renderer.cpp b/src/extension/internal/cairo-renderer.cpp index 8196e34fb..a725685d4 100644 --- a/src/extension/internal/cairo-renderer.cpp +++ b/src/extension/internal/cairo-renderer.cpp @@ -50,6 +50,7 @@ #include "sp-use.h" #include "sp-text.h" #include "sp-flowtext.h" +#include "sp-hatch-path.h" #include "sp-image.h" #include "sp-symbol.h" #include "sp-pattern.h" @@ -598,6 +599,21 @@ void CairoRenderer::renderItem(CairoRenderContext *ctx, SPItem *item) ctx->popState(); } +void CairoRenderer::renderHatchPath(CairoRenderContext *ctx, SPHatchPath const &hatchPath, unsigned key) { + ctx->pushState(); + ctx->setStateForStyle(hatchPath.style); + ctx->transform(Geom::Translate(hatchPath.offset.computed, 0)); + + SPCurve *curve = hatchPath.calculateRenderCurve(key); + Geom::PathVector const & pathv =curve->get_pathvector(); + if (!pathv.empty()) { + ctx->renderPathVector(pathv, hatchPath.style, Geom::OptRect()); + } + + curve->unref(); + ctx->popState(); +} + bool CairoRenderer::setupDocument(CairoRenderContext *ctx, SPDocument *doc, bool pageBoundingBox, float bleedmargin_px, SPItem *base) { diff --git a/src/extension/internal/cairo-renderer.h b/src/extension/internal/cairo-renderer.h index cfef6bdea..abc0447d8 100644 --- a/src/extension/internal/cairo-renderer.h +++ b/src/extension/internal/cairo-renderer.h @@ -29,6 +29,7 @@ class SPClipPath; class SPMask; +class SPHatchPath; namespace Inkscape { namespace Extension { @@ -57,6 +58,7 @@ public: /** Traverses the object tree and invokes the render methods. */ void renderItem(CairoRenderContext *ctx, SPItem *item); + void renderHatchPath(CairoRenderContext *ctx, SPHatchPath const &hatchPath, unsigned key); }; // FIXME: this should be a static method of CairoRenderer diff --git a/src/extension/internal/cdr-input.cpp b/src/extension/internal/cdr-input.cpp index 1de3f304b..fb58887c9 100644 --- a/src/extension/internal/cdr-input.cpp +++ b/src/extension/internal/cdr-input.cpp @@ -24,7 +24,21 @@ #include <cstring> #include <libcdr/libcdr.h> -#include <libwpd-stream/libwpd-stream.h> + +// TODO: Drop this check when librevenge is widespread. +#if WITH_LIBCDR01 + #include <librevenge-stream/librevenge-stream.h> + + using librevenge::RVNGString; + using librevenge::RVNGFileStream; + using librevenge::RVNGStringVector; +#else + #include <libwpd-stream/libwpd-stream.h> + + typedef WPXString RVNGString; + typedef WPXFileStream RVNGFileStream; + typedef libcdr::CDRStringVector RVNGStringVector; +#endif #include <gtkmm/alignment.h> #include <gtkmm/comboboxtext.h> @@ -60,7 +74,7 @@ namespace Internal { class CdrImportDialog : public Gtk::Dialog { public: - CdrImportDialog(const std::vector<WPXString> &vec); + CdrImportDialog(const std::vector<RVNGString> &vec); virtual ~CdrImportDialog(); bool showDialog(); @@ -86,12 +100,12 @@ private: class Gtk::VBox * vbox2; class Gtk::Widget * _previewArea; - const std::vector<WPXString> &_vec; // Document to be imported + const std::vector<RVNGString> &_vec; // Document to be imported unsigned _current_page; // Current selected page int _preview_width, _preview_height; // Size of the preview area }; -CdrImportDialog::CdrImportDialog(const std::vector<WPXString> &vec) +CdrImportDialog::CdrImportDialog(const std::vector<RVNGString> &vec) : _vec(vec), _current_page(1) { int num_pages = _vec.size(); @@ -216,14 +230,20 @@ void CdrImportDialog::_setPreviewPage(unsigned page) SPDocument *CdrInput::open(Inkscape::Extension::Input * /*mod*/, const gchar * uri) { - WPXFileStream input(uri); + RVNGFileStream input(uri); if (!libcdr::CDRDocument::isSupported(&input)) { return NULL; } - libcdr::CDRStringVector output; + RVNGStringVector output; +#if WITH_LIBCDR01 + librevenge::RVNGSVGDrawingGenerator generator(output, "svg"); + + if (!libcdr::CDRDocument::parse(&input, &generator)) { +#else if (!libcdr::CDRDocument::generateSVG(&input, output)) { +#endif return NULL; } @@ -231,9 +251,9 @@ SPDocument *CdrInput::open(Inkscape::Extension::Input * /*mod*/, const gchar * u return NULL; } - std::vector<WPXString> tmpSVGOutput; + std::vector<RVNGString> tmpSVGOutput; for (unsigned i=0; i<output.size(); ++i) { - WPXString tmpString("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n"); + RVNGString tmpString("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n"); tmpString.append(output[i]); tmpSVGOutput.push_back(tmpString); } diff --git a/src/extension/internal/pdfinput/pdf-input.cpp b/src/extension/internal/pdfinput/pdf-input.cpp index e18d898f5..defb15754 100644 --- a/src/extension/internal/pdfinput/pdf-input.cpp +++ b/src/extension/internal/pdfinput/pdf-input.cpp @@ -647,7 +647,31 @@ PdfInput::open(::Inkscape::Extension::Input * /*mod*/, const gchar * uri) { // Initialize the globalParams variable for poppler if (!globalParams) { +#ifdef ENABLE_OSX_APP_LOCATIONS + // + // data files for poppler are not relocatable (loaded from + // path defined at build time). This fails to work with relocatable + // application bundles for OS X. + // + // Workaround: + // 1. define $POPPLER_DATADIR env variable in app launcher script + // 2. pass custom $POPPLER_DATADIR via poppler's GlobalParams() + // + // relevant poppler commit: + // <http://cgit.freedesktop.org/poppler/poppler/commit/?id=869584a84eed507775ff1c3183fe484c14b6f77b> + // + // FIXES: Inkscape bug #956282, #1264793 + // TODO: report RFE upstream (full relocation support for OS X packaging) + // + gchar const *poppler_datadir = g_getenv("POPPLER_DATADIR"); + if (poppler_datadir != NULL) { + globalParams = new GlobalParams(poppler_datadir); + } else { + globalParams = new GlobalParams(); + } +#else globalParams = new GlobalParams(); +#endif // ENABLE_OSX_APP_LOCATIONS } // poppler does not use glib g_open. So on win32 we must use unicode call. code was copied from glib gstdio.c #ifndef WIN32 diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp index c5f03e5aa..0b7dc7905 100644 --- a/src/extension/internal/pdfinput/pdf-parser.cpp +++ b/src/extension/internal/pdfinput/pdf-parser.cpp @@ -247,30 +247,74 @@ PdfOperator PdfParser::opTab[] = { #define numOps (sizeof(opTab) / sizeof(PdfOperator)) +namespace { + +GfxPatch blankPatch() +{ + GfxPatch patch; + memset(&patch, 0, sizeof(patch)); // quick-n-dirty + return patch; +} + +} // namespace + //------------------------------------------------------------------------ -// PdfParser +// ClipHistoryEntry //------------------------------------------------------------------------ -PdfParser::PdfParser(XRef *xrefA, Inkscape::Extension::Internal::SvgBuilder *builderA, - int /*pageNum*/, int rotate, Dict *resDict, - PDFRectangle *box, PDFRectangle *cropBox) -{ - xref = xrefA; - subPage = gFalse; - printCommands = false; +class ClipHistoryEntry { +public: + + ClipHistoryEntry(GfxPath *clipPath = NULL, GfxClipType clipType = clipNormal); + virtual ~ClipHistoryEntry(); + + // Manipulate clip path stack + ClipHistoryEntry *save(); + ClipHistoryEntry *restore(); + GBool hasSaves() { return saved != NULL; } + void setClip(GfxPath *newClipPath, GfxClipType newClipType = clipNormal); + GfxPath *getClipPath() { return clipPath; } + GfxClipType getClipType() { return clipType; } - // start the resource stack - res = new GfxResources(xref, resDict, NULL); +private: - // initialize - state = new GfxState(72.0, 72.0, box, rotate, gTrue); - clipHistory = new ClipHistoryEntry(); + ClipHistoryEntry *saved; // next clip path on stack + + GfxPath *clipPath; // used as the path to be filled for an 'sh' operator + GfxClipType clipType; + + ClipHistoryEntry(ClipHistoryEntry *other); +}; + +//------------------------------------------------------------------------ +// PdfParser +//------------------------------------------------------------------------ + +PdfParser::PdfParser(XRef *xrefA, + Inkscape::Extension::Internal::SvgBuilder *builderA, + int /*pageNum*/, + int rotate, + Dict *resDict, + PDFRectangle *box, + PDFRectangle *cropBox) : + xref(xrefA), + builder(builderA), + subPage(gFalse), + printCommands(false), + res(new GfxResources(xref, resDict, NULL)), // start the resource stack + state(new GfxState(72.0, 72.0, box, rotate, gTrue)), + fontChanged(gFalse), + clip(clipNone), + ignoreUndef(0), + baseMatrix(), + formDepth(0), + parser(NULL), + colorDeltas(), + maxDepths(), + clipHistory(new ClipHistoryEntry()), + operatorHistory(NULL) +{ setDefaultApproximationPrecision(); - fontChanged = gFalse; - clip = clipNone; - ignoreUndef = 0; - operatorHistory = NULL; - builder = builderA; builder->setDocumentSize(Inkscape::Util::Quantity::convert(state->getPageWidth(), "pt", "px"), Inkscape::Util::Quantity::convert(state->getPageHeight(), "pt", "px")); @@ -306,50 +350,62 @@ PdfParser::PdfParser(XRef *xrefA, Inkscape::Extension::Internal::SvgBuilder *bui pushOperator("startPage"); } -PdfParser::PdfParser(XRef *xrefA, Inkscape::Extension::Internal::SvgBuilder *builderA, - Dict *resDict, PDFRectangle *box) { - - int i; - parser = NULL; - - xref = xrefA; - subPage = gTrue; - printCommands = false; - - // start the resource stack - res = new GfxResources(xref, resDict, NULL); - - // initialize - operatorHistory = NULL; - builder = builderA; - state = new GfxState(72, 72, box, 0, gFalse); - clipHistory = new ClipHistoryEntry(); +PdfParser::PdfParser(XRef *xrefA, + Inkscape::Extension::Internal::SvgBuilder *builderA, + Dict *resDict, + PDFRectangle *box) : + xref(xrefA), + builder(builderA), + subPage(gTrue), + printCommands(false), + res(new GfxResources(xref, resDict, NULL)), // start the resource stack + state(new GfxState(72, 72, box, 0, gFalse)), + fontChanged(gFalse), + clip(clipNone), + ignoreUndef(0), + baseMatrix(), + formDepth(0), + parser(NULL), + colorDeltas(), + maxDepths(), + clipHistory(new ClipHistoryEntry()), + operatorHistory(NULL) +{ setDefaultApproximationPrecision(); - fontChanged = gFalse; - clip = clipNone; - ignoreUndef = 0; - for (i = 0; i < 6; ++i) { + for (int i = 0; i < 6; ++i) { baseMatrix[i] = state->getCTM()[i]; } formDepth = 0; } PdfParser::~PdfParser() { - while (state->hasSaves()) { + while(operatorHistory) { + OpHistoryEntry *tmp = operatorHistory->next; + delete operatorHistory; + operatorHistory = tmp; + } + + while (state && state->hasSaves()) { restoreState(); } + if (!subPage) { //out->endPage(); } + while (res) { popResources(); } + if (state) { delete state; + state = NULL; } + if (clipHistory) { delete clipHistory; + clipHistory = NULL; } } @@ -460,7 +516,8 @@ void PdfParser::go(GBool /*topLevel*/) } } -void PdfParser::pushOperator(const char *name) { +void PdfParser::pushOperator(const char *name) +{ OpHistoryEntry *newEntry = new OpHistoryEntry; newEntry->name = name; newEntry->state = NULL; @@ -2086,13 +2143,19 @@ void PdfParser::doPatchMeshShFill(GfxPatchMeshShading *shading) { } void PdfParser::fillPatch(GfxPatch *patch, int nComps, int depth) { - GfxPatch patch00, patch01, patch10, patch11; + GfxPatch patch00 = blankPatch(); + GfxPatch patch01 = blankPatch(); + GfxPatch patch10 = blankPatch(); + GfxPatch patch11 = blankPatch(); #ifdef POPPLER_NEW_GFXPATCH - GfxColor color; + GfxColor color = {{0}}; #endif - double xx[4][8], yy[4][8]; - double xxm, yym; - double patchColorDelta = colorDeltas[pdfPatchMeshShading-1]; + double xx[4][8]; + double yy[4][8]; + double xxm; + double yym; + double patchColorDelta = colorDeltas[pdfPatchMeshShading - 1]; + int i; for (i = 0; i < nComps; ++i) { @@ -3463,9 +3526,7 @@ void PdfParser::popResources() { } void PdfParser::setDefaultApproximationPrecision() { - int i; - - for (i = 1; i <= pdfNumShadingTypes; ++i) { + for (int i = 1; i <= pdfNumShadingTypes; ++i) { setApproximationPrecision(i, defaultShadingColorDelta, defaultShadingMaxDepth); } } @@ -3484,19 +3545,18 @@ void PdfParser::setApproximationPrecision(int shadingType, double colorDelta, // ClipHistoryEntry //------------------------------------------------------------------------ -ClipHistoryEntry::ClipHistoryEntry(GfxPath *clipPathA, GfxClipType clipTypeA) { - if (clipPathA) { - clipPath = clipPathA->copy(); - } else { - clipPath = NULL; - } - clipType = clipTypeA; - saved = NULL; +ClipHistoryEntry::ClipHistoryEntry(GfxPath *clipPathA, GfxClipType clipTypeA) : + saved(NULL), + clipPath((clipPathA) ? clipPathA->copy() : NULL), + clipType(clipTypeA) +{ } -ClipHistoryEntry::~ClipHistoryEntry() { +ClipHistoryEntry::~ClipHistoryEntry() +{ if (clipPath) { delete clipPath; + clipPath = NULL; } } @@ -3510,6 +3570,7 @@ void ClipHistoryEntry::setClip(GfxPath *clipPathA, GfxClipType clipTypeA) { clipType = clipTypeA; } else { clipPath = NULL; + clipType = clipNormal; } } @@ -3526,7 +3587,7 @@ ClipHistoryEntry *ClipHistoryEntry::restore() { if (saved) { oldEntry = saved; saved = NULL; - delete this; + delete this; // TODO really should avoid deleting from inside. } else { oldEntry = this; } @@ -3540,6 +3601,7 @@ ClipHistoryEntry::ClipHistoryEntry(ClipHistoryEntry *other) { this->clipType = other->clipType; } else { this->clipPath = NULL; + this->clipType = clipNormal; } saved = NULL; } diff --git a/src/extension/internal/pdfinput/pdf-parser.h b/src/extension/internal/pdfinput/pdf-parser.h index a63d669c7..e28fecc2e 100644 --- a/src/extension/internal/pdfinput/pdf-parser.h +++ b/src/extension/internal/pdfinput/pdf-parser.h @@ -58,6 +58,8 @@ class AnnotBorderStyle; class PdfParser; +class ClipHistoryEntry; + //------------------------------------------------------------------------ #ifndef GFX_H @@ -101,34 +103,6 @@ struct OpHistoryEntry { }; //------------------------------------------------------------------------ -// ClipHistoryEntry -//------------------------------------------------------------------------ - -class ClipHistoryEntry { -public: - - ClipHistoryEntry(GfxPath *clipPath=NULL, GfxClipType clipType=clipNormal); - virtual ~ClipHistoryEntry(); - - // Manipulate clip path stack - ClipHistoryEntry *save(); - ClipHistoryEntry *restore(); - GBool hasSaves() { return saved != NULL; } - void setClip(GfxPath *newClipPath, GfxClipType newClipType=clipNormal); - GfxPath *getClipPath() { return clipPath; } - GfxClipType getClipType() { return clipType; } - -private: - - ClipHistoryEntry *saved; // next clip path on stack - - GfxPath *clipPath; // used as the path to be filled for an 'sh' operator - GfxClipType clipType; - - ClipHistoryEntry(ClipHistoryEntry *other); -}; - -//------------------------------------------------------------------------ // PdfParser //------------------------------------------------------------------------ diff --git a/src/extension/internal/vsd-input.cpp b/src/extension/internal/vsd-input.cpp index 2623d1ca7..25815e64f 100644 --- a/src/extension/internal/vsd-input.cpp +++ b/src/extension/internal/vsd-input.cpp @@ -24,7 +24,22 @@ #include <cstring> #include <libvisio/libvisio.h> -#include <libwpd-stream/libwpd-stream.h> + +// TODO: Drop this check when librevenge is widespread. +#if WITH_LIBVISIO01 + #include <librevenge-stream/librevenge-stream.h> + + using librevenge::RVNGString; + using librevenge::RVNGFileStream; + using librevenge::RVNGStringVector; +#else + #include <libwpd-stream/libwpd-stream.h> + + typedef WPXString RVNGString; + typedef WPXFileStream RVNGFileStream; + typedef libvisio::VSDStringVector RVNGStringVector; +#endif + #include <gtkmm/alignment.h> #include <gtkmm/comboboxtext.h> @@ -59,7 +74,7 @@ namespace Internal { class VsdImportDialog : public Gtk::Dialog { public: - VsdImportDialog(const std::vector<WPXString> &vec); + VsdImportDialog(const std::vector<RVNGString> &vec); virtual ~VsdImportDialog(); bool showDialog(); @@ -85,12 +100,12 @@ private: class Gtk::VBox * vbox2; class Gtk::Widget * _previewArea; - const std::vector<WPXString> &_vec; // Document to be imported + const std::vector<RVNGString> &_vec; // Document to be imported unsigned _current_page; // Current selected page int _preview_width, _preview_height; // Size of the preview area }; -VsdImportDialog::VsdImportDialog(const std::vector<WPXString> &vec) +VsdImportDialog::VsdImportDialog(const std::vector<RVNGString> &vec) : _vec(vec), _current_page(1) { int num_pages = _vec.size(); @@ -215,14 +230,20 @@ void VsdImportDialog::_setPreviewPage(unsigned page) SPDocument *VsdInput::open(Inkscape::Extension::Input * /*mod*/, const gchar * uri) { - WPXFileStream input(uri); + RVNGFileStream input(uri); if (!libvisio::VisioDocument::isSupported(&input)) { return NULL; } - libvisio::VSDStringVector output; + RVNGStringVector output; +#if WITH_LIBVISIO01 + librevenge::RVNGSVGDrawingGenerator generator(output, "svg"); + + if (!libvisio::VisioDocument::parse(&input, &generator)) { +#else if (!libvisio::VisioDocument::generateSVG(&input, output)) { +#endif return NULL; } @@ -230,9 +251,9 @@ SPDocument *VsdInput::open(Inkscape::Extension::Input * /*mod*/, const gchar * u return NULL; } - std::vector<WPXString> tmpSVGOutput; + std::vector<RVNGString> tmpSVGOutput; for (unsigned i=0; i<output.size(); ++i) { - WPXString tmpString("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n"); + RVNGString tmpString("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n"); tmpString.append(output[i]); tmpSVGOutput.push_back(tmpString); } diff --git a/src/extension/internal/wpg-input.cpp b/src/extension/internal/wpg-input.cpp index 14ff3ec77..12d86a99a 100644 --- a/src/extension/internal/wpg-input.cpp +++ b/src/extension/internal/wpg-input.cpp @@ -52,16 +52,24 @@ #include "util/units.h" #include <cstring> -// Take a guess and fallback to 0.1.x if no configure has run -#if !defined(WITH_LIBWPG01) && !defined(WITH_LIBWPG02) -#define WITH_LIBWPG01 1 +// Take a guess and fallback to 0.2.x if no configure has run +#if !defined(WITH_LIBWPG03) && !defined(WITH_LIBWPG02) +#define WITH_LIBWPG02 1 #endif #include "libwpg/libwpg.h" -#if WITH_LIBWPG01 -#include "libwpg/WPGStreamImplementation.h" -#elif WITH_LIBWPG02 -#include "libwpd-stream/libwpd-stream.h" +#if WITH_LIBWPG03 + #include <librevenge-stream/librevenge-stream.h> + + using librevenge::RVNGString; + using librevenge::RVNGFileStream; + using librevenge::RVNGInputStream; +#else + #include "libwpd-stream/libwpd-stream.h" + + typedef WPXString RVNGString; + typedef WPXFileStream RVNGFileStream; + typedef WPXInputStream RVNGInputStream; #endif using namespace libwpg; @@ -73,17 +81,15 @@ namespace Internal { SPDocument *WpgInput::open(Inkscape::Extension::Input * /*mod*/, const gchar * uri) { -#if WITH_LIBWPG01 - WPXInputStream* input = new libwpg::WPGFileStream(uri); -#elif WITH_LIBWPG02 - WPXInputStream* input = new WPXFileStream(uri); -#endif + RVNGInputStream* input = new RVNGFileStream(uri); +#if WITH_LIBWPG03 + if (input->isStructured()) { + RVNGInputStream* olestream = input->getSubStreamByName("PerfectOffice_MAIN"); +#else if (input->isOLEStream()) { -#if WITH_LIBWPG01 - WPXInputStream* olestream = input->getDocumentOLEStream(); -#elif WITH_LIBWPG02 - WPXInputStream* olestream = input->getDocumentOLEStream("PerfectOffice_MAIN"); + RVNGInputStream* olestream = input->getDocumentOLEStream("PerfectOffice_MAIN"); #endif + if (olestream) { delete input; input = olestream; @@ -98,15 +104,24 @@ SPDocument *WpgInput::open(Inkscape::Extension::Input * /*mod*/, const gchar * u return NULL; } -#if WITH_LIBWPG01 - libwpg::WPGString output; -#elif WITH_LIBWPG02 - WPXString output; -#endif +#if WITH_LIBWPG03 + librevenge::RVNGStringVector vec; + librevenge::RVNGSVGDrawingGenerator generator(vec, ""); + + if (!libwpg::WPGraphics::parse(input, &generator) || vec.empty() || vec[0].empty()) { + delete input; + return NULL; + } + + RVNGString output("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n"); + output.append(vec[0]); +#else + RVNGString output; if (!libwpg::WPGraphics::generateSVG(input, output)) { delete input; return NULL; } +#endif //printf("I've got a doc: \n%s", painter.document.c_str()); diff --git a/src/extension/param/color.cpp b/src/extension/param/color.cpp index 0a2598c56..5bd70359f 100644 --- a/src/extension/param/color.cpp +++ b/src/extension/param/color.cpp @@ -59,9 +59,10 @@ guint32 ParamColor::set( guint32 in, SPDocument * /*doc*/, Inkscape::XML::Node * return _value; } -ParamColor::ParamColor (const gchar * name, const gchar * guitext, const gchar * desc, const Parameter::_scope_t scope, bool gui_hidden, const gchar * gui_tip, Inkscape::Extension::Extension * ext, Inkscape::XML::Node * xml) : - Parameter(name, guitext, desc, scope, gui_hidden, gui_tip, ext), - _changeSignal(0) +ParamColor::ParamColor(const gchar *name, const gchar *guitext, const gchar *desc, const Parameter::_scope_t scope, + bool gui_hidden, const gchar *gui_tip, Inkscape::Extension::Extension *ext, + Inkscape::XML::Node *xml) + : Parameter(name, guitext, desc, scope, gui_hidden, gui_tip, ext), _value(0), _changeSignal(0) { const char * defaulthex = NULL; if (xml->firstChild() != NULL) @@ -75,7 +76,8 @@ ParamColor::ParamColor (const gchar * name, const gchar * guitext, const gchar * if (!paramval.empty()) defaulthex = paramval.data(); - _value = atoi(defaulthex); + if (defaulthex) + _value = atoi(defaulthex); } void ParamColor::string(std::string &string) const @@ -87,7 +89,7 @@ void ParamColor::string(std::string &string) const Gtk::Widget *ParamColor::get_widget( SPDocument * /*doc*/, Inkscape::XML::Node * /*node*/, sigc::signal<void> * changeSignal ) { - if (_gui_hidden) return NULL; + if (_gui_hidden) return NULL; _changeSignal = new sigc::signal<void>(*changeSignal); Gtk::HBox * hbox = Gtk::manage(new Gtk::HBox(false, 4)); diff --git a/src/extension/param/enum.cpp b/src/extension/param/enum.cpp index bb50c06e1..74b2a75ad 100644 --- a/src/extension/param/enum.cpp +++ b/src/extension/param/enum.cpp @@ -41,8 +41,8 @@ namespace Extension { class enumentry { public: enumentry (Glib::ustring &val, Glib::ustring &text) : - value(val), - guitext(text) + value(val), + guitext(text) {} Glib::ustring value; @@ -50,16 +50,19 @@ public: }; -ParamComboBox::ParamComboBox (const gchar * name, const gchar * guitext, const gchar * desc, const Parameter::_scope_t scope, bool gui_hidden, const gchar * gui_tip, Inkscape::Extension::Extension * ext, Inkscape::XML::Node * xml) : - Parameter(name, guitext, desc, scope, gui_hidden, gui_tip, ext), _indent(0) +ParamComboBox::ParamComboBox(const gchar *name, const gchar *guitext, const gchar *desc, + const Parameter::_scope_t scope, bool gui_hidden, const gchar *gui_tip, + Inkscape::Extension::Extension *ext, Inkscape::XML::Node *xml) + : Parameter(name, guitext, desc, scope, gui_hidden, gui_tip, ext) + , _value(NULL) + , _indent(0) + , choices(NULL) { - choices = NULL; - _value = NULL; + const char *xmlval = NULL; // the value stored in XML - // Read XML tree to add enumeration items: - // printf("Extension Constructor: "); if (xml != NULL) { - for (Inkscape::XML::Node *node = xml->firstChild(); node; node = node->next()) { + // Read XML tree to add enumeration items: + for (Inkscape::XML::Node *node = xml->firstChild(); node; node = node->next()) { char const * chname = node->name(); if (!strcmp(chname, INKSCAPE_EXTENSION_NS "item") || !strcmp(chname, INKSCAPE_EXTENSION_NS "_item")) { Glib::ustring newguitext, newvalue; @@ -69,8 +72,8 @@ ParamComboBox::ParamComboBox (const gchar * name, const gchar * guitext, const g } if (contents != NULL) { // don't translate when 'item' but do translate when '_item' - // NOTE: internal extensions use build_from_mem and don't need _item but - // still need to include if are to be localized + // NOTE: internal extensions use build_from_mem and don't need _item but + // still need to include if are to be localized if (!strcmp(chname, INKSCAPE_EXTENSION_NS "_item")) { if (node->attribute("msgctxt") != NULL) { newguitext = g_dpgettext2(NULL, node->attribute("msgctxt"), contents); @@ -95,30 +98,28 @@ ParamComboBox::ParamComboBox (const gchar * name, const gchar * guitext, const g } } } - } - - // Initialize _value with the default value from xml - // for simplicity : default to the contents of the first xml-child - const char * defaultval = NULL; - if (xml->firstChild() && xml->firstChild()->firstChild()) { - defaultval = xml->firstChild()->attribute("value"); - } + + // Initialize _value with the default value from xml + // for simplicity : default to the contents of the first xml-child + if (xml->firstChild() && xml->firstChild()->firstChild()) { + xmlval = xml->firstChild()->attribute("value"); + } - const char * indent = xml->attribute("indent"); - if (indent != NULL) { - _indent = atoi(indent) * 12; + const char *indent = xml->attribute("indent"); + if (indent != NULL) { + _indent = atoi(indent) * 12; + } } gchar * pref_name = this->pref_name(); Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - Glib::ustring paramval = prefs->getString(extension_pref_root + pref_name); + Glib::ustring paramval = prefs ? prefs->getString(extension_pref_root + pref_name) : ""; g_free(pref_name); if (!paramval.empty()) { - defaultval = paramval.data(); - } - if (defaultval != NULL) { - _value = g_strdup(defaultval); + _value = g_strdup(paramval.data()); + } else if (xmlval) { + _value = g_strdup(xmlval); } } diff --git a/src/filters/blend.cpp b/src/filters/blend.cpp index fd5a9871e..ca1d5bf96 100644 --- a/src/filters/blend.cpp +++ b/src/filters/blend.cpp @@ -183,6 +183,8 @@ void SPFeBlend::update(SPCtx *ctx, guint flags) { /* Unlike normal in, in2 is required attribute. Make sure, we can call * it by some name. */ + /* This may not be true.... see issue at + * http://www.w3.org/TR/filter-effects/#feBlendElement (but it doesn't hurt). */ if (this->in2 == Inkscape::Filters::NR_FILTER_SLOT_NOT_SET || this->in2 == Inkscape::Filters::NR_FILTER_UNNAMED_SLOT) { @@ -206,26 +208,30 @@ Inkscape::XML::Node* SPFeBlend::write(Inkscape::XML::Document *doc, Inkscape::XM repr = doc->createElement("svg:feBlend"); } - gchar const *out_name = sp_filter_name_for_image(parent, this->in2); + gchar const *in2_name = sp_filter_name_for_image(parent, this->in2); - if (out_name) { - repr->setAttribute("in2", out_name); - } else { + if( !in2_name ) { + + // This code is very similar to sp_filter_primtive_name_previous_out() SPObject *i = parent->children; + // Find previous filter primitive while (i && i->next != this) { i = i->next; } - SPFilterPrimitive *i_prim = SP_FILTER_PRIMITIVE(i); - out_name = sp_filter_name_for_image(parent, i_prim->image_out); - repr->setAttribute("in2", out_name); - - if (!out_name) { - g_warning("Unable to set in2 for feBlend"); + if( i ) { + SPFilterPrimitive *i_prim = SP_FILTER_PRIMITIVE(i); + in2_name = sp_filter_name_for_image(parent, i_prim->image_out); } } + if (in2_name) { + repr->setAttribute("in2", in2_name); + } else { + g_warning("Unable to set in2 for feBlend"); + } + char const *mode; switch(this->blend_mode) { case Inkscape::Filters::BLEND_NORMAL: diff --git a/src/filters/composite.cpp b/src/filters/composite.cpp index 257292f12..e600b6d20 100644 --- a/src/filters/composite.cpp +++ b/src/filters/composite.cpp @@ -205,6 +205,8 @@ void SPFeComposite::update(SPCtx *ctx, guint flags) { /* Unlike normal in, in2 is required attribute. Make sure, we can call * it by some name. */ + /* This may not be true.... see issue at + * http://www.w3.org/TR/filter-effects/#feBlendElement (but it doesn't hurt). */ if (this->in2 == Inkscape::Filters::NR_FILTER_SLOT_NOT_SET || this->in2 == Inkscape::Filters::NR_FILTER_UNNAMED_SLOT) { @@ -228,26 +230,30 @@ Inkscape::XML::Node* SPFeComposite::write(Inkscape::XML::Document *doc, Inkscape repr = doc->createElement("svg:feComposite"); } - gchar const *out_name = sp_filter_name_for_image(parent, this->in2); + gchar const *in2_name = sp_filter_name_for_image(parent, this->in2); - if (out_name) { - repr->setAttribute("in2", out_name); - } else { + if( !in2_name ) { + + // This code is very similar to sp_filter_primitive_name_previous_out() SPObject *i = parent->children; + // Find previous filter primitive while (i && i->next != this) { i = i->next; } - SPFilterPrimitive *i_prim = SP_FILTER_PRIMITIVE(i); - out_name = sp_filter_name_for_image(parent, i_prim->image_out); - repr->setAttribute("in2", out_name); - - if (!out_name) { - g_warning("Unable to set in2 for feComposite"); + if( i ) { + SPFilterPrimitive *i_prim = SP_FILTER_PRIMITIVE(i); + in2_name = sp_filter_name_for_image(parent, i_prim->image_out); } } + if (in2_name) { + repr->setAttribute("in2", in2_name); + } else { + g_warning("Unable to set in2 for feComposite"); + } + char const *comp_op; switch (this->composite_operator) { diff --git a/src/filters/displacementmap.cpp b/src/filters/displacementmap.cpp index 473e4913f..7dedfc031 100644 --- a/src/filters/displacementmap.cpp +++ b/src/filters/displacementmap.cpp @@ -202,25 +202,30 @@ Inkscape::XML::Node* SPFeDisplacementMap::write(Inkscape::XML::Document *doc, In repr = doc->createElement("svg:feDisplacementMap"); } - gchar const *out_name = sp_filter_name_for_image(parent, this->in2); - if (out_name) { - repr->setAttribute("in2", out_name); - } else { + gchar const *in2_name = sp_filter_name_for_image(parent, this->in2); + + if( !in2_name ) { + + // This code is very similar to sp_filter_primtive_name_previous_out() SPObject *i = parent->children; + // Find previous filter primitive while (i && i->next != this) { i = i->next; } - SPFilterPrimitive *i_prim = SP_FILTER_PRIMITIVE(i); - out_name = sp_filter_name_for_image(parent, i_prim->image_out); - repr->setAttribute("in2", out_name); - - if (!out_name) { - g_warning("Unable to set in2 for feDisplacementMap"); + if( i ) { + SPFilterPrimitive *i_prim = SP_FILTER_PRIMITIVE(i); + in2_name = sp_filter_name_for_image(parent, i_prim->image_out); } } + if (in2_name) { + repr->setAttribute("in2", in2_name); + } else { + g_warning("Unable to set in2 for feDisplacementMap"); + } + sp_repr_set_svg_double(repr, "scale", this->scale); repr->setAttribute("xChannelSelector", get_channelselector_name(this->xChannelSelector)); diff --git a/src/libnrtype/FontFactory.h b/src/libnrtype/FontFactory.h index 46df0181a..bd5a4460c 100644 --- a/src/libnrtype/FontFactory.h +++ b/src/libnrtype/FontFactory.h @@ -21,7 +21,7 @@ #include <pango/pango.h> #include "nr-type-primitives.h" -#include "../style.h" +#include "style.h" /* Freetype */ #ifdef USE_PANGO_WIN32 diff --git a/src/live_effects/CMakeLists.txt b/src/live_effects/CMakeLists.txt index 30c2b2f41..c8a02c810 100644 --- a/src/live_effects/CMakeLists.txt +++ b/src/live_effects/CMakeLists.txt @@ -15,7 +15,6 @@ set(live_effects_SRC lpe-dynastroke.cpp lpe-ellipse-5pts.cpp lpe-envelope.cpp - lpe-envelope-perspective.cpp lpe-extrude.cpp lpe-fill-between-many.cpp lpe-fill-between-strokes.cpp @@ -32,6 +31,7 @@ set(live_effects_SRC lpe-patternalongpath.cpp lpe-perp_bisector.cpp lpe-perspective_path.cpp + lpe-perspective-envelope.cpp lpe-powerstroke.cpp lpe-recursiveskeleton.cpp lpe-rough-hatches.cpp @@ -47,7 +47,6 @@ set(live_effects_SRC lpe-bspline.cpp lpe-text_label.cpp lpe-vonkoch.cpp - lpe-envelope-perspective.cpp lpegroupbbox.cpp lpeobject-reference.cpp lpeobject.cpp @@ -106,6 +105,7 @@ set(live_effects_SRC lpe-patternalongpath.h lpe-perp_bisector.h lpe-perspective_path.h + lpe-perspective-envelope.h lpe-powerstroke.h lpe-powerstroke-interpolators.h lpe-recursiveskeleton.h @@ -122,7 +122,6 @@ set(live_effects_SRC lpe-bspline.h lpe-text_label.h lpe-vonkoch.h - lpe-envelope-perspective.h lpegroupbbox.h lpeobject-reference.h lpeobject.h diff --git a/src/live_effects/Makefile_insert b/src/live_effects/Makefile_insert index f18dcdef0..8f0a3ac57 100644 --- a/src/live_effects/Makefile_insert +++ b/src/live_effects/Makefile_insert @@ -70,6 +70,8 @@ ink_common_sources += \ live_effects/lpe-circle_with_radius.h \ live_effects/lpe-perspective_path.cpp \ live_effects/lpe-perspective_path.h \ + live_effects/lpe-perspective-envelope.cpp \ + live_effects/lpe-perspective-envelope.h \ live_effects/lpe-mirror_symmetry.cpp \ live_effects/lpe-mirror_symmetry.h \ live_effects/lpe-circle_3pts.cpp \ @@ -112,6 +114,4 @@ ink_common_sources += \ live_effects/lpe-jointype.cpp \ live_effects/lpe-jointype.h \ live_effects/lpe-taperstroke.cpp \ - live_effects/lpe-taperstroke.h \ - live_effects/lpe-envelope-perspective.cpp \ - live_effects/lpe-envelope-perspective.h + live_effects/lpe-taperstroke.h diff --git a/src/live_effects/effect-enum.h b/src/live_effects/effect-enum.h index c53f1a5b9..383eec19e 100644 --- a/src/live_effects/effect-enum.h +++ b/src/live_effects/effect-enum.h @@ -63,7 +63,7 @@ enum EffectType { BOUNDING_BOX, JOIN_TYPE, TAPER_STROKE, - ENVELOPE_PERSPECTIVE, + PERSPECTIVE_ENVELOPE, FILLET_CHAMFER, INVALID_LPE // This must be last (I made it such that it is not needed anymore I think..., Don't trust on it being last. - johan) }; diff --git a/src/live_effects/effect.cpp b/src/live_effects/effect.cpp index 22f688873..b002eaf7f 100644 --- a/src/live_effects/effect.cpp +++ b/src/live_effects/effect.cpp @@ -25,6 +25,7 @@ #include "live_effects/lpe-curvestitch.h" #include "live_effects/lpe-circle_with_radius.h" #include "live_effects/lpe-perspective_path.h" +#include "live_effects/lpe-perspective-envelope.h" #include "live_effects/lpe-spiro.h" #include "live_effects/lpe-lattice.h" #include "live_effects/lpe-lattice2.h" @@ -60,7 +61,6 @@ #include "live_effects/lpe-bounding-box.h" #include "live_effects/lpe-jointype.h" #include "live_effects/lpe-taperstroke.h" -#include "live_effects/lpe-envelope-perspective.h" #include "live_effects/lpe-fillet-chamfer.h" #include "xml/node-event-vector.h" @@ -152,7 +152,7 @@ const Util::EnumData<EffectType> LPETypeData[] = { /* 0.91 */ {SIMPLIFY, N_("Simplify"), "simplify"}, {LATTICE2, N_("Lattice Deformation 2"), "lattice2"}, - {ENVELOPE_PERSPECTIVE, N_("Envelope-Perspective"), "envelope-perspective"}, + {PERSPECTIVE_ENVELOPE, N_("Perspective/Envelope"), "perspective-envelope"}, {FILLET_CHAMFER, N_("Fillet/Chamfer"), "fillet-chamfer"}, {INTERPOLATE_POINTS, N_("Interpolate points"), "interpolate_points"}, }; @@ -311,8 +311,8 @@ Effect::New(EffectType lpenr, LivePathEffectObject *lpeobj) case LATTICE2: neweffect = static_cast<Effect*> ( new LPELattice2(lpeobj) ); break; - case ENVELOPE_PERSPECTIVE: - neweffect = static_cast<Effect*> ( new LPEEnvelopePerspective(lpeobj) ); + case PERSPECTIVE_ENVELOPE: + neweffect = static_cast<Effect*> ( new LPEPerspectiveEnvelope(lpeobj) ); break; case FILLET_CHAMFER: neweffect = static_cast<Effect*> ( new LPEFilletChamfer(lpeobj) ); diff --git a/src/live_effects/lpe-bspline.cpp b/src/live_effects/lpe-bspline.cpp index 5ba0d697b..7703b8221 100644 --- a/src/live_effects/lpe-bspline.cpp +++ b/src/live_effects/lpe-bspline.cpp @@ -59,17 +59,22 @@ const double noPower = 0.0; const double defaultStartPower = 0.3334; const double defaultEndPower = 0.6667; -LPEBSpline::LPEBSpline(LivePathEffectObject *lpeobject) : - Effect(lpeobject), - steps(_("Steps whith CTRL:"), _("Change number of steps whith CTRL pressed"), "steps", &wr, this, 2), - ignoreCusp(_("Ignore cusp nodes"), _("Change ignoring cusp nodes"), "ignoreCusp", &wr, this, true), - onlySelected(_("Change only selected nodes"), _("Change only selected nodes"), "onlySelected", &wr, this, false), - weight(_("Change weight:"), _("Change weight of the effect"), "weight", &wr, this, defaultStartPower) +LPEBSpline::LPEBSpline(LivePathEffectObject *lpeobject) + : Effect(lpeobject), + // initialise your parameters here: + //testpointA(_("Test Point A"), _("Test A"), "ptA", &wr, this, + //Geom::Point(100,100)), + steps(_("Steps whith CTRL:"), _("Change number of steps whith CTRL pressed"), "steps", &wr, this, 2), + ignoreCusp(_("Ignore cusp nodes"), _("Change ignoring cusp nodes"), "ignoreCusp", &wr, this, true), + onlySelected(_("Change only selected nodes"), _("Change only selected nodes"), "onlySelected", &wr, this, false), + showHelper(_("Show helper paths"), _("Show helper paths"), "showHelper", &wr, this, false), + weight(_("Change weight:"), _("Change weight of the effect"), "weight", &wr, this, defaultStartPower) { - registerParameter(&weight); - registerParameter(&steps); - registerParameter(&ignoreCusp); - registerParameter(&onlySelected); + registerParameter(dynamic_cast<Parameter *>(&weight)); + registerParameter(dynamic_cast<Parameter *>(&steps)); + registerParameter(dynamic_cast<Parameter *>(&ignoreCusp)); + registerParameter(dynamic_cast<Parameter *>(&onlySelected)); + registerParameter(dynamic_cast<Parameter *>(&showHelper)); weight.param_set_range(noPower, 1); weight.param_set_increments(0.1, 0.1); @@ -89,7 +94,9 @@ void LPEBSpline::doBeforeEffect (SPLPEItem const* lpeitem) } } -void LPEBSpline::createAndApply(const char *name, SPDocument *doc, SPItem *item) + +void LPEBSpline::createAndApply(const char *name, SPDocument *doc, + SPItem *item) { if (!SP_IS_SHAPE(item)) { g_warning("LPE BSpline can only be applied to shapes (not groups)."); @@ -99,7 +106,8 @@ void LPEBSpline::createAndApply(const char *name, SPDocument *doc, SPItem *item) Inkscape::XML::Node *repr = xml_doc->createElement("inkscape:path-effect"); repr->setAttribute("effect", name); - doc->getDefs()->getRepr()->addChild(repr, NULL); // adds to <defs> and assigns the 'id' attribute + doc->getDefs()->getRepr() + ->addChild(repr, NULL); // adds to <defs> and assigns the 'id' attribute const gchar *repr_id = repr->attribute("id"); Inkscape::GC::release(repr); @@ -111,13 +119,13 @@ void LPEBSpline::createAndApply(const char *name, SPDocument *doc, SPItem *item) void LPEBSpline::doEffect(SPCurve *curve) { + if (curve->get_segment_count() < 1){ return; } - + // Make copy of old path as it is changed during processing Geom::PathVector const original_pathv = curve->get_pathvector(); curve->reset(); - double radiusHelperNodes = 6.0; SPDesktop *desktop = SP_ACTIVE_DESKTOP; if (desktop){ @@ -125,7 +133,6 @@ void LPEBSpline::doEffect(SPCurve *curve) SPNamedView *nv = sp_desktop_namedview(desktop); radiusHelperNodes = Inkscape::Util::Quantity::convert(radiusHelperNodes, "px", nv->doc_units->abbr); } - for (Geom::PathVector::const_iterator path_it = original_pathv.begin(); path_it != original_pathv.end(); ++path_it) { if (path_it->empty()) @@ -133,7 +140,7 @@ void LPEBSpline::doEffect(SPCurve *curve) Geom::Path::const_iterator curve_it1 = path_it->begin(); Geom::Path::const_iterator curve_it2 = ++(path_it->begin()); - Geom::Path::const_iterator curve_endit = path_it->end_default(); + Geom::Path::const_iterator curve_endit = path_it->end_default(); SPCurve *nCurve = new SPCurve(); Geom::Point previousNode(0, 0); Geom::Point node(0, 0); @@ -145,13 +152,29 @@ void LPEBSpline::doEffect(SPCurve *curve) Geom::D2<Geom::SBasis> SBasisHelper; Geom::CubicBezier const *cubic = NULL; if (path_it->closed()) { - const Geom::Curve &closingline = path_it->back_closed(); + // if the path is closed, maybe we have to stop a bit earlier because the + // closing line segment has zerolength. + const Geom::Curve &closingline = + path_it->back_closed(); // the closing line segment is always of type + // Geom::LineSegment. if (are_near(closingline.initialPoint(), closingline.finalPoint())) { + // closingline.isDegenerate() did not work, because it only checks for + // *exact* zero length, which goes wrong for relative coordinates and + // rounding errors... + // the closing line segment has zero-length. So stop before that one! curve_endit = path_it->end_open(); } } + //Si la curva está cerrada calculamos el punto donde + //deveria estar el nodo BSpline de cierre/inicio de la curva + //en posible caso de que se cierre con una linea recta creando un nodo + //BSPline nCurve->moveto(curve_it1->initialPoint()); + //Recorremos todos los segmentos menos el último while (curve_it1 != curve_endit) { + //previousPointAt3 = pointAt3; + //Calculamos los puntos que dividirían en tres segmentos iguales el path + //recto de entrada y de salida SPCurve *in = new SPCurve(); in->moveto(curve_it1->initialPoint()); in->lineto(curve_it1->finalPoint()); @@ -192,7 +215,6 @@ void LPEBSpline::doEffect(SPCurve *curve) out->reset(); delete out; } - Geom::Point startNode = path_it->begin()->initialPoint(); if (path_it->closed() && curve_it2 == curve_endit) { SPCurve *start = new SPCurve(); start->moveto(path_it->begin()->initialPoint()); @@ -225,9 +247,9 @@ void LPEBSpline::doEffect(SPCurve *curve) SBasisHelper = lineHelper->first_segment()->toSBasis(); lineHelper->reset(); delete lineHelper; - startNode = SBasisHelper.valueAt(0.5); - nCurve->curveto(pointAt1, pointAt2, startNode); - nCurve->move_endpoints(startNode, startNode); + node = SBasisHelper.valueAt(0.5); + nCurve->curveto(pointAt1, pointAt2, node); + nCurve->move_endpoints(node, node); } else if ( curve_it2 == curve_endit) { nCurve->curveto(pointAt1, pointAt2, curve_it1->finalPoint()); nCurve->move_endpoints(path_it->begin()->initialPoint(), curve_it1->finalPoint()); @@ -238,17 +260,26 @@ void LPEBSpline::doEffect(SPCurve *curve) SBasisHelper = lineHelper->first_segment()->toSBasis(); lineHelper->reset(); delete lineHelper; + //almacenamos el punto del anterior bucle -o el de cierre- que nos hara de + //principio de curva previousNode = node; + //Y este hará de final de curva node = SBasisHelper.valueAt(0.5); Geom::CubicBezier const *cubic2 = dynamic_cast<Geom::CubicBezier const *>(&*curve_it1); if((cubic && are_near((*cubic)[0],(*cubic)[1])) || (cubic2 && are_near((*cubic2)[2],(*cubic2)[3]))) { node = curve_it1->finalPoint(); } nCurve->curveto(pointAt1, pointAt2, node); - if(!are_near(node,curve_it1->finalPoint())){ - drawHandle(node, radiusHelperNodes); - } } + if(!are_near(node,curve_it1->finalPoint()) && showHelper){ + drawHandle(node, radiusHelperNodes); + } + //La curva BSpline se forma calculando el centro del segmanto de unión + //de el punto situado en las 2/3 partes de el segmento de entrada + //con el punto situado en la posición 1/3 del segmento de salida + //Estos dos puntos ademas estan posicionados en el lugas correspondiente + //de los manejadores de la curva + //aumentamos los valores para el siguiente paso en el bucle ++curve_it1; ++curve_it2; } @@ -259,6 +290,8 @@ void LPEBSpline::doEffect(SPCurve *curve) curve->append(nCurve, false); nCurve->reset(); delete nCurve; + } + if(showHelper){ Geom::PathVector const pathv = curve->get_pathvector(); hp.push_back(pathv[0]); } @@ -293,32 +326,44 @@ Gtk::Widget *LPEBSpline::newWidget() while (it != param_vector.end()) { if ((*it)->widget_is_visible) { Parameter *param = *it; - Gtk::Widget *widg = Gtk::manage(param->param_newWidget()); + Gtk::Widget *widg = dynamic_cast<Gtk::Widget *>(param->param_newWidget()); if (param->param_key == "weight") { - Gtk::HBox * buttons = Gtk::manage(new Gtk::HBox(true, 0)); - - Gtk::Button *defaultWeight = Gtk::manage(new Gtk::Button(Glib::ustring(_("Default weight")))); - defaultWeight->signal_clicked().connect(sigc::bind<Gtk::Widget *>(sigc::mem_fun(*this, &LPEBSpline::toDefaultWeight), widg)); + Gtk::HBox * buttons = Gtk::manage(new Gtk::HBox(true,0)); + Gtk::Button *defaultWeight = + Gtk::manage(new Gtk::Button(Glib::ustring(_("Default weight")))); + defaultWeight->signal_clicked() + .connect(sigc::bind<Gtk::Widget *>(sigc::mem_fun(*this, &LPEBSpline::toDefaultWeight), widg)); buttons->pack_start(*defaultWeight, true, true, 2); - - Gtk::Button *makeCusp = Gtk::manage(new Gtk::Button(Glib::ustring(_("Make cusp")))); - makeCusp->signal_clicked().connect(sigc::bind<Gtk::Widget *>(sigc::mem_fun(*this, &LPEBSpline::toMakeCusp), widg)); + Gtk::Button *makeCusp = + Gtk::manage(new Gtk::Button(Glib::ustring(_("Make cusp")))); + makeCusp->signal_clicked() + .connect(sigc::bind<Gtk::Widget *>(sigc::mem_fun(*this, &LPEBSpline::toMakeCusp), widg)); buttons->pack_start(*makeCusp, true, true, 2); - vbox->pack_start(*buttons, true, true, 2); } if (param->param_key == "weight" || param->param_key == "steps") { - Inkscape::UI::Widget::Scalar *widgRegistered = Gtk::manage(dynamic_cast<Inkscape::UI::Widget::Scalar *>(widg)); - widgRegistered->signal_value_changed().connect(sigc::mem_fun(*this, &LPEBSpline::toWeight)); - + Inkscape::UI::Widget::Scalar *widgRegistered = + Gtk::manage(dynamic_cast<Inkscape::UI::Widget::Scalar *>(widg)); + widgRegistered->signal_value_changed() + .connect(sigc::mem_fun(*this, &LPEBSpline::toWeight)); + widg = dynamic_cast<Gtk::Widget *>(widgRegistered); if (widg) { Gtk::HBox * scalarParameter = dynamic_cast<Gtk::HBox *>(widg); - std::vector<Gtk::Widget *> childList = scalarParameter->get_children(); + std::vector< Gtk::Widget* > childList = scalarParameter->get_children(); Gtk::Entry* entryWidg = dynamic_cast<Gtk::Entry *>(childList[1]); entryWidg->set_width_chars(6); } } - + if (param->param_key == "onlySelected") { + Gtk::CheckButton *widgRegistered = + Gtk::manage(dynamic_cast<Gtk::CheckButton *>(widg)); + widg = dynamic_cast<Gtk::Widget *>(widgRegistered); + } + if (param->param_key == "ignoreCusp") { + Gtk::CheckButton *widgRegistered = + Gtk::manage(dynamic_cast<Gtk::CheckButton *>(widg)); + widg = dynamic_cast<Gtk::Widget *>(widgRegistered); + } Glib::ustring *tip = param->param_getTooltip(); if (widg) { vbox->pack_start(*widg, true, true, 2); @@ -333,7 +378,7 @@ Gtk::Widget *LPEBSpline::newWidget() ++it; } - return vbox; + return dynamic_cast<Gtk::Widget *>(vbox); } void LPEBSpline::toDefaultWeight(Gtk::Widget *widgWeight) @@ -379,7 +424,8 @@ void LPEBSpline::changeWeight(double weightValue) g_free(str); curve->unref(); desktop->clearWaitingCursor(); - DocumentUndo::done(sp_desktop_document(desktop), SP_VERB_CONTEXT_LPE, _("Modified the weight of a BSpline")); + DocumentUndo::done(sp_desktop_document(desktop), SP_VERB_CONTEXT_LPE, + _("Modified the weight of the BSpline")); } bool LPEBSpline::nodeIsSelected(Geom::Point nodePoint) diff --git a/src/live_effects/lpe-bspline.h b/src/live_effects/lpe-bspline.h index e066015ad..169658b94 100644 --- a/src/live_effects/lpe-bspline.h +++ b/src/live_effects/lpe-bspline.h @@ -24,19 +24,16 @@ public: return SUPPRESS_FLASH; } virtual void doEffect(SPCurve *curve); - virtual void doBeforeEffect(SPLPEItem const* lpeitem); + virtual void doBeforeEffect (SPLPEItem const* lpeitem); void drawHandle(Geom::Point p, double radiusHelperNodes); void addCanvasIndicators(SPLPEItem const */*lpeitem*/, std::vector<Geom::PathVector> &hp_vec); - - void doBSplineFromWidget(SPCurve *curve, double value); - bool nodeIsSelected(Geom::Point nodePoint); - + virtual void doBSplineFromWidget(SPCurve *curve, double value); + virtual bool nodeIsSelected(Geom::Point nodePoint); virtual Gtk::Widget *newWidget(); - - void changeWeight(double weightValue); - void toDefaultWeight(Gtk::Widget *widgWeight); - void toMakeCusp(Gtk::Widget *widgWeight); - void toWeight(); + virtual void changeWeight(double weightValue); + virtual void toDefaultWeight(Gtk::Widget *widgWeight); + virtual void toMakeCusp(Gtk::Widget *widgWeight); + virtual void toWeight(); // TODO make this private ScalarParam steps; @@ -45,6 +42,7 @@ private: std::vector<Geom::Point> points; BoolParam ignoreCusp; BoolParam onlySelected; + BoolParam showHelper; ScalarParam weight; Geom::PathVector hp; diff --git a/src/live_effects/lpe-envelope-perspective.cpp b/src/live_effects/lpe-perspective-envelope.cpp index 378ef5a92..6f6838c81 100644 --- a/src/live_effects/lpe-envelope-perspective.cpp +++ b/src/live_effects/lpe-perspective-envelope.cpp @@ -1,5 +1,5 @@ /** \file - * LPE <envelope-perspective> implementation + * LPE <perspective-envelope> implementation */ /* @@ -15,7 +15,7 @@ */ #include <gtkmm.h> -#include "live_effects/lpe-envelope-perspective.h" +#include "live_effects/lpe-perspective-envelope.h" #include "helper/geom.h" #include "display/curve.h" #include "svg/svg.h" @@ -29,21 +29,21 @@ namespace Inkscape { namespace LivePathEffect { enum DeformationType { - DEFORMATION_ENVELOPE, - DEFORMATION_PERSPECTIVE + DEFORMATION_PERSPECTIVE, + DEFORMATION_ENVELOPE }; static const Util::EnumData<unsigned> DeformationTypeData[] = { - {DEFORMATION_ENVELOPE , N_("Envelope deformation"), "Envelope deformation"}, - {DEFORMATION_PERSPECTIVE , N_("Perspective"), "Perspective"} + {DEFORMATION_PERSPECTIVE , N_("Perspective"), "Perspective"}, + {DEFORMATION_ENVELOPE , N_("Envelope deformation"), "Envelope deformation"} }; static const Util::EnumDataConverter<unsigned> DeformationTypeConverter(DeformationTypeData, sizeof(DeformationTypeData)/sizeof(*DeformationTypeData)); -LPEEnvelopePerspective::LPEEnvelopePerspective(LivePathEffectObject *lpeobject) : +LPEPerspectiveEnvelope::LPEPerspectiveEnvelope(LivePathEffectObject *lpeobject) : Effect(lpeobject), // initialise your parameters here: - deform_type(_("Type"), _("Select the type of deformation"), "deform_type", DeformationTypeConverter, &wr, this, DEFORMATION_ENVELOPE), + deform_type(_("Type"), _("Select the type of deformation"), "deform_type", DeformationTypeConverter, &wr, this, DEFORMATION_PERSPECTIVE), Up_Left_Point(_("Top Left"), _("Top Left - Ctrl+Alt+Click to reset"), "Up_Left_Point", &wr, this), Up_Right_Point(_("Top Right"), _("Top Right - Ctrl+Alt+Click to reset"), "Up_Right_Point", &wr, this), Down_Left_Point(_("Down Left"), _("Down Left - Ctrl+Alt+Click to reset"), "Down_Left_Point", &wr, this), @@ -57,11 +57,11 @@ LPEEnvelopePerspective::LPEEnvelopePerspective(LivePathEffectObject *lpeobject) registerParameter( dynamic_cast<Parameter *>(&Down_Right_Point) ); } -LPEEnvelopePerspective::~LPEEnvelopePerspective() +LPEPerspectiveEnvelope::~LPEPerspectiveEnvelope() { } -void LPEEnvelopePerspective::doEffect(SPCurve *curve) { +void LPEPerspectiveEnvelope::doEffect(SPCurve *curve) { using Geom::X; using Geom::Y; double projmatrix[3][3]; @@ -135,32 +135,23 @@ void LPEEnvelopePerspective::doEffect(SPCurve *curve) { continue; //Itreadores SPCurve *nCurve = new SPCurve(); - Geom::Path::const_iterator curve_it1 = path_it->begin(); // incoming curve - Geom::Path::const_iterator curve_it2 = - ++(path_it->begin()); // outgoing curve - Geom::Path::const_iterator curve_endit = - path_it->end_default(); // this determines when the loop has to stop + Geom::Path::const_iterator curve_it1 = path_it->begin(); + Geom::Path::const_iterator curve_it2 = ++(path_it->begin()); + Geom::Path::const_iterator curve_endit = path_it->end_default(); if (path_it->closed()) { - // if the path is closed, maybe we have to stop a bit earlier because the - // closing line segment has zerolength. - const Geom::Curve &closingline = - path_it->back_closed(); // the closing line segment is always of type - // Geom::LineSegment. - if (are_near(closingline.initialPoint(), closingline.finalPoint())) { - // closingline.isDegenerate() did not work, because it only checks for - // *exact* zero length, which goes wrong for relative coordinates and - // rounding errors... - // the closing line segment has zero-length. So stop before that one! - curve_endit = path_it->end_open(); - } + const Geom::Curve &closingline = + path_it->back_closed(); + if (are_near(closingline.initialPoint(), closingline.finalPoint())) { + curve_endit = path_it->end_open(); + } } if(deform_type == DEFORMATION_PERSPECTIVE){ nCurve->moveto(project_point(curve_it1->initialPoint(),projmatrix)); }else{ nCurve->moveto(project_point(curve_it1->initialPoint())); } - while (curve_it2 != curve_endit) { + while (curve_it1 != curve_endit) { cubic = dynamic_cast<Geom::CubicBezier const *>(&*curve_it1); if (cubic) { pointAt1 = (*cubic)[1]; @@ -181,34 +172,13 @@ void LPEEnvelopePerspective::doEffect(SPCurve *curve) { } nCurve->curveto(pointAt1, pointAt2, pointAt3); ++curve_it1; - ++curve_it2; - } - cubic = dynamic_cast<Geom::CubicBezier const *>(&*curve_it1); - if (cubic) { - pointAt1 = (*cubic)[1]; - pointAt2 = (*cubic)[2]; - } else { - pointAt1 = curve_it1->initialPoint(); - pointAt2 = curve_it1->finalPoint(); - } - pointAt3 = curve_it1->finalPoint(); - if(deform_type == DEFORMATION_PERSPECTIVE){ - pointAt1 = project_point(pointAt1,projmatrix); - pointAt2 = project_point(pointAt2,projmatrix); - pointAt3 = project_point(pointAt3,projmatrix); - }else{ - pointAt1 = project_point(pointAt1); - pointAt2 = project_point(pointAt2); - pointAt3 = project_point(pointAt3); - } - nCurve->curveto(pointAt1, pointAt2, pointAt3); - if(deform_type == DEFORMATION_PERSPECTIVE){ - nCurve->move_endpoints(project_point(path_it->begin()->initialPoint(),projmatrix), pointAt3); - }else{ - nCurve->move_endpoints(project_point(path_it->begin()->initialPoint()), pointAt3); + if(curve_it2 != curve_endit) { + ++curve_it2; + } } //y cerramos la curva if (path_it->closed()) { + nCurve->move_endpoints(pointAt3, pointAt3); nCurve->closepath_current(); } curve->append(nCurve, false); @@ -218,11 +188,13 @@ void LPEEnvelopePerspective::doEffect(SPCurve *curve) { } Geom::Point -LPEEnvelopePerspective::project_point(Geom::Point p){ +LPEPerspectiveEnvelope::project_point(Geom::Point p){ double width = boundingbox_X.extent(); double height = boundingbox_Y.extent(); - Geom::Coord xratio = abs(Geom::Point(boundingbox_X.min(), boundingbox_Y.max())[X]-p[X])/width; - Geom::Coord yratio = abs(Geom::Point(boundingbox_X.min(), boundingbox_Y.max())[Y]-p[Y])/height; + double delta_x = boundingbox_X.min() - p[X]; + double delta_y = boundingbox_Y.max() - p[Y]; + Geom::Coord xratio = (delta_x * sgn(delta_x)) / width; + Geom::Coord yratio = (delta_y * sgn(delta_y)) / height; Geom::Line* horiz = new Geom::Line(); Geom::Line* vert = new Geom::Line(); vert->setPoints (pointAtRatio(yratio,Down_Left_Point,Up_Left_Point),pointAtRatio(yratio,Down_Right_Point,Up_Right_Point)); @@ -237,7 +209,7 @@ LPEEnvelopePerspective::project_point(Geom::Point p){ } Geom::Point -LPEEnvelopePerspective::project_point(Geom::Point p, double m[][3]){ +LPEPerspectiveEnvelope::project_point(Geom::Point p, double m[][3]){ Geom::Coord x = p[0]; Geom::Coord y = p[1]; return Geom::Point( @@ -246,7 +218,7 @@ LPEEnvelopePerspective::project_point(Geom::Point p, double m[][3]){ } Geom::Point -LPEEnvelopePerspective::pointAtRatio(Geom::Coord ratio,Geom::Point A, Geom::Point B){ +LPEPerspectiveEnvelope::pointAtRatio(Geom::Coord ratio,Geom::Point A, Geom::Point B){ Geom::Coord x = A[X] + (ratio * (B[X]-A[X])); Geom::Coord y = A[Y]+ (ratio * (B[Y]-A[Y])); return Point(x, y); @@ -254,7 +226,7 @@ LPEEnvelopePerspective::pointAtRatio(Geom::Coord ratio,Geom::Point A, Geom::Poin Gtk::Widget * -LPEEnvelopePerspective::newWidget() +LPEPerspectiveEnvelope::newWidget() { // use manage here, because after deletion of Effect object, others might still be pointing to this widget. Gtk::VBox * vbox = Gtk::manage( new Gtk::VBox(Effect::newWidget()) ); @@ -285,20 +257,12 @@ LPEEnvelopePerspective::newWidget() Gtk::Label* handles = Gtk::manage(new Gtk::Label(Glib::ustring(_("Handles:")),Gtk::ALIGN_START)); vbox->pack_start(*handles, false, false, 2); hboxUpHandles->pack_start(*widg, true, true, 2); -#if WITH_GTKMM_3_0 - hboxUpHandles->pack_start(*Gtk::manage(new Gtk::Separator(Gtk::ORIENTATION_VERTICAL)), Gtk::PACK_EXPAND_WIDGET); -#else hboxUpHandles->pack_start(*Gtk::manage(new Gtk::VSeparator()), Gtk::PACK_EXPAND_WIDGET); -#endif }else if(param->param_key == "Up_Right_Point"){ hboxUpHandles->pack_start(*widg, true, true, 2); }else if(param->param_key == "Down_Left_Point"){ hboxDownHandles->pack_start(*widg, true, true, 2); -#if WITH_GTKMM_3_0 - hboxDownHandles->pack_start(*Gtk::manage(new Gtk::Separator(Gtk::ORIENTATION_VERTICAL)), Gtk::PACK_EXPAND_WIDGET); -#else hboxDownHandles->pack_start(*Gtk::manage(new Gtk::VSeparator()), Gtk::PACK_EXPAND_WIDGET); -#endif }else{ hboxDownHandles->pack_start(*widg, true, true, 2); } @@ -327,18 +291,13 @@ LPEEnvelopePerspective::newWidget() } vbox->pack_start(*hboxUpHandles,true, true, 2); Gtk::HBox * hboxMiddle = Gtk::manage(new Gtk::HBox(true,2)); -#if WITH_GTKMM_3_0 - hboxMiddle->pack_start(*Gtk::manage(new Gtk::Separator()), Gtk::PACK_EXPAND_WIDGET); - hboxMiddle->pack_start(*Gtk::manage(new Gtk::Separator()), Gtk::PACK_EXPAND_WIDGET); -#else hboxMiddle->pack_start(*Gtk::manage(new Gtk::HSeparator()), Gtk::PACK_EXPAND_WIDGET); hboxMiddle->pack_start(*Gtk::manage(new Gtk::HSeparator()), Gtk::PACK_EXPAND_WIDGET); -#endif vbox->pack_start(*hboxMiddle, false, true, 2); vbox->pack_start(*hboxDownHandles, true, true, 2); Gtk::HBox * hbox = Gtk::manage(new Gtk::HBox(false,0)); Gtk::Button* resetButton = Gtk::manage(new Gtk::Button(Gtk::Stock::CLEAR)); - resetButton->signal_clicked().connect(sigc::mem_fun (*this,&LPEEnvelopePerspective::resetGrid)); + resetButton->signal_clicked().connect(sigc::mem_fun (*this,&LPEPerspectiveEnvelope::resetGrid)); resetButton->set_size_request(140,45); vbox->pack_start(*hbox, true,true,2); hbox->pack_start(*resetButton, false, false,2); @@ -346,17 +305,14 @@ LPEEnvelopePerspective::newWidget() } void -LPEEnvelopePerspective::doBeforeEffect (SPLPEItem const* lpeitem) +LPEPerspectiveEnvelope::doBeforeEffect (SPLPEItem const* lpeitem) { original_bbox(lpeitem); setDefaults(); - SPLPEItem * item = const_cast<SPLPEItem*>(lpeitem); - item->apply_to_clippath(item); - item->apply_to_mask(item); } void -LPEEnvelopePerspective::setDefaults() +LPEPerspectiveEnvelope::setDefaults() { Geom::Point Up_Left(boundingbox_X.min(), boundingbox_Y.min()); Geom::Point Up_Right(boundingbox_X.max(), boundingbox_Y.min()); @@ -370,7 +326,7 @@ LPEEnvelopePerspective::setDefaults() } void -LPEEnvelopePerspective::resetGrid() +LPEPerspectiveEnvelope::resetGrid() { Up_Left_Point.param_set_and_write_default(); Up_Right_Point.param_set_and_write_default(); @@ -384,7 +340,7 @@ LPEEnvelopePerspective::resetGrid() } void -LPEEnvelopePerspective::resetDefaults(SPItem const* item) +LPEPerspectiveEnvelope::resetDefaults(SPItem const* item) { Effect::resetDefaults(item); original_bbox(SP_LPE_ITEM(item)); @@ -393,19 +349,7 @@ LPEEnvelopePerspective::resetDefaults(SPItem const* item) } void -LPEEnvelopePerspective::calculateCurve(Geom::Point a,Geom::Point b, SPCurve* c, bool horizontal, bool move) -{ - using Geom::X; - using Geom::Y; - if(move) c->moveto(a); - Geom::Point cubic1 = a + (1./3)* (b - a); - Geom::Point cubic2 = b + (1./3)* (a - b); - if(horizontal) c->curveto(Geom::Point(cubic1[X],a[Y]),Geom::Point(cubic2[X],b[Y]),b); - else c->curveto(Geom::Point(a[X],cubic1[Y]),Geom::Point(b[X],cubic2[Y]),b); -} - -void -LPEEnvelopePerspective::addCanvasIndicators(SPLPEItem const */*lpeitem*/, std::vector<Geom::PathVector> &hp_vec) +LPEPerspectiveEnvelope::addCanvasIndicators(SPLPEItem const */*lpeitem*/, std::vector<Geom::PathVector> &hp_vec) { hp_vec.clear(); @@ -437,4 +381,4 @@ LPEEnvelopePerspective::addCanvasIndicators(SPLPEItem const */*lpeitem*/, std::v fill-column:99 End: */ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : +// vim: file_type=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : diff --git a/src/live_effects/lpe-envelope-perspective.h b/src/live_effects/lpe-perspective-envelope.h index 0de9a0e35..2f253882e 100644 --- a/src/live_effects/lpe-envelope-perspective.h +++ b/src/live_effects/lpe-perspective-envelope.h @@ -1,8 +1,8 @@ -#ifndef INKSCAPE_LPE_ENVELOPE_PERSPECTIVE_H -#define INKSCAPE_LPE_ENVELOPE_PERSPECTIVE_H +#ifndef INKSCAPE_LPE_PERSPECTIVE_ENVELOPE_H +#define INKSCAPE_LPE_PERSPECTIVE_ENVELOPE_H /** \file - * LPE <envelope-perspective> implementation , see lpe-envelope-perspective.cpp. + * LPE <perspective-envelope> implementation , see lpe-perspective-envelope.cpp. */ /* @@ -25,11 +25,12 @@ namespace Inkscape { namespace LivePathEffect { -class LPEEnvelopePerspective : public Effect, GroupBBoxEffect { +class LPEPerspectiveEnvelope : public Effect, GroupBBoxEffect { public: - LPEEnvelopePerspective(LivePathEffectObject *lpeobject); - virtual ~LPEEnvelopePerspective(); + LPEPerspectiveEnvelope(LivePathEffectObject *lpeobject); + + virtual ~LPEPerspectiveEnvelope(); virtual void doEffect(SPCurve *curve); @@ -37,7 +38,7 @@ public: virtual Geom::Point project_point(Geom::Point p, double m[][3]); - Geom::Point pointAtRatio(Geom::Coord ratio,Geom::Point A, Geom::Point B); + virtual Geom::Point pointAtRatio(Geom::Coord ratio,Geom::Point A, Geom::Point B); virtual void resetDefaults(SPItem const* item); @@ -45,17 +46,10 @@ public: virtual Gtk::Widget * newWidget(); - virtual void calculateCurve(Geom::Point a,Geom::Point b, SPCurve *c, bool horizontal, bool move); - virtual void setDefaults(); virtual void resetGrid(); - //virtual void original_bbox(SPLPEItem const* lpeitem, bool absolute = false); - - //virtual void addCanvasIndicators(SPLPEItem const*/*lpeitem*/, std::vector<Geom::PathVector> &/*hp_vec*/); - - //virtual std::vector<Geom::PathVector> getHelperPaths(SPLPEItem const* lpeitem); protected: void addCanvasIndicators(SPLPEItem const */*lpeitem*/, std::vector<Geom::PathVector> &hp_vec); private: @@ -66,8 +60,8 @@ private: PointReseteableParam Down_Left_Point; PointReseteableParam Down_Right_Point; - LPEEnvelopePerspective(const LPEEnvelopePerspective&); - LPEEnvelopePerspective& operator=(const LPEEnvelopePerspective&); + LPEPerspectiveEnvelope(const LPEPerspectiveEnvelope&); + LPEPerspectiveEnvelope& operator=(const LPEPerspectiveEnvelope&); }; } //namespace LivePathEffect diff --git a/src/live_effects/lpe-vonkoch.cpp b/src/live_effects/lpe-vonkoch.cpp index 7c1913076..b52816c87 100644 --- a/src/live_effects/lpe-vonkoch.cpp +++ b/src/live_effects/lpe-vonkoch.cpp @@ -132,8 +132,8 @@ LPEVonKoch::doEffect_path (std::vector<Geom::Path> const & path_in) int path_in_complexity = 0; for (unsigned k = 0; k < path_in.size(); k++){ path_in_complexity+=path_in[k].size(); - } - double complexity = std::pow(transforms.size(),nbgenerations)*path_in_complexity; + } + double complexity = std::pow(transforms.size(), nbgenerations) * path_in_complexity; if (drawall.get_value()){ int k = transforms.size(); if(k>1){ @@ -141,8 +141,6 @@ LPEVonKoch::doEffect_path (std::vector<Geom::Path> const & path_in) }else{ complexity = nbgenerations*k*path_in_complexity; } - }else{ - complexity = std::pow(transforms.size(),nbgenerations)*path_in_complexity; } if (complexity > double(maxComplexity)){ g_warning("VonKoch lpe's output too complex. Effect bypassed."); diff --git a/src/object-snapper.cpp b/src/object-snapper.cpp index 9ff6df3bf..2b29814b0 100644 --- a/src/object-snapper.cpp +++ b/src/object-snapper.cpp @@ -289,7 +289,7 @@ void Inkscape::ObjectSnapper::_snapNodes(IntermSnapResults &isr, for (std::vector<SnapCandidatePoint>::const_iterator k = _points_to_snap_to->begin(); k != _points_to_snap_to->end(); ++k) { if (_allowSourceToSnapToTarget(p.getSourceType(), (*k).getTargetType(), strict_snapping)) { Geom::Point target_pt = (*k).getPoint(); - Geom::Coord dist = Geom::infinity(); + Geom::Coord dist = Geom::L2(target_pt - p.getPoint()); // Default: free (unconstrained) snapping if (!c.isUndefined()) { // We're snapping to nodes along a constraint only, so find out if this node // is at the constraint, while allowing for a small margin @@ -299,9 +299,6 @@ void Inkscape::ObjectSnapper::_snapNodes(IntermSnapResults &isr, continue; } dist = Geom::L2(target_pt - p_proj_on_constraint); - } else { - // Free (unconstrained) snapping - dist = Geom::L2(target_pt - p.getPoint()); } if (dist < getSnapperTolerance() && dist < s.getSnapDistance()) { diff --git a/src/path-chemistry.cpp b/src/path-chemistry.cpp index a72601276..fe241381f 100644 --- a/src/path-chemistry.cpp +++ b/src/path-chemistry.cpp @@ -79,6 +79,7 @@ sp_selected_path_combine(SPDesktop *desktop) items = g_slist_sort(items, (GCompareFunc) sp_item_repr_compare_position); items = g_slist_reverse(items); + assert(items); // cannot be NULL because of list length check at top of function // remember the position, id, transform and style of the topmost path, they will be assigned to the combined one gint position = 0; diff --git a/src/path-prefix.h b/src/path-prefix.h index 6ef0ccbe9..7042d5124 100644 --- a/src/path-prefix.h +++ b/src/path-prefix.h @@ -66,23 +66,23 @@ # define CREATE_PALETTESDIR WIN32_DATADIR("create\\swatches") # define CREATE_PATTERNSDIR WIN32_DATADIR("create\\patterns\\vector") # elif defined ENABLE_OSX_APP_LOCATIONS -# define INKSCAPE_APPICONDIR "Contents/Resources/pixmaps" -# define INKSCAPE_ATTRRELDIR "Contents/Resources/attributes" -# define INKSCAPE_BINDDIR "Contents/Resources/bind" -# define INKSCAPE_EXAMPLESDIR "Contents/Resources/examples" -# define INKSCAPE_EXTENSIONDIR "Contents/Resources/extensions" -# define INKSCAPE_FILTERDIR "Contents/Resources/filters" -# define INKSCAPE_GRADIENTSDIR "Contents/Resources/gradients" -# define INKSCAPE_KEYSDIR "Contents/Resources/keys" -# define INKSCAPE_PIXMAPDIR "Contents/Resources/icons" -# define INKSCAPE_MARKERSDIR "Contents/Resources/markers" -# define INKSCAPE_PALETTESDIR "Contents/Resources/palettes" -# define INKSCAPE_PATTERNSDIR "Contents/Resources/patterns" -# define INKSCAPE_SCREENSDIR "Contents/Resources/screens" -# define INKSCAPE_SYMBOLSDIR "Contents/Resources/symbols" -# define INKSCAPE_TUTORIALSDIR "Contents/Resources/tutorials" -# define INKSCAPE_TEMPLATESDIR "Contents/Resources/templates" -# define INKSCAPE_UIDIR "Contents/Resources/ui" +# define INKSCAPE_APPICONDIR "Contents/Resources/share/pixmaps" +# define INKSCAPE_ATTRRELDIR "Contents/Resources/share/inkscape/attributes" +# define INKSCAPE_BINDDIR "Contents/Resources/share/inkscape/bind" +# define INKSCAPE_EXAMPLESDIR "Contents/Resources/share/inkscape/examples" +# define INKSCAPE_EXTENSIONDIR "Contents/Resources/share/inkscape/extensions" +# define INKSCAPE_FILTERDIR "Contents/Resources/share/inkscape/filters" +# define INKSCAPE_GRADIENTSDIR "Contents/Resources/share/inkscape/gradients" +# define INKSCAPE_KEYSDIR "Contents/Resources/share/inkscape/keys" +# define INKSCAPE_PIXMAPDIR "Contents/Resources/share/inkscape/icons" +# define INKSCAPE_MARKERSDIR "Contents/Resources/share/inkscape/markers" +# define INKSCAPE_PALETTESDIR "Contents/Resources/share/inkscape/palettes" +# define INKSCAPE_PATTERNSDIR "Contents/Resources/share/inkscape/patterns" +# define INKSCAPE_SCREENSDIR "Contents/Resources/share/inkscape/screens" +# define INKSCAPE_SYMBOLSDIR "Contents/Resources/share/inkscape/symbols" +# define INKSCAPE_TUTORIALSDIR "Contents/Resources/share/inkscape/tutorials" +# define INKSCAPE_TEMPLATESDIR "Contents/Resources/share/inkscape/templates" +# define INKSCAPE_UIDIR "Contents/Resources/share/inkscape/ui" //CREATE V0.1 support # define CREATE_GRADIENTSDIR "/Library/Application Support/create/gradients/gimp" # define CREATE_PALETTESDIR "/Library/Application Support/create/swatches" diff --git a/src/sp-hatch-path.cpp b/src/sp-hatch-path.cpp new file mode 100644 index 000000000..f7138fac2 --- /dev/null +++ b/src/sp-hatch-path.cpp @@ -0,0 +1,331 @@ +/** @file + * SVG <hatchPath> implementation + *//* + * Author: + * Tomasz Boczkowski <penginsbacon@gmail.com> + * + * Copyright (C) 2014 Tomasz Boczkowski + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <cstring> +#include <string> +#include <2geom/path.h> +#include <2geom/transforms.h> + +#include "svg/svg.h" +#include "display/cairo-utils.h" +#include "display/curve.h" +#include "display/drawing-context.h" +#include "display/drawing-surface.h" +#include "display/drawing.h" +#include "display/drawing-shape.h" +#include "helper/geom.h" +#include "attributes.h" +#include "document-private.h" +#include "uri.h" +#include "style.h" +#include "sp-hatch-path.h" +#include "svg/css-ostringstream.h" +#include "xml/repr.h" + +#include "sp-factory.h" + +namespace { +SPObject* createHatchPath() { + return new SPHatchPath(); +} + +bool hatchRegistered = SPFactory::instance().registerObject("svg:hatchPath", createHatchPath); +} + +SPHatchPath::SPHatchPath() + : _curve(NULL) + , _continuous(false) +{ + offset.unset(); +} + +SPHatchPath::~SPHatchPath() { +} + +void SPHatchPath::setCurve(SPCurve *new_curve, bool owner) { + if (_curve) { + _curve = _curve->unref(); + } + + if (new_curve) { + if (owner) { + _curve = new_curve->ref(); + } else { + _curve = new_curve->copy(); + } + } + + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); +} + +void SPHatchPath::build(SPDocument* doc, Inkscape::XML::Node* repr) { + SPObject::build(doc, repr); + + this->readAttr("d"); + this->readAttr("offset"); + this->readAttr( "style" ); + + style->fill.setNone(); +} + +void SPHatchPath::release() { + for (ViewIterator iter = _display.begin(); iter != _display.end(); iter++) { + delete iter->arenaitem; + iter->arenaitem = NULL; + } + + SPObject::release(); +} + +void SPHatchPath::set(unsigned int key, const gchar* value) { + switch (key) { + case SP_ATTR_D: + if (value) { + Geom::PathVector pv; + _readHatchPathVector(value, pv, _continuous); + SPCurve *curve = new SPCurve(pv); + + if (curve) { + this->setCurve(curve, true); + curve->unref(); + } + } else { + this->setCurve(NULL, true); + } + + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + break; + + case SP_ATTR_OFFSET: + offset.readOrUnset(value); + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + break; + + default: + if (SP_ATTRIBUTE_IS_CSS(key)) { + sp_style_read_from_object(this->style, this); + requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); + } else { + SPObject::set(key, value); + } + break; + } +} + + +void SPHatchPath::update(SPCtx* ctx, unsigned int flags) { + + if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { + flags &= ~SP_OBJECT_USER_MODIFIED_FLAG_B; + } + + if (flags & (SP_OBJECT_STYLE_MODIFIED_FLAG | SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { + if (this->style->stroke_width.unit == SP_CSS_UNIT_PERCENT) { + //TODO: Check specification + + SPItemCtx *ictx = (SPItemCtx *) ctx; + double const aw = 1.0 / ictx->i2vp.descrim(); + this->style->stroke_width.computed = this->style->stroke_width.value * aw; + + for (ViewIterator iter = _display.begin(); iter != _display.end(); iter++) { + iter->arenaitem->setStyle(this->style); + } + } + } + + if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_PARENT_MODIFIED_FLAG)) { + for (ViewIterator iter = _display.begin(); iter != _display.end(); iter++) { + _updateView(*iter); + } + } +} + +bool SPHatchPath::isValid() const { + if (_curve && (_repeatLength() <= 0)) { + return false; + } + return true; +} + +Inkscape::DrawingItem *SPHatchPath::show(Inkscape::Drawing &drawing, unsigned int key, Geom::OptInterval extents) { + Inkscape::DrawingShape *s = new Inkscape::DrawingShape(drawing); + _display.push_front(View(s, key)); + _display.front().extents = extents; + + _updateView(_display.front()); + + return s; +} + +void SPHatchPath::hide(unsigned int key) { + for (ViewIterator iter = _display.begin(); iter != _display.end(); iter++) { + if (iter->key == key) { + delete iter->arenaitem; + _display.erase(iter); + return; + } + } + + g_assert_not_reached(); +} + +void SPHatchPath::setStripExtents(unsigned int key, Geom::OptInterval const &extents) { + for (ViewIterator iter = _display.begin(); iter != _display.end(); iter++) { + if (iter->key == key) { + iter->extents = extents; + break; + } + } +} + +Geom::Interval SPHatchPath::bounds() const { + Geom::OptRect bbox; + Geom::Interval result; + + Geom::Affine transform = Geom::Translate(offset.computed, 0); + if (!this->_curve) { + SPCurve test_curve; + test_curve.moveto(Geom::Point(0, 0)); + test_curve.moveto(Geom::Point(0, 1)); + bbox = bounds_exact_transformed(test_curve.get_pathvector(), transform); + } else { + bbox = bounds_exact_transformed(this->_curve->get_pathvector(), transform); + } + + gdouble stroke_width = style->stroke_width.computed; + result.setMin(bbox->left() - stroke_width / 2); + result.setMax(bbox->right() + stroke_width / 2); + return result; +} + +SPCurve *SPHatchPath::calculateRenderCurve(unsigned key) const { + for (ConstViewIterator iter = _display.begin(); iter != _display.end(); iter++) { + if (iter->key == key) { + return _calculateRenderCurve(*iter); + } + } + g_assert_not_reached(); + return NULL; +} + +gdouble SPHatchPath::_repeatLength() const { + if (!_curve) { + return 0; + } + + if (!_curve->last_point()) { + return 0; + } + + return _curve->last_point()->y(); +} + +void SPHatchPath::_updateView(View &view) { + SPCurve *calculated_curve = _calculateRenderCurve(view); + + Geom::Affine offset_transform = Geom::Translate(offset.computed, 0); + view.arenaitem->setTransform(offset_transform); + style->fill.setNone(); + view.arenaitem->setStyle(this->style); + view.arenaitem->setPath(calculated_curve); + + calculated_curve->unref(); +} + +SPCurve *SPHatchPath::_calculateRenderCurve(View const &view) const { + SPCurve *calculated_curve = new SPCurve; + + if (!view.extents) { + return calculated_curve; + } + + if (!_curve) { + calculated_curve->moveto(0, view.extents->min()); + calculated_curve->lineto(0, view.extents->max()); + //TODO: if hatch has a dasharray defined, adjust line ends + } else { + gdouble repeatLength = _repeatLength(); + if (repeatLength > 0) { + gdouble initial_y = floor(view.extents->min() / repeatLength) * repeatLength; + int segment_cnt = ceil((view.extents->extent()) / repeatLength) + 1; + + SPCurve *segment =_curve->copy(); + segment->transform(Geom::Translate(0, initial_y)); + + Geom::Affine step_transform = Geom::Translate(0, repeatLength); + for (int i = 0; i < segment_cnt; i++) { + if (_continuous) { + calculated_curve->append_continuous(segment, 0.0625); + } else { + calculated_curve->append(segment, false); + } + segment->transform(step_transform); + } + + segment->unref(); + } + } + return calculated_curve; +} + + +void SPHatchPath::_readHatchPathVector(char const *str, Geom::PathVector &pathv, bool &continous_join) { + if (!str) { + return; + } + + pathv = sp_svg_read_pathv(str); + + if (!pathv.empty()) { + continous_join = false; + } else { + Glib::ustring str2 = Glib::ustring::compose("M0,0 %1", str); + pathv = sp_svg_read_pathv(str2.c_str()); + if (pathv.empty()) { + return; + } + + gdouble last_point_x = pathv.back().finalPoint().x(); + Inkscape::CSSOStringStream stream; + stream << last_point_x; + Glib::ustring str3 = Glib::ustring::compose("M%1,0 %2", stream.str(), str); + Geom::PathVector pathv3 = sp_svg_read_pathv(str3.c_str()); + + //Path can be composed of relative commands only. In this case final point + //coordinates would depend on first point position. If this happens, fall + //back to using 0,0 as first path point + if (pathv3.back().finalPoint().y() == pathv.back().finalPoint().y()) { + pathv = pathv3; + } + continous_join = true; + } +} + +SPHatchPath::View::View(Inkscape::DrawingShape *arenaitem, int key) + : arenaitem(arenaitem), key(key) +{ +} + + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: + */ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/src/sp-hatch-path.h b/src/sp-hatch-path.h new file mode 100644 index 000000000..57b3a8237 --- /dev/null +++ b/src/sp-hatch-path.h @@ -0,0 +1,91 @@ +/** @file + * SVG <hatchPath> implementation + *//* + * Author: + * Tomasz Boczkowski <penginsbacon@gmail.com> + * + * Copyright (C) 2014 Tomasz Boczkowski + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifndef SEEN_SP_HATCH_PATH_H +#define SEEN_SP_HATCH_PATH_H + +#include <list> +#include <stddef.h> +#include <glibmm/ustring.h> +#include <sigc++/connection.h> + +#include "svg/svg-length.h" + +namespace Inkscape { + +class Drawing; +class DrawingShape; + +} + +#define SP_HATCH_PATH(obj) (dynamic_cast<SPHatchPath*>((SPObject*)obj)) +#define SP_IS_HATCH_PATH(obj) (dynamic_cast<const SPHatchPath*>((SPObject*)obj) != NULL) + +class SPHatchPath : public SPObject { +public: + SPHatchPath(); + virtual ~SPHatchPath(); + + SVGLength offset; + + void setCurve(SPCurve *curve, bool owner); + + bool isValid() const; + + Inkscape::DrawingItem *show(Inkscape::Drawing &drawing, unsigned int key, Geom::OptInterval extents); + void hide(unsigned int key); + + void setStripExtents(unsigned int key, Geom::OptInterval const &extents); + Geom::Interval bounds() const; + + SPCurve *calculateRenderCurve(unsigned key) const; + +protected: + virtual void build(SPDocument* doc, Inkscape::XML::Node* repr); + virtual void release(); + virtual void set(unsigned int key, const gchar* value); + virtual void update(SPCtx* ctx, unsigned int flags); + +private: + struct View { + View(Inkscape::DrawingShape *arenaitem, int key); + //Do not delete arenaitem in destructor. + + Inkscape::DrawingShape *arenaitem; + Geom::OptInterval extents; + unsigned int key; + }; + typedef std::list<SPHatchPath::View>::iterator ViewIterator; + typedef std::list<SPHatchPath::View>::const_iterator ConstViewIterator; + std::list<View> _display; + + gdouble _repeatLength() const; + void _updateView(View &view); + SPCurve *_calculateRenderCurve(View const &view) const; + + void _readHatchPathVector(char const *str, Geom::PathVector &pathv, bool &continous_join); + + SPCurve *_curve; + bool _continuous; +}; + +#endif // SEEN_SP_HATCH_PATH_H + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/src/sp-hatch.cpp b/src/sp-hatch.cpp new file mode 100644 index 000000000..b007fc846 --- /dev/null +++ b/src/sp-hatch.cpp @@ -0,0 +1,679 @@ +/** @file + * SVG <hatch> implementation + *//* + * Author: + * Tomasz Boczkowski <penginsbacon@gmail.com> + * + * Copyright (C) 2014 Tomasz Boczkowski + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <cstring> +#include <string> +#include <2geom/transforms.h> +#include <sigc++/functors/mem_fun.h> + +#include "svg/svg.h" +#include "display/cairo-utils.h" +#include "display/drawing-context.h" +#include "display/drawing-surface.h" +#include "display/drawing.h" +#include "display/drawing-pattern.h" +#include "attributes.h" +#include "document-private.h" +#include "uri.h" +#include "style.h" +#include "sp-hatch.h" +#include "sp-hatch-path.h" +#include "xml/repr.h" + +#include "sp-factory.h" + +namespace { +SPObject* createHatch() { + return new SPHatch(); +} + +bool hatchRegistered = SPFactory::instance().registerObject("svg:hatch", createHatch); +} + +SPHatch::SPHatch() + : SPPaintServer() +{ + this->ref = new SPHatchReference(this); + this->ref->changedSignal().connect(sigc::mem_fun(this, &SPHatch::_onRefChanged)); + + this->_hatchUnits = UNITS_OBJECTBOUNDINGBOX; + this->_hatchUnits_set = false; + + this->_hatchContentUnits = UNITS_USERSPACEONUSE; + this->_hatchContentUnits_set = false; + + this->_hatchTransform = Geom::identity(); + this->_hatchTransform_set = false; + + this->_x.unset(); + this->_y.unset(); + this->_pitch.unset(); + this->_rotate.unset(); +} + +SPHatch::~SPHatch() { +} + +void SPHatch::build(SPDocument* doc, Inkscape::XML::Node* repr) { + SPPaintServer::build(doc, repr); + + this->readAttr("hatchUnits"); + this->readAttr("hatchContentUnits"); + this->readAttr("hatchTransform"); + this->readAttr("x"); + this->readAttr("y"); + this->readAttr("pitch"); + this->readAttr("rotate"); + this->readAttr("xlink:href"); + this->readAttr( "style" ); + + /* Register ourselves */ + doc->addResource("hatch", this); +} + +void SPHatch::release() { + if (this->document) { + // Unregister ourselves + this->document->removeResource("hatch", this); + } + + std::vector<SPHatchPath *> children; + hatchPaths(children); + for (ViewIterator view_iter = _display.begin(); view_iter != _display.end(); view_iter++) { + for (ChildIterator child_iter = children.begin(); child_iter != children.end(); + child_iter++) { + SPHatchPath *child = *child_iter; + child->hide(view_iter->key); + } + delete view_iter->arenaitem; + view_iter->arenaitem = NULL; + } + + if (this->ref) { + this->_modified_connection.disconnect(); + this->ref->detach(); + delete this->ref; + this->ref = NULL; + } + + SPPaintServer::release(); +} + +void SPHatch::child_added(Inkscape::XML::Node* child, Inkscape::XML::Node* ref) { + SPObject::child_added(child, ref); + + SPHatchPath *path_child = SP_HATCH_PATH(this->document->getObjectByRepr(child)); + + if (path_child) { + for (ViewIterator iter = _display.begin(); iter != _display.end(); iter++) { + Geom::OptInterval extents = _calculateStripExtents(iter->bbox); + Inkscape::DrawingItem *ac = path_child->show(iter->arenaitem->drawing(), iter->key, extents); + + path_child->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + if (ac) { + iter->arenaitem->prependChild(ac); + } + } + } + //FIXME: notify all hatches that refer to this child set +} + +void SPHatch::set(unsigned int key, const gchar* value) { + switch (key) { + case SP_ATTR_HATCHUNITS: + if (value) { + if (!strcmp(value, "userSpaceOnUse")) { + this->_hatchUnits = UNITS_USERSPACEONUSE; + } else { + this->_hatchUnits = UNITS_OBJECTBOUNDINGBOX; + } + + this->_hatchUnits_set = true; + } else { + this->_hatchUnits_set = false; + } + + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + break; + + case SP_ATTR_HATCHCONTENTUNITS: + if (value) { + if (!strcmp(value, "userSpaceOnUse")) { + this->_hatchContentUnits = UNITS_USERSPACEONUSE; + } else { + this->_hatchContentUnits = UNITS_OBJECTBOUNDINGBOX; + } + + this->_hatchContentUnits_set = true; + } else { + this->_hatchContentUnits_set = false; + } + + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + break; + + case SP_ATTR_HATCHTRANSFORM: { + Geom::Affine t; + + if (value && sp_svg_transform_read(value, &t)) { + this->_hatchTransform = t; + this->_hatchTransform_set = true; + } else { + this->_hatchTransform = Geom::identity(); + this->_hatchTransform_set = false; + } + + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + break; + } + case SP_ATTR_X: + this->_x.readOrUnset(value); + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + break; + + case SP_ATTR_Y: + this->_y.readOrUnset(value); + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + break; + + case SP_ATTR_PITCH: + this->_pitch.readOrUnset(value); + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + break; + + case SP_ATTR_ROTATE: + this->_rotate.readOrUnset(value); + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + break; + + case SP_ATTR_XLINK_HREF: + if (value && this->href == value) { + /* Href unchanged, do nothing. */ + } else { + this->href.clear(); + + if (value) { + // First, set the href field; it's only used in the "unchanged" check above. + this->href = value; + // Now do the attaching, which emits the changed signal. + if (value) { + try { + this->ref->attach(Inkscape::URI(value)); + } catch (Inkscape::BadURIException &e) { + g_warning("%s", e.what()); + this->ref->detach(); + } + } else { + this->ref->detach(); + } + } + } + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + break; + + default: + if (SP_ATTRIBUTE_IS_CSS(key)) { + sp_style_read_from_object(this->style, this); + requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); + } else { + SPPaintServer::set(key, value); + } + break; + } +} + +bool SPHatch::_hasHatchPatchChildren(SPHatch const *hatch) { + for (SPObject const *child = hatch->firstChild(); child; child = child->getNext() ) { + if (SP_IS_HATCH_PATH(child)) { + return true; + } + } + return false; +} + +void SPHatch::hatchPaths(std::vector<SPHatchPath*>& l) { + SPHatch *src = chase_hrefs<SPHatch>(this, sigc::ptr_fun(&_hasHatchPatchChildren)); + + if (src) { + for (SPObject *child = src->firstChild(); child; child = child->getNext()) { + if (SP_IS_HATCH_PATH(child)) { + l.push_back(SP_HATCH_PATH(child)); + } + } + } +} + +void SPHatch::hatchPaths(std::vector<SPHatchPath const*>& l) const { + SPHatch const *src = chase_hrefs<SPHatch const>(this, sigc::ptr_fun(&_hasHatchPatchChildren)); + + if (src) { + for (SPObject const *child = src->firstChild(); child; child = child->getNext()) { + if (SP_IS_HATCH_PATH(child)) { + l.push_back(SP_HATCH_PATH(child)); + } + } + } +} + +/* TODO: ::remove_child and ::order_changed handles - see SPPattern */ + + +void SPHatch::update(SPCtx* ctx, unsigned int flags) { + typedef std::list<SPHatch::View>::iterator ViewIterator; + + if (flags & SP_OBJECT_MODIFIED_FLAG) { + flags |= SP_OBJECT_PARENT_MODIFIED_FLAG; + } + + flags &= SP_OBJECT_MODIFIED_CASCADE; + + std::vector<SPHatchPath *> children; + hatchPaths(children); + + for (ChildIterator iter = children.begin(); iter != children.end(); iter++) { + SPHatchPath* child = *iter; + + sp_object_ref(child, NULL); + + for (ViewIterator view_iter = _display.begin(); view_iter != _display.end(); view_iter++) { + Geom::OptInterval strip_extents = _calculateStripExtents(view_iter->bbox); + child->setStripExtents(view_iter->key, strip_extents); + } + + if (flags || (child->mflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { + + child->updateDisplay(ctx, flags); + } + + sp_object_unref(child, NULL); + } + + for (ViewIterator iter = _display.begin(); iter != _display.end(); iter++) { + _updateView(*iter); + } +} + +void SPHatch::modified(unsigned int flags) { + if (flags & SP_OBJECT_MODIFIED_FLAG) { + flags |= SP_OBJECT_PARENT_MODIFIED_FLAG; + } + + flags &= SP_OBJECT_MODIFIED_CASCADE; + + std::vector<SPHatchPath *> children; + hatchPaths(children); + + for (ChildIterator iter = children.begin(); iter != children.end(); iter++) { + SPObject *child = *iter; + + sp_object_ref(child, NULL); + + if (flags || (child->mflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { + child->emitModified(flags); + } + + sp_object_unref(child, NULL); + } +} + +void SPHatch::_onRefChanged(SPObject *old_ref, SPObject *ref) { + typedef std::list<SPHatch::View>::iterator ViewIterator; + + if (old_ref) { + _modified_connection.disconnect(); + } + + if (SP_IS_HATCH(ref)) { + _modified_connection = ref->connectModified(sigc::mem_fun(this, &SPHatch::_onRefModified)); + } + + if (!_hasHatchPatchChildren(this)) { + SPHatch *old_shown = NULL; + SPHatch *new_shown = NULL; + std::vector<SPHatchPath *> oldhatchPaths; + std::vector<SPHatchPath *> newhatchPaths; + if (SP_IS_HATCH(old_ref)) { + old_shown = SP_HATCH(old_ref)->rootHatch(); + old_shown->hatchPaths(oldhatchPaths); + } + if (SP_IS_HATCH(ref)) { + new_shown = SP_HATCH(ref)->rootHatch(); + new_shown->hatchPaths(newhatchPaths); + } + if (old_shown != new_shown) { + + for (ViewIterator iter = _display.begin(); iter != _display.end(); iter++) { + Geom::OptInterval extents = _calculateStripExtents(iter->bbox); + + for (ChildIterator child_iter = oldhatchPaths.begin(); child_iter != oldhatchPaths.end(); child_iter++) { + SPHatchPath *child = *child_iter; + child->hide(iter->key); + } + for (ChildIterator child_iter = newhatchPaths.begin(); child_iter != newhatchPaths.end(); child_iter++) { + SPHatchPath *child = *child_iter; + Inkscape::DrawingItem *cai = child->show(iter->arenaitem->drawing(), iter->key, extents); + child->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + if (cai) { + iter->arenaitem->appendChild(cai); + } + + } + } + } + } + + _onRefModified(ref, 0); +} + +void SPHatch::_onRefModified(SPObject */*ref*/, guint /*flags*/) { + requestModified(SP_OBJECT_MODIFIED_FLAG); + // Conditional to avoid causing infinite loop if there's a cycle in the href chain. +} + + +SPHatch *SPHatch::rootHatch() { + SPHatch *src = chase_hrefs<SPHatch>(this, sigc::ptr_fun(&_hasHatchPatchChildren)); + return src ? src : this; // document is broken, we can't get to root; but at least we can return pat which is supposedly a valid hatch +} + +// Access functions that look up fields up the chain of referenced hatchs and return the first one which is set +// FIXME: all of them must use chase_hrefs as children() and rootHatch() + +SPHatch::HatchUnits SPHatch::hatchUnits() const { + for (SPHatch const *pat_i = this; pat_i != NULL; + pat_i = pat_i->ref ? pat_i->ref->getObject() : NULL) { + if (pat_i->_hatchUnits_set) + return pat_i->_hatchUnits; + } + return _hatchUnits; +} + +SPHatch::HatchUnits SPHatch::hatchContentUnits() const { + for (SPHatch const *pat_i = this; pat_i != NULL; + pat_i = pat_i->ref ? pat_i->ref->getObject() : NULL) { + if (pat_i->_hatchContentUnits_set) + return pat_i->_hatchContentUnits; + } + return _hatchContentUnits; +} + +Geom::Affine const &SPHatch::hatchTransform() const { + for (SPHatch const *pat_i = this; pat_i != NULL; + pat_i = pat_i->ref ? pat_i->ref->getObject() : NULL) { + if (pat_i->_hatchTransform_set) + return pat_i->_hatchTransform; + } + return _hatchTransform; +} + +gdouble SPHatch::x() const { + for (SPHatch const *pat_i = this; pat_i != NULL; + pat_i = pat_i->ref ? pat_i->ref->getObject() : NULL) { + if (pat_i->_x._set) + return pat_i->_x.computed; + } + return 0; +} + +gdouble SPHatch::y() const { + for (SPHatch const *pat_i = this; pat_i != NULL; + pat_i = pat_i->ref ? pat_i->ref->getObject() : NULL) { + if (pat_i->_y._set) + return pat_i->_y.computed; + } + return 0; +} + +gdouble SPHatch::pitch() const { + for (SPHatch const *pat_i = this; pat_i != NULL; + pat_i = pat_i->ref ? pat_i->ref->getObject() : NULL) { + if (pat_i->_pitch._set) + return pat_i->_pitch.computed; + } + return 0; +} + +gdouble SPHatch::rotate() const { + for (SPHatch const *pat_i = this; pat_i != NULL; + pat_i = pat_i->ref ? pat_i->ref->getObject() : NULL) { + if (pat_i->_rotate._set) + return pat_i->_rotate.computed; + } + return 0; +} + +bool SPHatch::isValid() const { + double strip_pitch = pitch(); + if (strip_pitch <= 0) { + return false; + } + + std::vector<SPHatchPath const *> children; + hatchPaths(children); + if (children.empty()) { + return false; + } + for (ConstChildIterator iter = children.begin(); iter != children.end(); iter++) { + SPHatchPath const *child = *iter; + if (!child->isValid()) { + return false; + } + } + + return true; +} + +Inkscape::DrawingPattern *SPHatch::show(Inkscape::Drawing &drawing, unsigned int key, Geom::OptRect bbox) { + Inkscape::DrawingPattern *ai = new Inkscape::DrawingPattern(drawing); + //TODO: set some debug flag to see DrawingPattern + _display.push_front(View(ai, key)); + _display.front().bbox = bbox; + + std::vector<SPHatchPath *> children; + hatchPaths(children); + + Geom::OptInterval extents = _calculateStripExtents(bbox); + for (ChildIterator iter = children.begin(); iter != children.end(); iter++) { + SPHatchPath *child = *iter; + Inkscape::DrawingItem *cai = child->show(drawing, key, extents); + if (cai) { + ai->appendChild(cai); + } + } + + View& view = _display.front(); + _updateView(view); + + return ai; +} + +void SPHatch::hide(unsigned int key) { + std::vector<SPHatchPath *> children; + hatchPaths(children); + + for (ChildIterator iter = children.begin(); iter != children.end(); iter++) { + SPHatchPath *child = *iter; + child->hide(key); + } + + for (ViewIterator iter = _display.begin(); iter != _display.end(); iter++) { + if (iter->key == key) { + delete iter->arenaitem; + _display.erase(iter); + return; + } + } + + g_assert_not_reached(); +} + + +Geom::Interval SPHatch::bounds() const { + Geom::Interval result; + std::vector<SPHatchPath const *> children; + hatchPaths(children); + + for (ConstChildIterator iter = children.begin(); iter != children.end(); iter++) { + SPHatchPath const *child = *iter; + if (result.extent() == 0) { + result = child->bounds(); + } else { + result |= child->bounds(); + } + } + return result; +} + +SPHatch::RenderInfo SPHatch::calculateRenderInfo(unsigned key) const { + RenderInfo info; + for (ConstViewIterator iter = _display.begin(); iter != _display.end(); iter++) { + if (iter->key == key) { + return _calculateRenderInfo(*iter); + } + } + g_assert_not_reached(); + return info; +} + +void SPHatch::_updateView(View &view) { + RenderInfo info = _calculateRenderInfo(view); + //The rendering of hatch overflow is implemented by repeated drawing + //of hatch paths over one strip. Within each iteration paths are moved by pitch value. + //The movement progresses from right to left. This gives the same result + //as drawing whole strips in left-to-right order. + + + view.arenaitem->setChildTransform(info.child_transform); + view.arenaitem->setPatternToUserTransform(info.pattern_to_user_transform); + view.arenaitem->setTileRect(info.tile_rect); + view.arenaitem->setStyle(this->style); + view.arenaitem->setOverflow(info.overflow_initial_transform, info.overflow_steps, + info.overflow_step_transform); +} + +SPHatch::RenderInfo SPHatch::_calculateRenderInfo(View const &view) const { + RenderInfo info; + + Geom::OptInterval extents = _calculateStripExtents(view.bbox); + if (!extents) { + return info; + } + + double tile_x = x(); + double tile_y = y(); + double tile_width = pitch(); + double tile_height = extents->max() - extents->min(); + double tile_rotate = rotate(); + double tile_render_y = extents->min(); + + if (view.bbox && (hatchUnits() == UNITS_OBJECTBOUNDINGBOX)) { + tile_x *= view.bbox->width(); + tile_y *= view.bbox->height(); + tile_width *= view.bbox->width(); + tile_height *= view.bbox->height(); + tile_render_y *= view.bbox->height(); + } + + // Pattern size in hatch space + Geom::Rect hatch_tile = Geom::Rect::from_xywh(0, tile_render_y, tile_width, tile_height); + // Content to bbox + Geom::Affine content2ps; + if (view.bbox && (hatchContentUnits() == UNITS_OBJECTBOUNDINGBOX)) { + content2ps = Geom::Affine(view.bbox->width(), 0.0, 0.0, view.bbox->height(), 0, 0); + } + + // Tile (hatch space) to user. + Geom::Affine ps2user = Geom::Translate(tile_x, tile_y) * Geom::Rotate::from_degrees(tile_rotate) * hatchTransform(); + + info.child_transform = content2ps; + info.pattern_to_user_transform = ps2user; + info.tile_rect = hatch_tile; + + if (style->overflow.computed == SP_CSS_OVERFLOW_VISIBLE) { + Geom::Interval bounds = this->bounds(); + gdouble pitch = this->pitch(); + gdouble overflow_right_strip = floor(bounds.max() / pitch) * pitch; + info.overflow_steps = ceil((overflow_right_strip - bounds.min()) / pitch) + 1; + info.overflow_step_transform = Geom::Translate(pitch, 0.0); + info.overflow_initial_transform = Geom::Translate(-overflow_right_strip, 0.0); + } else { + info.overflow_steps = 1; + } + + return info; +} + +//calculates strip extents in content space +Geom::OptInterval SPHatch::_calculateStripExtents(Geom::OptRect bbox) const { + if (!bbox || (bbox->area() == 0)) { + return Geom::OptInterval(); + } + + double tile_x = x(); + double tile_y = y(); + double tile_rotate = rotate(); + + Geom::Affine ps2user = Geom::Translate(tile_x, tile_y) * Geom::Rotate::from_degrees(tile_rotate) * hatchTransform(); + Geom::Affine user2ps = ps2user.inverse(); + + Geom::Interval extents; + for (int i = 0; i < 4; i++) { + Geom::Point corner = bbox->corner(i); + Geom::Point corner_ps = corner * user2ps; + if (i == 0 || corner_ps.y() < extents.min()) { + extents.setMin(corner_ps.y()); + } + if (i == 0 || corner_ps.y() > extents.max()) { + extents.setMax(corner_ps.y()); + } + } + + if (hatchUnits() == UNITS_OBJECTBOUNDINGBOX) { + extents /= bbox->height(); + } + + return extents; +} + +cairo_pattern_t* SPHatch::pattern_new(cairo_t * /*base_ct*/, Geom::OptRect const &/*bbox*/, double /*opacity*/) +{ + //this code should not be used + //it is however required by the fact that SPPaintServer::hatch_new is pure virtual + return cairo_pattern_create_rgb(0.5, 0.5, 1.0); +} + +void SPHatch::setBBox(unsigned int key, Geom::OptRect const &bbox) { + for (ViewIterator iter = _display.begin(); iter != _display.end(); iter++) { + if (iter->key == key) { + iter->bbox = bbox; + break; + } + } +} + +SPHatch::View::View(Inkscape::DrawingPattern *arenaitem, int key) + : arenaitem(arenaitem), key(key) +{ +} +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: + */ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/src/sp-hatch.h b/src/sp-hatch.h new file mode 100644 index 000000000..dc6ee0add --- /dev/null +++ b/src/sp-hatch.h @@ -0,0 +1,174 @@ +/** @file + * SVG <hatch> implementation + *//* + * Author: + * Tomasz Boczkowski <penginsbacon@gmail.com> + * + * Copyright (C) 2014 Tomasz Boczkowski + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifndef SEEN_SP_HATCH_H +#define SEEN_SP_HATCH_H + +#include <list> +#include <stddef.h> +#include <glibmm/ustring.h> +#include <sigc++/connection.h> + +#include "svg/svg-length.h" +#include "svg/svg-angle.h" +#include "sp-paint-server.h" +#include "uri-references.h" + +class SPHatchReference; +class SPHatchPath; +class SPItem; + +namespace Inkscape { + +class Drawing; +class DrawingPattern; + +namespace XML { + +class Node; + +} +} + +#define SP_HATCH(obj) (dynamic_cast<SPHatch*>((SPObject*)obj)) +#define SP_IS_HATCH(obj) (dynamic_cast<const SPHatch*>((SPObject*)obj) != NULL) + +class SPHatch : public SPPaintServer { +public: + enum HatchUnits { + UNITS_USERSPACEONUSE, + UNITS_OBJECTBOUNDINGBOX + }; + + struct RenderInfo { + Geom::Affine child_transform; + Geom::Affine pattern_to_user_transform; + Geom::Rect tile_rect; + + int overflow_steps; + Geom::Affine overflow_step_transform; + Geom::Affine overflow_initial_transform; + }; + + SPHatch(); + virtual ~SPHatch(); + + /* Reference (href) */ + Glib::ustring href; + SPHatchReference *ref; + + gdouble x() const; + gdouble y() const; + gdouble pitch() const; + gdouble rotate() const; + HatchUnits hatchUnits() const; + HatchUnits hatchContentUnits() const; + Geom::Affine const &hatchTransform() const; + SPHatch *rootHatch(); //TODO: const + + void hatchPaths(std::vector<SPHatchPath*>& l); + void hatchPaths(std::vector<SPHatchPath const *>& l) const; + + bool isValid() const; + + Inkscape::DrawingPattern *show(Inkscape::Drawing &drawing, unsigned int key, Geom::OptRect bbox); + void hide(unsigned int key); + virtual cairo_pattern_t* pattern_new(cairo_t *ct, Geom::OptRect const &bbox, double opacity); + + RenderInfo calculateRenderInfo(unsigned key) const; + Geom::Interval bounds() const; + void setBBox(unsigned int key, Geom::OptRect const &bbox); + +protected: + virtual void build(SPDocument* doc, Inkscape::XML::Node* repr); + virtual void release(); + virtual void child_added(Inkscape::XML::Node* child, Inkscape::XML::Node* ref); + virtual void set(unsigned int key, const gchar* value); + virtual void update(SPCtx* ctx, unsigned int flags); + virtual void modified(unsigned int flags); + +private: + struct View { + View(Inkscape::DrawingPattern *arenaitem, int key); + //Do not delete arenaitem in destructor. + + Inkscape::DrawingPattern *arenaitem; + Geom::OptRect bbox; + unsigned int key; + }; + + typedef std::vector<SPHatchPath *>::iterator ChildIterator; + typedef std::vector<SPHatchPath const *>::const_iterator ConstChildIterator; + typedef std::list<View>::iterator ViewIterator; + typedef std::list<View>::const_iterator ConstViewIterator; + + static bool _hasHatchPatchChildren(SPHatch const* hatch); + + void _updateView(View &view); + RenderInfo _calculateRenderInfo(View const &view) const; + Geom::OptInterval _calculateStripExtents(Geom::OptRect bbox) const; + + + /** + Gets called when the hatch is reattached to another <hatch> + */ + void _onRefChanged(SPObject *old_ref, SPObject *ref); + + /** + Gets called when the referenced <hatch> is changed + */ + void _onRefModified(SPObject *ref, guint flags); + + /* patternUnits and patternContentUnits attribute */ + HatchUnits _hatchUnits : 1; + bool _hatchUnits_set : 1; + HatchUnits _hatchContentUnits : 1; + bool _hatchContentUnits_set : 1; + /* hatchTransform attribute */ + Geom::Affine _hatchTransform; + bool _hatchTransform_set : 1; + /* Strip */ + SVGLength _x; + SVGLength _y; + SVGLength _pitch; + SVGAngle _rotate; + + sigc::connection _modified_connection; + + std::list<View> _display; +}; + + +class SPHatchReference : public Inkscape::URIReference { +public: + SPHatchReference (SPObject *obj) : URIReference(obj) {} + SPHatch *getObject() const { + return reinterpret_cast<SPHatch *>(URIReference::getObject()); + } + +protected: + virtual bool _acceptObject(SPObject *obj) const { + return SP_IS_HATCH (obj); + } +}; + +#endif // SEEN_SP_HATCH_H + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/src/sp-item.cpp b/src/sp-item.cpp index b1a22fd8c..94ab1b181 100644 --- a/src/sp-item.cpp +++ b/src/sp-item.cpp @@ -120,6 +120,9 @@ SPItem::SPItem() : SPObject() { mask_ref = new SPMaskReference(this); mask_ref->changedSignal().connect(sigc::bind(sigc::ptr_fun(mask_ref_changed), this)); + style->signal_fill_ps_changed.connect(sigc::bind(sigc::ptr_fun(fill_ps_ref_changed), this)); + style->signal_stroke_ps_changed.connect(sigc::bind(sigc::ptr_fun(stroke_ps_ref_changed), this)); + avoidRef = new SPAvoidRef(this); } @@ -465,7 +468,15 @@ void SPItem::release() { SPObject::release(); + SPPaintServer *fill_ps = style->getFillPaintServer(); + SPPaintServer *stroke_ps = style->getStrokePaintServer(); while (item->display) { + if (fill_ps) { + fill_ps->hide(item->display->arenaitem->key()); + } + if (stroke_ps) { + stroke_ps->hide(item->display->arenaitem->key()); + } item->display = sp_item_view_list_remove(item->display, item->display); } @@ -623,6 +634,56 @@ void SPItem::mask_ref_changed(SPObject *old_mask, SPObject *mask, SPItem *item) } } +void SPItem::fill_ps_ref_changed(SPObject *old_ps, SPObject *ps, SPItem *item) { + SPPaintServer *old_fill_ps = SP_PAINT_SERVER(old_ps); + if (old_fill_ps) { + for (SPItemView *v =item->display; v != NULL; v = v->next) { + old_fill_ps->hide(v->arenaitem->key()); + } + } + + SPPaintServer *new_fill_ps = SP_PAINT_SERVER(ps); + if (new_fill_ps) { + Geom::OptRect bbox = item->geometricBounds(); + for (SPItemView *v = item->display; v != NULL; v = v->next) { + if (!v->arenaitem->key()) { + v->arenaitem->setKey(SPItem::display_key_new(3)); + } + Inkscape::DrawingPattern *pi = new_fill_ps->show( + v->arenaitem->drawing(), v->arenaitem->key(), bbox); + v->arenaitem->setFillPattern(pi); + if (pi) { + new_fill_ps->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + } + } + } +} + +void SPItem::stroke_ps_ref_changed(SPObject *old_ps, SPObject *ps, SPItem *item) { + SPPaintServer *old_stroke_ps = SP_PAINT_SERVER(old_ps); + if (old_stroke_ps) { + for (SPItemView *v =item->display; v != NULL; v = v->next) { + old_stroke_ps->hide(v->arenaitem->key()); + } + } + + SPPaintServer *new_stroke_ps = SP_PAINT_SERVER(ps); + if (new_stroke_ps) { + Geom::OptRect bbox = item->geometricBounds(); + for (SPItemView *v = item->display; v != NULL; v = v->next) { + if (!v->arenaitem->key()) { + v->arenaitem->setKey(SPItem::display_key_new(3)); + } + Inkscape::DrawingPattern *pi = new_stroke_ps->show( + v->arenaitem->drawing(), v->arenaitem->key(), bbox); + v->arenaitem->setStrokePattern(pi); + if (pi) { + new_stroke_ps->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + } + } + } +} + void SPItem::update(SPCtx* /*ctx*/, guint flags) { SPItem *item = this; SPItem* object = item; @@ -682,6 +743,10 @@ void SPItem::update(SPCtx* /*ctx*/, guint flags) { item->avoidRef->handleSettingChange(); } +void SPItem::modified(unsigned int /*flags*/) +{ +} + Inkscape::XML::Node* SPItem::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { SPItem *item = this; SPItem* object = item; @@ -1130,6 +1195,33 @@ Inkscape::DrawingItem *SPItem::invoke_show(Inkscape::Drawing &drawing, unsigned SP_MASK(mask)->sp_mask_set_bbox(mask_key, item_bbox); mask->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); } + + SPPaintServer *fill_ps = style->getFillPaintServer(); + if (fill_ps) { + if (!display->arenaitem->key()) { + display->arenaitem->setKey(display_key_new(3)); + } + int fill_key = display->arenaitem->key(); + + Inkscape::DrawingPattern *ap = fill_ps->show(drawing, fill_key, item_bbox); + ai->setFillPattern(ap); + if (ap) { + fill_ps->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + } + } + SPPaintServer *stroke_ps = style->getStrokePaintServer(); + if (stroke_ps) { + if (!display->arenaitem->key()) { + display->arenaitem->setKey(display_key_new(3)); + } + int stroke_key = display->arenaitem->key(); + + Inkscape::DrawingPattern *ap = stroke_ps->show(drawing, stroke_key, item_bbox); + ai->setStrokePattern(ap); + if (ap) { + stroke_ps->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + } + } ai->setData(this); ai->setItemBounds(geometricBounds()); } @@ -1159,6 +1251,14 @@ void SPItem::invoke_hide(unsigned key) mask_ref->getObject()->sp_mask_hide(v->arenaitem->key()); v->arenaitem->setMask(NULL); } + SPPaintServer *fill_ps = style->getFillPaintServer(); + if (fill_ps) { + fill_ps->hide(v->arenaitem->key()); + } + SPPaintServer *stroke_ps = style->getStrokePaintServer(); + if (stroke_ps) { + stroke_ps->hide(v->arenaitem->key()); + } if (!ref) { display = v->next; } else { diff --git a/src/sp-item.h b/src/sp-item.h index 1e4f5f4c6..1656a0c2b 100644 --- a/src/sp-item.h +++ b/src/sp-item.h @@ -34,6 +34,7 @@ class SPClipPathReference; class SPMaskReference; class SPAvoidRef; +class SPPattern; struct SPPrintContext; typedef unsigned int guint32; @@ -252,12 +253,15 @@ private: static SPItemView *sp_item_view_new_prepend(SPItemView *list, SPItem *item, unsigned flags, unsigned key, Inkscape::DrawingItem *arenaitem); static void clip_ref_changed(SPObject *old_clip, SPObject *clip, SPItem *item); static void mask_ref_changed(SPObject *old_clip, SPObject *clip, SPItem *item); + static void fill_ps_ref_changed(SPObject *old_clip, SPObject *clip, SPItem *item); + static void stroke_ps_ref_changed(SPObject *old_clip, SPObject *clip, SPItem *item); public: virtual void build(SPDocument *document, Inkscape::XML::Node *repr); virtual void release(); virtual void set(unsigned int key, char const* value); virtual void update(SPCtx *ctx, unsigned int flags); + virtual void modified(unsigned int flags); virtual Inkscape::XML::Node* write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, unsigned int flags); virtual Geom::OptRect bbox(Geom::Affine const &transform, SPItem::BBoxType type) const; diff --git a/src/sp-lpe-item.cpp b/src/sp-lpe-item.cpp index a2a935951..019d15162 100644 --- a/src/sp-lpe-item.cpp +++ b/src/sp-lpe-item.cpp @@ -702,9 +702,8 @@ SPLPEItem::apply_to_mask(SPItem *item) { SPMask *mask = item->mask_ref->getObject(); if(mask) { - SPObject * mask_data = mask->firstChild(); + SPObject *mask_data = mask->firstChild(); SPCurve * mask_curve = NULL; - mask_data = mask->firstChild(); if (SP_IS_PATH(mask_data)) { mask_curve = SP_PATH(mask_data)->get_original_curve(); } else if(SP_IS_SHAPE(mask_data)) { diff --git a/src/sp-paint-server.cpp b/src/sp-paint-server.cpp index 77ad7a35f..ae40ad1aa 100644 --- a/src/sp-paint-server.cpp +++ b/src/sp-paint-server.cpp @@ -60,7 +60,25 @@ bool SPPaintServer::isSolid() const bool SPPaintServer::isValid() const { - return true; + return true; +} + +Inkscape::DrawingPattern *SPPaintServer::show(Inkscape::Drawing &/*drawing*/, unsigned int /*key*/, Geom::OptRect /*bbox*/) +{ + return NULL; +} + +void SPPaintServer::hide(unsigned int /*key*/) +{ +} + +void SPPaintServer::setBBox(unsigned int /*key*/, Geom::OptRect const &/*bbox*/) +{ +} + +cairo_pattern_t* SPPaintServer::pattern_new(cairo_t * /*ct*/, Geom::OptRect const &/*bbox*/, double /*opacity*/) +{ + return NULL; } /* diff --git a/src/sp-paint-server.h b/src/sp-paint-server.h index beac72af5..7f3bfcba0 100644 --- a/src/sp-paint-server.h +++ b/src/sp-paint-server.h @@ -15,11 +15,17 @@ * Released under GNU GPL, read the file 'COPYING' for more information */ +#include <cairo.h> #include <2geom/rect.h> +#include <sigc++/slot.h> #include "sp-object.h" -typedef struct _cairo cairo_t; -typedef struct _cairo_pattern cairo_pattern_t; +namespace Inkscape { + +class Drawing; +class DrawingPattern; + +} #define SP_PAINT_SERVER(obj) (dynamic_cast<SPPaintServer*>((SPObject*)obj)) #define SP_IS_PAINT_SERVER(obj) (dynamic_cast<const SPPaintServer*>((SPObject*)obj) != NULL) @@ -33,12 +39,59 @@ public: bool isSolid() const; virtual bool isValid() const; - virtual cairo_pattern_t* pattern_new(cairo_t *ct, Geom::OptRect const &bbox, double opacity) = 0; + //There are two ways to render a paint. The simple one is to create cairo_pattern_t structure + //on demand by pattern_new method. It is used for gradients. The other one is to add elements + //representing PaintServer in NR tree. It is used by hatches and patterns. + //Either pattern new or all three methods show, hide, setBBox need to be implemented + virtual Inkscape::DrawingPattern *show(Inkscape::Drawing &drawing, unsigned int key, Geom::OptRect bbox); // TODO check passing bbox by value. Looks suspicious. + virtual void hide(unsigned int key); + virtual void setBBox(unsigned int key, Geom::OptRect const &bbox); + + virtual cairo_pattern_t* pattern_new(cairo_t *ct, Geom::OptRect const &bbox, double opacity); protected: bool swatch; }; +/** + * Returns the first of {src, src-\>ref-\>getObject(), + * src-\>ref-\>getObject()-\>ref-\>getObject(),...} + * for which \a match is true, or NULL if none found. + * + * The raison d'être of this routine is that it correctly handles cycles in the href chain (e.g., if + * a gradient gives itself as its href, or if each of two gradients gives the other as its href). + * + * \pre SP_IS_GRADIENT(src). + */ +template <class PaintServer> +PaintServer *chase_hrefs(PaintServer *src, sigc::slot<bool, PaintServer const *> match) { + /* Use a pair of pointers for detecting loops: p1 advances half as fast as p2. If there is a + loop, then once p1 has entered the loop, we'll detect it the next time the distance between + p1 and p2 is a multiple of the loop size. */ + PaintServer *p1 = src, *p2 = src; + bool do1 = false; + for (;;) { + if (match(p2)) { + return p2; + } + + p2 = p2->ref->getObject(); + if (!p2) { + return p2; + } + if (do1) { + p1 = p1->ref->getObject(); + } + do1 = !do1; + + if ( p2 == p1 ) { + /* We've been here before, so return NULL to indicate that no matching gradient found + * in the chain. */ + return NULL; + } + } +} + #endif // SEEN_SP_PAINT_SERVER_H /* Local Variables: diff --git a/src/style-internal.cpp b/src/style-internal.cpp index a55a11403..b858e5cb6 100644 --- a/src/style-internal.cpp +++ b/src/style-internal.cpp @@ -964,7 +964,11 @@ SPIPaint::read( gchar const *str ) { if (!value.href && document) { // std::cout << " Creating value.href" << std::endl; value.href = new SPPaintServerReference(document); - value.href->changedSignal().connect(sigc::bind(sigc::ptr_fun((this == &style->fill)? sp_style_fill_paint_server_ref_changed : sp_style_stroke_paint_server_ref_changed), style)); + if (this == &style->fill) { + style->fill_ps_changed_connection = value.href->changedSignal().connect(sigc::bind(sigc::ptr_fun(sp_style_fill_paint_server_ref_changed), style)); + } else { + style->stroke_ps_changed_connection = value.href->changedSignal().connect(sigc::bind(sigc::ptr_fun(sp_style_stroke_paint_server_ref_changed), style)); + } } // std::cout << "uri: " << (uri?uri:"null") << std::endl; @@ -981,7 +985,16 @@ SPIPaint::read( gchar const *str ) { if (streq(str, "currentColor")) { set = true; currentcolor = true; - setColor( style->color.value.color ); + if (style) { + setColor( style->color.value.color ); + } else { + // Normally an SPIPaint is part of an SPStyle and the value of 'color' is + // available. SPIPaint can be used 'stand-alone' (e.g. to parse color values) in + // which case a value of 'currentColor' is meaningless, thus we shouldn't reach + // here. + std::cerr << "SPIPaint::read(): value is 'currentColor' but 'color' not available." << std::endl; + setColor( 0 ); + } } else if (streq(str, "none")) { set = true; noneSet = true; @@ -1396,11 +1409,20 @@ SPIFilter::read( gchar const *str ) { set = true; // Create href if not already done. - if (!href && style->object) { - href = new SPFilterReference(style->object); - href->changedSignal().connect(sigc::bind(sigc::ptr_fun(sp_style_filter_ref_changed), style)); + if (!href) { + if (style->object) { + href = new SPFilterReference(style->object); + } + // Do we have href now? + if ( href ) { + href->changedSignal().connect(sigc::bind(sigc::ptr_fun(sp_style_filter_ref_changed), style)); + } else { + std::cerr << "SPIFilter::read(): Could not allocate 'href'" << std::endl; + return; + } } + // We have href try { href->attach(Inkscape::URI(uri)); } catch (Inkscape::BadURIException &e) { diff --git a/src/style-internal.h b/src/style-internal.h index 9158ed60e..32792827a 100644 --- a/src/style-internal.h +++ b/src/style-internal.h @@ -104,22 +104,45 @@ static const unsigned SP_STYLE_FLAG_IFDIFF (1 << 1); */ /// Virtual base class for all SPStyle interal classes -class SPIBase { +class SPIBase +{ - public: +public: SPIBase( Glib::ustring const &name, bool inherits = true ) - : name(name), inherits(inherits), set(false), inherit(false), style_att(false), style(NULL) {}; - virtual ~SPIBase() {}; + : name(name), + inherits(inherits), + set(false), + inherit(false), + style_att(false), + style(NULL) + {} + + virtual ~SPIBase() + {} + virtual void read( gchar const *str ) = 0; - virtual void readIfUnset( gchar const *str ) { if( !set ) read( str ); } - virtual void readAttribute( Inkscape::XML::Node *repr ) { readIfUnset( repr->attribute( name.c_str() ) ); } + virtual void readIfUnset( gchar const *str ) { + if ( !set ) { + read( str ); + } + } + + virtual void readAttribute( Inkscape::XML::Node *repr ) { + readIfUnset( repr->attribute( name.c_str() ) ); + } + virtual const Glib::ustring write( guint const flags = SP_STYLE_FLAG_IFSET, SPIBase const *const base = NULL ) const = 0; - virtual void clear() { set = false, inherit = false; }; + virtual void clear() { + set = false, inherit = false; + } + virtual void cascade( const SPIBase* const parent ) = 0; virtual void merge( const SPIBase* const parent ) = 0; - virtual void setStylePointer( SPStyle *style_in ) { style = style_in; }; + virtual void setStylePointer( SPStyle *style_in ) { + style = style_in; + } // Explicit assignment operator required due to templates. SPIBase& operator=(const SPIBase& rhs) { @@ -133,11 +156,16 @@ class SPIBase { } // Check apples being compared to apples - virtual bool operator==(const SPIBase& rhs) { return (name == rhs.name); }; - virtual bool operator!=(const SPIBase& rhs) { return !(*this == rhs); }; + virtual bool operator==(const SPIBase& rhs) { + return (name == rhs.name); + } + + virtual bool operator!=(const SPIBase& rhs) { + return !(*this == rhs); + } // To do: make private - public: +public: Glib::ustring name; // Make const unsigned inherits : 1; // Property inherits by default from parent. unsigned set : 1; // Property has been explicitly set (vs. inherited). @@ -145,22 +173,35 @@ class SPIBase { unsigned style_att : 2; // Source (attribute, style attribute, style-sheet). NOT USED YET FIX ME // To do: make private after g_asserts removed - public: +public: SPStyle* style; // Used by SPIPaint, SPIFilter... to find values of other properties }; /// Float type internal to SPStyle. (Only 'stroke-miterlimit') -class SPIFloat : public SPIBase { - - public: - SPIFloat() : SPIBase( "anonymous_float" ), value(0.0) {}; - SPIFloat( Glib::ustring name, float value_default = 0.0 ) - : SPIBase( name ), value(value_default), value_default(value_default) {}; - virtual ~SPIFloat() {}; +class SPIFloat : public SPIBase +{ + +public: + SPIFloat() + : SPIBase( "anonymous_float" ), + value(0.0) + {} + + SPIFloat( Glib::ustring const &name, float value_default = 0.0 ) + : SPIBase( name ), + value(value_default), + value_default(value_default) + {} + + virtual ~SPIFloat() {} virtual void read( gchar const *str ); virtual const Glib::ustring write( guint const flags = SP_STYLE_FLAG_IFSET, SPIBase const *const base = NULL ) const; - virtual void clear() { SPIBase::clear(); value = value_default; }; + virtual void clear() { + SPIBase::clear(); + value = value_default; + } + virtual void cascade( const SPIBase* const parent ); virtual void merge( const SPIBase* const parent ); @@ -172,13 +213,15 @@ class SPIFloat : public SPIBase { } virtual bool operator==(const SPIBase& rhs); - virtual bool operator!=(const SPIBase& rhs) { return !(*this == rhs); }; + virtual bool operator!=(const SPIBase& rhs) { + return !(*this == rhs); + } // To do: make private - public: +public: float value; - private: +private: float value_default; }; @@ -214,17 +257,32 @@ static const unsigned SP_SCALE24_MAX = 0xff0000; /// 24 bit data type internal to SPStyle. // Used only for opacity, fill-opacity, stroke-opacity. // Opacity does not inherit but stroke-opacity and fill-opacity do. -class SPIScale24 : public SPIBase { +class SPIScale24 : public SPIBase +{ + +public: + SPIScale24() + : SPIBase( "anonymous_scale24" ), + value(0) + {} + + SPIScale24( Glib::ustring const &name, unsigned value = 0, bool inherits = true ) + : SPIBase( name, inherits ), + value(value), + value_default(value) + {} + + virtual ~SPIScale24() + {} - public: - SPIScale24() : SPIBase( "anonymous_scale24" ), value(0) {}; - SPIScale24( Glib::ustring name, unsigned value = 0, bool inherits = true ) - : SPIBase( name, inherits ), value(value), value_default(value) {}; - virtual ~SPIScale24() {}; virtual void read( gchar const *str ); virtual const Glib::ustring write( guint const flags = SP_STYLE_FLAG_IFSET, SPIBase const *const base = NULL ) const; - virtual void clear() { SPIBase::clear(); value = value_default; }; + virtual void clear() { + SPIBase::clear(); + value = value_default; + } + virtual void cascade( const SPIBase* const parent ); virtual void merge( const SPIBase* const parent ); @@ -236,14 +294,16 @@ class SPIScale24 : public SPIBase { } virtual bool operator==(const SPIBase& rhs); - virtual bool operator!=(const SPIBase& rhs) { return !(*this == rhs); }; + virtual bool operator!=(const SPIBase& rhs) { + return !(*this == rhs); + } // To do: make private - public: +public: unsigned value : 24; - private: +private: unsigned value_default : 24; }; @@ -265,17 +325,37 @@ enum SPCSSUnit { /// Length type internal to SPStyle. // Needs access to 'font-size' and 'font-family' for computed values. // Used for 'stroke-width' 'stroke-dash-offset' ('none' not handled), text-indent -class SPILength : public SPIBase { +class SPILength : public SPIBase +{ + +public: + SPILength() + : SPIBase( "anonymous_length" ), + unit(SP_CSS_UNIT_NONE), + value(0), + computed(0) + {} + + SPILength( Glib::ustring const &name, unsigned value = 0 ) + : SPIBase( name ), + unit(SP_CSS_UNIT_NONE), + value(value), + computed(value), + value_default(value) + {} + + virtual ~SPILength() + {} - public: - SPILength() : SPIBase( "anonymous_length" ), unit(SP_CSS_UNIT_NONE), value(0), computed(0) {}; - SPILength( Glib::ustring name, unsigned value = 0 ) - : SPIBase( name ), unit(SP_CSS_UNIT_NONE), value(value), computed(value), value_default(value) {}; - virtual ~SPILength() {}; virtual void read( gchar const *str ); virtual const Glib::ustring write( guint const flags = SP_STYLE_FLAG_IFSET, SPIBase const *const base = NULL ) const; - virtual void clear() { SPIBase::clear(); unit = SP_CSS_UNIT_NONE, value = value_default; computed = value_default; }; + virtual void clear() { + SPIBase::clear(); + unit = SP_CSS_UNIT_NONE, value = value_default; + computed = value_default; + } + virtual void cascade( const SPIBase* const parent ); virtual void merge( const SPIBase* const parent ); @@ -286,35 +366,51 @@ class SPILength : public SPIBase { computed = rhs.computed; value_default = rhs.value_default; return *this; - }; + } virtual bool operator==(const SPIBase& rhs); - virtual bool operator!=(const SPIBase& rhs) { return !(*this == rhs); }; + virtual bool operator!=(const SPIBase& rhs) { + return !(*this == rhs); + } // To do: make private - public: +public: unsigned unit : 4; float value; float computed; - private: +private: float value_default; }; /// Extended length type internal to SPStyle. // Used for: line-height, letter-spacing, word-spacing -class SPILengthOrNormal : public SPILength { +class SPILengthOrNormal : public SPILength +{ + +public: + SPILengthOrNormal() + : SPILength( "anonymous_length" ), + normal(true) + {} + + SPILengthOrNormal( Glib::ustring const &name, unsigned value = 0 ) + : SPILength( name, value ), + normal(true) + {} + + virtual ~SPILengthOrNormal() + {} - public: - SPILengthOrNormal() : SPILength( "anonymous_length" ), normal(true) {}; - SPILengthOrNormal( Glib::ustring name, unsigned value = 0 ) - : SPILength( name, value ), normal(true) {}; - virtual ~SPILengthOrNormal() {}; virtual void read( gchar const *str ); virtual const Glib::ustring write( guint const flags = SP_STYLE_FLAG_IFSET, SPIBase const *const base = NULL ) const; - virtual void clear() { SPILength::clear(); normal = true; }; + virtual void clear() { + SPILength::clear(); + normal = true; + } + virtual void cascade( const SPIBase* const parent ); virtual void merge( const SPIBase* const parent ); @@ -325,33 +421,59 @@ class SPILengthOrNormal : public SPILength { } virtual bool operator==(const SPIBase& rhs); - virtual bool operator!=(const SPIBase& rhs) { return !(*this == rhs); }; + virtual bool operator!=(const SPIBase& rhs) { + return !(*this == rhs); + } // To do: make private - public: +public: bool normal : 1; }; /// Enum type internal to SPStyle. // Used for many properties. 'font-stretch' and 'font-weight' must be special cased. -class SPIEnum : public SPIBase { +class SPIEnum : public SPIBase +{ - public: +public: SPIEnum() : - SPIBase( "anonymous_enum" ), enums( NULL ), value(0), computed(0) {}; - SPIEnum( Glib::ustring const name, SPStyleEnum const *enums, unsigned value = 0, bool inherits = true ) : - SPIBase( name, inherits ), enums( enums ), value(value), computed(value), - value_default(value), computed_default(value) {}; + SPIBase( "anonymous_enum" ), + enums( NULL ), + value(0), + computed(0) + {} + + SPIEnum( Glib::ustring const &name, SPStyleEnum const *enums, unsigned value = 0, bool inherits = true ) : + SPIBase( name, inherits ), + enums( enums ), + value(value), + computed(value), + value_default(value), + computed_default(value) + {} + // Following is needed for font-weight - SPIEnum( Glib::ustring name, SPStyleEnum const *enums, SPCSSFontWeight value, SPCSSFontWeight computed ) : - SPIBase( name ), enums( enums ), value(value), computed(computed), - value_default(value), computed_default(computed) {}; - virtual ~SPIEnum() {}; + SPIEnum( Glib::ustring const &name, SPStyleEnum const *enums, SPCSSFontWeight value, SPCSSFontWeight computed ) : + SPIBase( name ), + enums( enums ), + value(value), + computed(computed), + value_default(value), + computed_default(computed) + {} + + virtual ~SPIEnum() + {} + virtual void read( gchar const *str ); virtual const Glib::ustring write( guint const flags = SP_STYLE_FLAG_IFSET, SPIBase const *const base = NULL ) const; - virtual void clear() { SPIBase::clear(); value = value_default, computed = computed_default; }; + virtual void clear() { + SPIBase::clear(); + value = value_default, computed = computed_default; + } + virtual void cascade( const SPIBase* const parent ); virtual void merge( const SPIBase* const parent ); @@ -365,16 +487,18 @@ class SPIEnum : public SPIBase { } virtual bool operator==(const SPIBase& rhs); - virtual bool operator!=(const SPIBase& rhs) { return !(*this == rhs); }; + virtual bool operator!=(const SPIBase& rhs) { + return !(*this == rhs); + } // To do: make private - public: +public: SPStyleEnum const *enums; unsigned value : 8; unsigned computed: 8; - private: +private: unsigned value_default : 8; unsigned computed_default: 8; // for font-weight }; @@ -382,20 +506,31 @@ class SPIEnum : public SPIBase { /// String type internal to SPStyle. // Used for 'marker', ..., 'font', 'font-family', 'inkscape-font-specification' -class SPIString : public SPIBase { - - public: - SPIString() : - SPIBase( "anonymous_string" ), value(NULL) {}; - SPIString( Glib::ustring name, gchar* value_default_in = NULL ) : - SPIBase( name ) , value(NULL) , value_default(NULL) { - value_default = value_default_in?g_strdup(value_default_in):NULL; - }; - virtual ~SPIString() { g_free(value); g_free(value_default); }; +class SPIString : public SPIBase +{ + +public: + SPIString() + : SPIBase( "anonymous_string" ), + value(NULL) + {} + + // TODO probably want to avoid gchar* and c-style strings. + SPIString( Glib::ustring const &name, gchar const* value_default_in = NULL ) + : SPIBase( name ), + value(NULL), + value_default(value_default_in ? g_strdup(value_default_in) : NULL) + {} + + virtual ~SPIString() { + g_free(value); + g_free(value_default); + } + virtual void read( gchar const *str ); virtual const Glib::ustring write( guint const flags = SP_STYLE_FLAG_IFSET, SPIBase const *const base = NULL ) const; - virtual void clear(); + virtual void clear(); // TODO check about value and value_default virtual void cascade( const SPIBase* const parent ); virtual void merge( const SPIBase* const parent ); @@ -403,31 +538,50 @@ class SPIString : public SPIBase { SPIBase::operator=(rhs); g_free(value); g_free(value_default); - value = rhs.value?g_strdup(rhs.value):NULL; - value_default = rhs.value_default?g_strdup(rhs.value_default):NULL; + value = rhs.value ? g_strdup(rhs.value) : NULL; + value_default = rhs.value_default ? g_strdup(rhs.value_default) : NULL; return *this; } virtual bool operator==(const SPIBase& rhs); - virtual bool operator!=(const SPIBase& rhs) { return !(*this == rhs); }; + virtual bool operator!=(const SPIBase& rhs) { + return !(*this == rhs); + } // To do: make private, convert value to Glib::ustring - public: +public: gchar *value; gchar *value_default; }; /// Color type interal to SPStyle, FIXME Add string value to store SVG named color. -class SPIColor : public SPIBase { +class SPIColor : public SPIBase +{ + +public: + SPIColor() + : SPIBase( "anonymous_color" ), + currentcolor(false) { + value.color.set(0); + } + + SPIColor( Glib::ustring const &name ) + : SPIBase( name ), + currentcolor(false) { + value.color.set(0); + } + + virtual ~SPIColor() + {} - public: - SPIColor() : SPIBase( "anonymous_color" ), currentcolor(false) { value.color.set(0); } - SPIColor( Glib::ustring name ) : SPIBase( name ), currentcolor(false) { value.color.set(0); } - virtual ~SPIColor() {} virtual void read( gchar const *str ); virtual const Glib::ustring write( guint const flags = SP_STYLE_FLAG_IFSET, SPIBase const *const base = NULL ) const; - virtual void clear() { SPIBase::clear(); value.color.set(0); } + virtual void clear() { + SPIBase::clear(); + value.color.set(0); + } + virtual void cascade( const SPIBase* const parent ); virtual void merge( const SPIBase* const parent ); @@ -439,13 +593,23 @@ class SPIColor : public SPIBase { } virtual bool operator==(const SPIBase& rhs); - virtual bool operator!=(const SPIBase& rhs) { return !(*this == rhs); } + virtual bool operator!=(const SPIBase& rhs) { + return !(*this == rhs); + } - void setColor( float r, float g, float b ) { value.color.set( r, g, b ); } - void setColor( guint32 val ) { value.color.set( val ); } - void setColor( SPColor const& color ) { value.color = color; } + void setColor( float r, float g, float b ) { + value.color.set( r, g, b ); + } + + void setColor( guint32 val ) { + value.color.set( val ); + } + + void setColor( SPColor const& color ) { + value.color = color; + } - public: +public: bool currentcolor : 1; // FIXME: remove structure and derive SPIPaint from this class. struct { @@ -459,18 +623,28 @@ class SPIColor : public SPIBase { #define SP_STYLE_STROKE_SERVER(s) ((const_cast<SPStyle *> (s))->getStrokePaintServer()) /// Paint type internal to SPStyle. -class SPIPaint : public SPIBase { - - public: - SPIPaint() : SPIBase( "anonymous_paint" ), currentcolor(false), colorSet(false), noneSet(false) { +class SPIPaint : public SPIBase +{ + +public: + SPIPaint() + : SPIBase( "anonymous_paint" ), + currentcolor(false), + colorSet(false), + noneSet(false) { value.href = NULL; clear(); - }; - SPIPaint( Glib::ustring name ) - : SPIBase( name ), currentcolor(false), colorSet(false), noneSet(false) { + } + + SPIPaint( Glib::ustring const &name ) + : SPIBase( name ), + currentcolor(false), + colorSet(false), + noneSet(false) { value.href = NULL; clear(); // Sets defaults - }; + } + virtual ~SPIPaint(); // Clear and delete href. virtual void read( gchar const *str ); virtual void read( gchar const *str, SPStyle &style, SPDocument *document = 0); @@ -492,24 +666,46 @@ class SPIPaint : public SPIBase { } virtual bool operator==(const SPIBase& rhs); - virtual bool operator!=(const SPIBase& rhs) { return !(*this == rhs); }; + virtual bool operator!=(const SPIBase& rhs) { + return !(*this == rhs); + } + + bool isSameType( SPIPaint const & other ) const { + return (isPaintserver() == other.isPaintserver()) && (colorSet == other.colorSet) && (currentcolor == other.currentcolor); + } - bool isSameType( SPIPaint const & other ) const {return (isPaintserver() == other.isPaintserver()) && (colorSet == other.colorSet) && (currentcolor == other.currentcolor);} + bool isNoneSet() const { + return noneSet; + } + + bool isNone() const { + return !currentcolor && !colorSet && !isPaintserver(); + } // TODO refine + + bool isColor() const { + return colorSet && !isPaintserver(); + } - bool isNoneSet() const {return noneSet;} + bool isPaintserver() const { + return (value.href) ? value.href->getObject() : 0; + } - bool isNone() const {return !currentcolor && !colorSet && !isPaintserver();} // TODO refine - bool isColor() const {return colorSet && !isPaintserver();} - bool isPaintserver() const {return (value.href) ? value.href->getObject():0;} + void setColor( float r, float g, float b ) { + value.color.set( r, g, b ); colorSet = true; + } - void setColor( float r, float g, float b ) {value.color.set( r, g, b ); colorSet = true;} - void setColor( guint32 val ) {value.color.set( val ); colorSet = true;} - void setColor( SPColor const& color ) {value.color = color; colorSet = true;} + void setColor( guint32 val ) { + value.color.set( val ); colorSet = true; + } + void setColor( SPColor const& color ) { + value.color = color; colorSet = true; + } + void setNone() {noneSet = true; colorSet=false;} // To do: make private - public: +public: bool currentcolor : 1; bool colorSet : 1; bool noneSet : 1; @@ -536,11 +732,20 @@ enum SPPaintOrderLayer { const size_t PAINT_ORDER_LAYERS = 3; /// Paint order type internal to SPStyle -class SPIPaintOrder : public SPIBase { +class SPIPaintOrder : public SPIBase +{ + +public: + SPIPaintOrder() + : SPIBase( "paint-order" ), + value(NULL) { + this->clear(); + } + + virtual ~SPIPaintOrder() { + g_free( value ); + } - public: - SPIPaintOrder() : SPIBase( "paint-order" ), value(NULL) { this->clear(); }; - virtual ~SPIPaintOrder() { g_free( value ); }; virtual void read( gchar const *str ); virtual const Glib::ustring write( guint const flags = SP_STYLE_FLAG_IFSET, SPIBase const *const base = NULL ) const; @@ -568,11 +773,13 @@ class SPIPaintOrder : public SPIBase { } virtual bool operator==(const SPIBase& rhs); - virtual bool operator!=(const SPIBase& rhs) { return !(*this == rhs); }; + virtual bool operator!=(const SPIBase& rhs) { + return !(*this == rhs); + } // To do: make private - public: +public: SPPaintOrderLayer layer[PAINT_ORDER_LAYERS]; bool layer_set[PAINT_ORDER_LAYERS]; gchar *value; // Raw string @@ -580,15 +787,25 @@ class SPIPaintOrder : public SPIBase { /// Filter type internal to SPStyle -class SPIDashArray : public SPIBase { +class SPIDashArray : public SPIBase +{ + +public: + SPIDashArray() + : SPIBase( "stroke-dasharray" ) + {} // Only one instance of SPIDashArray + + virtual ~SPIDashArray() + {} - public: - SPIDashArray() : SPIBase( "stroke-dasharray" ) {}; // Only one instance of SPIDashArray - virtual ~SPIDashArray() {}; virtual void read( gchar const *str ); virtual const Glib::ustring write( guint const flags = SP_STYLE_FLAG_IFSET, SPIBase const *const base = NULL ) const; - virtual void clear() { SPIBase::clear(); values.clear(); }; + virtual void clear() { + SPIBase::clear(); + values.clear(); + } + virtual void cascade( const SPIBase* const parent ); virtual void merge( const SPIBase* const parent ); @@ -599,19 +816,26 @@ class SPIDashArray : public SPIBase { } virtual bool operator==(const SPIBase& rhs); - virtual bool operator!=(const SPIBase& rhs) { return !(*this == rhs); }; + virtual bool operator!=(const SPIBase& rhs) { + return !(*this == rhs); + } // To do: make private, change double to SVGLength - public: +public: std::vector<double> values; }; /// Filter type internal to SPStyle -class SPIFilter : public SPIBase { +class SPIFilter : public SPIBase +{ + +public: + SPIFilter() + : SPIBase( "filter", false ), + href(NULL) + {} - public: - SPIFilter() : SPIBase( "filter", false ), href(NULL) {}; virtual ~SPIFilter(); virtual void read( gchar const *str ); virtual const Glib::ustring write( guint const flags = SP_STYLE_FLAG_IFSET, @@ -627,10 +851,12 @@ class SPIFilter : public SPIBase { } virtual bool operator==(const SPIBase& rhs); - virtual bool operator!=(const SPIBase& rhs) { return !(*this == rhs); }; + virtual bool operator!=(const SPIBase& rhs) { + return !(*this == rhs); + } // To do: make private - public: +public: SPFilterReference *href; }; @@ -643,16 +869,27 @@ enum { }; /// Fontsize type internal to SPStyle (also used by libnrtype/Layout-TNG-Input.cpp). -class SPIFontSize : public SPIBase { +class SPIFontSize : public SPIBase +{ + +public: + SPIFontSize() + : SPIBase( "font-size" ) { + this->clear(); + } + + virtual ~SPIFontSize() + {} - public: - SPIFontSize() : SPIBase( "font-size" ) { this->clear(); }; - virtual ~SPIFontSize() {}; virtual void read( gchar const *str ); virtual const Glib::ustring write( guint const flags = SP_STYLE_FLAG_IFSET, SPIBase const *const base = NULL ) const; - virtual void clear() { SPIBase::clear(); type = SP_FONT_SIZE_LITERAL, unit = SP_CSS_UNIT_NONE, - literal = SP_CSS_FONT_SIZE_MEDIUM, value = 12.0, computed = 12.0; } + virtual void clear() { + SPIBase::clear(); + type = SP_FONT_SIZE_LITERAL, unit = SP_CSS_UNIT_NONE, + literal = SP_CSS_FONT_SIZE_MEDIUM, value = 12.0, computed = 12.0; + } + virtual void cascade( const SPIBase* const parent ); virtual void merge( const SPIBase* const parent ); @@ -667,39 +904,51 @@ class SPIFontSize : public SPIBase { } virtual bool operator==(const SPIBase& rhs); - virtual bool operator!=(const SPIBase& rhs) { return !(*this == rhs); }; + virtual bool operator!=(const SPIBase& rhs) { + return !(*this == rhs); + } - public: +public: static float const font_size_default; // To do: make private - public: +public: unsigned type : 2; unsigned unit : 4; unsigned literal : 4; float value; float computed; - private: +private: double relative_fraction() const; static float const font_size_table[]; }; /// Font type internal to SPStyle ('font' shorthand) -class SPIFont : public SPIBase { +class SPIFont : public SPIBase +{ + +public: + SPIFont() + : SPIBase( "font" ) + {} + + virtual ~SPIFont() + {} - public: - SPIFont() : SPIBase( "font" ) {}; - virtual ~SPIFont() {}; virtual void read( gchar const *str ); virtual const Glib::ustring write( guint const flags = SP_STYLE_FLAG_IFSET, SPIBase const *const base = NULL ) const; virtual void clear() { SPIBase::clear(); - }; - virtual void cascade( const SPIBase* const parent ) { (void)parent; }; // Done in dependent properties - virtual void merge( const SPIBase* const parent ) { (void)parent; }; + } + + virtual void cascade( const SPIBase* const /*parent*/ ) + {} // Done in dependent properties + + virtual void merge( const SPIBase* const /*parent*/ ) + {} SPIFont& operator=(const SPIFont& rhs) { SPIBase::operator=(rhs); @@ -707,7 +956,9 @@ class SPIFont : public SPIBase { } virtual bool operator==(const SPIBase& rhs); - virtual bool operator!=(const SPIBase& rhs) { return !(*this == rhs); }; + virtual bool operator!=(const SPIBase& rhs) { + return !(*this == rhs); + } }; @@ -718,16 +969,27 @@ enum { }; /// Baseline shift type internal to SPStyle. (This is actually just like SPIFontSize) -class SPIBaselineShift : public SPIBase { +class SPIBaselineShift : public SPIBase +{ + +public: + SPIBaselineShift() + : SPIBase( "baseline-shift", false ) { + this->clear(); + } + + virtual ~SPIBaselineShift() + {} - public: - SPIBaselineShift() : SPIBase( "baseline-shift", false ) { this->clear(); }; - virtual ~SPIBaselineShift() {}; virtual void read( gchar const *str ); virtual const Glib::ustring write( guint const flags = SP_STYLE_FLAG_IFSET, SPIBase const *const base = NULL ) const; - virtual void clear() { SPIBase::clear(); type=SP_BASELINE_SHIFT_LITERAL, unit=SP_CSS_UNIT_NONE, - literal = SP_CSS_BASELINE_SHIFT_BASELINE, value = 0.0, computed = 0.0; } + virtual void clear() { + SPIBase::clear(); + type=SP_BASELINE_SHIFT_LITERAL, unit=SP_CSS_UNIT_NONE, + literal = SP_CSS_BASELINE_SHIFT_BASELINE, value = 0.0, computed = 0.0; + } + virtual void cascade( const SPIBase* const parent ); virtual void merge( const SPIBase* const parent ); @@ -743,11 +1005,14 @@ class SPIBaselineShift : public SPIBase { // This is not used but we have it for completeness, it has not been tested. virtual bool operator==(const SPIBase& rhs); - virtual bool operator!=(const SPIBase& rhs) { return !(*this == rhs); }; + virtual bool operator!=(const SPIBase& rhs) { + return !(*this == rhs); + } + bool isZero() const; // To do: make private - public: +public: unsigned type : 2; unsigned unit : 4; unsigned literal: 2; @@ -760,15 +1025,26 @@ class SPIBaselineShift : public SPIBase { // CSS3 2.2 /// Text decoration line type internal to SPStyle. THIS SHOULD BE A GENERIC CLASS -class SPITextDecorationLine : public SPIBase { +class SPITextDecorationLine : public SPIBase +{ + +public: + SPITextDecorationLine() + : SPIBase( "text-decoration-line" ) { + this->clear(); + } + + virtual ~SPITextDecorationLine() + {} - public: - SPITextDecorationLine() : SPIBase( "text-decoration-line" ) { this->clear(); }; - virtual ~SPITextDecorationLine() {}; virtual void read( gchar const *str ); virtual const Glib::ustring write( guint const flags = SP_STYLE_FLAG_IFSET, SPIBase const *const base = NULL ) const; - virtual void clear() { SPIBase::clear(); underline = false, overline = false, line_through = false, blink = false; } + virtual void clear() { + SPIBase::clear(); + underline = false, overline = false, line_through = false, blink = false; + } + virtual void cascade( const SPIBase* const parent ); virtual void merge( const SPIBase* const parent ); @@ -782,10 +1058,12 @@ class SPITextDecorationLine : public SPIBase { } virtual bool operator==(const SPIBase& rhs); - virtual bool operator!=(const SPIBase& rhs) { return !(*this == rhs); }; + virtual bool operator!=(const SPIBase& rhs) { + return !(*this == rhs); + } // To do: make private - public: +public: bool underline : 1; bool overline : 1; bool line_through : 1; @@ -794,15 +1072,26 @@ class SPITextDecorationLine : public SPIBase { // CSS3 2.2 /// Text decoration style type internal to SPStyle. THIS SHOULD JUST BE SPIEnum! -class SPITextDecorationStyle : public SPIBase { +class SPITextDecorationStyle : public SPIBase +{ + +public: + SPITextDecorationStyle() + : SPIBase( "text-decoration-style" ) { + this->clear(); + } + + virtual ~SPITextDecorationStyle() + {} - public: - SPITextDecorationStyle() : SPIBase( "text-decoration-style" ) { this->clear(); }; - virtual ~SPITextDecorationStyle() {}; virtual void read( gchar const *str ); virtual const Glib::ustring write( guint const flags = SP_STYLE_FLAG_IFSET, SPIBase const *const base = NULL ) const; - virtual void clear() { SPIBase::clear(); solid = true, isdouble = false, dotted = false, dashed = false, wavy = false; } + virtual void clear() { + SPIBase::clear(); + solid = true, isdouble = false, dotted = false, dashed = false, wavy = false; + } + virtual void cascade( const SPIBase* const parent ); virtual void merge( const SPIBase* const parent ); @@ -817,10 +1106,12 @@ class SPITextDecorationStyle : public SPIBase { } virtual bool operator==(const SPIBase& rhs); - virtual bool operator!=(const SPIBase& rhs) { return !(*this == rhs); }; + virtual bool operator!=(const SPIBase& rhs) { + return !(*this == rhs); + } // To do: make private - public: +public: bool solid : 1; bool isdouble : 1; // cannot use "double" as it is a reserved keyword bool dotted : 1; @@ -837,18 +1128,26 @@ class SPITextDecorationStyle : public SPIBase { // the right style. (See http://www.w3.org/TR/css-text-decor-3/#text-decoration-property ) /// Text decoration type internal to SPStyle. -class SPITextDecoration : public SPIBase { +class SPITextDecoration : public SPIBase +{ + +public: + SPITextDecoration() + : SPIBase( "text-decoration" ), + style_td( NULL ) + {} + + virtual ~SPITextDecoration() + {} - public: - SPITextDecoration() : SPIBase( "text-decoration" ), style_td( NULL ) {}; - virtual ~SPITextDecoration() {}; virtual void read( gchar const *str ); virtual const Glib::ustring write( guint const flags = SP_STYLE_FLAG_IFSET, SPIBase const *const base = NULL ) const; virtual void clear() { SPIBase::clear(); style_td = NULL; - }; + } + virtual void cascade( const SPIBase* const parent ); virtual void merge( const SPIBase* const parent ); @@ -859,9 +1158,11 @@ class SPITextDecoration : public SPIBase { // Use CSS2 value virtual bool operator==(const SPIBase& rhs); - virtual bool operator!=(const SPIBase& rhs) { return !(*this == rhs); }; + virtual bool operator!=(const SPIBase& rhs) { + return !(*this == rhs); + } - public: +public: SPStyle* style_td; // Style to be used for drawing CSS2 text decorations }; diff --git a/src/style.cpp b/src/style.cpp index 66672e949..e0c8536fc 100644 --- a/src/style.cpp +++ b/src/style.cpp @@ -440,6 +440,8 @@ SPStyle::~SPStyle() { // Remove connections release_connection.disconnect(); + fill_ps_changed_connection.disconnect(); + stroke_ps_changed_connection.disconnect(); // The following shoud be moved into SPIPaint and SPIFilter if (fill.value.href) { @@ -499,10 +501,10 @@ SPStyle::clear() { filter.href->changedSignal().connect(sigc::bind(sigc::ptr_fun(sp_style_filter_ref_changed), this)); fill.value.href = new SPPaintServerReference(document); - fill.value.href->changedSignal().connect(sigc::bind(sigc::ptr_fun(sp_style_fill_paint_server_ref_changed), this)); + fill_ps_changed_connection = fill.value.href->changedSignal().connect(sigc::bind(sigc::ptr_fun(sp_style_fill_paint_server_ref_changed), this)); stroke.value.href = new SPPaintServerReference(document); - stroke.value.href->changedSignal().connect(sigc::bind(sigc::ptr_fun(sp_style_stroke_paint_server_ref_changed), this)); + stroke_ps_changed_connection = stroke.value.href->changedSignal().connect(sigc::bind(sigc::ptr_fun(sp_style_stroke_paint_server_ref_changed), this)); } cloned = false; @@ -1118,6 +1120,7 @@ sp_style_fill_paint_server_ref_changed(SPObject *old_ref, SPObject *ref, SPStyle ref->connectModified(sigc::bind(sigc::ptr_fun(&sp_style_paint_server_ref_modified), style)); } + style->signal_fill_ps_changed.emit(old_ref, ref); sp_style_paint_server_ref_modified(ref, 0, style); } @@ -1135,6 +1138,7 @@ sp_style_stroke_paint_server_ref_changed(SPObject *old_ref, SPObject *ref, SPSty ref->connectModified(sigc::bind(sigc::ptr_fun(&sp_style_paint_server_ref_modified), style)); } + style->signal_stroke_ps_changed.emit(old_ref, ref); sp_style_paint_server_ref_modified(ref, 0, style); } @@ -1363,7 +1367,11 @@ sp_style_set_ipaint_to_uri(SPStyle *style, SPIPaint *paint, const Inkscape::URI // now that we have a document, we can create it here if (!paint->value.href && document) { paint->value.href = new SPPaintServerReference(document); - paint->value.href->changedSignal().connect(sigc::bind(sigc::ptr_fun((paint == &style->fill)? sp_style_fill_paint_server_ref_changed : sp_style_stroke_paint_server_ref_changed), style)); + if (paint == &style->fill) { + style->fill_ps_changed_connection = paint->value.href->changedSignal().connect(sigc::bind(sigc::ptr_fun(sp_style_fill_paint_server_ref_changed), style)); + } else { + style->stroke_ps_changed_connection = paint->value.href->changedSignal().connect(sigc::bind(sigc::ptr_fun(sp_style_stroke_paint_server_ref_changed), style)); + } } if (paint->value.href){ diff --git a/src/style.h b/src/style.h index 48eb55430..a4c2b3043 100644 --- a/src/style.h +++ b/src/style.h @@ -252,6 +252,22 @@ public: sigc::connection filter_modified_connection; sigc::connection fill_ps_modified_connection; sigc::connection stroke_ps_modified_connection; + sigc::connection fill_ps_changed_connection; + sigc::connection stroke_ps_changed_connection; + + /** + * Emitted when paint server object, fill paint refers to, is changed. That is + * when the reference starts pointing to a different address in memory. + * + * NB It is different from fill_ps_modified signal. When paint server is modified + * it means some of it's attributes or chilren change. + */ + sigc::signal<void, SPObject *, SPObject *> signal_fill_ps_changed; + /** + * Emitted when paint server object, fill paint refers to, is changed. That is + * when the reference starts pointing to a different address in memory. + */ + sigc::signal<void, SPObject *, SPObject *> signal_stroke_ps_changed; SPObject *getFilter() { return (filter.href) ? filter.href->getObject() : NULL; } SPObject const *getFilter() const { return (filter.href) ? filter.href->getObject() : NULL; } diff --git a/src/svg/CMakeLists.txt b/src/svg/CMakeLists.txt index 968287895..f9d0bc52d 100644 --- a/src/svg/CMakeLists.txt +++ b/src/svg/CMakeLists.txt @@ -7,6 +7,7 @@ set(svg_SRC strip-trailing-zeros.cpp svg-affine.cpp svg-color.cpp + svg-angle.cpp svg-length.cpp svg-path.cpp # test-stubs.cpp @@ -24,6 +25,7 @@ set(svg_SRC svg-color-test.h svg-color.h svg-icc-color.h + svg-angle.h svg-length-test.h svg-length.h svg-path-geom-test.h diff --git a/src/svg/Makefile_insert b/src/svg/Makefile_insert index cf9bf3fbb..4f82bdd76 100644 --- a/src/svg/Makefile_insert +++ b/src/svg/Makefile_insert @@ -13,6 +13,8 @@ ink_common_sources += \ svg/svg-color.cpp \ svg/svg-color.h \ svg/svg-icc-color.h \ + svg/svg-angle.cpp \ + svg/svg-angle.h \ svg/svg-length.cpp \ svg/svg-length.h \ svg/svg-path.cpp \ diff --git a/src/svg/svg-angle.cpp b/src/svg/svg-angle.cpp new file mode 100644 index 000000000..63152368e --- /dev/null +++ b/src/svg/svg-angle.cpp @@ -0,0 +1,136 @@ +/** + * \file src/svg/svg-angle.cpp + * \brief SVG angle type + */ +/* + * Authors: + * Tomasz Boczkowski <penginsbacon@gmail.com> + * + * Copyright (C) 1999-2002 Lauris Kaplinski + * Copyright (C) 2000-2001 Ximian, Inc. + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <cstring> +#include <string> +#include <math.h> +#include <glib.h> + +#include "svg.h" +#include "stringstream.h" +#include "svg/svg-angle.h" +#include "util/units.h" + + +static bool sp_svg_angle_read_lff(gchar const *str, SVGAngle::Unit &unit, float &val, float &computed); + +SVGAngle::SVGAngle() + : _set(false) + , unit(NONE) + , value(0) + , computed(0) +{ +} + +/* Angle */ + +bool SVGAngle::read(gchar const *str) +{ + if (!str) { + return false; + } + + SVGAngle::Unit u; + float v; + float c; + if (!sp_svg_angle_read_lff(str, u, v, c)) { + return false; + } + + _set = true; + unit = u; + value = v; + computed = c; + + return true; +} + +void SVGAngle::unset(SVGAngle::Unit u, float v, float c) { + _set = false; + unit = u; + value = v; + computed = c; +} + +void SVGAngle::readOrUnset(gchar const *str, Unit u, float v, float c) { + if (!read(str)) { + unset(u, v, c); + } +} + +static bool sp_svg_angle_read_lff(gchar const *str, SVGAngle::Unit &unit, float &val, float &computed) +{ + if (!str) { + return false; + } + + gchar const *e; + float const v = g_ascii_strtod(str, (char **) &e); + if (e == str) { + return false; + } + + if (!e[0]) { + /* Unitless (defaults to degrees)*/ + unit = SVGAngle::NONE; + val = v; + computed = v; + return true; + } else if (!g_ascii_isalnum(e[0])) { + if (g_ascii_isspace(e[0]) && e[1] && g_ascii_isalpha(e[1])) { + return false; // spaces between value and unit are not allowed + } else { + /* Unitless (defaults to degrees)*/ + unit = SVGAngle::NONE; + val = v; + computed = v; + return true; + } + } else { + if (strncmp(e, "deg", 3) == 0) { + unit = SVGAngle::DEG; + computed = v; + } else if (strncmp(e, "grad", 4) == 0) { + unit = SVGAngle::GRAD; + computed = Inkscape::Util::Quantity::convert(v, "grad", "°"); + } else if (strncmp(e, "rad", 3) == 0) { + unit = SVGAngle::RAD; + computed = Inkscape::Util::Quantity::convert(v, "rad", "°"); + } else if (strncmp(e, "turn", 4) == 0) { + unit = SVGAngle::TURN; + computed = Inkscape::Util::Quantity::convert(v, "turn", "°"); + } else { + return false; + } + return true; + } + + /* Invalid */ + return false; +} + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/src/svg/svg-angle.h b/src/svg/svg-angle.h new file mode 100644 index 000000000..966491174 --- /dev/null +++ b/src/svg/svg-angle.h @@ -0,0 +1,69 @@ +#ifndef SEEN_SP_SVG_ANGLE_H +#define SEEN_SP_SVG_ANGLE_H + +/** + * \file src/svg/svg-angle.h + * \brief SVG angle type + */ +/* + * Authors: + * Tomasz Boczkowski <penginsbacon@gmail.com> + * + * Copyright (C) 1999-2002 Lauris Kaplinski + * Copyright (C) 2000-2001 Ximian, Inc. + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include <glib.h> + +class SVGAngle +{ +public: + SVGAngle(); + + enum Unit { + NONE, + DEG, + GRAD, + RAD, + TURN, + LAST_UNIT = TURN + }; + + // The object's value is valid / exists in SVG. + bool _set; + + // The unit of value. + Unit unit; + + // The value of this SVGAngle as found in the SVG. + float value; + + // The value in degrees. + float computed; + + float operator=(float v) { + _set = true; + unit = NONE; + value = computed = v; + return v; + } + + bool read(gchar const *str); + void unset(Unit u = NONE, float v = 0, float c = 0); + void readOrUnset(gchar const *str, Unit u = NONE, float v = 0, float c = 0); +}; + +#endif // SEEN_SP_SVG_ANGLE_H + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/src/svg/svg-color.cpp b/src/svg/svg-color.cpp index 5108b7702..c9f22f8a4 100644 --- a/src/svg/svg-color.cpp +++ b/src/svg/svg-color.cpp @@ -511,18 +511,18 @@ sp_svg_create_color_hash() void icc_color_to_sRGB(SVGICCColor* icc, guchar* r, guchar* g, guchar* b) { - guchar color_out[4]; - guchar color_in[4]; if (icc) { g_message("profile name: %s", icc->colorProfile.c_str()); Inkscape::ColorProfile* prof = SP_ACTIVE_DOCUMENT->profileManager->find(icc->colorProfile.c_str()); if ( prof ) { + guchar color_out[4] = {0,0,0,0}; cmsHTRANSFORM trans = prof->getTransfToSRGB8(); if ( trans ) { std::vector<colorspace::Component> comps = colorspace::getColorSpaceInfo( prof ); size_t count = CMSSystem::getChannelCount( prof ); size_t cap = std::min(count, comps.size()); + guchar color_in[4]; for (size_t i = 0; i < cap; i++) { color_in[i] = static_cast<guchar>((((gdouble)icc->colors[i]) * 256.0) * (gdouble)comps[i].scale); g_message("input[%d]: %d", (int)i, (int)color_in[i]); diff --git a/src/ui/dialog/clonetiler.cpp b/src/ui/dialog/clonetiler.cpp index 8d3d2b57c..5ac2ef29d 100644 --- a/src/ui/dialog/clonetiler.cpp +++ b/src/ui/dialog/clonetiler.cpp @@ -2235,7 +2235,11 @@ void CloneTiler::clonetiler_apply(GtkWidget */*widget*/, GtkWidget *dlg) gdk_window_process_all_updates(); SPObject *obj = selection->singleItem(); - SPItem *item = SP_IS_ITEM(obj) ? SP_ITEM(obj) : 0; + if (!obj) { + // Should never happen (empty selection checked above). + std::cerr << "CloneTiler::clonetile_apply(): No object in single item selection!!!" << std::endl; + return; + } Inkscape::XML::Node *obj_repr = obj->getRepr(); const char *id_href = g_strdup_printf("#%s", obj_repr->attribute("id")); SPObject *parent = obj->parent; @@ -2326,6 +2330,7 @@ void CloneTiler::clonetiler_apply(GtkWidget */*widget*/, GtkWidget *dlg) bool invert_picked = prefs->getBool(prefs_path + "invert_picked"); double gamma_picked = prefs->getDoubleLimited(prefs_path + "gamma_picked", 0, -10, 10); + SPItem *item = SP_IS_ITEM(obj) ? SP_ITEM(obj) : 0; if (dotrace) { clonetiler_trace_setup (sp_desktop_document(desktop), 1.0, item); } diff --git a/src/ui/dialog/symbols.cpp b/src/ui/dialog/symbols.cpp index 76532eb7e..647753c4f 100644 --- a/src/ui/dialog/symbols.cpp +++ b/src/ui/dialog/symbols.cpp @@ -62,8 +62,20 @@ #include "widgets/icon.h" #ifdef WITH_LIBVISIO -#include <libvisio/libvisio.h> -#include <libwpd-stream/libwpd-stream.h> + #include <libvisio/libvisio.h> + + // TODO: Drop this check when librevenge is widespread. + #if WITH_LIBVISIO01 + #include <librevenge-stream/librevenge-stream.h> + + using librevenge::RVNGFileStream; + using librevenge::RVNGStringVector; + #else + #include <libwpd-stream/libwpd-stream.h> + + typedef WPXFileStream RVNGFileStream; + typedef libvisio::VSDStringVector RVNGStringVector; + #endif #endif #include "verbs.h" @@ -495,14 +507,20 @@ void SymbolsDialog::iconChanged() { // Read Visio stencil files SPDocument* read_vss( gchar* fullname, gchar* filename ) { - WPXFileStream input(fullname); + RVNGFileStream input(fullname); if (!libvisio::VisioDocument::isSupported(&input)) { return NULL; } - libvisio::VSDStringVector output; + RVNGStringVector output; +#if WITH_LIBVISIO01 + librevenge::RVNGSVGDrawingGenerator generator(output, "svg"); + + if (!libvisio::VisioDocument::parseStencils(&input, &generator)) { +#else if (!libvisio::VisioDocument::generateSVGStencils(&input, output)) { +#endif return NULL; } diff --git a/src/ui/dialog/template-widget.cpp b/src/ui/dialog/template-widget.cpp index 9758b35ac..f79d166f2 100644 --- a/src/ui/dialog/template-widget.cpp +++ b/src/ui/dialog/template-widget.cpp @@ -24,6 +24,7 @@ #include "document.h" #include "document-undo.h" #include "file.h" +#include "sp-namedview.h" #include "extension/implementation/implementation.h" #include "inkscape.h" @@ -69,7 +70,10 @@ void TemplateWidget::create() _current_template.tpl_effect->effect(desc); DocumentUndo::clearUndo(sp_desktop_document(desc)); sp_desktop_document(desc)->setModifiedSinceSave(false); - + + // Apply cx,cy etc. from document + sp_namedview_window_from_document( desc ); + if (desktop) desktop->clearWaitingCursor(); } diff --git a/src/ui/widget/highlight-picker.cpp b/src/ui/widget/highlight-picker.cpp index bc6bdcf22..8593f0bdf 100644 --- a/src/ui/widget/highlight-picker.cpp +++ b/src/ui/widget/highlight-picker.cpp @@ -7,15 +7,8 @@ * Released under GNU GPL, read the file 'COPYING' for more information */ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - +#include <glibmm.h> #include <gtkmm/icontheme.h> - -#if GLIBMM_DISABLE_DEPRECATED && HAVE_GLIBMM_THREADS_H -#include <glibmm/threads.h> -#endif #include "display/cairo-utils.h" diff --git a/src/ui/widget/insertordericon.cpp b/src/ui/widget/insertordericon.cpp index 97aa30aa6..a28b0f834 100644 --- a/src/ui/widget/insertordericon.cpp +++ b/src/ui/widget/insertordericon.cpp @@ -9,14 +9,6 @@ #include "ui/widget/insertordericon.h" -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#if GLIBMM_DISABLE_DEPRECATED && HAVE_GLIBMM_THREADS_H -#include <glibmm/threads.h> -#endif - #include <gtkmm/icontheme.h> #include "widgets/icon.h" diff --git a/src/ui/widget/insertordericon.h b/src/ui/widget/insertordericon.h index e6c2e1c5b..fb3412d3f 100644 --- a/src/ui/widget/insertordericon.h +++ b/src/ui/widget/insertordericon.h @@ -10,12 +10,12 @@ */ #if HAVE_CONFIG_H -#include "config.h" +# include "config.h" #endif +#include <glibmm.h> #include <gtkmm/cellrendererpixbuf.h> #include <gtkmm/widget.h> -#include <glibmm/property.h> namespace Inkscape { namespace UI { diff --git a/src/ui/widget/selected-style.cpp b/src/ui/widget/selected-style.cpp index d3adb6307..d22c59aa4 100644 --- a/src/ui/widget/selected-style.cpp +++ b/src/ui/widget/selected-style.cpp @@ -1220,7 +1220,9 @@ void SelectedStyle::on_opacity_menu (Gtk::Menu *menu) { menu->show_all(); } -void SelectedStyle::on_opacity_changed () { +void SelectedStyle::on_opacity_changed () +{ + g_return_if_fail(_desktop); // TODO this shouldn't happen! if (_opacity_blocked) return; _opacity_blocked = true; diff --git a/src/viewbox.cpp b/src/viewbox.cpp index f59909abc..662b05686 100644 --- a/src/viewbox.cpp +++ b/src/viewbox.cpp @@ -164,16 +164,17 @@ void SPViewBox::set_preserveAspectRatio(const gchar* value) { void SPViewBox::apply_viewbox(const Geom::Rect& in) { /* Determine actual viewbox in viewport coordinates */ - double x = 0.0; - double y = 0.0; - double width = in.width(); - double height = in.height(); + /* These are floats since SVGLength is a float: See bug 1374614 */ + float x = 0.0; + float y = 0.0; + float width = in.width(); + float height = in.height(); // std::cout << " width: " << width << " height: " << height << std::endl; if (this->aspect_align != SP_ASPECT_NONE) { /* Things are getting interesting */ - double scalex = in.width() / this->viewBox.width(); - double scaley = in.height() / this->viewBox.height(); + double scalex = in.width() / ((float) this->viewBox.width()); + double scaley = in.height() / ((float) this->viewBox.height()); double scale = (this->aspect_clip == SP_ASPECT_MEET) ? MIN (scalex, scaley) : MAX (scalex, scaley); width = this->viewBox.width() * scale; height = this->viewBox.height() * scale; @@ -217,12 +218,12 @@ void SPViewBox::apply_viewbox(const Geom::Rect& in) { /* Viewbox transform from scale and position */ Geom::Affine q; - q[0] = width / this->viewBox.width(); + q[0] = width / ((float) this->viewBox.width()); q[1] = 0.0; q[2] = 0.0; - q[3] = height / this->viewBox.height(); - q[4] = x - q[0] * this->viewBox.left(); - q[5] = y - q[3] * this->viewBox.top(); + q[3] = height / ((float) this->viewBox.height()); + q[4] = x - q[0] * ((float) this->viewBox.left()); + q[5] = y - q[3] * ((float) this->viewBox.top()); // std::cout << " q\n" << q << std::endl; diff --git a/src/widgets/ink-comboboxentry-action.cpp b/src/widgets/ink-comboboxentry-action.cpp index 5c59f6961..1114d2cdb 100644 --- a/src/widgets/ink-comboboxentry-action.cpp +++ b/src/widgets/ink-comboboxentry-action.cpp @@ -389,7 +389,7 @@ GtkWidget* create_tool_item( GtkAction* action ) GtkTreeViewRowSeparatorFunc (ink_comboboxentry_action->separator_func), NULL, NULL ); } - + // FIXME: once gtk3 migration is done this can be removed // https://bugzilla.gnome.org/show_bug.cgi?id=734915 gtk_widget_show_all (comboBoxEntry); diff --git a/src/widgets/stroke-style.cpp b/src/widgets/stroke-style.cpp index 3fa39da6f..cb18207f4 100644 --- a/src/widgets/stroke-style.cpp +++ b/src/widgets/stroke-style.cpp @@ -763,6 +763,9 @@ StrokeStyle::setJoinType (unsigned const jointype) tb = joinBevel; break; default: + // Should not happen + std::cerr << "StrokeStyle::setJoinType(): Invalid value" << std::endl; + tb = joinMiter; break; } setJoinButtons(tb); @@ -786,6 +789,9 @@ StrokeStyle::setCapType (unsigned const captype) tb = capSquare; break; default: + // Should not happen + std::cerr << "StrokeStyle::setCapType(): Invalid value" << std::endl; + tb = capButt; break; } setCapButtons(tb); diff --git a/src/xml/node-event-vector.h b/src/xml/node-event-vector.h index 416640b86..16add2960 100644 --- a/src/xml/node-event-vector.h +++ b/src/xml/node-event-vector.h @@ -58,11 +58,7 @@ struct NodeEventVector { void (* attr_changed) (Node *repr, char const *key, char const *oldval, char const *newval, bool is_interactive, void* data); void (* content_changed) (Node *repr, char const *oldcontent, char const *newcontent, void * data); void (* order_changed) (Node *repr, Node *child, Node *oldref, Node *newref, void* data); -} -#ifdef __GNUC__ -__attribute__((deprecated)) -#endif -; +}; } } diff --git a/src/xml/repr-io.cpp b/src/xml/repr-io.cpp index 0319bb5e3..a4146f215 100644 --- a/src/xml/repr-io.cpp +++ b/src/xml/repr-io.cpp @@ -623,7 +623,6 @@ static Node *sp_repr_svg_read_node (Document *xml_doc, xmlNodePtr node, const gc repr->setContent(reinterpret_cast<gchar*>(node->content)); } - child = node->xmlChildrenNode; for (child = node->xmlChildrenNode; child != NULL; child = child->next) { Node *crepr = sp_repr_svg_read_node (xml_doc, child, default_ns, prefix_map); if (crepr) { |
