summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiam P. White <inkscapebrony@gmail.com>2014-10-18 21:44:39 +0000
committerLiam P. White <inkscapebrony@gmail.com>2014-10-18 21:44:39 +0000
commit68136c8b24a6995976db963a790207858e9baba5 (patch)
tree550e81af7c8d626ec80a2be5efec66dd10d84bc4
parentUpdate to experimental r13598 (diff)
parentUpdate to trunk r13621 (diff)
downloadinkscape-68136c8b24a6995976db963a790207858e9baba5.tar.gz
inkscape-68136c8b24a6995976db963a790207858e9baba5.zip
Update to experimental r13619
(bzr r13341.5.18)
-rw-r--r--.bzrignore5
-rw-r--r--Info.plist.in10
-rw-r--r--Makefile.am408
-rw-r--r--_clang-format2
-rw-r--r--configure.ac83
-rw-r--r--jenkins/jenkins-gtk2.sh8
-rw-r--r--jenkins/jenkins-scanbuild.sh13
-rw-r--r--packaging/macosx/README.txt31
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/application-exit.pngbin0 -> 647 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/dialog-information.pngbin0 -> 879 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-new.pngbin0 -> 569 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-open-recent.pngbin0 -> 892 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-open.pngbin0 -> 492 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-print-preview.pngbin0 -> 733 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-print.pngbin0 -> 525 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-properties.pngbin0 -> 794 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-revert-ltr.pngbin0 -> 800 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-revert-rtl.pngbin0 -> 794 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-save-as.pngbin0 -> 770 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-save.pngbin0 -> 652 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/drive-harddisk.pngbin0 -> 832 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-clear.pngbin0 -> 695 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-copy.pngbin0 -> 498 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-cut.pngbin0 -> 876 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-delete.pngbin0 -> 866 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-find-replace.pngbin0 -> 875 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-find.pngbin0 -> 788 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-paste.pngbin0 -> 561 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-redo-ltr.pngbin0 -> 790 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-redo-rtl.pngbin0 -> 808 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-select-all.pngbin0 -> 547 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-undo-ltr.pngbin0 -> 784 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-undo-rtl.pngbin0 -> 764 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/folder-remote.pngbin0 -> 548 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/folder.pngbin0 -> 548 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-less-ltr.pngbin0 -> 594 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-less-rtl.pngbin0 -> 596 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-more-ltr.pngbin0 -> 611 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-more-rtl.pngbin0 -> 604 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-center.pngbin0 -> 393 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-fill.pngbin0 -> 358 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-left.pngbin0 -> 378 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-right.pngbin0 -> 400 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-bold.pngbin0 -> 649 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-italic.pngbin0 -> 665 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-strikethrough.pngbin0 -> 656 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-underline.pngbin0 -> 645 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-bottom.pngbin0 -> 647 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-down.pngbin0 -> 598 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-first-ltr.pngbin0 -> 632 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-first-rtl.pngbin0 -> 653 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-home.pngbin0 -> 735 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-jump-ltr.pngbin0 -> 811 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-jump-rtl.pngbin0 -> 806 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-last-ltr.pngbin0 -> 653 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-last-rtl.pngbin0 -> 632 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-next-ltr.pngbin0 -> 580 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-next-rtl.pngbin0 -> 579 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-previous-ltr.pngbin0 -> 579 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-previous-rtl.pngbin0 -> 580 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-top.pngbin0 -> 630 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-up.pngbin0 -> 551 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-caps-lock-warning.pngbin0 -> 275 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-color-picker.pngbin0 -> 606 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-connect.pngbin0 -> 692 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-convert.pngbin0 -> 677 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-disconnect.pngbin0 -> 715 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-edit.pngbin0 -> 755 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-font.pngbin0 -> 706 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-index.pngbin0 -> 753 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-landscape.pngbin0 -> 756 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-portrait.pngbin0 -> 543 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-reverse-landscape.pngbin0 -> 751 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-reverse-portrait.pngbin0 -> 557 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-page-setup.pngbin0 -> 622 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-preferences.pngbin0 -> 1014 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-select-color.pngbin0 -> 735 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-select-font.pngbin0 -> 706 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-undelete-ltr.pngbin0 -> 962 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-undelete-rtl.pngbin0 -> 952 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/help-about.pngbin0 -> 704 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/help-contents.pngbin0 -> 1002 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/image-missing.pngbin0 -> 654 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/list-add.pngbin0 -> 260 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/list-remove.pngbin0 -> 210 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-floppy.pngbin0 -> 652 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-optical.pngbin0 -> 894 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-pause.pngbin0 -> 247 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-start-ltr.pngbin0 -> 542 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-start-rtl.pngbin0 -> 532 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-stop.pngbin0 -> 295 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-record.pngbin0 -> 565 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-backward-ltr.pngbin0 -> 502 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-backward-rtl.pngbin0 -> 523 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-forward-ltr.pngbin0 -> 523 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-forward-rtl.pngbin0 -> 502 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-backward-ltr.pngbin0 -> 462 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-backward-rtl.pngbin0 -> 455 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-forward-ltr.pngbin0 -> 455 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-forward-rtl.pngbin0 -> 462 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/network-idle.pngbin0 -> 623 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-error.pngbin0 -> 711 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-info.pngbin0 -> 724 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-paused.pngbin0 -> 689 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-warning.pngbin0 -> 685 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/process-stop.pngbin0 -> 769 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/system-run.pngbin0 -> 902 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/text-x-generic.pngbin0 -> 569 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/tools-check-spelling.pngbin0 -> 641 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/user-desktop.pngbin0 -> 548 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/user-home.pngbin0 -> 548 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-fullscreen.pngbin0 -> 432 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-refresh.pngbin0 -> 926 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-restore.pngbin0 -> 473 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-sort-ascending.pngbin0 -> 333 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-sort-descending.pngbin0 -> 331 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/window-close.pngbin0 -> 889 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-fit-best.pngbin0 -> 750 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-in.pngbin0 -> 785 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-original.pngbin0 -> 784 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-out.pngbin0 -> 772 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-apply.pngbin0 -> 1002 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-cancel.pngbin0 -> 1067 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-no.pngbin0 -> 952 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-ok.pngbin0 -> 963 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-yes.pngbin0 -> 1044 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/20/window-close.pngbin0 -> 1224 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/application-exit.pngbin0 -> 967 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-high.pngbin0 -> 1217 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-low.pngbin0 -> 857 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-medium.pngbin0 -> 1021 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-muted.pngbin0 -> 910 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/dialog-information.pngbin0 -> 1420 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-new.pngbin0 -> 736 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-open-recent.pngbin0 -> 1561 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-open.pngbin0 -> 612 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-print-preview.pngbin0 -> 1244 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-print.pngbin0 -> 818 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-properties.pngbin0 -> 1146 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-revert-ltr.pngbin0 -> 1404 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-revert-rtl.pngbin0 -> 1411 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-save-as.pngbin0 -> 1206 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-save.pngbin0 -> 951 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/drive-harddisk.pngbin0 -> 1360 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-clear.pngbin0 -> 1163 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-copy.pngbin0 -> 697 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-cut.pngbin0 -> 1032 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-delete.pngbin0 -> 1449 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-find-replace.pngbin0 -> 1379 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-find.pngbin0 -> 1238 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-paste.pngbin0 -> 893 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-redo-ltr.pngbin0 -> 1070 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-redo-rtl.pngbin0 -> 1085 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-select-all.pngbin0 -> 717 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-undo-ltr.pngbin0 -> 1052 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-undo-rtl.pngbin0 -> 1035 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/folder-remote.pngbin0 -> 662 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/folder.pngbin0 -> 662 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-less-ltr.pngbin0 -> 843 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-less-rtl.pngbin0 -> 876 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-more-ltr.pngbin0 -> 852 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-more-rtl.pngbin0 -> 870 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-center.pngbin0 -> 490 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-fill.pngbin0 -> 447 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-left.pngbin0 -> 489 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-right.pngbin0 -> 503 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-bold.pngbin0 -> 947 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-italic.pngbin0 -> 971 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-strikethrough.pngbin0 -> 966 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-underline.pngbin0 -> 969 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-bottom.pngbin0 -> 1037 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-down.pngbin0 -> 973 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-first-ltr.pngbin0 -> 1028 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-first-rtl.pngbin0 -> 1061 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-home.pngbin0 -> 1050 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-jump-ltr.pngbin0 -> 1229 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-jump-rtl.pngbin0 -> 1226 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-last-ltr.pngbin0 -> 1061 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-last-rtl.pngbin0 -> 1028 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-next-ltr.pngbin0 -> 906 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-next-rtl.pngbin0 -> 915 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-previous-ltr.pngbin0 -> 915 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-previous-rtl.pngbin0 -> 906 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-top.pngbin0 -> 1037 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-up.pngbin0 -> 946 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-caps-lock-warning.pngbin0 -> 360 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-color-picker.pngbin0 -> 891 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-connect.pngbin0 -> 946 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-convert.pngbin0 -> 1413 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-disconnect.pngbin0 -> 852 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-edit.pngbin0 -> 1120 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-font.pngbin0 -> 1109 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-index.pngbin0 -> 960 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-landscape.pngbin0 -> 1097 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-portrait.pngbin0 -> 931 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-reverse-landscape.pngbin0 -> 1059 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-reverse-portrait.pngbin0 -> 940 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-page-setup.pngbin0 -> 1081 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-preferences.pngbin0 -> 1691 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-select-color.pngbin0 -> 993 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-select-font.pngbin0 -> 1109 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-undelete-ltr.pngbin0 -> 1692 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-undelete-rtl.pngbin0 -> 1722 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/help-about.pngbin0 -> 982 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/help-contents.pngbin0 -> 1728 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/image-missing.pngbin0 -> 894 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/list-add.pngbin0 -> 571 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/list-remove.pngbin0 -> 369 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-floppy.pngbin0 -> 951 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-optical.pngbin0 -> 1372 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-pause.pngbin0 -> 383 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-start-ltr.pngbin0 -> 863 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-start-rtl.pngbin0 -> 895 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-stop.pngbin0 -> 400 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-record.pngbin0 -> 1063 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-backward-ltr.pngbin0 -> 902 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-backward-rtl.pngbin0 -> 776 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-forward-ltr.pngbin0 -> 776 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-forward-rtl.pngbin0 -> 902 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-backward-ltr.pngbin0 -> 806 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-backward-rtl.pngbin0 -> 848 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-forward-ltr.pngbin0 -> 848 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-forward-rtl.pngbin0 -> 806 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/network-idle.pngbin0 -> 1015 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-error.pngbin0 -> 1130 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-info.pngbin0 -> 1154 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-paused.pngbin0 -> 1096 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-warning.pngbin0 -> 1099 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/process-stop.pngbin0 -> 1043 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/system-run.pngbin0 -> 1592 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/text-x-generic.pngbin0 -> 736 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/tools-check-spelling.pngbin0 -> 950 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/user-desktop.pngbin0 -> 662 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/user-home.pngbin0 -> 662 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-fullscreen.pngbin0 -> 606 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-refresh.pngbin0 -> 1466 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-restore.pngbin0 -> 677 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-sort-ascending.pngbin0 -> 413 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-sort-descending.pngbin0 -> 379 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/window-close.pngbin0 -> 1453 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-fit-best.pngbin0 -> 937 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-in.pngbin0 -> 993 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-original.pngbin0 -> 962 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-out.pngbin0 -> 941 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/32/gtk-dnd-multiple.pngbin0 -> 1215 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/32/gtk-dnd.pngbin0 -> 1349 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-error.pngbin0 -> 2828 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-information.pngbin0 -> 3259 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-password.pngbin0 -> 2358 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-question.pngbin0 -> 2809 bytes
-rw-r--r--packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-warning.pngbin0 -> 2358 bytes
-rwxr-xr-xpackaging/macosx/Resources/alert_fccache.sh28
-rwxr-xr-xpackaging/macosx/Resources/bin/getdisplay.sh9
-rwxr-xr-xpackaging/macosx/Resources/bin/gimp-wrapper.sh96
-rwxr-xr-xpackaging/macosx/Resources/bin/inkscape196
-rwxr-xr-xpackaging/macosx/Resources/bin/python-wrapper.sh78
-rw-r--r--packaging/macosx/Resources/etc/fonts/fonts.conf14
-rw-r--r--packaging/macosx/Resources/etc/gtk-2.0/gtkrc20
-rw-r--r--[-rwxr-xr-x]packaging/macosx/Resources/openDoc14
-rwxr-xr-xpackaging/macosx/Resources/script51
-rw-r--r--packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-down.pngbin465 -> 0 bytes
-rw-r--r--packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-left.pngbin497 -> 0 bytes
-rw-r--r--packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-right.pngbin498 -> 0 bytes
-rw-r--r--packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-up.pngbin463 -> 0 bytes
-rw-r--r--packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/trough-scrollbar-horiz.pngbin1014 -> 0 bytes
-rw-r--r--packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/trough-scrollbar-vert.pngbin905 -> 0 bytes
-rwxr-xr-xpackaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/copy-slider.sh7
-rw-r--r--packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/slider-horiz-prelight.pngbin5940 -> 0 bytes
-rw-r--r--packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/slider-horiz.pngbin5940 -> 0 bytes
-rw-r--r--packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/slider-vert-prelight.pngbin5409 -> 0 bytes
-rw-r--r--packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/slider-vert.pngbin5409 -> 0 bytes
-rwxr-xr-xpackaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/copy-slider.sh7
-rw-r--r--packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/slider-horiz-prelight.pngbin5864 -> 0 bytes
-rw-r--r--packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/slider-horiz.pngbin5864 -> 0 bytes
-rw-r--r--packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/slider-vert-prelight.pngbin5412 -> 0 bytes
-rw-r--r--packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/slider-vert.pngbin5412 -> 0 bytes
-rw-r--r--packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/pre_gtkrc547
-rwxr-xr-xpackaging/macosx/Resources/xdg_setup.sh13
-rw-r--r--packaging/macosx/ScriptExec/ScriptExec.xcode/project.pbxproj451
-rw-r--r--packaging/macosx/ScriptExec/ScriptExec.xcodeproj/project.pbxproj24
-rwxr-xr-xpackaging/macosx/ScriptExec/launcher-quartz-no-macintegration.sh169
-rw-r--r--packaging/macosx/ScriptExec/main.c274
-rwxr-xr-xpackaging/macosx/create-stock-icon-theme.sh165
-rw-r--r--packaging/macosx/dmg_background.pngbin24742 -> 24536 bytes
-rw-r--r--packaging/macosx/dmg_background.svg3425
-rwxr-xr-xpackaging/macosx/dmg_set_style.scptbin4438 -> 5146 bytes
-rw-r--r--packaging/macosx/inkscape.ds_storebin12292 -> 12292 bytes
-rwxr-xr-xpackaging/macosx/osx-app.sh743
-rwxr-xr-xpackaging/macosx/osx-build.sh477
-rwxr-xr-xpackaging/macosx/osx-dmg.sh2
-rw-r--r--packaging/macosx/ports/devel/inkscape-packaging/Portfile124
-rw-r--r--packaging/macosx/ports/lang/python25/Portfile214
-rw-r--r--packaging/macosx/ports/lang/python25/files/_localemodule.c.ed2
-rw-r--r--packaging/macosx/ports/lang/python25/files/locale.py.ed2
-rw-r--r--packaging/macosx/ports/lang/python25/files/patch-64bit.diff1234
-rw-r--r--packaging/macosx/ports/lang/python25/files/patch-FSIORefNum.diff11
-rw-r--r--packaging/macosx/ports/lang/python25/files/patch-Lib-cgi.py.diff18
-rw-r--r--packaging/macosx/ports/lang/python25/files/patch-Lib-distutils-dist.py.diff51
-rw-r--r--packaging/macosx/ports/lang/python25/files/patch-Makefile.pre.in.diff49
-rw-r--r--packaging/macosx/ports/lang/python25/files/patch-Misc-setuid-prog.c.diff16
-rw-r--r--packaging/macosx/ports/lang/python25/files/patch-Modules-posixmodule.c.diff21
-rw-r--r--packaging/macosx/ports/lang/python25/files/patch-configure.diff45
-rw-r--r--packaging/macosx/ports/lang/python25/files/patch-fwrapv.diff12
-rw-r--r--packaging/macosx/ports/lang/python25/files/patch-libedit.diff132
-rw-r--r--packaging/macosx/ports/lang/python25/files/patch-mac_ver.diff114
-rw-r--r--packaging/macosx/ports/lang/python25/files/patch-pyconfig.h.in.diff13
-rw-r--r--packaging/macosx/ports/lang/python25/files/patch-setup.py-disabled_modules.diff11
-rw-r--r--packaging/macosx/ports/lang/python25/files/patch-setup.py.diff80
-rw-r--r--packaging/macosx/ports/lang/python25/files/pyconfig.ed2
-rw-r--r--packaging/macosx/ports/lang/python25/files/pyconfig.h-universal.ed50
-rw-r--r--packaging/macosx/ports/lang/python25/files/python2513
-rw-r--r--packaging/macosx/ports/lang/python26/Portfile158
-rw-r--r--packaging/macosx/ports/lang/python26/files/patch-Lib-cgi.py.diff18
-rw-r--r--packaging/macosx/ports/lang/python26/files/patch-Lib-distutils-dist.py.diff51
-rw-r--r--packaging/macosx/ports/lang/python26/files/patch-Mac-IDLE-Makefile.in.diff11
-rw-r--r--packaging/macosx/ports/lang/python26/files/patch-Mac-Makefile.in.diff11
-rw-r--r--packaging/macosx/ports/lang/python26/files/patch-Mac-PythonLauncher-Makefile.in.diff11
-rw-r--r--packaging/macosx/ports/lang/python26/files/patch-Mac-Tools-Doc-setup.py.diff11
-rw-r--r--packaging/macosx/ports/lang/python26/files/patch-Makefile.pre.in.diff31
-rw-r--r--packaging/macosx/ports/lang/python26/files/patch-setup.py.diff16
-rw-r--r--packaging/macosx/ports/lang/python26/files/pyconfig.ed2
-rw-r--r--packaging/macosx/ports/lang/python26/files/python2612
-rw-r--r--packaging/macosx/ports/lang/python26/files/version.plist16
-rw-r--r--packaging/macosx/ports/python/py-Pillow/Portfile74
-rw-r--r--packaging/macosx/ports/python/py-Pillow/files/patch-setup.py.diff120
-rw-r--r--packaging/macosx/ports/python/py-sk1libs/Portfile64
-rw-r--r--packaging/macosx/ports/python/py-sk1libs/files/patch-src-imaging-libimagingft-_imagingft.c.diff16
-rw-r--r--packaging/macosx/ports/python/py-sk1libs/files/patch-src-utils-fs.py.diff26
-rw-r--r--packaging/macosx/ports/python/py-uniconvertor/Portfile46
-rw-r--r--packaging/macosx/ports/python/py25-Pillow/Portfile77
-rw-r--r--packaging/macosx/ports/python/py25-Pillow/files/patch-_imagingft.c.diff14
-rw-r--r--packaging/macosx/ports/python/py25-Pillow/files/patch-setup.py-v1.7.8.diff83
-rw-r--r--packaging/macosx/ports/python/py25-lxml/Portfile51
-rw-r--r--packaging/macosx/ports/python/py25-nose/Portfile86
-rw-r--r--packaging/macosx/ports/python/py25-nose/files/nosetests241
-rw-r--r--packaging/macosx/ports/python/py25-nose/files/nosetests251
-rw-r--r--packaging/macosx/ports/python/py25-nose/files/nosetests261
-rw-r--r--packaging/macosx/ports/python/py25-nose/files/nosetests271
-rw-r--r--packaging/macosx/ports/python/py25-nose/files/nosetests311
-rw-r--r--packaging/macosx/ports/python/py25-nose/files/nosetests321
-rw-r--r--packaging/macosx/ports/python/py25-nose/files/nosetests331
-rw-r--r--packaging/macosx/ports/python/py25-nose/files/nosetests341
-rw-r--r--packaging/macosx/ports/python/py25-numpy/Portfile209
-rw-r--r--packaging/macosx/ports/python/py25-numpy/files/patch-f2py_setup.py.diff29
-rw-r--r--packaging/macosx/ports/python/py25-numpy/files/patch-fcompiler_g95.diff11
-rw-r--r--packaging/macosx/ports/python/py25-numpy/files/patch-numpy_distutils_fcompiler___init__.py.diff30
-rw-r--r--packaging/macosx/ports/python/py25-numpy/files/patch-numpy_linalg_setup.py.diff10
-rw-r--r--packaging/macosx/ports/python/py25-numpy/files/patch-setup.py.diff34
-rwxr-xr-xpackaging/macosx/ports/python/py25-numpy/files/wrapper-template143
-rw-r--r--packaging/macosx/ports/python/py25-setuptools/Portfile58
-rw-r--r--po/POTFILES.in4
-rw-r--r--po/ru.po7211
-rw-r--r--share/extensions/empty_business_card.inx32
-rw-r--r--share/extensions/empty_business_card.py45
-rw-r--r--share/extensions/empty_desktop.inx39
-rw-r--r--share/extensions/empty_desktop.py46
-rw-r--r--share/extensions/empty_dvd_cover.inx31
-rw-r--r--share/extensions/empty_dvd_cover.py64
-rw-r--r--share/extensions/empty_generic.inx47
-rw-r--r--share/extensions/empty_generic.py82
-rw-r--r--share/extensions/empty_icon.inx24
-rw-r--r--share/extensions/empty_icon.py36
-rw-r--r--share/extensions/empty_page.inx21
-rw-r--r--share/extensions/empty_page.py101
-rw-r--r--share/extensions/empty_video.inx35
-rw-r--r--share/extensions/empty_video.py46
-rw-r--r--share/extensions/setup_typography_canvas.inx10
-rwxr-xr-xshare/extensions/setup_typography_canvas.py7
-rw-r--r--share/templates/A4.svg45
-rw-r--r--share/templates/A4_landscape.svg42
-rw-r--r--share/templates/CD_cover_300dpi.svg42
-rw-r--r--share/templates/DVD_cover_regular_300dpi.svg89
-rw-r--r--share/templates/DVD_cover_slim_300dpi.svg89
-rw-r--r--share/templates/DVD_cover_superslim_300dpi.svg89
-rw-r--r--share/templates/DVD_cover_ultraslim_300dpi.svg89
-rw-r--r--share/templates/Letter.svg42
-rw-r--r--share/templates/Letter_landscape.svg42
-rw-r--r--share/templates/Makefile.am56
-rw-r--r--share/templates/README37
-rw-r--r--share/templates/Typography_Canvas.svg18
-rw-r--r--share/templates/black_opaque.svg43
-rw-r--r--share/templates/business_card_85x54mm.svg44
-rw-r--r--share/templates/business_card_90x50mm.svg44
-rw-r--r--share/templates/desktop_1024x768.svg42
-rw-r--r--share/templates/desktop_1600x1200.svg42
-rw-r--r--share/templates/desktop_640x480.svg42
-rw-r--r--share/templates/desktop_800x600.svg43
-rw-r--r--share/templates/fontforge_glyph.svg59
-rw-r--r--share/templates/icon_16x16.svg47
-rw-r--r--share/templates/icon_32x32.svg47
-rw-r--r--share/templates/icon_48x48.svg47
-rw-r--r--share/templates/icon_64x64.svg48
-rw-r--r--share/templates/no_borders.svg43
-rw-r--r--share/templates/video_HDTV_1920x1080.svg44
-rw-r--r--share/templates/video_NTSC_720x486.svg44
-rw-r--r--share/templates/video_PAL_720x576.svg44
-rw-r--r--share/templates/web_banner_468x60.svg42
-rw-r--r--share/templates/web_banner_728x90.svg42
-rw-r--r--share/templates/web_banners.svg112
-rw-r--r--share/templates/white_opaque.svg43
-rw-r--r--src/2geom/math-utils.h4
-rw-r--r--src/2geom/numeric/symmetric-matrix-fs-operation.h2
-rw-r--r--src/2geom/numeric/symmetric-matrix-fs-trace.h2
-rw-r--r--src/CMakeLists.txt4
-rw-r--r--src/Makefile_insert2
-rw-r--r--src/attributes.cpp5
-rw-r--r--src/attributes.h5
-rw-r--r--src/box3d-side.h4
-rw-r--r--src/box3d.cpp23
-rw-r--r--src/desktop-style.cpp6
-rw-r--r--src/display/CMakeLists.txt2
-rw-r--r--src/display/Makefile_insert2
-rw-r--r--src/display/drawing-item.cpp47
-rw-r--r--src/display/drawing-item.h9
-rw-r--r--src/display/drawing-pattern.cpp194
-rw-r--r--src/display/drawing-pattern.h87
-rw-r--r--src/display/drawing-shape.cpp8
-rw-r--r--src/display/drawing-text.cpp8
-rw-r--r--src/display/nr-style.cpp60
-rw-r--r--src/display/nr-style.h9
-rw-r--r--src/document.cpp33
-rw-r--r--src/extension/implementation/script.cpp100
-rw-r--r--src/extension/internal/cairo-render-context.cpp116
-rw-r--r--src/extension/internal/cairo-render-context.h1
-rw-r--r--src/extension/internal/cairo-renderer.cpp16
-rw-r--r--src/extension/internal/cairo-renderer.h2
-rw-r--r--src/extension/internal/cdr-input.cpp36
-rw-r--r--src/extension/internal/pdfinput/pdf-input.cpp24
-rw-r--r--src/extension/internal/pdfinput/pdf-parser.cpp182
-rw-r--r--src/extension/internal/pdfinput/pdf-parser.h30
-rw-r--r--src/extension/internal/vsd-input.cpp37
-rw-r--r--src/extension/internal/wpg-input.cpp57
-rw-r--r--src/extension/param/color.cpp12
-rw-r--r--src/extension/param/enum.cpp55
-rw-r--r--src/filters/blend.cpp26
-rw-r--r--src/filters/composite.cpp26
-rw-r--r--src/filters/displacementmap.cpp25
-rw-r--r--src/libnrtype/FontFactory.h2
-rw-r--r--src/live_effects/CMakeLists.txt5
-rw-r--r--src/live_effects/Makefile_insert6
-rw-r--r--src/live_effects/effect-enum.h2
-rw-r--r--src/live_effects/effect.cpp8
-rw-r--r--src/live_effects/lpe-bspline.cpp126
-rw-r--r--src/live_effects/lpe-bspline.h18
-rw-r--r--src/live_effects/lpe-perspective-envelope.cpp (renamed from src/live_effects/lpe-envelope-perspective.cpp)132
-rw-r--r--src/live_effects/lpe-perspective-envelope.h (renamed from src/live_effects/lpe-envelope-perspective.h)26
-rw-r--r--src/live_effects/lpe-vonkoch.cpp6
-rw-r--r--src/object-snapper.cpp5
-rw-r--r--src/path-chemistry.cpp1
-rw-r--r--src/path-prefix.h34
-rw-r--r--src/sp-hatch-path.cpp331
-rw-r--r--src/sp-hatch-path.h91
-rw-r--r--src/sp-hatch.cpp679
-rw-r--r--src/sp-hatch.h174
-rw-r--r--src/sp-item.cpp100
-rw-r--r--src/sp-item.h4
-rw-r--r--src/sp-lpe-item.cpp3
-rw-r--r--src/sp-paint-server.cpp20
-rw-r--r--src/sp-paint-server.h59
-rw-r--r--src/style-internal.cpp32
-rw-r--r--src/style-internal.h653
-rw-r--r--src/style.cpp14
-rw-r--r--src/style.h16
-rw-r--r--src/svg/CMakeLists.txt2
-rw-r--r--src/svg/Makefile_insert2
-rw-r--r--src/svg/svg-angle.cpp136
-rw-r--r--src/svg/svg-angle.h69
-rw-r--r--src/svg/svg-color.cpp4
-rw-r--r--src/ui/dialog/clonetiler.cpp7
-rw-r--r--src/ui/dialog/symbols.cpp26
-rw-r--r--src/ui/dialog/template-widget.cpp6
-rw-r--r--src/ui/widget/highlight-picker.cpp9
-rw-r--r--src/ui/widget/insertordericon.cpp8
-rw-r--r--src/ui/widget/insertordericon.h4
-rw-r--r--src/ui/widget/selected-style.cpp4
-rw-r--r--src/viewbox.cpp21
-rw-r--r--src/widgets/ink-comboboxentry-action.cpp2
-rw-r--r--src/widgets/stroke-style.cpp6
-rw-r--r--src/xml/node-event-vector.h6
-rw-r--r--src/xml/repr-io.cpp1
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
new file mode 100644
index 000000000..d070809f1
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/application-exit.png
Binary files differ
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
new file mode 100644
index 000000000..df87def2f
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/dialog-information.png
Binary files differ
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
new file mode 100644
index 000000000..7cd94435a
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-new.png
Binary files differ
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
new file mode 100644
index 000000000..61543990d
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-open-recent.png
Binary files differ
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
new file mode 100644
index 000000000..476185370
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-open.png
Binary files differ
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
new file mode 100644
index 000000000..45b44f324
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-print-preview.png
Binary files differ
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
new file mode 100644
index 000000000..5997b9222
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-print.png
Binary files differ
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
new file mode 100644
index 000000000..65d22e4fb
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-properties.png
Binary files differ
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
new file mode 100644
index 000000000..026014ca3
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-revert-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..aaea1ff39
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-revert-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..3409adc7a
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-save-as.png
Binary files differ
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
new file mode 100644
index 000000000..18b7d2419
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-save.png
Binary files differ
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
new file mode 100644
index 000000000..b714d86e2
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/drive-harddisk.png
Binary files differ
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
new file mode 100644
index 000000000..49ae8db9c
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-clear.png
Binary files differ
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
new file mode 100644
index 000000000..8dd48c494
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-copy.png
Binary files differ
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
new file mode 100644
index 000000000..ff87558fc
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-cut.png
Binary files differ
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
new file mode 100644
index 000000000..2c5a46733
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-delete.png
Binary files differ
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
new file mode 100644
index 000000000..fca34f52a
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-find-replace.png
Binary files differ
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
new file mode 100644
index 000000000..e9a40950b
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-find.png
Binary files differ
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
new file mode 100644
index 000000000..24588a3a4
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-paste.png
Binary files differ
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
new file mode 100644
index 000000000..f7923083b
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-redo-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..7c6c250b6
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-redo-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..e3bd4ba72
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-select-all.png
Binary files differ
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
new file mode 100644
index 000000000..b0c8a48d7
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-undo-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..13e061e09
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-undo-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..14ed14a12
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/folder-remote.png
Binary files differ
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
new file mode 100644
index 000000000..14ed14a12
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/folder.png
Binary files differ
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
new file mode 100644
index 000000000..776f5767e
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-less-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..18ededbfc
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-less-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..b00e21840
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-more-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..015c495ef
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-more-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..57d6a0e35
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-center.png
Binary files differ
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
new file mode 100644
index 000000000..a416b25ab
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-fill.png
Binary files differ
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
new file mode 100644
index 000000000..9a7abf7ff
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-left.png
Binary files differ
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
new file mode 100644
index 000000000..15b507332
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-right.png
Binary files differ
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
new file mode 100644
index 000000000..7e2c5dba9
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-bold.png
Binary files differ
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
new file mode 100644
index 000000000..867df5ded
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-italic.png
Binary files differ
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
new file mode 100644
index 000000000..8a844a3a9
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-strikethrough.png
Binary files differ
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
new file mode 100644
index 000000000..35bcc8127
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-underline.png
Binary files differ
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
new file mode 100644
index 000000000..69aaafc2c
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-bottom.png
Binary files differ
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
new file mode 100644
index 000000000..dcde30f02
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-down.png
Binary files differ
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
new file mode 100644
index 000000000..689ba0a96
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-first-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..a653e10ed
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-first-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..fadd43dc3
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-home.png
Binary files differ
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
new file mode 100644
index 000000000..0f0f57a1a
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-jump-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..0f03be58d
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-jump-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..a653e10ed
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-last-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..689ba0a96
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-last-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..5b9e3f0d1
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-next-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..9e77ac2ea
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-next-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..9e77ac2ea
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-previous-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..5b9e3f0d1
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-previous-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..0a3b1bfba
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-top.png
Binary files differ
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
new file mode 100644
index 000000000..432225f51
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-up.png
Binary files differ
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
new file mode 100644
index 000000000..0dfa41876
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-caps-lock-warning.png
Binary files differ
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
new file mode 100644
index 000000000..24233cde0
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-color-picker.png
Binary files differ
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
new file mode 100644
index 000000000..097969a7c
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-connect.png
Binary files differ
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
new file mode 100644
index 000000000..e4d912579
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-convert.png
Binary files differ
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
new file mode 100644
index 000000000..3dece1068
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-disconnect.png
Binary files differ
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
new file mode 100644
index 000000000..c5da3f9fb
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-edit.png
Binary files differ
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
new file mode 100644
index 000000000..2514b6167
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-font.png
Binary files differ
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
new file mode 100644
index 000000000..0967a61c3
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-index.png
Binary files differ
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
new file mode 100644
index 000000000..748bb502d
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-landscape.png
Binary files differ
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
new file mode 100644
index 000000000..94f078d91
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-portrait.png
Binary files differ
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
new file mode 100644
index 000000000..2a732a6ee
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-reverse-landscape.png
Binary files differ
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
new file mode 100644
index 000000000..c79cea355
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-reverse-portrait.png
Binary files differ
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
new file mode 100644
index 000000000..61b46d998
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-page-setup.png
Binary files differ
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
new file mode 100644
index 000000000..9703a40df
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-preferences.png
Binary files differ
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
new file mode 100644
index 000000000..2c764b374
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-select-color.png
Binary files differ
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
new file mode 100644
index 000000000..2514b6167
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-select-font.png
Binary files differ
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
new file mode 100644
index 000000000..cc58d0fb5
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-undelete-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..a312dd854
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-undelete-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..010d294a7
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/help-about.png
Binary files differ
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
new file mode 100644
index 000000000..20ae955c3
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/help-contents.png
Binary files differ
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
new file mode 100644
index 000000000..84b26afd6
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/image-missing.png
Binary files differ
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
new file mode 100644
index 000000000..9cd9e5cf2
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/list-add.png
Binary files differ
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
new file mode 100644
index 000000000..0ed9c2210
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/list-remove.png
Binary files differ
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
new file mode 100644
index 000000000..18b7d2419
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-floppy.png
Binary files differ
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
new file mode 100644
index 000000000..922f452f1
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-optical.png
Binary files differ
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
new file mode 100644
index 000000000..8b70f471a
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-pause.png
Binary files differ
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
new file mode 100644
index 000000000..e7e2584db
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-start-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..e3cb29165
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-start-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..c844e8322
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-stop.png
Binary files differ
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
new file mode 100644
index 000000000..93b2ec100
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-record.png
Binary files differ
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
new file mode 100644
index 000000000..4972cb7ba
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-backward-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..a02022474
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-backward-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..a02022474
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-forward-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..4972cb7ba
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-forward-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..67dbb2e16
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-backward-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..08ad0b69a
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-backward-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..08ad0b69a
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-forward-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..67dbb2e16
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-forward-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..e74e060ea
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/network-idle.png
Binary files differ
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
new file mode 100644
index 000000000..934ee68d3
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-error.png
Binary files differ
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
new file mode 100644
index 000000000..8e2ab7487
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-info.png
Binary files differ
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
new file mode 100644
index 000000000..ebd5ac60c
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-paused.png
Binary files differ
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
new file mode 100644
index 000000000..52410c38d
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-warning.png
Binary files differ
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
new file mode 100644
index 000000000..d88fed703
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/process-stop.png
Binary files differ
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
new file mode 100644
index 000000000..c9c48d6a3
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/system-run.png
Binary files differ
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
new file mode 100644
index 000000000..7cd94435a
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/text-x-generic.png
Binary files differ
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
new file mode 100644
index 000000000..32dcc2e63
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/tools-check-spelling.png
Binary files differ
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
new file mode 100644
index 000000000..14ed14a12
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/user-desktop.png
Binary files differ
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
new file mode 100644
index 000000000..14ed14a12
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/user-home.png
Binary files differ
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
new file mode 100644
index 000000000..b9e9ea632
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-fullscreen.png
Binary files differ
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
new file mode 100644
index 000000000..e9ea8c4e5
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-refresh.png
Binary files differ
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
new file mode 100644
index 000000000..49966a996
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-restore.png
Binary files differ
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
new file mode 100644
index 000000000..3f8fd257f
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-sort-ascending.png
Binary files differ
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
new file mode 100644
index 000000000..a8aa70584
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-sort-descending.png
Binary files differ
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
new file mode 100644
index 000000000..52f58630f
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/window-close.png
Binary files differ
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
new file mode 100644
index 000000000..adbf7f3a2
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-fit-best.png
Binary files differ
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
new file mode 100644
index 000000000..6b1b94336
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-in.png
Binary files differ
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
new file mode 100644
index 000000000..92dddd2ea
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-original.png
Binary files differ
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
new file mode 100644
index 000000000..ddc1eb136
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-out.png
Binary files differ
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
new file mode 100644
index 000000000..afca0732a
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-apply.png
Binary files differ
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
new file mode 100644
index 000000000..0a395c099
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-cancel.png
Binary files differ
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
new file mode 100644
index 000000000..2a7da6e2a
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-no.png
Binary files differ
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
new file mode 100644
index 000000000..c08115f62
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-ok.png
Binary files differ
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
new file mode 100644
index 000000000..e56236638
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-yes.png
Binary files differ
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
new file mode 100644
index 000000000..a13d1984b
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/20/window-close.png
Binary files differ
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
new file mode 100644
index 000000000..0c9de64ba
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/application-exit.png
Binary files differ
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
new file mode 100644
index 000000000..7de1e0e4f
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-high.png
Binary files differ
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
new file mode 100644
index 000000000..4152b6c9f
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-low.png
Binary files differ
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
new file mode 100644
index 000000000..8d899cfa5
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-medium.png
Binary files differ
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
new file mode 100644
index 000000000..6902efdc6
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-muted.png
Binary files differ
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
new file mode 100644
index 000000000..b66871a94
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/dialog-information.png
Binary files differ
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
new file mode 100644
index 000000000..c89e797b7
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-new.png
Binary files differ
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
new file mode 100644
index 000000000..5edf531e3
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-open-recent.png
Binary files differ
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
new file mode 100644
index 000000000..312e1187f
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-open.png
Binary files differ
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
new file mode 100644
index 000000000..7f405de58
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-print-preview.png
Binary files differ
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
new file mode 100644
index 000000000..05d22d7a8
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-print.png
Binary files differ
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
new file mode 100644
index 000000000..297c86b0c
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-properties.png
Binary files differ
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
new file mode 100644
index 000000000..3046794e7
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-revert-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..46435e1a0
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-revert-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..5da8a02dc
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-save-as.png
Binary files differ
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
new file mode 100644
index 000000000..7ef7685f4
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-save.png
Binary files differ
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
new file mode 100644
index 000000000..1be6b6c88
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/drive-harddisk.png
Binary files differ
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
new file mode 100644
index 000000000..590f673db
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-clear.png
Binary files differ
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
new file mode 100644
index 000000000..a1178e64f
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-copy.png
Binary files differ
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
new file mode 100644
index 000000000..82b105f80
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-cut.png
Binary files differ
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
new file mode 100644
index 000000000..e375b894e
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-delete.png
Binary files differ
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
new file mode 100644
index 000000000..ed81e5a82
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-find-replace.png
Binary files differ
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
new file mode 100644
index 000000000..5c83fb689
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-find.png
Binary files differ
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
new file mode 100644
index 000000000..e938c3e99
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-paste.png
Binary files differ
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
new file mode 100644
index 000000000..3da43f0c0
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-redo-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..f2c1a50a1
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-redo-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..1fc5b8282
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-select-all.png
Binary files differ
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
new file mode 100644
index 000000000..3b12a233a
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-undo-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..3ba7d6240
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-undo-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..28b68f338
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/folder-remote.png
Binary files differ
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
new file mode 100644
index 000000000..28b68f338
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/folder.png
Binary files differ
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
new file mode 100644
index 000000000..36d231434
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-less-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..a6f7dc19b
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-less-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..7e3656dc4
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-more-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..5527663fd
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-more-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..35579d553
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-center.png
Binary files differ
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
new file mode 100644
index 000000000..eaf9a460b
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-fill.png
Binary files differ
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
new file mode 100644
index 000000000..07db84109
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-left.png
Binary files differ
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
new file mode 100644
index 000000000..9bbd47ca0
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-right.png
Binary files differ
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
new file mode 100644
index 000000000..9869fb8b1
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-bold.png
Binary files differ
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
new file mode 100644
index 000000000..8842b5aa7
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-italic.png
Binary files differ
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
new file mode 100644
index 000000000..04d464e28
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-strikethrough.png
Binary files differ
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
new file mode 100644
index 000000000..be0906d8a
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-underline.png
Binary files differ
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
new file mode 100644
index 000000000..79994416e
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-bottom.png
Binary files differ
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
new file mode 100644
index 000000000..2a0a8ea2c
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-down.png
Binary files differ
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
new file mode 100644
index 000000000..e44f9b612
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-first-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..3ba5c4ba7
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-first-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..a2e0b3c96
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-home.png
Binary files differ
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
new file mode 100644
index 000000000..9b639939f
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-jump-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..80068face
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-jump-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..3ba5c4ba7
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-last-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..e44f9b612
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-last-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..727ff37f2
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-next-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..23b89b761
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-next-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..23b89b761
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-previous-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..727ff37f2
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-previous-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..9b98fd26f
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-top.png
Binary files differ
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
new file mode 100644
index 000000000..3df5fe511
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-up.png
Binary files differ
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
new file mode 100644
index 000000000..ca76d509b
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-caps-lock-warning.png
Binary files differ
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
new file mode 100644
index 000000000..fd97f343c
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-color-picker.png
Binary files differ
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
new file mode 100644
index 000000000..97f2143fb
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-connect.png
Binary files differ
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
new file mode 100644
index 000000000..da8194fa8
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-convert.png
Binary files differ
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
new file mode 100644
index 000000000..883a003bc
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-disconnect.png
Binary files differ
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
new file mode 100644
index 000000000..f429e1015
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-edit.png
Binary files differ
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
new file mode 100644
index 000000000..cde0e8698
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-font.png
Binary files differ
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
new file mode 100644
index 000000000..9ddbe9b8e
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-index.png
Binary files differ
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
new file mode 100644
index 000000000..fcf7f2a49
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-landscape.png
Binary files differ
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
new file mode 100644
index 000000000..cb7b760bc
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-portrait.png
Binary files differ
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
new file mode 100644
index 000000000..69ade2524
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-reverse-landscape.png
Binary files differ
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
new file mode 100644
index 000000000..c309a6d82
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-reverse-portrait.png
Binary files differ
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
new file mode 100644
index 000000000..9acf0d5ff
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-page-setup.png
Binary files differ
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
new file mode 100644
index 000000000..2596f3cc5
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-preferences.png
Binary files differ
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
new file mode 100644
index 000000000..0e71c35d7
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-select-color.png
Binary files differ
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
new file mode 100644
index 000000000..cde0e8698
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-select-font.png
Binary files differ
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
new file mode 100644
index 000000000..bccc39e7c
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-undelete-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..22023b853
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-undelete-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..063d0df43
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/help-about.png
Binary files differ
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
new file mode 100644
index 000000000..b00fbd8c1
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/help-contents.png
Binary files differ
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
new file mode 100644
index 000000000..90e26e5bc
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/image-missing.png
Binary files differ
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
new file mode 100644
index 000000000..2f8b70d9c
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/list-add.png
Binary files differ
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
new file mode 100644
index 000000000..0bd69c92c
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/list-remove.png
Binary files differ
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
new file mode 100644
index 000000000..7ef7685f4
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-floppy.png
Binary files differ
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
new file mode 100644
index 000000000..c4358f5f8
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-optical.png
Binary files differ
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
new file mode 100644
index 000000000..6187ba6d2
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-pause.png
Binary files differ
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
new file mode 100644
index 000000000..0f5348900
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-start-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..036f05f55
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-start-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..9e54ef3f5
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-stop.png
Binary files differ
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
new file mode 100644
index 000000000..d1b25c2f1
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-record.png
Binary files differ
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
new file mode 100644
index 000000000..508808285
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-backward-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..4a1bdf89b
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-backward-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..4a1bdf89b
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-forward-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..508808285
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-forward-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..c3a649f4e
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-backward-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..3da34257d
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-backward-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..3da34257d
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-forward-ltr.png
Binary files differ
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
new file mode 100644
index 000000000..c3a649f4e
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-forward-rtl.png
Binary files differ
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
new file mode 100644
index 000000000..a6f14418b
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/network-idle.png
Binary files differ
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
new file mode 100644
index 000000000..28517473d
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-error.png
Binary files differ
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
new file mode 100644
index 000000000..13304368e
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-info.png
Binary files differ
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
new file mode 100644
index 000000000..da6df48a9
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-paused.png
Binary files differ
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
new file mode 100644
index 000000000..dd70e0be9
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-warning.png
Binary files differ
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
new file mode 100644
index 000000000..54e1cb3e9
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/process-stop.png
Binary files differ
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
new file mode 100644
index 000000000..2b11b5075
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/system-run.png
Binary files differ
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
new file mode 100644
index 000000000..c89e797b7
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/text-x-generic.png
Binary files differ
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
new file mode 100644
index 000000000..2574c181f
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/tools-check-spelling.png
Binary files differ
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
new file mode 100644
index 000000000..28b68f338
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/user-desktop.png
Binary files differ
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
new file mode 100644
index 000000000..28b68f338
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/user-home.png
Binary files differ
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
new file mode 100644
index 000000000..21462fe0e
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-fullscreen.png
Binary files differ
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
new file mode 100644
index 000000000..09b5df1d1
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-refresh.png
Binary files differ
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
new file mode 100644
index 000000000..ff9c2289d
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-restore.png
Binary files differ
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
new file mode 100644
index 000000000..44c871133
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-sort-ascending.png
Binary files differ
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
new file mode 100644
index 000000000..d498a59a5
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-sort-descending.png
Binary files differ
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
new file mode 100644
index 000000000..312b84dae
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/window-close.png
Binary files differ
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
new file mode 100644
index 000000000..dfbdf9b6e
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-fit-best.png
Binary files differ
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
new file mode 100644
index 000000000..3a386fae7
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-in.png
Binary files differ
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
new file mode 100644
index 000000000..499cbd6c6
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-original.png
Binary files differ
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
new file mode 100644
index 000000000..22afd1951
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-out.png
Binary files differ
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
new file mode 100644
index 000000000..dc09283f4
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/32/gtk-dnd-multiple.png
Binary files differ
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
new file mode 100644
index 000000000..c58e5a6f4
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/32/gtk-dnd.png
Binary files differ
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
new file mode 100644
index 000000000..cb03e5420
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-error.png
Binary files differ
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
new file mode 100644
index 000000000..d73990ecc
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-information.png
Binary files differ
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
new file mode 100644
index 000000000..f81198437
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-password.png
Binary files differ
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
new file mode 100644
index 000000000..14dbd9cac
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-question.png
Binary files differ
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
new file mode 100644
index 000000000..827a33918
--- /dev/null
+++ b/packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-warning.png
Binary files differ
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
deleted file mode 100644
index 62c0b41bd..000000000
--- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-down.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 0dff81db9..000000000
--- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-left.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 02ef8ee7a..000000000
--- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-right.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index dba866012..000000000
--- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/stepper-up.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index e978dfb9f..000000000
--- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/trough-scrollbar-horiz.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 4f128b323..000000000
--- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars/trough-scrollbar-vert.png
+++ /dev/null
Binary files differ
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
deleted 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
Binary files differ
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
deleted file mode 100644
index 1ee4528ba..000000000
--- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/slider-horiz.png
+++ /dev/null
Binary files differ
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
deleted 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
Binary files differ
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
deleted file mode 100644
index 4fa68000c..000000000
--- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_1/slider-vert.png
+++ /dev/null
Binary files differ
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
deleted 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
Binary files differ
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
deleted file mode 100644
index c0f7f3c3f..000000000
--- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/slider-horiz.png
+++ /dev/null
Binary files differ
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
deleted 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
Binary files differ
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
deleted file mode 100644
index 9643f378e..000000000
--- a/packaging/macosx/Resources/themes/Clearlooks-Quicksilver-OSX/gtk-2.0/Scrollbars_6/slider-vert.png
+++ /dev/null
Binary files differ
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.",
- &params, &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
index 04cc698df..0ee039718 100644
--- a/packaging/macosx/dmg_background.png
+++ b/packaging/macosx/dmg_background.png
Binary files differ
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
index 7c010d102..b27a6860d 100755
--- a/packaging/macosx/dmg_set_style.scpt
+++ b/packaging/macosx/dmg_set_style.scpt
Binary files differ
diff --git a/packaging/macosx/inkscape.ds_store b/packaging/macosx/inkscape.ds_store
index c4bc9e32d..469da6fcc 100644
--- a/packaging/macosx/inkscape.ds_store
+++ b/packaging/macosx/inkscape.ds_store
Binary files differ
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
diff --git a/po/ru.po b/po/ru.po
index aa7050cb0..528b94141 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -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 &lt;defs&gt;."
msgid_plural "Removed <b>%i</b> unused definitions in &lt;defs&gt;."
@@ -7514,11 +9068,11 @@ msgstr[0] "Удалено <b>%i</b> ненужное определение в &
msgstr[1] "Удалено <b>%i</b> ненужных определения в &lt;defs&gt;."
msgstr[2] "Удалено <b>%i</b> ненужных определений в &lt;defs&gt;."
-#: ../src/file.cpp:635
+#: ../src/file.cpp:637
msgid "No unused definitions in &lt;defs&gt;."
msgstr "Нет ненужных элементов в &lt;defs&gt;."
-#: ../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 &lt;"
"defs&gt;)"
@@ -11200,137 +12751,137 @@ msgstr ""
"Объект, который вы пытаетесь выделить, <b>невидим</b> (находится в &lt;"
"defs&gt;)"
-#: ../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&#176;; with <b>Ctrl</b> to snap angle"
msgstr "<b>Наклон</b>: %0.2f&#176;; <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&#176;; with <b>Ctrl</b> to snap angle"
msgstr "<b>Вращение</b>: %0.2f&#176;; <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 &#215; %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 "&lt;no name found&gt;"
msgstr "&lt;нет имени&gt;"
-#: ../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) {